Thread GED: Betatest der neuen Version: Test der Historienverwaltung (5 answers)
Opened by Crian at 2004-02-23 11:33

Crian
 2004-02-21 23:23
#39598 #39598
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
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

View full thread GED: Betatest der neuen Version: Test der Historienverwaltung