diff --git a/TermTk/TTkLayouts/layout.py b/TermTk/TTkLayouts/layout.py index 09fadf0d..dca6df99 100644 --- a/TermTk/TTkLayouts/layout.py +++ b/TermTk/TTkLayouts/layout.py @@ -43,6 +43,7 @@ class TTkLayoutItem: ''' __slots__ = ( '_x', '_y', '_z', '_w', '_h', + '_xOffset', '_yOffset', '_maxw', '_maxh', '_minw', '_minh', '_row','_col', '_rowspan', '_colspan', @@ -59,6 +60,8 @@ class TTkLayoutItem: self._h = kwargs.get('height', 0 ) self._w, self._h = kwargs.get('size', (self._w, self._h)) self._z = kwargs.get('z',0) + self._xOffset = 0 + self._yOffset = 0 self._row = kwargs.get('row', 0) self._col = kwargs.get('col', 0) self._rowspan = kwargs.get('rowspan', 1) @@ -104,10 +107,15 @@ class TTkLayoutItem: def maximumWidthSpan(self,pos) -> int: return TTkLayoutItem._calcSpanValue(self.maximumWidth(), pos,self._col,self._colspan) + def offset(self): return self._xOffset, self._yOffset def pos(self): return self._x, self._y def size(self): return self._w, self._h def geometry(self): return self._x, self._y, self._w, self._h + def setOffset(self, x, y): + self._xOffset = x + self._yOffset = y + def setGeometry(self, x, y, w, h): self._x = x self._y = y @@ -262,14 +270,6 @@ class TTkLayout(TTkLayoutItem): TTkLayoutItem.setGeometry(self, x, y, w, h) self.update(repaint=True, updateLayout=True) - def groupMoveTo(self, x, y): - ox,oy,_,_ = self.fullWidgetAreaGeometry() - dx = x-ox - dy = y-oy - for item in self._items: - x,y,w,h = item.geometry() - item.setGeometry(x+dx,y+dy,w,h) - def fullWidgetAreaGeometry(self): if not self._items: return 0,0,0,0 minx,miny,maxx,maxy = 0x10000,0x10000,-0x10000,-0x10000 diff --git a/TermTk/TTkWidgets/TTkPickers/colorpicker.py b/TermTk/TTkWidgets/TTkPickers/colorpicker.py index f24fdfdb..4ea0cb88 100644 --- a/TermTk/TTkWidgets/TTkPickers/colorpicker.py +++ b/TermTk/TTkWidgets/TTkPickers/colorpicker.py @@ -246,13 +246,8 @@ class TTkColorDialogPicker(TTkWindow,TColor): self.setLayout(TTkGridLayout()) colorLayout = TTkGridLayout() # Right - # leftLayout = TTkFrame(border=False, transparent=True, minSize=(25,20), maxWidth=25) # Left leftLayout = TTkLayout(minSize=(25,20), maxWidth=25) # Left - #paletteLayout = TTkFrame(border=True, layout=TTkGridLayout(), title="Basic colors") - #customLayout = TTkFrame(border=True, layout=TTkGridLayout(), title="Custom colors") - #controlLayout = TTkFrame(border=True, minSize=(26,7) , title="Conrols") - paletteLayout = TTkGridLayout(pos=(0,0), size=(24,9)) customLayout = TTkGridLayout(pos=(0,10), size=(24,4)) controlLayout = TTkLayout( pos=(0,15), size=(24,30)) @@ -278,8 +273,6 @@ class TTkColorDialogPicker(TTkWindow,TColor): controlLayout.addWidget( cancelButton := TTkButton(pos=(13,2), size=(10,3), text="CANCEL", border=True) ) controlLayout.addWidget( TTkLabel(pos=(3,20), text="Seriously?") ) - # TODO: Get Rid of groupMove - #controlLayout.groupMoveTo(1, 15) @pyTTkSlot() def _okPressed(): @@ -409,10 +402,6 @@ class TTkColorDialogPicker(TTkWindow,TColor): leftLayout.addItem(paletteLayout) leftLayout.addItem(customLayout) leftLayout.addItem(controlLayout) - # TODO: Get Rid of groupMove - # leftLayout.groupMoveTo(1,3) - # controlLayout.groupMoveTo(2, 18) - def paintEvent(self): TTkWindow.paintEvent(self) diff --git a/TermTk/TTkWidgets/listwidget.py b/TermTk/TTkWidgets/listwidget.py index 4b2f2a38..307dfe64 100644 --- a/TermTk/TTkWidgets/listwidget.py +++ b/TermTk/TTkWidgets/listwidget.py @@ -112,7 +112,7 @@ class TTkListWidget(TTkAbstractScrollView): @pyTTkSlot() def _viewChangedHandler(self): x,y = self.getViewOffsets() - self.layout().groupMoveTo(-x,-y) + self.layout().setOffset(-x,-y) @pyTTkSlot(TTkAbstractListItem) def _labelSelectedHandler(self, label): diff --git a/TermTk/TTkWidgets/menubar.py b/TermTk/TTkWidgets/menubar.py index 7b4aefb3..276815f6 100644 --- a/TermTk/TTkWidgets/menubar.py +++ b/TermTk/TTkWidgets/menubar.py @@ -142,7 +142,7 @@ class _TTkMenuButton(TTkAbstractListItem): listw = TTkList(parent=frame, listWidget = menuListWidget) # listw.textClicked.connect(self._menuCallback) # listw.textClicked.connect(self._menuCallback) - TTkLog.debug(f"{self._menu}") + # TTkLog.debug(f"{self._menu}") for item in self._menu: listw.addItem(item) TTkHelper.overlay(self, frame, pos[0], pos[1]) diff --git a/TermTk/TTkWidgets/scrollarea.py b/TermTk/TTkWidgets/scrollarea.py index a011b30c..442e81e1 100644 --- a/TermTk/TTkWidgets/scrollarea.py +++ b/TermTk/TTkWidgets/scrollarea.py @@ -38,7 +38,7 @@ class _TTkAreaWidget(TTkAbstractScrollView): @pyTTkSlot() def _viewChangedHandler(self): x,y = self.getViewOffsets() - self.layout().groupMoveTo(-x,-y) + self.layout().setOffset(-x,-y) def viewFullAreaSize(self) -> (int, int): _,_,w,h = self.layout().fullWidgetAreaGeometry() diff --git a/TermTk/TTkWidgets/widget.py b/TermTk/TTkWidgets/widget.py index cd44dd5b..45c5989a 100644 --- a/TermTk/TTkWidgets/widget.py +++ b/TermTk/TTkWidgets/widget.py @@ -145,7 +145,7 @@ class TTkWidget(TMouseEvents,TKeyEvents): def __del__(self): ''' .. caution:: Don't touch this! ''' - TTkLog.debug("DESTRUCTOR") + # TTkLog.debug("DESTRUCTOR") if self._parent is not None: self._parent.removeWidget(self) self._parent = None @@ -196,8 +196,11 @@ class TTkWidget(TMouseEvents,TKeyEvents): else: for child in item.zSortedItems: ix, iy, iw, ih = item.geometry() - ix+=ox - iy+=oy + iox, ioy = item.offset() + ix+=ox+iox + iy+=oy+ioy + iw-=iox + ih-=ioy # child outside the bound if ix+iw < lx and ix > lx+lw and iy+ih < ly and iy > ly+lh: continue # Reduce the bound to the minimum visible @@ -283,6 +286,8 @@ class TTkWidget(TMouseEvents,TKeyEvents): ''' .. caution:: Don't touch this! ''' x, y = evt.x, evt.y lx,ly,lw,lh =layout.geometry() + lox, loy = layout.offset() + lx,ly,lw,lh = lx+lox, ly+loy, lw-lox, lh-loy # opt of bounds if x=lx+lw or y=lh+ly: return False @@ -556,7 +561,7 @@ class TTkWidget(TMouseEvents,TKeyEvents): def setFocus(self): if self._focus: return - TTkLog.debug(self._name) + # TTkLog.debug(self._name) tmp = TTkHelper.getFocus() if tmp == self: return if tmp is not None: diff --git a/TermTk/libbpytop/colors.py b/TermTk/libbpytop/colors.py index d5b0464b..96253b78 100644 --- a/TermTk/libbpytop/colors.py +++ b/TermTk/libbpytop/colors.py @@ -21,11 +21,6 @@ from select import select from time import time, sleep, strftime, localtime from typing import List, Set, Dict, Tuple, Optional, Union, Any, Callable, ContextManager, Iterable, Type, NamedTuple -try: import fcntl, termios, tty, pwd -except Exception as e: - print(f'ERROR: {e}') - exit(1) - from TermTk.libbpytop.term import Term from TermTk.TTkCore.constant import TTkK from TermTk.TTkCore.cfg import TTkCfg diff --git a/TermTk/libbpytop/term.py b/TermTk/libbpytop/term.py index 8f87b3e3..9bf91b32 100644 --- a/TermTk/libbpytop/term.py +++ b/TermTk/libbpytop/term.py @@ -21,7 +21,7 @@ from select import select from time import time, sleep, strftime, localtime from typing import List, Set, Dict, Tuple, Optional, Union, Any, Callable, ContextManager, Iterable, Type, NamedTuple -try: import fcntl, termios, tty, pwd +try: import termios except Exception as e: print(f'ERROR: {e}') exit(1) diff --git a/demo/showcase/scrollarea.py b/demo/showcase/scrollarea.py index 9f3364e9..9aee2460 100755 --- a/demo/showcase/scrollarea.py +++ b/demo/showcase/scrollarea.py @@ -49,14 +49,15 @@ class graphTimerEvent(): def demoScrollArea(root= None): scrollArea = ttk.TTkScrollArea(parent=root) - ttk.TTkTestWidgetSizes(pos=(0,0) , size=(50,25), parent=scrollArea.viewport(), border=True) + ttk.TTkTestWidget(pos=(0,0) , size=(50,25), parent=scrollArea.viewport(), border=True) ttk.TTkTestWidgetSizes(pos=(10,25) , size=(40,20), parent=scrollArea.viewport(), border=True) ttk.TTkTestWidgetSizes(pos=(20,50) , size=(60,10), parent=scrollArea.viewport(), border=True) ttk.TTkTestWidgetSizes(pos=(50,0) , size=(40,10), parent=scrollArea.viewport(), border=True) ttk.TTkTestWidgetSizes(pos=(100,0) , size=(40,10), parent=scrollArea.viewport(), border=True) ttk.TTkTestWidgetSizes(pos=(150,0) , size=(40,10), parent=scrollArea.viewport(), border=True) ttk.TTkTestWidgetSizes(pos=(50,31) , size=(60,10), parent=scrollArea.viewport(), border=True) - graph = ttk.TTkGraph( pos=(50,11) , size=(150,20), parent=scrollArea.viewport(), color=ttk.TTkColor.fg('#ff8800', modifier=ttk.TTkColorGradient(increment= 40))) + ttk.TTkTestWidget(pos=(110,15) , size=(60,40), parent=scrollArea.viewport(), border=True) + graph = ttk.TTkGraph( pos=(50,11) , size=(60,20), parent=scrollArea.viewport(), color=ttk.TTkColor.fg('#ff8800', modifier=ttk.TTkColorGradient(increment= 40))) graphTimerEvent(graph, 0.1) return scrollArea diff --git a/docs/MDNotes/TODO.md b/docs/MDNotes/TODO.md index 7fba9f86..2cee2620 100644 --- a/docs/MDNotes/TODO.md +++ b/docs/MDNotes/TODO.md @@ -60,7 +60,8 @@ - [x] Add addLayout (adDItem) method - Nested layouts - [x] Add Grid Layout - [x] Add ColSpan / RowSpan -- [ ] Get rid of groupMoveTo +- [x] Get rid of groupMoveTo +- [ ] Get rid of addWidget ### AbstractScrollArea - [x] Implement something that mimic the QAbstactScrollArea