From: Simon Forman Date: Sat, 2 May 2020 19:51:29 +0000 (-0700) Subject: Put the log and scratch text in the same window. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=8604dccc24be1bf568eac0729fe51463bd33ba38;p=joypy%2FThun.git Put the log and scratch text in the same window. This is a step towards Ticket #40360 without going all the way. You can open additional viewer windows. They are not connected by an Oberon-style messaging system (yet. It would be nice to use the Tk event system for that.) This way the log and the main/scratch/system-menu text are conceptually unified in the (equivelent of "desktop") base metaphor of the system. --- diff --git a/joy/gui/main.py b/joy/gui/main.py index 141bd56..63cfc9c 100755 --- a/joy/gui/main.py +++ b/joy/gui/main.py @@ -46,7 +46,7 @@ _log.info('Starting with JOY_HOME=%s', JOY_HOME) # Now that logging is set up, continue loading the system. -from joy.gui.textwidget import TextViewerWidget, tk, get_font +from joy.gui.textwidget import TextViewerWidget, tk, get_font, make_main_window from joy.gui.world import StackDisplayWorld from joy.library import initialize, DefinitionWrapper from joy.utils.stack import stack_to_string @@ -116,8 +116,8 @@ def commands(): def show_log(*args): - log_window.wm_deiconify() - log_window.update() + # log_window.wm_deiconify() + # log_window.update() return args @@ -144,14 +144,7 @@ DefinitionWrapper.load_definitions(DEFS_FN, D) world = StackDisplayWorld(repo, STACK_FN, REL_STACK_FN, dictionary=D) -t = TextViewerWidget(world, **VIEWER_DEFAULTS) - -log_window = tk.Toplevel() -# Make it so that you can't actually close the log window, if you try it -# will just "withdraw" (which is like minifying but without a entry in -# the taskbar or icon or whatever.) -log_window.protocol("WM_DELETE_WINDOW", log_window.withdraw) -log = TextViewerWidget(world, log_window, **VIEWER_DEFAULTS) +top, t, log = make_main_window(world) FONT = get_font('Iosevka', size=14) # Requires Tk root already set up. diff --git a/joy/gui/textwidget.py b/joy/gui/textwidget.py index fc1aeec..b829d74 100644 --- a/joy/gui/textwidget.py +++ b/joy/gui/textwidget.py @@ -426,7 +426,6 @@ class TextViewerWidget(tk.Text, MouseBindingsMixin, SavingMixin): return 'break' def init(self, title, filename, repo_relative_filename, repo, font): - self.set_window_title(title) if os.path.exists(filename): with open(filename) as f: data = f.read() @@ -434,7 +433,6 @@ class TextViewerWidget(tk.Text, MouseBindingsMixin, SavingMixin): # Prevent this from triggering a git commit. self.update() self._cancelSave() - self.pack(expand=True, fill=tk.BOTH) self.filename = filename self.repo_relative_filename = repo_relative_filename self.repo = repo @@ -472,3 +470,15 @@ class TextViewerWidget(tk.Text, MouseBindingsMixin, SavingMixin): T.pack(expand=1, fill=tk.BOTH) T.see(tk.END) + + +def make_main_window(world): + m = tk.PanedWindow(orient=tk.HORIZONTAL) + m.winfo_toplevel().title('Thun') + m.pack(fill=tk.BOTH, expand=True) + H = 45 + t = TextViewerWidget(world, m, width=128, height=H) + log = TextViewerWidget(world, m, width=73, height=H) + m.add(log) + m.add(t) + return m, t, log