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

Home » Public Forums » archive » Re: Widget width in vertical base
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Widget width in vertical base [message #16995] Wed, 01 September 1999 00:00 Go to previous message
Jonathan Joseph is currently offline  Jonathan Joseph
Messages: 69
Registered: September 1998
Member
David Fanning wrote:

>
> I should think the work-around is to resize them
> at the same time you resize the draw widget. :-)
>

Hi David, it all sounds good, but in practice, fails
to work. At least on my platform.

Here is a sample program (just a slightly modified
version of an example program showing how resize events
on a tlb with a menubar give the wrong size - well, give
the size including the menubar (I don't think it's wrong))

Anyway, in this program, when you make the window smaller,
all looks OK, when you make the window larger, the horizontal
size of the scroll bar never exceeds its initial value.
If you get the geometry (using widget_info) it will tell
you that the slider is the correct size. In fact, if you leave
out all size stuff on the slider, widget_info will tell
you that the slider has resized itself to be the same size as the
draw widget - but visually, that's not the case - it only ever
gets as large as it's initial setting.


NOTE: after playing with it, I think I may have just
found a workaround, and that is to initially set the
size of the slider to a very large value (larger than
the width of the screen) and then, before realizing the
widgets, use widget_control, to set the width of the slider
to its desired value. Afterwards, setting the size to
anything smaller than the initial (very large) value works
OK

-------------------------------------------------------

pro slider_event, event
end

PRO RESIZE_EVENT, EVENT

;;- Get info structure

widget_control, event.top, get_uvalue=info

;;- Get current tlb size

widget_control, event.top, tlb_get_size=result
tlb_xsize = result[0]
tlb_ysize = result[1]

;;- Compute difference between current and old tlb size

xdiff = tlb_xsize - info.tlb_xsize
ydiff = tlb_ysize - info.tlb_ysize

;;- Set new tlb size

info.tlb_xsize = tlb_xsize
info.tlb_ysize = tlb_ysize

;;- Set new draw widget size

info.draw_xsize = info.draw_xsize + xdiff
info.draw_ysize = info.draw_ysize + ydiff

;;- turn off updates to resize widgets
widget_control, info.drawid, update=0

;;- Resize the slider
widget_control, info.slider, xsize=info.draw_xsize

;;- Resize the draw widget

widget_control, info.drawid, $
draw_xsize=info.draw_xsize, draw_ysize=info.draw_ysize

;;- turn on updates after widgets are resized
widget_control, info.drawid, update=1

;;- Display a plot

plot, indgen(10)

END

;;---------------------------------------------------------- ------
PRO slider

;;- Check keywords

;;- Set initial size of draw widget

draw_xsize = 400
draw_ysize = 400

;;- Create base widget with menubar and draw widget

tlb = widget_base( title='Slider Resize Example', $
tlb_size_events=1, mbar=menubase, /column )

slider = widget_slider(tlb, xsize=draw_xsize,
event_pro='slider_event')

drawid = widget_draw( tlb, xsize=draw_xsize, ysize=draw_ysize )

widget_control, tlb, /realize

;;- Display a plot

plot, indgen(10)

;;- Get size of top level base

widget_control, tlb, tlb_get_size=result
tlb_xsize = result[0]
tlb_ysize = result[1]

;;- Create and store info structure

info = { drawid : drawid, $
slider : slider, $
draw_xsize : draw_xsize, $
draw_ysize : draw_ysize, $
tlb_xsize : tlb_xsize, $
tlb_ysize : tlb_ysize }

widget_control, tlb, set_uvalue = info

;;- Manage widget events

xmanager, 'resize', tlb

END
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: emacs idl-shell
Next Topic: Re: objarr

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

Current Time: Wed Oct 08 14:52:45 PDT 2025

Total time taken to generate the page: 0.00406 seconds