>  Docs Center  >  Libraries  >  Motley  >  MGH_WINDOW__DEFINE
Libraries

MGH_WINDOW__DEFINE

MGH_WINDOW__DEFINE

Class


  MGH_Window

Purpose


  This class encapsulates a widget application containing an object
  graphics window. The window displays a single picture (ie a
  IDLgrView, IDLgrViewGroup or IDLgrScene).

Category


  Widgets, Object Graphics.
  POSITIONAL PARAMETERS FOR INIT METHOD:
  picture
    A synonym for the GRAPHICS_TREE property.

Properties


  The following properties (ie keywords to the Init, GetProperty &
  SetProperty methods) are supported:
    BITMAP_RESOLUTION (Init, Get, Set)
      Default resolution for off-screen bitmaps, used by methods
      WritePictureToImageFile, WritePictureToClipboard and
      WritePictureToClipboard (non-vector formats). By default, this
      property is set to a non-finite value, which means that the
      resolution of the IDLgrWindow object is used.
    DIMENSIONS (Init, Get, Set)
      A 2-element array specifying the width & height of the
      graphics window. If the picture and the window are both
      "fittable" (see FITTABLE keyword) then UNITS & DIMENSIONS are
      taken from the picture.
    CHANGEABLE (Init, Get)
      This property determines whether the GRAPHICS_TREE property
      can be changed once it has been first set. It is 1 (on) by
      default but should be set to 0 if the MGH_Window is to be used
      in a composite application which needs to ensure that the
      GRAPHICS_TREE is not changed behind its back.
    EXPAND_STATUS_BAR (Init, Get, Set)
      This property determines whether the the "status bar" beneath
      the draw widget is expanded or collapsed. Default is 1
      (expanded).
    FITTABLE (Init, Get)
      This property determines whether the window will try to resize
      itself to fit the GRAPHICS_TREE picture. Default is 1 (try to
      fit) by default. For a fit to occur, the picture must also be
      fittable, as determined by the MGH_PICTURE_IS_FITTABLE
      function.
    GRAPHICS_TREE (Init, Get, Set)
      This property is passed to the embedded draw widget. Setting
      the GRAPHICS_TREE triggers other changes including resetting
      the window title and creating an "undo" stack. The
      CHANGEABLE property determines whether the GRAPHICS_TREE
      property can be changed once it has been first set.
    MOUSE_ACTION (Init, Get, Set)
      A 3-element string array specifying the mouse handler object
      to be associated with each mouse button. Mouse press, release
      & motion events that originate from the draw widget are sent
      to "mouse handler" objects, one handler per mouse
      button. These handlers are created and destroyed by the
      SetUpMouseHandler method, which is called by SetProperty. Each
      time MOUSE_ACTION is changed this method destroys all existing
      mouse handlers then creates a new set according to rules
      hard-wired into the code.
    MOUSE_LIST (Init, Get)
      This property is a string array that defines the set of values
      available from the "mouse action" droplists on the status
      bar. Note that this property affects the user interface
      only. It does not affect the range of permissible values for
      the elements of MOUSE_ACTION--these values are determined
      implicitly by the code in the SetUpMouseHandler method.
    RESIZEABLE (Init, Get, Set)
      This property detrmines whether the window or picture
      dimensions are changed in response to base resize events. The
      resizing of the window interacts with the automatic fitting of
      the window to the picture, in a way that depends on whether
      the picture is fittable (i.e. function MGH_PICTURE_IS_FITTABLE
      returns 1) and whether the window is fittable (FITTABLE
      property is 1).
    RESIZE_PRESERVE (Init, Get, Set)
      This property determines whether the aspect ratio of the
      window or picture is preserved when the window or picture
      is resized. It is ignored if RESIZEABLE is 0.
    RESOLUTION (Get)
      Taken from the graphics window.
    TITLE (Get)
      The title, which appears in the base widget's title bar, is
      calculated from the picture name.
    TOOLTIP (Get)
      The tooltip which appears when the cursor hovers over the draw
      widget, is calculated from the picture name.
    UNITS (Init, Get, Set)
      Units for the DIMENSIONS. Default is 2 (cm).
    VECTOR_RESOLUTION (Init, Get, Set)
      Default resolution for off-screen vector buffers, used by
      methods WritePictureToClipboard, WritePictureToClipboard
      (vector formats) and WritePictureToVRML. By default, this
      property is set to a non-finite value, which means that the
      resolution of the IDLgrWindow object is used.
    VISIBLE (Init, Get, Set)
      Set this property to 1 to make the window visible, 0 to make
      it invisible.
  ... and many more.
  KNOWN PROBLEMS:
  - On Windows, if the RESIZEABLE property is set, then flashing
    occurs when a top-level MGH_Window object is created because the
    Draw method is called twice. The first draw occurs when the
    object is realised (which causes the NotifyRealize method to be
    called, which calls Update, which calls Draw.) The second draw
    occurs when the OS sends a resize event to the newly created
    base (which calls Resize, which calls Draw) as mentioned
    somewhere in the IDL documentation. I have considered various
    ways to suppress this, but decided it is simpler to set the
    default value of RESIZEABLE to 0.

To Do


  Have repertoire of mouse handlers (MOUSE_LIST) depend on the type
  of graphics tree? Query the graphics tree for the mouse actions it
  supports?? (No, probably not a good idea.)
###########################################################################
  This software is provided subject to the following conditions:
  1. NIWA makes no representations or warranties regarding the
    accuracy of the software, the use to which the software may
    be put or the results to be obtained from the use of the
    software. Accordingly NIWA accepts no liability for any loss
    or damage (whether direct of indirect) incurred by any person
    through the use of or reliance on the software.
  2. NIWA is to be acknowledged as the original author of the
    software where the software is used or presented in any form.
###########################################################################

Modification History


  Mark Hadfield, 2001-06:
    Written.
  Mark Hadfield, 2001-10:
    Added support for a context menu associated with the draw
    widget.
  Mark Hadfield, 2002-01:
    Changed default RETAIN setting from 2 to 1. This has no effect
    on Windows but leads to a dramatic improvement in speed and
    appearance on Linux.
  Mark Hadfield, 2002-10:
    Updated for IDL 5.6. Added tool tips and check-box menus.
  Mark Hadfield, 2002-12:
    Further changes to default RETAIN & EXPOSE_EVENTS settings on
    Unix, for better results on Rangi, a DEC Alpha machine.
  Mark Hadfield, 2004-05:
    - Added code to export graphics using new formats & facilities
      in IDL 6.1: EPS with CMYK colour space and JPEG 2000.
    - Limited the draw widget's tooltip length to work around IDL
      bug.
  Mark Hadfield, 2004-07:
    - Moved code that sets window title from the SetupGraphicsTree
      method to the Update method, to allow for the possibility that
      the graph name has been changed by the user. Remainder of
  Mark Hadfield, 2005-08:
    - Changed resolution for "hi-res" PNGs from 0.005 to 0.01. The
      former was, as I recall, intended as a very low value that would
      not normally be reached because of IDL's limits on buffer sizes.
      However these limits have been relaxed (in version 6.2?) meaning
      it can now generate really big images.
  Mark Hadfield, 2008-09:
    - Resolution for "hi-res" PNGs is now 0.0075.



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
   Contact Us