Skip to content

Commit 88b3873

Browse files
author
marci
committed
feat: enhance logo display with larger size and application branding
- Increase toolbar logo size from 24x24 to 36x36 pixels for better visibility - Add application name and version display next to logo in toolbar - Create logo container with proper spacing and typography - Enhance About dialog with prominent 64x64 logo in header - Add comprehensive branding with app name, version, and visual hierarchy - Implement multiple fallback options for logo display (PIL, emoji, text) - Improve overall professional appearance of the application interface
1 parent a69eb67 commit 88b3873

1 file changed

Lines changed: 160 additions & 28 deletions

File tree

bash_script_maker.py

Lines changed: 160 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,26 @@ class AboutDialog(ttk.Toplevel):
125125
def __init__(self, parent):
126126
super().__init__(parent)
127127
self.title(_("Über Bash-Script-Maker"))
128-
self.geometry("450x350")
128+
self.geometry("500x450")
129+
self.resizable(False, False)
129130

130131
container = ttk.Frame(self, padding=20)
131132
container.pack(fill=tk.BOTH, expand=True)
132133

134+
# Logo und Titel-Bereich
135+
header_frame = ttk.Frame(container)
136+
header_frame.pack(fill=tk.X, pady=(0, 20))
137+
138+
# Logo hinzufügen
139+
self.add_logo_to_header(header_frame)
140+
133141
title_label = ttk.Label(
134-
container,
142+
header_frame,
135143
text="Bash-Script-Maker",
136-
font=("", 18, "bold"),
144+
font=("Arial", 20, "bold"),
137145
bootstyle="primary",
138146
)
139-
title_label.pack(pady=(0, 10))
147+
title_label.pack(pady=(10, 0))
140148

141149
desc_text = _("Ein GUI-Programm zur einfachen Erstellung von Bash-Scripts.")
142150
desc_label = ttk.Label(container, text=desc_text, wraplength=400)
@@ -182,6 +190,55 @@ def __init__(self, parent):
182190
)
183191
version_label.pack(pady=(15, 0))
184192

193+
# Schließen-Button
194+
close_btn = ttk.Button(
195+
container,
196+
text=_("Schließen"),
197+
command=self.destroy,
198+
bootstyle="primary"
199+
)
200+
close_btn.pack(pady=(20, 0))
201+
202+
def add_logo_to_header(self, header_frame):
203+
"""Fügt das Logo zum About-Dialog-Header hinzu"""
204+
try:
205+
script_dir = os.path.dirname(os.path.abspath(__file__))
206+
logo_path = os.path.join(script_dir, "assets", "bash-script-maker-64.png")
207+
208+
if os.path.exists(logo_path):
209+
try:
210+
from PIL import Image, ImageTk
211+
212+
# Logo für About-Dialog (64x64)
213+
img = Image.open(logo_path)
214+
logo_photo = ImageTk.PhotoImage(img)
215+
216+
logo_label = ttk.Label(header_frame, image=logo_photo)
217+
logo_label.image = logo_photo # Referenz behalten
218+
logo_label.pack(anchor=tk.CENTER)
219+
220+
except ImportError:
221+
# Fallback: Großes Emoji
222+
logo_label = ttk.Label(
223+
header_frame,
224+
text="🖥️",
225+
font=("Arial", 48)
226+
)
227+
logo_label.pack(anchor=tk.CENTER)
228+
else:
229+
# Fallback: Emoji
230+
logo_label = ttk.Label(
231+
header_frame,
232+
text="🖥️",
233+
font=("Arial", 48)
234+
)
235+
logo_label.pack(anchor=tk.CENTER)
236+
237+
except Exception as e:
238+
print(f"Fehler beim Hinzufügen des Logos zum About-Dialog: {e}")
239+
# Minimaler Fallback
240+
pass
241+
185242

