From a3e49a75f09540b5aef16e3fc71960e03307e6ee Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Sun, 10 May 2020 08:36:05 -0700 Subject: [PATCH] Update view of stack at start. --- joy/gui/controllerlistbox.py | 6 +++++- joy/gui/world.py | 6 +++--- trylb.py | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 trylb.py diff --git a/joy/gui/controllerlistbox.py b/joy/gui/controllerlistbox.py index a4068fd..745f8c0 100644 --- a/joy/gui/controllerlistbox.py +++ b/joy/gui/controllerlistbox.py @@ -20,7 +20,7 @@ ''' from Tkinter import Listbox, SINGLE from Tkdnd import dnd_start -from joy.utils.stack import list_to_stack +from joy.utils.stack import iter_stack, list_to_stack class SourceWrapper: @@ -137,6 +137,10 @@ class StackListbox(ControllerListbox): self.delete(0, 'end') self.insert(0, *self.stack) + def update_stack(self, stack): + self.stack = list(iter_stack(stack)) + self._update() + def dnd_commit(self, source, event): ControllerListbox.dnd_commit(self, source, event) self._update() diff --git a/joy/gui/world.py b/joy/gui/world.py index dfc0360..be6f61c 100644 --- a/joy/gui/world.py +++ b/joy/gui/world.py @@ -29,7 +29,7 @@ from inspect import getdoc from joy.joy import run from joy.library import HELP_TEMPLATE from joy.parser import Symbol -from joy.utils.stack import iter_stack, stack_to_string +from joy.utils.stack import stack_to_string from joy.utils.types import type_check from .utils import is_numerical @@ -160,10 +160,10 @@ class StackWorld(StackDisplayWorld): def set_viewer(self, viewer): self.viewer = viewer + self.viewer.update_stack(self.stack) def print_stack(self): StackDisplayWorld.print_stack(self) if self.viewer: - self.viewer.stack = list(iter_stack(self.stack)) - self.viewer._update() + self.viewer.update_stack(self.stack) diff --git a/trylb.py b/trylb.py new file mode 100644 index 0000000..bbb0ab2 --- /dev/null +++ b/trylb.py @@ -0,0 +1,21 @@ +from Tkinter import Tk, mainloop, BOTH +from joy.gui.controllerlistbox import ControllerListbox + + +class StackListbox(ControllerListbox): + + def _update(self): + self.delete(0, 'end') + self.insert(0, *self.stack) + + def dnd_commit(self, source, event): + ControllerListbox.dnd_commit(self, source, event) + self._update() + + +T = Tk() +T.title("Hello there.") +stack = [1, 2, 3] +lb = FooListbox(T, items=stack) +lb.pack(expand=True, fill=BOTH) +lb._update()