Files
shared_libs/layout_beschreibung.md
2025-08-05 18:29:58 +02:00

4.2 KiB

Beschreibung der Layout-Struktur (Unterer Bereich)

Selbstverständlich. Sie haben absolut recht, eine gute Dokumentation ist wichtig, besonders nach einer solchen Umstrukturierung. Ich werde die neue Logik des unteren Bereichs detailliert aufschlüsseln.

Das Grundkonzept: Drei flexible Spalten

Stellen Sie sich den gesamten unteren Bereich (action_status_frame) wie eine Tabelle mit einer Zeile und drei Spalten vor:

left_container center_container (flexibel) right_container
(linksbündig) (füllt den Platz) (rechtsbündig)
  • action_status_frame: Dies ist der Haupt-Frame für den gesamten unteren Bereich. Er enthält die drei Container.
  • left_container: Alle Widgets, die linksbündig sein sollen, kommen hier hinein.
  • right_container: Alle Widgets, die rechtsbündig sein sollen, kommen hier hinein.
  • center_container: Dieser Container ist der flexible Teil. Er dehnt sich aus, um den gesamten verfügbaren Platz zwischen dem linken und rechten Container zu füllen. Hier platzieren wir die Statusleiste oder das Eingabefeld für den Dateinamen.

Gesteuert wird dieses Verhalten durch diese Zeilen:

# Die drei Container werden im Haupt-Frame platziert
left_container.grid(row=0, column=0, sticky='w')
center_container.grid(row=0, column=1, sticky='ew')
right_container.grid(row=0, column=2, sticky='e')

# Dem Grid wird gesagt, dass nur die mittlere Spalte (1) wachsen soll
self.action_status_frame.grid_columnconfigure(1, weight=1) 

Die zwei "Zeilen": Widgets in den Containern

Innerhalb dieser drei Spalten-Container organisieren wir die Widgets in zwei logischen Zeilen.

  • Obere Zeile: Dies ist meist ein einzelnes, breites Widget.

    • Im Open-Modus: Die status_bar (oder das search_entry).
    • Im Save-Modus: Das filename_entry. Diese werden direkt in den center_container gepackt und füllen dessen Breite aus.
  • Untere Zeile: Hier liegen die meisten Aktions-Widgets (Buttons, Combobox). Um die horizontale Anordnung innerhalb der drei Spalten beizubehalten, wird für diese Zeile in jeden Haupt-Container ein weiterer kleiner Frame gepackt:

    • row2_left (im left_container)
    • row2_center (im center_container)
    • row2_right (im right_container)

Platzierung der Widgets: Wer kommt wohin?

Jetzt wird nur noch entschieden, welches Widget in welchen Container kommt.


Im Open-Modus

  • status_bar / search_entry: Immer in der oberen Zeile des center_container.

  • Wenn button_box_pos == 'left' (Buttons Links):

    • left_container: Enthält open_button und cancel_button.
    • center_container: Enthält filter_combobox und search_status_label.
    • right_container: Enthält den settings_button.
  • Wenn button_box_pos == 'right' (Buttons Rechts):

    • left_container: Ist leer.
    • center_container: Enthält search_status_label (linksbündig darin) und filter_combobox (rechtsbündig darin).
    • right_container: Enthält open_button, cancel_button und settings_button.

Im Save-Modus

  • filename_entry: Immer in der oberen Zeile des center_container.

  • Wenn button_box_pos == 'left' (Buttons Links):

    • left_container: Enthält save_button, cancel_button und den trash_button.
    • center_container: Enthält filter_combobox und search_status_label.
    • right_container: Enthält den settings_button.
  • Wenn button_box_pos == 'right' (Buttons Rechts):

    • left_container: Enthält nur den trash_button.
    • center_container: Enthält search_status_label (linksbündig) und filter_combobox (rechtsbündig).
    • right_container: Enthält save_button, cancel_button und settings_button.

Der entscheidende Vorteil ist: Wenn Sie jetzt ein Widget verschieben oder hinzufügen wollen, müssen Sie nur noch entscheiden, in welchen der drei Haupt-Container (left, center, right) und in welche "Zeile" (direkt oder in den row2-Frame) es gehört. Das komplexe Jonglieren mit Spalten- und Zeilenindizes im Grid entfällt vollständig.

Ich hoffe, diese Erklärung macht die neue Struktur klarer und die Wartung für Sie einfacher.