Seine Ansage
"waere nun noch gut das mann in den einstellungen einstellen kann hell
oder dunkel oder automatik das fehlt sollte eigendlich drin sein"
Er hatte recht: beide Farbpaletten lagen laengst in theme.py, das Programm
folgte aber starr dem Windows-Theme. Jetzt steht die Wahl unter
Einstellungen -> Darstellung und wirkt SOFORT, nicht erst beim Neustart.
Umschalten heisst neu bauen
Die Farben stehen an ueber sechzig Stellen fest in den Widgets. Sie einzeln
nachzuziehen hiesse, ein Verzeichnis aller eingefaerbten Widgets zu fuehren
- und wer beim naechsten neuen Widget vergisst, es einzutragen, hat einen
hellen Fleck im dunklen Fenster, den niemand mehr findet. Neu bauen kann
nichts vergessen.
⚠️ Dabei gingen im ersten Versuch Kundenname und Rechnungsnummer verloren:
die _build_-Methoden legen ihre StringVars SELBST an, nach dem Neubau
standen leere da. Gesichert werden jetzt ALLE Tk-Variablen des Fensters,
nicht eine gepflegte Auswahl - wer spaeter ein Feld hinzufuegt, muss nichts
eintragen.
Titelleiste, Symbol und Logo gehen mit
Die Titelleiste gehoert Windows; sie folgt ueber
DWMWA_USE_IMMERSIVE_DARK_MODE. _dark_titlebar konnte bisher nur DUNKEL und
zeigt jetzt in beide Richtungen - vorher behielt man beim Wechsel auf hell
eine schwarze Leiste ueber einem hellen Fenster.
Sein Befund: "die svg fuer das dunkle heller machen weil die geht nun
unter" und "icon musst wenn es dunkel ist mit aendern auf das hellere".
Gemessen sind es zwei Farben: Petrol #004860 und ein fast schwarzes
#181818 - letzteres liegt genau auf der Kachelfarbe #15171b. Umgestellt
wird nur die HELLIGKEIT (L -> 1-L, gedeckelt bei 0.78), Farbton und
Saettigung bleiben: sonst waere es nicht mehr sein Logo. Betrifft
Wasserzeichen, Kopflogo und das Fenstersymbol; die aufgehellte ICO entsteht
beim Bauen.
menueleiste.py
Die selbstgebaute Menueleiste ist jetzt eine eigene Datei und liegt in
beiden Programmen gleich - das Steuerrechnungstool hatte noch das native
tk.Menu, das sich unter Windows nicht einfaerben laesst.
pruef_darstellung.py
Prueft die drei Modi, dass beim Umschalten NICHTS verlorengeht, und dass
danach kein Widget mehr eine Farbe der anderen Palette traegt - genau der
helle Fleck, den man sonst nie wiederfindet.
Nebenbei: die beiden Dauertimer melden beim Beenden kein
"invalid command name ..._api_pumpe" mehr. Ein Log, in dem beim normalen
Beenden immer zwei Fehler stehen, liest irgendwann niemand mehr.
Fassung 1.8.0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
Der Fehler
Das Release 1.7.0 war angelegt, die EXE hing dran - und der Updater haette
trotzdem nie etwas gefunden. Der Anhang hiess "Rechnungstool-1.7.0.exe",
gesucht wird aber "Rechnungstool.exe" (version.EXE_NAME). Die Nummer kommt
erst beim Ablegen dazu.
Das Tueckische: nichts schlaegt fehl. Der Updater meldet freundlich
"Aktuell. Kein Update noetig." und startet die alte Fassung. Ein Update,
das stumm nie ankommt, ist schlimmer als eines, das laut scheitert.
Zweiter Fund derselben Runde: die Pruefsummen standen nur im Release-TEXT.
Der Updater liest sie aus einer angehaengten Datei <exe>.sha256. Ohne die
prueft er nur die Groesse - und eine verfaelschte Datei hat genau die
richtige Groesse.
bauen.py legt jetzt release/ an
Genau die vier Dateien, die ans Release gehoeren, unter genau den Namen,
unter denen der Updater sie sucht. Damit haengt niemand mehr etwas
Falsches an.
pruef_release.py
Prueft gegen das echte Repository: gibt es zur Nummer aus version.py ein
Release, heisst der Anhang exakt wie EXE_NAME, haengt die Pruefsumme dran,
ist es die der zuletzt gebauten Datei - und findet passendes_release() es
auch. Ohne Netz wird uebersprungen statt rot gemeldet.
muster/ ist raus
Der Gast darin ist erfunden, der Betrieb nicht: IBAN, Steuernummer und die
private Rufnummer des Auftraggebers stehen im Briefkopf. In ein
oeffentliches Repository gehoert das nicht.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
Logo
Das Programmlogo steht jetzt klein neben "powered by ravokk" - dort sitzt
die Kennung des Werkzeugs, nicht die des Kunden. Eine eigene Kopfzeile hat
dieses Programm nicht; oben sind die Reiter.
bauen.py
Der Weg von der Quelle zur Setup-Datei war eine Folge von Befehlen, die
jemand von Hand eintippen musste. Wer einen Schritt vergisst, liefert eine
Setup-Datei mit einer alten EXE aus - und sieht es ihr nicht an. Genau das
ist heute passiert. Jetzt ist es ein Befehl, die Nummer kommt aus
version.py, und am Ende stehen die SHA256-Summen fuer den Release-Text.
pruef_start_exe.py
Prueft, was kein anderer Pruefstand prueft: ob die GEBAUTE EXE ein
sichtbares Fenster zeigt. Alle uebrigen fahren das Programm aus der Quelle,
dort trat der Fehler nie auf. "Der Prozess laeuft" beweist dabei nichts -
er lief ja, waehrend nichts zu sehen war.
Aufgeraeumt
"Rechnung Campinghof.exe" ist weg; gebaute Dateien gehoeren ins Release,
nicht ins Repo. Die .spec-Dateien dagegen schon: ohne sie kann niemand die
EXE nachbauen, die der Updater ausliefert.
Fassung 1.7.0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax