Browse Source

Added Layout Offset, Removed "groupMoveTo"

pull/14/head
Eugenio Parodi 5 years ago
parent
commit
3a46709641
  1. 16
      TermTk/TTkLayouts/layout.py
  2. 11
      TermTk/TTkWidgets/TTkPickers/colorpicker.py
  3. 2
      TermTk/TTkWidgets/listwidget.py
  4. 2
      TermTk/TTkWidgets/menubar.py
  5. 2
      TermTk/TTkWidgets/scrollarea.py
  6. 13
      TermTk/TTkWidgets/widget.py
  7. 5
      TermTk/libbpytop/colors.py
  8. 2
      TermTk/libbpytop/term.py
  9. 5
      demo/showcase/scrollarea.py
  10. 3
      docs/MDNotes/TODO.md

16
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

11
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)

2
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):

2
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])

2
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()

13
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 or x>=lx+lw or y<ly 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:

5
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

2
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)

5
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

3
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

Loading…
Cancel
Save