From 0bb5a0044d233a84c21c08ba464947dd02c2e4b8 Mon Sep 17 00:00:00 2001 From: Nurlan Turdaliev Date: Mon, 9 Mar 2020 18:12:34 +0600 Subject: [PATCH] Editing item header in GUI #464 --- doorstop/gui/application.py | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/doorstop/gui/application.py b/doorstop/gui/application.py index a44af7f18..e75f8dd09 100644 --- a/doorstop/gui/application.py +++ b/doorstop/gui/application.py @@ -67,6 +67,10 @@ def __init__(self, root, cwd, project): self.stringvar_item = tk.StringVar() self.stringvar_item.trace('w', self.display_item) + # The item header + self.stringvar_header = tk.StringVar() + self.stringvar_header.trace('w', self.update_item) + self.stringvar_text = tk.StringVar() self.stringvar_text.trace('w', self.update_item) self.intvar_active = tk.IntVar() @@ -259,9 +263,9 @@ def frame_item(root): # Configure grid frame = ttk.Frame(root, **kw_f) frame.rowconfigure(0, weight=0) - frame.rowconfigure(1, weight=4) + frame.rowconfigure(1, weight=0) frame.rowconfigure(2, weight=0) - frame.rowconfigure(3, weight=1) + frame.rowconfigure(3, weight=4) frame.rowconfigure(4, weight=1) frame.rowconfigure(5, weight=1) frame.rowconfigure(6, weight=1) @@ -269,7 +273,9 @@ def frame_item(root): frame.rowconfigure(8, weight=0) frame.rowconfigure(9, weight=0) frame.rowconfigure(10, weight=0) - frame.rowconfigure(11, weight=4) + frame.rowconfigure(11, weight=0) + frame.rowconfigure(12, weight=0) + frame.rowconfigure(13, weight=4) frame.columnconfigure(0, weight=1, pad=kw_f['padding'] * 2) frame.columnconfigure(1, weight=1) @@ -294,45 +300,52 @@ def text_extendedvalue_focusout(event): value = thewidget.get('1.0', tk.END) self.stringvar_extendedvalue.set(value) + # Item header + widget.Label(frame, text="Header:").grid( + row=0, column=0, columnspan=3, sticky=tk.W, **kw_gp + ) + self.text_header = widget.Entry(frame, textvariable=self.stringvar_header) + self.text_header.grid(row=1, column=0, columnspan=3, **kw_gsp) + # Selected Item widget.Label(frame, text="Selected Item:").grid( - row=0, column=0, columnspan=3, sticky=tk.W, **kw_gp + row=2, column=0, columnspan=3, sticky=tk.W, **kw_gp ) self.text_item = widget.Text( frame, width=width_text, height=height_text, wrap=tk.WORD ) self.text_item.bind('', text_focusin) self.text_item.bind('', text_item_focusout) - self.text_item.grid(row=1, column=0, columnspan=3, **kw_gsp) + self.text_item.grid(row=3, column=0, columnspan=3, **kw_gsp) # Column: Properties self.create_properties_widget(frame).grid( - row=2, rowspan=2, column=0, columnspan=2, sticky=tk.NSEW, **kw_gp + row=4, rowspan=2, column=0, columnspan=2, sticky=tk.NSEW, **kw_gp ) # Column: Links self.create_links_widget(frame).grid( - row=4, rowspan=3, column=0, columnspan=2, sticky=tk.NSEW, **kw_gp + row=5, rowspan=3, column=0, columnspan=2, sticky=tk.NSEW, **kw_gp ) # External Reference self.create_reference_widget(frame).grid( - row=7, rowspan=2, column=0, columnspan=2, sticky=tk.NSEW, **kw_gp + row=9, rowspan=2, column=0, columnspan=2, sticky=tk.NSEW, **kw_gp ) widget.Label(frame, text="Extended Attributes:").grid( - row=9, column=0, columnspan=3, sticky=tk.W, **kw_gp + row=11, column=0, columnspan=3, sticky=tk.W, **kw_gp ) self.combobox_extended = widget.Combobox( frame, textvariable=self.stringvar_extendedkey ) - self.combobox_extended.grid(row=10, column=0, columnspan=3, **kw_gsp) + self.combobox_extended.grid(row=12, column=0, columnspan=3, **kw_gsp) self.text_extendedvalue = widget.Text( frame, width=width_text, height=height_ext, wrap=tk.WORD ) self.text_extendedvalue.bind('', text_focusin) self.text_extendedvalue.bind('', text_extendedvalue_focusout) - self.text_extendedvalue.grid(row=11, column=0, columnspan=3, **kw_gsp) + self.text_extendedvalue.grid(row=13, column=0, columnspan=3, **kw_gsp) return frame @@ -527,6 +540,7 @@ def display_item(self, *_): ) # Display the item's properties + self.stringvar_header.set("" if self.item is None else self.item.header) self.stringvar_text.set("" if self.item is None else self.item.text) self.intvar_active.set(False if self.item is None else self.item.active) self.intvar_derived.set(False if self.item is None else self.item.derived) @@ -633,6 +647,7 @@ def update_item(self, *_): # Update the current item log.info("updating {}...".format(self.item)) self.item.auto = False + self.item.header = self.stringvar_header.get() self.item.text = self.stringvar_text.get() self.item.active = self.intvar_active.get() self.item.derived = self.intvar_derived.get()