From ea11fbebdad75faa4626eee5859e314ce118d064 Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Sat, 14 Jul 2018 19:34:01 -0700 Subject: [PATCH] Move reset() to text method. Rearrange some other stuff. --- joy/gui/main.py | 73 +++++++++++++++++++------------------------ joy/gui/textwidget.py | 9 ++++++ 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/joy/gui/main.py b/joy/gui/main.py index 242ef72..5d47991 100755 --- a/joy/gui/main.py +++ b/joy/gui/main.py @@ -17,6 +17,36 @@ from joy.library import initialize from joy.utils.stack import stack_to_string +tb = TEXT_BINDINGS.copy() +tb.update({ + '': lambda tv: tv.cut, + '': lambda tv: tv.copy_selection_to_stack, + # '': lambda tv: tv.pastecut, + '': lambda tv: tv.copyto, + }) +defaults = dict(text_bindings=tb, width=80, height=25) + + +GLOBAL_COMMANDS = { + '': 'swap', + '': 'dup', + + '': 'roll<', + '': 'roll>', + + '': 'over', + '': 'tuck', + + '': 'parse', + + '': 'words', + '': 'reset_log show_log', + '': 'clear reset_log show_log', + '': 'pop', + '': 'popd', + } + + JOY_HOME, repo = init_home() @@ -102,36 +132,17 @@ def show_log(*args): def grand_reset(s, e, d): stack = load_stack() or () - reset_text(log, LOG_FN) - reset_text(t, JOY_FN) + log.reset() + t.reset() return stack, e, d -def reset_text(t, filename): - if os.path.exists(filename): - with open(filename) as f: - data = f.read() - if data: - t.delete('0.0', tk.END) - t.insert(tk.END, data) - - def load_stack(): if os.path.exists(STACK_FN): with open(STACK_FN) as f: return pickle.load(f) -tb = TEXT_BINDINGS.copy() -tb.update({ - '': lambda tv: tv.cut, - '': lambda tv: tv.copy_selection_to_stack, -# '': lambda tv: tv.pastecut, - '': lambda tv: tv.copyto, - }) -defaults = dict(text_bindings=tb, width=80, height=25) - - D = initialize() for func in ( reset_log, @@ -153,26 +164,6 @@ log = TextViewerWidget(world, log_window, **defaults) FONT = get_font('Iosevka', size=14) # Requires Tk root already set up. log.init('Log', LOG_FN, repo_relative_path(LOG_FN), repo, FONT) t.init('Joy - ' + JOY_HOME, JOY_FN, repo_relative_path(JOY_FN), repo, FONT) - - -GLOBAL_COMMANDS = { - '': 'swap', - '': 'dup', - - '': 'roll<', - '': 'roll>', - - '': 'over', - '': 'tuck', - - '': 'parse', - - '': 'words', - '': 'reset_log show_log', - '': 'clear reset_log show_log', - '': 'pop', - '': 'popd', - } for event, command in GLOBAL_COMMANDS.items(): t.bind_all(event, lambda _, _command=command: world.interpret(_command)) diff --git a/joy/gui/textwidget.py b/joy/gui/textwidget.py index 468a794..30a7561 100644 --- a/joy/gui/textwidget.py +++ b/joy/gui/textwidget.py @@ -414,6 +414,15 @@ class TextViewerWidget(tk.Text, MouseBindingsMixin, SavingMixin): self.repo = repo self['font'] = font # See below. + def reset(self): + if os.path.exists(self.filename): + with open(self.filename) as f: + data = f.read() + if data: + self.delete('0.0', tk.END) + self.insert(tk.END, data) + + def popupTB(self, tb): top = tk.Toplevel() T = TextViewerWidget(