186243
class ScriptInfoDialog(ttk.Toplevel):
187244
def __init__(self, parent, script_name, content):
@@ -330,48 +387,116 @@ def set_window_icon(self):
330387
print(f"Fehler beim Setzen des Icons: {e}")
331388

332389
def add_logo_to_toolbar(self, toolbar):
333-
"""Fügt das Logo zur Toolbar hinzu"""
390+
"""Fügt das Logo und den App-Namen zur Toolbar hinzu"""
334391
try:
392+
# Logo-Container für bessere Anordnung
393+
logo_container = ttk.Frame(toolbar)
394+
logo_container.pack(side=tk.LEFT, padx=(0, 20), pady=15)
395+
335396
# Pfad zum Icon ermitteln
336397
script_dir = os.path.dirname(os.path.abspath(__file__))
337-
logo_path = os.path.join(script_dir, "assets", "bash-script-maker-32.png")
398+
logo_path = os.path.join(script_dir, "assets", "bash-script-maker-48.png")
338399

339400
if os.path.exists(logo_path):
340401
try:
341402
from PIL import Image, ImageTk
342403

343-
# Logo laden und für Toolbar optimieren
404+
# Logo laden - größer für bessere Sichtbarkeit
344405
img = Image.open(logo_path)
345-
# Etwas kleiner für die Toolbar (24x24)
346-
img = img.resize((24, 24), Image.Resampling.LANCZOS)
406+
# Optimale Größe für Toolbar (36x36)
407+
img = img.resize((36, 36), Image.Resampling.LANCZOS)
347408
logo_photo = ImageTk.PhotoImage(img)
348409

349410
# Logo-Label erstellen
350-
logo_label = ttk.Label(toolbar, image=logo_photo)
411+
logo_label = ttk.Label(logo_container, image=logo_photo)
351412
logo_label.image = logo_photo # Referenz behalten
352-
logo_label.pack(side=tk.LEFT, padx=(0, 10), pady=20)
413+
logo_label.pack(side=tk.LEFT, padx=(0, 8))
414+
415+
# App-Name-Label hinzufügen
416+
name_label = ttk.Label(
417+
logo_container,
418+
text="Bash-Script-Maker",
419+
font=("Arial", 12, "bold"),
420+
foreground="#2c3e50" # Dunkle Farbe für bessere Lesbarkeit
421+
)
422+
name_label.pack(side=tk.LEFT, anchor=tk.CENTER)
423+
424+
# Version-Label (kleiner) hinzufügen
425+
version_label = ttk.Label(
426+
logo_container,
427+
text=f"v{__version__}",
428+
font=("Arial", 9),
429+
foreground="#7f8c8d" # Grau für subtile Version
430+
)
431+
version_label.pack(side=tk.LEFT, padx=(5, 0), anchor=tk.CENTER)
353432

354-
# Tooltip hinzufügen
355-
ToolTip(logo_label, text="Bash-Script-Maker v" + __version__)
433+
# Tooltips hinzufügen
434+
ToolTip(logo_label, text=f"Bash-Script-Maker v{__version__}")
435+
ToolTip(name_label, text=f"Bash-Script-Maker v{__version__}")
436+
ToolTip(version_label, text=f"Version {__version__}")
356437

357-
print("Logo zur Toolbar hinzugefügt")
438+
print("Logo und App-Name zur Toolbar hinzugefügt")
358439

