From c54b140382b6663adabbe1122251edd9949c2ef0 Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Thu, 6 Jan 2022 11:29:11 +0000 Subject: [PATCH] Doc Updated --- .../TTkAbstract/abstractscrollarea.html | 1 + .../TTkAbstract/abstractscrollview.html | 1 + _modules/TermTk/TTkCore/canvas.html | 7 +- _modules/TermTk/TTkCore/color.html | 490 ++++++++++++++++++ _modules/TermTk/TTkCore/constant.html | 1 + _modules/TermTk/TTkCore/signal.html | 1 + _modules/TermTk/TTkCore/timer.html | 1 + _modules/TermTk/TTkCore/ttk.html | 3 +- _modules/TermTk/TTkGui/draw_utf8.html | 432 +++++++++++++++ _modules/TermTk/TTkGui/theme.html | 314 +++++------ _modules/TermTk/TTkLayouts/boxlayout.html | 1 + _modules/TermTk/TTkLayouts/gridlayout.html | 1 + _modules/TermTk/TTkLayouts/layout.html | 1 + _modules/TermTk/TTkTestWidgets/logviewer.html | 1 + .../TermTk/TTkTestWidgets/testwidget.html | 1 + .../TTkTestWidgets/testwidgetsizes.html | 1 + _modules/TermTk/TTkWidgets/Fancy/table.html | 1 + .../TermTk/TTkWidgets/Fancy/tableview.html | 1 + _modules/TermTk/TTkWidgets/Fancy/tree.html | 1 + .../TermTk/TTkWidgets/Fancy/treeview.html | 1 + .../TermTk/TTkWidgets/Fancy/treewidget.html | 1 + .../TTkWidgets/TTkPickers/colorpicker.html | 1 + .../TTkWidgets/TTkPickers/filepicker.html | 281 +++++++++- _modules/TermTk/TTkWidgets/about.html | 1 + _modules/TermTk/TTkWidgets/button.html | 39 +- _modules/TermTk/TTkWidgets/checkbox.html | 1 + _modules/TermTk/TTkWidgets/combobox.html | 24 +- _modules/TermTk/TTkWidgets/frame.html | 1 + _modules/TermTk/TTkWidgets/graph.html | 1 + _modules/TermTk/TTkWidgets/image.html | 1 + _modules/TermTk/TTkWidgets/label.html | 1 + _modules/TermTk/TTkWidgets/lineedit.html | 1 + _modules/TermTk/TTkWidgets/list_.html | 1 + _modules/TermTk/TTkWidgets/listwidget.html | 1 + _modules/TermTk/TTkWidgets/menubar.html | 3 +- _modules/TermTk/TTkWidgets/radiobutton.html | 7 +- .../TermTk/TTkWidgets/resizableframe.html | 1 + _modules/TermTk/TTkWidgets/scrollarea.html | 1 + _modules/TermTk/TTkWidgets/scrollbar.html | 1 + _modules/TermTk/TTkWidgets/spacer.html | 1 + _modules/TermTk/TTkWidgets/spinbox.html | 1 + _modules/TermTk/TTkWidgets/splitter.html | 62 ++- _modules/TermTk/TTkWidgets/tabwidget.html | 1 + _modules/TermTk/TTkWidgets/texedit.html | 1 + _modules/TermTk/TTkWidgets/tree.html | 17 +- _modules/TermTk/TTkWidgets/treewidget.html | 97 +++- _modules/TermTk/TTkWidgets/widget.html | 30 +- _modules/TermTk/TTkWidgets/window.html | 1 + _modules/TermTk/libbpytop/term.html | 1 + _modules/index.html | 3 + .../TermTk.TTkCore.color.rst.txt | 7 + .../TermTk.TTkGui.draw_ascii.rst.txt | 8 + .../TermTk.TTkGui.draw_utf8.rst.txt | 15 + .../TermTk.TTkGui.fileicon_ascii.rst.txt | 8 + .../TermTk.TTkGui.fileicon_nerd.rst.txt | 8 + .../TermTk.TTkGui.fileicon_utf8.rst.txt | 8 + _sources/autogen.TermTk/TermTk.TTkGui.rst.txt | 5 + _static/ttk.css | 8 + .../TermTk.TTkAbstract.abstractitemmodel.html | 1 + ...TermTk.TTkAbstract.abstractscrollarea.html | 1 + ...TermTk.TTkAbstract.abstractscrollview.html | 1 + autogen.TermTk/TermTk.TTkAbstract.html | 1 + autogen.TermTk/TermTk.TTkCore.canvas.html | 3 +- autogen.TermTk/TermTk.TTkCore.cfg.html | 1 + autogen.TermTk/TermTk.TTkCore.color.html | 63 ++- autogen.TermTk/TermTk.TTkCore.constant.html | 1 + autogen.TermTk/TermTk.TTkCore.draw.html | 1 + autogen.TermTk/TermTk.TTkCore.filebuffer.html | 1 + autogen.TermTk/TermTk.TTkCore.helper.html | 1 + autogen.TermTk/TermTk.TTkCore.html | 1 + autogen.TermTk/TermTk.TTkCore.log.html | 1 + autogen.TermTk/TermTk.TTkCore.signal.html | 1 + autogen.TermTk/TermTk.TTkCore.string.html | 1 + autogen.TermTk/TermTk.TTkCore.timer.html | 1 + autogen.TermTk/TermTk.TTkCore.ttk.html | 1 + autogen.TermTk/TermTk.TTkGui.draw_ascii.html | 237 +++++++++ autogen.TermTk/TermTk.TTkGui.draw_utf8.html | 326 ++++++++++++ .../TermTk.TTkGui.fileicon_ascii.html | 237 +++++++++ .../TermTk.TTkGui.fileicon_nerd.html | 237 +++++++++ .../TermTk.TTkGui.fileicon_utf8.html | 237 +++++++++ autogen.TermTk/TermTk.TTkGui.html | 27 +- autogen.TermTk/TermTk.TTkGui.theme.html | 396 +++++++++++--- .../TermTk.TTkLayouts.boxlayout.html | 1 + .../TermTk.TTkLayouts.gridlayout.html | 1 + autogen.TermTk/TermTk.TTkLayouts.html | 1 + autogen.TermTk/TermTk.TTkLayouts.layout.html | 1 + autogen.TermTk/TermTk.TTkTemplates.color.html | 1 + autogen.TermTk/TermTk.TTkTemplates.data.html | 1 + autogen.TermTk/TermTk.TTkTemplates.html | 1 + .../TermTk.TTkTemplates.keyevents.html | 1 + .../TermTk.TTkTemplates.mouseevents.html | 1 + autogen.TermTk/TermTk.TTkTemplates.text.html | 1 + autogen.TermTk/TermTk.TTkTestWidgets.html | 1 + .../TermTk.TTkTestWidgets.logviewer.html | 1 + .../TermTk.TTkTestWidgets.testwidget.html | 1 + ...TermTk.TTkTestWidgets.testwidgetsizes.html | 1 + autogen.TermTk/TermTk.TTkTypes.html | 1 + autogen.TermTk/TermTk.TTkTypes.viewitem.html | 1 + autogen.TermTk/TermTk.TTkWidgets.Fancy.html | 1 + .../TermTk.TTkWidgets.Fancy.table.html | 1 + .../TermTk.TTkWidgets.Fancy.tableview.html | 1 + .../TermTk.TTkWidgets.Fancy.tree.html | 1 + .../TermTk.TTkWidgets.Fancy.treeview.html | 1 + .../TermTk.TTkWidgets.Fancy.treewidget.html | 1 + ...ermTk.TTkWidgets.Fancy.treewidgetitem.html | 1 + ...mTk.TTkWidgets.TTkPickers.colorpicker.html | 1 + ....TTkWidgets.TTkPickers.dateTimePicker.html | 1 + ...rmTk.TTkWidgets.TTkPickers.filepicker.html | 1 + .../TermTk.TTkWidgets.TTkPickers.html | 1 + autogen.TermTk/TermTk.TTkWidgets.about.html | 1 + autogen.TermTk/TermTk.TTkWidgets.button.html | 25 +- .../TermTk.TTkWidgets.checkbox.html | 1 + .../TermTk.TTkWidgets.combobox.html | 1 + .../TermTk.TTkWidgets.filetree.html | 1 + autogen.TermTk/TermTk.TTkWidgets.frame.html | 1 + autogen.TermTk/TermTk.TTkWidgets.graph.html | 1 + autogen.TermTk/TermTk.TTkWidgets.html | 1 + autogen.TermTk/TermTk.TTkWidgets.image.html | 1 + autogen.TermTk/TermTk.TTkWidgets.label.html | 1 + .../TermTk.TTkWidgets.lineedit.html | 1 + autogen.TermTk/TermTk.TTkWidgets.list_.html | 1 + .../TermTk.TTkWidgets.listwidget.html | 1 + autogen.TermTk/TermTk.TTkWidgets.menubar.html | 1 + .../TermTk.TTkWidgets.radiobutton.html | 1 + .../TermTk.TTkWidgets.resizableframe.html | 1 + .../TermTk.TTkWidgets.scrollarea.html | 1 + .../TermTk.TTkWidgets.scrollbar.html | 1 + autogen.TermTk/TermTk.TTkWidgets.spacer.html | 1 + autogen.TermTk/TermTk.TTkWidgets.spinbox.html | 1 + .../TermTk.TTkWidgets.splitter.html | 1 + .../TermTk.TTkWidgets.tabwidget.html | 1 + autogen.TermTk/TermTk.TTkWidgets.texedit.html | 1 + autogen.TermTk/TermTk.TTkWidgets.tree.html | 1 + .../TermTk.TTkWidgets.treewidget.html | 1 + .../TermTk.TTkWidgets.treewidgetitem.html | 1 + autogen.TermTk/TermTk.TTkWidgets.widget.html | 2 + autogen.TermTk/TermTk.TTkWidgets.window.html | 1 + autogen.TermTk/TermTk.html | 1 + autogen.TermTk/TermTk.libbpytop.colors.html | 1 + autogen.TermTk/TermTk.libbpytop.html | 1 + autogen.TermTk/TermTk.libbpytop.input.html | 1 + autogen.TermTk/TermTk.libbpytop.inputkey.html | 1 + autogen.TermTk/TermTk.libbpytop.term.html | 1 + genindex.html | 217 +++++++- index.html | 1 + objects.inv | Bin 5718 -> 6324 bytes py-modindex.html | 26 + search.html | 1 + searchindex.js | 2 +- tutorial/001-helloworld.html | 1 + tutorial/002-layout.html | 1 + tutorial/003-signalslots.html | 1 + tutorial/004-logging.html | 1 + 153 files changed, 3679 insertions(+), 347 deletions(-) create mode 100644 _modules/TermTk/TTkCore/color.html create mode 100644 _modules/TermTk/TTkGui/draw_utf8.html create mode 100644 _sources/autogen.TermTk/TermTk.TTkGui.draw_ascii.rst.txt create mode 100644 _sources/autogen.TermTk/TermTk.TTkGui.draw_utf8.rst.txt create mode 100644 _sources/autogen.TermTk/TermTk.TTkGui.fileicon_ascii.rst.txt create mode 100644 _sources/autogen.TermTk/TermTk.TTkGui.fileicon_nerd.rst.txt create mode 100644 _sources/autogen.TermTk/TermTk.TTkGui.fileicon_utf8.rst.txt create mode 100644 _static/ttk.css create mode 100644 autogen.TermTk/TermTk.TTkGui.draw_ascii.html create mode 100644 autogen.TermTk/TermTk.TTkGui.draw_utf8.html create mode 100644 autogen.TermTk/TermTk.TTkGui.fileicon_ascii.html create mode 100644 autogen.TermTk/TermTk.TTkGui.fileicon_nerd.html create mode 100644 autogen.TermTk/TermTk.TTkGui.fileicon_utf8.html diff --git a/_modules/TermTk/TTkAbstract/abstractscrollarea.html b/_modules/TermTk/TTkAbstract/abstractscrollarea.html index de3c85a9..883a3675 100644 --- a/_modules/TermTk/TTkAbstract/abstractscrollarea.html +++ b/_modules/TermTk/TTkAbstract/abstractscrollarea.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkAbstract/abstractscrollview.html b/_modules/TermTk/TTkAbstract/abstractscrollview.html index 3bc9fe01..afa8eab1 100644 --- a/_modules/TermTk/TTkAbstract/abstractscrollview.html +++ b/_modules/TermTk/TTkAbstract/abstractscrollview.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkCore/canvas.html b/_modules/TermTk/TTkCore/canvas.html index 4b1fa49f..27539b6f 100644 --- a/_modules/TermTk/TTkCore/canvas.html +++ b/_modules/TermTk/TTkCore/canvas.html @@ -14,6 +14,7 @@ + @@ -357,7 +358,7 @@ x,y = pos self._set(y, x, char, color) -
[docs] def drawText(self, pos, text, width=None, color=TTkColor.RST, alignment=TTkK.NONE): +
[docs] def drawText(self, pos, text, width=None, color=TTkColor.RST, alignment=TTkK.NONE, forceColor=False): ''' NOTE: drawText is one of the most abused functions, @@ -378,7 +379,9 @@ if isinstance(text, TTkString): text = text.align(width=width, alignment=alignment, color=color) txt, colors = text.getData() - for i in range(0, min(len(txt),self._width-x)): + if forceColor: + colors=[color]*len(colors) + for i in range(max(0,-x), min(len(txt),self._width-x)): #self._set(y, x+i, txt[i-x], colors[i-x]) self._data[y][x+i] = txt[i] self._colors[y][x+i] = colors[i].mod(x+i,y) diff --git a/_modules/TermTk/TTkCore/color.html b/_modules/TermTk/TTkCore/color.html new file mode 100644 index 00000000..39d607b1 --- /dev/null +++ b/_modules/TermTk/TTkCore/color.html @@ -0,0 +1,490 @@ + + + + + + + + + + TermTk.TTkCore.color — pyTermTk 0.2.0a documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
    + +
  • »
  • + +
  • Module code »
  • + +
  • TermTk.TTkCore.color
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ +

Source code for TermTk.TTkCore.color

+#!/usr/bin/env python3
+
+# MIT License
+#
+# Copyright (c) 2021 Eugenio Parodi <ceccopierangiolieugenio AT googlemail DOT com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+from TermTk.TTkCore.log import TTkLog
+from TermTk.TTkCore.cfg import TTkCfg
+from TermTk.TTkCore.constant import TTkK
+from TermTk.TTkCore.helper import TTkHelper
+
+# Ansi Escape Codes:
+# https://conemu.github.io/en/AnsiEscapeCodes.html
+
+# From http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
+# Code:         Client:   Meaning:
+# [0m           --        reset; clears all colors and styles (to white on black)
+# [1m           --        bold on (see below)
+# [3m           --        italics on
+# [4m           --        underline on
+# [7m           2.50      inverse on; reverses foreground & background colors
+# [9m           2.50      strikethrough on
+# [22m          2.50      bold off (see below)
+# [23m          2.50      italics off
+# [24m          2.50      underline off
+# [27m          2.50      inverse off
+# [29m          2.50      strikethrough off
+# [30m          --        set foreground color to black
+# [31m          --        set foreground color to red
+# [32m          --        set foreground color to green
+# [33m          --        set foreground color to yellow
+# [34m          --        set foreground color to blue
+# [35m          --        set foreground color to magenta (purple)
+# [36m          --        set foreground color to cyan
+# [37m          --        set foreground color to white
+# [39m          2.53      set foreground color to default (white)
+# [40m          --        set background color to black
+# [41m          --        set background color to red
+# [42m          --        set background color to green
+# [43m          --        set background color to yellow
+# [44m          --        set background color to blue
+# [45m          --        set background color to magenta (purple)
+# [46m          --        set background color to cyan
+# [47m          --        set background color to white
+# [49m          2.53      set background color to default (black)
+
+class _TTkColor:
+    __slots__ = ('_fg','_bg','_mod', '_colorMod')
+    _fg: str; _bg: str; _mod: str
+    def __init__(self, fg:str="", bg:str="", mod:str="", colorMod=None):
+        self._fg  = fg
+        self._bg  = bg
+        self._mod = mod
+        self._colorMod = colorMod
+
+    def colorType(self):
+        return \
+            ( TTkK.Foreground if self._fg  != "" else TTkK.NONE ) | \
+            ( TTkK.Background if self._bg  != "" else TTkK.NONE ) | \
+            ( TTkK.Modifier   if self._mod != "" else TTkK.NONE )
+
+    def getHex(self, ctype):
+        if ctype == TTkK.Foreground:
+            r,g,b = self.fgToRGB()
+        else:
+            r,g,b = self.bgToRGB()
+        return "#{:06x}".format(r<<16|g<<8|b)
+
+    def fgToRGB(self):
+        if self._fg == "": return 0xff,0xff,0xff
+        cc = self._fg.split(';')
+        r = int(cc[2])
+        g = int(cc[3])
+        b = int(cc[4][:-1])
+        return r,g,b
+
+    def bgToRGB(self):
+        if self._bg == "": return 0,0,0
+        cc = self._bg.split(';')
+        r = int(cc[2])
+        g = int(cc[3])
+        b = int(cc[4][:-1])
+        return r,g,b
+
+    def __str__(self):
+        return self._fg+self._bg+self._mod
+
+    def __eq__(self, other):
+        if other is None: return False
+        return \
+            self._fg == other._fg and \
+            self._bg == other._bg and \
+            self._mod== other._mod
+
+    def __add__(self, other):
+        # TTkLog.debug("__add__")
+        if isinstance(other, str):
+            return str(self)+other
+        else:
+            fg:  str = other._fg or self._fg
+            bg:  str = other._bg or self._bg
+            mod: str = self._mod + other._mod
+            colorMod = other._colorMod or self._colorMod
+            return TTkColor(fg,bg,mod,colorMod)
+
+    def __radd__(self, other):
+        # TTkLog.debug("__radd__")
+        if isinstance(other, str):
+            return other+str(self)
+        else:
+            fg:  str = other._fg or self._fg
+            bg:  str = other._bg or self._bg
+            mod: self._mod + other._mod
+            colorMod = other._colorMod or self._colorMod
+            return TTkColor(fg,bg,mod,colorMod)
+
+    def __sub__(self, other):
+        # TTkLog.debug("__sub__")
+        # if other is None: return str(self)
+        if "" == self._bg  != other._bg  or \
+           "" == self._fg  != other._fg  or \
+           "" == self._mod != other._mod :
+            return '\033[0m'+self
+        return str(self)
+
+    def modParam(self, *args, **kwargs):
+        if self._colorMod is None: return self
+        ret = self.copy()
+        ret._colorMod.setParam(*args, **kwargs)
+        return ret
+
+    def mod(self, x , y):
+        if self._colorMod is None: return self
+        return self._colorMod.exec(x,y,self)
+
+    def copy(self, modifier=True):
+        ret = _TTkColor()
+        ret._fg  = self._fg
+        ret._bg  = self._bg
+        ret._mod = self._mod
+        if modifier:
+            ret._colorMod = self._colorMod.copy()
+        return ret
+
+class _TTkColorModifier():
+    def __init__(self, *args, **kwargs): pass
+    def setParam(self, *args, **kwargs): pass
+    def copy(self): return self
+
+class TTkColorGradient(_TTkColorModifier):
+    __slots__ = ('_increment', '_val', '_buffer')
+    _increment: int; _val: int
+    def __init__(self, *args, **kwargs):
+        _TTkColorModifier.__init__(self, *args, **kwargs)
+        self._increment = kwargs.get("increment",0)
+        self._val = 0
+        self._buffer = {}
+    def setParam(self, *args, **kwargs):
+        self._val = kwargs.get("val",0)
+    def exec(self, x, y, color):
+        def _applyGradient(c):
+            if c == "": return c
+            multiplier = abs(self._val + y)
+            cc = c.split(';')
+            #TTkLog.debug("Eugenio "+c.replace('\033','<ESC>'))
+            r = int(cc[2])     + self._increment * multiplier
+            g = int(cc[3])     + self._increment * multiplier
+            b = int(cc[4][:-1])+ self._increment * multiplier
+            r = max(min(255,r),0)
+            g = max(min(255,g),0)
+            b = max(min(255,b),0)
+            return f"{cc[0]};{cc[1]};{r};{g};{b}m"
+
+        bname = str(color)
+        # I made a buffer to keep all the gradient values to speed up the paint process
+        if bname not in self._buffer:
+            self._buffer[bname] = [None]*(256*2)
+        id = self._val + y - 256
+        if self._buffer[bname][id] is not None:
+            return self._buffer[bname][id]
+        copy = color.copy(modifier=False)
+        copy._fg = _applyGradient(color._fg)
+        copy._bg = _applyGradient(color._bg)
+        self._buffer[bname][id] = copy
+        return self._buffer[bname][id]
+
+    def copy(self):
+        return self
+        #ret = TTkColorGradient()
+        #ret._increment = self._increment
+        #ret._val = self._val
+        #return ret
+
+
+
+
[docs]class TTkColor(_TTkColor): + ''' TermTk Color helper + + .. role:: strike + :class: strike + + .. role:: underline + :class: underline + + The TTkColor constructor creates the color based on HEX values. + + Example: + + .. code:: python + + # Foreground only colors: + color_fg_red = TTkColor.fg('#FF0000') + color_fg_green = TTkColor.fg('#00FF00') + color_fg_blue = TTkColor.fg('#0000FF') + + # Background only colors: + color_bg_red = TTkColor.bg('#FF0000') + color_bg_green = TTkColor.bg('#00FF00') + color_bg_blue = TTkColor.bg('#0000FF') + + # Combine + color_1 = color_fg_red + color_bg_blue + color_2 = color_fg_red + TTkColor.bg('#FFFF00') + color_3 = color_2 + TTkColor.UNDERLINE + TTkColor.BOLD + ''' + RST = _TTkColor(fg='\033[0m') + '''Default terminal color''' + + # Modifiers: + BOLD = _TTkColor(mod='\033[1m') + '''**Bold** modifier''' + ITALIC = _TTkColor(mod='\033[3m') + '''*Italic* modifier''' + UNDERLINE = _TTkColor(mod='\033[4m') + ''':underline:`Underline` modifier''' + STRIKETROUGH = _TTkColor(mod='\033[9m') + ''':strike:`Striketrough` modifier''' + + @staticmethod + def fg(*args, **kwargs): + mod = kwargs.get('modifier', None ) + if len(args) > 0: + color = args[0] + else: + color = kwargs.get('color', "" ) + return TTkColor(fg=TTkHelper.Color.fg(color), colorMod=mod) + + @staticmethod + def bg(*args, **kwargs): + mod = kwargs.get('modifier', None ) + if len(args) > 0: + color = args[0] + else: + color = kwargs.get('color', "" ) + return TTkColor(bg=TTkHelper.Color.bg(color), colorMod=mod)
+ +
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2021, Eugenio Parodi. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/_modules/TermTk/TTkCore/constant.html b/_modules/TermTk/TTkCore/constant.html index 35c3a5b0..773f8170 100644 --- a/_modules/TermTk/TTkCore/constant.html +++ b/_modules/TermTk/TTkCore/constant.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkCore/signal.html b/_modules/TermTk/TTkCore/signal.html index 807cda3f..0cc46f93 100644 --- a/_modules/TermTk/TTkCore/signal.html +++ b/_modules/TermTk/TTkCore/signal.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkCore/timer.html b/_modules/TermTk/TTkCore/timer.html index 21dfae62..432d5bd3 100644 --- a/_modules/TermTk/TTkCore/timer.html +++ b/_modules/TermTk/TTkCore/timer.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkCore/ttk.html b/_modules/TermTk/TTkCore/ttk.html index e8edc021..a8ac82d2 100644 --- a/_modules/TermTk/TTkCore/ttk.html +++ b/_modules/TermTk/TTkCore/ttk.html @@ -14,6 +14,7 @@ + @@ -282,7 +283,7 @@ if evt is TTkK.MOUSE_EVENT: mevt = self.mouse_events.get() focusWidget = TTkHelper.getFocus() - overlayWidget = TTkHelper.getOverlay() + #overlayWidget = TTkHelper.getOverlay() if focusWidget is not None and \ mevt.evt != TTkK.Press and \ mevt.key != TTkK.Wheel: diff --git a/_modules/TermTk/TTkGui/draw_utf8.html b/_modules/TermTk/TTkGui/draw_utf8.html new file mode 100644 index 00000000..b7e31bdb --- /dev/null +++ b/_modules/TermTk/TTkGui/draw_utf8.html @@ -0,0 +1,432 @@ + + + + + + + + + + TermTk.TTkGui.draw_utf8 — pyTermTk 0.2.0a documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
    + +
  • »
  • + +
  • Module code »
  • + +
  • TermTk.TTkGui.draw_utf8
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ +

