← Back to team overview

kicad-developers team mailing list archive

Re: Undo/Redo behavior across schematic


What about storing undo information per sheet as done now, but allow
optional grouping of such a operation across sheets.

When KiCad detects the user want's to undo a operation which affects
multiple sheets, he get's a message to chose about reverting the change
only in the the current sheet / or globally.

Regards, Thomas

Am 2017-04-18 um 14:55 schrieb Jon Evans:
> (branched from the component table viewer thread)
> In my opinion, a schematic with multiple sheets is not like a text
> editor with multiple documents.  The schematic editor is working on a
> single project, and it should be way more common to apply operations
> (that might want to be undone) to all schematic sheets, than it is to
> apply operations across all files you happen to have open in a text
> editor (other than "find in files", of course).
> In my experience, other EDA tools work around the "undoing global
> changes" issue that JP mentioned in the same way that text editors do
> when you replace in multiple files -- they warn the user that the
> change cannot be undone, and sometimes leave the files/sheets in an
> "unsaved" state so there is actually a way to undo it for certain
> files (i.e. by closing them without saving)
> -Jon
> On Tue, Apr 18, 2017 at 7:46 AM, Nox <noxfiregalaxy@xxxxxxxxx
> <mailto:noxfiregalaxy@xxxxxxxxx>> wrote:
>     I agree with you about the multi file editor behaviour. There it
>     is natural that the undo/redo works per file. But is this
>     behaviour also reasonable for a schematic? I just checked the
>     behaviour of visual studio. There global replacement will be
>     reverted if the stack is in sync. Else only the active document is
>     affected. So I guess you are right. We have to first agree which
>     way redo/undo should work. Personally I would perfere to move to a
>     "mixed" or global redo/undo.
>     What do you think: how hard will it be to implement a "container"
>     undo/redo item which batchs multiple changes (e.g. for component
>     changes, annotation, etc) and has an ID to check with all open
>     sheets if the top most change matches. Of course it is
>     questionable if a "silent" partial undo/redo is the best way to
>     handle desynced stacks. Or might a global redo/undo will be easier
>     to maintain? Or should global operations simply always "break" the
>     local undo/redo stacks (so our "state of the art"-handling)?
>     P.S: should we branch the discussion here maybe?
>     Am 18.04.2017 um 09:12 schrieb jp charras:
>         Le 17/04/2017 à 22:51, Nox a écrit :
>             I know that I already suggested that in another context
>             but what about changing the undo/redo
>             semantic to the more common approach to maintain an global
>             undo/redo stack and switch the view
>             accordingly? I know that the "per screen" is the
>             established way in kicad and that it is very
>             dangerous to break existing workflows. But the undo/redo
>             behaviour is currently hardly
>             "understandable" for beginners. E.g. why does the undo not
>             follow my actions but stays on one view?
>             Why does exporting the netlist break the undo? Why can
>             automatic annotation not be reverted? The
>             undo list wiped on a frequently basis that personally i
>             hardly trust into the undo functionality at
>             all.
>             Would it be an option to introduce a "test version" of a
>             global undo/redo to get some feedback from
>             the crowed which way would be preferred?
>         For me, the problem is not to have a global or per screen
>         undo/redo list, but what an user is
>         expecting when undoing/redoing a change.
>         We *always* expect to undo the last change.
>         Any undo/redo system has this behavior.
>         Now consider an editor (the schematic editor with 3 sheets for
>         instance, but this is also the case
>         of text editors with 3 files opened and currently edited).
>         1 - in sheet1 you call a tool (component table editor,
>         automatic annotation) which modify all sheets.
>         2 - after  that you enter sheet2 and make new changes then
>         sheet3 and also make new changes.
>         3 - back to sheet1 and try to undelete the latest change in
>         this sheet: this is the global change
>         (i.e. annotation). This is possible in sheet1.
>         But how can you undo this annotation in others sheets: this is
>         not the latest change and cannot be
>         undone safely (you can have deleted/replaced/edited a symbol
>         in other sheets, or deleted a sheet):
>         what is the actual meaning of "undo the annotation" in other
>         sheets).
>         And ultimately:
>         What a undo (and therefore redo) command must undo:
>         1 - the latest change in the full schematic (global undo/redo)
>           or
>         2 - the latest change in the currently edited (active) sheet
>         (local undo/redo)
>         This is a choice, and the answer is for me not trivial.
>         It could be worth to know what is the option for global/local
>         changes in a schematic hierarchy in
>         other schematic editors.
>         Multi-file text editors can undo the latest change only in the
>         active file, not in all opened files.
>     _______________________________________________
>     Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/%7Ekicad-developers>
>     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/%7Ekicad-developers>
>     More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp

Attachment: signature.asc
Description: OpenPGP digital signature

Follow ups