undo in expressiontagplugin

Orbit

Erfahrenes Mitglied
hey,
mir werden jedesmal alle daten im Plugin gfelöscht, wenn ich auf undo gehe... ist das normal? ich mache in der Message() methode nix dergleichen.... muss man da irgendwas bestimmtes basteln? Das prob ist, dass jedesmal beim aufruf der nachricht undo schon alle werte gelöscht sind...
grüße,
orbit
 
Hi!

Was meinst Du mit gelöscht? Die Eingabefelder werden auf die default-Werte zurückgesetzt?
Weiß nicht, ob es Dir hilft, aber Du kannst eigenen Undo-Positionen / -Schritte definieren ... evtl. kannst Du so einen Undo (bzw. einen zweiten generieren) abfangen?
Code:
doc->StartUndo();
doc->AddUndo(UNDO_OBJECT_BASEDATA, op);
doc->EndUndo();
Liebe Grüße,
Mark.

//edit: AddUndo-type = UNDO_TAG_DATA ...?
 
Hallo Mark,
danke für deine schnelle Antwort!

Also ich hab nen ExpressionTagPlugin geschrieben; jeder Tag hat eben Variablen und die werden beim Undo alle auf 0 gesetzt (vielleicht wird auch einfach der Tag durch nen neuen ersetzt)).

Also ich hab ein AddUndo() gesetzt, sobald die daten durch das schließen des Fensters geändert werden.. muss ich den undo auslesen?
Grüße,
Orbit
 
Hi!
Also ich hab ein AddUndo() gesetzt, sobald die daten durch das schließen des Fensters geändert werden.. muss ich den undo auslesen?
Soweit ich mich erinnern kann: Nein. Eigentlich erzeugt AddUndo eine Undo-Marke, die C4D dann automatisch "aufsucht"... (?)

Liebe Grüße,
Mark.
 
Also ich hab das ganze jetzt erstma so geregelt:
Code:
        // DATA = Tag der dem Fenster, in dem dieser Code steht übergeben wird, und der
        // gesichert werden soll.

   	DATA->GetObject()->GetDocument()->StartUndo();
   	DATA->GetObject()->GetDocument()->AddUndo(UNDO_TAG_DATA, DATA);
        
        //Daten werden verändert....

        DATA->GetObject()->GetDocument()->EndUndo();
   	// Fenster wird geschlossen

Leider funktioniert das alles noch nicht. Wie vorher: ich klicke Undo und schon sind alle datan in DATA weg...
 
Oje...
Problem gelöst.

Die Struktur der Undos ist korrekt; aber ich hatte die copy() Methode nicht richtig.. der greift also auf copy() zurpück..
grüße und danke für die Hilfe,
orbit
 
Zurück