Source code for TermTk.TTkGui.draw_utf8

+#!/usr/bin/env python3
+
+# MIT License
+#
+# Copyright (c) 2021 Eugenio Parodi <ceccopierangiolieugenio AT googlemail DOT com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
[docs]class TTkTheme(): + ''' from: https://en.wikipedia.org/wiki/Box-drawing_character + + :: + + ┌─┬┐ ╔═╦╗ ╓─╥╖ ╒═╤╕ + │ ││ ║ ║║ ║ ║║ │ ││ + ├─┼┤ ╠═╬╣ ╟─╫╢ ╞═╪╡ + └─┴┘ ╚═╩╝ ╙─╨╜ ╘═╧╛ + ┌───────────────────┐ + │ ╔═══╗ Some Text │▒ + │ ╚═╦═╝ in the box │▒ + ╞═╤══╩══╤═══════════╡▒ + │ ├──┬──┤ │▒ + │ └──┴──┘ │▒ + └───────────────────┘▒ + ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ + ''' + + hline = ('╞','═','╡') + vline = ('╥','║','╨') + + box = ( '═','║', + '╔','╗', + '╚','╝') + + + grid = ( + ( # Grid 0 + '┌','─','┬','┐', + '│',' ','│','│', + '├','─','┼','┤', + '└','─','┴','┘'), + ( # Grid 1 + '╔','═','╦','╗', + '║',' ','║','║', + '╠','═','╬','╣', + '╚','═','╩','╝'), + ( # Grid 2 + '╔','═','╤','╗', + '║',' ','│','║', + '╟','─','┼','╢', + '╚','═','╧','╝'), + ( # Grid 3 + '┌','─','╥','┐', + '│',' ','║','│', + '╞','═','╬','╡', + '└','─','╨','┘'), + (), # TODO: Grid 4 + (), # TODO: Grid 5 + ( # Grid 6 + '╓','─','┬','┐', + '║',' ','│','│', + '╟','─','┼','┤', + '╚','═','╧','╛'), + (), # TODO: Grid 7 + (), # TODO: Grid 8 + ( # Grid 9 ╒═╤╕ + '╒','═','╤','╕', + '│',' ','│','│', + '├','─','┼','┤', + '└','─','┴','┘'), + (), # TODO: Grid 10 + ) + ''' Grid Types + + :: + + grid0 grid1 grid2 grid3 + ┌─┬┐ ╔═╦╗ ╔═╤╗ ┌─╥┐ + │ ││ ║ ║║ ║ │║ │ ║│ + ├─┼┤ ╠═╬╣ ╟─┼╢ ╞═╬╡ + └─┴┘ ╚═╩╝ ╚═╧╝ └─╨┘ + grid4 grid5 grid6 grid7 grid8 grid9 + ╓─╥╖ ╒═╤╕ ╓─┬┐ ┌─┬╖ ┌─┬┐ ╒═╤╕ + ║ ║║ │ ││ ║ ││ │ │║ │ ││ │ ││ + ╟─╫╢ ╞═╪╡ ╟─┼┤ ├─┼╢ ├─┼┤ ├─┼┤ + ╙─╨╜ ╘═╧╛ ╚═╧╛ ╘═╧╝ ╘═╧╛ └─┴┘ + + ids (hex): + 0 1 2 3 + ┌ ─ ┬ ┐ + 4 5 6 7 + │ │ │ + 8 9 A B + ├ ─ ┼ ┤ + C D E F + └ ─ ┴ ┘ + ''' + + buttonBox = ( + ('┌','─','┐', + '│',' ','│', + '└','─','┘'), + ('┌','─','┐', + '│',' ','│', + '╘','═','╛')) + ''' + :: + + box0 box1 + ┌─┐ ┌─┐ + │ │ │ │ + └─┘ ╘═╛ + ''' + + hscroll = ('◀','┄','▓','▶') + vscroll = ('▲','┊','▓','▼') + + tree = ('•','▶','▼',' ', + '│','╿') + + + # 0 1 2 3 4 5 + menuBar = ('├','─','┤','┄','┄','▶') + + + tab = ( + #0 1 2 3 4 5 6 7 8 + '┌','─','┬','┐','╔','═','╗','╭','╮', + #9 10 + '│','║', + #11 12 13 14 15 16 17 18 19 20 + '╞','═','╧','╩','╡','╘','╛','└','─','┘', + #21 22 23 24 25 26 27 28 29 30 + '╚','╝','╰','╯','⣿','⣿','╒','╕','┴','X', + #31 32 33 34 35 36 37 38 39 40 + '◀','▶' + ) + ''' Tab Examples + + :: + + ┌──────╔══════╗──────┬──────┐ ┌─┌──────╔══════╗──────┬──────┐─┐ + │Label1║Label2║Label3│Label4│ │◀│Label1║Label2║Label3│Label4│▶│ + ╞═╧══════╩══════╩══════╧══════╧════╡ ╞═╧══════╩══════╩══════╧══════╧═╡ + ┌──────╔══════╗──────┬──────┐ ╭─┌──────╔══════╗──────┬──────┐─╮ + │Label1║Label2║Label3│Label4│ │◀│Label1║Label2║Label3│Label4│▶│ + ╞════════╩══════╩══════════════════╡ ╞════════╩══════╩═══════════════╡ + # Menu Prototype: + ╭──┌──────╔══════╗──────┬──────┐ ╭──┬─┌──────╔══════╗──────┬──────┐─╮ + │XX│Label1║Label2║Label3│Label4│ │XX│◀│Label1║Label2║Label3│Label4│▶│ + ╞═════════╩══════╩═══════════════╡ ╞══╧════════╩══════╩═══════════════╡ + ┌──────╔══════╗──────┬──────┐ ╭─┌──────╔══════╗──────┬──────┐─╮ + XX YY│Label1║Label2║Label3│Label4│JJ KK XX YY│◀│Label1║Label2║Label3│Label4│▶│JJ KK + ╞════════════╩══════╩═══════════════════╡ ╞═════╧════════╩══════╩═══════════════╧═════╡ + ┌──────┲━━━━━━┱──────┬──────┐ + │Label1┃Label2┃Label3│Label4│ + ┝━┷━━━━━━┻━━━━━━┻━━━━━━┷━━━━━━┷━━━━┥ + ''' + + # ''' bpytop style graph: + # :: + # ⢠⢠ ⡇ ⣆⡇ ⢠ ⣰ ⢠ + # ⢸⣀⣀⣠⣸⣸⡄ ⡄⣼ ⣀⡀ ⢠⣷⡀ ⣀⣰⣀⣿⣇⡀⢀⣸⡀⣆⣿⣆⣄⣼⣀⣀⣸ + # ⣾⣿⣿⣿⣿⣿⣧⣧⣧⣤⣦⣦⣿⣿⣤⣿⣧⣧⣿⣿⣿⣷⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ + # ⢿⣿⣿⣿⣿⣿⡟⠟⠟⠋⠟⠏⡿⣿⠋⣿⡟⡟⢿⣿⡿⠿⡿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡏ + # ⢸⠉⠉⠉⢸⢹⠁ ⠃⠹ ⠁ ⠈⡿⠁ ⠈⠸⠉⣿⡏ ⠈⢹⠁⠏⣿⠏⠃⢻⠉ ⠸⠈⠁ + # ⠈⠈ ⠇ ⠋⠇ ⠈ ⠘ ⠈ + # ''' + # graph_up = ( + # (' ','⢀','⢠','⢰','⢸'), + # ('⡀','⣀','⣠','⣰','⣸'), + # ('⡄','⣄','⣤','⣴','⣼'), + # ('⡆','⣆','⣦','⣶','⣾'), + # ('⡇','⣇','⣧','⣷','⣿')) + # graph_down=( + # (' ','⠈','⠘','⠸','⢸'), + # ('⠁','⠉','⠙','⠹','⢹'), + # ('⠃','⠋','⠛','⠻','⢻'), + # ('⠇','⠏','⠟','⠿','⢿'), + # ('⡇','⡏','⡟','⡿','⣿')) + + # Generated by: + # tests/utf-8/test.braille.py + braille=( + '⠀','⠈','⠐','⠘','⠠','⠨','⠰','⠸','⢀','⢈','⢐','⢘','⢠','⢨','⢰','⢸', + '⠁','⠉','⠑','⠙','⠡','⠩','⠱','⠹','⢁','⢉','⢑','⢙','⢡','⢩','⢱','⢹', + '⠂','⠊','⠒','⠚','⠢','⠪','⠲','⠺','⢂','⢊','⢒','⢚','⢢','⢪','⢲','⢺', + '⠃','⠋','⠓','⠛','⠣','⠫','⠳','⠻','⢃','⢋','⢓','⢛','⢣','⢫','⢳','⢻', + '⠄','⠌','⠔','⠜','⠤','⠬','⠴','⠼','⢄','⢌','⢔','⢜','⢤','⢬','⢴','⢼', + '⠅','⠍','⠕','⠝','⠥','⠭','⠵','⠽','⢅','⢍','⢕','⢝','⢥','⢭','⢵','⢽', + '⠆','⠎','⠖','⠞','⠦','⠮','⠶','⠾','⢆','⢎','⢖','⢞','⢦','⢮','⢶','⢾', + '⠇','⠏','⠗','⠟','⠧','⠯','⠷','⠿','⢇','⢏','⢗','⢟','⢧','⢯','⢷','⢿', + '⡀','⡈','⡐','⡘','⡠','⡨','⡰','⡸','⣀','⣈','⣐','⣘','⣠','⣨','⣰','⣸', + '⡁','⡉','⡑','⡙','⡡','⡩','⡱','⡹','⣁','⣉','⣑','⣙','⣡','⣩','⣱','⣹', + '⡂','⡊','⡒','⡚','⡢','⡪','⡲','⡺','⣂','⣊','⣒','⣚','⣢','⣪','⣲','⣺', + '⡃','⡋','⡓','⡛','⡣','⡫','⡳','⡻','⣃','⣋','⣓','⣛','⣣','⣫','⣳','⣻', + '⡄','⡌','⡔','⡜','⡤','⡬','⡴','⡼','⣄','⣌','⣔','⣜','⣤','⣬','⣴','⣼', + '⡅','⡍','⡕','⡝','⡥','⡭','⡵','⡽','⣅','⣍','⣕','⣝','⣥','⣭','⣵','⣽', + '⡆','⡎','⡖','⡞','⡦','⡮','⡶','⡾','⣆','⣎','⣖','⣞','⣦','⣮','⣶','⣾', + '⡇','⡏','⡗','⡟','⡧','⡯','⡷','⡿','⣇','⣏','⣗','⣟','⣧','⣯','⣷','⣿')
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2021, Eugenio Parodi. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/_modules/TermTk/TTkGui/theme.html b/_modules/TermTk/TTkGui/theme.html index b19a4225..a2777bd3 100644 --- a/_modules/TermTk/TTkGui/theme.html +++ b/_modules/TermTk/TTkGui/theme.html @@ -14,6 +14,7 @@ + @@ -192,256 +193,187 @@ # SOFTWARE. from TermTk.TTkCore.color import TTkColor +from TermTk.TTkCore.helper import TTkHelper +from TermTk.TTkCore.string import TTkString +import TermTk.TTkGui.fileicon_nerd as fi_nerd +import TermTk.TTkGui.fileicon_utf8 as fi_utf8 +import TermTk.TTkGui.fileicon_ascii as fi_ascii +import TermTk.TTkGui.draw_utf8 as draw_utf8 +import TermTk.TTkGui.draw_ascii as draw_ascii
[docs]class TTkTheme(): - ''' from: https://en.wikipedia.org/wiki/Box-drawing_character - - :: - - ┌─┬┐ ╔═╦╗ ╓─╥╖ ╒═╤╕ - │ ││ ║ ║║ ║ ║║ │ ││ - ├─┼┤ ╠═╬╣ ╟─╫╢ ╞═╪╡ - └─┴┘ ╚═╩╝ ╙─╨╜ ╘═╧╛ - ┌───────────────────┐ - │ ╔═══╗ Some Text │▒ - │ ╚═╦═╝ in the box │▒ - ╞═╤══╩══╤═══════════╡▒ - │ ├──┬──┤ │▒ - │ └──┴──┘ │▒ - └───────────────────┘▒ - ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ + '''Default Theme Class + This class can be reimplemented/extended to include new themes and default colors ''' + NERD = {'file':fi_nerd, 'draw':draw_utf8} + UTF8 = {'file':fi_utf8, 'draw':draw_utf8} + ASCII = {'file':fi_ascii, 'draw':draw_ascii} + + hline = draw_utf8.TTkTheme.hline + vline = draw_utf8.TTkTheme.vline + box = draw_utf8.TTkTheme.box + grid = draw_utf8.TTkTheme.grid + buttonBox = draw_utf8.TTkTheme.buttonBox + hscroll = draw_utf8.TTkTheme.hscroll + vscroll = draw_utf8.TTkTheme.vscroll + tree = draw_utf8.TTkTheme.tree + menuBar = draw_utf8.TTkTheme.menuBar + tab = draw_utf8.TTkTheme.tab + braille = draw_utf8.TTkTheme.braille + + fileNameColor = TTkColor.RST # Simil NerdTree purple + '''Default to **TTkColor.RST # Simil NerdTree purple**''' + executableColor = TTkColor.fg("#AAFFAA") # Greenish + '''Default to **TTkColor.fg("#AAFFAA") # Greenish**''' + linkNameColor = TTkColor.fg("#00FFFF") # Cyanish + '''Default to **TTkColor.fg("#00FFFF") # Cyanish**''' + folderNameColor = TTkColor.fg("#AAFFFF") # Yellowish + '''Default to **TTkColor.fg("#AAFFFF") # Yellowish**''' + failNameColor = TTkColor.fg("#FF0000") # Yellowish + '''Default to **TTkColor.fg("#FF0000") # Yellowish**''' + fileIconColor = TTkColor.fg("#FFAAFF") # Simil NerdTree purple + '''Default to **TTkColor.fg("#FFAAFF") # Simil NerdTree purple**''' + folderIconColor = TTkColor.fg("#FFFFAA") # Yellowish + '''Default to **TTkColor.fg("#FFFFAA") # Yellowish**''' + + getIcon = fi_utf8.FileIcon.getIcon + folderIconClose = TTkString() + folderIconColor + fi_utf8.FileIcon.folder_close + TTkColor.RST + folderIconOpen = TTkString() + folderIconColor + fi_utf8.FileIcon.folder_open + TTkColor.RST + + + @staticmethod + def getFileIcon(file): + return TTkString() + TTkTheme.fileIconColor + TTkTheme.getIcon(file) + TTkColor.RST + + @staticmethod + def loadTheme(theme): + TTkTheme.hline = theme['draw'].TTkTheme.hline + TTkTheme.vline = theme['draw'].TTkTheme.vline + TTkTheme.box = theme['draw'].TTkTheme.box + TTkTheme.grid = theme['draw'].TTkTheme.grid + TTkTheme.buttonBox = theme['draw'].TTkTheme.buttonBox + TTkTheme.hscroll = theme['draw'].TTkTheme.hscroll + TTkTheme.vscroll = theme['draw'].TTkTheme.vscroll + TTkTheme.tree = theme['draw'].TTkTheme.tree + TTkTheme.menuBar = theme['draw'].TTkTheme.menuBar + TTkTheme.tab = theme['draw'].TTkTheme.tab + TTkTheme.braille = theme['draw'].TTkTheme.braille + + TTkTheme.getIcon = theme['file'].FileIcon.getIcon + TTkTheme.folderIconClose = TTkString() + TTkTheme.folderIconColor + theme['file'].FileIcon.folder_close + TTkColor.RST + TTkTheme.folderIconOpen = TTkString() + TTkTheme.folderIconColor + theme['file'].FileIcon.folder_open + TTkColor.RST + + TTkHelper.updateAll() - hline = ('╞','═','╡') - vline = ('╥','║','╨') - - box = ( '═','║', - '╔','╗', - '╚','╝') - - - grid = ( - ( # Grid 0 - '┌','─','┬','┐', - '│',' ','│','│', - '├','─','┼','┤', - '└','─','┴','┘'), - ( # Grid 1 - '╔','═','╦','╗', - '║',' ','║','║', - '╠','═','╬','╣', - '╚','═','╩','╝'), - ( # Grid 2 - '╔','═','╤','╗', - '║',' ','│','║', - '╟','─','┼','╢', - '╚','═','╧','╝'), - ( # Grid 3 - '┌','─','╥','┐', - '│',' ','║','│', - '╞','═','╬','╡', - '└','─','╨','┘'), - (), # TODO: Grid 4 - (), # TODO: Grid 5 - ( # Grid 6 - '╓','─','┬','┐', - '║',' ','│','│', - '╟','─','┼','┤', - '╚','═','╧','╛'), - (), # TODO: Grid 7 - (), # TODO: Grid 8 - ( # Grid 9 ╒═╤╕ - '╒','═','╤','╕', - '│',' ','│','│', - '├','─','┼','┤', - '└','─','┴','┘'), - (), # TODO: Grid 10 - ) - ''' Grid Types - - :: - - grid0 grid1 grid2 grid3 - ┌─┬┐ ╔═╦╗ ╔═╤╗ ┌─╥┐ - │ ││ ║ ║║ ║ │║ │ ║│ - ├─┼┤ ╠═╬╣ ╟─┼╢ ╞═╬╡ - └─┴┘ ╚═╩╝ ╚═╧╝ └─╨┘ - grid4 grid5 grid6 grid7 grid8 grid9 - ╓─╥╖ ╒═╤╕ ╓─┬┐ ┌─┬╖ ┌─┬┐ ╒═╤╕ - ║ ║║ │ ││ ║ ││ │ │║ │ ││ │ ││ - ╟─╫╢ ╞═╪╡ ╟─┼┤ ├─┼╢ ├─┼┤ ├─┼┤ - ╙─╨╜ ╘═╧╛ ╚═╧╛ ╘═╧╝ ╘═╧╛ └─┴┘ - - ids (hex): - 0 1 2 3 - ┌ ─ ┬ ┐ - 4 5 6 7 - │ │ │ - 8 9 A B - ├ ─ ┼ ┤ - C D E F - └ ─ ┴ ┘ - ''' - - buttonBox = ( - ('┌','─','┐', - '│',' ','│', - '└','─','┘'), - ('┌','─','┐', - '│',' ','│', - '╘','═','╛')) - ''' - :: - - box0 box1 - ┌─┐ ┌─┐ - │ │ │ │ - └─┘ ╘═╛ - ''' - - hscroll = ('◀','┄','▓','▶') - vscroll = ('▲','┊','▓','▼') - - tree = ('•','▶','▼',' ', - '│','╿') - - - # 0 1 2 3 4 5 - menuBar = ('├','─','┤','┄','┄','▶') - - - tab = ( - #0 1 2 3 4 5 6 7 8 - '┌','─','┬','┐','╔','═','╗','╭','╮', - #9 10 - '│','║', - #11 12 13 14 15 16 17 18 19 20 - '╞','═','╧','╩','╡','╘','╛','└','─','┘', - #21 22 23 24 25 26 27 28 29 30 - '╚','╝','╰','╯','⣿','⣿','╒','╕','┴','X', - #31 32 33 34 35 36 37 38 39 40 - '◀','▶' - ) - ''' Tab Examples - - :: - - ┌──────╔══════╗──────┬──────┐ ┌─┌──────╔══════╗──────┬──────┐─┐ - │Label1║Label2║Label3│Label4│ │◀│Label1║Label2║Label3│Label4│▶│ - ╞═╧══════╩══════╩══════╧══════╧════╡ ╞═╧══════╩══════╩══════╧══════╧═╡ - ┌──────╔══════╗──────┬──────┐ ╭─┌──────╔══════╗──────┬──────┐─╮ - │Label1║Label2║Label3│Label4│ │◀│Label1║Label2║Label3│Label4│▶│ - ╞════════╩══════╩══════════════════╡ ╞════════╩══════╩═══════════════╡ - # Menu Prototype: - ╭──┌──────╔══════╗──────┬──────┐ ╭──┬─┌──────╔══════╗──────┬──────┐─╮ - │XX│Label1║Label2║Label3│Label4│ │XX│◀│Label1║Label2║Label3│Label4│▶│ - ╞═════════╩══════╩═══════════════╡ ╞══╧════════╩══════╩═══════════════╡ - ┌──────╔══════╗──────┬──────┐ ╭─┌──────╔══════╗──────┬──────┐─╮ - XX YY│Label1║Label2║Label3│Label4│JJ KK XX YY│◀│Label1║Label2║Label3│Label4│▶│JJ KK - ╞════════════╩══════╩═══════════════════╡ ╞═════╧════════╩══════╩═══════════════╧═════╡ - ┌──────┲━━━━━━┱──────┬──────┐ - │Label1┃Label2┃Label3│Label4│ - ┝━┷━━━━━━┻━━━━━━┻━━━━━━┷━━━━━━┷━━━━┥ - ''' - # ''' bpytop style graph: - # :: - # ⢠⢠ ⡇ ⣆⡇ ⢠ ⣰ ⢠ - # ⢸⣀⣀⣠⣸⣸⡄ ⡄⣼ ⣀⡀ ⢠⣷⡀ ⣀⣰⣀⣿⣇⡀⢀⣸⡀⣆⣿⣆⣄⣼⣀⣀⣸ - # ⣾⣿⣿⣿⣿⣿⣧⣧⣧⣤⣦⣦⣿⣿⣤⣿⣧⣧⣿⣿⣿⣷⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ - # ⢿⣿⣿⣿⣿⣿⡟⠟⠟⠋⠟⠏⡿⣿⠋⣿⡟⡟⢿⣿⡿⠿⡿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡏ - # ⢸⠉⠉⠉⢸⢹⠁ ⠃⠹ ⠁ ⠈⡿⠁ ⠈⠸⠉⣿⡏ ⠈⢹⠁⠏⣿⠏⠃⢻⠉ ⠸⠈⠁ - # ⠈⠈ ⠇ ⠋⠇ ⠈ ⠘ ⠈ - # ''' - # graph_up = ( - # (' ','⢀','⢠','⢰','⢸'), - # ('⡀','⣀','⣠','⣰','⣸'), - # ('⡄','⣄','⣤','⣴','⣼'), - # ('⡆','⣆','⣦','⣶','⣾'), - # ('⡇','⣇','⣧','⣷','⣿')) - # graph_down=( - # (' ','⠈','⠘','⠸','⢸'), - # ('⠁','⠉','⠙','⠹','⢹'), - # ('⠃','⠋','⠛','⠻','⢻'), - # ('⠇','⠏','⠟','⠿','⢿'), - # ('⡇','⡏','⡟','⡿','⣿')) - - # Generated by: - # tests/utf-8/test.braille.py - braille=( - '⠀','⠈','⠐','⠘','⠠','⠨','⠰','⠸','⢀','⢈','⢐','⢘','⢠','⢨','⢰','⢸', - '⠁','⠉','⠑','⠙','⠡','⠩','⠱','⠹','⢁','⢉','⢑','⢙','⢡','⢩','⢱','⢹', - '⠂','⠊','⠒','⠚','⠢','⠪','⠲','⠺','⢂','⢊','⢒','⢚','⢢','⢪','⢲','⢺', - '⠃','⠋','⠓','⠛','⠣','⠫','⠳','⠻','⢃','⢋','⢓','⢛','⢣','⢫','⢳','⢻', - '⠄','⠌','⠔','⠜','⠤','⠬','⠴','⠼','⢄','⢌','⢔','⢜','⢤','⢬','⢴','⢼', - '⠅','⠍','⠕','⠝','⠥','⠭','⠵','⠽','⢅','⢍','⢕','⢝','⢥','⢭','⢵','⢽', - '⠆','⠎','⠖','⠞','⠦','⠮','⠶','⠾','⢆','⢎','⢖','⢞','⢦','⢮','⢶','⢾', - '⠇','⠏','⠗','⠟','⠧','⠯','⠷','⠿','⢇','⢏','⢗','⢟','⢧','⢯','⢷','⢿', - '⡀','⡈','⡐','⡘','⡠','⡨','⡰','⡸','⣀','⣈','⣐','⣘','⣠','⣨','⣰','⣸', - '⡁','⡉','⡑','⡙','⡡','⡩','⡱','⡹','⣁','⣉','⣑','⣙','⣡','⣩','⣱','⣹', - '⡂','⡊','⡒','⡚','⡢','⡪','⡲','⡺','⣂','⣊','⣒','⣚','⣢','⣪','⣲','⣺', - '⡃','⡋','⡓','⡛','⡣','⡫','⡳','⡻','⣃','⣋','⣓','⣛','⣣','⣫','⣳','⣻', - '⡄','⡌','⡔','⡜','⡤','⡬','⡴','⡼','⣄','⣌','⣔','⣜','⣤','⣬','⣴','⣼', - '⡅','⡍','⡕','⡝','⡥','⡭','⡵','⡽','⣅','⣍','⣕','⣝','⣥','⣭','⣵','⣽', - '⡆','⡎','⡖','⡞','⡦','⡮','⡶','⡾','⣆','⣎','⣖','⣞','⣦','⣮','⣶','⣾', - '⡇','⡏','⡗','⡟','⡧','⡯','⡷','⡿','⣇','⣏','⣗','⣟','⣧','⣯','⣷','⣿') frameBorderColor = TTkColor.RST + '''Default to :class:`~TermTk.TTkCore.color.TTkColor.RST`''' frameTitleColor = TTkColor.fg("#dddddd")+TTkColor.bg("#222222") + '''Default to **TTkColor.fg("#dddddd")+TTkColor.bg("#222222")**''' windowBorderColor = TTkColor.RST + '''Default to :class:`~TermTk.TTkCore.color.TTkColor.RST`''' windowBorderColorFocus = TTkColor.fg("#ffff55") + '''Default to **TTkColor.fg("#ffff55")**''' buttonBoxGrid = 1 + '''Default to **1**''' buttonBoxGridClicked = 0 + '''Default to **0**''' + buttonBoxGridDisabled = 0 + '''Default to **0**''' buttonTextColor = TTkColor.fg("#dddd88")+TTkColor.bg("#000044") + '''Default to **TTkColor.fg("#dddd88")+TTkColor.bg("#000044")**''' buttonBorderColor = TTkColor.RST + '''Default to :class:`~TermTk.TTkCore.color.TTkColor.RST`''' buttonTextColorClicked = TTkColor.fg("#ffffdd")+TTkColor.BOLD + '''Default to **TTkColor.fg("#ffffdd")+**:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' buttonBorderColorClicked = TTkColor.fg("#dddddd")+TTkColor.BOLD - buttonTextColorFocus = buttonTextColor + TTkColor.BOLD + '''Default to **TTkColor.fg("#dddddd")+**:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' + buttonTextColorFocus = buttonTextColor + TTkColor.BOLD + '''Default to :class:`buttonTextColor` **+** :class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' buttonBorderColorFocus = TTkColor.fg("#ffff00") + TTkColor.BOLD + '''Default to **TTkColor.fg("#ffff00") + **:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' + buttonTextColorDisabled = TTkColor.fg("#888888") + '''Default to **TTkColor.fg("#888888")**''' + buttonBorderColorDisabled= TTkColor.fg("#888888") + '''Default to **TTkColor.fg("#888888")**''' menuButtonShortcutColor = TTkColor.fg("#dddddd") + TTkColor.UNDERLINE + '''Default to **TTkColor.fg("#dddddd") + TTkColor.UNDERLINE**''' menuButtonColor = TTkColor.BOLD + '''Default to :class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' menuButtonBorderColor = frameBorderColor - menuButtonColorClicked = TTkColor.fg("#ffff88") + '''Default to :class:`frameBorderColor`''' + menuButtonColorClicked = TTkColor.fg("#ffff88") + '''Default to **TTkColor.fg("#ffff88")**''' menuButtonBorderColorClicked = frameBorderColor + '''Default to :class:`frameBorderColor`''' listColor = TTkColor.RST + '''Default to :class:`~TermTk.TTkCore.color.TTkColor.RST`''' listColorSelected = TTkColor.fg("#ffffdd")+TTkColor.bg("#000044") + TTkColor.BOLD + '''Default to **TTkColor.fg("#ffffdd")+TTkColor.bg("#000044") + **:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' listColorHighlighted = TTkColor.bg("#000088") + TTkColor.BOLD + '''Default to **TTkColor.bg("#000088") + **:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' lineEditTextColor = TTkColor.fg("#dddddd")+TTkColor.bg("#222222") + '''Default to **TTkColor.fg("#dddddd")+TTkColor.bg("#222222")**''' lineEditTextColorFocus = TTkColor.fg("#dddddd")+TTkColor.bg("#000044") + '''Default to **TTkColor.fg("#dddddd")+TTkColor.bg("#000044")**''' comboboxContentColor = TTkColor.fg("#dddd88")+TTkColor.bg("#111111") + '''Default to **TTkColor.fg("#dddd88")+TTkColor.bg("#111111")**''' comboboxBorderColor = buttonBorderColor + '''Default to :class:`buttonBorderColor`''' comboboxContentColorFocus = TTkColor.fg("#ffff88")+TTkColor.bg("#111111") + '''Default to **TTkColor.fg("#ffff88")+TTkColor.bg("#111111")**''' comboboxBorderColorFocus = buttonBorderColorFocus checkboxContentColor = buttonTextColor + '''Default to :class:`buttonTextColor`''' checkboxBorderColor = buttonBorderColor + '''Default to :class:`buttonBorderColor`''' checkboxContentColorFocus = buttonTextColorFocus + '''Default to :class:`buttonTextColorFocus`''' checkboxBorderColorFocus = buttonBorderColorFocus + '''Default to :class:`buttonBorderColorFocus`''' radioButtonContentColor = buttonTextColor + '''Default to :class:`buttonTextColor`''' radioButtonBorderColor = buttonBorderColor + '''Default to :class:`buttonBorderColor`''' radioButtonContentColorFocus = buttonTextColorFocus + '''Default to :class:`buttonTextColorFocus`''' radioButtonBorderColorFocus = buttonBorderColorFocus + '''Default to :class:`buttonBorderColorFocus`''' tabColor = TTkColor.fg("#aaaaaa") + '''Default to **TTkColor.fg("#aaaaaa")**''' tabOffsetColor = TTkColor.RST + '''Default to **TTkColor.RST**''' tabBorderColor = frameBorderColor + '''Default to :class:`frameBorderColor`''' tabSelectColor = TTkColor.fg("#ffff88")+TTkColor.bg("#000066")+TTkColor.BOLD + '''Default to **TTkColor.fg("#ffff88")+TTkColor.bg("#000066")+**:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' tabColorFocus = TTkColor.fg("#aaaaaa") + '''Default to **TTkColor.fg("#aaaaaa")**''' tabOffsetColorFocus = tabOffsetColor + '''Default to :class:`tabOffsetColor`''' tabBorderColorFocus = TTkColor.fg("#ffff88") + '''Default to **TTkColor.fg("#ffff88")**''' tabSelectColorFocus = TTkColor.fg("#ffff88")+TTkColor.bg("#000066")+TTkColor.BOLD + '''Default to **TTkColor.fg("#ffff88")+TTkColor.bg("#000066")+**:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' treeHeaderColor = TTkColor.fg("#ffffff")+TTkColor.bg("#444444")+TTkColor.BOLD - treeSelectedColor = TTkColor.fg("#ffff88")+TTkColor.bg("#000066")+TTkColor.BOLD
+ '''Default to **TTkColor.fg("#ffffff")+TTkColor.bg("#444444")+**:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' + treeSelectedColor = TTkColor.fg("#ffff88")+TTkColor.bg("#000066")+TTkColor.BOLD + '''Default to **TTkColor.fg("#ffff88")+TTkColor.bg("#000066")+**:class:`~TermTk.TTkCore.color.TTkColor.BOLD`''' + treeLineColor = TTkColor.fg("#444444") + '''Default to **TTkColor.fg("#444444")**'''
diff --git a/_modules/TermTk/TTkLayouts/boxlayout.html b/_modules/TermTk/TTkLayouts/boxlayout.html index 30af6412..8b4526bc 100644 --- a/_modules/TermTk/TTkLayouts/boxlayout.html +++ b/_modules/TermTk/TTkLayouts/boxlayout.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkLayouts/gridlayout.html b/_modules/TermTk/TTkLayouts/gridlayout.html index 78a9a2f6..6325513d 100644 --- a/_modules/TermTk/TTkLayouts/gridlayout.html +++ b/_modules/TermTk/TTkLayouts/gridlayout.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkLayouts/layout.html b/_modules/TermTk/TTkLayouts/layout.html index ef3e8647..98fb971e 100644 --- a/_modules/TermTk/TTkLayouts/layout.html +++ b/_modules/TermTk/TTkLayouts/layout.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkTestWidgets/logviewer.html b/_modules/TermTk/TTkTestWidgets/logviewer.html index 37dcb87b..f3bf5231 100644 --- a/_modules/TermTk/TTkTestWidgets/logviewer.html +++ b/_modules/TermTk/TTkTestWidgets/logviewer.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkTestWidgets/testwidget.html b/_modules/TermTk/TTkTestWidgets/testwidget.html index 2d826661..7ecf43ed 100644 --- a/_modules/TermTk/TTkTestWidgets/testwidget.html +++ b/_modules/TermTk/TTkTestWidgets/testwidget.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkTestWidgets/testwidgetsizes.html b/_modules/TermTk/TTkTestWidgets/testwidgetsizes.html index 27af9f2a..27116821 100644 --- a/_modules/TermTk/TTkTestWidgets/testwidgetsizes.html +++ b/_modules/TermTk/TTkTestWidgets/testwidgetsizes.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/Fancy/table.html b/_modules/TermTk/TTkWidgets/Fancy/table.html index f6227448..3ccfaab7 100644 --- a/_modules/TermTk/TTkWidgets/Fancy/table.html +++ b/_modules/TermTk/TTkWidgets/Fancy/table.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/Fancy/tableview.html b/_modules/TermTk/TTkWidgets/Fancy/tableview.html index 22811454..66a56fc4 100644 --- a/_modules/TermTk/TTkWidgets/Fancy/tableview.html +++ b/_modules/TermTk/TTkWidgets/Fancy/tableview.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/Fancy/tree.html b/_modules/TermTk/TTkWidgets/Fancy/tree.html index 7f6274ef..16cf2df0 100644 --- a/_modules/TermTk/TTkWidgets/Fancy/tree.html +++ b/_modules/TermTk/TTkWidgets/Fancy/tree.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/Fancy/treeview.html b/_modules/TermTk/TTkWidgets/Fancy/treeview.html index fda77434..2e809a9c 100644 --- a/_modules/TermTk/TTkWidgets/Fancy/treeview.html +++ b/_modules/TermTk/TTkWidgets/Fancy/treeview.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/Fancy/treewidget.html b/_modules/TermTk/TTkWidgets/Fancy/treewidget.html index 60233d6e..c7349178 100644 --- a/_modules/TermTk/TTkWidgets/Fancy/treewidget.html +++ b/_modules/TermTk/TTkWidgets/Fancy/treewidget.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/TTkPickers/colorpicker.html b/_modules/TermTk/TTkWidgets/TTkPickers/colorpicker.html index 887056f1..72c85b7c 100644 --- a/_modules/TermTk/TTkWidgets/TTkPickers/colorpicker.html +++ b/_modules/TermTk/TTkWidgets/TTkPickers/colorpicker.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/TTkPickers/filepicker.html b/_modules/TermTk/TTkWidgets/TTkPickers/filepicker.html index 5a1e3eee..52e6bca7 100644 --- a/_modules/TermTk/TTkWidgets/TTkPickers/filepicker.html +++ b/_modules/TermTk/TTkWidgets/TTkPickers/filepicker.html @@ -14,6 +14,7 @@ + @@ -191,25 +192,295 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from os import walk +import os +import datetime +from posixpath import islink +from TermTk.TTkCore.color import TTkColor +from TermTk.TTkCore.constant import TTkK +from TermTk.TTkCore.log import TTkLog +from TermTk.TTkCore.cfg import TTkCfg +from TermTk.TTkCore.string import TTkString from TermTk.TTkWidgets.window import TTkWindow -from TermTk.TTkWidgets.Fancy.treewidgetitem import TTkFancyTreeWidgetItem +from TermTk.TTkWidgets.tree import TTkTree +from TermTk.TTkWidgets.treewidgetitem import TTkTreeWidgetItem +from TermTk.TTkWidgets.splitter import TTkSplitter +from TermTk.TTkWidgets.frame import TTkFrame +from TermTk.TTkWidgets.combobox import TTkComboBox +from TermTk.TTkWidgets.button import TTkButton +from TermTk.TTkWidgets.label import TTkLabel +from TermTk.TTkWidgets.list_ import TTkList +from TermTk.TTkLayouts.gridlayout import TTkGridLayout +from TermTk.TTkCore.signal import pyTTkSlot, pyTTkSignal -class _FileWidgetItem(TTkFancyTreeWidgetItem): + +''' +:: + + +----------------------------------------+ + | Look in: [--FULL-PATH-|v] [<] [>] [^] | + | +-----------+------------------------+ | + | | Bookmarks ║ File Tree | | + | | ║ | | + | +-----------+------------------------+ | + | File name: [-----------] [Open ] | + | Files of Type [-----------] [Cancel] | + +--------------+-------------------------+ +''' + +class _FileTreeWidgetItem(TTkTreeWidgetItem): + FILE = 0x00 + DIR = 0x01 + + __slots__ = ('_path', '_type') def __init__(self, *args, **kwargs): - TTkFancyTreeWidgetItem.__init__(self, *args, **kwargs) + TTkTreeWidgetItem.__init__(self, *args, **kwargs) + self._path = kwargs.get('path', '.') + self._type = kwargs.get('type', _FileTreeWidgetItem.FILE) + self.setTextAlignment(1, TTkK.RIGHT_ALIGN) + + def path(self): + return self._path + + def getType(self): + return self._type
[docs]class TTkFileDialogPicker(TTkWindow): + __slots__ = ('_path', '_recentPath', '_recentPathId', '_filter', '_caption', + # Widgets + '_fileTree', '_lookPath', 'btnPrev', 'btnNext', 'btnUp', + # Signals + 'filePicked') + def __init__(self, *args, **kwargs): + # Signals + self.filePicked = pyTTkSignal(str) + TTkWindow.__init__(self, *args, **kwargs) - self._name = kwargs.get('name' , 'TTkFileDialogPicker' )
+ self._name = kwargs.get('name' , 'TTkFileDialogPicker' ) + + self._recentPathId = -1 + self._recentPath = [] + + self._path = kwargs.get('path','.') + self._filter = kwargs.get('filter','All Files (*)') + self._caption = kwargs.get('caption','File Dialog') + + self.setTitle(self._caption) + self.setLayout(TTkGridLayout()) + + # Top (absPath) + topLayout = TTkGridLayout() + self.layout().addItem(topLayout,0,0) + + topLayout.addWidget(TTkLabel(text="Look in:",maxWidth=14), 0,0) + topLayout.addWidget(lookPath := TTkComboBox(textAlign=TTkK.LEFT_ALIGN), 0,1) + topLayout.addWidget(btnPrev := TTkButton(text="<",maxWidth=3,enabled=False), 0,2) + topLayout.addWidget(btnNext := TTkButton(text=">",maxWidth=3,enabled=False), 0,3) + topLayout.addWidget(btnUp := TTkButton(text="^",maxWidth=3,enabled=True), 0,4) + self._lookPath = lookPath + self._btnPrev = btnPrev + self._btnNext = btnNext + self._btnUp = btnUp + self._btnPrev.clicked.connect(self._openPrev) + self._btnNext.clicked.connect(self._openNext) + self._btnUp.clicked.connect( self._openUp) + + # Bottom (File Name, Controls) + bottomLayout = TTkGridLayout() + self.layout().addItem(bottomLayout,2,0) + bottomLayout.addWidget(TTkLabel(text="File name:" ,maxWidth=14), 0,0) + bottomLayout.addWidget(TTkLabel(text="Files of type:" ,maxWidth=14), 1,0) + bottomLayout.addWidget(_xxyyzz := TTkComboBox(), 0,1) + bottomLayout.addWidget(_aabbcc := TTkComboBox(), 1,1) + bottomLayout.addWidget(btnOpen := TTkButton(text="Open", maxWidth=8), 0,2) + bottomLayout.addWidget(btnCancel := TTkButton(text="Cancel",maxWidth=8), 1,2) + + # Center (self._fileTree, Bookmarks) + splitter = TTkSplitter(border=True) + self.layout().addWidget(splitter,1,0) + + bookmarks = TTkList(parent=splitter) + # Home Folder (Win Compatible): + # os.path.expanduser("~") + + self._fileTree = TTkTree(parent=splitter) + splitter.setSizes([10,self.width()-13]) + self._fileTree.setHeaderLabels(["Name", "Size", "Type", "Date Modified"]) + self._fileTree.itemExpanded.connect(TTkFileDialogPicker._updateChildren) + self._fileTree.itemExpanded.connect(TTkFileDialogPicker._folderExpanded) + self._fileTree.itemCollapsed.connect(TTkFileDialogPicker._folderCollapsed) + + self._fileTree.itemActivated.connect(self._activatedItem) + + self._lookPath.currentTextChanged.connect(self._openNewPath) + self._openNewPath(self._path, True) + + @pyTTkSlot(TTkTreeWidgetItem, int) + def _activatedItem(self, item, _): + path = item.path() + if os.path.isdir(path): + self._openNewPath(path, True) + elif os.path.isfile(path): + pass + elif os.path.islink(path): + pass + elif os.path.ismount(path): + pass + + def _openPrev(self): + if self._recentPathId<=0 or self._recentPathId>=len(self._recentPath): + self._btnPrev.setDisabled() + return + self._recentPathId -= 1 + self._openNewPath(self._recentPath[self._recentPathId],False) + if self._recentPathId<=0: + self._btnPrev.setDisabled() + self._btnNext.setEnabled() + + def _openNext(self): + if self._recentPathId<0 or self._recentPathId>=len(self._recentPath)-1: + self._btnNext.setDisabled() + return + self._recentPathId += 1 + self._openNewPath(self._recentPath[self._recentPathId],False) + if self._recentPathId>=len(self._recentPath)-1: + self._btnNext.setDisabled() + self._btnPrev.setEnabled() + + def _openUp(self): + path = os.path.abspath(self._recentPath[self._recentPathId]) + path, e = os.path.split(path) + if e: + self._openNewPath(path, True) + + def _openNewPath(self, path, addToRecent=True): + self._path = path + if addToRecent: + self._recentPathId = len(self._recentPath) + self._recentPath.append(path) + if self._recentPathId: + self._btnPrev.setEnabled() + self._btnNext.setDisabled() + self._fileTree.clear() + for i in TTkFileDialogPicker._getFileItems(path): + self._fileTree.addTopLevelItem(i) + self._lookPath.currentTextChanged.disconnect(self._openNewPath) + self._lookPath.clear() + self._lookPath.addItems(TTkFileDialogPicker._getListLook(self._path)) + self._lookPath.setCurrentIndex(0) + self._lookPath.currentTextChanged.connect(self._openNewPath) + + @staticmethod + def _getListLook(path): + path = os.path.abspath(path) + ret = [path] + while True: + path, e = os.path.split(path) + if e: + ret.append(path) + if not path or path=='/': + break + return ret + + @staticmethod + def _getFileItems(path): + path = os.path.abspath(path) + if not os.path.exists(path): return [] + dir_list = os.listdir(path) + ret = [] + for n in dir_list: + nodePath = os.path.join(path,n) + + def _getStat(_path): + info = os.stat(_path) + time = datetime.datetime.fromtimestamp(info.st_ctime).strftime('%Y-%m-%d %H:%M:%S') + if info.st_size > (1024*1024*1024): + size = f"{info.st_size/(1024*1024*1024):.2f} GB" + if info.st_size > (1024*1024): + size = f"{info.st_size/(1024*1024):.2f} MB" + elif info.st_size > 1024: + size = f"{info.st_size/1024:.2f} KB" + else: + size = f"{info.st_size} bytes" + return time, size + + if os.path.isdir(nodePath): + if os.path.exists(nodePath): + time, _ = _getStat(nodePath) + color = TTkCfg.theme.folderNameColor + else: + time, _ = "" + color = TTkCfg.theme.failNameColor + + if os.path.islink(nodePath): + name = TTkString()+TTkCfg.theme.linkNameColor+n+'/'+TTkColor.RST+' -> '+TTkCfg.theme.folderNameColor+os.readlink(nodePath) + typef = "Folder Link" + else: + name = TTkString()+color+n+'/' + typef = "Folder" + + ret.append(_FileTreeWidgetItem( + [ name, "", typef, time], + path=nodePath, + type=_FileTreeWidgetItem.DIR, + icon=TTkCfg.theme.folderIconClose, + childIndicatorPolicy=TTkK.ShowIndicator)) + + elif os.path.isfile(nodePath) or os.path.islink(nodePath): + if os.path.exists(nodePath): + time, size = _getStat(nodePath) + if os.access(nodePath, os.X_OK): + color = TTkCfg.theme.executableColor + typef="Exec" + else: + color = TTkCfg.theme.fileNameColor + typef="File" + else: + time, size = "", "" + color = TTkCfg.theme.failNameColor + typef="Broken" + + if os.path.islink(nodePath): + name = TTkString()+TTkCfg.theme.linkNameColor+n+TTkColor.RST+' -> '+color+os.readlink(nodePath) + typef += " Link" + else: + name = TTkString()+color+n + + _, ext = os.path.splitext(n) + if ext: ext = f"{ext[1:]} " + ret.append(_FileTreeWidgetItem( + [ name, size, typef, time], + path=nodePath, + type=_FileTreeWidgetItem.FILE, + icon=TTkCfg.theme.getFileIcon(n), + childIndicatorPolicy=TTkK.DontShowIndicator)) + return ret + + @staticmethod + def _folderExpanded(item): + item.setIcon(0, TTkCfg.theme.folderIconOpen) + + @staticmethod + def _folderCollapsed(item): + item.setIcon(0, TTkCfg.theme.folderIconClose) + + @staticmethod + def _updateChildren(item): + if item.children(): return + for i in TTkFileDialogPicker._getFileItems(item.path()): + item.addChild(i) + ''' for (dirpath, dirnames, filenames) in walk('/tmp'): print(f"{dirpath} {dirnames} {filenames}") break ''' + +class TTkFileDialog: + def getOpenFileName(caption, dir=".", filter="All Files (*)", options=None): + pass diff --git a/_modules/TermTk/TTkWidgets/about.html b/_modules/TermTk/TTkWidgets/about.html index 6725a34d..6f69d75b 100644 --- a/_modules/TermTk/TTkWidgets/about.html +++ b/_modules/TermTk/TTkWidgets/about.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/button.html b/_modules/TermTk/TTkWidgets/button.html index d781d6a1..3d7403a6 100644 --- a/_modules/TermTk/TTkWidgets/button.html +++ b/_modules/TermTk/TTkWidgets/button.html @@ -14,6 +14,7 @@ + @@ -198,13 +199,42 @@ from TermTk.TTkWidgets.widget import *
[docs]class TTkButton(TTkWidget): + ''' TTkButton: + + Border = True + :: + + ┌────────┐ + │ Text │ + ╘════════╛ + + Border = False + :: + + [ Text ] + + The TTkWidget class is the base class of all user interface objects + + :param str text: the text shown on the button, defaults to "" + :type text: str, optional + :param bool border: the border of the button, defaults to "False" + :type text: str, optional + :param TTkColor color: the color of the border of the button, defaults to :class:`~TermTk.TTkGui.theme.TTkTheme.buttonTextColor` + :type color: :class:`~TermTk.TTkCore.color.TTkColor`, optional + :param TTkColor borderColor: the color of the border of the button, defaults to :class:`~TermTk.TTkGui.theme.TTkTheme.buttonBorderColor` + :type borderColor: :class:`~TermTk.TTkCore.color.TTkColor`, optional + + ''' + __slots__ = ( '_text', '_border', '_pressed', 'clicked', '_keyPressed', '_borderColor', '_textColor', '_borderColorClicked', '_textColorClicked', '_borderColorFocus', '_textColorFocus' + '_borderColorDisabled','_textColorDisabled' ) def __init__(self, *args, **kwargs): + TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkButton' ) # Define Signals @@ -218,6 +248,8 @@ self._textColorClicked = TTkCfg.theme.buttonTextColorClicked self._borderColorFocus = TTkCfg.theme.buttonBorderColorFocus self._textColorFocus = TTkCfg.theme.buttonTextColorFocus + self._borderColorDisabled= TTkCfg.theme.buttonBorderColorDisabled + self._textColorDisabled = TTkCfg.theme.buttonTextColorDisabled self._pressed = False self._keyPressed = False @@ -229,7 +261,12 @@ self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
[docs] def paintEvent(self): - if self._pressed: + if not self.isEnabled(): + borderColor = self._borderColorDisabled + textColor = self._textColorDisabled + grid = TTkCfg.theme.buttonBoxGridDisabled + + elif self._pressed: borderColor = self._borderColorClicked textColor = self._textColorClicked grid = TTkCfg.theme.buttonBoxGridClicked diff --git a/_modules/TermTk/TTkWidgets/checkbox.html b/_modules/TermTk/TTkWidgets/checkbox.html index cea82b1c..915bb880 100644 --- a/_modules/TermTk/TTkWidgets/checkbox.html +++ b/_modules/TermTk/TTkWidgets/checkbox.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/combobox.html b/_modules/TermTk/TTkWidgets/combobox.html index 41746816..2c056acb 100644 --- a/_modules/TermTk/TTkWidgets/combobox.html +++ b/_modules/TermTk/TTkWidgets/combobox.html @@ -14,6 +14,7 @@ + @@ -205,7 +206,7 @@ from TermTk.TTkWidgets.resizableframe import TTkResizableFrame
[docs]class TTkComboBox(TTkWidget): - __slots__ = ('_list', '_id', '_lineEdit', '_editable', '_insertPolicy' + __slots__ = ('_list', '_id', '_lineEdit', '_listw', '_editable', '_insertPolicy', '_textAlign' #signals 'currentIndexChanged', 'currentTextChanged', 'editTextChanged') def __init__(self, *args, **kwargs): @@ -220,7 +221,9 @@ self._list = kwargs.get('list', [] ) self._insertPolicy = kwargs.get('insertPolicy', TTkK.InsertAtBottom ) self._lineEdit.returnPressed.connect(self._lineEditChanged) + self._textAlign = kwargs.get('textAlign', TTkK.CENTER_ALIGN) self._id = -1 + self._popupFrame = None self.setEditable(kwargs.get('editable', False )) self.setMinimumSize(5, 1) self.setMaximumHeight(1) @@ -286,7 +289,7 @@ text = self._list[self._id] w = self.width() - self._canvas.drawText(pos=(1,0), text=text, width=w-2, alignment=TTkK.CENTER_ALIGN, color=color) + self._canvas.drawText(pos=(1,0), text=text, width=w-2, alignment=self._textAlign, color=color) self._canvas.drawText(pos=(0,0), text="[", color=borderColor) if self._editable: self._canvas.drawText(pos=(w-3,0), text="[^]", color=borderColor) @@ -305,7 +308,10 @@ def setCurrentIndex(self, index): if index > len(self._list)-1: return self._id = index - self._lineEdit.setText(self.currentText()) + if self._editable: + self._lineEdit.setText(self.currentText()) + else: + self.currentTextChanged.emit(self._list[self._id]) self.currentIndexChanged.emit(self._id) self.update() @@ -330,7 +336,9 @@ @pyTTkSlot(str) def _callback(self, label): self._lineEdit.setText(label) - self._id = self._list.index(label) + self.setCurrentIndex(self._list.index(label)) + TTkHelper.removeOverlayAndChild(self._popupFrame) + self._popupFrame = None self.setFocus() self.update() @@ -340,15 +348,15 @@ if frameHeight > 20: frameHeight = 20 if frameWidth < 20: frameWidth = 20 - frame = TTkResizableFrame(layout=TTkGridLayout(), size=(frameWidth,frameHeight)) - listw = TTkList(parent=frame) - listw.textClicked.connect(self._callback) + self._popupFrame = TTkResizableFrame(layout=TTkGridLayout(), size=(frameWidth,frameHeight)) + TTkHelper.overlay(self, self._popupFrame, 0, 0) + listw = TTkList(parent=self._popupFrame) TTkLog.debug(f"{self._list}") for item in self._list: listw.addItem(item) if self._id != -1: listw.setCurrentRow(self._id) - TTkHelper.overlay(self, frame, 0, 0) + listw.textClicked.connect(self._callback) listw.viewport().setFocus() self.update() return True diff --git a/_modules/TermTk/TTkWidgets/frame.html b/_modules/TermTk/TTkWidgets/frame.html index 8cba83a2..d38c7827 100644 --- a/_modules/TermTk/TTkWidgets/frame.html +++ b/_modules/TermTk/TTkWidgets/frame.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/graph.html b/_modules/TermTk/TTkWidgets/graph.html index d89bf64c..8077930f 100644 --- a/_modules/TermTk/TTkWidgets/graph.html +++ b/_modules/TermTk/TTkWidgets/graph.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/image.html b/_modules/TermTk/TTkWidgets/image.html index 4a9a3f35..1c6dca0e 100644 --- a/_modules/TermTk/TTkWidgets/image.html +++ b/_modules/TermTk/TTkWidgets/image.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/label.html b/_modules/TermTk/TTkWidgets/label.html index ed97d8ee..338e79a8 100644 --- a/_modules/TermTk/TTkWidgets/label.html +++ b/_modules/TermTk/TTkWidgets/label.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/lineedit.html b/_modules/TermTk/TTkWidgets/lineedit.html index 067a46ca..d166057e 100644 --- a/_modules/TermTk/TTkWidgets/lineedit.html +++ b/_modules/TermTk/TTkWidgets/lineedit.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/list_.html b/_modules/TermTk/TTkWidgets/list_.html index 9e73d85d..d8a0fd05 100644 --- a/_modules/TermTk/TTkWidgets/list_.html +++ b/_modules/TermTk/TTkWidgets/list_.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/listwidget.html b/_modules/TermTk/TTkWidgets/listwidget.html index 190ba613..9cbce879 100644 --- a/_modules/TermTk/TTkWidgets/listwidget.html +++ b/_modules/TermTk/TTkWidgets/listwidget.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/menubar.html b/_modules/TermTk/TTkWidgets/menubar.html index 845e058b..bb724150 100644 --- a/_modules/TermTk/TTkWidgets/menubar.html +++ b/_modules/TermTk/TTkWidgets/menubar.html @@ -14,6 +14,7 @@ + @@ -212,7 +213,7 @@ def keyEvent(self, evt): if evt.type == TTkK.SpecialKey: if evt.key == TTkK.Key_Left: - TTkHelper.removeSingleOverlay(self) + TTkHelper.removeOverlayAndChild(self) if self._previous: self._previous.setFocus() return True diff --git a/_modules/TermTk/TTkWidgets/radiobutton.html b/_modules/TermTk/TTkWidgets/radiobutton.html index 32d0aefb..ac66863e 100644 --- a/_modules/TermTk/TTkWidgets/radiobutton.html +++ b/_modules/TermTk/TTkWidgets/radiobutton.html @@ -14,6 +14,7 @@ + @@ -199,11 +200,12 @@
[docs]class TTkRadioButton(TTkWidget): _radioLists = {} - __slots__ = ('_checked') + __slots__ = ('_checked', 'clicked') def __init__(self, *args, **kwargs): + # Define Signals + self.clicked = pyTTkSignal() TTkWidget.__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkRadioButton' ) - # Define Signals # self.cehcked = pyTTkSignal() self._checked = kwargs.get('checked', False ) self.setMinimumSize(3, 1) @@ -236,6 +238,7 @@ radio._checked = False radio.update() self._checked = True + self.clicked.emit() self.update()
[docs] def mousePressEvent(self, evt): diff --git a/_modules/TermTk/TTkWidgets/resizableframe.html b/_modules/TermTk/TTkWidgets/resizableframe.html index a81376aa..f4609294 100644 --- a/_modules/TermTk/TTkWidgets/resizableframe.html +++ b/_modules/TermTk/TTkWidgets/resizableframe.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/scrollarea.html b/_modules/TermTk/TTkWidgets/scrollarea.html index 952d4119..00e1cf80 100644 --- a/_modules/TermTk/TTkWidgets/scrollarea.html +++ b/_modules/TermTk/TTkWidgets/scrollarea.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/scrollbar.html b/_modules/TermTk/TTkWidgets/scrollbar.html index 706ed867..031809c8 100644 --- a/_modules/TermTk/TTkWidgets/scrollbar.html +++ b/_modules/TermTk/TTkWidgets/scrollbar.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/spacer.html b/_modules/TermTk/TTkWidgets/spacer.html index 75f32101..365ebf9d 100644 --- a/_modules/TermTk/TTkWidgets/spacer.html +++ b/_modules/TermTk/TTkWidgets/spacer.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/spinbox.html b/_modules/TermTk/TTkWidgets/spinbox.html index 8c73b934..07103517 100644 --- a/_modules/TermTk/TTkWidgets/spinbox.html +++ b/_modules/TermTk/TTkWidgets/spinbox.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/splitter.html b/_modules/TermTk/TTkWidgets/splitter.html index 95b1db0d..51ee252a 100644 --- a/_modules/TermTk/TTkWidgets/splitter.html +++ b/_modules/TermTk/TTkWidgets/splitter.html @@ -14,6 +14,7 @@ + @@ -214,13 +215,16 @@ TTkFrame.__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkSpacer') self._orientation = kwargs.get('orientation', TTkK.HORIZONTAL) - self.setBorder(False) + self.setBorder(kwargs.get('border' , False)) self.setFocusPolicy(TTkK.ClickFocus) self._splitterInitialized = True
[docs] def addWidget(self, widget, size=None): TTkFrame.addWidget(self, widget) _,_,w,h = self.geometry() + if self.border(): + w-=2 + h-=2 numW = self.layout().count() if self._orientation == TTkK.HORIZONTAL: @@ -232,7 +236,20 @@ self._separators = [fullSize*i//numW for i in range(1,numW+1)] self._updateGeometries() self._separatorsRef = self._separators - self._sizeRef = fullSize
+ self._sizeRef = fullSize + if self.parentWidget(): + self.parentWidget().update(repaint=True, updateLayout=True)
+ + def setSizes(self, sizes): + s = 0 + sizes=sizes[:len(self._separators)] + for i, l in enumerate(sizes): + s += l + self._separators[i] = s + self._separatorsRef[i] = s + self._initSizes[i] = l + self._updateGeometries() + def _minMaxSizeBefore(self, index): if self._separatorSelected is None: @@ -261,7 +278,9 @@ if not self.isVisible(): return _,_,w,h = self.geometry() sep = self._separators - x,y=0,0 + if self.border(): + w-=2 + h-=2 def _processGeometry(index, forward): item = self.layout().itemAt(i) @@ -353,17 +372,21 @@ self._updateGeometries(resized=True)
[docs] def paintEvent(self): + off = 1 if self.border() else 0 + TTkFrame.paintEvent(self) w,h = self.size() if self._orientation == TTkK.HORIZONTAL: - for i in self._separators: - self._canvas.drawVLine(pos=(i,0), size=h) + for i in self._separators[:-1]: + self._canvas.drawVLine(pos=(i+off,0), size=h) else: - for i in self._separators: - self._canvas.drawHLine(pos=(0,i), size=w)
+ for i in self._separators[:-1]: + self._canvas.drawHLine(pos=(0,i+off), size=w)
[docs] def mousePressEvent(self, evt): self._separatorSelected = None x,y = evt.x, evt.y + if self.border(): + x-=1 ; y-=1 # TTkLog.debug(f"{self._separators} {evt}") for i, val in enumerate(self._separators): if self._orientation == TTkK.HORIZONTAL: @@ -380,10 +403,13 @@
[docs] def mouseDragEvent(self, evt): if self._separatorSelected is not None: + x,y = evt.x, evt.y + if self.border(): + x-=1 ; y-=1 if self._orientation == TTkK.HORIZONTAL: - self._separators[self._separatorSelected] = evt.x + self._separators[self._separatorSelected] = x else: - self._separators[self._separatorSelected] = evt.y + self._separators[self._separatorSelected] = y self._updateGeometries() self.update() return True @@ -393,8 +419,8 @@ self._separatorSelected = None def minimumHeight(self) -> int: - if not self._splitterInitialized: return 0 - ret = 0 + ret = 2 if self.border() else 0 + if not self._splitterInitialized: return ret if self._orientation == TTkK.VERTICAL: for item in self.layout().children(): ret+=item.minimumHeight()+1 @@ -406,8 +432,8 @@ return ret def minimumWidth(self) -> int: - if not self._splitterInitialized: return 0 - ret = 0 + ret = 2 if self.border() else 0 + if not self._splitterInitialized: return ret if self._orientation == TTkK.HORIZONTAL: for item in self.layout().children(): ret+=item.minimumWidth()+1 @@ -419,12 +445,13 @@ return ret def maximumHeight(self) -> int: + b = 2 if self.border() else 0 if not self._splitterInitialized: return 0x10000 if self._orientation == TTkK.VERTICAL: - ret = 0 + ret = b for item in self.layout().children(): ret+=item.maximumHeight()+1 - ret = max(0,ret-1) + ret = max(b,ret-1) else: ret = 0x10000 for item in self.layout().children(): @@ -433,12 +460,13 @@ return ret def maximumWidth(self) -> int: + b = 2 if self.border() else 0 if not self._splitterInitialized: return 0x10000 if self._orientation == TTkK.HORIZONTAL: - ret = 0 + ret = b for item in self.layout().children(): ret+=item.maximumHeight()+1 - ret = max(0,ret-1) + ret = max(b,ret-1) else: ret = 0x10000 for item in self.layout().children(): diff --git a/_modules/TermTk/TTkWidgets/tabwidget.html b/_modules/TermTk/TTkWidgets/tabwidget.html index 2137cd2a..269f232d 100644 --- a/_modules/TermTk/TTkWidgets/tabwidget.html +++ b/_modules/TermTk/TTkWidgets/tabwidget.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/texedit.html b/_modules/TermTk/TTkWidgets/texedit.html index 53d82168..dc02ee83 100644 --- a/_modules/TermTk/TTkWidgets/texedit.html +++ b/_modules/TermTk/TTkWidgets/texedit.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/TTkWidgets/tree.html b/_modules/TermTk/TTkWidgets/tree.html index c593ec2c..382c8757 100644 --- a/_modules/TermTk/TTkWidgets/tree.html +++ b/_modules/TermTk/TTkWidgets/tree.html @@ -14,6 +14,7 @@ + @@ -198,9 +199,11 @@
[docs]class TTkTree(TTkAbstractScrollArea): __slots__ = ( - '_treeView', 'activated', + '_treeView', + # Forwarded Signals + 'itemActivated', 'itemChanged', 'itemClicked', 'itemExpanded', 'itemCollapsed', 'itemDoubleClicked', # Forwarded Methods - 'setAlignment', 'setHeader', 'setHeaderLabels', 'setColumnSize', 'setColumnColors', 'appendItem', 'addTopLevelItem' ) + 'setAlignment', 'setHeader', 'setHeaderLabels', 'setColumnSize', 'setColumnColors', 'appendItem', 'addTopLevelItem', 'clear' ) def __init__(self, *args, **kwargs): TTkAbstractScrollArea.__init__(self, *args, **kwargs) @@ -208,7 +211,12 @@ if 'parent' in kwargs: kwargs.pop('parent') self._treeView = TTkTreeWidget(*args, **kwargs) # Forward the signal - # self.activated = self._treeView.activated + self.itemActivated = self._treeView.itemActivated + self.itemChanged = self._treeView.itemChanged + self.itemClicked = self._treeView.itemClicked + self.itemExpanded = self._treeView.itemExpanded + self.itemCollapsed = self._treeView.itemCollapsed + self.itemDoubleClicked = self._treeView.itemDoubleClicked self.setFocusPolicy(TTkK.ClickFocus) self.setViewport(self._treeView) @@ -220,7 +228,8 @@ #self.setColumnSize = self._treeView.setColumnSize #self.setColumnColors = self._treeView.setColumnColors #self.appendItem = self._treeView.appendItem - self.addTopLevelItem = self._treeView.addTopLevelItem
+ self.addTopLevelItem = self._treeView.addTopLevelItem + self.clear = self._treeView.clear
diff --git a/_modules/TermTk/TTkWidgets/treewidget.html b/_modules/TermTk/TTkWidgets/treewidget.html index 9eb1e24a..996ad836 100644 --- a/_modules/TermTk/TTkWidgets/treewidget.html +++ b/_modules/TermTk/TTkWidgets/treewidget.html @@ -14,6 +14,7 @@ + @@ -197,14 +198,17 @@ from TermTk.TTkCore.log import TTkLog from TermTk.TTkWidgets.treewidgetitem import TTkTreeWidgetItem from TermTk.TTkAbstract.abstractscrollarea import TTkAbstractScrollView -from TermTk.TTkCore.signal import pyTTkSlot +from TermTk.TTkCore.signal import pyTTkSignal, pyTTkSlot from dataclasses import dataclass
[docs]class TTkTreeWidget(TTkAbstractScrollView): __slots__ = ( '_items', '_header', '_columnsPos', '_cache', '_selectedId', '_selected', '_separatorSelected', '_mouseDelta', - '_headerColor', '_selectedColor') + '_headerColor', '_selectedColor', '_lineColor', + # Signals + 'itemChanged', 'itemClicked', 'itemDoubleClicked', 'itemExpanded', 'itemCollapsed', 'itemActivated' + ) @dataclass(frozen=True) class _Cache: item: TTkTreeWidgetItem @@ -212,6 +216,14 @@ data: list def __init__(self, *args, **kwargs): + # Signals + self.itemActivated = pyTTkSignal(TTkTreeWidgetItem, int) + self.itemChanged = pyTTkSignal(TTkTreeWidgetItem, int) + self.itemClicked = pyTTkSignal(TTkTreeWidgetItem, int) + self.itemDoubleClicked = pyTTkSignal(TTkTreeWidgetItem, int) + self.itemExpanded = pyTTkSignal(TTkTreeWidgetItem) + self.itemCollapsed = pyTTkSignal(TTkTreeWidgetItem) + super().__init__(self, *args, **kwargs) self._name = kwargs.get('name' , 'TTkTreeView' ) self._selected = None @@ -221,14 +233,15 @@ self._header = kwargs.get('header',[]) self._columnsPos = [] self._cache = [] - self._headerColor = kwargs.get('headerColor',TTkCfg.theme.treeHeaderColor) - self._selectedColor = kwargs.get('selectedColor',TTkCfg.theme.treeSelectedColor) + self._headerColor = kwargs.get('headerColor', TTkCfg.theme.treeHeaderColor) + self._selectedColor = kwargs.get('selectedColor', TTkCfg.theme.treeSelectedColor) + self._lineColor = kwargs.get('lineColor', TTkCfg.theme.treeLineColor) self.setMinimumHeight(1) self.setFocusPolicy(TTkK.ClickFocus) # Overridden function def viewFullAreaSize(self) -> (int, int): - w = self._columnsPos[-1] if self._columnsPos else 0 + w = self._columnsPos[-1]+1 if self._columnsPos else 0 h = 1+sum([c.size() for c in self._items]) # TTkLog.debug(f"{w=} {h=}") return w,h @@ -238,6 +251,14 @@ # TTkLog.debug(f"{self.size()=}") return self.size() + def clear(self): + for item in self._items: + item.dataChanged.disconnect(self._refreshCache) + self._items = [] + self._refreshCache() + self.viewChanged.emit() + self.update() + def addTopLevelItem(self, item): item.dataChanged.connect(self._refreshCache) self._items.append(item) @@ -253,17 +274,31 @@ self.update()
[docs] def mouseDoubleClickEvent(self, evt): - _,y = evt.x, evt.y - _, oy = self.getViewOffsets() - y -= 1-oy + x,y = evt.x, evt.y + ox, oy = self.getViewOffsets() + y += oy-1 + x += ox if 0 <= y < len(self._cache): item = self._cache[y].item - item.setExpanded(not item.isExpanded()) + if item.childIndicatorPolicy() == TTkK.DontShowIndicatorWhenChildless and item.children() or \ + item.childIndicatorPolicy() == TTkK.ShowIndicator: + item.setExpanded(not item.isExpanded()) + if item.isExpanded(): + self.itemExpanded.emit(item) + else: + self.itemCollapsed.emit(item) if self._selected: self._selected.setSelected(False) self._selectedId = y self._selected = item self._selected.setSelected(True) + col = -1 + for i, c in enumerate(self._columnsPos): + if x < c: + col = i + break + self.itemDoubleClicked.emit(item, col) + self.itemActivated.emit(item, col) self.update() return True
@@ -292,14 +327,26 @@ if 0 <= y < len(self._cache): item = self._cache[y].item level = self._cache[y].level - if level*2 <= x < level*2+3: + if level*2 <= x < level*2+3 and \ + ( item.childIndicatorPolicy() == TTkK.DontShowIndicatorWhenChildless and item.children() or \ + item.childIndicatorPolicy() == TTkK.ShowIndicator ): item.setExpanded(not item.isExpanded()) + if item.isExpanded(): + self.itemExpanded.emit(item) + else: + self.itemCollapsed.emit(item) else: if self._selected: self._selected.setSelected(False) self._selectedId = y self._selected = item self._selected.setSelected(True) + col = -1 + for i, c in enumerate(self._columnsPos): + if x < c: + col = i + break + self.itemClicked.emit(item, col) self.update() return True
@@ -323,13 +370,13 @@ x += ox ss = self._separatorSelected pos = max((ss+1)*4, x) - self._columnsPos[ss] = pos + diff = pos - self._columnsPos[ss] # Align the previous Separators if pushed for i in range(ss): self._columnsPos[i] = min(self._columnsPos[i], pos-(ss-i)*4) - # Align the next Separators if pushed + # Align all the other Separators relative to the selection for i in range(ss, len(self._columnsPos)): - self._columnsPos[i] = max(self._columnsPos[i], pos+(i-ss)*4) + self._columnsPos[i] += diff self.update() self.viewChanged.emit() return True @@ -346,16 +393,16 @@ ''' self._cache = [] def _addToCache(_child, _level): - tt = TTkCfg.theme.tree _data = [] for _il in range(len(self._header)): - _data.append(_child.data(_il)) - if not _child.children(): - _data[0] = f"{' '*_level} {tt[0]} {_data[0]}" - elif _child.isExpanded(): - _data[0] = f"{' '*_level} {tt[2]} {_data[0]}" - else: - _data[0] = f"{' '*_level} {tt[1]} {_data[0]}" + _icon = _child.icon(_il) + if _icon: + _icon = ' '+_icon+' ' + if _il==0: + _data.append(' '*_level+_icon+_child.data(_il)) + else: + _data.append(_icon+_child.data(_il)) + self._cache.append(TTkTreeWidget._Cache( item = _child, level = _level, @@ -382,18 +429,20 @@ for sx in self._columnsPos: self._canvas.drawChar(pos=(sx-x,0), char=tt[5], color=self._headerColor) for sy in range(1,h): - self._canvas.drawChar(pos=(sx-x,sy), char=tt[4]) + self._canvas.drawChar(pos=(sx-x,sy), char=tt[4], color=self._lineColor) # Draw cache for i, c in enumerate(self._cache): if i-y<0 : continue item = c.item level = c.level - color = self._selectedColor if item.isSelected() else TTkColor.RST for il in range(len(self._header)): lx = 0 if il==0 else self._columnsPos[il-1]+1 lx1 = self._columnsPos[il] - self._canvas.drawText(pos=(lx-x,i-y+1), text=c.data[il], width=lx1-lx, color=color)
+ if item.isSelected(): + self._canvas.drawText(pos=(lx-x,i-y+1), text=c.data[il], width=lx1-lx, alignment=item.textAlignment(il), color=self._selectedColor, forceColor=True) + else: + self._canvas.drawText(pos=(lx-x,i-y+1), text=c.data[il], width=lx1-lx, alignment=item.textAlignment(il))
diff --git a/_modules/TermTk/TTkWidgets/widget.html b/_modules/TermTk/TTkWidgets/widget.html index 767a28f0..f5625fa7 100644 --- a/_modules/TermTk/TTkWidgets/widget.html +++ b/_modules/TermTk/TTkWidgets/widget.html @@ -14,6 +14,7 @@ + @@ -251,6 +252,7 @@ :param [int,int] minSize: the minSize [width,height] of the widget, optional :param bool,optional visible: the visibility, optional, defaults to True + :param bool,optional enabled: the ability to handle input events, optional, defaults to True :param layout: the layout of this widget, optional, defaults to :class:`~TermTk.TTkLayouts.layout.TTkLayout` :type layout: :mod:`TermTk.TTkLayouts` ''' @@ -263,6 +265,7 @@ '_layout', '_canvas', '_widgetItem', '_visible', '_transparent', '_pendingMouseRelease', + '_enabled', #Signals 'focusChanged') @@ -296,6 +299,7 @@ self._minw, self._minh = kwargs.get('minSize', (self._minw, self._minh)) self._visible = kwargs.get('visible', True) + self._enabled = kwargs.get('enabled', True) self._focus = False self._focus_policy = TTkK.NoFocus @@ -495,6 +499,8 @@
[docs] def mouseEvent(self, evt): ''' .. caution:: Don't touch this! ''' + if not self._enabled: return True + # Mouse Drag has priority because it # should be handled by the focussed widget if evt.evt == TTkK.Drag: @@ -666,11 +672,12 @@ self._parent.lowerWidget() self._parent.rootLayout().lowerWidget(self) + @pyTTkSlot() def close(self): if self._parent is not None and \ self._parent.rootLayout() is not None: self._parent.rootLayout().removeWidget(self) - TTkHelper.removeSingleOverlay(self) + TTkHelper.removeOverlayAndChild(self) def isVisible(self): @@ -699,6 +706,7 @@ if self.rootLayout().update(): self.layoutUpdated() + @pyTTkSlot() def setFocus(self): # TTkLog.debug(f"setFocus: {self._name} - {self._focus}") if self._focus: return @@ -706,8 +714,9 @@ if tmp == self: return if tmp is not None: tmp.clearFocus() - if not TTkHelper.isOverlay(self): - TTkHelper.removeOverlay(refocus=False) + #if not TTkHelper.isOverlay(self): + # TTkHelper.removeOverlay(refocus=False) + TTkHelper.removeOverlayChild(self) TTkHelper.setFocus(self) self._focus = True self.focusChanged.emit(self._focus) @@ -735,7 +744,20 @@ self._focus_policy = policy def focusInEvent(self): pass - def focusOutEvent(self): pass
+ def focusOutEvent(self): pass + + def isEnabled(self): + return self._enabled + + @pyTTkSlot(bool) + def setEnabled(self, enabled=True): + if self._enabled == enabled: return + self._enabled = enabled + self.update() + + @pyTTkSlot(bool) + def setDisabled(self, disabled=True): + self.setEnabled(not disabled) diff --git a/_modules/TermTk/TTkWidgets/window.html b/_modules/TermTk/TTkWidgets/window.html index 8d789567..5e2e3dba 100644 --- a/_modules/TermTk/TTkWidgets/window.html +++ b/_modules/TermTk/TTkWidgets/window.html @@ -14,6 +14,7 @@ + diff --git a/_modules/TermTk/libbpytop/term.html b/_modules/TermTk/libbpytop/term.html index d739e69c..2cbbe2b8 100644 --- a/_modules/TermTk/libbpytop/term.html +++ b/_modules/TermTk/libbpytop/term.html @@ -14,6 +14,7 @@ + diff --git a/_modules/index.html b/_modules/index.html index 57f699d5..e1377e36 100644 --- a/_modules/index.html +++ b/_modules/index.html @@ -14,6 +14,7 @@ + @@ -168,10 +169,12 @@ + + +

I

+ +
@@ -291,10 +371,22 @@
@@ -307,6 +399,16 @@
  • maximumHeight() (TTkGridLayout method)
  • maximumWidth() (TTkGridLayout method) +
  • +
  • menuButtonBorderColor (TTkTheme attribute) +
  • +
  • menuButtonBorderColorClicked (TTkTheme attribute) +
  • +
  • menuButtonColor (TTkTheme attribute) +
  • +
  • menuButtonColorClicked (TTkTheme attribute) +
  • +
  • menuButtonShortcutColor (TTkTheme attribute)
  • minimumHeight() (TTkGridLayout method)
  • @@ -363,6 +465,16 @@
  • TermTk.TTkCore.ttk
  • TermTk.TTkGui +
  • +
  • TermTk.TTkGui.draw_ascii +
  • +
  • TermTk.TTkGui.draw_utf8 +
  • +
  • TermTk.TTkGui.fileicon_ascii +
  • +
  • TermTk.TTkGui.fileicon_nerd +
  • +
  • TermTk.TTkGui.fileicon_utf8
  • TermTk.TTkGui.theme
  • @@ -623,6 +735,14 @@

    R

    - +
    @@ -673,7 +797,23 @@

    T

    + -
    +
    • TermTk.TTkWidgets.Fancy.treeview @@ -1048,8 +1225,6 @@
    • module
    -
    • TermTk.TTkWidgets.filetree @@ -1239,6 +1414,12 @@
    • module
    +
  • treeHeaderColor (TTkTheme attribute) +
  • +
  • treeLineColor (TTkTheme attribute) +
  • +
  • treeSelectedColor (TTkTheme attribute) +
  • TTk (class in TermTk.TTkCore.ttk)
  • TTkAbout (class in TermTk.TTkWidgets.about) @@ -1254,6 +1435,8 @@
  • TTkCanvas (class in TermTk.TTkCore.canvas)
  • TTkCheckbox (class in TermTk.TTkWidgets.checkbox) +
  • +
  • TTkColor (class in TermTk.TTkCore.color)
  • TTkColorButtonPicker (class in TermTk.TTkWidgets.TTkPickers.colorpicker)
  • @@ -1331,8 +1514,12 @@
  • TTkTextEdit (class in TermTk.TTkWidgets.texedit)
  • -
  • TTkTheme (class in TermTk.TTkGui.theme) +
  • TTkTheme (class in TermTk.TTkGui.draw_utf8) + +
  • TTkTimer (class in TermTk.TTkCore.timer)
  • TTkTree (class in TermTk.TTkWidgets.tree) @@ -1350,6 +1537,14 @@
  • +

    U

    + + +
    +

    W

      @@ -1362,6 +1557,10 @@
    diff --git a/index.html b/index.html index b3866691..c608ccb1 100644 --- a/index.html +++ b/index.html @@ -15,6 +15,7 @@ + diff --git a/objects.inv b/objects.inv index 07f21d020d70f87f990c3cc0427399889f1198ca..45ddd265ada1e7862056e155872f50bc267deba7 100644 GIT binary patch delta 6259 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 delta 5649 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 diff --git a/py-modindex.html b/py-modindex.html index fe5d63d5..0bab1422 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -14,6 +14,7 @@ + @@ -299,6 +300,31 @@     TermTk.TTkGui + + +     + TermTk.TTkGui.draw_ascii + + + +     + TermTk.TTkGui.draw_utf8 + + + +     + TermTk.TTkGui.fileicon_ascii + + + +     + TermTk.TTkGui.fileicon_nerd + + + +     + TermTk.TTkGui.fileicon_utf8 +     diff --git a/search.html b/search.html index deedc152..72914b4b 100644 --- a/search.html +++ b/search.html @@ -14,6 +14,7 @@ + diff --git a/searchindex.js b/searchindex.js index ca8ebd60..193f9420 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["autogen.TermTk/TermTk","autogen.TermTk/TermTk.TTkAbstract","autogen.TermTk/TermTk.TTkAbstract.abstractitemmodel","autogen.TermTk/TermTk.TTkAbstract.abstractscrollarea","autogen.TermTk/TermTk.TTkAbstract.abstractscrollview","autogen.TermTk/TermTk.TTkCore","autogen.TermTk/TermTk.TTkCore.canvas","autogen.TermTk/TermTk.TTkCore.cfg","autogen.TermTk/TermTk.TTkCore.color","autogen.TermTk/TermTk.TTkCore.constant","autogen.TermTk/TermTk.TTkCore.draw","autogen.TermTk/TermTk.TTkCore.filebuffer","autogen.TermTk/TermTk.TTkCore.helper","autogen.TermTk/TermTk.TTkCore.log","autogen.TermTk/TermTk.TTkCore.signal","autogen.TermTk/TermTk.TTkCore.string","autogen.TermTk/TermTk.TTkCore.timer","autogen.TermTk/TermTk.TTkCore.ttk","autogen.TermTk/TermTk.TTkGui","autogen.TermTk/TermTk.TTkGui.theme","autogen.TermTk/TermTk.TTkLayouts","autogen.TermTk/TermTk.TTkLayouts.boxlayout","autogen.TermTk/TermTk.TTkLayouts.gridlayout","autogen.TermTk/TermTk.TTkLayouts.layout","autogen.TermTk/TermTk.TTkTemplates","autogen.TermTk/TermTk.TTkTemplates.color","autogen.TermTk/TermTk.TTkTemplates.data","autogen.TermTk/TermTk.TTkTemplates.keyevents","autogen.TermTk/TermTk.TTkTemplates.mouseevents","autogen.TermTk/TermTk.TTkTemplates.text","autogen.TermTk/TermTk.TTkTestWidgets","autogen.TermTk/TermTk.TTkTestWidgets.logviewer","autogen.TermTk/TermTk.TTkTestWidgets.testwidget","autogen.TermTk/TermTk.TTkTestWidgets.testwidgetsizes","autogen.TermTk/TermTk.TTkTypes","autogen.TermTk/TermTk.TTkTypes.viewitem","autogen.TermTk/TermTk.TTkWidgets","autogen.TermTk/TermTk.TTkWidgets.Fancy","autogen.TermTk/TermTk.TTkWidgets.Fancy.table","autogen.TermTk/TermTk.TTkWidgets.Fancy.tableview","autogen.TermTk/TermTk.TTkWidgets.Fancy.tree","autogen.TermTk/TermTk.TTkWidgets.Fancy.treeview","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidget","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidgetitem","autogen.TermTk/TermTk.TTkWidgets.TTkPickers","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.colorpicker","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.dateTimePicker","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.filepicker","autogen.TermTk/TermTk.TTkWidgets.about","autogen.TermTk/TermTk.TTkWidgets.button","autogen.TermTk/TermTk.TTkWidgets.checkbox","autogen.TermTk/TermTk.TTkWidgets.combobox","autogen.TermTk/TermTk.TTkWidgets.filetree","autogen.TermTk/TermTk.TTkWidgets.frame","autogen.TermTk/TermTk.TTkWidgets.graph","autogen.TermTk/TermTk.TTkWidgets.image","autogen.TermTk/TermTk.TTkWidgets.label","autogen.TermTk/TermTk.TTkWidgets.lineedit","autogen.TermTk/TermTk.TTkWidgets.list_","autogen.TermTk/TermTk.TTkWidgets.listwidget","autogen.TermTk/TermTk.TTkWidgets.menubar","autogen.TermTk/TermTk.TTkWidgets.radiobutton","autogen.TermTk/TermTk.TTkWidgets.resizableframe","autogen.TermTk/TermTk.TTkWidgets.scrollarea","autogen.TermTk/TermTk.TTkWidgets.scrollbar","autogen.TermTk/TermTk.TTkWidgets.spacer","autogen.TermTk/TermTk.TTkWidgets.spinbox","autogen.TermTk/TermTk.TTkWidgets.splitter","autogen.TermTk/TermTk.TTkWidgets.tabwidget","autogen.TermTk/TermTk.TTkWidgets.texedit","autogen.TermTk/TermTk.TTkWidgets.tree","autogen.TermTk/TermTk.TTkWidgets.treewidget","autogen.TermTk/TermTk.TTkWidgets.treewidgetitem","autogen.TermTk/TermTk.TTkWidgets.widget","autogen.TermTk/TermTk.TTkWidgets.window","autogen.TermTk/TermTk.libbpytop","autogen.TermTk/TermTk.libbpytop.colors","autogen.TermTk/TermTk.libbpytop.input","autogen.TermTk/TermTk.libbpytop.inputkey","autogen.TermTk/TermTk.libbpytop.term","index","tutorial/001-helloworld","tutorial/002-layout","tutorial/003-signalslots","tutorial/004-logging"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["autogen.TermTk/TermTk.rst","autogen.TermTk/TermTk.TTkAbstract.rst","autogen.TermTk/TermTk.TTkAbstract.abstractitemmodel.rst","autogen.TermTk/TermTk.TTkAbstract.abstractscrollarea.rst","autogen.TermTk/TermTk.TTkAbstract.abstractscrollview.rst","autogen.TermTk/TermTk.TTkCore.rst","autogen.TermTk/TermTk.TTkCore.canvas.rst","autogen.TermTk/TermTk.TTkCore.cfg.rst","autogen.TermTk/TermTk.TTkCore.color.rst","autogen.TermTk/TermTk.TTkCore.constant.rst","autogen.TermTk/TermTk.TTkCore.draw.rst","autogen.TermTk/TermTk.TTkCore.filebuffer.rst","autogen.TermTk/TermTk.TTkCore.helper.rst","autogen.TermTk/TermTk.TTkCore.log.rst","autogen.TermTk/TermTk.TTkCore.signal.rst","autogen.TermTk/TermTk.TTkCore.string.rst","autogen.TermTk/TermTk.TTkCore.timer.rst","autogen.TermTk/TermTk.TTkCore.ttk.rst","autogen.TermTk/TermTk.TTkGui.rst","autogen.TermTk/TermTk.TTkGui.theme.rst","autogen.TermTk/TermTk.TTkLayouts.rst","autogen.TermTk/TermTk.TTkLayouts.boxlayout.rst","autogen.TermTk/TermTk.TTkLayouts.gridlayout.rst","autogen.TermTk/TermTk.TTkLayouts.layout.rst","autogen.TermTk/TermTk.TTkTemplates.rst","autogen.TermTk/TermTk.TTkTemplates.color.rst","autogen.TermTk/TermTk.TTkTemplates.data.rst","autogen.TermTk/TermTk.TTkTemplates.keyevents.rst","autogen.TermTk/TermTk.TTkTemplates.mouseevents.rst","autogen.TermTk/TermTk.TTkTemplates.text.rst","autogen.TermTk/TermTk.TTkTestWidgets.rst","autogen.TermTk/TermTk.TTkTestWidgets.logviewer.rst","autogen.TermTk/TermTk.TTkTestWidgets.testwidget.rst","autogen.TermTk/TermTk.TTkTestWidgets.testwidgetsizes.rst","autogen.TermTk/TermTk.TTkTypes.rst","autogen.TermTk/TermTk.TTkTypes.viewitem.rst","autogen.TermTk/TermTk.TTkWidgets.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.table.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.tableview.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.tree.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.treeview.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidget.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidgetitem.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.colorpicker.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.dateTimePicker.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.filepicker.rst","autogen.TermTk/TermTk.TTkWidgets.about.rst","autogen.TermTk/TermTk.TTkWidgets.button.rst","autogen.TermTk/TermTk.TTkWidgets.checkbox.rst","autogen.TermTk/TermTk.TTkWidgets.combobox.rst","autogen.TermTk/TermTk.TTkWidgets.filetree.rst","autogen.TermTk/TermTk.TTkWidgets.frame.rst","autogen.TermTk/TermTk.TTkWidgets.graph.rst","autogen.TermTk/TermTk.TTkWidgets.image.rst","autogen.TermTk/TermTk.TTkWidgets.label.rst","autogen.TermTk/TermTk.TTkWidgets.lineedit.rst","autogen.TermTk/TermTk.TTkWidgets.list_.rst","autogen.TermTk/TermTk.TTkWidgets.listwidget.rst","autogen.TermTk/TermTk.TTkWidgets.menubar.rst","autogen.TermTk/TermTk.TTkWidgets.radiobutton.rst","autogen.TermTk/TermTk.TTkWidgets.resizableframe.rst","autogen.TermTk/TermTk.TTkWidgets.scrollarea.rst","autogen.TermTk/TermTk.TTkWidgets.scrollbar.rst","autogen.TermTk/TermTk.TTkWidgets.spacer.rst","autogen.TermTk/TermTk.TTkWidgets.spinbox.rst","autogen.TermTk/TermTk.TTkWidgets.splitter.rst","autogen.TermTk/TermTk.TTkWidgets.tabwidget.rst","autogen.TermTk/TermTk.TTkWidgets.texedit.rst","autogen.TermTk/TermTk.TTkWidgets.tree.rst","autogen.TermTk/TermTk.TTkWidgets.treewidget.rst","autogen.TermTk/TermTk.TTkWidgets.treewidgetitem.rst","autogen.TermTk/TermTk.TTkWidgets.widget.rst","autogen.TermTk/TermTk.TTkWidgets.window.rst","autogen.TermTk/TermTk.libbpytop.rst","autogen.TermTk/TermTk.libbpytop.colors.rst","autogen.TermTk/TermTk.libbpytop.input.rst","autogen.TermTk/TermTk.libbpytop.inputkey.rst","autogen.TermTk/TermTk.libbpytop.term.rst","index.rst","tutorial/001-helloworld.rst","tutorial/002-layout.rst","tutorial/003-signalslots.rst","tutorial/004-logging.rst"],objects:{"":{TermTk:[0,0,0,"-"]},"TermTk.TTkAbstract":{abstractitemmodel:[2,0,0,"-"],abstractscrollarea:[3,0,0,"-"],abstractscrollview:[4,0,0,"-"]},"TermTk.TTkAbstract.abstractscrollarea":{TTkAbstractScrollArea:[3,1,1,""]},"TermTk.TTkAbstract.abstractscrollview":{TTkAbstractScrollView:[4,1,1,""]},"TermTk.TTkAbstract.abstractscrollview.TTkAbstractScrollView":{resizeEvent:[4,2,1,""],wheelEvent:[4,2,1,""]},"TermTk.TTkCore":{canvas:[6,0,0,"-"],cfg:[7,0,0,"-"],color:[8,0,0,"-"],constant:[9,0,0,"-"],draw:[10,0,0,"-"],filebuffer:[11,0,0,"-"],helper:[12,0,0,"-"],log:[13,0,0,"-"],signal:[14,0,0,"-"],string:[15,0,0,"-"],timer:[16,0,0,"-"],ttk:[17,0,0,"-"]},"TermTk.TTkCore.canvas":{TTkCanvas:[6,1,1,""]},"TermTk.TTkCore.canvas.TTkCanvas":{drawText:[6,2,1,""],resize:[6,2,1,""]},"TermTk.TTkCore.constant":{TTkConstant:[9,1,1,""],TTkK:[9,1,1,""]},"TermTk.TTkCore.constant.TTkConstant":{Alignment:[9,1,1,""],LayoutItemTypes:[9,1,1,""]},"TermTk.TTkCore.constant.TTkConstant.Alignment":{CENTER_ALIGN:[9,3,1,""],JUSTIFY:[9,3,1,""],LEFT_ALIGN:[9,3,1,""],NONE:[9,3,1,""],RIGHT_ALIGN:[9,3,1,""]},"TermTk.TTkCore.constant.TTkConstant.LayoutItemTypes":{LayoutItem:[9,3,1,""],WidgetItem:[9,3,1,""]},"TermTk.TTkCore.timer":{TTkTimer:[16,1,1,""]},"TermTk.TTkCore.timer.TTkTimer":{run:[16,2,1,""],start:[16,2,1,""]},"TermTk.TTkCore.ttk":{TTk:[17,1,1,""]},"TermTk.TTkCore.ttk.TTk":{mainloop:[17,2,1,""],quit:[17,2,1,""]},"TermTk.TTkGui":{theme:[19,0,0,"-"]},"TermTk.TTkGui.theme":{TTkTheme:[19,1,1,""]},"TermTk.TTkGui.theme.TTkTheme":{buttonBox:[19,3,1,""],grid:[19,3,1,""],tab:[19,3,1,""]},"TermTk.TTkLayouts":{boxlayout:[21,0,0,"-"],gridlayout:[22,0,0,"-"],layout:[23,0,0,"-"]},"TermTk.TTkLayouts.boxlayout":{TTkHBoxLayout:[21,1,1,""],TTkVBoxLayout:[21,1,1,""]},"TermTk.TTkLayouts.boxlayout.TTkVBoxLayout":{addItem:[21,2,1,""],addWidget:[21,2,1,""]},"TermTk.TTkLayouts.gridlayout":{TTkGridLayout:[22,1,1,""]},"TermTk.TTkLayouts.gridlayout.TTkGridLayout":{addItem:[22,2,1,""],addWidget:[22,2,1,""],maximumHeight:[22,2,1,""],maximumWidth:[22,2,1,""],minimumHeight:[22,2,1,""],minimumWidth:[22,2,1,""]},"TermTk.TTkLayouts.layout":{TTkLayout:[23,1,1,""],TTkLayoutItem:[23,1,1,""],TTkWidgetItem:[23,1,1,""]},"TermTk.TTkTemplates":{color:[25,0,0,"-"],data:[26,0,0,"-"],keyevents:[27,0,0,"-"],mouseevents:[28,0,0,"-"],text:[29,0,0,"-"]},"TermTk.TTkTestWidgets":{logviewer:[31,0,0,"-"],testwidget:[32,0,0,"-"],testwidgetsizes:[33,0,0,"-"]},"TermTk.TTkTestWidgets.logviewer":{TTkLogViewer:[31,1,1,""]},"TermTk.TTkTestWidgets.testwidget":{TTkTestWidget:[32,1,1,""]},"TermTk.TTkTestWidgets.testwidget.TTkTestWidget":{mouseDragEvent:[32,2,1,""],mousePressEvent:[32,2,1,""],paintEvent:[32,2,1,""]},"TermTk.TTkTestWidgets.testwidgetsizes":{TTkTestWidgetSizes:[33,1,1,""]},"TermTk.TTkTestWidgets.testwidgetsizes.TTkTestWidgetSizes":{mousePressEvent:[33,2,1,""],mouseReleaseEvent:[33,2,1,""],paintEvent:[33,2,1,""]},"TermTk.TTkTypes":{viewitem:[35,0,0,"-"]},"TermTk.TTkWidgets":{Fancy:[37,0,0,"-"],TTkPickers:[44,0,0,"-"],about:[48,0,0,"-"],button:[49,0,0,"-"],checkbox:[50,0,0,"-"],combobox:[51,0,0,"-"],filetree:[52,0,0,"-"],frame:[53,0,0,"-"],graph:[54,0,0,"-"],image:[55,0,0,"-"],label:[56,0,0,"-"],lineedit:[57,0,0,"-"],list_:[58,0,0,"-"],listwidget:[59,0,0,"-"],menubar:[60,0,0,"-"],radiobutton:[61,0,0,"-"],resizableframe:[62,0,0,"-"],scrollarea:[63,0,0,"-"],scrollbar:[64,0,0,"-"],spacer:[65,0,0,"-"],spinbox:[66,0,0,"-"],splitter:[67,0,0,"-"],tabwidget:[68,0,0,"-"],texedit:[69,0,0,"-"],tree:[70,0,0,"-"],treewidget:[71,0,0,"-"],treewidgetitem:[72,0,0,"-"],widget:[73,0,0,"-"],window:[74,0,0,"-"]},"TermTk.TTkWidgets.Fancy":{table:[38,0,0,"-"],tableview:[39,0,0,"-"],tree:[40,0,0,"-"],treeview:[41,0,0,"-"],treewidget:[42,0,0,"-"],treewidgetitem:[43,0,0,"-"]},"TermTk.TTkWidgets.Fancy.table":{TTkFancyTable:[38,1,1,""]},"TermTk.TTkWidgets.Fancy.tableview":{TTkFancyTableView:[39,1,1,""]},"TermTk.TTkWidgets.Fancy.tree":{TTkFancyTree:[40,1,1,""]},"TermTk.TTkWidgets.Fancy.treeview":{TTkFancyTreeView:[41,1,1,""]},"TermTk.TTkWidgets.Fancy.treewidget":{TTkFancyTreeWidget:[42,1,1,""]},"TermTk.TTkWidgets.TTkPickers":{colorpicker:[45,0,0,"-"],dateTimePicker:[46,0,0,"-"],filepicker:[47,0,0,"-"]},"TermTk.TTkWidgets.TTkPickers.colorpicker":{TTkColorButtonPicker:[45,1,1,""],TTkColorDialogPicker:[45,1,1,""]},"TermTk.TTkWidgets.TTkPickers.colorpicker.TTkColorDialogPicker":{paintEvent:[45,2,1,""]},"TermTk.TTkWidgets.TTkPickers.filepicker":{TTkFileDialogPicker:[47,1,1,""]},"TermTk.TTkWidgets.about":{TTkAbout:[48,1,1,""]},"TermTk.TTkWidgets.about.TTkAbout":{paintEvent:[48,2,1,""]},"TermTk.TTkWidgets.button":{TTkButton:[49,1,1,""]},"TermTk.TTkWidgets.button.TTkButton":{keyEvent:[49,2,1,""],mousePressEvent:[49,2,1,""],mouseReleaseEvent:[49,2,1,""],paintEvent:[49,2,1,""]},"TermTk.TTkWidgets.checkbox":{TTkCheckbox:[50,1,1,""]},"TermTk.TTkWidgets.checkbox.TTkCheckbox":{keyEvent:[50,2,1,""],mousePressEvent:[50,2,1,""],paintEvent:[50,2,1,""]},"TermTk.TTkWidgets.combobox":{TTkComboBox:[51,1,1,""]},"TermTk.TTkWidgets.combobox.TTkComboBox":{keyEvent:[51,2,1,""],mousePressEvent:[51,2,1,""],paintEvent:[51,2,1,""],resizeEvent:[51,2,1,""]},"TermTk.TTkWidgets.frame":{TTkFrame:[53,1,1,""]},"TermTk.TTkWidgets.frame.TTkFrame":{paintEvent:[53,2,1,""],resizeEvent:[53,2,1,""]},"TermTk.TTkWidgets.graph":{TTkGraph:[54,1,1,""]},"TermTk.TTkWidgets.graph.TTkGraph":{paintEvent:[54,2,1,""]},"TermTk.TTkWidgets.image":{TTkImage:[55,1,1,""]},"TermTk.TTkWidgets.image.TTkImage":{paintEvent:[55,2,1,""]},"TermTk.TTkWidgets.label":{TTkLabel:[56,1,1,""]},"TermTk.TTkWidgets.label.TTkLabel":{paintEvent:[56,2,1,""]},"TermTk.TTkWidgets.lineedit":{TTkLineEdit:[57,1,1,""]},"TermTk.TTkWidgets.lineedit.TTkLineEdit":{keyEvent:[57,2,1,""],mousePressEvent:[57,2,1,""],paintEvent:[57,2,1,""]},"TermTk.TTkWidgets.list_":{TTkList:[58,1,1,""]},"TermTk.TTkWidgets.listwidget":{TTkAbstractListItem:[59,1,1,""],TTkListWidget:[59,1,1,""]},"TermTk.TTkWidgets.listwidget.TTkAbstractListItem":{keyEvent:[59,2,1,""],mousePressEvent:[59,2,1,""],mouseReleaseEvent:[59,2,1,""]},"TermTk.TTkWidgets.listwidget.TTkListWidget":{keyEvent:[59,2,1,""],resizeEvent:[59,2,1,""]},"TermTk.TTkWidgets.menubar":{TTkMenuButton:[60,1,1,""],TTkMenuLayout:[60,1,1,""]},"TermTk.TTkWidgets.menubar.TTkMenuButton":{paintEvent:[60,2,1,""]},"TermTk.TTkWidgets.radiobutton":{TTkRadioButton:[61,1,1,""]},"TermTk.TTkWidgets.radiobutton.TTkRadioButton":{keyEvent:[61,2,1,""],mousePressEvent:[61,2,1,""],paintEvent:[61,2,1,""]},"TermTk.TTkWidgets.resizableframe":{TTkResizableFrame:[62,1,1,""]},"TermTk.TTkWidgets.resizableframe.TTkResizableFrame":{mouseDragEvent:[62,2,1,""],mousePressEvent:[62,2,1,""]},"TermTk.TTkWidgets.scrollarea":{TTkScrollArea:[63,1,1,""]},"TermTk.TTkWidgets.scrollbar":{TTkScrollBar:[64,1,1,""]},"TermTk.TTkWidgets.scrollbar.TTkScrollBar":{mouseDragEvent:[64,2,1,""],mousePressEvent:[64,2,1,""],paintEvent:[64,2,1,""],wheelEvent:[64,2,1,""]},"TermTk.TTkWidgets.spacer":{TTkSpacer:[65,1,1,""]},"TermTk.TTkWidgets.spinbox":{TTkSpinBox:[66,1,1,""]},"TermTk.TTkWidgets.spinbox.TTkSpinBox":{keyEvent:[66,2,1,""],mouseDragEvent:[66,2,1,""],mousePressEvent:[66,2,1,""],paintEvent:[66,2,1,""]},"TermTk.TTkWidgets.splitter":{TTkSplitter:[67,1,1,""]},"TermTk.TTkWidgets.splitter.TTkSplitter":{addWidget:[67,2,1,""],mouseDragEvent:[67,2,1,""],mousePressEvent:[67,2,1,""],paintEvent:[67,2,1,""],resizeEvent:[67,2,1,""]},"TermTk.TTkWidgets.tabwidget":{TTkTabWidget:[68,1,1,""]},"TermTk.TTkWidgets.tabwidget.TTkTabWidget":{paintEvent:[68,2,1,""],resizeEvent:[68,2,1,""]},"TermTk.TTkWidgets.texedit":{TTkTextEdit:[69,1,1,""]},"TermTk.TTkWidgets.tree":{TTkTree:[70,1,1,""]},"TermTk.TTkWidgets.treewidget":{TTkTreeWidget:[71,1,1,""]},"TermTk.TTkWidgets.treewidget.TTkTreeWidget":{mouseDoubleClickEvent:[71,2,1,""],mouseDragEvent:[71,2,1,""],mousePressEvent:[71,2,1,""],paintEvent:[71,2,1,""]},"TermTk.TTkWidgets.widget":{TTkWidget:[73,1,1,""]},"TermTk.TTkWidgets.widget.TTkWidget":{addWidget:[73,2,1,""],getPadding:[73,2,1,""],mouseEvent:[73,2,1,""],move:[73,2,1,""],moveEvent:[73,2,1,""],paintChildCanvas:[73,2,1,""],paintEvent:[73,2,1,""],removeWidget:[73,2,1,""],resize:[73,2,1,""],resizeEvent:[73,2,1,""],setGeometry:[73,2,1,""],setPadding:[73,2,1,""]},"TermTk.TTkWidgets.window":{TTkWindow:[74,1,1,""]},"TermTk.TTkWidgets.window.TTkWindow":{mouseDragEvent:[74,2,1,""],mousePressEvent:[74,2,1,""],paintEvent:[74,2,1,""]},"TermTk.libbpytop":{colors:[76,0,0,"-"],input:[77,0,0,"-"],inputkey:[78,0,0,"-"],term:[79,0,0,"-"]},"TermTk.libbpytop.term":{Mv:[79,1,1,""],Term:[79,1,1,""]},"TermTk.libbpytop.term.Term":{echo:[79,2,1,""]},TermTk:{TTkAbstract:[1,0,0,"-"],TTkCore:[5,0,0,"-"],TTkGui:[18,0,0,"-"],TTkLayouts:[20,0,0,"-"],TTkTemplates:[24,0,0,"-"],TTkTestWidgets:[30,0,0,"-"],TTkTypes:[34,0,0,"-"],TTkWidgets:[36,0,0,"-"],libbpytop:[75,0,0,"-"],pyTTkSignal:[14,4,1,""],pyTTkSlot:[14,4,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:function"},terms:{"001":81,"002":[21,22,23,81],"0x10000":73,"123":83,"char":71,"class":[3,4,6,9,16,17,19,21,22,23,31,32,33,38,39,40,41,42,45,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,79,82,84],"default":[21,22,23,73,82,84],"function":[4,6,14,21,22,32,33,49,50,51,57,59,61,62,64,66,67,71,74,79,83],"import":[81,82,83,84],"int":[21,22,23,51,73,83],"new":[6,73],"return":[4,17,32,33,49,50,51,57,59,61,62,64,66,67,71,73,74],"static":79,"true":[4,32,33,49,50,51,57,59,61,62,64,66,67,71,73,74,81,82,83,84],Eve:[83,84],For:[14,83],Pos:71,The:[14,16,21,22,23,73,81,82,83,84],Used:[23,82],_ttkcolor:6,abl:[14,83],abov:[81,82,83,84],abus:6,activ:16,add:[14,21,22,67,73,81,82,83],added:[21,22,67,73],additem:[21,22,82],addwidget:[21,22,67,73,82],after:[4,23,51,53,59,67,68,73,82],align:[6,9,23],all:[9,22,23,73,82],allow:[22,23,82,84],alreadi:73,ani:[14,16,83],annoi:45,anootherslot:83,anoth:[14,83],anotherslot:83,api:[80,84],append:82,applic:[17,81],area:[23,73,82],arg:[3,4,6,14,16,17,21,22,23,31,32,33,38,39,40,41,42,45,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74],argument:16,arrang:16,attach:[81,82,84],automat:[22,23,82],avail:9,base:[23,73,80,82],becaus:[23,82],been:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74],between:[14,83],black:45,blob:[21,22,23],blue:45,bool:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,73,74,79],border:[81,82,83,84],bottom:73,box0:19,box1:19,box:[19,21],btnhide:83,btnshow:83,button1:82,button2:82,button3:82,button4:82,button5:82,button6:82,button:[14,82,83],buttonbox:19,call:[14,16,17,83],callabl:16,callback:[4,32,33,45,48,49,50,51,53,54,55,56,57,59,60,61,64,66,67,68,71,73,74,84],can:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74],cancel:45,canva:45,caption:81,ceccopierangiolieugenio:[21,22,23],center:9,center_align:9,chang:[14,83],child:[67,73],click:[14,71,83],close:[14,83],code:[6,17,81,82,83,84],col:[21,22,23,82],collect:79,color:[6,45],colspan:[21,22,23],column:[22,79],columnminheight:[22,82],columnminwidth:[22,82],columnpo:71,com:[21,22,23],command:79,commun:[14,83],completemess:83,configur:84,connect:83,consid:71,constructor:16,contain:9,context:84,control:[16,45],creat:[81,82,83,84],critic:84,criticalmsg:84,current:6,cursor:79,custom:45,customlog:84,cut:6,debug:[83,84],def:[83,84],defaut:82,defin:[73,81,83,84],definit:80,deriv:23,describ:9,destroi:17,differ:[82,83],discontinu:80,doc:[14,83],don:73,drag:[32,62,64,66,67,71,74],drawing_charact:19,drawtext:6,echo:79,edg:9,eft:79,elif:84,emit:[14,83],empti:[22,82],enter:[17,81],error:84,errormsg:84,event:[4,14,17,23,32,33,45,48,49,50,51,53,54,55,56,57,59,60,61,62,64,66,67,68,71,73,74,82,83],evolv:80,evt:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,73,74],exampl:[14,19],example1:[83,84],example2:[83,84],example3:84,example4:84,execut:[81,82],exit:17,expand:82,fatal:84,fatalmsg:84,first:82,follow:[81,82,83,84],footprint:6,fps:[83,84],free:[23,82],from:[16,19,73,80,83,84],gener:[14,83],geometri:23,get:22,getpad:73,github:[21,22,23],green:45,grid0:19,grid1:19,grid2:19,grid3:19,grid4:19,grid5:19,grid6:19,grid7:19,grid8:19,grid9:19,grid:[19,21,22,23],gridlayout:82,gtk:80,gui:[14,81,83],handl:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74],handler:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74,84],has:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74],have:[14,23,82,83],hbox:82,hboxlayout:82,heavili:[14,83],height:[6,22,73],hello:80,hellowin:81,helloworld:81,here:6,hex:19,hide:83,horizont:[9,21,82],html:[14,45,83],http:[14,19,21,22,23,83],hue:45,ids:19,ight:79,index:80,info:[79,84],infomsg:84,inherit:23,init:6,input:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74,79,83],inspir:[14,80,83],installmessagehandl:84,interfac:[73,80],intern:9,interpret:80,invok:16,involv:81,item:[9,21,22,23],justifi:9,keep:6,kei:[49,50,51,57,59,61,66],keyev:[49,50,51,57,59,61,66],keyword:16,kind:[14,83],kwarg:[3,4,6,14,16,17,21,22,23,31,32,33,38,39,40,41,42,45,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74],label1:19,label2:19,label3:19,label4:19,label:81,layout:[9,21,22,45,67,73,80,83,84],layoutitem:9,layoutitemtyp:[9,23],least:71,left:[9,73],left_align:9,legaci:82,less:45,lib:[83,84],libbpytop:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74,80],librari:80,line:[21,79],list:73,log:80,logtofil:84,logtostdout:84,logview:[83,84],logwin:[83,84],loop:[17,81,84],mai:16,main:[17,21,22,23,81,84],mainli:[23,82],mainloop:[17,81,82,83,84],mainthread:83,manag:23,mani:[14,83],max:73,maxheight:73,maximumheight:22,maximumwidth:22,maxsiz:73,maxwidth:73,menu:19,messag:84,message_handl:84,method:[16,81,82],min:[22,71],minheight:73,minimum:22,minimumheight:22,minimumwidth:22,minsiz:73,minwidth:73,mix:80,mode:84,modul:80,more:[14,16,45,83],most:[6,16],mous:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74],mousedoubleclickev:71,mousedragev:[32,62,64,66,67,71,74],mouseev:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,73,74],mousepressev:[32,33,49,50,51,57,59,61,62,64,66,67,71,74],mousereleaseev:[33,49,59],move:[23,73,82],moveev:73,movement:79,msgtype:84,must:16,name:[73,82],need:[32,33,45,48,49,50,51,53,54,55,56,57,60,61,64,66,67,68,71,73,74],none:[6,9,21,22,23,67,73,84],note:[6,82],notifi:[14,83],object:[6,14,16,73,81,83],occur:[14,83],often:[14,83],onc:16,one:[6,14,83],onli:23,option:[21,22,23,73],order:6,org:19,othersign:83,otherslot:83,our:[14,83],output:[81,82,83,84],overrid:[16,73],overridden:[32,33,45,48,49,50,51,53,54,55,56,57,60,61,64,66,67,68,71,73,74],own:[14,79,83],packag:[81,83,84],pad:73,padb:73,paddingbottom:73,paddingleft:73,paddingright:73,paddingtop:73,padl:73,padr:73,padt:73,page:80,paint:[32,33,45,48,49,50,51,53,54,55,56,57,60,61,64,66,67,68,71,73,74],paintchildcanva:73,paintev:[32,33,45,48,49,50,51,53,54,55,56,57,60,61,64,66,67,68,71,73,74],palett:45,paramet:[6,21,22,23,67,73,82],parent:[73,81,82,83,84],particular:[14,83],pass:16,per:16,person:80,picker:45,place:[22,82],placement:[23,82],pos:[6,23,73,81,82,83,84],posit:[73,81,82],possibl:[14,82,83],predefin:[14,83],press:[32,33,49,50,51,57,59,61,62,64,66,67,71,74],previous:73,print:84,probabl:[14,83],process:[22,84],produc:[81,82,83,84],program:[14,83],project:80,proper:83,prototyp:19,provid:84,purpl:45,push:84,pycut:80,pytermtk:[21,22,23],python3:[83,84],pyttksign:[14,83],pyttkslot:[14,83],qt5:[14,80,83],quit:17,rais:16,rang:[23,82],rearrang:23,receiv:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74,83],recommend:82,red:45,redraw:45,reduc:6,redunt:6,refer:80,regist:84,reimplement:[4,32,33,49,50,51,57,59,61,62,64,66,67,71,74],releas:[33,49,59],remov:73,removewidget:73,replac:82,repres:[16,81],resiz:[4,6,22,51,53,59,67,68,73,82],resizeev:[4,51,53,59,67,68,73],respect:16,respons:[14,83],restor:79,retriev:73,right:[9,73],right_align:9,root:[81,82,83,84],row:[21,22,23,82],rowspan:[21,22,23],run:16,runtimeerror:16,sack:83,same:16,save:79,screenshot:83,search:80,sec:16,select:71,separ:16,sequenti:16,session:84,set:[73,82,84],setgeometri:73,setlayout:82,setpad:73,show:83,signal:[80,84],signalsandslot:[14,83],signalslot:83,signatur:83,simpl:[81,83],site:[83,84],size:[22,45,67,73,81,82,83,84],slot:80,some:[6,19,84],sourc:[3,4,6,9,14,16,17,19,21,22,23,31,32,33,38,39,40,41,42,45,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,79],space:[9,71],specialis:82,specif:82,standard:16,start:[16,81,83,84],step:81,str:73,subclass:[4,14,16,32,33,49,50,51,57,59,61,62,64,66,67,71,74,83],success:[4,51,53,59,67,68,73],tab:19,taken:16,target:16,tell:17,termin:[45,73,79,81,82],termtk:[80,81,82,83,84],test:[83,84],text:[6,9,19,80,81,82,83],than:[14,16,83],them:[14,82,83],thi:[4,9,16,21,22,23,32,33,45,49,50,51,57,59,61,62,64,66,67,71,73,74,82,83],thread:16,ths:[32,33,45,48,49,50,51,53,54,55,56,57,60,61,64,66,67,68,71,73,74],titl:[81,83,84],tkinter:80,toggl:79,too:45,top:73,total:83,touch:[73,80],trigger:[4,51,53,59,67,68,73],ttk:[81,82,83,84],ttkabstract:80,ttkbutton:[82,83],ttkcore:[80,83,84],ttkgridlayout:[21,23],ttkgui:80,ttkk:23,ttklabel:81,ttklayout:[9,73,80],ttklayoutitem:[21,22],ttklog:[83,84],ttklogview:83,ttktemplat:80,ttktestwidget:80,ttktype:80,ttkvboxlayout:[83,84],ttkwidget:[14,21,22,80,83],ttkwindow:[23,81,83,84],tui:80,tutori:[21,22,23,80,83,84],type:[9,19,23],until:17,use:82,use_default_file_log:84,use_default_stdout_log:[83,84],used:[9,14,21,22,23,82,83,84],useless:83,user:[14,73,80,83],uses:[21,22],using:[81,82],val:83,valu:83,vbox:82,vboxlayout:82,venv:[83,84],vertic:[21,82],visibl:73,wait:17,want:[14,83],warn:84,warningmsg:84,wheel:[4,64],wheelev:[4,64],when:[14,83],white:45,widget1:[21,22,23,82],widget2:[21,22,23,82],widget3:[21,22,82],widget4:[22,82],widget5:[22,82],widget:[4,9,14,17,21,22,23,32,33,45,48,49,50,51,53,54,55,56,57,59,60,61,62,64,66,67,68,71,74,81,82],widgetitem:9,width:[6,22,73],wiki:19,wikipedia:19,window:[14,45,82,83,84],world:80,xterm:73,yet:23,you:16,yuhuuuuu:81},titles:["TermTk","TermTk.TTkAbstract","TermTk.TTkAbstract.abstractitemmodel","TermTk.TTkAbstract.abstractscrollarea","TermTk.TTkAbstract.abstractscrollview","TermTk.TTkCore","TermTk.TTkCore.canvas","TermTk.TTkCore.cfg","TermTk.TTkCore.color","TermTk.TTkCore.constant","TermTk.TTkCore.draw","TermTk.TTkCore.filebuffer","TermTk.TTkCore.helper","TermTk.TTkCore.log","TermTk.TTkCore.signal","TermTk.TTkCore.string","TermTk.TTkCore.timer","TermTk.TTkCore.ttk","TermTk.TTkGui","TermTk.TTkGui.theme","TermTk.TTkLayouts","TermTk.TTkLayouts.boxlayout","TermTk.TTkLayouts.gridlayout","TermTk.TTkLayouts.layout","TermTk.TTkTemplates","TermTk.TTkTemplates.color","TermTk.TTkTemplates.data","TermTk.TTkTemplates.keyevents","TermTk.TTkTemplates.mouseevents","TermTk.TTkTemplates.text","TermTk.TTkTestWidgets","TermTk.TTkTestWidgets.logviewer","TermTk.TTkTestWidgets.testwidget","TermTk.TTkTestWidgets.testwidgetsizes","TermTk.TTkTypes","TermTk.TTkTypes.viewitem","TermTk.TTkWidgets","TermTk.TTkWidgets.Fancy","TermTk.TTkWidgets.Fancy.table","TermTk.TTkWidgets.Fancy.tableview","TermTk.TTkWidgets.Fancy.tree","TermTk.TTkWidgets.Fancy.treeview","TermTk.TTkWidgets.Fancy.treewidget","TermTk.TTkWidgets.Fancy.treewidgetitem","TermTk.TTkWidgets.TTkPickers","TermTk.TTkWidgets.TTkPickers.colorpicker","TermTk.TTkWidgets.TTkPickers.dateTimePicker","TermTk.TTkWidgets.TTkPickers.filepicker","TermTk.TTkWidgets.about","TermTk.TTkWidgets.button","TermTk.TTkWidgets.checkbox","TermTk.TTkWidgets.combobox","TermTk.TTkWidgets.filetree","TermTk.TTkWidgets.frame","TermTk.TTkWidgets.graph","TermTk.TTkWidgets.image","TermTk.TTkWidgets.label","TermTk.TTkWidgets.lineedit","TermTk.TTkWidgets.list_","TermTk.TTkWidgets.listwidget","TermTk.TTkWidgets.menubar","TermTk.TTkWidgets.radiobutton","TermTk.TTkWidgets.resizableframe","TermTk.TTkWidgets.scrollarea","TermTk.TTkWidgets.scrollbar","TermTk.TTkWidgets.spacer","TermTk.TTkWidgets.spinbox","TermTk.TTkWidgets.splitter","TermTk.TTkWidgets.tabwidget","TermTk.TTkWidgets.texedit","TermTk.TTkWidgets.tree","TermTk.TTkWidgets.treewidget","TermTk.TTkWidgets.treewidgetitem","TermTk.TTkWidgets.widget","TermTk.TTkWidgets.window","TermTk.libbpytop","TermTk.libbpytop.colors","TermTk.libbpytop.input","TermTk.libbpytop.inputkey","TermTk.libbpytop.term","Welcome to pyTermTk\u2019s documentation!","pyTermTk - Hello World","pyTermTk - Layouts","pyTermTk - Signal & Slots","pyTermTk - Logging"],titleterms:{Use:[83,84],about:48,abstractitemmodel:2,abstractscrollarea:3,abstractscrollview:4,basic:83,boxlayout:21,button:49,canva:6,cfg:7,checkbox:50,color:[8,25,76],colorpick:45,colspan:82,combobox:51,constant:9,custom:84,data:26,datetimepick:46,document:80,draw:10,exampl:[81,82,83,84],fanci:[37,38,39,40,41,42,43],file:84,filebuff:11,filepick:47,filetre:52,first:81,frame:53,graph:54,grid:82,gridlayout:22,hello:81,helper:12,imag:55,indic:80,input:77,inputkei:78,intro:[14,80,81,82,83,84],keyev:27,label:56,layout:[20,23,82],libbpytop:[75,76,77,78,79],lineedit:57,list_:58,listwidget:59,log:[13,84],logview:31,menubar:60,method:14,mouseev:28,nest:82,pytermtk:[80,81,82,83,84],radiobutton:61,resizablefram:62,rowspan:82,scrollarea:63,scrollbar:64,signal:[14,83],simpl:82,slot:[14,83],spacer:65,spinbox:66,splitter:67,stdout:84,string:15,tabl:[38,80],tableview:39,tabwidget:68,term:79,termtk:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79],testwidget:32,testwidgets:33,texedit:69,text:29,theme:19,timer:16,tree:[40,70],treeview:41,treewidget:[42,71],treewidgetitem:[43,72],ttk:17,ttkabout:48,ttkabstract:[1,2,3,4],ttkabstractlistitem:59,ttkabstractscrollarea:3,ttkabstractscrollview:4,ttkbutton:49,ttkcanva:6,ttkcheckbox:50,ttkcolorbuttonpick:45,ttkcolordialogpick:45,ttkcombobox:51,ttkconstant:9,ttkcore:[5,6,7,8,9,10,11,12,13,14,15,16,17],ttkfancyt:38,ttkfancytableview:39,ttkfancytre:40,ttkfancytreeview:41,ttkfancytreewidget:42,ttkfiledialogpick:47,ttkframe:53,ttkgraph:54,ttkgridlayout:[22,82],ttkgui:[18,19],ttkhboxlayout:[21,82],ttkimag:55,ttkk:9,ttklabel:56,ttklayout:[20,21,22,23,82],ttklayoutitem:23,ttklineedit:57,ttklist:58,ttklistwidget:59,ttklogview:[31,84],ttkmenubutton:60,ttkmenulayout:60,ttkpicker:[44,45,46,47],ttkradiobutton:61,ttkresizablefram:62,ttkscrollarea:63,ttkscrollbar:64,ttkspacer:65,ttkspinbox:66,ttksplitter:67,ttktabwidget:68,ttktemplat:[24,25,26,27,28,29],ttktestwidget:[30,31,32,33],ttktestwidgets:33,ttktextedit:69,ttktheme:19,ttktimer:16,ttktree:70,ttktreewidget:71,ttktype:[34,35],ttkvboxlayout:[21,82],ttkwidget:[36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ttkwidgetitem:23,ttkwindow:74,tutori:14,viewitem:35,welcom:80,widget:[73,83,84],window:[74,81],world:81,your:81}}) \ No newline at end of file +Search.setIndex({docnames:["autogen.TermTk/TermTk","autogen.TermTk/TermTk.TTkAbstract","autogen.TermTk/TermTk.TTkAbstract.abstractitemmodel","autogen.TermTk/TermTk.TTkAbstract.abstractscrollarea","autogen.TermTk/TermTk.TTkAbstract.abstractscrollview","autogen.TermTk/TermTk.TTkCore","autogen.TermTk/TermTk.TTkCore.canvas","autogen.TermTk/TermTk.TTkCore.cfg","autogen.TermTk/TermTk.TTkCore.color","autogen.TermTk/TermTk.TTkCore.constant","autogen.TermTk/TermTk.TTkCore.draw","autogen.TermTk/TermTk.TTkCore.filebuffer","autogen.TermTk/TermTk.TTkCore.helper","autogen.TermTk/TermTk.TTkCore.log","autogen.TermTk/TermTk.TTkCore.signal","autogen.TermTk/TermTk.TTkCore.string","autogen.TermTk/TermTk.TTkCore.timer","autogen.TermTk/TermTk.TTkCore.ttk","autogen.TermTk/TermTk.TTkGui","autogen.TermTk/TermTk.TTkGui.draw_ascii","autogen.TermTk/TermTk.TTkGui.draw_utf8","autogen.TermTk/TermTk.TTkGui.fileicon_ascii","autogen.TermTk/TermTk.TTkGui.fileicon_nerd","autogen.TermTk/TermTk.TTkGui.fileicon_utf8","autogen.TermTk/TermTk.TTkGui.theme","autogen.TermTk/TermTk.TTkLayouts","autogen.TermTk/TermTk.TTkLayouts.boxlayout","autogen.TermTk/TermTk.TTkLayouts.gridlayout","autogen.TermTk/TermTk.TTkLayouts.layout","autogen.TermTk/TermTk.TTkTemplates","autogen.TermTk/TermTk.TTkTemplates.color","autogen.TermTk/TermTk.TTkTemplates.data","autogen.TermTk/TermTk.TTkTemplates.keyevents","autogen.TermTk/TermTk.TTkTemplates.mouseevents","autogen.TermTk/TermTk.TTkTemplates.text","autogen.TermTk/TermTk.TTkTestWidgets","autogen.TermTk/TermTk.TTkTestWidgets.logviewer","autogen.TermTk/TermTk.TTkTestWidgets.testwidget","autogen.TermTk/TermTk.TTkTestWidgets.testwidgetsizes","autogen.TermTk/TermTk.TTkTypes","autogen.TermTk/TermTk.TTkTypes.viewitem","autogen.TermTk/TermTk.TTkWidgets","autogen.TermTk/TermTk.TTkWidgets.Fancy","autogen.TermTk/TermTk.TTkWidgets.Fancy.table","autogen.TermTk/TermTk.TTkWidgets.Fancy.tableview","autogen.TermTk/TermTk.TTkWidgets.Fancy.tree","autogen.TermTk/TermTk.TTkWidgets.Fancy.treeview","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidget","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidgetitem","autogen.TermTk/TermTk.TTkWidgets.TTkPickers","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.colorpicker","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.dateTimePicker","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.filepicker","autogen.TermTk/TermTk.TTkWidgets.about","autogen.TermTk/TermTk.TTkWidgets.button","autogen.TermTk/TermTk.TTkWidgets.checkbox","autogen.TermTk/TermTk.TTkWidgets.combobox","autogen.TermTk/TermTk.TTkWidgets.filetree","autogen.TermTk/TermTk.TTkWidgets.frame","autogen.TermTk/TermTk.TTkWidgets.graph","autogen.TermTk/TermTk.TTkWidgets.image","autogen.TermTk/TermTk.TTkWidgets.label","autogen.TermTk/TermTk.TTkWidgets.lineedit","autogen.TermTk/TermTk.TTkWidgets.list_","autogen.TermTk/TermTk.TTkWidgets.listwidget","autogen.TermTk/TermTk.TTkWidgets.menubar","autogen.TermTk/TermTk.TTkWidgets.radiobutton","autogen.TermTk/TermTk.TTkWidgets.resizableframe","autogen.TermTk/TermTk.TTkWidgets.scrollarea","autogen.TermTk/TermTk.TTkWidgets.scrollbar","autogen.TermTk/TermTk.TTkWidgets.spacer","autogen.TermTk/TermTk.TTkWidgets.spinbox","autogen.TermTk/TermTk.TTkWidgets.splitter","autogen.TermTk/TermTk.TTkWidgets.tabwidget","autogen.TermTk/TermTk.TTkWidgets.texedit","autogen.TermTk/TermTk.TTkWidgets.tree","autogen.TermTk/TermTk.TTkWidgets.treewidget","autogen.TermTk/TermTk.TTkWidgets.treewidgetitem","autogen.TermTk/TermTk.TTkWidgets.widget","autogen.TermTk/TermTk.TTkWidgets.window","autogen.TermTk/TermTk.libbpytop","autogen.TermTk/TermTk.libbpytop.colors","autogen.TermTk/TermTk.libbpytop.input","autogen.TermTk/TermTk.libbpytop.inputkey","autogen.TermTk/TermTk.libbpytop.term","index","tutorial/001-helloworld","tutorial/002-layout","tutorial/003-signalslots","tutorial/004-logging"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["autogen.TermTk/TermTk.rst","autogen.TermTk/TermTk.TTkAbstract.rst","autogen.TermTk/TermTk.TTkAbstract.abstractitemmodel.rst","autogen.TermTk/TermTk.TTkAbstract.abstractscrollarea.rst","autogen.TermTk/TermTk.TTkAbstract.abstractscrollview.rst","autogen.TermTk/TermTk.TTkCore.rst","autogen.TermTk/TermTk.TTkCore.canvas.rst","autogen.TermTk/TermTk.TTkCore.cfg.rst","autogen.TermTk/TermTk.TTkCore.color.rst","autogen.TermTk/TermTk.TTkCore.constant.rst","autogen.TermTk/TermTk.TTkCore.draw.rst","autogen.TermTk/TermTk.TTkCore.filebuffer.rst","autogen.TermTk/TermTk.TTkCore.helper.rst","autogen.TermTk/TermTk.TTkCore.log.rst","autogen.TermTk/TermTk.TTkCore.signal.rst","autogen.TermTk/TermTk.TTkCore.string.rst","autogen.TermTk/TermTk.TTkCore.timer.rst","autogen.TermTk/TermTk.TTkCore.ttk.rst","autogen.TermTk/TermTk.TTkGui.rst","autogen.TermTk/TermTk.TTkGui.draw_ascii.rst","autogen.TermTk/TermTk.TTkGui.draw_utf8.rst","autogen.TermTk/TermTk.TTkGui.fileicon_ascii.rst","autogen.TermTk/TermTk.TTkGui.fileicon_nerd.rst","autogen.TermTk/TermTk.TTkGui.fileicon_utf8.rst","autogen.TermTk/TermTk.TTkGui.theme.rst","autogen.TermTk/TermTk.TTkLayouts.rst","autogen.TermTk/TermTk.TTkLayouts.boxlayout.rst","autogen.TermTk/TermTk.TTkLayouts.gridlayout.rst","autogen.TermTk/TermTk.TTkLayouts.layout.rst","autogen.TermTk/TermTk.TTkTemplates.rst","autogen.TermTk/TermTk.TTkTemplates.color.rst","autogen.TermTk/TermTk.TTkTemplates.data.rst","autogen.TermTk/TermTk.TTkTemplates.keyevents.rst","autogen.TermTk/TermTk.TTkTemplates.mouseevents.rst","autogen.TermTk/TermTk.TTkTemplates.text.rst","autogen.TermTk/TermTk.TTkTestWidgets.rst","autogen.TermTk/TermTk.TTkTestWidgets.logviewer.rst","autogen.TermTk/TermTk.TTkTestWidgets.testwidget.rst","autogen.TermTk/TermTk.TTkTestWidgets.testwidgetsizes.rst","autogen.TermTk/TermTk.TTkTypes.rst","autogen.TermTk/TermTk.TTkTypes.viewitem.rst","autogen.TermTk/TermTk.TTkWidgets.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.table.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.tableview.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.tree.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.treeview.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidget.rst","autogen.TermTk/TermTk.TTkWidgets.Fancy.treewidgetitem.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.colorpicker.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.dateTimePicker.rst","autogen.TermTk/TermTk.TTkWidgets.TTkPickers.filepicker.rst","autogen.TermTk/TermTk.TTkWidgets.about.rst","autogen.TermTk/TermTk.TTkWidgets.button.rst","autogen.TermTk/TermTk.TTkWidgets.checkbox.rst","autogen.TermTk/TermTk.TTkWidgets.combobox.rst","autogen.TermTk/TermTk.TTkWidgets.filetree.rst","autogen.TermTk/TermTk.TTkWidgets.frame.rst","autogen.TermTk/TermTk.TTkWidgets.graph.rst","autogen.TermTk/TermTk.TTkWidgets.image.rst","autogen.TermTk/TermTk.TTkWidgets.label.rst","autogen.TermTk/TermTk.TTkWidgets.lineedit.rst","autogen.TermTk/TermTk.TTkWidgets.list_.rst","autogen.TermTk/TermTk.TTkWidgets.listwidget.rst","autogen.TermTk/TermTk.TTkWidgets.menubar.rst","autogen.TermTk/TermTk.TTkWidgets.radiobutton.rst","autogen.TermTk/TermTk.TTkWidgets.resizableframe.rst","autogen.TermTk/TermTk.TTkWidgets.scrollarea.rst","autogen.TermTk/TermTk.TTkWidgets.scrollbar.rst","autogen.TermTk/TermTk.TTkWidgets.spacer.rst","autogen.TermTk/TermTk.TTkWidgets.spinbox.rst","autogen.TermTk/TermTk.TTkWidgets.splitter.rst","autogen.TermTk/TermTk.TTkWidgets.tabwidget.rst","autogen.TermTk/TermTk.TTkWidgets.texedit.rst","autogen.TermTk/TermTk.TTkWidgets.tree.rst","autogen.TermTk/TermTk.TTkWidgets.treewidget.rst","autogen.TermTk/TermTk.TTkWidgets.treewidgetitem.rst","autogen.TermTk/TermTk.TTkWidgets.widget.rst","autogen.TermTk/TermTk.TTkWidgets.window.rst","autogen.TermTk/TermTk.libbpytop.rst","autogen.TermTk/TermTk.libbpytop.colors.rst","autogen.TermTk/TermTk.libbpytop.input.rst","autogen.TermTk/TermTk.libbpytop.inputkey.rst","autogen.TermTk/TermTk.libbpytop.term.rst","index.rst","tutorial/001-helloworld.rst","tutorial/002-layout.rst","tutorial/003-signalslots.rst","tutorial/004-logging.rst"],objects:{"":{TermTk:[0,0,0,"-"]},"TermTk.TTkAbstract":{abstractitemmodel:[2,0,0,"-"],abstractscrollarea:[3,0,0,"-"],abstractscrollview:[4,0,0,"-"]},"TermTk.TTkAbstract.abstractscrollarea":{TTkAbstractScrollArea:[3,1,1,""]},"TermTk.TTkAbstract.abstractscrollview":{TTkAbstractScrollView:[4,1,1,""]},"TermTk.TTkAbstract.abstractscrollview.TTkAbstractScrollView":{resizeEvent:[4,2,1,""],wheelEvent:[4,2,1,""]},"TermTk.TTkCore":{canvas:[6,0,0,"-"],cfg:[7,0,0,"-"],color:[8,0,0,"-"],constant:[9,0,0,"-"],draw:[10,0,0,"-"],filebuffer:[11,0,0,"-"],helper:[12,0,0,"-"],log:[13,0,0,"-"],signal:[14,0,0,"-"],string:[15,0,0,"-"],timer:[16,0,0,"-"],ttk:[17,0,0,"-"]},"TermTk.TTkCore.canvas":{TTkCanvas:[6,1,1,""]},"TermTk.TTkCore.canvas.TTkCanvas":{drawText:[6,2,1,""],resize:[6,2,1,""]},"TermTk.TTkCore.color":{TTkColor:[8,1,1,""]},"TermTk.TTkCore.color.TTkColor":{BOLD:[8,3,1,""],ITALIC:[8,3,1,""],RST:[8,3,1,""],STRIKETROUGH:[8,3,1,""],UNDERLINE:[8,3,1,""]},"TermTk.TTkCore.constant":{TTkConstant:[9,1,1,""],TTkK:[9,1,1,""]},"TermTk.TTkCore.constant.TTkConstant":{Alignment:[9,1,1,""],LayoutItemTypes:[9,1,1,""]},"TermTk.TTkCore.constant.TTkConstant.Alignment":{CENTER_ALIGN:[9,3,1,""],JUSTIFY:[9,3,1,""],LEFT_ALIGN:[9,3,1,""],NONE:[9,3,1,""],RIGHT_ALIGN:[9,3,1,""]},"TermTk.TTkCore.constant.TTkConstant.LayoutItemTypes":{LayoutItem:[9,3,1,""],WidgetItem:[9,3,1,""]},"TermTk.TTkCore.timer":{TTkTimer:[16,1,1,""]},"TermTk.TTkCore.timer.TTkTimer":{run:[16,2,1,""],start:[16,2,1,""]},"TermTk.TTkCore.ttk":{TTk:[17,1,1,""]},"TermTk.TTkCore.ttk.TTk":{mainloop:[17,2,1,""],quit:[17,2,1,""]},"TermTk.TTkGui":{draw_ascii:[19,0,0,"-"],draw_utf8:[20,0,0,"-"],fileicon_ascii:[21,0,0,"-"],fileicon_nerd:[22,0,0,"-"],fileicon_utf8:[23,0,0,"-"],theme:[24,0,0,"-"]},"TermTk.TTkGui.draw_utf8":{TTkTheme:[20,1,1,""]},"TermTk.TTkGui.draw_utf8.TTkTheme":{buttonBox:[20,3,1,""],grid:[20,3,1,""],tab:[20,3,1,""]},"TermTk.TTkGui.theme":{TTkTheme:[24,1,1,""]},"TermTk.TTkGui.theme.TTkTheme":{buttonBorderColor:[24,3,1,""],buttonBorderColorClicked:[24,3,1,""],buttonBorderColorDisabled:[24,3,1,""],buttonBorderColorFocus:[24,3,1,""],buttonBoxGrid:[24,3,1,""],buttonBoxGridClicked:[24,3,1,""],buttonBoxGridDisabled:[24,3,1,""],buttonTextColor:[24,3,1,""],buttonTextColorClicked:[24,3,1,""],buttonTextColorDisabled:[24,3,1,""],buttonTextColorFocus:[24,3,1,""],checkboxBorderColor:[24,3,1,""],checkboxBorderColorFocus:[24,3,1,""],checkboxContentColor:[24,3,1,""],checkboxContentColorFocus:[24,3,1,""],comboboxBorderColor:[24,3,1,""],comboboxContentColor:[24,3,1,""],comboboxContentColorFocus:[24,3,1,""],executableColor:[24,3,1,""],failNameColor:[24,3,1,""],fileIconColor:[24,3,1,""],fileNameColor:[24,3,1,""],folderIconColor:[24,3,1,""],folderNameColor:[24,3,1,""],frameBorderColor:[24,3,1,""],frameTitleColor:[24,3,1,""],lineEditTextColor:[24,3,1,""],lineEditTextColorFocus:[24,3,1,""],linkNameColor:[24,3,1,""],listColor:[24,3,1,""],listColorHighlighted:[24,3,1,""],listColorSelected:[24,3,1,""],menuButtonBorderColor:[24,3,1,""],menuButtonBorderColorClicked:[24,3,1,""],menuButtonColor:[24,3,1,""],menuButtonColorClicked:[24,3,1,""],menuButtonShortcutColor:[24,3,1,""],radioButtonBorderColor:[24,3,1,""],radioButtonBorderColorFocus:[24,3,1,""],radioButtonContentColor:[24,3,1,""],radioButtonContentColorFocus:[24,3,1,""],tabBorderColor:[24,3,1,""],tabBorderColorFocus:[24,3,1,""],tabColor:[24,3,1,""],tabColorFocus:[24,3,1,""],tabOffsetColor:[24,3,1,""],tabOffsetColorFocus:[24,3,1,""],tabSelectColor:[24,3,1,""],tabSelectColorFocus:[24,3,1,""],treeHeaderColor:[24,3,1,""],treeLineColor:[24,3,1,""],treeSelectedColor:[24,3,1,""],windowBorderColor:[24,3,1,""],windowBorderColorFocus:[24,3,1,""]},"TermTk.TTkLayouts":{boxlayout:[26,0,0,"-"],gridlayout:[27,0,0,"-"],layout:[28,0,0,"-"]},"TermTk.TTkLayouts.boxlayout":{TTkHBoxLayout:[26,1,1,""],TTkVBoxLayout:[26,1,1,""]},"TermTk.TTkLayouts.boxlayout.TTkVBoxLayout":{addItem:[26,2,1,""],addWidget:[26,2,1,""]},"TermTk.TTkLayouts.gridlayout":{TTkGridLayout:[27,1,1,""]},"TermTk.TTkLayouts.gridlayout.TTkGridLayout":{addItem:[27,2,1,""],addWidget:[27,2,1,""],maximumHeight:[27,2,1,""],maximumWidth:[27,2,1,""],minimumHeight:[27,2,1,""],minimumWidth:[27,2,1,""]},"TermTk.TTkLayouts.layout":{TTkLayout:[28,1,1,""],TTkLayoutItem:[28,1,1,""],TTkWidgetItem:[28,1,1,""]},"TermTk.TTkTemplates":{color:[30,0,0,"-"],data:[31,0,0,"-"],keyevents:[32,0,0,"-"],mouseevents:[33,0,0,"-"],text:[34,0,0,"-"]},"TermTk.TTkTestWidgets":{logviewer:[36,0,0,"-"],testwidget:[37,0,0,"-"],testwidgetsizes:[38,0,0,"-"]},"TermTk.TTkTestWidgets.logviewer":{TTkLogViewer:[36,1,1,""]},"TermTk.TTkTestWidgets.testwidget":{TTkTestWidget:[37,1,1,""]},"TermTk.TTkTestWidgets.testwidget.TTkTestWidget":{mouseDragEvent:[37,2,1,""],mousePressEvent:[37,2,1,""],paintEvent:[37,2,1,""]},"TermTk.TTkTestWidgets.testwidgetsizes":{TTkTestWidgetSizes:[38,1,1,""]},"TermTk.TTkTestWidgets.testwidgetsizes.TTkTestWidgetSizes":{mousePressEvent:[38,2,1,""],mouseReleaseEvent:[38,2,1,""],paintEvent:[38,2,1,""]},"TermTk.TTkTypes":{viewitem:[40,0,0,"-"]},"TermTk.TTkWidgets":{Fancy:[42,0,0,"-"],TTkPickers:[49,0,0,"-"],about:[53,0,0,"-"],button:[54,0,0,"-"],checkbox:[55,0,0,"-"],combobox:[56,0,0,"-"],filetree:[57,0,0,"-"],frame:[58,0,0,"-"],graph:[59,0,0,"-"],image:[60,0,0,"-"],label:[61,0,0,"-"],lineedit:[62,0,0,"-"],list_:[63,0,0,"-"],listwidget:[64,0,0,"-"],menubar:[65,0,0,"-"],radiobutton:[66,0,0,"-"],resizableframe:[67,0,0,"-"],scrollarea:[68,0,0,"-"],scrollbar:[69,0,0,"-"],spacer:[70,0,0,"-"],spinbox:[71,0,0,"-"],splitter:[72,0,0,"-"],tabwidget:[73,0,0,"-"],texedit:[74,0,0,"-"],tree:[75,0,0,"-"],treewidget:[76,0,0,"-"],treewidgetitem:[77,0,0,"-"],widget:[78,0,0,"-"],window:[79,0,0,"-"]},"TermTk.TTkWidgets.Fancy":{table:[43,0,0,"-"],tableview:[44,0,0,"-"],tree:[45,0,0,"-"],treeview:[46,0,0,"-"],treewidget:[47,0,0,"-"],treewidgetitem:[48,0,0,"-"]},"TermTk.TTkWidgets.Fancy.table":{TTkFancyTable:[43,1,1,""]},"TermTk.TTkWidgets.Fancy.tableview":{TTkFancyTableView:[44,1,1,""]},"TermTk.TTkWidgets.Fancy.tree":{TTkFancyTree:[45,1,1,""]},"TermTk.TTkWidgets.Fancy.treeview":{TTkFancyTreeView:[46,1,1,""]},"TermTk.TTkWidgets.Fancy.treewidget":{TTkFancyTreeWidget:[47,1,1,""]},"TermTk.TTkWidgets.TTkPickers":{colorpicker:[50,0,0,"-"],dateTimePicker:[51,0,0,"-"],filepicker:[52,0,0,"-"]},"TermTk.TTkWidgets.TTkPickers.colorpicker":{TTkColorButtonPicker:[50,1,1,""],TTkColorDialogPicker:[50,1,1,""]},"TermTk.TTkWidgets.TTkPickers.colorpicker.TTkColorDialogPicker":{paintEvent:[50,2,1,""]},"TermTk.TTkWidgets.TTkPickers.filepicker":{TTkFileDialogPicker:[52,1,1,""]},"TermTk.TTkWidgets.about":{TTkAbout:[53,1,1,""]},"TermTk.TTkWidgets.about.TTkAbout":{paintEvent:[53,2,1,""]},"TermTk.TTkWidgets.button":{TTkButton:[54,1,1,""]},"TermTk.TTkWidgets.button.TTkButton":{keyEvent:[54,2,1,""],mousePressEvent:[54,2,1,""],mouseReleaseEvent:[54,2,1,""],paintEvent:[54,2,1,""]},"TermTk.TTkWidgets.checkbox":{TTkCheckbox:[55,1,1,""]},"TermTk.TTkWidgets.checkbox.TTkCheckbox":{keyEvent:[55,2,1,""],mousePressEvent:[55,2,1,""],paintEvent:[55,2,1,""]},"TermTk.TTkWidgets.combobox":{TTkComboBox:[56,1,1,""]},"TermTk.TTkWidgets.combobox.TTkComboBox":{keyEvent:[56,2,1,""],mousePressEvent:[56,2,1,""],paintEvent:[56,2,1,""],resizeEvent:[56,2,1,""]},"TermTk.TTkWidgets.frame":{TTkFrame:[58,1,1,""]},"TermTk.TTkWidgets.frame.TTkFrame":{paintEvent:[58,2,1,""],resizeEvent:[58,2,1,""]},"TermTk.TTkWidgets.graph":{TTkGraph:[59,1,1,""]},"TermTk.TTkWidgets.graph.TTkGraph":{paintEvent:[59,2,1,""]},"TermTk.TTkWidgets.image":{TTkImage:[60,1,1,""]},"TermTk.TTkWidgets.image.TTkImage":{paintEvent:[60,2,1,""]},"TermTk.TTkWidgets.label":{TTkLabel:[61,1,1,""]},"TermTk.TTkWidgets.label.TTkLabel":{paintEvent:[61,2,1,""]},"TermTk.TTkWidgets.lineedit":{TTkLineEdit:[62,1,1,""]},"TermTk.TTkWidgets.lineedit.TTkLineEdit":{keyEvent:[62,2,1,""],mousePressEvent:[62,2,1,""],paintEvent:[62,2,1,""]},"TermTk.TTkWidgets.list_":{TTkList:[63,1,1,""]},"TermTk.TTkWidgets.listwidget":{TTkAbstractListItem:[64,1,1,""],TTkListWidget:[64,1,1,""]},"TermTk.TTkWidgets.listwidget.TTkAbstractListItem":{keyEvent:[64,2,1,""],mousePressEvent:[64,2,1,""],mouseReleaseEvent:[64,2,1,""]},"TermTk.TTkWidgets.listwidget.TTkListWidget":{keyEvent:[64,2,1,""],resizeEvent:[64,2,1,""]},"TermTk.TTkWidgets.menubar":{TTkMenuButton:[65,1,1,""],TTkMenuLayout:[65,1,1,""]},"TermTk.TTkWidgets.menubar.TTkMenuButton":{paintEvent:[65,2,1,""]},"TermTk.TTkWidgets.radiobutton":{TTkRadioButton:[66,1,1,""]},"TermTk.TTkWidgets.radiobutton.TTkRadioButton":{keyEvent:[66,2,1,""],mousePressEvent:[66,2,1,""],paintEvent:[66,2,1,""]},"TermTk.TTkWidgets.resizableframe":{TTkResizableFrame:[67,1,1,""]},"TermTk.TTkWidgets.resizableframe.TTkResizableFrame":{mouseDragEvent:[67,2,1,""],mousePressEvent:[67,2,1,""]},"TermTk.TTkWidgets.scrollarea":{TTkScrollArea:[68,1,1,""]},"TermTk.TTkWidgets.scrollbar":{TTkScrollBar:[69,1,1,""]},"TermTk.TTkWidgets.scrollbar.TTkScrollBar":{mouseDragEvent:[69,2,1,""],mousePressEvent:[69,2,1,""],paintEvent:[69,2,1,""],wheelEvent:[69,2,1,""]},"TermTk.TTkWidgets.spacer":{TTkSpacer:[70,1,1,""]},"TermTk.TTkWidgets.spinbox":{TTkSpinBox:[71,1,1,""]},"TermTk.TTkWidgets.spinbox.TTkSpinBox":{keyEvent:[71,2,1,""],mouseDragEvent:[71,2,1,""],mousePressEvent:[71,2,1,""],paintEvent:[71,2,1,""]},"TermTk.TTkWidgets.splitter":{TTkSplitter:[72,1,1,""]},"TermTk.TTkWidgets.splitter.TTkSplitter":{addWidget:[72,2,1,""],mouseDragEvent:[72,2,1,""],mousePressEvent:[72,2,1,""],paintEvent:[72,2,1,""],resizeEvent:[72,2,1,""]},"TermTk.TTkWidgets.tabwidget":{TTkTabWidget:[73,1,1,""]},"TermTk.TTkWidgets.tabwidget.TTkTabWidget":{paintEvent:[73,2,1,""],resizeEvent:[73,2,1,""]},"TermTk.TTkWidgets.texedit":{TTkTextEdit:[74,1,1,""]},"TermTk.TTkWidgets.tree":{TTkTree:[75,1,1,""]},"TermTk.TTkWidgets.treewidget":{TTkTreeWidget:[76,1,1,""]},"TermTk.TTkWidgets.treewidget.TTkTreeWidget":{mouseDoubleClickEvent:[76,2,1,""],mouseDragEvent:[76,2,1,""],mousePressEvent:[76,2,1,""],paintEvent:[76,2,1,""]},"TermTk.TTkWidgets.widget":{TTkWidget:[78,1,1,""]},"TermTk.TTkWidgets.widget.TTkWidget":{addWidget:[78,2,1,""],getPadding:[78,2,1,""],mouseEvent:[78,2,1,""],move:[78,2,1,""],moveEvent:[78,2,1,""],paintChildCanvas:[78,2,1,""],paintEvent:[78,2,1,""],removeWidget:[78,2,1,""],resize:[78,2,1,""],resizeEvent:[78,2,1,""],setGeometry:[78,2,1,""],setPadding:[78,2,1,""]},"TermTk.TTkWidgets.window":{TTkWindow:[79,1,1,""]},"TermTk.TTkWidgets.window.TTkWindow":{mouseDragEvent:[79,2,1,""],mousePressEvent:[79,2,1,""],paintEvent:[79,2,1,""]},"TermTk.libbpytop":{colors:[81,0,0,"-"],input:[82,0,0,"-"],inputkey:[83,0,0,"-"],term:[84,0,0,"-"]},"TermTk.libbpytop.term":{Mv:[84,1,1,""],Term:[84,1,1,""]},"TermTk.libbpytop.term.Term":{echo:[84,2,1,""]},TermTk:{TTkAbstract:[1,0,0,"-"],TTkCore:[5,0,0,"-"],TTkGui:[18,0,0,"-"],TTkLayouts:[25,0,0,"-"],TTkTemplates:[29,0,0,"-"],TTkTestWidgets:[35,0,0,"-"],TTkTypes:[39,0,0,"-"],TTkWidgets:[41,0,0,"-"],libbpytop:[80,0,0,"-"],pyTTkSignal:[14,4,1,""],pyTTkSlot:[14,4,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:function"},terms:{"000044":24,"000066":24,"000088":24,"0000ff":8,"001":86,"002":[26,27,28,86],"00ff00":8,"00ffff":24,"0x10000":78,"111111":24,"123":88,"222222":24,"444444":24,"888888":24,"char":76,"class":[3,4,6,8,9,16,17,20,24,26,27,28,36,37,38,43,44,45,46,47,50,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,84,87,89],"default":[8,24,26,27,28,54,78,87,89],"function":[4,6,14,26,27,37,38,54,55,56,62,64,66,67,69,71,72,76,79,84,88],"import":[86,87,88,89],"int":[26,27,28,56,78,88],"new":[6,24,78],"return":[4,17,37,38,54,55,56,62,64,66,67,69,71,72,76,78,79],"static":84,"true":[4,37,38,54,55,56,62,64,66,67,69,71,72,76,78,79,86,87,88,89],Eve:[88,89],For:[14,88],Pos:76,The:[8,14,16,26,27,28,54,78,86,87,88,89],Used:[28,87],_ttkcolor:[6,8,24],aaaaaa:24,aaffaa:24,aaffff:24,abil:78,abl:[14,88],abov:[86,87,88,89],abus:6,activ:16,add:[14,26,27,72,78,86,87,88],added:[26,27,72,78],additem:[26,27,87],addwidget:[26,27,72,78,87],after:[4,28,56,58,64,72,73,78,87],align:[6,9,28],all:[9,27,28,54,78,87],allow:[27,28,87,89],alreadi:78,ani:[14,16,88],annoi:50,anootherslot:88,anoth:[14,88],anotherslot:88,api:[85,89],append:87,applic:[17,86],area:[28,78,87],arg:[3,4,6,14,16,17,26,27,28,36,37,38,43,44,45,46,47,50,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79],argument:16,arrang:16,attach:[86,87,89],automat:[27,28,87],avail:9,background:8,base:[8,28,54,78,85,87],becaus:[28,87],been:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,79],between:[14,88],black:50,blob:[26,27,28],blue:50,bold:[8,24],bool:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,78,79,84],border:[54,86,87,88,89],bordercolor:54,bottom:78,box0:20,box1:20,box:[20,26],btnhide:88,btnshow:88,button1:87,button2:87,button3:87,button4:87,button5:87,button6:87,button:[14,87,88],buttonbordercolor:[24,54],buttonbordercolorclick:24,buttonbordercolordis:24,buttonbordercolorfocu:24,buttonbox:20,buttonboxgrid:24,buttonboxgridclick:24,buttonboxgriddis:24,buttontextcolor:[24,54],buttontextcolorclick:24,buttontextcolordis:24,buttontextcolorfocu:24,call:[14,16,17,88],callabl:16,callback:[4,37,38,50,53,54,55,56,58,59,60,61,62,64,65,66,69,71,72,73,76,78,79,89],can:[4,24,37,38,54,55,56,62,64,66,67,69,71,72,76,79],cancel:50,canva:50,caption:86,ceccopierangiolieugenio:[26,27,28],center:9,center_align:9,chang:[14,88],checkboxbordercolor:24,checkboxbordercolorfocu:24,checkboxcontentcolor:24,checkboxcontentcolorfocu:24,child:[72,78],click:[14,76,88],close:[14,88],code:[6,17,86,87,88,89],col:[26,27,28,87],collect:84,color:[6,24,50,54],color_1:8,color_2:8,color_3:8,color_bg_blu:8,color_bg_green:8,color_bg_r:8,color_fg_blu:8,color_fg_green:8,color_fg_r:8,colormod:8,colspan:[26,27,28],column:[27,84],columnminheight:[27,87],columnminwidth:[27,87],columnpo:76,com:[26,27,28],combin:8,comboboxbordercolor:24,comboboxcontentcolor:24,comboboxcontentcolorfocu:24,command:84,commun:[14,88],completemess:88,configur:89,connect:88,consid:76,constructor:[8,16],contain:9,context:89,control:[16,50],creat:[8,86,87,88,89],critic:89,criticalmsg:89,current:6,cursor:84,custom:50,customlog:89,cut:6,cyanish:24,dddd88:24,dddddd:24,debug:[88,89],def:[88,89],defaut:87,defin:[78,86,88,89],definit:85,deriv:28,describ:9,destroi:17,differ:[87,88],discontinu:85,doc:[14,88],don:78,drag:[37,67,69,71,72,76,79],drawing_charact:20,drawtext:6,echo:84,edg:9,eft:84,elif:89,emit:[14,88],empti:[27,87],enabl:78,enter:[17,86],error:89,errormsg:89,event:[4,14,17,28,37,38,50,53,54,55,56,58,59,60,61,62,64,65,66,67,69,71,72,73,76,78,79,87,88],evolv:85,evt:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,78,79],exampl:[8,14,20],example1:[88,89],example2:[88,89],example3:89,example4:89,execut:[86,87],executablecolor:24,exit:17,expand:87,extend:24,failnamecolor:24,fals:[6,54],fatal:89,fatalmsg:89,ff0000:[8,24],ffaaff:24,ffff00:[8,24],ffff55:24,ffff88:24,ffffaa:24,ffffdd:24,ffffff:24,fileiconcolor:24,filenamecolor:24,first:87,foldericoncolor:24,foldernamecolor:24,follow:[86,87,88,89],footprint:6,forcecolor:6,foreground:8,fps:[88,89],framebordercolor:24,frametitlecolor:24,free:[28,87],from:[16,20,78,85,88,89],gener:[14,88],geometri:28,get:27,getpad:78,github:[26,27,28],green:50,greenish:24,grid0:20,grid1:20,grid2:20,grid3:20,grid4:20,grid5:20,grid6:20,grid7:20,grid8:20,grid9:20,grid:[20,26,27,28],gridlayout:87,gtk:85,gui:[14,86,88],handl:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,78,79],handler:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,79,89],has:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,79],have:[14,28,87,88],hbox:87,hboxlayout:87,heavili:[14,88],height:[6,27,78],hello:85,hellowin:86,helloworld:86,helper:8,here:6,hex:[8,20],hide:88,horizont:[9,26,87],html:[14,50,88],http:[14,20,26,27,28,88],hue:50,ids:20,ight:84,includ:24,index:85,info:[84,89],infomsg:89,inherit:28,init:6,input:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,78,79,84,88],inspir:[14,85,88],installmessagehandl:89,interfac:[54,78,85],intern:9,interpret:85,invok:16,involv:86,ital:8,item:[9,26,27,28],justifi:9,keep:6,kei:[54,55,56,62,64,66,71],keyev:[54,55,56,62,64,66,71],keyword:16,kind:[14,88],kwarg:[3,4,6,14,16,17,26,27,28,36,37,38,43,44,45,46,47,50,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79],label1:20,label2:20,label3:20,label4:20,label:86,layout:[9,26,27,50,72,78,85,88,89],layoutitem:9,layoutitemtyp:[9,28],least:76,left:[9,78],left_align:9,legaci:87,less:50,lib:[88,89],libbpytop:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,79,85],librari:85,line:[26,84],lineedittextcolor:24,lineedittextcolorfocu:24,linknamecolor:24,list:78,listcolor:24,listcolorhighlight:24,listcolorselect:24,log:85,logtofil:89,logtostdout:89,logview:[88,89],logwin:[88,89],loop:[17,86,89],mai:16,main:[17,26,27,28,86,89],mainli:[28,87],mainloop:[17,86,87,88,89],mainthread:88,manag:28,mani:[14,88],max:78,maxheight:78,maximumheight:27,maximumwidth:27,maxsiz:78,maxwidth:78,menu:20,menubuttonbordercolor:24,menubuttonbordercolorclick:24,menubuttoncolor:24,menubuttoncolorclick:24,menubuttonshortcutcolor:24,messag:89,message_handl:89,method:[16,86,87],min:[27,76],minheight:78,minimum:27,minimumheight:27,minimumwidth:27,minsiz:78,minwidth:78,mix:85,mod:8,mode:89,modifi:8,modul:85,more:[14,16,50,88],most:[6,16],mous:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,79],mousedoubleclickev:76,mousedragev:[37,67,69,71,72,76,79],mouseev:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,78,79],mousepressev:[37,38,54,55,56,62,64,66,67,69,71,72,76,79],mousereleaseev:[38,54,64],move:[28,78,87],moveev:78,movement:84,msgtype:89,must:16,name:[78,87],need:[37,38,50,53,54,55,56,58,59,60,61,62,65,66,69,71,72,73,76,78,79],nerdtre:24,none:[6,8,9,26,27,28,72,78,89],note:[6,87],notifi:[14,88],object:[6,8,14,16,24,54,78,86,88],occur:[14,88],often:[14,88],onc:16,one:[6,14,88],onli:[8,28],option:[26,27,28,54,78],order:6,org:20,othersign:88,otherslot:88,our:[14,88],output:[86,87,88,89],overrid:[16,78],overridden:[37,38,50,53,54,55,56,58,59,60,61,62,65,66,69,71,72,73,76,78,79],own:[14,84,88],packag:[86,88,89],pad:78,padb:78,paddingbottom:78,paddingleft:78,paddingright:78,paddingtop:78,padl:78,padr:78,padt:78,page:85,paint:[37,38,50,53,54,55,56,58,59,60,61,62,65,66,69,71,72,73,76,78,79],paintchildcanva:78,paintev:[37,38,50,53,54,55,56,58,59,60,61,62,65,66,69,71,72,73,76,78,79],palett:50,paramet:[6,26,27,28,54,72,78,87],parent:[78,86,87,88,89],particular:[14,88],pass:16,per:16,person:85,picker:50,place:[27,87],placement:[28,87],pos:[6,28,78,86,87,88,89],posit:[78,86,87],possibl:[14,87,88],predefin:[14,88],press:[37,38,54,55,56,62,64,66,67,69,71,72,76,79],previous:78,print:89,probabl:[14,88],process:[27,89],produc:[86,87,88,89],program:[14,88],project:85,proper:88,prototyp:20,provid:89,purpl:[24,50],push:89,pycut:85,pytermtk:[26,27,28],python3:[88,89],pyttksign:[14,88],pyttkslot:[14,88],qt5:[14,85,88],quit:17,radiobuttonbordercolor:24,radiobuttonbordercolorfocu:24,radiobuttoncontentcolor:24,radiobuttoncontentcolorfocu:24,rais:16,rang:[28,87],rearrang:28,receiv:[4,37,38,54,55,56,62,64,66,67,69,71,72,76,79,88],recommend:87,red:50,redraw:50,reduc:6,redunt:6,refer:85,regist:89,reimplement:[4,24,37,38,54,55,56,62,64,66,67,69,71,72,76,79],releas:[38,54,64],remov:78,removewidget:78,replac:87,repres:[16,86],resiz:[4,6,27,56,58,64,72,73,78,87],resizeev:[4,56,58,64,72,73,78],respect:16,respons:[14,88],restor:84,retriev:78,right:[9,78],right_align:9,root:[86,87,88,89],row:[26,27,28,87],rowspan:[26,27,28],rst:[8,24],run:16,runtimeerror:16,sack:88,same:16,save:84,screenshot:88,search:85,sec:16,select:76,separ:16,sequenti:16,session:89,set:[78,87,89],setgeometri:78,setlayout:87,setpad:78,show:88,shown:54,signal:[85,89],signalsandslot:[14,88],signalslot:88,signatur:88,simil:24,simpl:[86,88],site:[88,89],size:[27,50,72,78,86,87,88,89],slot:85,some:[6,20,89],sourc:[3,4,6,8,9,14,16,17,20,24,26,27,28,36,37,38,43,44,45,46,47,50,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,84],space:[9,76],specialis:87,specif:87,standard:16,start:[16,86,88,89],step:86,str:[8,54,78],striketrough:8,subclass:[4,14,16,37,38,54,55,56,62,64,66,67,69,71,72,76,79,88],success:[4,56,58,64,72,73,78],tab:20,tabbordercolor:24,tabbordercolorfocu:24,tabcolor:24,tabcolorfocu:24,taboffsetcolor:24,taboffsetcolorfocu:24,tabselectcolor:24,tabselectcolorfocu:24,taken:16,target:16,tell:17,termin:[8,50,78,84,86,87],termtk:[85,86,87,88,89],test:[88,89],text:[6,9,20,54,85,86,87,88],than:[14,16,88],them:[14,87,88],thi:[4,9,16,24,26,27,28,37,38,50,54,55,56,62,64,66,67,69,71,72,76,78,79,87,88],thread:16,ths:[37,38,50,53,54,55,56,58,59,60,61,62,65,66,69,71,72,73,76,78,79],titl:[86,88,89],tkinter:85,toggl:84,too:50,top:78,total:88,touch:[78,85],treeheadercolor:24,treelinecolor:24,treeselectedcolor:24,trigger:[4,56,58,64,72,73,78],ttk:[86,87,88,89],ttkabstract:85,ttkbutton:[87,88],ttkcolor:[24,54],ttkcore:[24,85,88,89],ttkgridlayout:[26,28],ttkgui:85,ttkk:28,ttklabel:86,ttklayout:[9,78,85],ttklayoutitem:[26,27],ttklog:[88,89],ttklogview:88,ttktemplat:85,ttktestwidget:85,ttktype:85,ttkvboxlayout:[88,89],ttkwidget:[14,26,27,85,88],ttkwindow:[28,86,88,89],tui:85,tutori:[26,27,28,85,88,89],type:[9,20,28],underlin:[8,24],until:17,use:87,use_default_file_log:89,use_default_stdout_log:[88,89],used:[9,14,26,27,28,87,88,89],useless:88,user:[14,54,78,85,88],uses:[26,27],using:[86,87],val:88,valu:[8,88],vbox:87,vboxlayout:87,venv:[88,89],vertic:[26,87],visibl:78,wait:17,want:[14,88],warn:89,warningmsg:89,wheel:[4,69],wheelev:[4,69],when:[14,88],white:50,widget1:[26,27,28,87],widget2:[26,27,28,87],widget3:[26,27,87],widget4:[27,87],widget5:[27,87],widget:[4,9,14,17,26,27,28,37,38,50,53,54,55,56,58,59,60,61,62,64,65,66,67,69,71,72,73,76,79,86,87],widgetitem:9,width:[6,27,78],wiki:20,wikipedia:20,window:[14,50,87,88,89],windowbordercolor:24,windowbordercolorfocu:24,world:85,xterm:78,yellowish:24,yet:28,you:16,yuhuuuuu:86},titles:["TermTk","TermTk.TTkAbstract","TermTk.TTkAbstract.abstractitemmodel","TermTk.TTkAbstract.abstractscrollarea","TermTk.TTkAbstract.abstractscrollview","TermTk.TTkCore","TermTk.TTkCore.canvas","TermTk.TTkCore.cfg","TermTk.TTkCore.color","TermTk.TTkCore.constant","TermTk.TTkCore.draw","TermTk.TTkCore.filebuffer","TermTk.TTkCore.helper","TermTk.TTkCore.log","TermTk.TTkCore.signal","TermTk.TTkCore.string","TermTk.TTkCore.timer","TermTk.TTkCore.ttk","TermTk.TTkGui","TermTk.TTkGui.draw_ascii","TermTk.TTkGui.draw_utf8","TermTk.TTkGui.fileicon_ascii","TermTk.TTkGui.fileicon_nerd","TermTk.TTkGui.fileicon_utf8","TermTk.TTkGui.theme","TermTk.TTkLayouts","TermTk.TTkLayouts.boxlayout","TermTk.TTkLayouts.gridlayout","TermTk.TTkLayouts.layout","TermTk.TTkTemplates","TermTk.TTkTemplates.color","TermTk.TTkTemplates.data","TermTk.TTkTemplates.keyevents","TermTk.TTkTemplates.mouseevents","TermTk.TTkTemplates.text","TermTk.TTkTestWidgets","TermTk.TTkTestWidgets.logviewer","TermTk.TTkTestWidgets.testwidget","TermTk.TTkTestWidgets.testwidgetsizes","TermTk.TTkTypes","TermTk.TTkTypes.viewitem","TermTk.TTkWidgets","TermTk.TTkWidgets.Fancy","TermTk.TTkWidgets.Fancy.table","TermTk.TTkWidgets.Fancy.tableview","TermTk.TTkWidgets.Fancy.tree","TermTk.TTkWidgets.Fancy.treeview","TermTk.TTkWidgets.Fancy.treewidget","TermTk.TTkWidgets.Fancy.treewidgetitem","TermTk.TTkWidgets.TTkPickers","TermTk.TTkWidgets.TTkPickers.colorpicker","TermTk.TTkWidgets.TTkPickers.dateTimePicker","TermTk.TTkWidgets.TTkPickers.filepicker","TermTk.TTkWidgets.about","TermTk.TTkWidgets.button","TermTk.TTkWidgets.checkbox","TermTk.TTkWidgets.combobox","TermTk.TTkWidgets.filetree","TermTk.TTkWidgets.frame","TermTk.TTkWidgets.graph","TermTk.TTkWidgets.image","TermTk.TTkWidgets.label","TermTk.TTkWidgets.lineedit","TermTk.TTkWidgets.list_","TermTk.TTkWidgets.listwidget","TermTk.TTkWidgets.menubar","TermTk.TTkWidgets.radiobutton","TermTk.TTkWidgets.resizableframe","TermTk.TTkWidgets.scrollarea","TermTk.TTkWidgets.scrollbar","TermTk.TTkWidgets.spacer","TermTk.TTkWidgets.spinbox","TermTk.TTkWidgets.splitter","TermTk.TTkWidgets.tabwidget","TermTk.TTkWidgets.texedit","TermTk.TTkWidgets.tree","TermTk.TTkWidgets.treewidget","TermTk.TTkWidgets.treewidgetitem","TermTk.TTkWidgets.widget","TermTk.TTkWidgets.window","TermTk.libbpytop","TermTk.libbpytop.colors","TermTk.libbpytop.input","TermTk.libbpytop.inputkey","TermTk.libbpytop.term","Welcome to pyTermTk\u2019s documentation!","pyTermTk - Hello World","pyTermTk - Layouts","pyTermTk - Signal & Slots","pyTermTk - Logging"],titleterms:{Use:[88,89],about:53,abstractitemmodel:2,abstractscrollarea:3,abstractscrollview:4,basic:88,boxlayout:26,button:54,canva:6,cfg:7,checkbox:55,color:[8,30,81],colorpick:50,colspan:87,combobox:56,constant:9,custom:89,data:31,datetimepick:51,document:85,draw:10,draw_ascii:19,draw_utf8:20,exampl:[86,87,88,89],fanci:[42,43,44,45,46,47,48],file:89,filebuff:11,fileicon_ascii:21,fileicon_nerd:22,fileicon_utf8:23,filepick:52,filetre:57,first:86,frame:58,graph:59,grid:87,gridlayout:27,hello:86,helper:12,imag:60,indic:85,input:82,inputkei:83,intro:[14,85,86,87,88,89],keyev:32,label:61,layout:[25,28,87],libbpytop:[80,81,82,83,84],lineedit:62,list_:63,listwidget:64,log:[13,89],logview:36,menubar:65,method:14,mouseev:33,nest:87,pytermtk:[85,86,87,88,89],radiobutton:66,resizablefram:67,rowspan:87,scrollarea:68,scrollbar:69,signal:[14,88],simpl:87,slot:[14,88],spacer:70,spinbox:71,splitter:72,stdout:89,string:15,tabl:[43,85],tableview:44,tabwidget:73,term:84,termtk:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],testwidget:37,testwidgets:38,texedit:74,text:34,theme:24,timer:16,tree:[45,75],treeview:46,treewidget:[47,76],treewidgetitem:[48,77],ttk:17,ttkabout:53,ttkabstract:[1,2,3,4],ttkabstractlistitem:64,ttkabstractscrollarea:3,ttkabstractscrollview:4,ttkbutton:54,ttkcanva:6,ttkcheckbox:55,ttkcolor:8,ttkcolorbuttonpick:50,ttkcolordialogpick:50,ttkcombobox:56,ttkconstant:9,ttkcore:[5,6,7,8,9,10,11,12,13,14,15,16,17],ttkfancyt:43,ttkfancytableview:44,ttkfancytre:45,ttkfancytreeview:46,ttkfancytreewidget:47,ttkfiledialogpick:52,ttkframe:58,ttkgraph:59,ttkgridlayout:[27,87],ttkgui:[18,19,20,21,22,23,24],ttkhboxlayout:[26,87],ttkimag:60,ttkk:9,ttklabel:61,ttklayout:[25,26,27,28,87],ttklayoutitem:28,ttklineedit:62,ttklist:63,ttklistwidget:64,ttklogview:[36,89],ttkmenubutton:65,ttkmenulayout:65,ttkpicker:[49,50,51,52],ttkradiobutton:66,ttkresizablefram:67,ttkscrollarea:68,ttkscrollbar:69,ttkspacer:70,ttkspinbox:71,ttksplitter:72,ttktabwidget:73,ttktemplat:[29,30,31,32,33,34],ttktestwidget:[35,36,37,38],ttktestwidgets:38,ttktextedit:74,ttktheme:[20,24],ttktimer:16,ttktree:75,ttktreewidget:76,ttktype:[39,40],ttkvboxlayout:[26,87],ttkwidget:[41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79],ttkwidgetitem:28,ttkwindow:79,tutori:14,viewitem:40,welcom:85,widget:[78,88,89],window:[79,86],world:86,your:86}}) \ No newline at end of file diff --git a/tutorial/001-helloworld.html b/tutorial/001-helloworld.html index 8224b11e..1fdbe71d 100644 --- a/tutorial/001-helloworld.html +++ b/tutorial/001-helloworld.html @@ -15,6 +15,7 @@ + diff --git a/tutorial/002-layout.html b/tutorial/002-layout.html index b400c9ab..7c2756d9 100644 --- a/tutorial/002-layout.html +++ b/tutorial/002-layout.html @@ -15,6 +15,7 @@ + diff --git a/tutorial/003-signalslots.html b/tutorial/003-signalslots.html index ace8f10b..4912f1d7 100644 --- a/tutorial/003-signalslots.html +++ b/tutorial/003-signalslots.html @@ -15,6 +15,7 @@ + diff --git a/tutorial/004-logging.html b/tutorial/004-logging.html index 83858931..9cd6ff56 100644 --- a/tutorial/004-logging.html +++ b/tutorial/004-logging.html @@ -15,6 +15,7 @@ +