Wolfgang Draxinger
2005-08-03 14:03:09 UTC
Well, I think LabVIEW is damn cool... as long as, well, as it
comes to modern GUI design.
However now I'm stuck at a point, which I'd have done with a good
toolkit like GTK, wxWidgets or Qt in no time (as this is
integral part of these toolkits): That is automatical placement
of widgets and i18n.
I started using LabVIEW 2 weeks ago and the very first you do is
placing Wigets on the frontpanel. The Problem is just, that
positioning those widgets is done absolutely. The lack of
structuring containers (in GTK called boxes, grids, panels,
viewports, etc.) makes it extremely difficult to build
applications that can scale to any screen resolution. Also the
colors and the appearance of the widgets is fixed, practically
hardcoded into the VI. Moreover the whole GUI of an VI is fixed
and cannot be changed in the final application.
This is my wish for the next version of LabVIEW: Decoupling of
the GUI and the Code in the way it is possible with e.g. GTK and
it's XML GUI loader. Using this you attach the outputed data to
some generic widget reference compatible to the data and give it
an Id. Then you load the GUI stored in an XML and the backend
couples the data with the GUI. In case you need a custom control
you make this the child of an generic panel widget, carrying the
Id for the XML representation et voila.
Appearance is controled by an application independent theming
engine on which ever application can request it's own theme.
Moreover i18n is what I miss at LabVIEW. The program I'm
currently doing will be used by a lot of students from all over
europe, thus the program should at least have a german, english,
and french UI. However in LabVIEW every language requires to put
it into an own VI (or fiddling with Property Nodes). In e.g. GTK
(again) i18n is an integral part. For most stock objects
(standard buttons and menu entries) there are ready made
translations. For all the application specific stuff strings get
automatically translated by putting i18n files for the different
locates into the app's directory and setting the LC_LANG
envrionment variable to that locales name: Voila the whole app
got a fully translated interface. Best thing is, that GTK
features the Pango component which takes care of proper text
direction rendering, automatically adjusting the GUI if
neccesary. (e.g. in RTL languages like hebrew labels are at the
opposite side as in LTR languages like english)
In one sentence: It's the methods of modern GUI design that I
miss from LabVIEW. GUIs in LabVIEW are still build in the way as
it was 10 years ago. Nobody elso does it this way anymore, only
LabVIEW AFAIK. So this is my wishlist for one of the next
versions:
- decoupling of GUI and code
- GUI design using hierarical structuring elements (have a look
at GTK, that Tk is just great)
- i18n
Wolfgang Draxinger
--
comes to modern GUI design.
However now I'm stuck at a point, which I'd have done with a good
toolkit like GTK, wxWidgets or Qt in no time (as this is
integral part of these toolkits): That is automatical placement
of widgets and i18n.
I started using LabVIEW 2 weeks ago and the very first you do is
placing Wigets on the frontpanel. The Problem is just, that
positioning those widgets is done absolutely. The lack of
structuring containers (in GTK called boxes, grids, panels,
viewports, etc.) makes it extremely difficult to build
applications that can scale to any screen resolution. Also the
colors and the appearance of the widgets is fixed, practically
hardcoded into the VI. Moreover the whole GUI of an VI is fixed
and cannot be changed in the final application.
This is my wish for the next version of LabVIEW: Decoupling of
the GUI and the Code in the way it is possible with e.g. GTK and
it's XML GUI loader. Using this you attach the outputed data to
some generic widget reference compatible to the data and give it
an Id. Then you load the GUI stored in an XML and the backend
couples the data with the GUI. In case you need a custom control
you make this the child of an generic panel widget, carrying the
Id for the XML representation et voila.
Appearance is controled by an application independent theming
engine on which ever application can request it's own theme.
Moreover i18n is what I miss at LabVIEW. The program I'm
currently doing will be used by a lot of students from all over
europe, thus the program should at least have a german, english,
and french UI. However in LabVIEW every language requires to put
it into an own VI (or fiddling with Property Nodes). In e.g. GTK
(again) i18n is an integral part. For most stock objects
(standard buttons and menu entries) there are ready made
translations. For all the application specific stuff strings get
automatically translated by putting i18n files for the different
locates into the app's directory and setting the LC_LANG
envrionment variable to that locales name: Voila the whole app
got a fully translated interface. Best thing is, that GTK
features the Pango component which takes care of proper text
direction rendering, automatically adjusting the GUI if
neccesary. (e.g. in RTL languages like hebrew labels are at the
opposite side as in LTR languages like english)
In one sentence: It's the methods of modern GUI design that I
miss from LabVIEW. GUIs in LabVIEW are still build in the way as
it was 10 years ago. Nobody elso does it this way anymore, only
LabVIEW AFAIK. So this is my wishlist for one of the next
versions:
- decoupling of GUI and code
- GUI design using hierarical structuring elements (have a look
at GTK, that Tk is just great)
- i18n
Wolfgang Draxinger
--