Viewing contents of file '../idllib/contrib/mallozzi/place_menu.pro'
; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
;+
; NAME:
; PLACE_MENU
;
; PURPOSE:
; Place a widget at a specified location. Note: placement is only a
; hint to the windowing toolkit, and might be ignored by the window
; manager.
;
; CATEGORY:
; WIDGETS
;
; CALLING SEQUENCE:
; PLACE_MENU, BASE_ID [, /CENTER, XPOS = , YPOS = ]
;
; INPUTS:
; BASE_ID: Id of the widget to place.
;
; KEYWORD PARAMETERS:
; CENTER: Place the widget at the center of the current screen.
; XPOS, YPOS: If specified, place the upper left corner of the
; widget at XPOS, YPOS. Overrides keyword CENTER.
;
; OUTPUTS:
; NONE
;
; COMMON BLOCKS:
; NONE
;
; SIDE EFFECTS:
; Maps the widget BASE_ID to the screen.
;
; RESTRICTIONS:
; When the widget base is created, it should use the keyword MAP = 0
; so that when PLACE_MENU is called, the widget does not flash on the
; screen.
;
; PROCEDURE:
; Procedure call.
;
; EXAMPLES:
; BASE = WIDGET_BASE(MAP = 0)
; .
; .
; .
; WIDGET_CONTROL, BASE, /REALIZE
; PLACE_MENU, BASE, /CENTER
;
; MODIFICATION HISTORY:
; RSM: Changed to use the GET_SCREEN_SIZE function.
; Written, Robert.Mallozzi@msfc.nasa.gov, Oct 1995.
;
;-
PRO PLACE_MENU, BASE_ID, $
CENTER = CENTER, $
XPOS = XPOS, YPOS = YPOS, $
HELP = HELP
IF (N_ELEMENTS(HELP) NE 0) THEN BEGIN
PRINT
PRINT, 'PLACE_MENU: Place a widget at a specified location.'
PRINT
PRINT, 'Calling sequence:'
PRINT, ' PLACE_MENU, BASE_ID [, /CENTER, XPOS = , YPOS = ]'
PRINT
PRINT, 'When the widget base is created, use the keyword MAP = 0'
PRINT, 'so that when PLACE_MENU is called, the widget does not flash'
PRINT, 'on the screen:'
PRINT, ' BASE = WIDGET_BASE(MAP = 0)'
PRINT, ' .'
PRINT, ' .'
PRINT, ' .'
PRINT, ' WIDGET_CONTROL, BASE, /REALIZE'
PRINT, ' PLACE_MENU, BASE, /CENTER'
PRINT
RETURN
ENDIF
CURRENT_SCREEN = GET_SCREEN_SIZE()
WIDGET_CONTROL, BASE_ID, TLB_GET_SIZE = MENU_SIZE
IF (N_ELEMENTS(CENTER) NE 0) THEN BEGIN
MENU_CENTER = [(CURRENT_SCREEN(0) / 2.0) - (MENU_SIZE(0) / 2.0), $
(CURRENT_SCREEN(1) / 2.0) - (MENU_SIZE(1) / 2.0)]
WIDGET_CONTROL, BASE_ID, $
TLB_SET_XOFFSET = MENU_CENTER(0), $
TLB_SET_YOFFSET = MENU_CENTER(1)
ENDIF
CASE 1 OF
(N_ELEMENTS(XPOS) NE 0) AND (N_ELEMENTS(XPOS) NE 0): $
WIDGET_CONTROL, BASE_ID, TLB_SET_XOFFSET = XPOS, TLB_SET_YOFFSET = YPOS
(N_ELEMENTS(XPOS) NE 0) AND (N_ELEMENTS(XPOS) EQ 0): $
WIDGET_CONTROL, BASE_ID, TLB_SET_XOFFSET = XPOS
(N_ELEMENTS(XPOS) EQ 0) AND (N_ELEMENTS(XPOS) NE 0): $
WIDGET_CONTROL, BASE_ID, TLB_SET_YOFFSET = YPOS
(N_ELEMENTS(XPOS) EQ 0) AND (N_ELEMENTS(XPOS) EQ 0):
ELSE:
ENDCASE
WIDGET_CONTROL, BASE_ID, MAP = 1
END