[R-gui] general design questions

Antje niederlein-rstat at yahoo.de
Wed Aug 20 10:46:57 CEST 2008


Hi Michael,


> On Tue, Aug 19, 2008 at 1:38 AM, Antje <niederlein-rstat at yahoo.de 
> <mailto:niederlein-rstat at yahoo.de>> wrote:
> 
>     Hi Michael,
> 
>     thanks a lot for your answer.
> 
> 
> 
>         On Mon, Aug 18, 2008 at 6:56 AM, Antje
>         <niederlein-rstat at yahoo.de <mailto:niederlein-rstat at yahoo.de>
>         <mailto:niederlein-rstat at yahoo.de
>         <mailto:niederlein-rstat at yahoo.de>>> wrote:
> 
>            Hello,
> 
>            I try to develop a GUI with gWidgets (TclTk) but I guess my
>         little
>            application already starts to be messy...
> 
>            First question: How shall I handle updates of widgets
>         triggered by
>            event handling? So far, I simply took the widget-object I want to
>            update as a global variable but that's not a good style. Any
>            suggestions how to handle this?
> 
> 
>         It's possible to specify a "user" object when registering the
>         callbacks, I think. The "user data" is then passed as the last
>         parameter to the handler. Another good way to control the
>         scoping is nesting environments (e.g. through closures). That
>         is, your object does not need to be global (in the workspace)
>         but it can be in a parent environment. In fact, global variables
>         won't even work when you put your code into a namespaced
>         pacakge, because the namespace will be locked.
> 
> 
>     Can you give me a simple example, please? I'm not sure if I
>     understand correctly how this can work. (Or maybe there is already
>     some kind of documentation I can check for these possibilities...)
> 
> 
> There's documentation and examples in the help for addHandler. It's the 
> "action" parameter.

And what about the "nesting environments"? I'm not sure if I'm aware of how 
this works exactly (I know, that's rather poor... but maybe you can give me a 
simple example?)

>  
> 
> 
> 
>            Second question: What are my possibilities to stay flexible? For
>            example: I though it makes sense to use a gpanedgroup for a
>            checkboxgroup with variable number of items (to make it
>         scrollable
>            if it's getting too large). But this does not work like I thought
>            and the items simply disappear at the end of the panel.
> 
> 
>         I don't think the paned group is what you want here. Split paned
>         widgets are to allow the user to control the allocation of space
>         in a GUI, usually in either the horizontal or vertical
>         directions. If you're GUI is growing too large, you'll need to
>         make it so that only a portion of the GUI is visible at once.
>         One way to do that is with scrolled windows. See the
>         use.scrollwindow parameter for ggroup().
> 
> 
>     Oh, thanks a lot. I was not aware of the scrolling opportunity if
>     the ggroup.
> 
> 
>          
> 
>            Third question: How to structure the GUI? Builing, Sizing,
>         Arraging,
>            filling with content (not every object has some initial content).
>            For example, I realized that I have to set the svalue for the
>            gpanedgroup after adding the objects.
> 
> 
>         Well this is an art and depends on your GUI. Split panes are
>         difficult in that they require one to specify a numeric value
>         for the split position. This is a similar problem to specifying
>         the initial size of a window.
> 
> 
>     Is there anything I can do beside, setting a fixed size with pixel
>     values?
>     For example if I'd like to initially maximze the window... (I know
>     that it's possible with TclTk).
> 
> 
> I am not that familiar with tcl/tk but in general UI toolkits require 
> you specify pixels for positions of things like that. If it's not so 
> important for the user to be able to adjust the layout, why not just 
> skip the paned widget? They're rarely very helpful.

Hmm, I will use it for one case (where it's really useful). But currently, I 
have problems to "activate" the scrolling for a ggroup...

>  
> 
> 
>         The simplest way is just to guess a good initial position. This
>         is usually not too bad. Adjusting the split automatically might
>         not be a good idea, since it should be under the control of the
>         user.
> 
> 
>     Of course, I just set it initially.
> 
>     Ciao,
>     Antje
> 
> 
>          
> 
>            I don't know, but I have the impression to create my GUI quite
>            unstructured and I'm afraid to loose overview soon...
> 
>            The small examples for the usage of different components are very
>            useful but I'm looking for some hints on how to create a more
>            complex application (what to do when and how).
> 
>            Thanks a lot for every tip!
> 
>            Antje
> 
>            _______________________________________________
>            R-SIG-GUI mailing list
>            R-SIG-GUI at stat.math.ethz.ch
>         <mailto:R-SIG-GUI at stat.math.ethz.ch>
>         <mailto:R-SIG-GUI at stat.math.ethz.ch
>         <mailto:R-SIG-GUI at stat.math.ethz.ch>>
> 
>            https://stat.ethz.ch/mailman/listinfo/r-sig-gui
> 
> 
> 
> 
>



More information about the R-SIG-GUI mailing list