Anzeigefenster immer mit Rahmen, Pfad der Korrektur-Datei im Tab (#56)

Befund aus dem QGIS-Test: Die Bildschirmwahl wirkte nicht, das Fenster
erschien immer auf dem Hauptbildschirm. Im Vollbild ließ es sich weder
verschieben noch schließen und verdeckte QGIS; nur ein hartes Beenden
von QGIS half.

Bildschirmwahl und Vollbild entfallen. Das Anzeigefenster öffnet als
normales Fenster mit Rahmen; der Bearbeiter schiebt es auf den Bildschirm
des Eigentümers und kann es dort maximieren. Größe und Lage werden beim
Beenden gemerkt und in der nächsten Sitzung wiederhergestellt (bis zum
Neustart von QGIS).

Unter den Knöpfen steht jetzt Pfad und Name der Korrektur-Datei, mit
Hinweis, solange sie noch nicht angelegt ist oder erst abgefragt wird.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-06 13:44:18 +02:00
co-authored by Claude Opus 5.5
parent e547cb90c5
commit 87341a7278
5 changed files with 189 additions and 201 deletions
+29 -47
View File
@@ -3,7 +3,6 @@
Alle Namen und Anschriften sind erfunden.
"""
import types
import unittest
from unittest.mock import MagicMock
@@ -15,10 +14,6 @@ ANNA = Eigentuemer(anrede="Frau", titel="Dr.", vorname="Anna", nachname="Beispie
verstorben=True, rechtsperson=("0",), per_ids=("4711",), konten=("98765",))
def _rechteck(x, y, b, h):
return types.SimpleNamespace(x=lambda: x, y=lambda: y, width=lambda: b, height=lambda: h)
class TestAnzeigetext(unittest.TestCase):
def test_name_anschrift_email(self):
@@ -57,52 +52,39 @@ class TestAnzeigetext(unittest.TestCase):
self.assertNotIn("Name", text)
class TestBildschirme(unittest.TestCase):
class TestFensterOeffnen(unittest.TestCase):
def test_vorgabe_ist_nicht_der_qgis_bildschirm(self):
"""Prüft, dass als Vorgabe der erste Bildschirm ohne QGIS gewählt wird, bei nur einem Bildschirm dieser."""
a, b, c = object(), object(), object()
self.assertEqual(ea.standard_index([a, b, c], a), 1)
self.assertEqual(ea.standard_index([a, b], b), 0)
self.assertEqual(ea.standard_index([a], a), 0)
self.assertEqual(ea.standard_index([], None), 0)
def test_bildschirm_text(self):
"""Prüft, dass ein Bildschirm mit Nummer und Auflösung beschriftet wird."""
bildschirm = types.SimpleNamespace(geometry=lambda: _rechteck(0, 0, 1920, 1080))
self.assertEqual(ea.bildschirm_text(bildschirm, 2), "Bildschirm 2 (1920 × 1080)")
self.assertEqual(ea.bildschirm_text(object(), 3), "Bildschirm 3")
def test_ohne_qt_anwendung_keine_bildschirme(self):
"""Prüft, dass ohne Qt-Anwendung (Mock-Modus) eine leere Bildschirmliste kommt statt eines Fehlers."""
self.assertEqual(ea.bildschirme(), [])
def test_vollbild_auf_gewaehltem_bildschirm(self):
"""Prüft, dass das Fenster im Vollbild dem gewählten Bildschirm zugeordnet und auf dessen Fläche gelegt wird."""
geo = _rechteck(1920, 0, 1920, 1080)
bildschirm = types.SimpleNamespace(geometry=lambda: geo)
def test_normales_fenster_in_standardgroesse(self):
"""Prüft, dass das Anzeigefenster ohne gemerkte Lage als normales Fenster mit Rahmen in Standardgröße öffnet, nie im Vollbild."""
fenster = MagicMock()
ea.zeige_auf_bildschirm(fenster, bildschirm, vollbild=True)
fenster.windowHandle.return_value.setScreen.assert_called_once_with(bildschirm)
fenster.setGeometry.assert_called_once_with(geo)
fenster.showFullScreen.assert_called_once()
fenster.showNormal.assert_not_called()
def test_normales_fenster_mittig(self):
"""Prüft, dass auf dem QGIS-Bildschirm ein normales Fenster mittig im freien Bereich öffnet."""
bildschirm = types.SimpleNamespace(availableGeometry=lambda: _rechteck(0, 40, 1600, 1000))
fenster = MagicMock()
ea.zeige_auf_bildschirm(fenster, bildschirm, vollbild=False)
fenster.setGeometry.assert_called_once_with(350, 215, 900, 650)
fenster.showNormal.assert_called_once()
fenster.showFullScreen.assert_not_called()
def test_ohne_bildschirm_einfach_zeigen(self):
"""Prüft, dass ohne bekannten Bildschirm das Fenster einfach gezeigt wird."""
fenster = MagicMock()
ea.zeige_auf_bildschirm(fenster, None, vollbild=True)
ea.zeige_anzeigefenster(fenster)
fenster.resize.assert_called_once_with(*ea.STANDARDGROESSE)
fenster.show.assert_called_once()
fenster.showFullScreen.assert_not_called()
fenster.setWindowFlags.assert_not_called()
def test_gemerkte_lage_wird_wiederhergestellt(self):
"""Prüft, dass eine gemerkte Größe und Lage der letzten Sitzung wiederhergestellt wird."""
fenster = MagicMock()
fenster.restoreGeometry.return_value = True
ea.zeige_anzeigefenster(fenster, b"geometrie")
fenster.restoreGeometry.assert_called_once_with(b"geometrie")
fenster.resize.assert_not_called()
fenster.show.assert_called_once()
fenster.showFullScreen.assert_not_called()
def test_unbrauchbare_lage_ergibt_standardgroesse(self):
"""Prüft, dass eine nicht wiederherstellbare Lage auf die Standardgröße zurückfällt."""
for ergebnis in (False, RuntimeError("kaputt")):
with self.subTest(ergebnis=ergebnis):
fenster = MagicMock()
if isinstance(ergebnis, Exception):
fenster.restoreGeometry.side_effect = ergebnis
else:
fenster.restoreGeometry.return_value = ergebnis
ea.zeige_anzeigefenster(fenster, b"alt")
fenster.resize.assert_called_once_with(*ea.STANDARDGROESSE)
fenster.show.assert_called_once()
if __name__ == "__main__":