comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » rescaling draw widgets: is there an easier solution to this?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
rescaling draw widgets: is there an easier solution to this? [message #89563] Mon, 27 October 2014 08:23 Go to previous message
Helder Marchetto is currently offline  Helder Marchetto
Messages: 520
Registered: November 2011
Senior Member
Hi,
I would like to have a widget_draw (or widget_window) within a widget_base with stuff on the top, left, right and bottom of the draw widget. If I change the size of the base with the mouse, I would like the draw widget to expand accordingly.

I found a way to do this, by keeping track of the size of the widgets (base and draw). However, I'm wondering if there is a cleaner way to do this.

Here is an example code:

pro testWidgetRescale_event, event
widget_control, event.top, get_uvalue=struct
newBaseGeometry = widget_info((*struct).wb, /geometry)
baseDiff = [newBaseGeometry.xsize-(*struct).baseGeometry.xsize, newBaseGeometry.ysize-(*struct).baseGeometry.ysize]
widget_control, (*struct).wd, xsize = (*struct).drawGeometry.xsize+baseDiff[0], ysize = (*struct).drawGeometry.ysize+baseDiff[1]
(*struct).drawGeometry = widget_info((*struct).wd, /geometry)
(*struct).BaseGeometry = newBaseGeometry
end

pro testWidgetRescale
wb = widget_base(/tlb_size_events, /tlb_move_events, column=3, /BASE_ALIGN_CENTER, /ALIGN_CENTER)
void = widget_label(wb, value=' some stuff here', /align_center)
row2 = widget_base(wb, /column)
void = widget_label(row2, value=' some stuff here')
wd = widget_draw(row2, xsize=500,ysize=500)
void = widget_label(row2, value=' some stuff here')
void = widget_label(wb, value=' some stuff here', /align_center)
widget_control, wb, /realize
baseGeometry = widget_info(wb, /geometry)
drawGeometry = widget_info(wd, /geometry)
widget_control, wb, set_uvalue=ptr_new({wb:wb, wd:wd, baseGeometry:baseGeometry, drawGeometry:drawGeometry})
xmanager, 'testWidgetRescale', wb, event_handler = 'testWidgetRescale_event' , /no_block
end


thanks,
Helder
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: IDL Way to have a single row/collum act on all rows/collums in an array
Next Topic: Islands disappear with cgmap_GSHHS and GSHHS 2.3.0

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 15:10:39 PDT 2025

Total time taken to generate the page: 0.00464 seconds