Thread GED: Betatest der neuen Version: Test der Historienverwaltung
(5 answers)
Opened by Crian at 2004-02-23 11:33
Ich habe meinem Grapheneditor um eine Historienfunktion
erweitert. Diese Funktionalität ist in einer extra Klasse (Historie.pm, Graph::GED::Historie) enthalten, die Klasse kann alle möglichen von Graph::GED::Basis abgeleiteten Objekte speichern und verwalten. Somit ist sie später universell einsetzbar, wenn alle Fehler behoben sind. Die Ableitung von Graph::GED::Basis ist deshalb nötig, weil die verwalteten Objekte eine clone- und eine clear-Methode haben müssen, beides wird u.a. von Graph::GED::Basis zur Verfügung gestellt. Diese beiden Methoden kümmern sich um das saubere ko- pieren bzw. Löschen der verwalteten Objekte. Dies wird dann wichtig, wenn die Objekte nicht nur "flache Daten" enthalten, sondern anonyme Arrays oder Hashes. (Genaugenommen prüfe ich auch nicht auf die Ableitung von Graph::GED::Basis, sondern nur, ob die übergebenen Objekte die Methoden clone und clear beherrschen (mit can).) Die Historie ist eine State-Machine (wem das nichts sagt: es gibt verschiedene Zustände und definierte Übergänge von Zustand zu Zustand und die Maschine "weiß", was sie in welchem Zustand bei welcher Anforderung machen soll). Ich unterscheide folgende Zustände: NORMAL NORMAL_ENDE NACH_RUECK NACH_RUECK_ANFANG NACH_WIEDER NACH_WIEDER_ENDE Folgende "Anforderungen" bzw. von außen zugängliche Methoden gibt es (neben new, clone und max): objekt_eintragen() rueckgaengig() wiederholung() Zum Testen gibt es im Moment nur drei Speicherplätze in der Historie, das werde ich natürlich später auch hochsetzen. Die Kommentarbeschreibung der Aktionen in den verschiedenen Stati stimmt noch nicht, das werde ich nachbessern, wenn alle Fehler behoben sind. Das Historienobjekt in ged.pl selbst ist in %Konfig unter dem Schlüssel historie enthalten. Es wird am Anfang mit new Graph::GED::Historie angelegt. Das meiste funktioniert schon, aber mir ist noch ein Fehler aufgefallen, den ich aber nicht genau lokalisieren und auch nicht wiederholen konnte. Deshalb meine Bitte an Euch: Wenn Ihr mir bei der Fehlersuche helfen wollt, holt Euch die aktuelle Beta-Version 0.0.31.beta von meiner GED-Seite, sie ist dort nicht offiziell aufgeführt, aber unter diesem Link könnt an sie herankommen. In der Betaversion ist in Graph/GED/Historie.pm der Debug-Level auf 2, es gibt eine Extraausgabe in historie_schalter_aktualisieren() in ged.pl und die Fehlerausgaben in Tk-Fenster sind momentan ausgeschaltet. Das wird später geändert. Wenn Ihr testet, so ruft ged.pl bitte so auf: perl ged.pl > error.log Wenn Ihr reproduzierbare Fehler findet, sagt mir bitte was ihr gemacht habt und schickt das Fehlerprotokoll mit. Oder sagt mir genau, bei dem Übergang von welchem Zustand in welchen anderen Zustand was schiefgeht, aber das geht von außen eingestiegen wohl nicht so einfach. Vielen Dank im Voraus an alle Tester :-)\n\n <!--EDIT|Crian|1077532166--> s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite |