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:
@@ -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__":
|
||||
|
||||
Reference in New Issue
Block a user