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

Home » Public Forums » archive » Re: widget positioning
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: widget positioning [message #18377] Tue, 04 January 2000 00:00
Hans-Jürgen Hahne is currently offline  Hans-Jürgen Hahne
Messages: 5
Registered: December 1999
Junior Member
Patty Howell wrote:

> Hi All,
> Dumb widget question #547:
> How do you position widgets on the screen? Every time I run the
> procedure, the baseId appears in a different location, sometimes covered
> up by another window.
> Thanks!
> Patty

hello Patty,
my code looks like this:

WID_BASE_0 = Widget_Base( GROUP_LEADER=wGroup, UNAME='WID_BASE_0' $
,YOFFSET=500 ,SCR_XSIZE=453 ,SCR_YSIZE=246 ,TITLE='IDL-Wu' $
,SPACE=3 ,XPAD=3 ,YPAD=3, TLB_FRAME_ATTR=11)

you need the XOFFSET, YOFFSET relatively to the monitor screen.

I would like to know the window-number of that widget-window. Who knows it?

Hans.
Re: widget positioning [message #18390 is a reply to message #18377] Thu, 30 December 1999 00:00 Go to previous message
Liam Gumley is currently offline  Liam Gumley
Messages: 473
Registered: November 1994
Senior Member
Paragraph wrapping drives me crazy....

Try this instead:

;---cut here---
PRO WIDGET_CENTER, ID, PARENT=PARENT

;+
; NAME:
; WIDGET_CENTER
;
; PURPOSE:
; Center a widget on the screen,
; or over an existing widget.
;
; CATEGORY:
; Widgets.
;
; CALLING SEQUENCE:
; WIDGET_CENTER, ID
;
; INPUTS:
; ID ID of the widget to be centered.
;
; KEYWORD PARAMETERS:
; PARENT ID of an existing widget over which
; the widget should be centered.
;
; OUTPUTS:
; None.
;
; EXAMPLE:
;base = widget_base()
;label = widget_label(base, value='Hello world')
;widget_center, base
;widget_control, base, /realize
;
; MODIFICATION HISTORY:
; Written by: Liam.Gumley@ssec.wisc.edu
; $Id: widget_center.pro,v 1.2 1999/11/15 22:58:27 gumley Exp $
;-

;- Check arguments

if n_elements(id) eq 0 then $
message, 'Argument ID is undefined'
if widget_info(id, /valid_id) eq 0 then $
message, 'Argument ID is invalid'
if n_elements(parent) eq 0 then parent = 0L

;- Get widget size

geometry = widget_info(id, /geometry)
xsize = geometry.scr_xsize + (2 * geometry.margin)
ysize = geometry.scr_ysize + (2 * geometry.margin)

;- Get center position of parent or screen

if widget_info(parent, /valid_id) then begin
parent_geometry = widget_info(parent, /geometry)
parent_xsize = parent_geometry.scr_xsize + $
(2 * parent_geometry.margin)
parent_ysize = parent_geometry.scr_ysize + $
(2 * parent_geometry.margin)
xcenter = parent_geometry.xoffset + parent_xsize / 2
ycenter = parent_geometry.yoffset + parent_ysize / 2
endif else begin
device, get_screen_size=screen_size
xcenter = screen_size[0] / 2
ycenter = screen_size[1] / 2
endelse

;- Compute offsets

xoffset = xcenter - (xsize / 2)
yoffset = ycenter - (ysize / 2)

;- Center the widget

widget_control, id, xoffset=xoffset, yoffset=yoffset

END
;---cut here---

Cheers,
Liam.

--
Liam E. Gumley
Space Science and Engineering Center, UW-Madison
http://cimss.ssec.wisc.edu/~gumley
Re: widget positioning [message #18391 is a reply to message #18390] Thu, 30 December 1999 00:00 Go to previous message
Liam Gumley is currently offline  Liam Gumley
Messages: 473
Registered: November 1994
Senior Member
Patty Howell wrote:
> How do you position widgets on the screen? Every time I run the
> procedure, the baseId appears in a different location, sometimes covered
> up by another window.

Try this:

;---cut here---
PRO WIDGET_CENTER, ID, PARENT=PARENT

;+
; NAME:
; WIDGET_CENTER
;
; PURPOSE:
; Center an widget on the screen, or over an existing widget.
;
; CATEGORY:
; Widgets.
;
; CALLING SEQUENCE:
; WIDGET_CENTER, ID
;
; INPUTS:
; ID ID of the widget to be centered.
;
; KEYWORD PARAMETERS:
; PARENT ID of an existing widget over which the input widget
; should be centered.
;
; OUTPUTS:
; None.
;
; EXAMPLE:
;base = widget_base()
;label = widget_label(base, value='Hello world')
;widget_center, base
;widget_control, base, /realize
;
; MODIFICATION HISTORY:
; Written by: Liam.Gumley@ssec.wisc.edu
; $Id: widget_center.pro,v 1.2 1999/11/15 22:58:27 gumley Exp $
;-

;- Check arguments

if n_elements(id) eq 0 then message, 'Argument ID is undefined'
if widget_info(id, /valid_id) eq 0 then message, 'Argument ID is
invalid'
if n_elements(parent) eq 0 then parent = 0L

;- Get widget size

geometry = widget_info(id, /geometry)
xsize = geometry.scr_xsize + (2 * geometry.margin)
ysize = geometry.scr_ysize + (2 * geometry.margin)

;- Get center position of parent or screen

if widget_info(parent, /valid_id) then begin
parent_geometry = widget_info(parent, /geometry)
parent_xsize = parent_geometry.scr_xsize + (2 *
parent_geometry.margin)
parent_ysize = parent_geometry.scr_ysize + (2 *
parent_geometry.margin)
xcenter = parent_geometry.xoffset + parent_xsize / 2
ycenter = parent_geometry.yoffset + parent_ysize / 2
endif else begin
device, get_screen_size=screen_size
xcenter = screen_size[0] / 2
ycenter = screen_size[1] / 2
endelse

;- Compute offsets

xoffset = xcenter - (xsize / 2)
yoffset = ycenter - (ysize / 2)

;- Center the widget

widget_control, id, xoffset=xoffset, yoffset=yoffset

END
;---cut here---

Cheers,
Liam.

--
Liam E. Gumley
Space Science and Engineering Center, UW-Madison
http://cimss.ssec.wisc.edu/~gumley
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Surface Rendering from Stereo-pairs
Next Topic: Kudos to RSI

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

Current Time: Wed Oct 08 15:17:54 PDT 2025

Total time taken to generate the page: 0.17113 seconds