- Design: „modern“ (hell, flach, wie Windows 11, normaler Windows-Rahmen) ist Standard; „win95“ bleibt unter Datei > Einstellungen wählbar (Einstellung „design“). - Export: Zeitraum von–bis (nach Aktivierungsdatum oder Abrechnungszeitraum des Anbieters), exportierte Positionen werden als abgerechnet gekennzeichnet (Betrag/Händler eingefroren) und per Fingerabdruck auch in späteren Dateien/Abrechnungen nicht noch einmal abgerechnet. - Datei > Abrechnung erledigt / wieder öffnen: erledigte Abrechnungen sind gegen Änderungen gesperrt. - DB-Schema v4 (Migration inkl. Fingerabdrücke für alte Positionen). - Linux-Build (python:3.12-bookworm) als zweiter Pipeline-Job mit Tests und Selbsttest; Release-Upload für beide Jobs über build/release_hochladen.sh. - Behoben: normaler Windows-Rahmen stürzte beim Start ab (Hauptrahmen.nativ fehlte). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Für build/maustest.sh: startet die App und schreibt laufend Lage und Zustand des Hauptfensters.
|
||
|
||
Kein pytest-Test – wird im Windows-Build mit echter Maus (xdotool) bedient. Hintergrund: v1.3.0 stürzte
|
||
beim Ziehen an der Titelleiste hart ab; das sieht man nur mit echter Maus.
|
||
"""
|
||
import faulthandler
|
||
import json
|
||
import os
|
||
import sys
|
||
import tempfile
|
||
import tkinter as tk
|
||
|
||
aus = sys.argv[1]
|
||
faulthandler.enable(open(os.path.join(aus, "absturz.txt"), "w"))
|
||
home = tempfile.mkdtemp()
|
||
os.environ["PROVTOOL_HOME"] = home
|
||
with open(os.path.join(home, "einstellungen.json"), "w") as f:
|
||
json.dump({"assistent_erledigt": True, "tipps_beim_start": False, "fenster": "900x560+100+100",
|
||
"design": "win95"}, f) # nur Win95 hat den eigenen Fensterrahmen
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
from provtool.gui import app as A # noqa: E402
|
||
|
||
root = tk.Tk()
|
||
a = A.App(root)
|
||
fehler = []
|
||
root.report_callback_exception = lambda *e: fehler.append(repr(e[1]))
|
||
|
||
|
||
def melden():
|
||
with open(os.path.join(aus, "status.txt"), "a") as f:
|
||
f.write(f"{root.winfo_x()} {root.winfo_y()} {root.winfo_width()} {root.winfo_height()} "
|
||
f"{int(a.rahmen.maximiert)} {len(fehler)}\n")
|
||
root.after(250, melden)
|
||
|
||
|
||
root.after(250, melden)
|
||
root.mainloop()
|