359440
except ImportError:
360-
# Fallback ohne PIL - verwende Text-Logo
441+
# Fallback ohne PIL - verwende Text-Logo mit Name
361442
logo_label = ttk.Label(
362-
toolbar,
443+
logo_container,
363444
text="🖥️",
364-
font=("Arial", 16)
445+
font=("Arial", 24)
446+
)
447+
logo_label.pack(side=tk.LEFT, padx=(0, 8))
448+
449+
# App-Name auch im Fallback
450+
name_label = ttk.Label(
451+
logo_container,
452+
text="Bash-Script-Maker",
453+
font=("Arial", 12, "bold")
365454
)
366-
logo_label.pack(side=tk.LEFT, padx=(0, 10), pady=20)
367-
ToolTip(logo_label, text="Bash-Script-Maker v" + __version__)
368-
print("Text-Logo zur Toolbar hinzugefügt")
455+
name_label.pack(side=tk.LEFT, anchor=tk.CENTER)
456+
457+
version_label = ttk.Label(
458+
logo_container,
459+
text=f"v{__version__}",
460+
font=("Arial", 9)
461+
)
462+
version_label.pack(side=tk.LEFT, padx=(5, 0), anchor=tk.CENTER)
463+
464+
# Tooltips
465+
ToolTip(logo_label, text=f"Bash-Script-Maker v{__version__}")
466+
ToolTip(name_label, text=f"Bash-Script-Maker v{__version__}")
467+
ToolTip(version_label, text=f"Version {__version__}")
468+
469+
print("Text-Logo und App-Name zur Toolbar hinzugefügt")
369470

370471
else:
371-
print(f"Logo-Datei nicht gefunden: {logo_path}")
472+
# Nur Text-Branding wenn kein Icon gefunden
473+
name_label = ttk.Label(
474+
logo_container,
475+
text="🖥️ Bash-Script-Maker",
476+
font=("Arial", 12, "bold")
477+
)
478+
name_label.pack(side=tk.LEFT)
479+
480+
version_label = ttk.Label(
481+
logo_container,
482+
text=f"v{__version__}",
483+
font=("Arial", 9)
484+
)
485+
version_label.pack(side=tk.LEFT, padx=(5, 0), anchor=tk.CENTER)
486+
487+
ToolTip(name_label, text=f"Bash-Script-Maker v{__version__}")
488+
ToolTip(version_label, text=f"Version {__version__}")
489+
490+
print(f"Logo-Datei nicht gefunden: {logo_path}, verwende Text-Branding")
372491

373492
except Exception as e:
374493
print(f"Fehler beim Hinzufügen des Logos: {e}")
494+
# Minimaler Fallback
495+
try:
496+
fallback_label = ttk.Label(toolbar, text="Bash-Script-Maker", font=("Arial", 10, "bold"))
497+
fallback_label.pack(side=tk.LEFT, padx=(0, 15), pady=20)
498+
except:
499+
pass
375500

376501
def create_menu(self):
377502
"""Erstellt das Menü der Anwendung"""
@@ -886,13 +1011,20 @@ def show_script_info(self):
8861011
ScriptInfoDialog(self.root, self.script_name, content)
8871012

8881013
def show_about(self):
889-
"""Zeigt About-Dialog"""
890-
about_text = _(
891-
"Bash-Script-Maker ist ein GUI-Programm zur einfachen Erstellung von Bash-Scripts.\n\n"
892-
"Erstellt mit Python und Tkinter"
893-
)
894-
895-
messagebox.showinfo(_("Über Bash-Script-Maker"), about_text)
1014+
"""Zeigt About-Dialog mit Logo"""
1015+
try:
1016+
about_dialog = AboutDialog(self.root)
1017+
about_dialog.grab_set() # Modal dialog
1018+
about_dialog.wait_window() # Warten bis Dialog geschlossen wird
1019+
except Exception as e:
1020+
# Fallback auf einfachen Dialog
1021+
about_text = _(
1022+
f"Bash-Script-Maker v{__version__}\n\n"
1023+
"Ein GUI-Programm zur einfachen Erstellung von Bash-Scripts.\n\n"
1024+
"Erstellt mit Python und Tkinter\n"
1025+
"© 2024 SecureBits"
1026+
)
1027+
messagebox.showinfo(_("Über Bash-Script-Maker"), about_text)
8961028

8971029
def open_documentation(self):
8981030
"""Öffnet die README.md Datei im Standard-Browser."""

0 commit comments

Comments
 (0)