On Sunday 07 August 2005 12:04 am, Neil Williams wrote: > It may be handy to only store changes, but that means passing the parameter > name into the instance_dirty routines (which will retrieve the value as a > string). > > void qof_instance_make_dirty(QofInstance *inst, const char *param_name); > > (QOF can't undo / redo anything unless the data is accessible as a > parameter with a QofAccessFunc *and* a QofSetterFunc so passing the value > as a string is pointless. The combination of param_name and the object > e_type from the instance do the rest.) > > I could do a qof_undo struct that contains the QofParam and a gpointer of > the previous value of that parameter along with the type and GUID of the > entity concerned?
Hmm, problem there. If the undo is recorded where the dirty flag is normally set (after the edit), the previous value won't be available. Probably better to put this into qof_begin_edit and get the parameter value there - before the value is changed. Only changes that use begin_edit will therefore end up in the undo / redo list - could provide some measure of control. Maybe incorporate dirty instance flags into qof_commit_edit and have one less call - it would set the QofCollection as dirty at the same time. Are there times when a successful commit_edit should NOT lead to a dirty instance flag? (BTW. I'm using lowercase because the macros in qof-be-utils.h currently have problems with the opaque structs when used from an external library and I'm testing function versions - at least until the problem is solved.) -- Neil Williams ============= http://www.data-freedom.org/ http://www.nosoftwarepatents.com/ http://www.linux.codehelp.co.uk/
pgpgRK6YrxwIJ.pgp
Description: PGP signature
_______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
