home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!paladin.american.edu!howland.reston.ans.net!usc!hacgate!valkris!hayes
- From: hayes@valkris.aero.org (Brian Hayes 74-35 x65129)
- Newsgroups: comp.graphics.avs
- Subject: Re: Widget control
- Message-ID: <24839@hacgate.SCG.HAC.COM>
- Date: 22 Jan 93 21:17:40 GMT
- References: <147125@lll-winken.LLNL.GOV>
- Sender: news@hacgate.SCG.HAC.COM
- Organization: Hughes Aircraft Company, EDSG
- Lines: 74
-
- 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> |
-