Yesterday I came across a blog entry by John Pierson over on Sixty Second Revit in which he showed an incredibly non-straight-forward way of making something that would resemble a dropdown dialog UI element for Dynamo. See the whole post here.
It is obvious that this is not the way to go and luckily Ian Keough saw what we were talking about on Twitter and asked what we would like to do. So here goes…
<span style=“font-size: large;”>Windows UI-elements for Dynamo —> Dialogbox canvas node</span>
Allright, here is my idea how the problem could be addressed with a few new nodes of course, of which some have some very special behaviour.
UI-elements that would be needed are:
- a grouping element that would host several UI nodes and create a frame around them. The whole group can then be moved on the canvas easily by just moving the group element.
- a bitmap picture element to show an explanatory image of what the other elements control
- probably more but I am too lazy to imagine them all right now (also I got some work to do in the office :) )
Ok, here is a quickly photoshopped picture of a simple dialog definition. Open this image in another browser window while you read the description below.
A text_box is definied with a just few input variables:
- id - An identifier which gives the object it's identity
- label - A text that should appear as the input box label
- default value - a default value with which the edit_box is populated
- width - a width in pixels or another unit which allows to give the edit_box a size
The dropdown_list is a little more complicated to define since it can host a list of values. To build this list the usual Dynamo measures are used, see the screenshot.
Now things get interesting…
<b>The User Interace node:</b>
The UI node takes UI elements as inputs, provides a canvas on which the UI elements appear and where the user can move them around to group them together so they make sense for the user.
It would make sense if the movement can be locked down so that end-users don’t accidentically destroy the layout by an unintentional drag & drop twitch with the mouse.
The UI node also provides the values of all UI elements as outputs. What those are is obvious I think. The output value of the dropdow_list would be the index of the selected option.What the actual value is can be determinded easily afterwards.
Perhaps the inputs and outputs can somehow be hidden from the end users to simplify the layout. I am a bit undecided about this one.
OK, this is not an easy solution for the Dynamo team, I know, but it’s easy for Dynamo script-writers and end users who get to use the dialogs.
<b>radio_buttons and radio_button_groups</b>
(take a look at Dynamo’s boolean node if you don’t know what a radio button group is)
A radio_button node is easy to imagine from the definitions above. Two or more of those nodes make up a radio_button_group. The group then becomes an input for the UI canvas node.
The radio_button_group should have the ability to align the single radio buttons in a row or in a column.
Allright, that’s it already. Let’s discuss things if you are interested It all is obviously not thought through all the way. The UI node definitions are not finished, there are many more options all the nodes would need. With this I think of the DCL-language of …don’t hit me! … AutoLISP… HAHAHA