home
erste Version am 17.12.2020
letzte Änderung am 10.01.2021

ERMzilla (Seite 3)

Version 1.12

Gerade habe ich ERMzilla v1.11 mal wieder gegen wxPython 3.0.2.0 und 4.1.0 getestet.....
Oh weia! Es waren dann doch schon ein paar Stellen, an denen es Anpassungsbedarf gab - damit ERMzilla überhaupt korrekt startet.

Nebenbei habe ich die für den Zoom hingefrickelte Vergewaltigung von Konstanten aufgeräumt und dem exportierten Snapshot-PNG einen Footer mit Dateiname und Datum zugefügt. Aber auch einen fiesen Bug habe ich entdeckt: beim "save" wurde die Zoom-Stufe nicht berücksichtigt.
Das hat dazu geführt, dass sämtliche Positionsangaben unbrauchbar wurden bzw. man Alles neu ausrichten durfte.
Jedoch gefällt mir der Fix, den ich dafür auf die Schnelle gebaut habe, nicht wirklich.

Vielleicht sollte die Art und Weise, wie das Zoomen implementiert ist, nochmal grundsätzlich überdacht werden.
Derzeit werden Raster- und Font-Größe geändert. Danach werden alle Positions-Daten (inklusive der Undo-Positionen) entsprechend neu berechnet.
Wird die Datei nun gespeichert, landen Positionen in der Datei, denen ein geändertes Rastermaß zugrunde liegt. Zwecks Korrektur kann man temporär alles auf das Basis-Rastermaß zurückrechnen, die Daten in der Datei speichern und schließlich die temporären Änderungen zurücknehmen.

Alternativ könnte der Zoom derart implementiert sein, dass jeder Zoom-Stufe eine Fließkomma-Zahl zugeordnet wird, die sich als Faktor auf alle Positionsangaben@Bildschirm auswirkt.
Jedoch reichen wenige Blicke in den Programmcode bereits aus, um diese Idee wieder zu verwerfen. Schließlich müssten auch sämtliche Eingaben bzw. Maus-Positionen vor der Verarbeitung skaliert werden. Und selbst, wenn das gesamte Programm von Anfang an unter dieser Prämisse entworfen worden wäre, würde es die Komplexität sämtlicher positionsabhängiger Operationen wahrscheinlich auf einen Level bringen, den ich nicht ohne Not handhaben möchte....

Möglicherweise ließe sich das "save"-Problem aber auch durch ein neues Keyword lösen, mit dem die beim "save" gültige Zoom-Stufe wiederhergestellt werden kann.

Nun habe ich das Keyword ZOOMLVL (testhalber) eingebaut und bin damit so zufrieden, dass es einfach so bleibt.
Auch der Export eines Snapshots erfolgt ebenso in der aktuell eingestellten Zoom-Stufe.
Dadurch kann man ein und dasselbe ERM nun etwa so:
Snapshot in der kleinsten Zoom-Stufe

oder auch so exportieren:
Snapshot in der größten Zoom-Stufe

Aus gegebenem Anlass habe ich auch meinen Test-Workflow für die zwei jüngeren wxPython-Versionen optimiert.
Konkret ist jetzt in beiden Test-VMs das wunderbare sshfs installiert.
Statt mir mittels
scp -r i5:~/ERMzilla .
eine Test-Kopie zu erstellen, mounte ich mir den Quell-Ordner nun per
sshfs i5:/home/dede/ERMzilla mnt/
ins lokale Dateisystem und ändere damit überall die selben Dateien.

Die v1.12 funktioniert [wieder] unter allen drei genannten wxPython-Versionen.
Bei der 4.1.0 kommt zwar regelmäßig die Meldung:
*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug

....jedoch scheint das ein Problem abseits von wxPython zu sein.


Version 1.13

In den letzten Tagen habe ich immer mal wieder kleine Änderungen eingebaut.
Die größte Änderung entstand dadurch, dass jetzt bei Programmstart die Schriftgrößen ausgemessen und einem Rastermaß zugeordnet werden. Dafür musste auch die Darstellung der Tabellen bzw. deren Größenberechnung auf vollständige Schriftgrößen-Abhängigkeit umgestellt werden. Bisher war der Abstand zwischen den Elementen linker Tabellen-Rand, Spaltenname, Spaltentyp, Spaltenattribute und rechter Tabellen-Rand fix. Und das hat beim Wechsel der Zoom-Stufe zu nicht-linearen Änderungen der Tabellen-Abmessungen geführt. In der neusten Version bestimmt die Breite eines Zeichens in der aktuellen Schriftgröße den Abstand zwischen den Elementen.
Somit hängt nun Alles einzig und allein vom Rastermaß ab - was gleichzeitig eine Unabhängigkeit vom eingestellten DPI-Wert bedeutet.
Gerade hat ein Test mit drei unterschiedlichen DPI-Werten zu drei fast identisch aussehenden Snapshot-PNGs geführt. Folgende Zuordnung erfolgte automatisch:
DPI
Schriftgröße
85
11
95
10
110
9

