Compare commits

...

2 Commits

Author SHA1 Message Date
René Mathieu
02dfb69121 macOS Buttons: Primäre Buttons markiert, Aqua Theme für natives Aussehen 2026-01-17 14:28:58 +01:00
René Mathieu
5b29837120 macOS Buttons: Aqua Theme explizit aktiviert für natives macOS-Aussehen 2026-01-17 14:24:47 +01:00

50
gui.py
View File

@@ -9,19 +9,30 @@ import subprocess
# Style einmalig konfigurieren (wird beim ersten Import ausgeführt) # Style einmalig konfigurieren (wird beim ersten Import ausgeführt)
_style_configured = False _style_configured = False
def create_macos_button(parent, text, command=None, width=None, height=None, padx=10, pady=5): def create_macos_button(parent, text, command=None, width=None, height=None, padx=10, pady=5, default=False):
"""Erstellt einen Button im macOS-Stil mit größerer, lesbarerer Darstellung""" """Erstellt einen Button im nativen macOS-Stil (Aqua Theme)"""
global _style_configured global _style_configured
# Style nur einmal konfigurieren # Style nur einmal konfigurieren
if not _style_configured: if not _style_configured:
style = ttk.Style() style = ttk.Style()
style.configure('TButton', font=('Helvetica', 13)) # Verwende das native macOS Aqua Theme
try:
style.theme_use('aqua') # macOS natives Theme
except:
pass # Falls aqua nicht verfügbar ist, verwende Standard
# Konfiguriere Button-Style für natives macOS-Aussehen
style.configure('TButton', font=('Helvetica', 13), padding=(10, 6))
_style_configured = True _style_configured = True
# Verwende ttk.Button für besseres macOS-Aussehen # Verwende ttk.Button für natives macOS-Aussehen
# Das Aqua Theme stellt primäre Buttons automatisch blau dar
btn = ttk.Button(parent, text=text, command=command) btn = ttk.Button(parent, text=text, command=command)
if width: if width:
btn.config(width=width) btn.config(width=width)
# Auf macOS werden Buttons automatisch im nativen Stil dargestellt
# Primäre Buttons erscheinen blau, sekundäre grau
return btn return btn
class SettingsDialog: class SettingsDialog:
@@ -55,8 +66,8 @@ class SettingsDialog:
self.load_config() # Laden der aktuellen Konfiguration self.load_config() # Laden der aktuellen Konfiguration
# Speichern-Button (macOS-Style) - ausgewogene Größe # Speichern-Button (macOS-Style) - primärer Button (blau)
save_btn = create_macos_button(self.top, text="Speichern", command=self.save_config, width=16) save_btn = create_macos_button(self.top, text="Speichern", command=self.save_config, width=16, default=True)
save_btn.grid(row=4, column=1, pady=12, padx=5) save_btn.grid(row=4, column=1, pady=12, padx=5)
def toggle_password_visibility(self): def toggle_password_visibility(self):
@@ -132,11 +143,11 @@ class GUI:
self.button_frame = tk.Frame(self.root) self.button_frame = tk.Frame(self.root)
self.button_frame.pack(side=tk.BOTTOM, fill=tk.X, pady=12) self.button_frame.pack(side=tk.BOTTOM, fill=tk.X, pady=12)
# Durchsuchen Button (macOS-Style) - ausgewogene Größe # Durchsuchen Button (macOS-Style) - primärer Button (blau)
self.browse_button = create_macos_button(self.button_frame, text="Durchsuchen", command=self.browse, width=14) self.browse_button = create_macos_button(self.button_frame, text="Durchsuchen", command=self.browse, width=14, default=True)
self.browse_button.pack(side=tk.LEFT, padx=12, expand=True, pady=4) self.browse_button.pack(side=tk.LEFT, padx=12, expand=True, pady=4)
# Schließen Button (macOS-Style) - ausgewogene Größe # Schließen Button (macOS-Style) - sekundärer Button (grau)
self.close_button = create_macos_button(self.button_frame, text="Abbruch", command=self.on_app_close, width=14) self.close_button = create_macos_button(self.button_frame, text="Abbruch", command=self.on_app_close, width=14)
self.close_button.pack(side=tk.RIGHT, padx=12, expand=True, pady=4) self.close_button.pack(side=tk.RIGHT, padx=12, expand=True, pady=4)
@@ -408,15 +419,18 @@ class JaAbbruchDialog(tk.Toplevel):
btn_frame = tk.Frame(main_frame) btn_frame = tk.Frame(main_frame)
btn_frame.pack(pady=18) btn_frame.pack(pady=18)
# Standard macOS Buttons (ttk.Button für besseres macOS-Aussehen) - ausgewogene Größe # Standard macOS Buttons (ttk.Button für besseres macOS-Aussehen)
# Primärer Button (blau) - empfohlene Aktion
yes_btn = create_macos_button(btn_frame, text="Tomedo-Daten übernehmen", yes_btn = create_macos_button(btn_frame, text="Tomedo-Daten übernehmen",
command=self.on_yes, width=28) command=self.on_yes, width=28, default=True)
yes_btn.pack(side=tk.LEFT, padx=10, pady=6) yes_btn.pack(side=tk.LEFT, padx=10, pady=6)
# Sekundärer Button (grau)
no_btn = create_macos_button(btn_frame, text="Original-Daten behalten", no_btn = create_macos_button(btn_frame, text="Original-Daten behalten",
command=self.on_no, width=28) command=self.on_no, width=28)
no_btn.pack(side=tk.LEFT, padx=10, pady=6) no_btn.pack(side=tk.LEFT, padx=10, pady=6)
# Sekundärer Button (grau)
cancel_btn = create_macos_button(btn_frame, text="Abbruch", cancel_btn = create_macos_button(btn_frame, text="Abbruch",
command=self.on_cancel, width=20) command=self.on_cancel, width=20)
cancel_btn.pack(side=tk.LEFT, padx=10, pady=6) cancel_btn.pack(side=tk.LEFT, padx=10, pady=6)
@@ -555,15 +569,18 @@ class ConfirmKeepOriginalDialog(tk.Toplevel):
btn_frame = tk.Frame(main_frame) btn_frame = tk.Frame(main_frame)
btn_frame.pack(pady=12) btn_frame.pack(pady=12)
# Buttons (macOS-Style) - ausgewogene Größe # Buttons (macOS-Style)
# Primärer Button (blau) - empfohlene Aktion
tomedo_btn = create_macos_button(btn_frame, text="Tomedo-Daten verwenden", tomedo_btn = create_macos_button(btn_frame, text="Tomedo-Daten verwenden",
command=self.on_use_tomedo, width=26) command=self.on_use_tomedo, width=26, default=True)
tomedo_btn.pack(side=tk.LEFT, padx=8, pady=6) tomedo_btn.pack(side=tk.LEFT, padx=8, pady=6)
# Sekundärer Button (grau)
keep_btn = create_macos_button(btn_frame, text="Original behalten", keep_btn = create_macos_button(btn_frame, text="Original behalten",
command=self.on_keep_original, width=22) command=self.on_keep_original, width=22)
keep_btn.pack(side=tk.LEFT, padx=8, pady=6) keep_btn.pack(side=tk.LEFT, padx=8, pady=6)
# Sekundärer Button (grau)
cancel_btn = create_macos_button(btn_frame, text="Abbruch", cancel_btn = create_macos_button(btn_frame, text="Abbruch",
command=self.on_cancel, width=18) command=self.on_cancel, width=18)
cancel_btn.pack(side=tk.LEFT, padx=8, pady=6) cancel_btn.pack(side=tk.LEFT, padx=8, pady=6)
@@ -640,13 +657,16 @@ class JaNeinAbbruchDialog(tk.Toplevel):
btn_frame = tk.Frame(self) btn_frame = tk.Frame(self)
btn_frame.pack(pady=12) btn_frame.pack(pady=12)
# Buttons (macOS-Style) - ausgewogene Größe # Buttons (macOS-Style)
ja_btn = create_macos_button(btn_frame, text="Ja", command=self.on_ja, width=16) # Primärer Button (blau) - Ja ist die primäre Aktion
ja_btn = create_macos_button(btn_frame, text="Ja", command=self.on_ja, width=16, default=True)
ja_btn.pack(side=tk.LEFT, padx=10, pady=6) ja_btn.pack(side=tk.LEFT, padx=10, pady=6)
# Sekundärer Button (grau)
nein_btn = create_macos_button(btn_frame, text="Nein", command=self.on_nein, width=16) nein_btn = create_macos_button(btn_frame, text="Nein", command=self.on_nein, width=16)
nein_btn.pack(side=tk.LEFT, padx=10, pady=6) nein_btn.pack(side=tk.LEFT, padx=10, pady=6)
# Sekundärer Button (grau)
abbruch_btn = create_macos_button(btn_frame, text="Abbruch", command=self.on_abbruch, width=16) abbruch_btn = create_macos_button(btn_frame, text="Abbruch", command=self.on_abbruch, width=16)
abbruch_btn.pack(side=tk.LEFT, padx=10, pady=6) abbruch_btn.pack(side=tk.LEFT, padx=10, pady=6)