From 1562388e78747cc32ef3e5d621d4411a52b6502d Mon Sep 17 00:00:00 2001 From: TheMockTv Date: Mon, 7 Sep 2026 10:43:24 +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 Gleiche Umstellung wie im Rechnungstool, gleiche gemeinsame Dateien (gemeinsam.py, ordnerwahl.py, wasserzeichen.py, bauen.py). %LOCALAPPDATA%/ravokk/ journal.sqlite3, berichte/, Nummernbuch, config.json <- Daten Rechnungstool/ <- Programm Steuerrechnungstool/ <- Programm ⚠ Hier gefunden und behoben: das Journal der INSTALLIERTEN Fassung lag im Temp-Ordner. Der Merkzettel (ablage.py) zeigte auf %TEMP%/abnahme_bst/Daten - haengengeblieben aus einem Abnahmelauf vom 03.09.2026. Windows raeumt den Temp-Ordner von selbst auf; das Journal waere ohne Vorwarnung verschwunden. Ein Merkzettel, der dorthin zeigt, wird jetzt verworfen statt befolgt. Sein Echtbestand (238 Buchungen) lag davon unberuehrt in der Quelle und ist gesichert. Kein Ordner-Dialog mehr beim ersten Start - der gemeinsame Ordner steht fest. Der Knopf hiess dort "Install-Ordner auswaehlen...", was schon immer falsch war: es geht um das gemeinsame Nummernbuch, nicht um den Installationsort. Uninstaller raeumt jetzt auch die vom Updater geladenen Fassungen weg. pruef_installation.py prueft beides zusammen: Programmordner leer, Daten unangetastet. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax --- Installer.iss | 223 ++++++++++++++++++--------------- Steuerrechnungstool.spec | 2 +- ablage.py | 54 +++++++- app.py | 18 ++- assets/programm.ico | Bin 49121 -> 40940 bytes assets/programm_dunkel.ico | Bin 50195 -> 0 bytes bauen.py | 13 +- gemeinsam.py | 43 +++++++ ordnerwahl.py | 74 ++++++++--- pruef_gemeinsam_automatisch.py | 107 ++++++++++++++++ pruef_installation.py | 185 +++++++++++++++++++++++++++ wasserzeichen.py | 94 ++++++++++---- 12 files changed, 660 insertions(+), 153 deletions(-) delete mode 100644 assets/programm_dunkel.ico create mode 100644 pruef_gemeinsam_automatisch.py create mode 100644 pruef_installation.py diff --git a/Installer.iss b/Installer.iss index abc1035..bce16a2 100644 --- a/Installer.iss +++ b/Installer.iss @@ -1,98 +1,125 @@ -; Installer fuer das Steuerrechnungstool (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 "Steuerrechnungstool" -#define Herausgeber "ravokk" -#define ExeUpdater "Updater.exe" -#define Webseite "https://git.pcore.de/TheMockTv/Steuerrechnungstool" - -[Setup] -AppId={{B4D71E08-9C36-42AF-8E5B-13A7F0C29D64} -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=Steuerrechnungstool-Setup-{#Version} -Compression=lzma2 -SolidCompression=yes -WizardStyle=modern -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 Steuerrechnungstool (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 "Steuerrechnungstool" +#define Herausgeber "ravokk" +#define ExeUpdater "Updater.exe" +#define Webseite "https://git.pcore.de/TheMockTv/Steuerrechnungstool" + +[Setup] +AppId={{B4D71E08-9C36-42AF-8E5B-13A7F0C29D64} +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=Steuerrechnungstool-Setup-{#Version} +Compression=lzma2 +SolidCompression=yes +WizardStyle=modern +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/Steuerrechnungstool.spec b/Steuerrechnungstool.spec index 98a2ada..a23a205 100644 --- a/Steuerrechnungstool.spec +++ b/Steuerrechnungstool.spec @@ -5,7 +5,7 @@ a = Analysis( ['app.py'], pathex=[], binaries=[], - datas=[('assets/programm.ico', 'assets'), ('assets/programm_dunkel.ico', 'assets'), ('assets/programm_logo.png', 'assets'),], + datas=[('assets/programm.ico', 'assets'), ('assets/programm_logo.png', 'assets'),], hiddenimports=[], hookspath=[], hooksconfig={}, diff --git a/ablage.py b/ablage.py index 4f75034..7d7970d 100644 --- a/ablage.py +++ b/ablage.py @@ -44,6 +44,43 @@ def _beschreibbar(ordner): return False +def _ist_temp(pfad): + """Liegt dieser Pfad im Temp-Ordner von Windows? + + ⚠ Am 07.09.2026 gefunden: der Merkzettel zeigte auf + %TEMP%/abnahme_bst/Daten - haengengeblieben aus einem Abnahmelauf vom + 03.09. Die INSTALLIERTE Fassung fuehrte ihr Journal seitdem im + Temp-Ordner. Windows raeumt den automatisch auf (Datentraegerbereinigung, + Speicheroptimierung); das Journal waere ohne Vorwarnung verschwunden. + + Ein Merkzettel, der dorthin zeigt, wird deshalb verworfen - lieber ein + frischer, richtiger Ordner als ein Journal auf Abruf. + """ + import tempfile + try: + temp = os.path.realpath(tempfile.gettempdir()).lower() + ziel = os.path.realpath(pfad).lower() + return ziel == temp or ziel.startswith(temp + os.sep) + except (OSError, ValueError): + return False + + +def firmen_ordner(): + """Das gemeinsame Dach: %LOCALAPPDATA%/ravokk. + + 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"* - und dazu, warum es so heisst: *"ravokk ist meine firma + und die programme gehoeren zu der firma"*. + + Darunter liegt je Programm ein eigener Ordner, und das gemeinsame + Nummernbuch eine Ebene darueber - so nimmt ein Deinstallieren es nicht mit + (siehe gemeinsam.standard_ordner). + """ + heim = os.environ.get("LOCALAPPDATA") or os.path.expanduser("~") + return os.path.join(heim, "ravokk") + + def _zeiger_datei(): """Merkzettel, WO der Datenordner liegt - liegt bewusst ausserhalb davon.""" heim = os.environ.get("LOCALAPPDATA") or os.path.expanduser("~") @@ -106,11 +143,22 @@ def daten_ordner(): log.warning("Datenordner %s ist nicht erreichbar - es wird nichts geändert", gemerkt) return gemerkt if _beschreibbar(gemerkt) else EXE_DIR - kandidat = os.path.join(EXE_DIR, "Daten") + # Erste Wahl: der Ordner der Firma. Dort liegen beide Programme und das + # gemeinsame Nummernbuch - alles an einer Stelle, und ein Deinstallieren + # raeumt nur den Programmordner. + # NEBEN dem Programm, nicht darin - siehe firmen_ordner(). Journal, + # Berichte und Log liegen damit in ravokk, das Programm in + # ravokk/Steuerrechnungstool. Ein Deinstallieren leert nur den + # Programmordner. + kandidat = firmen_ordner() if not _beschreibbar(kandidat): - kandidat = os.path.join(os.environ.get("LOCALAPPDATA", EXE_DIR), "Beherbergungssteuer") + # Rueckfall wie frueher: neben der EXE, dann der alte eigene Ordner. + kandidat = os.path.join(EXE_DIR, "Daten") if not _beschreibbar(kandidat): - return EXE_DIR + kandidat = os.path.join(os.environ.get("LOCALAPPDATA", EXE_DIR), + "Beherbergungssteuer") + if not _beschreibbar(kandidat): + return EXE_DIR _ordner_merken(kandidat) for name in EIGENE_DATEN: alt, neu = os.path.join(EXE_DIR, name), os.path.join(kandidat, name) diff --git a/app.py b/app.py index b80e761..e8d93ea 100644 --- a/app.py +++ b/app.py @@ -691,13 +691,25 @@ class App(theme.ThemeMixin, tk.Tk): """ self._buch_oeffnen() if self.buch is None and not 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). + ordner = gemeinsam.standard_anlegen() + if ordner: + self.journal.setze("gemeinsam_ordner", ordner) + self._buch_oeffnen() + if self.buch is None: + self.dlg_gemeinsam(erststart=True) self._anmelden() self._buch_fuellen() def dlg_gemeinsam(self, erststart=False): - ordner = ordnerwahl.ordner_abfragen(self, "Steuerjournal", - self.journal.hole("gemeinsam_ordner", "")) + # 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, "Steuerjournal", + self.journal.hole("gemeinsam_ordner", "") or self.pdf_ordner) if not ordner: if erststart: messagebox.showwarning( diff --git a/assets/programm.ico b/assets/programm.ico index c89df217c234e4fef30c46f3a096a08950b4940b..8d01085b15321663b1b00bd045df2afbb53224bf 100644 GIT binary patch literal 40940 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 AKL7v# literal 49121 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 Z*GJa-sjZ7wa2kV;2z5kw!vCL`@qb13GW!4k diff --git a/assets/programm_dunkel.ico b/assets/programm_dunkel.ico deleted file mode 100644 index 46cae9a08ce55ee8bd3ab2eeaaea955eed235270..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50195 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

@}0pv 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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/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 960a0d5..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. @@ -22,10 +30,11 @@ hinueber. """ import os -import theme import tkinter as tk from tkinter import ttk, filedialog, messagebox +import theme + import gemeinsam BREITE = 780 @@ -40,6 +49,18 @@ class OrdnerWahl(tk.Toplevel): self.ergebnis = None self.title("Gemeinsamer Ordner für das Nummernbuch") self.transient(master) + # Dieses Fenster stand als einziges noch in Weiss da: es kam nie durch + # _style_dialog. Farben holt es sich jetzt vom Hauptfenster, damit es + # nicht wieder auseinanderlaeuft, wenn dort etwas geaendert wird. + self._bg = getattr(master, "col_bg", "#0d0e10") + self._fg = getattr(master, "col_fg", "#e8e8ea") + self._warn = getattr(master, "col_gefahr", "#e85a5a") + self._gut = getattr(master, "col_accent", "#06C6A4") + self._muted = getattr(master, "col_muted", "#8a8e96") + if hasattr(master, "_style_dialog"): + master._style_dialog(self) + else: + self.configure(bg=self._bg) self.pfad = tk.StringVar(value=vorgabe or "") rahmen = ttk.Frame(self, padding=18) @@ -48,7 +69,7 @@ class OrdnerWahl(tk.Toplevel): breite = BREITE - 60 ttk.Label(rahmen, text="Bitte den gemeinsamen Ordner auswählen", - font=("Segoe UI", 13, "bold")).grid(row=0, column=0, sticky="w") + font=(theme.SCHRIFT_NAME, 13, "bold")).grid(row=0, column=0, sticky="w") ttk.Label(rahmen, wraplength=breite, justify="left", text=( "Rechnungstool und Steuerjournal führen zusammen ein Nummernbuch. Darin steht " "jede vergebene Rechnungsnummer – auch die aus der alten Excel-Tabelle, zu der " @@ -57,10 +78,10 @@ class OrdnerWahl(tk.Toplevel): "eine Nummer ein zweites Mal. Jede Nummer darf es aber nur einmal geben " "(§ 14 Abs. 4 Nr. 4 UStG).")).grid(row=1, column=0, sticky="w", pady=(8, 12)) - tk.Label(rahmen, wraplength=breite, justify="left", fg="#a00000", - font=("Segoe UI", 10, "bold"), + 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) @@ -68,11 +89,18 @@ 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", - font=("Segoe UI", 9)) + bg=self._bg, + font=(theme.SCHRIFT_NAME, 9)) self.stand.grid(row=4, column=0, sticky="w", pady=(10, 0)) knoepfe = ttk.Frame(rahmen) @@ -129,12 +157,12 @@ class OrdnerWahl(tk.Toplevel): """ ordner = self.pfad.get().strip() if not ordner: - self.stand.configure(text="Noch kein Ordner gewählt.", fg="#a00000") + self.stand.configure(text="Noch kein Ordner gewählt.", fg=self._warn) self.ok.state(["disabled"]) return taugt, grund = gemeinsam.ordner_taugt(ordner) if not taugt: - self.stand.configure(text=grund, fg="#a00000") + self.stand.configure(text=grund, fg=self._warn) self.ok.state(["disabled"]) return self.ok.state(["!disabled"]) @@ -146,27 +174,39 @@ class OrdnerWahl(tk.Toplevel): self.stand.configure( text=f"Hier liegt schon ein Nummernbuch mit {anzahl} Rechnungsnummern – " "das ist der Ordner des anderen Programms. Genau richtig.", - fg="#1f5c3d") + fg=self._gut) else: self.stand.configure( text="Hier ist noch kein Nummernbuch – es wird neu angelegt. Wähle im " - "anderen Programm denselben Ordner.", fg="#444444") + "anderen Programm denselben Ordner.", fg=self._muted) + + def _melden(self, titel, text): + """Meldung im Theme des Hauptfensters - sonst wie bisher.""" + eltern = self.master + if hasattr(eltern, "melden_warnung"): + return eltern.melden_warnung(titel, text) + return messagebox.showwarning(titel, text, parent=self) + + def _frage(self, titel, text): + eltern = self.master + if hasattr(eltern, "frage"): + return eltern.frage(titel, text) + return messagebox.askyesno(titel, text, parent=self) + def uebernehmen(self): ordner = self.pfad.get().strip() taugt, grund = gemeinsam.ordner_taugt(ordner) if not taugt: - messagebox.showwarning("Ordner geht nicht", grund or "Bitte einen Ordner wählen.", - parent=self) + self._melden("Ordner geht nicht", grund or "Bitte einen Ordner wählen.") return - if not messagebox.askyesno( + if not self._frage( "Sind Sie sicher?", f"Gemeinsamer Ordner:\n\n{ordner}\n\n" "Steht im anderen Programm derselbe Ordner? Nur dann kennen beide " "dieselben Rechnungsnummern.\n\n" "Ja = Ordner übernehmen\n" - "Nein = zurück zur Auswahl", - icon="question", default="yes", parent=self): + "Nein = zurück zur Auswahl"): # Zurueck ins Auswahlfeld - der Dialog bleibt stehen, nichts ist gesetzt. self.feld.focus_set() return 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