From eac17e5b695bab56cdd9774f302d8e5fe9889576 Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 16 Nov 2019 20:33:30 +0100 Subject: Scrolling phase pane on new match add --- jfr_playoff/gui/frames/__init__.py | 6 +++++- jfr_playoff/gui/frames/match.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'jfr_playoff') diff --git a/jfr_playoff/gui/frames/__init__.py b/jfr_playoff/gui/frames/__init__.py index f4fdf4f..052e832 100644 --- a/jfr_playoff/gui/frames/__init__.py +++ b/jfr_playoff/gui/frames/__init__.py @@ -19,7 +19,7 @@ def setPanelState(frame, state): class WidgetRepeater(tk.Frame): def __init__(self, master, widgetClass, headers=None, classParams=None, - *args, **kwargs): + onAdd=None, *args, **kwargs): widgetList = widgetClass if not isinstance(widgetClass, list): widgetList = [widgetClass] @@ -35,6 +35,7 @@ class WidgetRepeater(tk.Frame): self.headerFrame = None self.addButton = ttk.Button( self, text='[+]', width=5, command=self._addWidget) + self.onAdd = onAdd self.renderContent() def _findWidget(self, row, column): @@ -56,6 +57,8 @@ class WidgetRepeater(tk.Frame): widget.configureContent(**widgetClassParams) self.widgets.append(widget) self._updateGrid() + if self.onAdd is not None: + self.onAdd(widget) def _handleWidgetSelection(self, selected): if selected < len(self.widgetClass): @@ -245,6 +248,7 @@ class ScrollableFrame(tk.Frame): def renderContent(self, container): pass + class WidgetSelectionFrame(ScrollableFrame): def __init__(self, *args, **kwargs): self.widgets = [] diff --git a/jfr_playoff/gui/frames/match.py b/jfr_playoff/gui/frames/match.py index e7f86fc..2cf88bf 100644 --- a/jfr_playoff/gui/frames/match.py +++ b/jfr_playoff/gui/frames/match.py @@ -807,12 +807,16 @@ class MatchPhaseFrame(ScrollableFrame): side=tk.LEFT, fill=tk.X, expand=True) self.matches = WidgetRepeater( - container, [MatchSettingsFrame, MatchSeparator]) + container, [MatchSettingsFrame, MatchSeparator], + onAdd=self._matchAdded) self.matches.pack(side=tk.TOP, fill=tk.BOTH, expand=True) self.link.trace('w', self._updateLinks) self.name.trace('w', self._signalPhaseRename) + def _matchAdded(self, widget): + self.after(100, self.canvas.yview_moveto, 1.0) + def setValues(self, values): matches = values['matches'] if 'matches' in values else [] dummies = values['dummies'] if 'dummies' in values else [] -- cgit v1.2.3