diff --git a/new_window_for_add_trace_test.py b/new_window_for_add_trace_test.py deleted file mode 100644 index fd87687..0000000 --- a/new_window_for_add_trace_test.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/python3 - -import tkinter as tk - -class MainWindow(tk.Tk): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.title("Trace-Test-Window") - self.geometry("400x300") - self.text_label = tk.StringVar() - self.text_forground = tk.StringVar(value="red") - self.text_label.set("This is the main window") - self.label = tk.Label(self, textvariable=self.text_label) - self.label.grid(row=0, column=0, padx=10, pady=10) - self.label.grid_remove() - - self.button_text = tk.StringVar() - self.button_text.set("Drück für andere Text anzeige") - self.button = tk.Button(self, textvariable=self.button_text, command=self.toggle_lable) - self.button.grid(row=1, column=0, padx=10, pady=10) - - self.text_label.trace_add("write", self.update_label) - self.text_forground.trace_add("write", self.update_label) - - def update_label(self, *args): - self.label.configure(foreground=self.text_forground.get()) - - if self.text_label.get(): - self.label.grid() - else: - self.label.grid_remove() - - def toggle_lable(self): - - if 'main window' in self.text_label.get(): - self.text_label.set("gewechseltes label") - self.button_text.set("Drück für main window") - else: - self.text_label.set("This is the main window") - self.button_text.set("Drück für andere Text anzeige") - -if __name__ == "__main__": - window = MainWindow() - window.mainloop() diff --git a/wirepy.py b/wirepy.py index 0ecc69e..814e52e 100755 --- a/wirepy.py +++ b/wirepy.py @@ -107,6 +107,7 @@ class FrameWidgets(ttk.Frame): self.update_tooltip = tk.StringVar() # StringVar-Variable for update tooltip please not remove! self.update_foreground = tk.StringVar(value="red") + # Frame for Menu self.menu_frame = ttk.Frame(self) self.menu_frame.configure(relief="flat") @@ -130,7 +131,11 @@ class FrameWidgets(ttk.Frame): self.settings.add_checkbutton(label=_("Disable Updates"), command=lambda: self.update_setting(self.set_update.get()), variable=self.set_update) - self.updates_lb = ttk.Label(self.menu_frame) + self.updates_lb = ttk.Label(self.menu_frame, textvariable=self.update_label) + self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10) + self.updates_lb.grid_remove() + self.update_label.trace_add("write", self.update_label_display) + self.update_foreground.trace_add("write", self.update_label_display) res = GiteaUpdate.api_down(AppConfig.UPDATE_URL, AppConfig.VERSION, ConfigManager.get("updates")) self.update_ui_for_update(res) @@ -295,86 +300,67 @@ class FrameWidgets(ttk.Frame): self.on_off() + # Method that is called when the variable changes + def update_label_display(self, *args): + # Set the foreground color + self.updates_lb.configure(foreground=self.update_foreground.get()) + + # Show or hide the label based on whether it contains text + if self.update_label.get(): + # Make sure the label is in the correct position every time it's shown + self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10) + else: + self.updates_lb.grid_remove() + # Update the labels based on the result def update_ui_for_update(self, res): """Update UI elements based on update check result""" + # First, remove the update button if it exists to avoid conflicts + if hasattr(self, 'update_btn'): + self.update_btn.grid_forget() + delattr(self, 'update_btn') + if res == "False": self.set_update.set(value=1) self.update_label.set(_("Update search off")) self.update_tooltip.set(_("Updates you have disabled")) - self.update_foreground.set("red") - - # Remove update button if it exists - if hasattr(self, 'update_btn'): - self.update_btn.grid_forget() - - # Display the label - self.updates_lb.configure( - textvariable=self.update_label, - foreground=self.update_foreground.get() - ) - self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10) - Tooltip(self.updates_lb, self.update_tooltip.get(), self.tooltip_state) + # Clear the foreground color as requested + self.update_foreground.set("") elif res == "No Internet Connection!": self.update_label.set(_("No Server Connection!")) self.update_foreground.set("red") - # Remove update button if it exists - if hasattr(self, 'update_btn'): - self.update_btn.grid_forget() - - # Display the label - self.updates_lb.configure( - textvariable=self.update_label, - foreground=self.update_foreground.get() - ) - self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10) - elif res == "No Updates": self.update_label.set(_("No Updates")) self.update_tooltip.set(_("Congratulations! Wire-Py is up to date")) - self.update_foreground.set("black") - - # Remove update button if it exists - if hasattr(self, 'update_btn'): - self.update_btn.grid_forget() - - # Display the label - self.updates_lb.configure( - textvariable=self.update_label, - foreground=self.update_foreground.get() - ) - self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10) - Tooltip(self.updates_lb, self.update_tooltip.get(), self.tooltip_state) + self.update_foreground.set("") else: self.set_update.set(value=0) update_text = f"Update {res} {_('available!')}" + + # Clear the label text since we'll show the button instead + self.update_label.set("") - # Remove the label if displayed - self.updates_lb.grid_forget() + # Create the update button + self.update_btn = ttk.Menubutton(self.menu_frame, text=update_text) + self.update_btn.grid(column=4, columnspan=3, row=0, padx=0) + Tooltip(self.update_btn, _("Click to download new version"), self.tooltip_state) - # Create or update the update button - if not hasattr(self, 'update_btn'): - # Create the update button if it doesn't exist yet - self.update_btn = ttk.Menubutton(self.menu_frame, text=update_text) - self.update_btn.grid(column=4, columnspan=3, row=0, padx=0) - Tooltip(self.update_btn, _("Click to download new version"), self.tooltip_state) - - self.download = tk.Menu(self, relief="flat") - self.update_btn.configure(menu=self.download, style="Toolbutton") - self.download.add_command( - label=_("Download"), - command=lambda: GiteaUpdate.download( - f"{AppConfig.DOWNLOAD_URL}/{res}.zip", - res, - AppConfig.IMAGE_PATHS["icon_info"], - AppConfig.IMAGE_PATHS["icon_vpn"], - AppConfig.IMAGE_PATHS["icon_error"], - AppConfig.IMAGE_PATHS["icon_msg"] - ) + self.download = tk.Menu(self, relief="flat") + self.update_btn.configure(menu=self.download, style="Toolbutton") + self.download.add_command( + label=_("Download"), + command=lambda: GiteaUpdate.download( + f"{AppConfig.DOWNLOAD_URL}/{res}.zip", + res, + AppConfig.IMAGE_PATHS["icon_info"], + AppConfig.IMAGE_PATHS["icon_vpn"], + AppConfig.IMAGE_PATHS["icon_error"], + AppConfig.IMAGE_PATHS["icon_msg"] ) + ) @staticmethod def about() -> None: @@ -399,7 +385,7 @@ class FrameWidgets(ttk.Frame): # Disable updates ConfigManager.set("updates", "off") # When updates are disabled, we know the result should be "False" - self.update_ui_for_update_status("False") + self.update_ui_for_update("False") else: # Enable updates ConfigManager.set("updates", "on") @@ -407,7 +393,6 @@ class FrameWidgets(ttk.Frame): try: # Force a fresh check by passing "on" as the update setting res = GiteaUpdate.api_down(AppConfig.UPDATE_URL, AppConfig.VERSION, "on") - print(f"API returned: {res}") # Debug output # Make sure UI is updated regardless of previous state if hasattr(self, 'update_btn'): @@ -416,11 +401,11 @@ class FrameWidgets(ttk.Frame): self.updates_lb.grid_forget() # Now update the UI with the fresh result - self.update_ui_for_update_status(res) + self.update_ui_for_update(res) except Exception as e: print(f"Error checking for updates: {e}") # Fallback to a default message if there's an error - self.update_ui_for_update_status("No Internet Connection!") + self.update_ui_for_update("No Internet Connection!") def tooltip_update_label(self) -> None: """Updates the tooltip menu label based on the current tooltip status"""