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