← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] eeschema new tool/feature: Component spreadsheet tool

 

Hi,

Well maybe I am naive (again) but as an user I would expect that undo/redo "follows" my actions i.e. switches between sheets as well. Of course I see the advantages of seperate undo/redo stacks for every single sheet but I am not really convinced that the advantages outweights the disadvantages (i.e. the frequently killed undo/redo if one does a global operation like annotation or exporting the netlist). The concept of a "multiple sheet undo" has its charm but one runs again into trouble if one has removed it from one sheet. Of course this case will be detected and reported, but I wonder if it will help the user experience that one more way exists to "hinder" the undo/redo mechanism.

best regards,

Christian


Am 23.12.2016 um 09:47 schrieb Dino Ghilardi:

Hello JP,
'interleaved' to the original text my comments.


Il 23/12/2016 08:56, jp charras ha scritto:
Le 23/12/2016 à 00:30, Dino Ghilardi a écrit :
...
Yes, the undo/redo on multiple sheets is very tricky, mainly because usually you are not expecting
this command made in a given sheet changes something in an other sheet.

Your remark about synchronizing the undo/redo between all sheets shows very well the problem. This is the reason the clearing annotation command is not undo-able, and some changes when
generating a netlist clears the undo/redo stack..

I am not sure this is only a matter of code (it could be fixed), but this is a matter of usability: Is it really possible to safely undo a "global" command from a sheet, after a lot of other edition
commands made in other sheets.
I agree, this is the point. Also it is very useful having the undo on operations that can be done on a lot of components (as an example you can set the font for all the fields at once in the component spreadsheet and a single 'undo' on this is very useful)
How to remember or accept all commands to undo/redo in other sheets?
A possible solution should be:
Push on the undo stack of every sheet a 'multiple sheet undo' marker with an 'unique-id' for the operation. When undoing something and this command is reached check if it is present on top of the undo stack of every sheet If yes, undo the operation on all the sheets (maybe adding a dialog warning for the multiple sheet operation) If no issue a warning and ask some user interaction to choose what to do (skip undo, undo automatically all the operation done after the current for other sheets, go on the sheets that have operations done after this marker, list the things that will be undone etc...).

Remark:
From my point of view, the value of the reference field should be *not modifiable* because:
1) changing this values usually breaks the board.
2) in complex hierarchies, this is not the value of the reference, only the value currently
displayed on screen.
3) the ref and the unit number and closely associated in multiple units per package components.


In the newer version of the tool I let the value of the reference field be modified using the same code of the "edit" dialog, so the complex hierarchy problem should be solved. The reference ii "not deletable", but can be modified in the same way you can change it in the 'edit' dialog.


Moreover the multiple edit of reference has a sense if you want to un-annotate a group of components (as revert "Rxx" to "R?"). (A better solution should be having an 'unannotate selected components' option and an 'annotate selected components', but I think I'll leave this into my 'personal wish list' for a very long time).

Cheers,
Dino.

_______________________________________________
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



References