Re: Switching Between Multiple XMANAGER Windows [message #17335] |
Fri, 08 October 1999 00:00 |
Pavel Romashkin
Messages: 166 Registered: April 1999
|
Senior Member |
|
|
I agree with this point. However, in the original message Michael writes:
> However, I need to be able to
> return to the first window to be able to do the same for a second pixel
> without losing the second window.
which I understood as he wants to have previous detailed pixel information window
preserved while another one may be created. It is east to program a way to control
the number of daughter windows and not let them hatch with no limit, for instance,
by destroying older ones if the total number of them exceeds 5. Or, a user can
take control and kill those he is done with.
Cheers,
Pavel
Harald Frey wrote:
> Pavel Romashkin wrote:
>
>> Although I am not quite clear about what an XMANAGER window is, I see no
>> obstacle to using WIDGET_DRAW to produce more than one popup daughter windows
>> when the mouse is clicked inside that WIDGET_DRAW. Why not just include a
>> base widget creation routine in the event handler for the draw widget, and
>> have event_handler create a base with an information widget, with pixel ID,
>> label, text, table or image zoom-in - anything you want, and leave it in case
>> you need that information. Then, when you click on another pixel, another
>> window, identical to the first info base, will pop up, and so on. To destroy
>> them easily, I'd use /group_leadre keyword. Or am I missing something
>> complicating here? I don't even see the need to use pointers.
>> Good luck,
>> Pavel
>>
>
> If you do this you may end up with dozens of similar
>
> widget windows. What I do to avoid this is to set a
>
> flag in my info structure which shows that the child
>
> widget already exists and it will be destroyed before
>
> the new one is created. It looks like this.
>
> IF (info.wiczoom NE 0l) then WIDGET_CONTROL,info.wiczoom,/DESTROY
> zoomBase = WIDGET_BASE(TITLE='WIC Zoom',ROW=3)
> info.wiczoom = zoomBase
>
> Harald
>
> =========================================================
> Harald U. Frey
> Space Sciences Lab phone: 510-643-3323
> University of California fax: 510-643-2624
> Berkeley, CA 94720-7450 email: hfrey@ssl.berkeley.edu
|
|
|
Re: Switching Between Multiple XMANAGER Windows [message #17346 is a reply to message #17335] |
Thu, 07 October 1999 00:00  |
Harald Frey
Messages: 41 Registered: March 1997
|
Member |
|
|
Pavel Romashkin wrote:
> Although I am not quite clear about what an XMANAGER window is, I see no
> obstacle to using WIDGET_DRAW to produce more than one popup daughter windows
> when the mouse is clicked inside that WIDGET_DRAW. Why not just include a
> base widget creation routine in the event handler for the draw widget, and
> have event_handler create a base with an information widget, with pixel ID,
> label, text, table or image zoom-in - anything you want, and leave it in case
> you need that information. Then, when you click on another pixel, another
> window, identical to the first info base, will pop up, and so on. To destroy
> them easily, I'd use /group_leadre keyword. Or am I missing something
> complicating here? I don't even see the need to use pointers.
> Good luck,
> Pavel
>
If you do this you may end up with dozens of similar
widget windows. What I do to avoid this is to set a
flag in my info structure which shows that the child
widget already exists and it will be destroyed before
the new one is created. It looks like this.
IF (info.wiczoom NE 0l) then WIDGET_CONTROL,info.wiczoom,/DESTROY
zoomBase = WIDGET_BASE(TITLE='WIC Zoom',ROW=3)
info.wiczoom = zoomBase
Harald
=========================================================
Harald U. Frey
Space Sciences Lab phone: 510-643-3323
University of California fax: 510-643-2624
Berkeley, CA 94720-7450 email: hfrey@ssl.berkeley.edu
|
|
|
Re: Switching Between Multiple XMANAGER Windows [message #17348 is a reply to message #17346] |
Thu, 07 October 1999 00:00  |
Pavel Romashkin
Messages: 166 Registered: April 1999
|
Senior Member |
|
|
Although I am not quite clear about what an XMANAGER window is, I see no
obstacle to using WIDGET_DRAW to produce more than one popup daughter windows
when the mouse is clicked inside that WIDGET_DRAW. Why not just include a
base widget creation routine in the event handler for the draw widget, and
have event_handler create a base with an information widget, with pixel ID,
label, text, table or image zoom-in - anything you want, and leave it in case
you need that information. Then, when you click on another pixel, another
window, identical to the first info base, will pop up, and so on. To destroy
them easily, I'd use /group_leadre keyword. Or am I missing something
complicating here? I don't even see the need to use pointers.
Good luck,
Pavel
Michael Baca wrote:
> I am trying to find a way to work between two different XMANAGER windows.
> The first window controls some data visualization information. What I then
> do is click on my draw widget in order to obtain more detailed information
> about a single pixel. This pops up a new XMANAGER window that shows more
> detailed information on this single pixel. However, I need to be able to
> return to the first window to be able to do the same for a second pixel
> without losing the second window. Can this be done. Any comments would be
> appreciated.
>
> Mike
|
|
|
Re: Switching Between Multiple XMANAGER Windows [message #17350 is a reply to message #17346] |
Thu, 07 October 1999 00:00  |
R.Bauer
Messages: 1424 Registered: November 1998
|
Senior Member |
|
|
Michael Baca wrote:
> I am trying to find a way to work between two different XMANAGER windows.
> The first window controls some data visualization information. What I then
> do is click on my draw widget in order to obtain more detailed information
> about a single pixel. This pops up a new XMANAGER window that shows more
> detailed information on this single pixel. However, I need to be able to
> return to the first window to be able to do the same for a second pixel
> without losing the second window. Can this be done. Any comments would be
> appreciated.
>
> Mike
Here is a short idea how to solve this problem.
I believe it is neccesary to have all widget_ids and some more data as a
pointer structure.
You have to set at the widget_draw() an event_pro to your event_handler .
Then you have to write an own small event_handler wich has a syntax like
PRO wid1_own_event,map
a=WIDGET_EVENT((*map).id_draw,/nowait,bad_id=bad)
END
Afterwards you have to call this wid1_own_event in every loop where you like
to have access to the event_handler
of widget 1.
You need pointers because they are known in all routines.
R.Bauer
|
|
|