Remove Bill/Vendor

Linas Vepstas linas at linas.org
Wed Mar 26 09:15:00 CST 2003


On Tue, Mar 25, 2003 at 04:01:13PM -0500, Derek Atkins was heard to remark:
> I'm not sure what you mean by "general purpose undo".  There is not
> a centralized place where all objects are added/removed..  So there
> is no way (short of rototilling a lot of code) to re-architect the
> system to allow this.

Derek,

Please excuse the following, cause I know yo know it already, but your remarks
scared me  ...

One of many reasons for having begin/end constructs around data is to
be able to mark up atomic, undo-able data chunks.  In principle,  If 
you surrounded your data correctly with being/end in the right places 
(this also requires your data design to be 'normal' or 'orthogonal'),
then undo is 'easy'.   You implement undo by using begin/end to make a 
copy of the old data.  At 'end', you string this copy onto your necklace 
of saved undo thingies.  Implementing undo is then a matter of pulling
pearls off the necklace.

Easier said-than-done.  One important issue is that the data really be 
normal, so that you only need to save a copy of the atomic data chunk, 
instead of saving the entire state of the whole damn system.   Clearly,
if saving the state of the whole system was needed for undo, then indeed 
undo would be untenable.

--linas


-- 
pub  1024D/01045933 2001-02-01 Linas Vepstas (Labas!) <linas at linas.org>
PGP Key fingerprint = 8305 2521 6000 0B5E 8984  3F54 64A9 9A82 0104 5933


More information about the gnucash-user mailing list