the right decision was to rename “Delete All Instances In View” button to just “Delete”. Because buttons “Select” and “Execute” don’t tell us much. Why only one control have to be different?
this renaming give us better chance to redesign our UI
Or even extend “Select” and “Execute”to tell us what can do. If you use shorter buttons names then you need to add tooltips for description.
Generally what I think about the icons that are used for any mxs or .net control.
[b][u][i]Adventages:[/i][/u][/b]
# better look of UI
# icons can sometimes symbolizes the command better then text especially if no place for large text (smal sized controls)
# there is a few system fonts which have symbols and can be replace rasterized icons. But this
refers only .net controls
[i][b][u]Disadvantages:[/u][/b][/i]
#sometimes tool can seem worse:)
#if control icon is not combined with any text then in most cases you need to add tooltips
# if you use icons from external directory then tool can only be opened if the directory is placed in right location on HDD.
# if you decide to embed icon inside the code as string(.net) or array(mxs) the tool will run (load) more slowly, they are also flickering and script file size can be in MB.
if i wouldn’t know what this tool do (let’s say anyone else asked me about UI design) I do something like this:
rollout d "" width:216
(
group "Instances: "
(
spinner a_sp "Count: " type:#integer fieldwidth:56 align:#right offset:[4,-2]
spinner b_sp "Distance: " fieldwidth:56 align:#right offset:[4,0]
button a_bt "Select" width:65 across:3 align:#left offset:[-5,2]
button b_bt "Delete" width:65 align:#left offset:[-1,2]
button c_bt "Execute" width:65 align:#right offset:[5,2]
)
)
createdialog d pos:[600,550]
Your UI looks like part of some modifier or plugin where user already knows what this tool can do. But for standalone tool only prophet knows what is the author trying to say
that’s the right point. you see it. and user see it. and user starts thrusting the tool before using it.
another points?
now i will tell about reasons to make this design:
not unique, not complicated tool has to look as a part of max
the density of controls in dialog has to be mostly the same as in max native dialogs. because it’s easier for user ‘read UIs drawn with the same brush’
all controls has to be aligned, has to have same spacing, same font size
i put spinners in one column by two reasons:
## follow alignment rule
## minimize width of the dialog
i put spinners above “execute” button because more likely their values used by execute action
i put all three buttons in a row because they are all actions of the same tools combined by some idea. there is no evident reason to mark out any of them
i shorted button name (“delete”) to make clearer reading set of actions and easier remembering them
i grouped all controls in the group “Instances” to tell user what they are all about
when i know what every spinner, or button does do i would add a tooltip to every control.
does everything make sense?
what do you want to hear next? we can talk a little about using image buttons, icons…
This looks like how i do my rollouts…
try (destroydialog fizRollout) catch()
rollout fizRollout "Fiz Rollout" width:320
(
local spinRange = 9999
group "Tool Options"
(
spinner spCount "Element Count: " type:#integer range:[0, spinRange, 0] width:100 across:2 align:#left offset:[10,0]
spinner spDistance "Distance: " type:#worldunits range:[-spinRange, spinRange, 10] width:120 align:#right offset:[-10,0]
)
button btnSelect "<Select Element>" width:100 across:3 align:#left offset:[-5,20]
button btnDelete "Delete All Instances" width:100 align:#center offset:[0,20]
button btnExecute "Execute" width:100 height:40 align:#right offset:[10,8]
groupBox gBxSelection "Selection Tools" width:210 height:45 offset:[-8,-50]
hyperLink hlAbout "myawesomesite.art" color:(color 128 128 128) across:2 align:#left offset:[0,10]
button btnHelp "Help" align:#right offset:[0,5]
) --end rolloutfizRollout width:300
createdialog fizRollout pos:[600,550]
I think with a basic “on close”and “on open” functions to initialize rollouts from InitFiles this will upgrade a bit.
sorry… ops. i’ve already said sorry in advance when i started this thread.
i tell you truth… you made in this sample all possible mistakes…
Wow. I read now the other previous post and i read again my fast write rollout and i understand you. i think the better mistake is the negative distance spinner. Its make me laugh.
Its my fault didnot read.
Fortunately i am here to learn. and to read what i write.
I am sorry for my too fast post, fortunately i didnot write my scripts so fast and bad.
i can show all your mistakes… first of all we don’t care about controls functionality, limits, etc. our subject is UI only.
so what is wrong for me:
the dialog is too big for 2 spinners and three buttons. seeing big dialog a user thinks that the tool will be also heavy to use
buttons and spinners have different sizes, they are not aligned. it’s untidiness
spinners are combined under “Tool Options” group. do spinners in the tool have any another mission?
buttons “select” and “delete” are grouped in “Selection Tool” group, but the title “Delete” tells a different
hyperlink and help kinda too much for easy working tool
button “execute” bigger than others. that’s says that this is what whole tool is about. which is not true… at least i didn’t say it
I hope I’m not going too offtopic. Will we also discuss about how to actually write the code in a cleaner way or are we just going to focus on UI design?
In case we are talking about the code as well I wanted to mention that I noticed the variable names of the UIs you are using are as follows:
a_sp
a_bt
and so on...
whereas I tend to swap it around and use…
sp_a
bt_a
and so on...
The reason why is because to me it’s more understandable when I’m writing event handlers like this one:
on bt_a pressed do
In my mind I’m actually reading “on button “a” pressed do…”
It also helps me with the auto-completion in the maxscript editor, so that it does not get in the way with other words used in the editor. I might have other variables starting with “a”, but I leave “btn,sp” and other prefixes reserved for UI.
Just a minor thing but I just wanted to mention it anyway.
it’s offtopic… but if you interested i usually name all my controls follow these two simple rules:
the body of name tells what this control does do
the suffix says the type of control
i use this system for both mxs and .net controls.
so in the sample above controls had to be named by me as: count_sp, distance_sp, select_bt, delete_bt, execute_bt.