>The mouse wheel and navigation (as mentioned above). Make it consistent with other EDA, CAD and drawing applications: wheel -> up/down, shift-wheel -> left/right, ctrl-wheel -> zoom
I disagree, EAGLE uses mouse wheel zoom and it is by far one of the most widely used tools these days. On Mon, Aug 31, 2015 at 10:15 AM, Attila Kinali <[email protected]> wrote: > On Wed, 12 Aug 2015 00:09:06 +0200 > Attila Kinali <[email protected]> wrote: > >> So, I would like to ask, whether there would be any interest of the >> developers to work on the UI. If so, I would start collecting >> points on the UI that are worth to work on and how to improve them. > > Ok, here is a list of the things I stumbled upon in the UI. > > Generally, there are very few strict rules in UI design, most of > it is opinion. So, please accept the things I list here as my view, > which most likely will differ from yours. I do not intend to impose > my view on you, but rather want to give an insight on what someone, > who has done quite a bit of electronic design, finds cumbersome when > using Kicad. Also, the list is quite skewed to issues in pcbnew, > because that is what I was mostly using last week, when I took notes. > > I also incorporated the comments I got from my friend Andrew Bradford. > These are marked with (bradfa). > > All comments are based on kicad from bzr from about a month ago > (2015-08-10 r6080). > > Of the general rules of UI design, the most important one is consistency, > both internal and external. Consistency helps the user to develop a mental > model on how the application is supposed to work. This help in not needing > to remember exactly how to do X, but being able to derive the key presses, > mouse movement, etc on the spot. External consistency is a behaviour similar > to other applications, internal consistency behaviour that is similar within > the application itself. > > One example where Kicad fails with internal consistency are the symbol and > component editors compared to the schematic and layout entry respectively. > Even though they do very similar things, they work differently. > An example where Kicad fails with external consistency is the use of the > mouse wheel. While all EDA, CAD and simple drawing applications I've used > in the past have the following mapping: > > wheel -> up/down > shift-wheel -> left/right > ctrl-wheel -> zoom > > Kicad has the following mapping: > > wheel -> zoom > shift-wheel -> up/down > ctrl-wheel -> left/right > > And this is probably my biggest gripe with Kicad. Even after several weeks > of using Kicad, I still use the wrong one in the first try. If possible, > I would advise to change this before the release, as the release will > attract a lot of people who have never used Kicad before and they will > for sure stumble over this as I have. Especially as this cannot be changed > in any of the preferences menus. > > The second most important rule of UI is to make things explicit. Do not > hide the state a certain tool is in, but show it somewhere. For example, > the push-and-shove router only works with the OpenGL canvas. This is highly > non-obvious. I had to look at Tomasz introduction video twice to spot the > hint that I have to change the canvas. Also, the differen canvas behave > differently. This is _not_ a good idea. If there is need to have multiple > canvas types, then make them behave exactly the same, or at least as far > as possible and warn the user when he is trying to do something that the > current canvas type does not support. But better still: remove all canvas > types but one. > > In a similar vein, why the heck is dragging behaviour of tracks hidden in > the track settings context menue? It took me half a day to figure out why > dragging tracks moved the whole track element instead of drag the track > elastically. Even though I guessed it was some setting somewhere, I could > not find it in any preferences menu. A good way to at least alleviate > this issue is to put all persistent settings into one big (tool-)global > preferences dialog. If you have a look at commercial EDA/CAD tools, they > have humongous preferences dialogs, with hundreds if not thousands of > settings. Yes, this is cumbersome. But at least you have a chance to find > a setting there, even if it means to check each sub-dialog. > > The place where Kicad has done this right are the lists of key shortcuts. > Heck, I love this! I wish more tools had an accessible list like this, > that is only two mouse clicks away! > > The third rule most important rule (in an CAD like application) is the > placement of keys and symbols. The farther they are apart the more mouse > and hand movement is necesssary to use them. E.g. a wire is placed pressing > W, but to end it, one has to press K. While this would be ok if one had > both hands on the keyboard, but for this task the right hand rests on the > mouse and draws the wire. So one has to either lift the right hand from > the mouse or move the left hand over to the right half of the keyboard. > While the first is a natural movement, but has a long distance, the second > one is an "un-natural" movement and forces one to look on the keyboard to > find the right key. Yes, one can change the key settings. But honestly, how > many people will do this? Most, especially casual users, will just live > with the default settings (and even for "professional" users it is usually > a good idea to stick with the defaults, as it helps when working in different > environments). > > > Ok, now for the real part: > > General: > > * (bradfa) Make a wizard for the creation of a project, which allows to set > - Whether the default libraries should be used or not > - Paper size > > * (bradfa, me) Create a way to gracefully handle changes of schematic > symbols and footprints. Currently, they get silently replaced, which can > (and often does) lead to problems. Either cache the symbols/footprints > in the project or versionize them such that changes can be caught. > > * The mouse wheel and navigation (as mentioned above). > Make it consistent with other EDA, CAD and drawing applications: > wheel -> up/down, shift-wheel -> left/right, ctrl-wheel -> zoom > > * (bradfa) Allow for copy/paste and a move ability across pages. This would > be hard given the way the selection and copy/cut operations work with the > drag a box around things workflow. Not sure what the right way to solve > it is, but it should be solved. > > * Fix the drawing issues (ghost lines etc). Yes, I know, this is most likely > a bug in wx. But it is annoying as hell. So if wx needs to be fixed, then > fix wx. > > * Get rid of plot vs print. Use one that does the right thing > > > Schematic entry: > > * Print by default in color. We are in the year 2015. Most people have color > printers these days. If you think it should configurable, then make a config > option somewhere, that is _global_ and does not revert to the other thing > when you use a different path for printing. > > * Make powersymbols global netlabels that do not depend on being in the right > library. Heck, this is the most cumbersome way to define power symbols I > have > ever seen! For every new power rail I define, I need to create a new power > symbol. And above all, it has to be in a library called "power", which of > course is not documented. Additionally, this masks power symbols with the > same name. The "right" way to do it, would be have specially marked symbols, > (have a property POWERSYMBOL) that have a name field which doubles as the > net label. This way, one can create one symbol of the right form, set it > in the schematic, and change its label according to the needs. > > * Create a junction automatically, when a wire is passing over a pin. > This is usefull when, e.g. placing a dozen blocking C's. Then you just > pass with the wire once over all, instead of having to stop at each C. > Actually better still: When a pin or a wire ends on a wire, connect them, > even if there is no junction. > > * When creating/placing netlabels: remember the last created label. > It is normal to set a label at multiple places at once, and also > to have multiple labels that are named similarly. > As advanced feature: if the label ends in a number, automatically increment > the number. > > * (bradfa) Allow for non-hierarchical multi-sheet schematics. Especially for > big parts or boards where there are many big parts (think 1000 pin BGA > and 64 bit wide DDR3 and other "modern computer things") it's simply > easier and more elegant looking to organize a common set of parts across > more than one non-hierarchical sheet. Being forced to use hierarchy > means either I'm going to have to use a bigger sheet (which I can't > print, most people can't print on A3 size paper, let alone larger) or I > have to break my single unit of schematic up into yet another hierachy, > which for things like DDR, especially in something like a 64 bit wide of > x8 chips, is hard to fit onto one page. > > > Schematic Symbol editor: > > * Explicitly make it clear which symbol is being edited. The name should be > placed somewhere prominently. Either in the title bar or in a corner of the > window. > > * Allow for multiple symbol editor windows to be open, for easy copy&paste. > > * Add a pane with a view of the library. This would allow for faster selection > of the symbol one wants to edit/view. > > * Get rid of the double-confirm needed to save a changed symbol (why do I need > to save the changes of the symbol and then again save the changes of the > library?) > > > > Layout editor: > > * I do not really like the idea of having the board on a sheet, though i > can understand the reasoning. IMHO it comes from the old pen and pencil > times, when people drew on pre-made sheets of paper. Today, i don't really > see a point here. Yes, having some text describing the layout somewhere > (the sheet header) is nice, but why place the frame as well? > > * Start with a board creation wizard. In 99% of the cases people will start > with a rectangular PCB of a predetermined size. A wizard would allow for > a quick and easy creation of the board shape without the need to place > a number of lines precisely. The wizard should als create an automatic > keep out line around the PCB (there is usally a 0.5mm to 1mm keepout > at the board edges for production reasons. For PCB separation by scoring > this goes up to 2-3mm). > To make be able to call this wizard at a later stage (or not cal it at all) > would be also a good idea. > > * Make board edges a polygon line. I.e. disallow the breaking up of the closed > shape by moving a single line. Breaking of a polygon should be explicit, > when the user demands it, i.e. to insert another line shape. And those > should > "snap" automatically into the polygon again and be not be broken until > requested. > > * All components should be placed next to each other, sorted by sheet they > are on. Not ontop of each other. > > * Allow placing explicitly a single via. And do not remove the netlabel of a > via if it's not connected to any track. The reason for this is simple: after > a layout is finished, I hunt for places where the ground (or power plane) > connectivity is not good over different layers (think long parallel tracks > on the bottom layer that carry high frequency signals, the ground between > the tracks becomes a long (but wide) wire itself. Adding a via every now > and then connects the ground to the ground plane on another layer.) > Currently the only way to do this is to place a track that starts at some > GND pin and runs in a zig-zag course over the PCB. > > * Allow to place a track in the middle of nowhere. Reason is similar as above. > > * Allow to set the net of a track/via explicitly. Not only while drawing > the track/setting the via, but also afterwards. > > * Make all canvas feature complete and equivalent. (reason given above) > IMHO make the OpenGL canvas the default one. It's the one with the nicest > features. Also it does not screw up every time one draws a track. > > * Allow rotations in both directions. (probably R, shift-R). Make R the one > that goes in clock-wise direction, which is the "natural" direction for most > people. > > * The important key shortcuts are all over the keyboard, which means > the user has to constantly move his hands around (see above). > > * Switching of trace width is.. meh.. the default canvas allows only to use > pre-defined values (which is nice in theory, but not when you have to add > every allowable line width explicitly into the settings). The OpenGL canvas > allows to set to a value. Which is IMHO nicer, but there should be some > "remembering" of old used values that present themselv in a drop down menu. > > * All dialogs for creating something (planes, etc) should remember their > settings that have been previous used. Chances are high I want to create > another instance with the same settings. > > * Give unconnected pins a "No Net" label instead of a random netlabel. > The random netlabel is confusing. One does automatically want to find > the other component/pin that connects to it. > > * Create an un-select key shortcut. > > * Zoming centers the window at the point where the mouse pointer was > pointing to. This sudden jump is very annoying. Instead the point the mouse > pointer is pointing to should be kept fixed and the zoomed window moved > accordingly. > > * When moving parts references, highlight the part it belongs to. > > * Make highlighting and masking levels configurable by sliders > (Altium does that in a very cool way) > > * Place a small scale at the lower right corner. It is often very hard to > judge how large something is, when doing the layout. A ruler would allow > to have a quick look, to verify that one is actually drawing something > roughly 1mm in size and not 10mm in size. > > * Allow for different line thickness on non-copper planes. > > * Allow for arbitrary shapes (rectangles, circles, rings, polygones) on > non-copper planes (e.g. for modifying the paste mask or solder mask) > > * Add a "undo" for tracks while drawing them. If I am drawing a track > and realize I've passed a component on the wrong side and thus have ended > up in the wrong spot, I want to be able to backtrack to the place I went > wrong and continue from there. Currently, I either have to cancel the track > and start from zero again, or place the track and delete the part that is > wrong and start from there. > > * Have a toggle (key shortcut) between "show all layers" and "show only active > layer". In complex boards with more then 8 layer (sometimes even from 6 up) > the other layers start to confuse and I want to disable them. But from time > to time i need to know where I am and need to quickly reenable them. > > * Enabling/disabling layers takes way too much time when area fills are > involved. I have here a simple design of 10x8cm board, with few components > (two dozen in total), but it already takes a second to enable/disable > a single layer. > > * BUG: Two area fills with the same priority but different nets will overlap, > when drawn over eachother. The right thing to do here is to draw the area > fills in a specific order and to cut later ones off when they get too close > to another fill. Of course, this will then need some form of configuration > in which order the fills are drawn (could replace the priority). > > * Mouse drag behaviour "interactive" is what people would expect today. > Please make it the default. > > * Allow the grid to be changed with a key command that makes the grid > smaller/larger. > > * Allow the grid to be switched off completely. > > * Make pin snap-in radius configurable. > > Footprint editor: > > * Explicitly make it clear which symbol is being edited. The name should be > placed somewhere prominently. Either in the title bar or in a corner of the > window. > > * Allow for multiple symbol editor windows to be open, for easy copy&paste. > > * Add a pane with a view of the library. This would allow for faster selection > of the symbol one wants to edit/view. > > * Make measurements easy and intuitive. The current "press space and watch > the status line" is not! This requires at least an explicit command. > > * Allow the grid to be changed with a key command that makes the grid > smaller/larger. > > * Allow the grid to be switched off completely (especially important > for measuring things). > > * Create a "snapp to nearest center/vertex" option (also important for > measurement) > > > Yes. I know. This is a damn long list. But this is still just the beginning. > There are many issues, a lot that you only realize when you use the tool for > the first time (because you get used to the quirks) and others that you only > realize after using the tool for some time. Especially consistency issues > are quite difficult to catch. I still hope this list is usefull. > > Please let me know what you think. > > > In an other note: I love the new website! It is a lot better! > Especially the documentation is now the first thing one sees > and thus does not have to search for it anymore! > > > Attila Kinali > > > -- > It is upon moral qualities that a society is ultimately founded. All > the prosperity and technological sophistication in the world is of no > use without that foundation. > -- Miss Matheson, The Diamond Age, Neil Stephenson > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : [email protected] > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp -- Mark _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp

