[Inquiry]GNUCash SoC - Implementing Undo
Derek Atkins
warlord at MIT.EDU
Fri Mar 23 04:37:53 EDT 2007
I'm not convinced that the Undo feature belongs to an account. There
are other (non-account-based) operations that should be undoable,
such as changes to the PriceDB, direct Transfer Dialog entries, or
even changes made via File -> Import. I think the Undo log should
be part of the Book (or maybe Session), and there needs to be a way
to group operations together into the atomic undo operations.
The rest of your statement I agree with, that Undo should check that
the state is correct before it allows the undo.. Same for Redo.
Thanks,
-derek
"akintayo holder" <blakdogg at gmail.com> writes:
> Hi,
> Its seems that with respect to multi-user transactions and Undo, the first
> step would be to enforce this rule; A transaction cannot be Undone if the
> state of the record does not match the state after the original transaction
> had completed. For example, you can only Undo an account creation if the
> account was still empty.
>
> I would implement the update history as an account associated data structure
> which is stored in memory. A local history would allow undos to be performed
> by simply traversing the account's list and picking the next change. Anyway,
> this approach would mean that updates from other users are not aggregated in
> one list.
>
> Thanks for the comments.
>
> Akintayo
>
>
>
> On 3/21/07, Derek Atkins <warlord at mit.edu> wrote:
>>
>> Ariel <asgnucash at dsgml.com> writes:
>>
>> > It seems to me that an undo in a multi-user environment should be
>> exactly
>> > equal to the user deleting (or changing, etc) the transaction manually
>> > back to what it was.
>>
>> As pointed out, this isn't completely true. In a multi-user environment
>> another user may have updated the transaction so your "undo" shouldn't
>> silently discard their changes.
>
>
>
>
>> Meaning the log file would first show a 'do' transaction and later would
>> > show an 'undo' transaction, rather then the transaction not showing up
>> in
>> > the log at all.
>>
>> This is true..
>>
>> > It's not exactly how undo on an editor works, but I think it's the right
>> > thing for gnucash. One consequence is that if you do something and then
>> > undo it, gnucash will ask you to save the file, while in an editor it
>> > wouldn't.
>>
>> Well, in a multi-user environment you're certainly using a DB, so there
>> would be no "save". Each Do/Undo would effect a save to the DB.
>>
>> > -Ariel
>>
>> -derek
>>
>> --
>> Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
>> Member, MIT Student Information Processing Board (SIPB)
>> URL: http://web.mit.edu/warlord/ PP-ASEL-IA N1NWH
>> warlord at MIT.EDU PGP key available
>>
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>
>
--
Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
Member, MIT Student Information Processing Board (SIPB)
URL: http://web.mit.edu/warlord/ PP-ASEL-IA N1NWH
warlord at MIT.EDU PGP key available
More information about the gnucash-devel
mailing list