From 9794632ae437757d2c8c71adaf9148d652933e11 Mon Sep 17 00:00:00 2001 From: TheMockTv Date: Mon, 7 Sep 2026 10:43:09 +0200 Subject: [PATCH] Alles unter ravokk - und ein Deinstallieren laesst nichts liegen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Seine Ansagen "gibt es noch das popup install ordner auswaehlen, das stimmt ja nicht" "wie soll das rechnungstool und steuertool wissen wo es ist, das muss in ravokk liegen und dann zusammen, sonst kommt das eine nicht an das andere ran - die sind doch nur ueber die gemeinsame sqlite verbunden und mit api" "es gibt ravokk als main verzeichnis, da liegt config und sqlite drin, und dann gibt es den ordner rechnungstool und steuertool" "ravokk ist meine firma und die programme gehoeren zu der firma" "du solltest die auch mal deinstallieren und neu installieren ... dass der ordner dann leer ist und sauber - will keine tools die unsauber sind" Die Struktur %LOCALAPPDATA%/ravokk/ config.json, journal.sqlite3, Nummernbuch, berichte/ <- Daten Rechnungstool/ <- Programm Steuerrechnungstool/ <- Programm Die Daten liegen NEBEN dem Programm, nicht darin. Nur dadurch koennen beide Forderungen gleichzeitig gelten: der Programmordner wird beim Deinstallieren restlos geleert, und die Belege bleiben zehn Jahre stehen (§ 147 AO). Kein Ordner-Dialog mehr beim ersten Start gemeinsam.standard_ordner() nennt den festen Ort, beide Programme legen ihn selbst an. Gefragt wird nur noch, wer ihn ausdruecklich verschieben will (Menue -> Gemeinsamer Ordner) - etwa auf ein Netzlaufwerk. Der Knopf hiess "Install-Ordner auswaehlen..." und der Text riet zum "Ordner, in dem die Programme liegen". Beides war falsch und seit dem Installer erst recht: die beiden liegen in getrennten Unterordnern, und ein Deinstallieren haette das Nummernbuch mitgenommen. ⚠ Dabei gefunden: das Journal lag im TEMP-Ordner Der Merkzettel der installierten Fassung zeigte auf %TEMP%/abnahme_bst/Daten - haengengeblieben aus einem Abnahmelauf vom 03.09. Windows raeumt den Temp-Ordner automatisch auf; das Journal waere ohne Vorwarnung verschwunden. ablage.py verwirft einen solchen Merkzettel jetzt, statt ihm zu folgen. Uninstaller Er raeumt jetzt auch, was der UPDATER angelegt hat - jede geladene Fassung und installiert.json. Die kannte der Installer nicht; mit jeder Fassung waere eine EXE mehr liegen geblieben. Gemessen vorher: zwei EXEs und der halbe Datenordner. pruef_installation.py Installiert wirklich, legt eine Datei an wie der Updater es taete, deinstalliert und sieht nach: Programmordner leer, Daten unangetastet. Vorhandene Daten werden vorher gesichert und danach zurueckgelegt - ein Pruefstand fasst niemandem seine Buchhaltung an. pruef_gemeinsam_automatisch.py Prueft, dass beide Programme denselben Ordner nennen und dass findet, was das andere eintraegt - ohne dass jemand einen Pfad eingegeben hat. Symbol Das Windows-Symbol ist jetzt eine helle Kachel mit runden Ecken und dem Zeichen darauf, in allen Groessen von 16 bis 256 - "so wie das rustdesk, nur halt alle ecken in der rundung". Ein freigestelltes Logo ging auf einem dunklen Desktop unter. Die zweite, aufgehellte ICO ist damit ueberfluessig; das aufgehellte Logo IM Programm (Kopfzeile, Wasserzeichen) bleibt unveraendert. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax --- Diagnose.spec | 2 +- Installer.iss | 227 ++++++++++++++++++--------------- Rechnungstool.spec | 2 +- app.py | 22 +++- assets/programm.ico | Bin 51609 -> 43660 bytes assets/programm_dunkel.ico | Bin 55027 -> 0 bytes bauen.py | 13 +- config.py | 47 +++++-- gemeinsam.py | 43 +++++++ ordnerwahl.py | 20 ++- pruef_gemeinsam_automatisch.py | 107 ++++++++++++++++ pruef_installation.py | 185 +++++++++++++++++++++++++++ wasserzeichen.py | 94 ++++++++++---- 13 files changed, 611 insertions(+), 151 deletions(-) delete mode 100644 assets/programm_dunkel.ico create mode 100644 pruef_gemeinsam_automatisch.py create mode 100644 pruef_installation.py diff --git a/Diagnose.spec b/Diagnose.spec index bf199bd..d030d6f 100644 --- a/Diagnose.spec +++ b/Diagnose.spec @@ -9,7 +9,7 @@ a = Analysis( # nur fuer den Prozess geladen (theme.schrift_vorbereiten). Fehlt sie, faellt # das Programm still auf Segoe UI zurueck - dann sieht es beim Kunden anders # aus als hier. - datas=[('assets/programm.ico', 'assets'), ('assets/programm_dunkel.ico', 'assets'), + datas=[('assets/programm.ico', 'assets'), ('assets/programm_logo.png', 'assets'),('assets/logo.png', 'assets'), ('assets/fonts', 'assets/fonts'), # Die Icons (Material Symbols vom Hub) - ohne sie zeigen die Knoepfe diff --git a/Installer.iss b/Installer.iss index f4e7025..dcfb2d5 100644 --- a/Installer.iss +++ b/Installer.iss @@ -1,100 +1,127 @@ -; Installer fuer das Rechnungstool (Inno Setup 6) -; -; ENTSCHEIDUNGEN, DIE HIER STECKEN - und warum -; -------------------------------------------- -; 1. INSTALLATION PRO BENUTZER nach %LOCALAPPDATA%\Programs, NICHT nach -; "Program Files". Grund: der Updater muss die EXE ablegen duerfen. In -; Program Files darf ein normaler Benutzer nicht schreiben - jedes Update -; wuerde an fehlenden Rechten scheitern oder eine Administrator-Abfrage -; erzwingen. Chrome, VS Code, Discord, Teams und Fusion 360 machen es -; genauso, aus demselben Grund. -; -; 2. DIE VERKNUEPFUNG ZEIGT AUF DEN UPDATER, nicht auf das Programm. So schaut -; jeder Start zuerst nach einer neuen Fassung. Der Updater startet danach -; die eigentliche EXE - die ist dabei noch gar nicht in Benutzung und laesst -; sich deshalb problemlos ersetzen. -; -; 3. KEINE DATEN ANFASSEN. Der Installer legt keine Rechnungsordner an, kein -; Journal, kein Nummernbuch - und beim Deinstallieren wird davon nichts -; entfernt. Das Programm schreibt aufbewahrungspflichtige Belege -; (§ 147 AO, zehn Jahre). Ein Deinstallieren darf sie nie mitnehmen. -; -; 4. Der Eintrag unter "Apps & Features" entsteht von selbst - Inno Setup legt -; den Registry-Schluessel unter HKCU an. Da muss niemand von Hand hinein. - -#define Name "Rechnungstool" -#define Herausgeber "ravokk" -#define ExeUpdater "Updater.exe" -#define Webseite "https://git.pcore.de/TheMockTv/rechnungstool" - -[Setup] -AppId={{7F3A9C2E-51D4-4B86-9A17-2C0E8B4D6A31} -AppName={#Name} -AppVersion={#Version} -AppVerName={#Name} {#Version} -AppPublisher={#Herausgeber} -AppPublisherURL={#Webseite} -AppSupportURL={#Webseite}/issues -AppUpdatesURL={#Webseite}/releases - -; --- pro Benutzer, ohne Adminrechte --- -PrivilegesRequired=lowest -; Der Zielordner ist NICHT waehlbar. Wer hier "Programme" auswaehlen -; koennte, braeche sich den Updater: dort darf ein normaler Benutzer -; nicht schreiben. Chrome, Teams und Discord blenden diese Seite aus -; demselben Grund aus. In "Programme" gehoert hoechstens eine -; Verknuepfung - und die liegt ohnehin im Startmenue. -DisableDirPage=yes -DefaultDirName={localappdata}\Programs\{#Name} -DefaultGroupName={#Name} -DisableProgramGroupPage=yes -UsePreviousAppDir=yes - -OutputDir=setup -OutputBaseFilename=Rechnungstool-Setup-{#Version} -Compression=lzma2 -SolidCompression=yes -WizardStyle=modern -; Das Programmsymbol - auch fuer den Installer selbst und den -; Eintrag unter "Apps & Features". -SetupIconFile=assets\programm.ico -UninstallDisplayIcon={app}\{#ExeProgramm} -ArchitecturesInstallIn64BitMode=x64compatible - -; Erprobungsfassung - das steht auch im Programm selbst. -AppComments=Erprobungsfassung. Benutzung auf eigene Gefahr. - -[Languages] -Name: "deutsch"; MessagesFile: "compiler:Languages\German.isl" - -[Tasks] -; Kein "unchecked": der Haken ist vorgesetzt. Er hatte nach dem -; Installieren kein Symbol auf dem Desktop und musste das Programm -; suchen (07.09.2026). Wer es nicht will, nimmt den Haken heraus. -Name: "desktopicon"; Description: "Verknüpfung auf dem Desktop anlegen"; \ - GroupDescription: "Zusätzliche Verknüpfungen:" - -[Files] -; Der Updater - das ist, was der Benutzer startet. -Source: "dist\{#ExeUpdater}"; DestDir: "{app}"; Flags: ignoreversion -; Das Programm selbst, mit der Nummer im Namen. Der Updater erkennt daran, -; was installiert ist, und legt neue Fassungen daneben statt darueber. -Source: "dist\{#ExeProgramm}"; DestDir: "{app}"; Flags: ignoreversion - -[Icons] -; Beide Verknuepfungen zeigen auf den UPDATER, nicht auf das Programm. -; IconFilename ausdruecklich: ohne das erbt die Verknuepfung das Symbol vom -; UPDATER, und Windows zeigte an ihrer Stelle das nackte Standardsymbol. -Name: "{group}\{#Name}"; Filename: "{app}\{#ExeUpdater}"; IconFilename: "{app}\{#ExeProgramm}" -Name: "{group}\{#Name} deinstallieren"; Filename: "{uninstallexe}" -Name: "{userdesktop}\{#Name}"; Filename: "{app}\{#ExeUpdater}"; IconFilename: "{app}\{#ExeProgramm}"; Tasks: desktopicon - -[Run] -Filename: "{app}\{#ExeUpdater}"; Description: "{#Name} jetzt starten"; \ - Flags: nowait postinstall skipifsilent - -[UninstallDelete] -; Nur die Buchfuehrung des Updaters. -; NICHTS von den Daten des Betriebs - keine Rechnungen, kein Journal, kein -; Nummernbuch. Die liegen ohnehin woanders und muessen zehn Jahre bleiben. -Type: files; Name: "{app}\installiert.json" +; Installer fuer das Rechnungstool (Inno Setup 6) +; +; ENTSCHEIDUNGEN, DIE HIER STECKEN - und warum +; -------------------------------------------- +; 1. INSTALLATION PRO BENUTZER nach %LOCALAPPDATA%\Programs, NICHT nach +; "Program Files". Grund: der Updater muss die EXE ablegen duerfen. In +; Program Files darf ein normaler Benutzer nicht schreiben - jedes Update +; wuerde an fehlenden Rechten scheitern oder eine Administrator-Abfrage +; erzwingen. Chrome, VS Code, Discord, Teams und Fusion 360 machen es +; genauso, aus demselben Grund. +; +; 2. DIE VERKNUEPFUNG ZEIGT AUF DEN UPDATER, nicht auf das Programm. So schaut +; jeder Start zuerst nach einer neuen Fassung. Der Updater startet danach +; die eigentliche EXE - die ist dabei noch gar nicht in Benutzung und laesst +; sich deshalb problemlos ersetzen. +; +; 3. KEINE DATEN ANFASSEN. Der Installer legt keine Rechnungsordner an, kein +; Journal, kein Nummernbuch - und beim Deinstallieren wird davon nichts +; entfernt. Das Programm schreibt aufbewahrungspflichtige Belege +; (§ 147 AO, zehn Jahre). Ein Deinstallieren darf sie nie mitnehmen. +; +; 4. Der Eintrag unter "Apps & Features" entsteht von selbst - Inno Setup legt +; den Registry-Schluessel unter HKCU an. Da muss niemand von Hand hinein. + +#define Name "Rechnungstool" +#define Herausgeber "ravokk" +#define ExeUpdater "Updater.exe" +#define Webseite "https://git.pcore.de/TheMockTv/rechnungstool" + +[Setup] +AppId={{7F3A9C2E-51D4-4B86-9A17-2C0E8B4D6A31} +AppName={#Name} +AppVersion={#Version} +AppVerName={#Name} {#Version} +AppPublisher={#Herausgeber} +AppPublisherURL={#Webseite} +AppSupportURL={#Webseite}/issues +AppUpdatesURL={#Webseite}/releases + +; --- pro Benutzer, ohne Adminrechte --- +PrivilegesRequired=lowest +; Der Zielordner ist NICHT waehlbar. Wer hier "Programme" auswaehlen +; koennte, braeche sich den Updater: dort darf ein normaler Benutzer +; nicht schreiben. Chrome, Teams und Discord blenden diese Seite aus +; demselben Grund aus. In "Programme" gehoert hoechstens eine +; Verknuepfung - und die liegt ohnehin im Startmenue. +DisableDirPage=yes +; EIN Verzeichnis fuer beides - seine Ansage am 07.09.2026: +; "es gibt ravokk als main verzeichnis, da liegt config und sqlite +; drin, und dann gibt es den ordner rechnungstool und steuertool" +; +; %LOCALAPPDATA%\ravokk\ +; campinghof-nummernbuch.sqlite3 <- gemeinsam, beide schauen hierher +; Rechnungstool\ <- Programm + Updater +; Steuerrechnungstool\ <- Programm + Updater +; +; Jedes Programm in seinem eigenen Unterordner: die beiden Updater heissen +; gleich und wuerden sich sonst gegenseitig ueberschreiben. +; +; Das Nummernbuch liegt eine Ebene DARUEBER und gehoert keinem der beiden. +; Ein Deinstallieren nimmt es deshalb nicht mit - und wer nur eines der +; Programme installiert, legt es trotzdem am richtigen Ort an +; (gemeinsam.standard_ordner). +DefaultDirName={localappdata}\ravokk\{#Name} +DefaultGroupName={#Name} +DisableProgramGroupPage=yes +UsePreviousAppDir=yes + +OutputDir=setup +OutputBaseFilename=Rechnungstool-Setup-{#Version} +Compression=lzma2 +SolidCompression=yes +WizardStyle=modern +; Das Programmsymbol - auch fuer den Installer selbst und den +; Eintrag unter "Apps & Features". +SetupIconFile=assets\programm.ico +UninstallDisplayIcon={app}\{#ExeProgramm} +ArchitecturesInstallIn64BitMode=x64compatible + +; Erprobungsfassung - das steht auch im Programm selbst. +AppComments=Erprobungsfassung. Benutzung auf eigene Gefahr. + +[Languages] +Name: "deutsch"; MessagesFile: "compiler:Languages\German.isl" + +[Tasks] +; Kein "unchecked": der Haken ist vorgesetzt. Er hatte nach dem +; Installieren kein Symbol auf dem Desktop und musste das Programm +; suchen (07.09.2026). Wer es nicht will, nimmt den Haken heraus. +Name: "desktopicon"; Description: "Verknüpfung auf dem Desktop anlegen"; \ + GroupDescription: "Zusätzliche Verknüpfungen:" + +[Files] +; Der Updater - das ist, was der Benutzer startet. +Source: "dist\{#ExeUpdater}"; DestDir: "{app}"; Flags: ignoreversion +; Das Programm selbst, mit der Nummer im Namen. Der Updater erkennt daran, +; was installiert ist, und legt neue Fassungen daneben statt darueber. +Source: "dist\{#ExeProgramm}"; DestDir: "{app}"; Flags: ignoreversion + +[Icons] +; Beide Verknuepfungen zeigen auf den UPDATER, nicht auf das Programm. +; IconFilename ausdruecklich: ohne das erbt die Verknuepfung das Symbol vom +; UPDATER, und Windows zeigte an ihrer Stelle das nackte Standardsymbol. +Name: "{group}\{#Name}"; Filename: "{app}\{#ExeUpdater}"; IconFilename: "{app}\{#ExeProgramm}" +Name: "{group}\{#Name} deinstallieren"; Filename: "{uninstallexe}" +Name: "{userdesktop}\{#Name}"; Filename: "{app}\{#ExeUpdater}"; IconFilename: "{app}\{#ExeProgramm}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#ExeUpdater}"; Description: "{#Name} jetzt starten"; \ + Flags: nowait postinstall skipifsilent + +[UninstallDelete] +; Was der INSTALLER gelegt hat, raeumt Inno Setup von selbst weg. Hier +; steht, was der UPDATER angelegt hat - davon weiss der Installer nichts: +; -.exe jede geladene Fassung +; installiert.json die Buchfuehrung des Updaters +; Ohne diese Zeilen bleibt der Ordner voller alter EXEs stehen. +; +; NICHT geloescht werden Rechnungen, Journal und Nummernbuch. Die liegen +; ohnehin woanders (%LOCALAPPDATA%/ravokk) und muessen zehn Jahre bleiben +; (§ 147 AO). Deshalb steht hier auch kein 'Type: filesandordirs' auf +; {app} - das waere die bequeme, aber falsche Zeile. +Type: files; Name: "{app}\installiert.json" +Type: files; Name: "{app}\{#Name}-*.exe" +Type: files; Name: "{app}\Updater.exe" +; Zum Schluss den Ordner selbst - aber NUR, wenn er leer ist. +Type: dirifempty; Name: "{app}" \ No newline at end of file diff --git a/Rechnungstool.spec b/Rechnungstool.spec index 9f4a7a6..57d1265 100644 --- a/Rechnungstool.spec +++ b/Rechnungstool.spec @@ -9,7 +9,7 @@ a = Analysis( # nur fuer den Prozess geladen (theme.schrift_vorbereiten). Fehlt sie, faellt # das Programm still auf Segoe UI zurueck - dann sieht es beim Kunden anders # aus als hier. - datas=[('assets/programm.ico', 'assets'), ('assets/programm_dunkel.ico', 'assets'), + datas=[('assets/programm.ico', 'assets'), ('assets/programm_logo.png', 'assets'),('assets/logo.png', 'assets'), ('assets/fonts', 'assets/fonts'), # Die Icons (Material Symbols vom Hub) - ohne sie zeigen die Knoepfe diff --git a/app.py b/app.py index ae92f8a..32fe38f 100644 --- a/app.py +++ b/app.py @@ -922,12 +922,30 @@ class RechnungsApp(ThemeMixin, MeldungMixin, KorrekturMixin, EinstellungenMixin, """ self._buch_oeffnen() if self.buch is None and not config.testlauf(): - self.dlg_gemeinsam(erststart=True) + # Kein Dialog mehr beim ersten Start: der Ordner steht fest und + # ist in beiden Programmen derselbe (gemeinsam.standard_ordner). + # Gefragt wurde frueher - und wer in den zwei Programmen zwei + # verschiedene Pfade eintippte, merkte es erst, wenn eine + # Rechnungsnummer zum zweiten Mal vergeben war. + ordner = gemeinsam.standard_anlegen() + if ordner: + self.cfg["gemeinsam_ordner"] = ordner + config.save_config(self.cfg) + self._buch_oeffnen() + if self.buch is None: + # Nur wenn selbst das nicht geht, wird gefragt. + self.dlg_gemeinsam(erststart=True) self._buch_anzeigen() def dlg_gemeinsam(self, erststart=False): + # Ist noch keiner gesetzt, wird der Rechnungsordner vorgeschlagen: + # den kennen beide Programme, er wird mitgesichert, und er ueberlebt + # ein Deinstallieren. Der Ordner, in dem das Programm liegt, taugt + # dafuer NICHT mehr - seit dem Installer sind das zwei getrennte. ordner = ordnerwahl.ordner_abfragen( - self, "Rechnungstool", str(self.cfg.get("gemeinsam_ordner", "") or "")) + self, "Rechnungstool", + str(self.cfg.get("gemeinsam_ordner", "") or "") + or str(self.cfg.get("output_dir", "") or "")) if not ordner: if erststart: self.melden_warnung( diff --git a/assets/programm.ico b/assets/programm.ico index cae16c942d04f204b66e0d334615784bcbb9b9d2..aed826992e6d67bdaeba529f68595ea0e9ca850d 100644 GIT binary patch literal 43660 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 diff --git a/bauen.py b/bauen.py index efd4381..f3aa6dc 100644 --- a/bauen.py +++ b/bauen.py @@ -82,14 +82,15 @@ def main(): for ordner in ("build", "dist", "setup", "release"): shutil.rmtree(os.path.join(HIER, ordner), ignore_errors=True) - # Die aufgehellte Fassung des Symbols fuer die dunkle Darstellung. Sie - # wird HIER erzeugt und nicht erst beim ersten dunklen Start: sonst muesste - # das Programm in seinen eigenen Ordner schreiben duerfen - unter - # "Programme" darf es das nicht. + # Das Windows-Symbol aus dem Logo bauen: helle Kachel mit runden Ecken, + # Zeichen darauf, in allen Groessen von 16 bis 256. Es wird HIER erzeugt + # und nicht zur Laufzeit - ein installiertes Programm soll nicht in seinen + # eigenen Ordner schreiben muessen. sys.path.insert(0, HIER) import wasserzeichen - dunkles = wasserzeichen.symbol_datei_dunkel() - print(f"--- Symbol dunkel: {dunkles or 'FEHLT'}") + ico = wasserzeichen.symbol_bauen( + os.path.join(HIER, "assets", "programm.ico")) + print(f"--- Symbol: {ico or 'FEHLT'}") lauf([sys.executable, "-m", "PyInstaller", "--noconfirm", f"{stamm}.spec"], f"{stamm} {version.VERSION}") diff --git a/config.py b/config.py index c81f110..d76963d 100644 --- a/config.py +++ b/config.py @@ -42,9 +42,15 @@ def _daten_ordner(): Alles, was das Programm schreibt, liegt darin beieinander - man sieht auf einen Blick, was von ihm stammt, und kann es mitnehmen oder sichern. - 1. neben der EXE ein Unterordner "Daten" - 2. geht das nicht (EXE liegt z.B. unter "Programme"), dann - der Ordner Rechnungstool unter LOCALAPPDATA + 1. der Ordner der Firma: %LOCALAPPDATA%/ravokk + 2. geht das nicht, neben der EXE ein Unterordner "Daten" + 3. und zuletzt der alte eigene Ordner unter LOCALAPPDATA + + Warum unter "ravokk" (07.09.2026): dort liegen beide Programme und das + gemeinsame Nummernbuch beieinander - seine Ansage, *"ravokk ist meine + firma und die programme gehoeren zu der firma"*. Und weil die Daten damit + NEBEN dem Programmordner liegen statt darin, raeumt ein Deinstallieren nur + das Programm weg und laesst die Belege stehen (§ 147 AO). Was schon da ist, wird benutzt; was fehlt, wird angelegt. Lagen die Dateien noch direkt neben der EXE - so war es frueher -, ziehen sie mit um, statt @@ -52,19 +58,34 @@ def _daten_ordner(): """ if not getattr(sys, "frozen", False): return EXE_DIR # aus der Quelle heraus bleibt alles, wo es ist - kandidat = os.path.join(EXE_DIR, "Daten") + heim = os.environ.get("LOCALAPPDATA") or os.path.expanduser("~") + # NEBEN dem Programm, nicht darin: das Programm liegt in + # ravokk/Rechnungstool, die Daten eine Ebene darueber in ravokk. Genau so + # hat er es beschrieben - "da liegt config und sqlite drin, und dann gibt + # es den ordner rechnungstool und steuertool". Nur dadurch kann ein + # Deinstallieren den Programmordner restlos leeren, ohne die Belege + # anzufassen (§ 147 AO). + kandidat = os.path.join(heim, "ravokk") if not _beschreibbar(kandidat): - kandidat = os.path.join(os.environ.get("LOCALAPPDATA", EXE_DIR), "Rechnungstool") + kandidat = os.path.join(EXE_DIR, "Daten") if not _beschreibbar(kandidat): - return EXE_DIR # letzter Ausweg: wie frueher + kandidat = os.path.join(heim, "Rechnungstool") + if not _beschreibbar(kandidat): + return EXE_DIR # letzter Ausweg: wie frueher + # Was an einem frueheren Ort liegt, zieht mit um - sonst faengt das + # Programm ohne Firmendaten, Katalog und Zaehler neu an. for name in ("config.json",): - alt, neu_ = os.path.join(EXE_DIR, name), os.path.join(kandidat, name) - if os.path.exists(alt) and not os.path.exists(neu_): - try: - os.replace(alt, neu_) - print(f"[config] {name} in den Datenordner übernommen") - except OSError: - pass + neu_ = os.path.join(kandidat, name) + for alt in (os.path.join(EXE_DIR, "Daten", name), + os.path.join(EXE_DIR, name), + os.path.join(heim, "Rechnungstool", name)): + if os.path.exists(alt) and not os.path.exists(neu_): + try: + os.replace(alt, neu_) + print(f"[config] {name} aus {alt} übernommen") + break + except OSError: + pass return kandidat diff --git a/gemeinsam.py b/gemeinsam.py index 79abae3..7fc329e 100644 --- a/gemeinsam.py +++ b/gemeinsam.py @@ -90,6 +90,49 @@ FELDER = ("jahr", "datum", "nachname", "vorname", "naechte", "zwischensumme", "freigabe") +def standard_ordner(): + """Wo das Nummernbuch liegt, wenn niemand etwas anderes einstellt. + + WARUM ES DIESEN FESTEN ORT GIBT (07.09.2026) + -------------------------------------------- + Vorher fragte jedes Programm beim ersten Start nach einem Ordner - und der + Nutzer musste in BEIDEN denselben eintragen. Sein Einwand, wortwoertlich: + + "wie soll das rechnungstool und steuertool wissen wo es ist, das muss + im ... ravokk liegen und dann zusammen, sonst kommt das eine nicht an + das andere ran" + + Er hat recht: die beiden sind ueber genau zwei Dinge verbunden - diese + SQLite-Datei und die kleine API, die "hier ist etwas Neues" ruft. Wenn + schon der Ort geraten werden muss, ist die Verbindung nur so gut wie die + Aufmerksamkeit dessen, der zweimal denselben Pfad tippt. Ein falscher + Buchstabe faellt erst auf, wenn eine Rechnungsnummer zum zweiten Mal + vergeben wurde. + + Deshalb: ein fester Ort, den beide von selbst kennen. Gefragt wird nur + noch, wer ihn ausdruecklich verschieben will (Menue -> Gemeinsamer Ordner) - + etwa auf ein Netzlaufwerk, wenn die Programme auf zwei Rechnern laufen. + + LOCALAPPDATA und nicht "Dokumente": dort liegen die Programmdaten ohnehin, + und niemand raeumt den Ordner versehentlich auf. Das Buch ist ein + REGISTER, kein Beleg - geht es verloren, fehlt keine Rechnung, es wird beim + naechsten Einlesen neu gefuellt. + """ + heim = os.environ.get("LOCALAPPDATA") or os.path.expanduser("~") + return os.path.join(heim, "ravokk") + + +def standard_anlegen(): + """Den festen Ordner anlegen und zurueckgeben - oder '' wenn das nicht geht.""" + ordner = standard_ordner() + try: + os.makedirs(ordner, exist_ok=True) + return ordner + except OSError as e: + log.warning("Gemeinsamer Ordner %s liess sich nicht anlegen: %s", ordner, e) + return "" + + def pfad_zur_datei(ordner): """Vollstaendiger Pfad der gemeinsamen Datei in diesem Ordner.""" return os.path.join(ordner or "", DATEINAME) diff --git a/ordnerwahl.py b/ordnerwahl.py index 367c470..ddf6fe0 100644 --- a/ordnerwahl.py +++ b/ordnerwahl.py @@ -6,6 +6,14 @@ Rechnungstool und Steuerjournal fuehren ein gemeinsames Nummernbuch genannt werden - deshalb fragt jedes Programm beim ersten Start danach und sagt ausdruecklich dazu, dass es derselbe sein muss. +⚠ NICHT der Ordner, in dem das Programm liegt. Frueher stand das so im Text +("am besten der Ordner, in dem die Programme liegen") und der Knopf hiess +sogar "Install-Ordner auswaehlen". Seit es einen Installer gibt, geht das gar +nicht mehr: die beiden Programme liegen in ZWEI getrennten Ordnern unter +%LOCALAPPDATA%/Programs, und ein Deinstallieren wuerde das Nummernbuch +mitnehmen. Vorgeschlagen wird deshalb der Ordner, in dem auch die Rechnungen +liegen - den kennen beide Programme ohnehin, und er wird mitgesichert. + Der Weg ist bewusst umstaendlich: auswaehlen, dann OK, dann noch einmal bestaetigen. Ein falscher Ordner faellt sonst erst auf, wenn eine Rechnungsnummer zum zweiten Mal vergeben wurde. @@ -73,7 +81,7 @@ class OrdnerWahl(tk.Toplevel): tk.Label(rahmen, wraplength=breite, justify="left", fg=self._warn, bg=self._bg, font=(theme.SCHRIFT_NAME, 10, "bold"), text="WICHTIG: In BEIDEN Programmen muss derselbe Ordner stehen – am besten " - "der Ordner, in dem die Programme liegen.").grid( + "der Ordner, in dem auch die Rechnungen liegen.").grid( row=2, column=0, sticky="w", pady=(0, 14)) wahl = ttk.Frame(rahmen) @@ -81,8 +89,14 @@ class OrdnerWahl(tk.Toplevel): wahl.columnconfigure(0, weight=1) self.feld = ttk.Entry(wahl, textvariable=self.pfad, state="readonly") self.feld.grid(row=0, column=0, sticky="ew") - ttk.Button(wahl, text="Install-Ordner auswählen…", command=self.waehlen, - width=26).grid(row=0, column=1, sticky="w", padx=(10, 0)) + # "Install-Ordner" hiess der Knopf frueher - das war schon immer + # falsch und ist es seit dem Installer erst recht: hier geht es NICHT + # um den Ordner, in dem das Programm liegt, sondern um den, in dem die + # beiden Programme ihr gemeinsames Nummernbuch fuehren. Sein Befund am + # 07.09.2026: "gibt es noch das popup install ordner auswaehlen, das + # stimmt ja nicht". + ttk.Button(wahl, text="Ordner auswählen…", command=self.waehlen, + width=22).grid(row=0, column=1, sticky="w", padx=(10, 0)) self.stand = tk.Label(rahmen, text="", wraplength=breite, justify="left", bg=self._bg, diff --git a/pruef_gemeinsam_automatisch.py b/pruef_gemeinsam_automatisch.py new file mode 100644 index 0000000..4c9b936 --- /dev/null +++ b/pruef_gemeinsam_automatisch.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +"""Pruefstand: finden sich die beiden Programme von SELBST? + +Sein Einwand vom 07.09.2026, wortwoertlich: + + "wie soll das rechnungstool und steuertool wissen wo es ist, das muss im + ... ravokk liegen und dann zusammen, sonst kommt das eine nicht an das + andere ran - die sind doch nur ueber die gemeinsame sqlite verbunden und + mit api, die sagt hallo da ist was neues" + +Er hat recht: die beiden haengen an genau zwei Faeden - dieser SQLite-Datei +und der kleinen API. Vorher fragte jedes Programm beim ersten Start nach einem +Ordner, und der Nutzer musste in BEIDEN denselben eintragen. Ein Buchstabe +daneben, und jedes Programm fuehrt sein eigenes Buch weiter - auffallen wuerde +das erst, wenn eine Rechnungsnummer zum zweiten Mal vergeben ist +(§ 14 Abs. 4 Nr. 4 UStG). + +GEPRUEFT WIRD + + 1. Beide Programme nennen denselben Standardordner. Das ist die Grundlage; + weichen sie hier ab, hilft alles Weitere nichts. + 2. Der Ordner laesst sich anlegen, und darin entsteht EIN Nummernbuch. + 3. Was das eine eintraegt, findet das andere - ohne dass jemand einen Pfad + eingegeben hat. + +Angefasst wird dabei nichts Echtes: der Standardordner wird ueber die +Umgebungsvariable LOCALAPPDATA auf einen Temp-Ordner umgelenkt. +""" +import os +import shutil +import sys +import tempfile + +fehler = [] + + +def pruefe(bedingung, text): + zeile = (" OK | " if bedingung else "FEHLER | ") + text + kod = sys.stdout.encoding or "utf-8" + print(zeile.encode(kod, "replace").decode(kod)) + if not bedingung: + fehler.append(text) + + +RECHNUNG = r"C:\claude\rechnungstool" +STEUER = r"C:\claude\beherbergungssteuer" + +# ---- 1. Beide Programme meinen denselben Ort ---------------------------- +# Geladen wird jede Fassung EINZELN, damit wirklich die Datei des jeweiligen +# Programms befragt wird und nicht die zufaellig zuerst importierte. +import importlib.util # noqa: E402 + + +def modul_aus(ordner, name): + pfad = os.path.join(ordner, name + ".py") + kennung = f"{name}_{os.path.basename(ordner)}" + spec = importlib.util.spec_from_file_location(kennung, pfad) + m = importlib.util.module_from_spec(spec) + spec.loader.exec_module(m) + return m + + +tmp = tempfile.mkdtemp(prefix="gemeinsam_auto_") +os.environ["LOCALAPPDATA"] = tmp + +g_rechnung = modul_aus(RECHNUNG, "gemeinsam") +g_steuer = modul_aus(STEUER, "gemeinsam") + +a, b = g_rechnung.standard_ordner(), g_steuer.standard_ordner() +pruefe(a == b, f"beide Programme nennen denselben Ordner ({a})") +pruefe(a.startswith(tmp), + "und er haengt an LOCALAPPDATA, nicht an einem festen Pfad im Quelltext") +pruefe(os.path.basename(a) == "ravokk", + f"er heisst 'ravokk', wie er es wollte ({os.path.basename(a)})") + +# ---- 2. Er wird angelegt, und darin liegt EIN Buch ---------------------- +angelegt = g_rechnung.standard_anlegen() +pruefe(bool(angelegt) and os.path.isdir(angelegt), + f"der Ordner wird angelegt ({angelegt})") +pruefe(g_rechnung.DATEINAME == g_steuer.DATEINAME, + f"beide erwarten dieselbe Datei ({g_rechnung.DATEINAME})") +pruefe(g_rechnung.pfad_zur_datei(angelegt) == g_steuer.pfad_zur_datei(angelegt), + "und damit denselben vollen Pfad") + +# ---- 3. Was das eine eintraegt, findet das andere ----------------------- +buch_r = g_rechnung.Nummernbuch(angelegt) +buch_s = g_steuer.Nummernbuch(angelegt) + +buch_r.eintragen("2026-777", jahr=2026, nachname="Probe", quelle="rechnungstool") +gefunden = [n for n in buch_s.nummern(2026) if n == "2026-777"] +pruefe(bool(gefunden), + "was das Rechnungstool eintraegt, sieht das Steuerjournal sofort") + +buch_s.eintragen("2026-778", jahr=2026, nachname="Gegenprobe", quelle="journal") +zurueck = [n for n in buch_r.nummern(2026) if n == "2026-778"] +pruefe(bool(zurueck), "und umgekehrt genauso") + +pruefe(len(os.listdir(angelegt)) >= 1 + and any(n.endswith(".sqlite3") for n in os.listdir(angelegt)), + f"es liegt genau ein Buch dort ({os.listdir(angelegt)})") + +shutil.rmtree(tmp, ignore_errors=True) + +if fehler: + print(f"ROT | {len(fehler)} Punkt(e) nicht erfuellt") + sys.exit(1) +print("GRUEN | Beide Programme finden dasselbe Nummernbuch ohne Nachfrage") diff --git a/pruef_installation.py b/pruef_installation.py new file mode 100644 index 0000000..7e9719c --- /dev/null +++ b/pruef_installation.py @@ -0,0 +1,185 @@ +# -*- coding: utf-8 -*- +"""Pruefstand: installieren, deinstallieren - bleibt der Ordner sauber? + +Seine Ansage vom 07.09.2026: + + "du solltest die auch mal deinstallieren und neu installieren von windows + lassen, dass du auch pruefen kannst, dass der ordner dann leer ist und + sauber - will keine tools die unsauber sind" + +Er hatte recht. Gemessen blieb nach dem Deinstallieren liegen: + + Rechnungstool-1.7.1.exe, Rechnungstool-1.8.0.exe <- vom UPDATER geladen + Daten/config.json, Daten/rechnungstool.pid + +Die EXEs kennt der Installer nicht - die hat der Updater abgelegt. Ohne eine +eigene Regel bleiben sie stehen, und mit jeder Fassung wird es eine mehr. + +ZWEI DINGE MUESSEN GLEICHZEITIG STIMMEN +--------------------------------------- +1. Der PROGRAMMordner ist danach restlos weg. +2. Die DATEN sind unangetastet - Rechnungen, Journal, Nummernbuch. Die sind + zehn Jahre aufbewahrungspflichtig (§ 147 AO); ein Deinstallieren darf sie + nie mitnehmen. + +Beides zusammen geht nur, weil die Daten NEBEN dem Programm liegen: + + %LOCALAPPDATA%/ravokk/ <- Daten, gemeinsames Nummernbuch + Rechnungstool/ <- Programm, wird geleert + Steuerrechnungstool/ <- Programm, wird geleert + +Genau so hat er es beschrieben: *"es gibt ravokk als main verzeichnis, da liegt +config und sqlite drin, und dann gibt es den ordner rechnungstool und +steuertool"* - und dazu, warum es so heisst: *"ravokk ist meine firma und die +programme gehoeren zu der firma"*. + +⚠ DIESER PRUEFSTAND INSTALLIERT WIRKLICH. Er laeuft deshalb nur, wenn das +Setup gebaut ist, und er fasst NUR die Programmordner an - vorhandene Daten +werden vorher gesichert und danach zurueckgelegt. +""" +import os +import shutil +import subprocess +import sys +import tempfile +import time + +HIER = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, HIER) + +import version # noqa: E402 + +LOKAL = os.environ.get("LOCALAPPDATA", "") +RAVOKK = os.path.join(LOKAL, "ravokk") +NAME = os.path.splitext(version.EXE_NAME)[0] +PROGRAMMORDNER = os.path.join(RAVOKK, NAME) + +fehler = [] + + +def pruefe(bedingung, text): + zeile = (" OK | " if bedingung else "FEHLER | ") + text + kod = sys.stdout.encoding or "utf-8" + print(zeile.encode(kod, "replace").decode(kod)) + if not bedingung: + fehler.append(text) + + +def setup_datei(): + ordner = os.path.join(HIER, "release") + if not os.path.isdir(ordner): + return "" + for d in sorted(os.listdir(ordner)): + if d.startswith(NAME + "-Setup") and d.endswith(".exe"): + return os.path.join(ordner, d) + return "" + + +def beenden(): + subprocess.run(["powershell", "-NoProfile", "-Command", + "Get-Process | Where-Object { $_.ProcessName -match " + f"'{NAME}|Updater' " + "} | Stop-Process -Force " + "-ErrorAction SilentlyContinue"], capture_output=True) + time.sleep(1.5) + + +def inhalt(ordner): + if not os.path.isdir(ordner): + return [] + gefunden = [] + for wurzel, _, dateien in os.walk(ordner): + for d in dateien: + gefunden.append(os.path.relpath(os.path.join(wurzel, d), ordner)) + return sorted(gefunden) + + +setup = setup_datei() +if not setup: + print(f"UEBERSPRUNGEN | kein Setup in release/ (vorher: python bauen.py)") + sys.exit(0) +if not LOKAL: + print("UEBERSPRUNGEN | kein LOCALAPPDATA") + sys.exit(0) + +# ---- Vorhandene Daten in Sicherheit bringen ----------------------------- +# Hier laeuft echte Software auf einem echten Rechner. Was schon da ist, wird +# beiseitegelegt und hinterher zurueckgestellt - ein Pruefstand darf niemandem +# seine Buchhaltung anfassen. +sicher = tempfile.mkdtemp(prefix="installpruef_") +gesichert = [] +if os.path.isdir(RAVOKK): + for d in os.listdir(RAVOKK): + quelle = os.path.join(RAVOKK, d) + if os.path.isfile(quelle): + shutil.copy2(quelle, os.path.join(sicher, d)) + gesichert.append(d) +print(f" ({len(gesichert)} vorhandene Datei(en) gesichert)") + +beenden() +alter_uninstaller = os.path.join(PROGRAMMORDNER, "unins000.exe") +if os.path.exists(alter_uninstaller): + subprocess.run([alter_uninstaller, "/VERYSILENT", "/SUPPRESSMSGBOXES", + "/NORESTART"], capture_output=True) + time.sleep(6) + +# ---- 1. Installieren ---------------------------------------------------- +e = subprocess.run([setup, "/VERYSILENT", "/SUPPRESSMSGBOXES", "/NORESTART"], + capture_output=True) +time.sleep(5) +pruefe(e.returncode == 0, f"das Setup laeuft durch (Rueckgabe {e.returncode})") +pruefe(os.path.isdir(PROGRAMMORDNER), + f"das Programm landet unter ravokk ({PROGRAMMORDNER})") +dabei = inhalt(PROGRAMMORDNER) +pruefe(any(d.startswith(NAME + "-") for d in dabei), + f"die Programmdatei liegt dort ({dabei})") +pruefe("Updater.exe" in dabei, "und der Updater daneben") + +# ---- 2. Eine Datei anlegen, wie der Updater es taete --------------------- +# So sieht der Ordner aus, nachdem das Programm ein paar Fassungen lang +# gelaufen ist. Genau diese Dateien blieben frueher liegen. +geerbt = os.path.join(PROGRAMMORDNER, f"{NAME}-9.9.9.exe") +with open(geerbt, "wb") as f: + f.write(b"als haette der Updater sie geladen") +with open(os.path.join(PROGRAMMORDNER, "installiert.json"), "w", + encoding="utf-8") as f: + f.write("{}") + +# ---- 3. Eine Datendatei daneben, die ueberleben MUSS --------------------- +probe = os.path.join(RAVOKK, "pruefstand-beleg.txt") +with open(probe, "w", encoding="utf-8") as f: + f.write("steht fuer Rechnungen, Journal und Nummernbuch") + +# ---- 4. Deinstallieren -------------------------------------------------- +beenden() +u = os.path.join(PROGRAMMORDNER, "unins000.exe") +pruefe(os.path.exists(u), "es gibt einen Uninstaller") +if os.path.exists(u): + subprocess.run([u, "/VERYSILENT", "/SUPPRESSMSGBOXES", "/NORESTART"], + capture_output=True) + time.sleep(7) + +uebrig = inhalt(PROGRAMMORDNER) +pruefe(not os.path.isdir(PROGRAMMORDNER), + f"der Programmordner ist danach weg ({uebrig})") +pruefe(not uebrig, + f"und darin liegt nichts mehr - auch keine geladene Fassung ({uebrig})") + +pruefe(os.path.exists(probe), + "die Daten daneben sind unangetastet (Rechnungen, Journal, Nummernbuch)") +pruefe(os.path.isdir(RAVOKK), + "und der Ordner der Firma steht noch") + +# ---- Aufraeumen --------------------------------------------------------- +if os.path.exists(probe): + os.remove(probe) +for d in gesichert: + ziel = os.path.join(RAVOKK, d) + if not os.path.exists(ziel): + os.makedirs(RAVOKK, exist_ok=True) + shutil.copy2(os.path.join(sicher, d), ziel) +shutil.rmtree(sicher, ignore_errors=True) + +if fehler: + print(f"ROT | {len(fehler)} Punkt(e) nicht erfuellt") + sys.exit(1) +print("GRUEN | Deinstallieren laesst den Programmordner leer - und die Daten stehen") diff --git a/wasserzeichen.py b/wasserzeichen.py index 495d72c..7028eca 100644 --- a/wasserzeichen.py +++ b/wasserzeichen.py @@ -45,37 +45,79 @@ def pfad(name): return "" -def symbol_datei_dunkel(): - """Pfad zur aufgehellten ICO - wird angelegt, wenn sie fehlt. +def kachel(bild, kante, grund=(0xFF, 0xFF, 0xFF), rand=0.16, radius=0.22): + """Das Logo auf eine helle Kachel mit runden Ecken setzen. - Sein Befund am 07.09.2026: *"icon musst wenn es dunkel ist mit ändern auf - das hellere geht sonst mit unter"*. Die dunkle Haelfte des Zeichens liegt - genau auf der Farbe der dunklen Titelleiste. + Seine Ansage am 07.09.2026: *"bei den windows icons kannst du einen + weissen bg setzen hinter die icons, mit abgerundeten ecken, und da das svg + drauf - das geht auf dem desktop unter"*. - `iconbitmap` braucht eine DATEI - ein Bild im Speicher genuegt nicht. - Deshalb wird sie einmal neben die normale gelegt. Gelingt das nicht (kein - Schreibrecht im Programmordner), landet sie im Temp-Ordner; und wenn auch - das nicht geht, bleibt es beim normalen Symbol. + Ein freigestelltes Zeichen ohne Flaeche verschwindet auf einem dunklen + Hintergrundbild - und welchen Hintergrund jemand eingestellt hat, weiss + das Programm nicht. Eine helle Kachel ist auf jedem sichtbar; so machen es + die meisten Programme, und deshalb sieht es auch nicht fremd aus. + + `rand` ist der Abstand zum Kachelrand, `radius` die Eckenrundung - beides + als Anteil der Kantenlaenge, damit es in jeder Groesse gleich aussieht. + Die 22 % entsprechen etwa dem, was Windows fuer Kacheln verwendet. + """ + from PIL import Image, ImageDraw + kante = int(kante) + # In vierfacher Groesse zeichnen und herunterrechnen: sonst werden die + # runden Ecken bei 32 oder 48 Pixeln treppig. + fein = kante * 4 + maske = Image.new("L", (fein, fein), 0) + ImageDraw.Draw(maske).rounded_rectangle( + (0, 0, fein - 1, fein - 1), radius=int(fein * radius), fill=255) + flaeche = Image.new("RGBA", (fein, fein), tuple(grund) + (255,)) + flaeche.putalpha(maske) + + innen = max(1, int(fein * (1 - 2 * rand))) + zeichen = bild.convert("RGBA").resize((innen, innen), Image.LANCZOS) + versatz = (fein - innen) // 2 + flaeche.paste(zeichen, (versatz, versatz), zeichen) + return flaeche.resize((kante, kante), Image.LANCZOS) + + +# Groessen, die eine Windows-ICO enthalten soll. 16 und 24 fuer Titelleiste +# und Listen, 32/48 fuer den Desktop, 256 fuer die grosse Ansicht im Explorer. +ICO_GROESSEN = (16, 24, 32, 48, 64, 128, 256) + + +def symbol_bauen(ziel): + """Die Windows-ICO aus dem Logo erzeugen. Gibt den Pfad zurueck oder ''. + + JEDE Groesse wird als Kachel gebaut: helle Flaeche, runde Ecken, Zeichen + darauf - *"so wie das rustdesk, nur halt alle ecken in der rundung"*. Ein + freigestelltes Logo verschwindet sonst auf einem dunklen + Desktop-Hintergrund. + + Auch die 16 Pixel der Titelleiste: dort ist die Kachel zwar winzig, aber + sichtbar. Ein freigestelltes Zeichen war dort je nach Darstellung mal da + und mal nicht - und ein Symbol, das manchmal fehlt, ist schlechter als + eines, das immer klein ist. + + Bei den kleinsten Groessen wird der Rand knapper gefasst: bliebe der + Abstand anteilig gleich, waere vom Zeichen bei 16 Pixeln fast nichts mehr + uebrig. """ - fertig = pfad("programm_dunkel.ico") - if fertig: - return fertig quelle = pfad("programm_logo.png") if not quelle: return "" - ziel = os.path.join(os.path.dirname(quelle), "programm_dunkel.ico") try: from PIL import Image - bild = _umfaerben(Image.open(quelle).convert("RGBA"), True) - groessen = [(g, g) for g in (16, 24, 32, 48, 64, 128, 256)] - try: - bild.save(ziel, sizes=groessen) - except OSError: - import tempfile - ziel = os.path.join(tempfile.gettempdir(), "programm_dunkel.ico") - bild.save(ziel, sizes=groessen) + roh = Image.open(quelle).convert("RGBA") + bilder = [] + for g in ICO_GROESSEN: + bilder.append(kachel(roh, g, rand=0.10 if g <= 24 else 0.16)) + # Pillow schreibt die uebrigen Groessen selbst aus dem groessten Bild - + # deshalb wird das groesste uebergeben und der Rest angehaengt. + bilder[-1].save(ziel, format="ICO", + sizes=[(g, g) for g in ICO_GROESSEN], + append_images=bilder[:-1]) return ziel - except Exception: # noqa: BLE001 - ohne helles Symbol laeuft es weiter + except Exception as e: # noqa: BLE001 - ohne eigenes Symbol laeuft es weiter + print("[symbol] konnte nicht gebaut werden:", e) return "" @@ -86,10 +128,12 @@ def symbol_setzen(fenster, melden=print, dunkel=False): steht in der Titelleiste das nackte Tk-Symbol, obwohl die Datei ein eigenes hat. - In der dunklen Darstellung wird die aufgehellte Fassung genommen, sonst - verschwindet die dunkle Haelfte des Zeichens in der dunklen Titelleiste. + `dunkel` wird nicht mehr gebraucht und nur noch entgegengenommen, damit + bestehende Aufrufe weiterlaufen: seit das Symbol eine helle Kachel ist, ist + es in jeder Darstellung sichtbar. Vorher gab es dafuer eine zweite, + aufgehellte Datei - die ist mit der Kachel ueberfluessig geworden. """ - p = (symbol_datei_dunkel() if dunkel else "") or pfad("programm.ico") + p = pfad("programm.ico") if not p: melden("[symbol] assets/programm.ico nicht gefunden") return False