Windows-Build / windows-exe (push) Successful in 5m30s
- Verschieben/Größe ziehen per PostMessage statt SendMessage: Die Windows-Verschiebeschleife lief innerhalb eines Tk-Ereignisses; Tk führte darin Python-Ereignisse (<Configure>) aus -> harter Absturz „PyEval_RestoreThread … thread state is NULL“ (normal und aus maximiert). - Größen-Mauszeiger am Rand wieder von Tk (blieb sonst im Fenster stehen); Windows zieht beim Drücken. - Neuer Maustest im Build (xdotool, echte Maus): Titelleiste/Rand ziehen, maximieren, herausziehen. - Export: Bei Vodafone steht in Spalte A das Aktivierungsdatum (statt Abrechnungslauf). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
53 lines
2.6 KiB
Bash
Executable File
53 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Echte Maus im virtuellen Bildschirm (xdotool): Fenster an der Titelleiste ziehen, am Rand die Größe
|
||
# ziehen, maximieren und aus „maximiert“ herausziehen. v1.3.0 stürzte dabei hart ab – das sieht nur
|
||
# ein Test mit echter Maus (Windows-Verschiebeschleife). Aufruf aus build_windows.sh (DISPLAY gesetzt).
|
||
set -uo pipefail
|
||
cd "$(dirname "$0")/.."
|
||
PY="${PY:-wine python}"
|
||
AUS="$(mktemp -d)"
|
||
command -v xdotool >/dev/null || { apt-get update -qq >/dev/null && apt-get install -y -qq xdotool >/dev/null; }
|
||
command -v xdotool >/dev/null || { echo "xdotool fehlt"; exit 1; }
|
||
|
||
$PY build/maus_app.py "$(winepath -w "$AUS" 2>/dev/null || echo "$AUS")" > "$AUS/app.log" 2>&1 &
|
||
PID=$!
|
||
for i in $(seq 1 120); do [ -s "$AUS/status.txt" ] && break; sleep 0.5; done
|
||
sleep 3
|
||
lage() { tail -1 "$AUS/status.txt" | tr -d '\r'; }
|
||
lebt() { kill -0 "$PID" 2>/dev/null; }
|
||
fehler=0
|
||
pruefe() { # $1 = Schritt
|
||
sleep 1.5
|
||
if ! lebt; then echo "ABSTURZ bei: $1"; fehler=1; return 1; fi
|
||
echo "$1: $(lage)"
|
||
}
|
||
ziehen() { # x y dx dy
|
||
xdotool mousemove "$1" "$2"; sleep 0.4; xdotool mousedown 1; sleep 0.3
|
||
for i in 1 2 3 4 5 6; do xdotool mousemove_relative -- "$(( $3 / 6 ))" "$(( $4 / 6 ))"; sleep 0.15; done
|
||
sleep 0.2; xdotool mouseup 1
|
||
}
|
||
|
||
read -r X Y W H M F <<< "$(lage)"
|
||
echo "Start: $X $Y $W $H maximiert=$M"
|
||
ziehen $(( X + 300 )) $(( Y + 14 )) 60 42; pruefe "Titelleiste ziehen" || true
|
||
read -r X2 Y2 W2 H2 M2 F2 <<< "$(lage)"
|
||
[ "$X2" -ne "$X" ] || [ "$Y2" -ne "$Y" ] || { echo "Fenster hat sich nicht bewegt"; fehler=1; }
|
||
ziehen $(( X2 + W2 - 2 )) $(( Y2 + H2 / 2 )) 60 0; pruefe "Rand ziehen" || true
|
||
read -r X3 Y3 W3 H3 M3 F3 <<< "$(lage)"
|
||
[ "$W3" -gt "$W2" ] || { echo "Größe am Rand nicht geändert ($W2 -> $W3)"; fehler=1; }
|
||
xdotool mousemove $(( X3 + 300 )) $(( Y3 + 14 )); sleep 0.3
|
||
xdotool click --repeat 2 --delay 60 1; pruefe "Doppelklick (maximieren)" || true
|
||
read -r X4 Y4 W4 H4 M4 F4 <<< "$(lage)"
|
||
[ "$M4" = "1" ] || { echo "nicht maximiert"; fehler=1; }
|
||
# Unter echtem Windows wird das Fenster dabei wiederhergestellt, unter Wine nicht – hier zählt: kein Absturz
|
||
ziehen $(( X4 + 400 )) $(( Y4 + 12 )) 0 150; pruefe "aus maximiert herausziehen" || true
|
||
|
||
if lebt; then kill "$PID" 2>/dev/null; fi
|
||
sleep 1
|
||
if [ -s "$AUS/absturz.txt" ]; then echo "== Absturzprotokoll:"; cat "$AUS/absturz.txt"; fehler=1; fi
|
||
if grep -q "Fatal Python error" "$AUS/app.log"; then cat "$AUS/app.log"; fehler=1; fi
|
||
read -r _ _ _ _ _ FE <<< "$(lage)"
|
||
[ "${FE:-0}" = "0" ] || { echo "Fehler in Tk-Callbacks: $FE"; fehler=1; }
|
||
[ "$fehler" = 0 ] && echo "Maustest bestanden" || echo "Maustest FEHLGESCHLAGEN"
|
||
exit "$fehler"
|