Hi,
Vincent Caron wrote:
Hello,
here are some hints from me, Meeloo (NUI maintainer) should have
more complete infos.
Peter R. Brinkler wrote:
1: A border widget which creates a border around the contents. With
the ability to specify the border using a set of svg for the various
border posisions (corner, edge....) .
It does not look like it's in NUI. Something like GtkFrame ?
http://developer.gnome.org/doc/API/2.2/gtk/GtkFrame.html
More like the ability to do this on all widgets... providing a frame
widget would be ok, except it leads to deeper widget hierarchies, with
the possible redraw penalty?.
2: The ability to exclude any number of the subwidgets of
nuiWidgetBox from the scaling of the contents. This is important to
our project, which includes fairly complex interface, where resize
must allow the labels and text to remain same size.
You can write your own nuiWidgetBox-like container with different
layout/resize politics, that's the NUI way.
Yes I can do that, except that I feel that some of that functionality
would be useful in more than one application, and it would complement
the current nui-native container in a manner to make it much more
usable. The ability to exclude widgets from resize is something which
the gtk box containers do as well, leading to an easier transition for
the gtk-- programmers.
3: n-way paned widget, for the viewport. Fltk (www.fltk.org) provides
such a widget which may serve as inspiration to the implementor.
We never got it right, a closer look at this FLTK implementation
would be nice.
The fltk implementation is nice, although it has some issues with resize
(like all the rest of fltk) - it does however provide the basic
capabilities.
6: Choice widget.
What is it ?
A simple button which has a menu attached with the different choices the
"choice" provides.
Once a choice has been made, the label of the button is updated with the
choice. The funcitonality would resemble a that of a radiobutton
group... except in a menu, with current selection indicated by the buton.
7: Value widgets:
class Value;
+ class InputValue : public Value; // Single line input, with up/down
arrows to manipulate value with mouse. Should include precision,
range, step...
+ class InputDoubleValue : public Value;
+ class InputStringValue : public Value
+ class InputLongValue : public Value
+ class SliderValue : public Value; // With range, precision, step
and current value indicated.
+ class Dial : public SliderValue; // Knobs and such.
+ class Wheel : public SliderValue; // Those sgi wheels
+ class ProgressBar : public SliderValue;
Part of the answer is in nuiRange. nuiScrollBar can currently be
used as a slider.
Yes - except that the scrollbar could in some way illustrate the current
value.
It also provides a simple consistent interface....
8: Ability to modify the colours (background, border, etc) of the
widgets using this->SetColour( 0xff00aaff );
We would not like to add too many of this features, customization of
widgets (shape, colors, etc) should go further via nuiTheme. Several
people have notified some interest to work in this area, this is
definitively needed. nuiTheme should be a simple layer thats its
between the actual widget-specific rendering code and nuiDrawContext.
See Qt and GTK+ theming APIs to grasp the idea.
I certainly see your point, about wanting this to be specified by
themes... except that some customizations are required.... for instance
if you want to control the bacground border of a widgetbox to indicate
common functionality.
Explicitly:
Illustrating that the content of a widgetbox group are polygon creation
tools, while others are for creating nurbs.... similarly with menus...
this menu is for nurbs so it's a faint rouge. Colours are a very fast
method of indicating the "similarity" of tools.
9: Form widget like the one motif defines. The form widget allows:
Ability to specify resizability.
Ability to specify positions of child widget borders as well as
relatively to other child widgets.
Ability to lock child widgets borders to edge of container as well
as other child widget borders including the ability to lock border
positions ( never scale this widget so the border is moved )
Some of this notions won't fit into the layout scheme of NUI (this
part is 90% inspired by GTK+). Or to be more precise, you can achieve
these goals by selecting the proper containers or writing them with
these specific politics. For instance to place a widget at a specific
and absolute position, you pack it in a nuiFixed container.
Correct.... only mention this because once you have the form you can do
ui constructs which makes more sense compared to the boxed setup of gtk
and alike. This I think is the reason that the form widget was so
frequently requested in the gtk context (or was when I used gtk)
10: Ability to specify animation for button press, menu opening etc.
events.
Animation is a whole topic, never started in NUI.
Self and squeak has some functionality in this direction which might be
interesting to look at.
11: The ability to specify the images for widgets using svg.
You mean the possibility to interchange images and SVGs more easily ?
No - the ability to do the "skin" of the widgets using SVG. I'm not sure
if you can already change the way the slider look or the way the
splitter-panes look - but using svg for such things would make nice ui
skinning available to those with an "artistic" inclination.
12: Colour chooser widget
Well, good exercise for a NUI starter, be my guest :)
Right - eventually I'll have to do that, if it's not inthere before
then.... moonlight will probably need a colour chooser.
14: A RAD tool.
Was started once, someone should be working on it again very soon
(Hugy on IRC). See http://sourceforge.net/projects/yapuka
Great.... I looked at that 6-8 months ago but couldn't make it
compile.... I guess it will only be a matter of time.
15: A tutorial into how to write a custom widget.
Hum, NUI is not even really documented. I mean single-liners
attached to methods won't help you much for now, I consider it
'internal memo' state.
I agree - I just put it for eventual inclusion on a "worklist".
Peter