← Back to team overview

kicad-developers team mailing list archive

Re: Undo/Redo behavior across schematic

 

Hey David,

On 4/18/2017 3:32 PM, David Godfrey wrote:
> Hi Jon
> 
> 
> On 18/04/17 21:27, Wayne Stambaugh wrote:
>> On 4/18/2017 9:03 AM, Tomasz Wlostowski wrote:
>>> On 18.04.2017 14:55, Jon Evans wrote:
>>>> (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)
>>>>
>>> Hi Jon,
>>>
>>> I would suggest having one schematic file per schematic sheet. This
>>> would greatly simplify the undo/view model, while we could still have
>>> multiple documents open in tabs. Moreover, each sheet in a separate file
>>> would make design reuse much easier...
>> This would break complex hierarchies where a file is referenced in more
>> than one sheet.  Using separate files for each sheet actually makes
>> designs less reusable in complex hierarchies.  It doesn't make sense to
>> save the same file multiple times just for the reference designator
>> differences.
> It would also break re-usability. I I have a schematic file that
> represents an instrument amp, and use it as a sheet multiple times, I'd
> then expect to modify the schematic once and have the change propagate
> across all instances of that sheet. (eg: adding an additional filter cap)

I think that it is a pretty safe bet that this wont happen.  I would not
allow this change.  The usage you described is precisely why complex
hierarchies exist.

>>
>>> Cheers,
>>> Tom
>>>
>>>> -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/~kicad-developers>
>>>>     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>>>     Unsubscribe : https://launchpad.net/~kicad-developers
>>>>     <https://launchpad.net/~kicad-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
>>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>> _______________________________________________
>> 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
>>
> 
> -- 
> Regards
> David G
> 
> 
> _______________________________________________
> 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
> 


Follow ups

References