diff --git a/TermTk/TTkWidgets/splitter.py b/TermTk/TTkWidgets/splitter.py index 041603ed..b5182b28 100644 --- a/TermTk/TTkWidgets/splitter.py +++ b/TermTk/TTkWidgets/splitter.py @@ -31,7 +31,7 @@ from TermTk.TTkWidgets.frame import * class TTkSplitter(TTkFrame): __slots__ = ( '_splitterInitialized', '_orientation', - '_separators', '_separatorsRef', '_sizeRef', + '_separators', '_separatorsRef', '_sizeRef', '_initSizes', '_separatorSelected', '_mouseDelta') def __init__(self, *args, **kwargs): self._splitterInitialized = False @@ -39,6 +39,7 @@ class TTkSplitter(TTkFrame): self._separators = [] self._separatorsRef = [] self._sizeRef = 0 + self._initSizes = [] self._separatorSelected = None self._orientation = TTkK.HORIZONTAL TTkFrame.__init__(self, *args, **kwargs) @@ -58,6 +59,7 @@ class TTkSplitter(TTkFrame): else: fullSize = h # assign the same slice to all the widgets + self._initSizes.append(size) self._separators = [fullSize*i//numW for i in range(1,numW+1)] self._updateGeometries() self._separatorsRef = self._separators @@ -156,6 +158,21 @@ class TTkSplitter(TTkFrame): self._sizeRef = size def resizeEvent(self, w, h): + if w==h==0: return + if not self._sizeRef: + # This is the first resize (w,h != 0 and previous reference size was 0) + # I need to define the initial position of all the widgets + if self._orientation == TTkK.HORIZONTAL: + self._sizeRef = w + else: + self._sizeRef = h + # get the sum of the fixed sizes + fixSize = sum(filter(None, self._initSizes)) + numVarSizes = len([x for x in self._initSizes if x is None]) + avalSize = self._sizeRef-fixSize + sizes = [avalSize//numVarSizes if s is None else s for s in self._initSizes] + self._separatorsRef = [sum(sizes[:i+1]) for i in range(len(sizes))] + # Adjust separators to the new size; self._separatorSelected = None if self._sizeRef > 0: diff --git a/demo/gittk.py b/demo/gittk.py index 05ad940e..4ed584f2 100755 --- a/demo/gittk.py +++ b/demo/gittk.py @@ -62,8 +62,8 @@ gittkVsplitter = ttk.TTkSplitter(parent=gittk, orientation=ttk.TTkK.VERTICAL) tableCommit = ttk.TTkTable(parent=gittkVsplitter, selectColor=ttk.TTkColor.bg('#882200')) gittkHsplitter = ttk.TTkSplitter(parent=gittkVsplitter, orientation=ttk.TTkK.HORIZONTAL) diffText = ttk.TTkTextEdit(parent=gittkHsplitter) -ttk.TTkTestWidgetSizes(parent=gittkHsplitter ,border=True, title="Details") -ttk.TTkLogViewer(parent=gittkVsplitter) +gittkHsplitter.addWidget(ttk.TTkTestWidgetSizes(border=True, title="Details"),20) +gittkVsplitter.addWidget(ttk.TTkLogViewer(),3) tableCommit.setColumnSize((-1,20,20)) diff --git a/demo/tlogg.py b/demo/tlogg.py index 1c5faebe..eadb96a3 100755 --- a/demo/tlogg.py +++ b/demo/tlogg.py @@ -243,7 +243,7 @@ def main(): root = TTk(layout=TTkGridLayout()) splitter = TTkSplitter(parent=root, orientation=TTkK.VERTICAL) tab = TTkTabWidget(parent=splitter, border=False) - TTkLogViewer(parent=splitter) + splitter.addWidget(TTkLogViewer(),3) for file in args.filename: tabSplitter = TTkSplitter(orientation=TTkK.VERTICAL)