Thomas An. wrote:As if the designer was so empathic that they anticipate *where* the user will look for things when they need them. This is a very hard thing to accomplish and if not carefull, it is all too easy to end up with an overly abstract interface, where we are called to memorize a gazillion things.
In regards to this, there are quite a few factors. I don't honestly believe there is any single possible definition of 'intuitive UI'...it means a different thing to every user. Forcing designs, no matter how good-intentioned, on the user will only provide frustration. I do believe, however, that it is possible to create a good environment. Here are a few thoughts about what this means:
Main application window:
a) Main menu. A main menu is common among most applications since the dawn of windowing systems. This paradigm works well, users already know it, and therefore expect it...so use it.
b) Toolbars. A dockable toolbar-type element is provided in most UI frameworks, and they too are well known to the user, so use them.
Tool windows:
a) Try to allow these to be modeless...that is, don't block the user from accessing the main application window, just because there is a tool window up. Best case: allow these windows to be docked to the edges of the main window...see: toolbars.
Buttons, etc. :
a) These obviously live somewhere...generally on a toolbar. Don't go trying to reinvent the wheel here. Icons are called icons for a reason...they are meant to give a quick symbolic representation related to the action they produce. Best case: buttons/icons are able to be added/removed/changed; those that come as the default are only that...the default.
User-configurability:
This is the mother-lode. The best designs always implement a scripting interface to give even the casual user the ability to bend the UI to their wishes. Buttons are not actually tied to code...they just invoke script commands...which means that the user is free to move and change how they interact with the core of the application.
So...the three most important things are:
> Use a Main menu: it is the user's permanent 'home base'
> Implement scriptability: allow the user to access functionality directly
> Provide user-configurable docking toolbars: allow the user to make use of the scriptability
Now...above, I may as well be talking directly about Rhino. I personally have only one toolbar in Rhino, and it lives at the bottom of the viewport area, full-screen wide. It uses the small 16x16 button size, and all the icons are of my own making. Some of the commands they invoke are the same ones that ship with Rhino...others invoke scripts and script sequences of my own making, while others are flyouts of other custom toolbars. When I open up the v4 demo, where I haven't set up my toolbar yet...it feels completely foreign. This demonstrates why I don't believe in the concept of the perfect UI:
Someone else's idea of perfect will almost never resemble yours...in most cases it will be repulsive to you.