Thread View: comp.graphics.avs
2 messages
2 total messages
Started by Brian Cabral
Thu, 21 Jan 1993 19:05
Widget control
Author: Brian Cabral
Date: Thu, 21 Jan 1993 19:05
Date: Thu, 21 Jan 1993 19:05
14 lines
1057 bytes
1057 bytes
I am interested in creating a complex AVS widget panel. Specifically, I want to have a number of widgets popup as function of the boolean state of other widgets on the panel. The only way I see of performing this task is to maintain state in the main body of a co-routine and control the creation and deletion of the contingent widgets. Does anyone know of a better way of doing this or if AVS has a built in facility for handling this sort of contingent widget control? I'll listen to the news group for the answer. Thanks. Brian Cabral (B.c.) Lawrence Livermore National Laboratory Center for Advanced Visualization
Re: Widget control
Author: Brian Hayes 74-35 x65129
Date: Fri, 22 Jan 1993 21:17
Date: Fri, 22 Jan 1993 21:17
74 lines
3686 bytes
3686 bytes
In article <147125@lll-winken.LLNL.GOV> cabral@lll-crg.llnl.gov (Brian Cabral) writes:
>
> I am interested in creating a complex AVS widget panel. Specifically, I
>want to have a number of widgets popup as function of the boolean state
>of other widgets on the panel. The only way I see of performing this task
>is to maintain state in the main body of a co-routine and control the
>creation and deletion of the contingent widgets. Does anyone know
>of a better way of doing this or if AVS has a built in facility for handling
>this sort of contingent widget control? I'll listen to the news group
>for the answer. Thanks.
Brian:
What's the problem with your approach? Sounds okay to me. I can do
you one better: I determine which panel to display in seperate
executable written in Ada.
But, to provide you with another solution, I _suspect_ that you may be
able to describe the state dependent panels in a network file(s)
where the panels may may share common widgets (parameters).
The problem with this is
a) AVS may not allow you to share common widgets across panels and
b) you'll still have to maintain the state.
As an alternative suggestion, I suggest you put unique widgets on
each state dependent panel. You'll have to name and access each
widget with a unique name. For example "HELP Panel 1" and "HELP
Panel 2." In this example, I want to have the buttons both labeled
"HELP"...not "Help Panel 1" and "Help Panel 2." code excerpts are as
follows:
int example_desc ()
{
...
param1 = AVSadd_parameter("Help Panel 1", "oneshot", 0, 0, 1);
param1 = AVSadd_parameter_prop (param1, "title", "string",
"HELP");
AVSconnect_widget (param1, "oneshot");
param2 = AVSadd_parameter("Help Panel 2", "oneshot", 0, 0, 1);
param2 = AVSadd_parameter_prop (param2, "title", "string",
"HELP");
AVSconnect_widget (param2, "oneshot");
...
}
int example_comp (...Help_Panel_1, Help_Panel_2, ...)
...
{
...
if (AVSparameter_changed ("Help Panel 1")) {
/* Some action...which just so happens to be state dependent
since the help buttons appear on different panels! :-) */
} else if (AVSparameter_changed ("Help Panel 2")) {
...
} ...
...
}
Since the panels describe the state by providing the user with the
control widgets (and other widgets) applicable only to that state,
state dependent action can be obtained without explicity maintaining
a state. We retitle the buttons so that the user does not see that
he/she/otherwise is manipulating a parameter named differently than
it is titled.
The drawback to this approach is that you have lots of widgets. For
example if you have 5 panels that share 5 commonly titled oneshots,
you need to define 25 uniquely named parameters and have 25 if-AVS-
parameter-changed statements (thank goodness for copy-cut-and-replace
=:^)
Brian Hayes
--
| Brian Hayes | "Know you analysis and design methodology, |
| (310) 616-5129 | its strengths and weaknesses!" -B.S.Hayes |
| hayes@hac2arpa.hac.com| <standard disclaimer here> |
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads