mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-07-01 11:14:52 +02:00
Unify list filter sections
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import tkinter as tk
|
||||
from tkinter import ttk
|
||||
|
||||
|
||||
def titled_frame(parent: tk.Misc, title: str) -> ttk.LabelFrame:
|
||||
frame = ttk.LabelFrame(parent, padding=(12, 10))
|
||||
frame.configure(labelwidget=ttk.Label(frame, text=title, style="TimelineHeader.TLabel"))
|
||||
return frame
|
||||
@@ -6,6 +6,7 @@ from tkinter import messagebox, ttk
|
||||
from ccma.domain.dates import format_date_for_display
|
||||
from ccma.domain.models import ASSET_STATUS_LABELS, MEMBERSHIP_STATUS_LABELS, Asset, HousekeeperFinding, Member
|
||||
from ccma.ui.labels import storage_key
|
||||
from ccma.ui.sections import titled_frame
|
||||
|
||||
|
||||
MEMBER_TABLE_COLUMNS = (
|
||||
@@ -67,6 +68,10 @@ def _selected_status_filter(label: str) -> str:
|
||||
return storage_key(MEMBERSHIP_STATUS_LABELS, label)
|
||||
|
||||
|
||||
def _filter_label_frame(parent: tk.Misc) -> ttk.LabelFrame:
|
||||
return titled_frame(parent, "// FILTER")
|
||||
|
||||
|
||||
def _asset_table_value(asset: Asset, column: str, holder_label: str) -> str:
|
||||
if column == "label":
|
||||
return asset.label
|
||||
@@ -228,10 +233,10 @@ class MembersTab(ttk.Frame):
|
||||
self.count_var = tk.StringVar()
|
||||
ttk.Label(header, textvariable=self.count_var, style="Mono.TLabel").grid(row=1, column=0, sticky="w")
|
||||
ttk.Button(header, text="Tab schließen", command=self.on_close).grid(row=0, column=1, rowspan=2)
|
||||
filters = ttk.Frame(self, padding=(12, 10))
|
||||
filters = _filter_label_frame(self)
|
||||
filters.grid(row=1, column=0, sticky="ew", pady=(0, 10))
|
||||
filters.columnconfigure(1, weight=1)
|
||||
ttk.Label(filters, text="Filter", style="Mono.TLabel").grid(row=0, column=0, sticky="w", padx=(0, 16))
|
||||
filter_row = ttk.Frame(filters)
|
||||
filter_row.grid(row=0, column=0, sticky="w")
|
||||
self.tree = ttk.Treeview(
|
||||
self,
|
||||
columns=("number", "first_name", "last_name", "nickname", "email", "birth", "status"),
|
||||
@@ -240,15 +245,15 @@ class MembersTab(ttk.Frame):
|
||||
self.sort_column = "last_name"
|
||||
self.sort_descending = False
|
||||
self.status_filter_var = tk.StringVar(value=STATUS_FILTER_ALL)
|
||||
ttk.Label(filters, text="Status").grid(row=0, column=1, sticky="w", padx=(0, 8))
|
||||
ttk.Label(filter_row, text="Status").grid(row=0, column=0, sticky="w", padx=(0, 8))
|
||||
self.status_filter = ttk.Combobox(
|
||||
filters,
|
||||
filter_row,
|
||||
textvariable=self.status_filter_var,
|
||||
state="readonly",
|
||||
values=[STATUS_FILTER_ALL, *MEMBERSHIP_STATUS_LABELS.values()],
|
||||
width=28,
|
||||
)
|
||||
self.status_filter.grid(row=0, column=2, sticky="w")
|
||||
self.status_filter.grid(row=0, column=1, sticky="w")
|
||||
self.status_filter.bind("<<ComboboxSelected>>", lambda _event: self._render_members())
|
||||
for key, title, width in MEMBER_TABLE_COLUMNS:
|
||||
self.tree.heading(key, text=title, command=lambda column=key: self._toggle_sort(column))
|
||||
@@ -349,11 +354,13 @@ class AssetsTab(ttk.Frame):
|
||||
button_row.grid(row=0, column=1, rowspan=2, sticky="e")
|
||||
ttk.Button(button_row, text="Neues Asset", command=self.on_new).pack(side="left", padx=(0, 8))
|
||||
ttk.Button(button_row, text="Tab schließen", command=self.on_close).pack(side="left")
|
||||
filters = ttk.Frame(self, padding=(12, 10))
|
||||
filters = _filter_label_frame(self)
|
||||
filters.grid(row=1, column=0, sticky="ew", pady=(0, 10))
|
||||
ttk.Label(filters, text="Status").grid(row=0, column=0, sticky="w", padx=(0, 8))
|
||||
filter_row = ttk.Frame(filters)
|
||||
filter_row.grid(row=0, column=0, sticky="w")
|
||||
ttk.Label(filter_row, text="Status").grid(row=0, column=0, sticky="w", padx=(0, 8))
|
||||
self.status_filter = ttk.Combobox(
|
||||
filters,
|
||||
filter_row,
|
||||
textvariable=self.status_filter_var,
|
||||
state="readonly",
|
||||
values=[ASSET_FILTER_ALL, *ASSET_STATUS_LABELS.values()],
|
||||
|
||||
Reference in New Issue
Block a user