Hier eins der Snapshot-PNGs:
Snapshot bei DPI=84

Zwar brauchte es zwischen den DPI-Wert-Änderungen immer einen Neustart von ERMzilla, eben weil die Schriftgrößen-Ausmessung nur einmalig bei Programmstart erfolgt, aber normalerweise ändert man seinen DPI-Wert ja auch nicht ständig. Somit ist nun auch das letzte ToDo implementiert.

Anbei noch die v1.13 (ein Kurztest mit allen drei wxPython-Versionen war erfolgreich).
BTW: wenn man ERMzilla unter der 4'er-Version mit vorangestelltem python3 startet, muss man den Shebang nicht ändern.


Version 1.14

Gestern habe ich einen Dialog zum Laden von ermz-Dateien nachgerüstet. Außerdem sind Hotkeys für einige Funktionen aus dem Kontext-Menü hinzugekommen.

Heute kam noch ein Fenster dazu, das neben dem Hauptfenster (nicht-modal) geöffnet werden kann und das die Änderung sämtlicher Farben erlaubt. Natürlich werden geänderte Farben bei "save settings" berücksichtigt, um bei zukünftigen Programmstarts verwendet zu werden.

Hier die v1.14.


Version 1.15

Das Pandemie-Jahr 2020 ist vorbei. Abgesehen von diesen lästigen Nasen-Schlübbern und den monothematischen Nachrichten war es für mich eigentlich ein erfreuliches Jahr. Endlich ging bei meinem derzeitigen Arbeitgeber sogar HomeOffice ... ohne Corona nicht denkbar.
Ebenfalls vorbei ist der rc3 ... und es wandern immer mehr Videos vom unerquicklichen ReLive nach Release. Obwohl ich längst noch nicht alle potentiell sehenswerten Videos konsumiert habe, brauche ich gerade mal eine Video-Pause.
Daher:
Bei größeren ERMs kann es nicht schaden, wenn man aus ERMzilla heraus die Zeilennummer angezeigt bekäme, in der das jeweils angeklickte Objekt deklariert wird. Im ersten Ansatz sollte diese Anzeige bei Links-Klick und gedrückt gehaltener Alt-Taste erfolgen. Leider klappt das nicht. Zumindest unter XFCE wird eine gedrückt gehaltene Alt-Taste abgefangen, nicht ans Programm weitergegeben und aktiviert stattdessen einen Fenster-Verschiebe-Modus (den ich bisher nicht kannte).
Deswegen jetzt also die Tab-Taste. Für Rechtshänder sollte das okay sein ... und Linkshänder sind wahrscheinlich derartigen Kummer ohnehin gewohnt.
Außerdem werde ich wohl auch noch einbauen, dass die entsprechende Zeilennummer ebenfalls angezeigt wird, wenn der Maus-Cursor eine oder zwei Sekunden unbewegt über einem Objekt steht.

Jedenfalls muss zu jedem Objekt jetzt auch die zugehörige Zeilennummer@Quell-Datei gespeichert werden. Wenn ein Objekt über IMPORT_TABLE reinkam, ist die Zeilennummer des IMPORT_TABLE-Statements zum Objekt zu speichern.

So. Fertig. Und die Alt- oder Tab-Taste wird nicht mehr gebraucht. Nun wird einfach bei jedem Links-Klick das angeklickte Objekt identifiziert und in der Statuszeile mit Zeilennummer und Name angezeigt.

Weiterhin habe ich das Verhalten beim got-Focus-Event (siehe Version 1.08) erweitert. Bisher wurden ungespeicherte Änderungen nur beim Verlassen von ERMzilla gemeldet. Jetzt merkt sich das Programm beim Laden und nach dem Speichern einer Datei dessen letztes Änderungsdatum. Bei got-Focus wird das aktuelle Änderungsdatum gegen das gemerkte Änderungsdatum geprüft und bei Abweichung auf gewohnte Weise gemeldet.

Hier noch die v1.15.


Version 1.16

Nun ist der Urlaub leider vorbei.
Und morgen Nachmittag gibts dann auch gleich ein dreistündiges Meeting in der Firma.
Hurra!  Wir scheißen auf Corona-Kontaktbeschränkungen - schließlich gelten die ja nur im privaten Umfeld....

Jedenfalls will ich schnell noch den jüngsten Stand von ERMzilla online stellen, weil bis zur nächsten Änderung nun erstmal etwas Zeit vergehen könnte.