This page was created by the IDL library routine
mk_html_help
. For more information on
this routine, refer to the IDL Online Help Navigator
or type:
? mk_html_help
at the IDL command line prompt.
Last modified: Sun Oct 26 20:43:12 2008.
NAME: ANNOTATEINTERACTION::ALIGNGUI, event PURPOSE: This method builds a modal dialog for obtaining user input for how to align selected items. SYNTAX: theObject -> AlignGUI, event ARGUMENTS: event: The event structure. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::ALIGN_EVENTS PURPOSE: This event handling method for the ALIGNGUI widget creation method. SYNTAX: theObject -> Align_Events, event ARGUMENTS: event: The event structure. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::BUILDMODEMENU PURPOSE: This method builds a mode-select context menu. SYNTAX: theObject -> BuildModeMenu ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::BUILDMULTISELECTMENU PURPOSE: This method builds a multi-select context menu. SYNTAX: theObject -> BuildMultiSelectMenu ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::CLEANUP PURPOSE: This is the ANNOTATEINTERACTION object class destructor method. SYNTAX: Called automatically when the object is destroyed. ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::CONTROLPANEL PURPOSE: This method creates a control panel for the object SYNTAX: imageObject -> ControlPanel, baseObj ARGUMENTS: baseObject: The object reference of a base widget for this control to be added to. If not supplied, the control panel will be a self contained window. KEYWORDS: _EXTRA: Any keywords appropriate for the "CONTROLPANEL::INIT" method.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::DISTRIBUTEGUI, event PURPOSE: This method builds a modal dialog for obtaining user input for how to align selected items. SYNTAX: theObject -> DistributeGUI, event ARGUMENTS: event: The event structure. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::DISTRIBUTE_EVENTS PURPOSE: This event handling method for the DISTRIBUTEGUI widget creation method. SYNTAX: theObject -> Distribute_Events, event ARGUMENTS: event: The event structure. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::DRAW PURPOSE: This method draws the interaction in the display window. SYNTAX: theObject -> Draw ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::EVENT_HANDLER PURPOSE: This method is the event handler for the ANNOTATEINTERACTION object. SYNTAX: This method is called automatically by the event handling mechanism. ARGUMENTS: event: The event structure as described in the IDL help files, except that the ID, TOP and HANDLER tags will be object references. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::GETPROPERTY PURPOSE: This method allows the user to obtain ANNOTATEINTERACTION properties. Be sure you ALWAYS call the superclass GETPROPERTY method if you have extra keywords! SYNTAX: theObject -> GetProperty ... ARGUMENTS: None. KEYWORDS: BACKGROUND: Set this keyword to draw a background for the text. BG_COLOR: The name of the background color. By default, "white". COLOR: Set this keyword to the name of a color for the text. By default, "black". DEF_ARROW_OBJECT: A default arrow object. New objects are created with this object's properties. DEF_BOX_OBJECT: A default box object. New objects are created with this object's properties. DEF_ELLIPSE_OBJECT: A default ellipse object. New objects are created with this object's properties. DEF_MEASURE_OBJECT: A default tapemeasure object. New objects are created with this object's properties. DEF_POLYGON_OBJECT: A default polygon object. New objects are created with this object's properties. DEF_TEXT_OBJECT: A default text object. New objects are created with this object's properties. DEFAULT_OBJECT: The current default object. LAYER: The current annotation CATLAYER object. LINESTYLE: The default linestyle for objects created with this object. By default, 0. MODE: The current object mode. THICKNESS: The default thickness of lines created by annotation objects. By default, 2. PIXMAPWIDGET: The object reference to any pixmap widget that is created. SELECTEDOBJECTS: Any objects currently selected. _REF_EXTRA: Any keywords appropriate for the superclass GetProperty method.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::INIT PURPOSE: This is the ANNOTATEINTERACTION object class initialization method. SYNTAX: Called automatically when the object is created. ARGUMENTS: drawObject: The draw widget object that you will be taking over events from. KEYWORDS: BACKGROUND: Set this keyword to draw a background for the text. BG_COLOR: The name of the background color. By default, "black". COLOR: Set this keyword to the name of a color for the text. By default, "white". COORD_OBJECT: A coordinate object (CATCOORD) for establishing a coordinate system for the interaction objects. Currently, only the TAPEMEASURE uses a coordinate system. All other coordinate systems are normalized. DEF_ANGLE_OBJECT: An optional default ANGLETOOL object. New objects are created with this object's properties. DEF_ARROW_OBJECT: An optional default ARROW object. New objects are created with this object's properties. DEF_BOX_OBJECT: An optional default BOX object. New objects are created with this object's properties. DEF_ELLIPSE_OBJECT: An optional default ELLIPSE object. New objects are created with this object's properties. DEF_MEASURE_OBJECT: An optional default TAPEMEASURE object. New objects are created with this object's properties. DEF_POLYGON_OBJECT: An optional default POLYGON object. New objects are created with this object's properties. DEF_TEXT_OBJECT: An optional default TEXTLINE object. New objects are created with this object's properties. DEFAULT_OBJECT: Set this keyword to an object reference to a SELECTABLEOBJECT object. By default, is set to a DEF_TEXT_OBJECT. This object will be deleted when the ANNOTATEINTERACTION object is destroyed. LAYER: An optional CATLAYER object for holding the annotation objects. If a layer object is not provided, the annotations are placed directly in the drawObject container. Otherwise, the annotations are placed in the CATLAYER object, and the CATLAYER object is placed in the drawObject. LINESTYLE: The default linestyle for objects created with this object. By default, 0. OUTPUT_FILENAME: The base name of the output filename used in SAVE AS operations. By default, "annotation". THICKNESS: The default thickness of lines created by annotation objects. By default, 2. STATUSBAR: A reference to a statusbar object. Messages can be sent from the interaction to the statusbar object, if supplied. The statusbar object is NOT destroyed by the interaction when the interaction is destroyed. _EXTRA: Any keywords appropriate for the superclass INIT method or DEFAULT_OBJECT INIT method.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::RESTOREDISPLAY PURPOSE: This method restores the draw widget to its former state. SYNTAX: theObject -> RestoreDisplay ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::SETDISPLAY PURPOSE: This method takes over event handling from the draw widget and sets up the object so that everything can be restored to the way it was when the interaction is finished. SYNTAX: theObject -> SetDisplay ARGUMENTS: drawWidget: The draw widget used in the interaction. (Optional argument.) KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION::SETPROPERTY PURPOSE: This method allows the user to set the ANNOTATEINTERACTION object's properties. Be sure you ALWAYS call the superclass SETPROPERTY method if you have extra keywords! SYNTAX: theObject -> SetProperty ... ARGUMENTS: None. KEYWORDS: The following keywords set default properties for new objects created in this interaction. BACKGROUND: Set this keyword to draw a background for the text. BG_COLOR: The name of the background color. By default, "white". COLOR: Set this keyword to the name of a color for the text. By default, "black". DEF_ANGLE_OBJECT: A default ANGLETOOL object. New objects are created with this object's properties. DEF_ARROW_OBJECT: A default arrow object. New objects are created with this object's properties. DEF_BOX_OBJECT: A default box object. New objects are created with this object's properties. DEF_ELLIPSE_OBJECT: A default ellipse object. New objects are created with this object's properties. DEF_MEASURE_OBJECT: A default tapemeasure object. New objects are created with this object's properties. DEF_POLYGON_OBJECT: A default polygon object. New objects are created with this object's properties. DEF_TEXT_OBJECT: A default text object. New objects are created with this object's properties. DEFAULT_OBJECT: Set this keyword to an object reference to a SELECTABLEOBJECT object. By default, is set to a DEF_TEXT_OBJECT. LAYER: A CATLAYER object for holding the annotation objects. The old annotation layer and everything it contains will be destroyed. LINESTYLE: The default linestyle for objects created with this object. By default, 0. MODE: The current object mode. THICKNESS: The default thickness of lines created by annotation objects. By default, 2. _EXTRA: Any keywords appropriate for the superclass SetProperty method.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: ANNOTATEINTERACTION__DEFINE PURPOSE: The purpose of this routine is to provide an interaction for creating and manipulating SELECTABLEOBJECT objects. An interaction takes over draw widget event handling for the duration of the interaction and then restores it to its normal funcitoning. We spent a LOT of time implementing this, and while it works, it is extremely complicated (bordering on iTools complicated!). I am not happy with the complexity, and I am not sure this is what is needed anyway. I think interaction functionality is too user-specific to be handled like this. In practice, I seldom use interactions, but code the functionality I want for a particular application in the event handlers. That said, this particular interaction is amazingly useful for annotating graphics windows. AUTHORS: FANNING SOFTWARE CONSULTING BURRIDGE COMPUTING 1645 Sheely Drive 18 The Green South Fort Collins Warborough, Oxon CO 80526 USA OX10 7DN, ENGLAND Phone: 970-221-0438 Phone: +44 (0)1865 858279 E-mail: davidf@dfanning.com E-mail: davidb@burridgecomputing.co.uk CATEGORY: Objects. SYNTAX: theObject = Obj_New("ANNOTATEINTERACTION") SUPERCLASSES: INTERACTION CATCONTAINER IDLITCOMPONENT IDL_CONTAINER CLASS_STRUCTURE: class = { ANNOTATEINTERACTION, $ align_gui_tlb: Obj_New(), $ ; The align GUI top-level base object. align_tb: 0L, $ ; The current align top/bottom value. align_lr: 0L, $ ; The current align left/right value. distribute_gui_tlb: Obj_New(), $ ; The distrubute GUI top-level base object. distribute_h: 0L, $ ; The current distribute horizontal value. distribute_v: 0L, $ ; The current distribute vertical value. distribute_gap_h: Obj_New(), $ ; The distribute horizonal gap field object. distribute_gap_v: Obj_New(), $ ; The distribute vertical gap field object. selectedObjects: Ptr_New(), $ ; The currently selected objects. sx: 0L, $ ; The static X location. sy: 0L, $ ; The static Y location. defaultObject: Obj_New(), $ ; The default (or current) selectable object. defTextObject: Obj_New(), $ ; The default TEXTLINE object. defAngleObject: Obj_New(), $ ; The default ANGLETOOL object. defArrowObject: Obj_New(), $ ; The default ARROW object. defBoxObject: Obj_New(), $ ; The default BOX object. defEllipseObject: Obj_New(), $ ; The default ELLIPSE object. defPolygonObject: Obj_New(), $ ; The default POLYGON object. defMeasureObject: Obj_New(), $ ; The default MEASUREMENT object. layerObject: Obj_New(), $ ; A layer object for holding selectable annotation objects. angleID: Obj_New(), $ ; The ANGLE MEASURMENT button on the ControlPanel. annotateOn: Obj_New(), $ ; The ANNOTATE_LAYER_ON button on the ControlPanel. annotateOff: Obj_New(), $ ; The ANNOTATE_LAYER_OFF button on the ControlPanel. arrowID: Obj_New(), $ ; The ARROW button on ControlPanel. boxID: Obj_New(), $ ; The BOX button on ControlPanel. ellipseID: Obj_New(), $ ; The ELLIPSE button on the ControlPanel. globalID: Obj_New(), $ ; The GLOBAL_PROPERTY button on ControlPanel. measureID: Obj_New(), $ ; The MEASUREMENT button on the ControlPanel. polygonID: Obj_New(), $ ; The POLYGON button on the ControlPanel. saveID: Obj_New(), $ ; The SAVE_WINDOW button on ControlPanel. selectID: Obj_New(), $ ; The SELECT button on ControlPanel. textID: Obj_New(), $ ; The TEXT button on ControlPanel. INHERITS INTERACTION $ } MESSAGES: None. NOTES: The way the interaction works is by copying the contents of the draw widget into a pixmap, so they can be redrawn appropriately. This is only successful if the contents of the draw widget can be drawn in the pixmap. Images, for example, might have their WID keyword set and be attached to a draw widget already. (This is especially the case if they are responding to color table events of some kind.) These kinds of images are not appropriate for annotation interactions, because they can't be drawn in the pixmap. MODIFICATION_HISTORY: Written by: David W. Fanning, 9 August 2004.
(See C:\IDL\Catalyst\source\interactions\annotateinteraction__define.pro)
NAME: INTERACTION::ADD PURPOSE: This method is where you can screen what kinds of objects are added to this object's hierarchy. The method is not always needed. If you do create it, be CERTAIN to call the superclass ADD method or your program will not work correctly. SYNTAX: theObject -> Add, object ARGUMENTS: object: The object to be added to this one. KEYWORDS: _EXTRA: Any keywords appropriate for the superclass Add method.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::CLEANUP PURPOSE: This is the INTERACTION object class destructor method. SYNTAX: Called automatically when the object is destroyed. ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::CLEARABANDONEDOBJECTS PURPOSE: Many of the interaction objects create an object and add it to the draw widget. For example, the RUBBERBANDBOX interaction adds a BOX object to the draw widget. If the ASK_ON_UP keyword is set, this object may be abandoned by the user not selecting either the Accept or Cancel button. Since I cannot anticipate when this will happen, this method is about recovering from those unfortunate times when I cannot tell what has happened previously. I might callt his method when the user switches interactions, for example. The method will simple look for an object with the CLASSNAME prepended to the word "SELECTABLE_". If it finds it, it will destroy it. SYNTAX: theObject -> ClearAbandonedObjects ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::DRAW PURPOSE: This method draws the "interaction" in the draw widget. SYNTAX: theObject -> Draw ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::EVENT_HANDLER PURPOSE: This method is the event handler for the INTERACTION object. It will be used to respond to event generated in the draw widget. SYNTAX: This method is called automatically by the event handling mechanism. ARGUMENTS: event: The event structure as described in the IDL help files, except that the ID, TOP and HANDLER tags will be object references. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::GETPROPERTY PURPOSE: This method allows the user to obtain INTERACTION properties. Be sure you ALWAYS call the superclass GETPROPERTY method if you have extra keywords! SYNTAX: theObject -> GetProperty ... ARGUMENTS: None. KEYWORDS: COLOR: The name of the color of the region of interest. DRAWIMAGE: Set this keyword to a named variable to receive a copy of the draw widget's current contents as an image. May by undefined if SetDisplay hasn't been called, or if RestoreDisplay has been called. DRAWWIDGET: The draw widget object for whom you are taking over events. PIXMAPIMAGE: Set this keyword to a named variable to receive a copy of the draw widget's original contents (at the moment SetDisplay was called) as an image. May by undefined if SetDisplay hasn't been called, or if RestoreDisplay has been called. MODE: The current "mode" of the interaction. SELECTEDOBJECT: The currenly selected object. STATUSBAR: A reference to the current statusbar object. XPT: The X location of the click interaction. YPT: The Y location of the click interaction. _REF_EXTRA: Any keywords appropriate for the superclass GetProperty method.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::INIT PURPOSE: This is the INTERACTION object class initialization method SYNTAX: Called automatically when the object is created. ARGUMENTS: drawObject: The draw widget object that you will be taking over events from. KEYWORDS: ASK_ON_UP: Set this keyword if you wish the user to respond to a ACCEPT/CANCEL dialog when the box is finished drawing. If there is no dialog, it is as if an ACCEPT were recorded and a RUBBERBANDBOX_EVENT is sent to the appropriate event handler method. COLOR: The name of the color of the region of interest. By default, "Yellow". NOPICRESTORE: Normally, when the display is restored, the contents of the draw widget are restored to the state they were in before the interaction took place. However, if this keyword is set, the contents of the display window are left as they are at the end of the interaction. MODE: The current "mode" of the interaction. By default, "DRAW". SELECTEDOBJECT: The currenly selected object. Normally, this object will be moved or dragged if the mode is MOVE or DRAG, etc. START_NOW: If this keyword is set, the SetDisplay method is called from within the INIT method. If the draw widget is unrealized at the time of the call, the interaction object will register for a DRAWWIDGETREALIZED message. STATUSBAR: A reference to a statusbar object. Messages can be sent from the interaction to the statusbar object, if supplied. The statusbar object is NOT destroyed by the interaction when the interaction is destroyed. _EXTRA: Any keywords appropriate for the superclass INIT method.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: Interaction::MESSAGEHANDLER PURPOSE: This method responds to "messages" sent from other objects. It is called automatically by other objects. To receive messages, it is necessary to "register" with the messaging object. SYNTAX: None. Called by other objects. ARGUMENTS: TITLE: The message title. This is the "name" of the message indicated when the object registered for messages with the messaging object. KEYWORDS: DATA: Information from the SENDER that may be relevant in processing the message. Typically, an anonymous structure variable, although it could be anything at all. SENDER: An output keyword. This is the object reference of the object that is sending the message.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::NEEDDIALOG PURPOSE: This method is a utility routine to simply determine if a dialog is required on not. If not, an event is generated and sent to the user of the interaction. SYNTAX: theObject -> NeedDialog, event ARGUMENTS: event: The event structure currently in effect. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::REFRESHPIXMAP PURPOSE: This method refreshes the pixmap (the original display might have changed in some way) and (optionally) calls the DRAW method. SYNTAX: theObject -> RefreshPixmap ARGUMENTS: None. KEYWORDS: DRAW: If this keyword is set, the DRAW method is called..
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::RESTOREDISPLAY PURPOSE: This method restores the draw widget to its former state. SYNTAX: theObject -> RestoreDisplay ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::SENDEVENT PURPOSE: This method allows the user to send an event to the real draw widget event handler. SYNTAX: theObject -> SetEvent ARGUMENTS: event The original event. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::SETDISPLAY PURPOSE: This method takes over event handling from the draw widget and sets up the object so that everything can be restored to the way it was when the interaction is finished. SYNTAX: theObject -> SetDisplay ARGUMENTS: drawWidget ; The draw widget used in the interaction. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION::SETPROPERTY PURPOSE: This method allows the user to set the INTERACTION object's properties. Be sure you ALWAYS call the superclass SETPROPERTY method if you have extra keywords! SYNTAX: theObject -> SetProperty ... ARGUMENTS: None. KEYWORDS: DRAWWIDGET: The draw widget object for whom you are taking over events. NOPICRESTORE: Set this keyword to not update the draw widget with original image when RestoreDisplay method is called. COLOR: The name of the color of the region of interest. MODE: The current "mode" of the interaction. By default, "DRAW". SELECTEDOBJECT: The currenly selected object. Normally, this object will be moved or dragged if the mode is MOVE or DRAG, etc. START_NOW: If this keyword is set, the SetDisplay method is called immediately. STATUSBAR: A reference to a statusbar object. Messages can be sent from the interaction to the statusbar object, if supplied. The statusbar object is NOT destroyed by the interaction when the interaction is destroyed. _EXTRA: Any keywords appropriate for the superclass SetProperty method.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: INTERACTION__DEFINE PURPOSE: The purpose of this routine is to implement the most basic of interactions. An "interaction" is an operation that takes over control of a draw widget and allows the user to interact with the draw widget in some way. For example, drawing ROI's on a draw widget is a good example of an interaction. Most interactions will be subclassed from this INTERACTION object. We have spent an inordinate amount of time on interactions, but in the end they are *extremely* complicated to program. I am of the mind now that users should program their own functionality and not rely on interactions, since the programming effort to create interactions seems disproportional to the results. I'm saying that most of the time, interactive functionality can be programmed as normal event handler procedures, rather than relying on interactions. That said, the interactions we have programmed do work, and they have been instrumental in producing some very nice functionality in Catalyst applications. Ideas for simplifying interactions are especially needed. AUTHORS: FANNING SOFTWARE CONSULTING BURRIDGE COMPUTING 1645 Sheely Drive 18 The Green South Fort Collins Warborough, Oxon CO 80526 USA OX10 7DN, ENGLAND Phone: 970-221-0438 Phone: +44 (0)1865 858279 E-mail: davidf@dfanning.com E-mail: davidb@burridgecomputing.co.uk CATEGORY: Objects. SYNTAX: theObject = Obj_New("INTERACTION") SUPERCLASSES: CATATOM CATCONTAINER IDLITCOMPONENT IDL_CONTAINER CLASS_STRUCTURE: class = { INTERACTION, $ _ask_on_up: 0B, $ ; Flag for UP button dialog widget. _drawID: Obj_New(), $ ; The draw widget whose events are being hijacked. _drawID_events: IntArr(7), $ ; Storage for the draw widget event types. _drawID_excl_event_obj: Obj_New(), $ ; The old exclusive event (if there is one). _drawID_pixmap: Obj_New(), $ ; A pixmap for storing the drawID picture. _drawID_event_objects: Ptr_New(), $ ; The event objects for the draw widget. _click_x: 0L, $ ; The X location of button down event. _click_y: 0L, $ ; The Y location of button down event. _contextmenu: Obj_New(), $ ; The context menu. _mode: "", $ ; The "mode" of the interaction: eg., MOVE or DRAW. _noPicture: 0L, $ ; A flag: Should picture be restored at end of interaction? _roi_color: "", $ ; The color of the roi. _selectedObject: Obj_New(), $ ; A selectable interaction object that can be moved. _statusbar: Obj_New(), $ ; A statusbar object. Can be passed messages, etc. INHERITS CATATOM $ } MESSAGES: None. MODIFICATION_HISTORY: Written by: David W. Fanning, 10 February 2004. Added DRAW_REALIZE keyword. 14 February 2005.
(See C:\IDL\Catalyst\source\interactions\interaction__define.pro)
NAME: SELECTINTERACTION::ADD PURPOSE: This method is where you can screen what kinds of objects are added to this object's hierarchy. The method is not always needed. If you do create it, be CERTAIN to call the superclass ADD method or your program will not work correctly. SYNTAX: theObject -> Add, object ARGUMENTS: object: The object to be added to this one. KEYWORDS: _EXTRA: Any keywords appropriate for the superclass Add method.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::CLEANUP PURPOSE: This is the SELECTINTERACTION object class destructor method. SYNTAX: Called automatically when the object is destroyed. ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::DRAW PURPOSE: This method draws the "interaction" in the draw widget. SYNTAX: theObject -> Draw ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::EVENT_HANDLER PURPOSE: This method is the event handler for the SELECTINTERACTION object. It will be used to respond to event generated in the draw widget. SYNTAX: This method is called automatically by the event handling mechanism. ARGUMENTS: event: The event structure as described in the IDL help files, except that the ID, TOP and HANDLER tags will be object references. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::GETPROPERTY PURPOSE: This method allows the user to obtain SELECTINTERACTION properties. Be sure you ALWAYS call the superclass GETPROPERTY method if you have extra keywords! SYNTAX: theObject -> GetProperty ... ARGUMENTS: None. KEYWORDS: COLOR: The name of the color of the region of interest. COORD_OBJECT: A coordinate object for establishing a data coordinate system. DRAWIMAGE: Set this keyword to a named variable to receive a copy of the draw widget's current contents as an image. May by undefined if SetDisplay hasn't been called, or if RestoreDisplay has been called. DRAWWIDGET: The draw widget object for whom you are taking over events. LINESTYLE: The linestyle index. PIXMAPOBJECT: Set this keyword to a named variable to receive the pixmap object associated with the draw widget. MODE: The current "mode" of the interaction. SELECTEDOBJECT: The currenly selected object. STATUSBAR: A reference to the current statusbar object. THICK: The line thickness index. _REF_EXTRA: Any keywords appropriate for the superclass GetProperty method.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::INIT PURPOSE: This is the SELECTINTERACTION object class initialization method SYNTAX: Called automatically when the object is created. ARGUMENTS: drawObject: The draw widget object that you will be taking over events from. KEYWORDS: ASK_ON_UP: Set this keyword if you wish the user to respond to a ACCEPT/CANCEL dialog when the selectable object reports an UP event. COLOR: The name of the color of the selectable object. By default, "NONE". If this keyword is set to "NONE", the color of the SELECTEDOBJECT will be used instead. COORD_OBJECT: A coordinate object for establishing a data coordinate system. If not provided, the coordinate object of the draw widget is obtained. If this is unavailable, a normalized coordinate system is used. The COORD_OBJECT is passed to the SelectableObject as its coordinate system. LINESTYLE: The linestyle index of the region of interest. By default, "-1". If this keyword is set to "-1", the linestyle of the SELECTEDOBJECT will be used instead. NOPICRESTORE: Normally, when the display is restored, the contents of the draw widget are restored to the state they were in before the interaction took place. However, if this keyword is set, the contents of the display window are left as they are at the end of the interaction. MODE: The current "mode" of the interaction. By default, "INSERT". All draw widget events are passed along to the selected object to process in its INTERACTION_EVENTS method. SELECTEDOBJECT: The currenly selected or "default" object. It must be a subclassed SELECTABLEOBJECT, such as a BOX or ELLIPSE object. This object will be destroyed when the interaction is destroyed. START_NOW: If this keyword is set, the SetDisplay method is called from within the INIT method. If the draw widget is unrealized at the time of the call, the interaction object will register for a DRAWWIDGETREALIZED message. STATUSBAR: A reference to a statusbar object. Messages can be sent from the interaction to the statusbar object, if supplied. The statusbar object is NOT destroyed by the interaction when the interaction is destroyed. THICK: The thickness index of the region of interest. By default, "-1". If this keyword is set to "-1", the thickness index of the SELECTEDOBJECT will be used instead. _EXTRA: Any keywords appropriate for the superclass INIT method.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SelectInteraction::MESSAGEHANDLER PURPOSE: This method responds to "messages" sent from other objects. It is called automatically by other objects. To receive messages, it is necessary to "register" with the messaging object. SYNTAX: None. Called by other objects. ARGUMENTS: TITLE: The message title. This is the "name" of the message indicated when the object registered for messages with the messaging object. KEYWORDS: DATA: Information from the SENDER that may be relevant in processing the message. Typically, an anonymous structure variable, although it could be anything at all. SENDER: An output keyword. This is the object reference of the object that is sending the message.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::NEEDDIALOG PURPOSE: This method is a utility routine to simply determine if a dialog is required on not. If not, an event is generated and sent to the user of the interaction. SYNTAX: theObject -> NeedDialog, event ARGUMENTS: event: The event structure currently in effect. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::REFRESHPIXMAP PURPOSE: This method refreshes the pixmap (the original display might have changed in some way) and (optionally) calls the DRAW method. SYNTAX: theObject -> RefreshPixmap ARGUMENTS: None. KEYWORDS: DRAW: If this keyword is set, the DRAW method is called..
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::RESTOREDISPLAY PURPOSE: This method restores the draw widget to its former state. SYNTAX: theObject -> RestoreDisplay ARGUMENTS: None. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::SENDEVENT PURPOSE: This method allows the user to send an event to the real draw widget event handler. SYNTAX: theObject -> SetEvent ARGUMENTS: event The original event. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::SETDISPLAY PURPOSE: This method takes over event handling from the draw widget and sets up the object so that everything can be restored to the way it was when the interaction is finished. SYNTAX: theObject -> SetDisplay ARGUMENTS: drawWidget ; The draw widget used in the interaction. KEYWORDS: None.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION::SETPROPERTY PURPOSE: This method allows the user to set the SELECTINTERACTION object's properties. Be sure you ALWAYS call the superclass SETPROPERTY method if you have extra keywords! SYNTAX: theObject -> SetProperty ... ARGUMENTS: None. KEYWORDS: DRAWWIDGET: The draw widget object for whom you are taking over events. NOPICRESTORE: Set this keyword to not update the draw widget with the original background image when RestoreDisplay method is called. COLOR: The name of the color of the region of interest. By default, "NONE". If this keyword is set to "NONE", the color of the SELECTEDOBJECT will be used instead. COORD_OBJECT: A coordinate object for establishing a data coordinate system. Note that changing the coordinate object here will not have any effect on the current selectedObject. The selectedObject will have to be replace in a second call, for this coordinate system to be assigned. LINESTYLE: The linestyle index of the region of interest. By default, "-1". If this keyword is set to "-1", the linestyle of the SELECTEDOBJECT will be used instead. MODE: The current "mode" of the interaction. By default, "INSERT". SELECTEDOBJECT: The currenly selected object. In other words, the object the interaction manipulates. This is a BOX object by default. START_NOW: If this keyword is set, the SetDisplay method is called immediately. STATUSBAR: A reference to a statusbar object. Messages can be sent from the interaction to the statusbar object, if supplied. The statusbar object is NOT destroyed by the interaction when the interaction is destroyed. THICK: The thickness index of the region of interest. By default, "-1". If this keyword is set to "-1", the thickness index of the SELECTEDOBJECT will be used instead. _EXTRA: Any keywords appropriate for the superclass SetProperty method.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)
NAME: SELECTINTERACTION__DEFINE PURPOSE: The purpose of this routine is to implement the most basic of interactions. An "interaction" is an operation that takes over control of a draw widget and allows the user to interact with the draw widget in some way. For example, drawing ROI's on a draw widget is a good example of an interaction. This will be the basic interaction object many other interactions will inherit. The philosophy of an interaction is that there is an object to "draw" in the window. Once drawn, the object can be selected, moved, rearranged, resized, etc. Then, when finished the interaction can report results to the real event handler for the draw widget. Much of the event handling for an interaction occurs in the INTERACTION_EVENTS method of the object being drawn or manipulated. These objects are SELECTABLEOBJECTS (e.g. BOX, ARROW, TEXTLINE, etc.) and must be written in a particular way. This approach is, in my opinion, overly complicated at the moment, and new interaction objects are difficult to write. I have given this subject a great deal of thought, and have still not hit on the one simple, elegant idea. So, I leave this to you. AUTHORS: FANNING SOFTWARE CONSULTING BURRIDGE COMPUTING 1645 Sheely Drive 18 The Green South Fort Collins Warborough, Oxon CO 80526 USA OX10 7DN, ENGLAND Phone: 970-221-0438 Phone: +44 (0)1865 858279 E-mail: davidf@dfanning.com E-mail: davidb@burridgecomputing.co.uk CATEGORY: Objects. SYNTAX: theObject = Obj_New("SELECTINTERACTION") SUPERCLASSES: CATATOM CATCONTAINER IDLITCOMPONENT IDL_CONTAINER EVENT_STRUCTURE: event = { ID:theObject, TOP:topObject, HANDLER:Obj_New(), EVENT_NAME='SELECTINTERACTION_EVENT', $ NAME: self._name, ACTION:"", CURRENTMODE:"", ... } If the interaction is in DRAW mode, an event is generated immediately upon an UP event. If the interaction is in INSERT mode, the action is similar, unless the ASK_ON_UP keyword is set. Then, the event is sent only when the user responds to the CANCEL or ACCEPT buttons. In any case, the ACTION field is always set to "ACCEPT" unless the CANCEL button is selected, and then it is set to "CANCEL". CLASS_STRUCTURE: class = { SELECTINTERACTION, $ _ask_on_up: 0B, $ ; Flag for UP button dialog widget. _color: "", $ ; The color of the object drawn. _coord_object: Obj_New(), $ ; A coordinate object. _drawID: Obj_New(), $ ; The draw widget whose events are being hijacked. _drawID_events: IntArr(7), $ ; Storage for the draw widget event types. _drawID_excl_event_obj: Obj_New(), $ ; The old exclusive event (if there is one). _drawID_pixmap: Obj_New(), $ ; A pixmap for storing the drawID picture. _drawID_event_objects: Ptr_New(), $ ; The event objects for the draw widget. _contextmenu: Obj_New(), $ ; The context menu. _linestyle: 0L, $ ; The linestyle of the object drawn. _mode: "", $ ; The "mode" of the interaction: eg., INSERT or DRAW. _noPicture: 0L, $ ; A flag: Should picture be restored at end of interaction? _selectedObject: Obj_New(), $ ; A selectable interaction object that can be moved. _statusbar: Obj_New(), $ ; A statusbar object. Can be passed messages, etc. _sx: 0L, $ ; The static X location of a selected item. _sy: 0L, $ ; The static Y location of a selected item. _thick: 0L, $ ; The thickness of the line of the object drawn. INHERITS CATATOM $ } MESSAGES: None. MODIFICATION_HISTORY: Written by: David W. Fanning, 10 February 2004.
(See C:\IDL\Catalyst\source\interactions\selectinteraction__define.pro)