libglui / glui

GLUI is a GLUT-based C++ user interface library which provides controls such as buttons, checkboxes, radio buttons, and spinners to OpenGL applications. It is window-system independent, using GLUT or FreeGLUT.
Other
194 stars 82 forks source link

Rollout look bugs me some #100

Open m-7761 opened 5 years ago

m-7761 commented 5 years ago

I've always thought GLUI's Rollout looks odd. wxWidgets doesn't have a rollout, but a search turns up this screenshot that pretty much looks like I expect:

https://forums.wxwidgets.org/viewtopic.php?t=30144

Windows 95 doesn't have one. But I think if it did it would use an arrow. I think the button should be as wide as the group box. And maybe it should use a double border or something to make it standout. I would have to do a mock-up or rewrite the drawing routine to figure out what seems best.

m-7761 commented 5 years ago

I think actually (after a night's rest) the right way is to use the Spinner control as the ticker. Off the top of my head I can't think of any beveled Win32 elements that are stateful. That's to say, the ticker should not flip between an up and down arrow. Plus I think that a spinner is most likely to be easily implemented with wxWidgets' native controls.

The next problem is how to distinguish it from a spinner, or other controls. I think the simplest way is to make it a Panel (it already is) and to indicate its rolled-out status by flipping the panel border style, so it looks like a big thin button. I think that's most likely to be portable also.

In this model, clicking the Rollout anywhere outside its inner controls would minimize/maximize it. Highlighting would probably draw a selection rectangle around the entire thing. On the inside of panel I guess. Like a button.

Eventually (I'm thinking of Blender) I would want the spinner to be analog, so that say with a mouse wheel it's possible to partially roll-out, and that way take up less space. Then a scrollbar can zero in on the tools the user is interested in. In the meantime, the Spinner will just be kind of decorative, since it's digital. I think a spinner best fits in with the concept of a roller.

I have some other ideas about this (economy) that I'm going to present in a group_id discussion, that is based on my experience with a new function for sorting node trees.

m-7761 commented 5 years ago

GLUI Rollout

Screenshot of simple redesign. The column spacing on the bottom tray is all over the place. I'm not sure why... it seems more than just label differences. The rollout button uses the normal button. I think they don't quite match Windows 95 or Windows classic theme buttons. It would look better I think if so. But also a little different. I've been working with it pretty obsessively lately. I don't know why, but I feel Win32 is an old friend, and this is a new way to experience it.

Visual Studio actually has some rollouts that are like a groupbox with just a [+] or [-] box in the top-left corner. When minimized they just have the top bar of the groupbox show. The simplicity of this design is quite nice for small boxes. I think a larger box could use a split-button style ticker. Maybe having both forms can communicate how big the box is inside. The ticker form could have a scrollbar built-in.

Putting scrollbars in the subwindows is attractive, but not the correct decision I think. I imagine if a 3D app drags the right-button to pan its viewports, then it would make sense to pan the subwindows the same. Dragging the right-button is something that no UI requires, and so it can be a simple, basic option.

Update: I took a look at the column stuff (unrelated) GLUI Rollout