Browse Source

Added Widget iterator in the layout

pull/15/head
Eugenio Parodi 5 years ago
parent
commit
17690f7eb6
  1. 13
      TermTk/TTkCore/helper.py
  2. 9
      TermTk/TTkLayouts/layout.py
  3. 2
      TermTk/TTkWidgets/tabwidget.py

13
TermTk/TTkCore/helper.py

@ -228,15 +228,6 @@ class TTkHelper:
layout = layout.parent()
return (wx, wy)
def _iterWidgets(item):
for child in item.children():
if child.layoutItemType == TTkK.WidgetItem:
if not child.widget().isVisible(): continue
yield child.widget()
yield from TTkHelper._iterWidgets(child.widget().rootLayout())
if child.layoutItemType == TTkK.LayoutItem:
yield from TTkHelper._iterWidgets(child)
def nextFocus(widget):
rootWidget = TTkHelper.rootOverlay(widget)
if not rootWidget:
@ -244,7 +235,7 @@ class TTkHelper:
if widget == rootWidget:
widget = None
first = None
for w in TTkHelper._iterWidgets(rootWidget.rootLayout()):
for w in rootWidget.rootLayout().iterWidgets():
if not first and w.focusPolicy() & TTkK.TabFocus == TTkK.TabFocus:
first = w
# TTkLog.debug(f"{w._name} {widget}")
@ -267,7 +258,7 @@ class TTkHelper:
if widget == rootWidget:
widget = None
prev = None
for w in TTkHelper._iterWidgets(rootWidget.rootLayout()):
for w in rootWidget.rootLayout().iterWidgets():
# TTkLog.debug(f"{w._name} {widget}")
if w == widget:
widget=None

9
TermTk/TTkLayouts/layout.py

@ -192,6 +192,15 @@ class TTkLayout(TTkLayoutItem):
else:
return self._parent.parentWidget()
def iterWidgets(self):
for child in self._items:
if child.layoutItemType == TTkK.WidgetItem:
if not child.widget().isVisible(): continue
yield child.widget()
yield from child.widget().rootLayout().iterWidgets()
if child.layoutItemType == TTkK.LayoutItem:
yield from child.iterWidgets()
def _zSortItems(self):
self._zSortedItems = sorted(self._items, key=lambda item: item.z)

2
TermTk/TTkWidgets/tabwidget.py

@ -190,7 +190,6 @@ class _TTkTabs(TTkWidget):
leftScroller=self._leftScroller, rightScroller=self._rightScroller,
color=tabColor, borderColor=tabBorderColor, selectColor=tabSelectColor, offsetColor=tabOffsetColor)
'''
Root Layout
@ -245,7 +244,6 @@ class TTkTabWidget(TTkFrame):
self.setPadding(2,0,0,0)
self.rootLayout().addItem(self._tabBarTopLayout)
self._tabBarTopLayout.setGeometry(0,0,self._width,self._padt)
self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
@pyTTkSlot(int)
def _tabChanged(self, index):

Loading…
Cancel
Save