diff --git a/lxplan_lib_creator.py b/lxplan_lib_creator.py index abe10ae..0836c54 100644 --- a/lxplan_lib_creator.py +++ b/lxplan_lib_creator.py @@ -13,6 +13,7 @@ class XMLExtractorApp: self.input_file = None self.tree = None self.additional_fields = {} + self.popup_window = None # Define which fields to show for each kind self.kind_fields_map = { @@ -147,7 +148,7 @@ class XMLExtractorApp: # Additional fields button additional_btn = tk.Button(self.root, text="Additional Fields", - command=self.open_additional_fields, + command=self.toggle_additional_fields, font=("Arial", 10), bg="#2196F3", fg="white", padx=15, pady=8) @@ -166,6 +167,15 @@ class XMLExtractorApp: font=("Arial", 9), fg="blue") self.status_label.pack(pady=5) + def toggle_additional_fields(self): + # If popup exists and is open, close it + if self.popup_window and self.popup_window.winfo_exists(): + self.popup_window.destroy() + self.popup_window = None + else: + # Otherwise open it + self.open_additional_fields() + def open_additional_fields(self): # Get the selected kind value selected_display = self.kind_var.get() @@ -176,10 +186,14 @@ class XMLExtractorApp: # Create popup window popup = tk.Toplevel(self.root) + self.popup_window = popup popup.title("Additional Fields") popup.geometry("500x600") popup.resizable(False, False) + # Handle window close event + popup.protocol("WM_DELETE_WINDOW", lambda: self.close_popup(popup)) + # Title title = tk.Label(popup, text=f"Additional Fields - {selected_display}", font=("Arial", 14, "bold")) @@ -276,9 +290,13 @@ class XMLExtractorApp: elif field_name in self.additional_fields: del self.additional_fields[field_name] - popup.destroy() + self.close_popup(popup) self.status_label.config(text="Additional fields saved", fg="green") + def close_popup(self, popup): + popup.destroy() + self.popup_window = None + def browse_file(self): filename = filedialog.askopenfilename( title="Select LXXPLOT File",