This page was created by the IDL library routine `mk_html_help2`.

Last modified: Wed Oct 1 18:17:54 2025.

# Directory Listing of Routines

# spedas_gui/objects

- SPD_QF_LIST__DEFINE
  Defines an object for quality flag lists
- SPD_UI_AXIS_SETTINGS__DEFINE
  axis properties is an object that holds all of the settings necessary for
- SPD_UI_CALCULATE_SETTINGS__DEFINE
  Keeps track of state for calculate panel when closed.
- SPD_UI_CALL_SEQUENCE__DEFINE
  Stores the sequence of procedure calls that was used to load data.
- SPD_UI_COORDINATE_SYSTEMS
  This object exists for two purposes:
- SPD_UI_DATA__DEFINE
  This is a data object that contains names ids (self, group, and parent)
- SPD_UI_DATA_GROUP
- SPD_UI_DATA_SETTINGS
  represents the default plot settings for a trace, and digests the original tplot settings
- SPD_UI_DPRINT_DISPLAY
  Object to handle error reporting from ssl_general routines that use dprint
- SPD_UI_FIELDMODELS_SETTINGS__DEFINE
  Settings object for the field models panel
- SPD_UI_GETSET
  Superclass to automatically provide common gui methods: "GetAll","SetAll","GetProperty","SetProperty"
- SPD_UI_HIGHLIGHT_SETTINGS__DEFINE
  highlight properties is an object that holds all parameters associated with
- SPD_UI_HISTORY__DEFINE
- SPD_UI_LEGEND__DEFINE
  Basic legend settings object
- SPD_UI_LINE_SETTINGS__DEFINE
  line properties is an object that holds all of the settings necessary for
- SPD_UI_LINE_STYLE__DEFINE
  generic object for IDL line styles
- SPD_UI_LINEFILL_SETTINGS__DEFINE
  spd_ui_linefill_settings is an object that holds the settings needed
- SPD_UI_LOADED_DATA__DEFINE
  This is an array of data objects and represents all the data that has been loaded
- SPD_UI_LOADED_DATA::DPROC
  extracts tplot variables from active data, performs data processing
- SPD_UI_MARKER__DEFINE
  Marker object, displayed whenever user ctrl-click-drags to highlight an area
- SPD_UI_MARKER_SETTINGS__DEFINE
  Marker Settings object - used for the marker options panel, this object holds the
- SPD_UI_MARKER_TITLE__DEFINE
  Marker object, displayed whenever user ctrl-click-drags to highlight an area
- SPD_UI_MESSAGE_BAR__DEFINE
  This is a text bar object used to display textual information for the user
- SPD_UI_NEUTRALSHEET_SETTINGS__DEFINE
  Settings object for the field models panel
- SPD_UI_PAGE_SETTINGS__DEFINE
  Page Settings object - holds the settings for page text, layout and data
- SPD_UI_PANEL__DEFINE
  generic object for a panel
- SPD_UI_PANEL_SETTINGS__DEFINE
  Panel Settings object - holds the settings for panel traces, layout and grid
- SPD_UI_PLUGIN_MANAGER
  Interface for SPEDAS plugins
- ADDABOUTPLUGIN
  Add an about page with information on the plugin. For example, the "rules of the road"
- GETABOUTPLUGINS
  returns an array of structures, one struct for each plugin's about page
- ADDLOADDATAPANEL
  Add a panel to the load data window
- GETLOADDATAPANELS
  returns an array of structures, one struct for each load data panel
- ADDFILECONFIGPANEL
  Add a panel to the file configuration window
- GETFILECONFIGPANELS
  returns an array of structures, one struct for each file config panel
- ADDPLUGINMENU
  Add a menu item to the "Plugins" menu in the GUI
- GETPLUGINMENUS
  returns an array of structures, one for each plugin menu
- ADDDATAPROCESSINGPLUGIN
  add a new plugin to the "More..." menu in the data processing panel
- GETDATAPROCESSINGPLUGINS
  returns an array of structures, one for each data processing plugin
- PARSECONFIG
  parses a SPEDAS configuration file (.txt)
- SPD_UI_PROMPT_OBJ__DEFINE
- SPD_UI_READWRITE__DEFINE
  Base class for object serialize/de-serialize methods. This class
- SPD_UI_SCROLL_BAR__DEFINE.PRO
  Object created for data slider widget. Allows scrolling back
- SPD_UI_SPECTRA_SETTINGS__DEFINE
  spectra properties is an object that holds all of the settings necessary for
- SPD_UI_SYMBOL__DEFINE
  generic object for IDL symbols
- SPD_UI_TEMPLATE
  Top level object to manage the spedas gui settings template. Mainly provides a root for serialization a la, spd_ui_document
- SPD_UI_TEXT__DEFINE
  generic object for character strings
- SPD_UI_TIME__DEFINE
  generic time object
- SPD_UI_TIME_RANGE__DEFINE
  time range object
- SPD_UI_VARIABLE__DEFINE
  Variable object, displayed at bottom of window
- SPD_UI_WIDGET_TREE__DEFINE.PRO
  Object representing the loaded data tree compound widget.
- SPD_UI_WINDOW__DEFINE
  window object, created each time a new window is opened
- SPD_UI_WINDOW_MENUS__DEFINE
- SPD_UI_WINDOWS__DEFINE
  This is an array of window objects and represents all the data that has been loaded
- SPD_UI_ZAXIS_SETTINGS__DEFINE
  zaxis_settings is an object that holds all of the settings necessary for

# Routine Descriptions

## ADDABOUTPLUGIN

[Next Routine] [List of Routines]

     NAME:
         addAboutPlugin

     PURPOSE:
         Add an about page with information on the plugin. For example, the "rules of the road"
         statement, developer credits, acknowledgements, etc.

     INPUT:
         mission name: name of the mission to add to the load data panel
         procedure name: name of the procedure containing the load data panel widget for this mission
         panel title: title of the load data panel

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## ADDDATAPROCESSINGPLUGIN

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
        addDataProcessingPlugin

     PURPOSE:
         add a new plugin to the "More..." menu in the data processing panel

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## ADDFILECONFIGPANEL

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         addFileConfigPanel

     PURPOSE:
         Add a panel to the file configuration window

     INPUT:
        mission name: name of the mission
        procedure name: name of the procedure containing the file config widget

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## ADDLOADDATAPANEL

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         addLoadDataPanel

     PURPOSE:
         Add a panel to the load data window

     INPUT:
         mission name: name of the mission to add to the load data panel
         procedure name: name of the procedure containing the load data panel widget for this mission
         panel title: title of the load data panel

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## ADDPLUGINMENU

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         addPluginMenu

     PURPOSE:
         Add a menu item to the "Plugins" menu in the GUI

     INPUT:
        item: menu item text
        procedure: name of the procedure containing the widget to open when the user selects this menu item
        location:

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## GETABOUTPLUGINS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         getAboutPlugins

     PURPOSE:
         returns an array of structures, one struct for each plugin's about page

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## GETDATAPROCESSINGPLUGINS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         getDataProcessingPlugins

     PURPOSE:
         returns an array of structures, one for each data processing plugin

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## GETFILECONFIGPANELS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         getFileConfigPanels

     PURPOSE:
         returns an array of structures, one struct for each file config panel

     OUTPUT:

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## GETLOADDATAPANELS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         getLoadDataPanels

     PURPOSE:
         returns an array of structures, one struct for each load data panel

     OUTPUT:

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## GETPLUGINMENUS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         getPluginMenus

     PURPOSE:
         returns an array of structures, one for each plugin menu

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## PARSECONFIG

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         parseConfig

     PURPOSE:
         parses a SPEDAS configuration file (.txt)

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## SPD_QF_LIST__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_qf_list__define

    PURPOSE:
     Defines an object for quality flag lists

    CALLING SEQUENCE:
     qf = Obj_New("spd_qf_list", t_start=t_start, t_end=t_end, qf_bits=qf_bits)

    INPUT:
     none

    KEYWORDS:
     t_start
     t_end
     qf_bits

    OUTPUT:
     quality flag list object reference

    METHODS:
     qf_merge(qf)  returns an spd_qf_list which is a merge of self with qf
     qf_time_slice(tstart, tend)   returns an spd_qf_list for times between tstart and tend
     get_qf(t)     returns the quality flag for scalar time t
     qf_print()    prints the values of the three arrays

    NOTES:
     1. Quality flags qf_bits for semiclosed time intervals [t_start, t_end) with t_start<t_end and qf_bits>0
     2. qf_bits = 0 is ignored since it is assumed to be the default
     3. t_start = t_end is not possible
     4. Adding two quality flags (bitwise OR) is handled by qf_add() and qf_total()

    EXAMPLES:
     x = obj_new('SPD_QF_LIST', t_start=[1262304000.0], t_end=[1263081600.0], qf_bits=[1])
     y = obj_new('SPD_QF_LIST', t_start=[1262649600.0,1263513600.0], t_end=[1263513600.0,1264377600.0], qf_bits=[2,3])
     z = x.qf_merge(y)
     test = z.qf_print()

    HISTORY:
    $LastChangedBy: nikos $
    $LastChangedDate: 2015-08-04 13:34:01 -0700 (Tue, 04 Aug 2015) $
    $LastChangedRevision: 18388 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_qf_list__define.pro $

(See spedas_gui/objects/spd_qf_list__define.pro)

## SPD_UI_AXIS_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_axis_settings__define

    PURPOSE:
     axis properties is an object that holds all of the settings necessary for
     plotting a axis as specified in the Trace Properties Line panel

    CALLING SEQUENCE:
     axisSettings = Obj_New("SPD_UI_AXIS_SETTINGS")

    INPUT:
     none

    ATTRIBUTES:
     rangeOption           range options (auto, floating, fixed)
     touchedRangeOption   has the user modified the rangeOption field
     scaling               axis scaling (linear, log10, natural)
     touchedScaling       has the user modified the scaling field
     equalXYScaling        flag set if equal X & Y axis scaled
     isTimeAxis            flag set if axis is time based
     touchedIsTimeAxis    has the user modified the isTimeAxis field
     rangeMargin           if auto - range margin
     boundScaling          flag set if auto scaling is bound
     boundfloating         flag set if bounded floating range is used
     minFixedRange         min range value if fixed scaling
     touchedMinFixedRange  has the user modified the minFixedRange
     maxFixedRange         max range value if fixed scaling
     touchedMaxFixedRange  has the user modified the maxFixedRange
     minFloatRange         min range bound if floating range
     maxFloatRange         max range bound if floating range
     minBoundRange         min range bound if using bounded autoscaling
     maxBoundRange         max range bound if using bounded autoscaling
     floatingSpan          value of span if floating
     floatingCenter        floating center options (mean, median, appr. mean/median)
     majorTickEvery        display major ticks every
     minorTickEvery        display major ticks every
     majorTickUnits        major tick units (sec, hr, min, day, none)
     minorTickUnits        major tick units (sec, hr, min, day, none)
     majorTickAuto         set to automatically figure out major ticks
     minorTickAuto         set to automatically figure out minor ticks
     firstTickAuto         set to automatically figure out first tick
     numMajorTicks         number of major ticks
     numMinorTicks         number of major ticks
     firstTickAt           value where first tick should be
     firstTickUnits        first tick unit (sec, hr, min, day, none)
     tickStyle             style (inside, outside, both)
     bottomPlacement       flag set if ticks should be on bottom axis
     topPlacement          flag set if ticks should be on top axis
     majorLength           length of major tick
     minorLength           length of minor tick
     logMinorTickType      For Log minor ticks, log-full-interval,log-first-magnitude,log-last-magnitude,even-spacing
     lineAtZero            flag set if line is drawn at zero
     showdate              flag set if date strings are shown
     dateString1           string format of date for line 1
     dateString2           string format of date for line 1
     dateFormat1           format of date string for annotation - line 1
     dateFormat2           format of date string for annotation - line 2
                           format options include 'Time', 'Date', 'Year', 'Mon', 'Day',
                           'Hours', 'Minutes', 'Seconds', 'Day of Year'
                           respective commands are '%time', '%date', '%year', '%mon',
                           '%day', '%hours', '%minutes', '%seconds', '%doy'
     annotateAxis          flag set to annotate along axis
     placeAnnotation       placement of annotation (bottom or top)
     annotateMajorTicks    set flag if major ticks are annotated
     annotateEvery         value where annotations occur
     annotateUnits         units for annotation value (sec, min, hr, day,none)
     firstAnnotation       value where annotation of first major tick occurs
     firstAnnotateUnits    units for major tick value (sec, min, hr, day,none)
     annotateRangeMin     set flag to annotate range min tick
     annotateRangeMax     set flag to annotate range max tick
     annotateStyle         format style of tick
                           if IsTime
                           ['date', 'date:doy' , 'date:doy:h:m', 'date:doy:h:m:s', 'date:doy:h:m:s.ms', $
                            'h:m', 'h:m:s', 'h:m:s.ms', 'mo:day', 'mo:day:h:m', 'doy', 'doy:h:m', $
                            'doy:h:m:s', 'doy:h:m:s.ms', 'year:doy', 'year:doy:h:m', 'year:doy:h:m:s', $
                            'year:doy:h:m:s.ms']
                           otherwise
                           ['d(1234)', 'f0(1234)' , 'f1(123.4)', 'f2(12.34)', 'f3(1.234)', 'f4(0.1234)', $
                            'f5(0.01234)', 'f6(0.001234)', 'e0(123e4)', 'e1(12.3e4)', 'e2(1.23e4)', 'e2(0.123e4)', $
                            'e2(0.0123e4)', 'e2(0.00123e4)', 'e2(0.000123e4)']

     annotateOrientation   The orientation of the annotations: 0(horizontal) & 1(vertical)
     annotateTextObject    Text object that represents that textual style of annotations
     annotateExponent      Flag indicates whether to force annotations into an exponential format.  0: default behavior, 1: Always exponential, 2: Never exponential
     majorGrid=majorgrid   linestyle object of major grid
     minorGrid=minorgrid   linestyle object of minor grid
     orientation           orientation of labels 0=Horizontal, 1=Vertical
     margin                number of points for label margins
     showLabels            flag for whether or not labels are displayed
     labels                A container object that stores the text objects which represent each label
     stackLabels           A flag to determine whether labels should be stacked
     lazyLabels           A flag to determine whether underscores will be converted to carriage returns (and stacking turned off)
     blackLabels           A flag to determine whether label colors are all black
     autoticks             direct the draw object to make decisions about tick positioning automatically, and mutate axis object settings
     titleobj              text object that contains the title for the axis
     subtitleobj           text object that contains the subtitle for the axis
     placeLabel            placement of labels (left/bottom or right/top)
     placeTitle            placement of title (left/bottom 0 or right/top 1)
     titleorientation      orientation for title (0=horizontal, 1=vertical)
     titlemargin           number of points for title margin
     showtitle             flag for whether the title should be displayed (mainly to allow us to turn off titles if panels are locked and titles would overlap panels)
     lazytitles            flag to determine whether underscores in titles should be converted to carriage returns

    OUTPUT:
     axis property object reference

    METHODS:
     SetProperty    procedure to set keywords
     GetProperty    procedure to get keywords
     GetAll         returns the entire structure

     GetUnits        returns string array of unit options
     GetUnit         returns name of unit given an index
     GetOrientations returns string array of plot options
     GetOrientation  returns name of plot option given an index
     GetPlacements   returns string array of plot options
     GetPlacement    returns name of plot option given an index
     GetRangeOptions returns string array of plot options
     GetRangeOption  returns name of plot option given an index
     GetStyles       returns string array of plot options
     GetStyle        returns name of plot option given an index
     GetScalings     returns string array of plot options
     GetScaling      returns name of plot option given an index
     GetDateFormats  returns string array of date format options
     GetDateFormat   returns the name of the date format given an index
     GetDateCommands returns array of commands for date formats
     GetDateCommand  returns a string with the date command
     GetDateString   returns a string with the actual date formatted
                     given an index. if a time object is provided it
                     will format the time object, otherwise it will
                     default to the current date.

    HISTORY:

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_axis_settings, and
      call them in the same way as before

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_axis_settings__define.pro $

(See spedas_gui/objects/spd_ui_axis_settings__define.pro)

## SPD_UI_CALCULATE_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_calculate_settings__define

    PURPOSE:
      Keeps track of state for calculate panel when closed.

    CALLING SEQUENCE:
     calcSettings = Obj_New("SPD_UI_CALCULATE_SETTINGS")

    INPUT:
     none

    ATTRIBUTES:

      path:  string, path to the calculate file
      name: string,name of the calculate file
      text: string array, containing text of the buffer

    OUTPUT:
      calculate settings object reference

    METHODS:

      GetProperty
      SetProperty

    NOTES:
      Methods: GetAll,SetAll are now managed automatically using the parent class spd_ui_getset.
      You can still call these methods when using objects of type spd_ui_calculate_settings__define, and
      call them in the same way as before

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-04-16 11:55:55 -0700 (Thu, 16 Apr 2015) $
    $LastChangedRevision: 17342 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_calculate_settings__define.pro $

(See spedas_gui/objects/spd_ui_calculate_settings__define.pro)

## SPD_UI_CALL_SEQUENCE__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
      spd_ui_call_sequence__define

    PURPOSE:
      Stores the sequence of procedure calls that was used to load data.

    CALLING SEQUENCE:
     obj = obj_new('spd_ui_call_sequence',loadeddata)

    Methods:
      addloadcall: This method should be called in load spedas data, every time
                   'spd_ui_load_data2obj' is called(DEPRECATED, use addSt(), with type:'loadapidata')
      getCalls:  This method returns the list of stored function calls as an
                 array of pointers to structs
      setCalls: This method stores an array of pointers to structs that represent
                 function/procedure calls
      reCall: This method will re-execute the sequence of stored function calls

      merge: This method will combine two call sequence objects.  It attempts to guarantee that
              the correct data quantities are generated, while preventing duplication of effort.

      adddeletecall: This method should be called wheneever data is deleted in the GUI
            it adds the deletion to the call sequence list, to be replayed by saved documents

      getDomElement: serializes this class into an XML Dom object
      BuildFromDomElement:  deserializes this class from an XML Dom Object

    NOTE:  1.  This object is designed in such a way that it should be straightforward
           to ingest calls from other types of routines. For example: calls to delete data
           or calls to load data from non-spedas sources.  The public interface
           is set up in such a way that it should ease these types of extensions
           in the future.

           2.  Right now, it cannot guarantee that *all* the data that was saved will
           be present when reCalled, because it does not keep track of custom tplot variables,
           or data processing calls.

    HISTORY:
    $LastChangedBy: aaflores $
    $LastChangedDate: 2015-04-24 18:45:02 -0700 (Fri, 24 Apr 2015) $
    $LastChangedRevision: 17429 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_call_sequence__define.pro $

(See spedas_gui/objects/spd_ui_call_sequence__define.pro)

## SPD_UI_COORDINATE_SYSTEMS

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
         spd_ui_coordinate_systems

     PURPOSE:
         This object exists for two purposes:
             1) Maintain the list of coordinate systems used throughout SPEDAS
                in a single location
             2) Encapsulate the methods that produce coordinate system lists
                for different contexts, e.g., the verify data panel,
                load data panel, data processing panel, etc.

         Both are ultimately for code maintenance

     KEYWORDS:

     METHODS:
         makeCoordSysList: creates and returns a list of valid coordinate systems

     EXAMPLES:
         To make a simple list of general purpose coordinate systems:
            SPEDAS> coordSysObj = obj_new('spd_ui_coordinate_systems') ; create the object
            SPEDAS> print, coordSysObj->makeCoordSysList(/uppercase) ; make the list
               GSM AGSM GSE GEI SM GEO MAG
            SPEDAS> print, coordSysObj->makeCoordSysList(/uppercase, /include_none) ; include N/A
               N/A GSM AGSM GSE GEI SM GEO MAG
            SPEDAS> print, coordSysObj->makeCoordSysList(/include_misc) ; include miscellaneous coordinates
               gsm agsm gse gei sm geo mag enp rtn hdz gci dsl ssl spg sse sel
            SPEDAS> obj_destroy, coordSysObj ; delete the object

     NOTE:
          All coordinate system lists exist in this object's constructor, with pointers
            to the lists in the objects state structure

          Changes to this object should be reflected in the corresponding test procedure, spd_ui_test_coordinate_systems_obj

          This routine was forked from the THEMIS coord object (thm_ui_coordinate_systems)

    $LastChangedBy: crussell $
    $LastChangedDate: 2015-09-23 08:48:08 -0700 (Wed, 23 Sep 2015) $
    $LastChangedRevision: 18883 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_coordinate_systems__define.pro $

(See spedas_gui/objects/spd_ui_coordinate_systems__define.pro)

## SPD_UI_DATA_GROUP

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
      spd_ui_data_group

    Purpose:
      This object represents a group of data objects, as a means of
      simplifying the logic of the loaded data object

    METHODS:
      addDataObject:  This method takes a dataObject, extracts the name & active flag
                  Then passes those into the add method

      add: This is the generic add method, takes a name, an object, and an optional active
                  flag

      remove: This method removes an object with a particular name from the data structure
              It returns 1 on success and 0 upon failure.  Optional keyword nodelete, stops
              data from being deleted when data Object removed.

      removeall: this method removes all objects from the group.
              It returns 1 on success and 0 upon failure.  Optional keyword nodelete, stops
              data from being deleted when data Object removed.

      hasChild: this method determines if the group has a child with a particular name
                returns 1 for yes and 0 for no

      hasActive: this method returns 1 if the group has an active object with a
                particular name and 0 otherwise

      setActive: this method sets an object with a particular name to active
                 If the name provided is the groupname, the whole group will
                 become active

      clearActive: this method will deactivate the object with the provided name
                 If the name provided is the groupname, the whole group will
                 become inactive

      clearAllActive: this method will deactive the group and all its members

      getActiveChildren: this method returns the names of all active members or 0 if there
                 are no active members(or no members at all)

      getChildren: this method returns the names of all members

      getTimeObject: this method returns the timeobject in the group

      getDataObjects: this method returns the dataobjects in the group

      getObject: this method returns an object with a particular name or 0 if it
                 is not stored in this object

      getObjects: this method returns all objects stored in the group or 0 if
                 it contains no objects

      getActive: this method returns the active flag for the group

      getName: this method returns the group name

      setName: this method sets the group name

      getDataNames: returns the names of children BUT time

      setTimeName: set the name of the time object in this group

      getTimeName: get the name of the time object in this group

      setYaxisName: set the name of the yaxis group for this group

      getYaxisName: get the name of the yaxis group for this group

      setIndepName:set the name of the independent variable data name for this group

      getIndepName: get the name of the independent variable data name for this group

      getSize: this method returns the number of objects stored in the group

      getTimeRange: this method returns the start and stop time strings the
                    time object of this group

      init: has two optional keywords.  name,active

      NOTES: As the data_group object is part of loaded data and data management,
             destroying this object or removing from this object will result in
             the contained objects being destroyed and their memory being freed

    $LastChangedBy: jimm $
    $LastChangedDate: 2019-05-13 11:23:24 -0700 (Mon, 13 May 2019) $
    $LastChangedRevision: 27229 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_data_group__define.pro $

(See spedas_gui/objects/spd_ui_data_group__define.pro)

## SPD_UI_DATA_SETTINGS

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_data_settings

    PURPOSE:
     represents the default plot settings for a trace, and digests the original tplot settings

    CALLING SEQUENCE:
     dsettings = obj_new('spd_ui_data_settings',limit,dlimit,element)

    HISTORY:

    NOTES:
      1. We need to update defaults in the instance of a rename

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_data_settings__define.pro $

(See spedas_gui/objects/spd_ui_data_settings__define.pro)

## SPD_UI_DATA__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_data__define

    PURPOSE:
     This is a data object that contains names ids (self, group, and parent)

    CALLING SEQUENCE:
     To Create:    myDataObj = Obj_New("SPD_UI_DATA")
     To Use:       data = myDataObj->GetData()

    OUTPUT:
     reference to a data object

    ATTRIBUTES:
     name           name of data
     timeName       name of the time component of this data
     dataPtr        ptr to the data component of this data
     yaxisName      name of the yaxis component of this data
     indepName      name of variable to use on indep axis instead of time
     limitPtr       ptr to the limit struct from the tplot variable that
                       it originated
     dlimitPtr      ptr to the dlimit struct from the tplot variable that
                       it originated
     id             unique identifier for this data object
     groupName      group name
     fileName       data file name
     isTime         this boolean indicates whether a data object represents time
     isSpect        flag set when data is spectrographic
     mission        the mission the data is for
     observatory    spacecraft or groundstation of the data
     coordSys       coordinate system of the data, if applicable
     instrument     instrument of the data
     units          the units for this data qunatity
     yaxisunits     the units of the yaxis for this quantity(not important internally, but when we are passing around metadata during a tplot operation, it becomes more important)
                    yaxisunits is stored but does not appear to be used anywhere (af, 2015-05-08)
     suffix         the suffix of the quantity(if applicable)
     settings       object representing the default data settings

    OUTPUT:
     data object

    METHODS:
     getName
     getDataPtr
     getRange
     Copy
     SetProperty
     GetProperty
     GetAll

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_data, and
      call them in the same way as before

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-10 15:11:14 -0700 (Fri, 10 Jul 2015) $
    $LastChangedRevision: 18081 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_data__define.pro $

(See spedas_gui/objects/spd_ui_data__define.pro)

## SPD_UI_DPRINT_DISPLAY

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_dprint_display

    PURPOSE:
     Object to handle error reporting from ssl_general routines that use dprint

    CALLING SEQUENCE:
     spd_ui_display = Obj_New("SPD_UI_DPRINT_DISPLAY")

    METHODS:
     GetProperty
     SetProperty
     Print

    HISTORY:

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_dprint_display__define.pro $

(See spedas_gui/objects/spd_ui_dprint_display__define.pro)

## SPD_UI_FIELDMODELS_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
      spd_ui_fieldmodels_settings__define

     PURPOSE:
      Settings object for the field models panel

     CALLING SEQUENCE:
      fieldmodels = obj_new('SPD_UI_FIELDMODELS_SETTINGS')

     INPUT:
      none

     KEYWORDS:
       pos_tvar: variable containing position data, in km
       pressure_tvar: variable containing dynamic pressure
       imf_by_tvar: variable containing IMF By data, in nT
       imf_bz_tvar: variable containing IMF Bz data, in nT
       sw_density_tvar: variable containing solar wind proton density, in #/cc
       sw_speed_tvar: variable containing solar wind proton speed, in km/s
       dst_tvar: variable containing Dst (or Sym-H) data, in nT
       symh_tvar: Variable containing Sym-H data, in nT
       symhc_tvar: Variable containing Sym-HC data, in nT
       w_coeff_tvar: variable containing W coefficients for the TS04 model
       g_coeff_tvar: variable containing G coefficients for the T01 model
       nindex_tvar: variable containing N-Index for the TA15N model
       bindex_tvar: variable containing B-Index for the TA15B model
       t89_kp: iopt for the Kp index, for the T89 model
       t89_set_tilt: user supplied tilt angle for the T89 model
       t89_add_tilt: user supplied angle to add to the model tilt angle for T89
       output_options: models to run - [model at position, equatorial footprint, ionospheric footprint]
       geopack_2008: flag to switch between original and Geopack 2008 library routines

    $LastChangedBy: jwl $
    $LastChangedDate: 2022-09-15 18:53:25 -0700 (Thu, 15 Sep 2022) $
    $LastChangedRevision: 31089 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_fieldmodels_settings__define.pro $

(See spedas_gui/objects/spd_ui_fieldmodels_settings__define.pro)

## SPD_UI_GETSET

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_getset

    PURPOSE:
      Superclass to automatically provide common gui methods: "GetAll","SetAll","GetProperty","SetProperty"

    METHODS:
      GetProperty
      SetProperty
      GetAll
      SetAll

    HISTORY:

    NOTES:
      This object differs from other gui objects with respect to its getProperty,setProperty,getAll,setAll methods.  These methods are now provided dynamically
      so you only need to modify the class definition and the init method to if you want to add or remove a property from the object.

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_getset__define.pro $

(See spedas_gui/objects/spd_ui_getset__define.pro)

## SPD_UI_HIGHLIGHT_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_highlight_settings__define

    PURPOSE:
     highlight properties is an object that holds all parameters associated with
     theh Trace Properties Highlight panel

    CALLING SEQUENCE:
     highlightProperties = Obj_New("SPD_UI_HIGHLIGHT_SETTINGS")

    INPUT:
     none

    KEYWORDS:
     markVertical      flag to mark vertical
     lineStyle         line style object
     symbol            symbol object
     placement         droplistfor placement of symbol
                         top, bottom, both top and bottom
     labelWith         0=No label, 1=X value, 2=Y value
     format            numeric format for label
     markWhenY         flag to mark y value
     whenYEquals       y value to mark
     markEvery         flag to mark every y value ..
     whenEveryEquals  y value to mark
     setBackground     flag to set background
     backgroundWhenY   droplist of logical operators
     backgroundYValue  value for logical operator
     backgroundColor   r,g,b color for background

    OUTPUT:
     highlight property object reference

    METHODS:
     SetProperty   procedure to set keywords
     GetProperty   procedure to get keywords
     GetAll        returns the entire structure
     GetPlacements returns a string array with placement options
     GetPlacement  return a string with placement option of given index
     GetOperators  returns a string array with operator options ['<','<=', ...]
     GetOperator   return a string with placement option of given index

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_highlight_settings, and
      call them in the same way as before

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_highlight_settings__define.pro $

(See spedas_gui/objects/spd_ui_highlight_settings__define.pro)

## SPD_UI_HISTORY__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
    spd_ui_history

    PURPOSE:
     A widget to display the all messages generated during this session

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-13 08:15:04 -0700 (Mon, 13 Jul 2015) $
    $LastChangedRevision: 18090 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_history__define.pro $
    +
    NAME:
     spd_ui_history__define

    PURPOSE:
     This is a history window object used to display textual information for the user
     (such as a status bar for current states, message bar, or informational bar)

    CALLING SEQUENCE:
     To Create:    myHistory = Obj_New("SPD_UI_HISTORY")
     To Use:       myHistory->Update, 'This is a test'
     Or:           result = myHistory->GetState()

    INPUT:

    KEYWORDS:
     name:   optional name
     state:  set this to one to display
     value:  text to be displayed in the bar
     xSize:  size of bar in x direction
     ySize:  size of bar in y direction
     debug:  set this value to one for debugging

    OUTPUT:
     message bar object reference

    METHODS:
     Draw         creates/displays the bar (automatically called by INIT)
     Delete       removes bar from display (object persists)
     Update       updates bar with new message
     SetProperty  procedure to set keywords
     GetProperty  procedure to get keywords
     GetState     returns the current state of the bar (on/off) (this is a function)

    HISTORY:

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-13 08:15:04 -0700 (Mon, 13 Jul 2015) $
    $LastChangedRevision: 18090 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_history__define.pro $

(See spedas_gui/objects/spd_ui_history__define.pro)

## SPD_UI_LEGEND__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
      spd_ui_legend__define

     PURPOSE:
      Basic legend settings object

     CALLING SEQUENCE:
      legend = Obj_New('SPD_UI_LEGEND')

     INPUT:
      none

     KEYWORDS:
      enabled:         flag for disable/enabling the legend
      font:            index of legend font type - font types are from the getFonts method in spd_ui_text
      size:            size of legend text
      format:          legend font formats ('bold', 'italic', etc..)
      color:           color of legend text
      vspacing:        vertical spacing between lines in legend
      bgcolor:         background color of legend
      framethickness:  thickness of frame around legend
      bordercolor:     color of frame around legend
      bottom:          flag indicating whether explicit positioning is used
      bValue:          numerical value of the explicit position (bottom)
      bUnit:           bottom units - 0=pt, 1=in, 2=cm, 3=mm, units of numerical value
      left:            flag indicating whether explicit positioning is used
      lValue:          numerical value of the explicit position (left)
      lUnit:           'left' units
      width:           flag indicating whether explicit positioning is used
      wValue:          numerical value of the explicit position (width)
      wUnit:           'width' units
      height:          flag indicating whether explicit positioning is used
      hValue:          numerical value of the explicit position (height)
      hUnit:           'height' units
      xAxisValue:      X-axis value
      xAxisValEnabled: enable/disable showing x-axis value on legend
      yAxisValue:      Y-axis value
      yAxisValEnabled: enable/disable showing y-axis value on legend
      traces:          pointer to traces
      customTracesset: 0=no custom traces set for this panel, 1=custom traces are set
      xIsTime:         flag indicating whether X-axis is time
      yIsTime:         flag indicating whether Y-axis is time
      zIsTime:         flag indicating whether Z-axis is time
      notationSet:     0 = auto-notation, 1=decimal notation, 2=scientific notation, 4=hexadecimal notation
      timeFormat:      index of format for dates/times in legend, default is h:m:s.ms
      numformat:       index of format for numerical values shown in legend

    $LastChangedBy: egrimes $
    $LastChangedDate: 2014-06-12 08:22:12 -0700 (Thu, 12 Jun 2014) $
    $LastChangedRevision: 15354 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_legend__define.pro $

(See spedas_gui/objects/spd_ui_legend__define.pro)

## SPD_UI_LINEFILL_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_linefill_settings__define

    PURPOSE:
     spd_ui_linefill_settings is an object that holds the settings needed
     to describe a shaded area between 2 traces. The spd_ui_panel object field
     'traceFillSettings' is a container holding objects of this type.

    CALLING SEQUENCE:
     lineFillSettings = Obj_New("SPD_UI_LINEFILL_SETTINGS")

     REQUIRED INPUT:
     none

    KEYWORDS:
     dataX1             string naming X component of line 1
     dataY1             string naming Y component of line 1
     dataX2             string naming X component of line 2
     dataY2             string naming Y component of line 2
     FillColor          int array describing color of shading
     Opacity            float between 0 and 1 describing opacity of shaded area.
     nosave             will not save a copy on startup

    OUTPUT:
     spd_ui_linefill_settings object reference

    METHODS:
     Copy
     Save
     Reset

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_linefill_settings.

    CREATED BY: Ayris Narock (ADNET/GSFC) 2017

     $LastChangedBy: nikos $
     $LastChangedDate: 2017-11-20 12:50:10 -0800 (Mon, 20 Nov 2017) $
     $LastChangedRevision: 24322 $
     $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_linefill_settings__define.pro $

(See spedas_gui/objects/spd_ui_linefill_settings__define.pro)

## SPD_UI_LINE_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_line_settings__define

    PURPOSE:
     line properties is an object that holds all of the settings necessary for
     plotting a line as specified in the Trace Properties Line panel

    CALLING SEQUENCE:
     lineSettings = Obj_New("SPD_UI_LINE_SETTINGS")

    INPUT:
     none

    KEYWORDS:
     dataX             string naming X component of line
     dataY             string naming Y component of line
     mirrorLine        flag to mirror line
     lineStyle         line style object
     drawBetweenPts    flag set if separation attributes should be used(ie NOT drawBetweenpts)
     separatedBy       number of point separation
     separatedUnits    0=sec, 1=min, 2=hrs, 3=days
     symbol            symbol object
     plotPoints,       all,1st/Last,1st,Last,MajorTick,EveryN
     everyOther        number for every N points
     positiveEndPt     variable name for positive endPt
     negativeEndPt     variable name for negative endPt
     positiveEndRel    flag if relative to line
     negativeEndRel    flag if relative to line
     barLine           bar line style object
     MarkSymbol        mark symbol object
     debug=debug       set to debug

    OUTPUT:
     line property object reference

    METHODS:
     SetProperty    procedure to set keywords
     GetProperty    procedure to get keywords
     GetAll         returns the entire structure
     GetPlotOptions returns string array of plot options
     GetPlotOption  returns name of plot option given an index
     GetUnits       returns string array of unit options
     GetUnit        returns name of unit given an index

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_line_settings, and
      call them in the same way as before

    HISTORY:

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_line_settings__define.pro $

(See spedas_gui/objects/spd_ui_line_settings__define.pro)

## SPD_UI_LINE_STYLE__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_line_style__define

    PURPOSE:
     generic object for IDL line styles

    CALLING SEQUENCE:
     lineStyle = Obj_New("SPD_UI_LINE_STYLE")

    INPUT:
     none

    KEYWORDS:
     name       name of line style (solid, dotted, dashed, dashdot,
                                    dashdotdot,long dashes)
     id         IDL line style value (0-5)
     show       set this to display line (default = 1)
     color      name of the color for this line (default is black)
     rgb        [r, g, b] value for the color for this line
     thickness  thickness of the line (default = 1)
     opacity    the opacity of the line

    OUTPUT:
     line style object reference

    METHODS:
     GetProperty
     GetAll
     SetProperty
     GetLineStyleName
     GetLineStyleId
     GetLineStyle
     Copy

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_line_style, and
      call them in the same way as before

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_line_style__define.pro $

(See spedas_gui/objects/spd_ui_line_style__define.pro)

## SPD_UI_LOADED_DATA::DPROC

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_loaded_data::dproc

    PURPOSE:
     extracts tplot variables from active data, performs data processing
     tasks, creates new variables, optionally sets those variables to
     active variables

    CALLING SEQUENCE:
     success = loaded_data_obj -> dproc(dp_task, dp_pars,callSequence, names_out=names_out, no_setactive=no_setactive)

    INPUT:
     dp_task = a string variable specifying the task to be carried
               out. The options are ['subavg', 'submed', 'smooth',
               'blkavg','clip','deflag','degap','spike','deriv',
               'pwrspc','wave','hpfilt']
     dp_pars = an anonymous structure containing the input parameters for
     the task, this will be unpacked in this routine and the parameters
     are passed through. Note that, since this is only called from the
     thm_GUI_new routine, there is no error checking for
     content, it is expected that the calling routine passes through the
     proper parameters in each case.

     callSequence = Object to store previous dproc operations for replay

    OUTPUT:
     success = a byte, 0b if the process was unsuccessful or cancelled,
               1b if the process was completed

    KEYWORDS:
     names_out = the tplot names of the created data variables
     no_setactive = if set, the new variables will no be set to active at
                    the end of the process.
     hwin, sbar = history window and status bar objects for updates
     gui_id = the id of the calling widget - to pass into warning pop-ups

    HISTORY:
     16-oct-2008, jmm, jimm@ssl.berkeley.edu
     switched output from message to byte, 29-oct-2008,jmm
     12-Dec-2008,prc Fixed bug where dproc was not reading data stored in
     loaded data,but instead was reading non-gui-data.
     Fixed bug where data produced by dproc was not inheriting any meta-data.
     23-jan-2009, jmm, deletes any tplot variables that are created
                       during processing, added catch, so that deletion
                       of tplot variables is done if an error bonks a
                       process.
     10-Feb-2009, jmm, Added hwin, sbar keywords
     24-Apr-2015, af, updating plugins, reformatting code

    $LastChangedBy: jimmpc1 $
    $LastChangedDate: 2020-09-28 14:33:06 -0700 (Mon, 28 Sep 2020) $
    $LastChangedRevision: 29192 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_loaded_data__dproc.pro $
    unction spd_ui_loaded_data::dproc, dp_task, dp_pars,callSequence=callSequence,replay=replay,in_vars=in_vars, names_out = names_out, $
                              no_setactive = no_setactive, hwin = hwin, sbar = sbar, gui_id = gui_id, $
    when replaying data, need to remember user interaction responses if we're gonna get it right
                              overwrite_selections=overwrite_selections,degap_selections=degap_selections,blkavg_selections=blkavg_selections,$
                              smooth_selections=smooth_selections, hpf_selections=hpf_selections,$
                              _extra = _extra

    ompile_opt idl2, hidden

    Catch errors during processing
      -allows dproc window to persist in case of error?

(See spedas_gui/objects/spd_ui_loaded_data__dproc.pro)

## SPD_UI_LOADED_DATA__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_loaded_data__define

    PURPOSE:
     This is an array of data objects and represents all the data that has been loaded
     for this session.

    CALLING SEQUENCE:

    OUTPUT:
     reference to data object array

    ATTRIBUTES:
     array of data objects

    METHODS:
     Add             adds a new tplot variable to the loaded data object by tplot variable name
     Remove          removes an object from the array by name or group name
     GetAll          returns an array of all data names
     GetActive       returns a list of all data that is currently displayed
     GetChildren     returns a list of the children for a particular variable name
     SetActive       makes a data object active given a tplot name
     IsActive        Checks if a variable with a given name is active
     IsParent        Checks if a variable with a given name is a parent
     IsChild         Checks if a variable with a given name is a child
     ClearActive     makes a data object inactive
     ClearAllActive  clears all active data objects
     GetVarData      gets the data component from a variable.  For a group variable, the routine
                     will need to compose the data first
     GetTvarData     gets a tplot variable,  For a group data structure it will construct
                     a new tplot variable.
     GetObjects      returns an array of all data objects, can also take a name or group name

      NOTE:

      1. You should use 'getTvarData' to generate a
      tplot variable that has all the dimensions of the variable composed
      as a single entity.  After you have modified the variable you
      should you 'add', to add the data back in to the data structure.

      2. Note also, that you don't need to have separate rules to data process parents and children, if you use
      the same getTvarData/add workflow above for children variables, it
      will work fine.

      3. INIT takes an argument, /autoload. If that is set, the load routine will load all the tplot variables in
      memory, but not all the metadata for the variables will be set correctly.

    HISTORY:

    $LastChangedBy: jimmpc1 $
    $LastChangedDate: 2018-03-05 14:00:03 -0800 (Mon, 05 Mar 2018) $
    $LastChangedRevision: 24830 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_loaded_data__define.pro $

(See spedas_gui/objects/spd_ui_loaded_data__define.pro)

## SPD_UI_MARKER_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_marker_settings__define

    PURPOSE:
     Marker Settings object - used for the marker options panel, this object holds the
     settings used for markers

    CALLING SEQUENCE:
     marker = Obj_New("SPD_UI_MARKER_SETTINGS")

    INPUT:
     none

    ATTRIBUTES:
    label             marker title text object
    vertPlacement     vertical placement of marker label
    fillColor         color used to shade marked area
    lineStyle         line style object for start/end points
    drawOpaque        opacity of the marker(floating pt between 0 & 1])

    OUTPUT:
     marker setting object reference

    METHODS:
     SetProperty  procedure to set keywords
     GetProperty  procedure to get keywords
     GetAll       returns the entire structure

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_marker_settings, and
      call them in the same way as before

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_marker_settings__define.pro $

(See spedas_gui/objects/spd_ui_marker_settings__define.pro)

## SPD_UI_MARKER_TITLE__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_marker_title__define

    PURPOSE:
     Marker object, displayed whenever user ctrl-click-drags to highlight an area

    CALLING SEQUENCE:
     markerTitle = Obj_New("SPD_UI_MARKER_TITLE")

    INPUT:
     none

    KEYWORDS:
     name             name for this marker
     useDefault       flag set if using default name
     defaultName      default name for marker
     cancelled        flag set if window cancelled

    OUTPUT:
     marker object reference

    METHODS:
     SetProperty   procedure to set keywords
     GetProperty   procedure to get keywords
     GetAll        returns the entire structure

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_marker_title, and
      call them in the same way as before

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_marker_title__define.pro $

(See spedas_gui/objects/spd_ui_marker_title__define.pro)

## SPD_UI_MARKER__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_marker__define

    PURPOSE:
     Marker object, displayed whenever user ctrl-click-drags to highlight an area

    CALLING SEQUENCE:
     marker = Obj_New("SPD_UI_MARKER")

    INPUT:
     none

    KEYWORDS:
     name              name for this marker
     range             start and stop value of marker (data coords)
     settings          property settings of the marker
     isSelected        flag set if marker is currently selected
     filename          filename, if saved

    OUTPUT:
     marker object reference

    METHODS:
     SetProperty   procedure to set keywords
     GetProperty   procedure to get keywords
     GetAll        returns the entire structure

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_marker, and
      call them in the same way as before

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-10 15:57:36 -0700 (Fri, 10 Jul 2015) $
    $LastChangedRevision: 18083 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_marker__define.pro $

(See spedas_gui/objects/spd_ui_marker__define.pro)

## SPD_UI_MESSAGE_BAR__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_message_bar__define

    PURPOSE:
     This is a text bar object used to display textual information for the user
     (such as a status bar for current states, message bar, or informational bar)

    CALLING SEQUENCE:
     To Create:    myStatusBar = Obj_New("SPD_UI_MESSAGE_BAR", myWidgetBase)
     To Use:       myStatusBar->Update, 'This is a test'
     Or:           result = myStatusBar->GetState()

    INPUT:
     parent:       id for the parent widget (must be a base)

    KEYWORDS:
     name:   optional name
     state:  set this to one to display
     value:  text to be displayed in the bar
     xSize:  size of bar in x direction
     ySize:  size of bar in y direction
     debug:  set this value to one for debugging

    OUTPUT:
     message bar object reference

    METHODS:
     Draw         creates/displays the bar (automatically called by INIT)
     Delete       removes bar from display (object persists)
     Update       updates bar with new message
     SetProperty  procedure to set keywords
     GetProperty  procedure to get keywords
     GetState     returns the current state of the bar (on/off) (this is a function)

     WARNINGS:
       You should avoid calling the update method on this object before the widget is realized.

    HISTORY:

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-09 10:47:18 -0700 (Thu, 09 Jul 2015) $
    $LastChangedRevision: 18043 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_message_bar__define.pro $

(See spedas_gui/objects/spd_ui_message_bar__define.pro)

## SPD_UI_NEUTRALSHEET_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

     NAME:
      spd_ui_neutralsheet_settings__define

     PURPOSE:
      Settings object for the field models panel

     CALLING SEQUENCE:
      neutralsheet = obj_new('SPD_UI_NEUTRALSHEET_SETTINGS')

     INPUT:
      none

     KEYWORDS:
       pos_tvar: variable containing position data, in km, in gsm
       nsmodel: neutral sheet model name. models include:
         'sm', 'aen', 'den', 'fairfield', 'themis', 'lopez'
       kp: Kp index (Kp index is only for the Lopez Neutral Sheet Model)
       magnetic_lat: magnetic latitude (mlt is only used by the Lopez Neutral Sheet Model)

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_neutralsheet_settings__define.pro $

(See spedas_gui/objects/spd_ui_neutralsheet_settings__define.pro)

## SPD_UI_PAGE_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_page_settings__define

    PURPOSE:
     Page Settings object - holds the settings for page text, layout and data

    CALLING SEQUENCE:
     page = Obj_New("SPD_UI_PAGE_SETTINGS")

    INPUT:
     none

    OUTPUT:
     page setting object reference

    ATTRIBUTES:
     title                 text object for title
     labels                text object for labels
     variables             text object for variables
     footer                text object for footer
     marker                text object for markers
     token                 droplist index for title token
     ifootertoken           droplist index for footer token
     defMarkerTitle        default value for marker titles
     maintainRead          flag to maintain readability
     ShowTraceNames        flag to display trace names
     xPanelSpacing         horizontal spacing between panel(pts)
     yPanelSpacing         vertical spacing between panel(pts)
     heightProp            flag to maintain prop. heights
     gutterWidth           width size for gutter
     displayOnScreen       flag to display on screen
     altTopBottom          flag to alternate top and bottom
     offsetFirstPage       flag to offset first page
     orientation           0=portrait, 1=landscape
     backgroundColor       name of background color
     leftPrintMargin       size of left print margin (in.)
     rightPrintMargin      size of right print margin (in.)
     topPrintMargin        size of top print margin (in.)
     bottomPrintMargin     size of bottom print margin (in.)
     canvasSize            size of the page in inches
     overlapMajorTicks     flag to overlap major ticks
     showValues            set this flag to show values
     closerThanValue       show data if closer than this
     closerThanUnits       closer units (hr,min,sec,day)
     useSameYRange         flag to use the same y range
     numMajorTicks         number of major ticks to use
     numMinorTicks         number of minor ticks to use
     skipBlanks            flag to skip blanks

    METHODS:
     SetProperty   procedure to set keywords
     GetProperty   procedure to get keywords
     GetAll        returns the entire structure
     GetTokenNames returns all the token name options
     GetTokenName  return a token name given an index
     GetUnitNames  returns all closer than unit options
     GetUnitName   returns a unit name given an index
     SetTokenValue places the string value of the token into the text object

    HISTORY:

    NOTES:

      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_page_settings, and
      call them in the same way as before

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_page_settings__define.pro $

(See spedas_gui/objects/spd_ui_page_settings__define.pro)

## SPD_UI_PANEL_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_panel_settings__define

    PURPOSE:
     Panel Settings object - holds the settings for panel traces, layout and grid

    CALLING SEQUENCE:
     panelTrace = Obj_New("SPD_UI_PANEL_SETTINGS")

    INPUT:
     none

    OUTPUT:
     panel setting object reference

    ATTRIBUTES:
     panelNames         list of panel names
     titleobj           titleobj panel
     titleMargin        the margin between the plot and the title in pts
     overlay            set this flag to overlay title
     row                current row
     col                current column
     rSpan              number of rows to span
     cSpan              number of columns to span
     bottom             flag indicating value was set by user
     bvalue             value of bottom position
     bunit              unit of  position value 0=pt, 1=in, 2=cm, 3=mm
     left               flag indicating value was set by user
     lValue             value of left position
     lUnit              unit of  position value 0=pt, 1=in, 2=cm, 3=mm
     width              flag indicating value was set by user
     wValue             value of width position
     wUnit              unit of  position value 0=pt, 1=in, 2=cm, 3=mm
     height             flag indicating value was set by user
     hValue             value of height position
     hUnit              unit of  position value 0=pt, 1=in, 2=cm, 3=mm
     relVertSize        relative size (percentage)
     backgroundColor    background color
     framecolor         frame color
     framethick         framethickness

    METHODS:
     SetProperty  procedure to set keywords
     GetProperty  procedure to get keywords
     GetAll       returns the entire structure
     GetUnitNames returns a string array of possible unit values
     GetUnitName  returns a string containing the name of the unit

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_panel_settings, and
      call them in the same way as before

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_panel_settings__define.pro $

(See spedas_gui/objects/spd_ui_panel_settings__define.pro)

## SPD_UI_PANEL__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_panel__define

    PURPOSE:
     generic object for a panel

    CALLING SEQUENCE:
     panel = Obj_New("SPD_UI_PANEL")

    INPUT:
     none

    ATTRIBUTES:

    traceSettings IDL_Container object storing trace settings for each set of data quantities to be plotted
    traceFillSettings IDL_Container object storing settings for each pair of lines to fill between
    windowID    ID for parent window (defaults to -1)
    name        name for this panel
    id          unique identifier for this panel
    settings    property object for this panel
    xAxis       x axis properties object
    yAxis       y axis properties object
    zAxis       z axis properties object
    tracking    flag set if tracking is on
    isActive    flag set if panel is displayed
    syncflag    flag set if label and trace colors are synced
    variables   idl container of variable objects
    showvariables flag indicates whether variables should be displayed or not
    markers     idl container of marker objects

    OUTPUT:
     panel object reference

    METHODS:
     GetProperty
     GetAll
     GetLayoutStructure
     SetLayoutStructure
     SetProperty

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_panel, and
      call them in the same way as before

    $LastChangedBy: nikos $
    $LastChangedDate: 2017-11-20 10:43:28 -0800 (Mon, 20 Nov 2017) $
    $LastChangedRevision: 24317 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_panel__define.pro $

(See spedas_gui/objects/spd_ui_panel__define.pro)

## SPD_UI_PLUGIN_MANAGER

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
        spd_ui_plugin_manager

    PURPOSE:
        Interface for SPEDAS plugins

    $LastChangedBy: nikos $
    $LastChangedDate: 2016-10-11 16:59:54 -0700 (Tue, 11 Oct 2016) $
    $LastChangedRevision: 22089 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_plugin_manager__define.pro $

(See spedas_gui/objects/spd_ui_plugin_manager__define.pro)

## SPD_UI_PROMPT_OBJ__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

     Name: spd_ui_prompt_obj

     Purpose:
         For encapsulating access to the prompt interface in the SPEDAS GUI

     Keywords:
         msg: message to display in the prompt
         gui_id: id of the parent (GUI) widget
         historyWin: history window object, for sending text to the history window
         statusBar: status bar object, for sending text to the status bar

     Output:
         reference to the new prompt object

     Methods:
         sendtoScreen: creates the prompt

     Examples:
         ; create the object
         gui_prompt_obj = obj_new('SPD_UI_PROMPT_OBJ', historyWin=historyWin, statusBar=statusBar)
         ; send the prompt to the user
         user_selection = gui_prompt_obj->sendtoScreen('Are you sure you would like to overwrite this data?', 'Overwrite Data?', gui_id = gui_id)
         ; check the option selected by the user
         ...

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_prompt_obj__define.pro $

(See spedas_gui/objects/spd_ui_prompt_obj__define.pro)

## SPD_UI_READWRITE__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_readwrite__define

    PURPOSE:
     Base class for object serialize/de-serialize methods.  This class
     has no data members and should not be instantiated, only inherited
     from.  It uses IDL's rudimentary reflection capabilities to
     figure out which fields need to be read/written, and what their
     types are.

    INPUT:
     none

    KEYWORDS:
     none

    OUTPUT:
     none

    METHODS:
     read  Read an object from a file
     write Write an object to a file
     test  Write an object, read it back into a new object, write new object

    HISTORY:

    $LastChangedBy: pcruce $
    $LastChangedDate: 2015-01-12 16:43:43 -0800 (Mon, 12 Jan 2015) $
    $LastChangedRevision: 16649 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_readwrite__define.pro $

(See spedas_gui/objects/spd_ui_readwrite__define.pro)

## SPD_UI_SCROLL_BAR__DEFINE.PRO

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_scroll_bar__define.pro

    PURPOSE:
     Object created for data slider widget. Allows scrolling back
     and forth along the data range when panels are locked.

    CALLING SEQUENCE:
     sb = obj_new('SPD_UI_SCROLL_BAR', parentID, xScreenSize, windowStorage, loadedData, drawObject, statusbar, $
                                       value = 500, range = [0,1000])

    ATTRIBUTES:
     id: slider widget's ID
     parent: parent widget's ID
     xsize: screen size, in pixels, of the slider bar
     range: the numerical integer range about which the slider can move, [0,1000] by default
     value: the current value of the slider, zero (fully left) in the absence of data

    PUBLIC METHODS:
     getValue: Allows retrieval of value, range, and xsize
     setValue: Allows setting of value and xsize, mainly for the purpose of gui resize events
     update: (Will be called most often) Update procedure to be called any time changes have
             been made to the locked status or the locked panel's range.

    NOTES:
     Created 7-13-09

     Behavior:
       No locked panels: Scroll bar should be zeroed and desensitized
       Locked panels w/o valid data: Scroll bar should be centered and desensitized
       Locked panel w/ valid data: Scroll bar should be sensitized, position will
                                   depend on the data and panel ranges.

    HISTORY:

(See spedas_gui/objects/spd_ui_scroll_bar__define.pro)

## SPD_UI_SPECTRA_SETTINGS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_spectra_settings__define

    PURPOSE:
     spectra properties is an object that holds all of the settings necessary for
     spectral data plots

    CALLING SEQUENCE:
     spectraSettings = Obj_New("SPD_UI_SPECTRA_SETTINGS")

    INPUT:
     none

    KEYWORDS:
     dataX              string naming the x component of the spectral plot
     dataY              string naming the y component of the spectral plot
     dataz              string naming the z component of the spectral plot

    OUTPUT:
     spectra property object reference

    METHODS:
     SetProperty    procedure to set keywords
     GetProperty    procedure to get keywords
     GetAll         returns the entire structure
     GetPlacements  returns string array of placement options
     GetPlacement   returns name of placement option given an index
     GetColorTables returns string array of color tables
     GetColorTable  returns name of color table given an index

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_spectra_settings, and
      call them in the same way as before

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_spectra_settings__define.pro $

(See spedas_gui/objects/spd_ui_spectra_settings__define.pro)

## SPD_UI_SYMBOL__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_symbol__define

    PURPOSE:
     generic object for IDL symbols

    CALLING SEQUENCE:
     symbol = Obj_New("SPD_UI_SYMBOL")

    INPUT:
     none

    KEYWORDS:
     name       name of symbol
                  0 = No symbol
                  1 = Plus sign, `+' (default)
                  2 = Asterisk
                  3 = Period (Dot)
                  4 = Diamond
                  5 = Triangle
                  6 = Square
                  7 = X
                  8 = "Greater-than" Arrow Head (>)
                  9 = "Less-than" Arrow Head (<)
     id         IDL graphics symbol index (0-9)
     show       set this to display symbol (default = 1)
     color      name of the color for this symbol (default is black)
     rgb        [r, g, b] value for the color for this symbol
     fill       set this to fill symbol (default = 0)
     size       size of the symbol (default = 2)

    OUTPUT:
     symbol object reference

    METHODS:
     GetProperty
     GetAll
     SetProperty
     GetSymbolName
     GetSymbolId
     GetSymbols

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_symbol, and
      call them in the same way as before

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_symbol__define.pro $

(See spedas_gui/objects/spd_ui_symbol__define.pro)

## SPD_UI_TEMPLATE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_template

    PURPOSE:
      Top level object to manage the spedas gui settings template.  Mainly provides a root for serialization a la, spd_ui_document

    CALLING SEQUENCE:
     template = Obj_New("spd_ui_template")

    METHODS:
      GetProperty
      SetProperty

    HISTORY:

    NOTES:
      This object differs from other gui objects with respect to its getProperty,setProperty,getAll,setAll methods.  These methods are now provided dynamically
      by spd_ui_getset, so you only need to modify the class definition and the init method to if you want to add or remove a property from the object.

    $LastChangedBy: jimm $
    $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $
    $LastChangedRevision: 14326 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_template__define.pro $

(See spedas_gui/objects/spd_ui_template__define.pro)

## SPD_UI_TEXT__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_text__define

    PURPOSE:
     generic object for character strings

    CALLING SEQUENCE:
     text = Obj_New("SPD_UI_TEXT")

    INPUT:
     none

    KEYWORDS:
    value     what's contained in the string
    font      font names ('Time New Roman', etc...)
    format    font formats ('bold', 'italic', etc..)
    color     name of color for text
    size      character size
    thickness character thickness
    show      flag to display text

    OUTPUT:
     text object reference

    METHODS:
     GetProperty
     GetAll
     SetProperty
     GetFonts
     GetFont
     GetFontIndex
     GetFormats
     GetFormat
     GetFormatIndex

    HISTORY:

    $LastChangedBy: aaflores $
    $LastChangedDate: 2016-05-17 14:51:47 -0700 (Tue, 17 May 2016) $
    $LastChangedRevision: 21100 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_text__define.pro $

(See spedas_gui/objects/spd_ui_text__define.pro)

## SPD_UI_TIME_RANGE__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_time_range__define

    PURPOSE:
     time range object

    CALLING SEQUENCE:
     timeRange = Obj_New("SPD_UI_TIME_RANGE")

    INPUT:
     none

    KEYWORDS:
     startTime  start time
     endTime    end time

    OUTPUT:
     time range object reference

    METHODS:
     SetProperty  procedure to set keywords
     GetProperty  procedure to get keywords
     GetStartTime returns the start time (default format is double)
     GetEndTime  returns the stop time (default format is double)
     GetDuration  returns duration in seconds
     SetStartTime set start time
     SetEndTime   set end time
    HISTORY:

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-13 09:09:53 -0700 (Mon, 13 Jul 2015) $
    $LastChangedRevision: 18094 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_time_range__define.pro $

(See spedas_gui/objects/spd_ui_time_range__define.pro)

## SPD_UI_TIME__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_time__define

    PURPOSE:
     generic time object

    CALLING SEQUENCE:
     To Create:    myTimeObj = Obj_New("SPD_UI_TIME")
     To Use:       data = myDataObj->GetAll()

    INPUT:
      optional - can provide a time value double, string, or epoch
                 defaults to current time
      tDouble
      tString
      tEpoch

    OUTPUT:
     data object

    METHODS:
     UpdateStructure
     GetStructure
     GetAll
     SetProperty
     GetProperty

    HISTORY:

    $LastChangedBy: jimm $
    $LastChangedDate: 2019-05-13 11:23:24 -0700 (Mon, 13 May 2019) $
    $LastChangedRevision: 27229 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_time__define.pro $

(See spedas_gui/objects/spd_ui_time__define.pro)

## SPD_UI_VARIABLE__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_variable__define

    PURPOSE:
     Variable object, displayed at bottom of window

    CALLING SEQUENCE:
     variable = Obj_New("SPD_UI_VARIABLE")

    INPUT:
     none

    ATTRIBUTES:
     fieldName       name of variable to be displayed
     controlName     name of variable to be used for control
     text            text object for this variable
     symbol          numeric symbols 0=none, 1=degrees, 2=seconds, 3=minutes
     format          numeric formatting style (e.g. 12.34, 1.23e4)
     minRange        the minimum range for the variable
     maxRange        the maximum range for the variable
     scaling         the type of scaling used with the variable 0:Linear,1 Log10, 2:LogN
     useRange        0 = auto,1= user defined,2 = xrange from panel

    OUTPUT:
     variable object reference

    METHODS:
     SetProperty   procedure to set keywords
     GetProperty   procedure to get keywords
     GetAll        returns the entire structure
     GetSymbols    returns array symbol names
     GetSymbol     returns a symbol name given an index
     Copy          clone the object

    HISTORY:

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_variable, and
      call them in the same way as before

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-13 16:07:09 -0700 (Mon, 13 Jul 2015) $
    $LastChangedRevision: 18115 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_variable__define.pro $

(See spedas_gui/objects/spd_ui_variable__define.pro)

## SPD_UI_WIDGET_TREE__DEFINE.PRO

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_widget_tree__define.pro

    PURPOSE:
      Object representing the loaded data tree compound widget.

    CALLING SEQUENCE:
      wt = obj_new('spd_ui_widget_tree',parentid,uvalue,loadedData,xsize=200,ysize=200,mode=1)

    Examples:
     1.
       widget_control,event.id,get_value=val
       print, val->getvalue()

     2. obj = obj_new('spd_ui_widget_tree,tlb,'TREE',loadedData,uname='TREE_NAME')
        id = widget_info(find_by_uname='TREE_NAME')
        widget_control,id,get_value=val
        print,val->getvalue()
        val->setProperty,multi=0

     Attributes:

      uvalue: the user value that will be returned by event handler
      uname: the user name that can be used to identify the widget
      xsize: the x axis length of the tree viewing area(scrollbars will be added automatically)
      ysize: the y axis length of the tree viewing area(scrollbars will be added automatically)
      mode: the visualization/selection mode(see NOTES below)
      multi: whether multiple selections with ctrl/shift click are allowed
      leafonly: 1: indicates selection may be only made at the lowest level of the tree
                0: indicates selections may be done at any point in the tree

    NOTES:

      There are 4-different selection modes for this widget.  Each selection
      mode will be appropriate for different panels.
      Mode 0: tplot-layout selection,
              data-processing selection,
              loaded-data-selection

      Mode 1 : variable-selection,
               x-layout selection,
               y-lineplot-layout selection
               line-trace selection.
               save-data-as

      Mode 2 : y-spectra-layout selection
               z-spectra-layout selection
               (possibly data-processing)

      Mode 3 : Calculate Panel
               Possibly future versions of data analysis

      Mode Descriptions
      Mode 0 is a tplot-like selection.  It provides access to
      only the groupname and doesn't let the user drill down into internal
      quantities.

      When values are returned from mode 0, an array of pointers to
      structs that store that names of the contained variables will be returned.
      (or 0 on fail)

      Mode 1 is a 1-D component selection.  It allows the user to
      look at and select internal 1-d quantities,

      When values are returned from mode 1, an array of strings will be
      returned. (or 0 on fail)

      Mode 2 is a 2-D component selection.  It allows the user to look at
      and select any 2-d quantities.  In mode 2 yaxis-values will
      not be grouped inside their containing group, instead they will be grouped
      side-by-side with their containing group.

      Values returned from mode 2 will be an array of strings of groupnames.
      (or 0 on fail)

      Mode 3 allows selection of either group quantities('tha_state_pos') or
      components('tha_state_pos_x'), but does not allow branch selection.
      (ie Cannot grab spedas and get all quantities.)

      Public Methods:
      update: Call this routine after loaded data has been changed by
              some other process
      getProperty: Use this to get the current widget_tree settings
      setProperty: Use this to change the current widget_tree settings
      getValue(): Use this to return a list of the current selections.

      The other methods should NOT be called by external code.  Making code
      that uses them will make this code very difficult to maintain. So if
      you need a feature, just request that it be added instead.

    HISTORY:
    $LastChangedBy: jwl $
    $LastChangedDate: 2022-03-01 17:19:50 -0800 (Tue, 01 Mar 2022) $
    $LastChangedRevision: 30639 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_widget_tree__define.pro $

(See spedas_gui/objects/spd_ui_widget_tree__define.pro)

## SPD_UI_WINDOWS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_windows__define

    PURPOSE:
     This is an array of window objects and represents all the data that has been loaded
     for this session.

    CALLING SEQUENCE:

    OUTPUT:
     reference to window object array

    ATTRIBUTES:
     array of window objects

    METHODS:
     SetProperty
     GetProperty
     Add             creates a new window object and adds it to the array
     GetActive       returns active window object
     SetActive       makes a window object active given a windowID
     GetSelected     returns the selected window object
     SetSelected     makes a window object selected

     NOTE: These 3 methods do not appear to exist
     GetDefaultTitle returns a title, if the user has provided a default one
     AskForTitle     return 1=if user wants to be asked each time, 0=don't ask, use default
     ClearActive     resets active windows to inactive (must provide a window ID)

     ClearAll        clears either selected or active windows (must use a keyword)
     AddObject       adds a new object to the array (method for internal use)
     RemoveObject    removes an object from the array (routine for internal use)
     GetObjects      returns an array of all data objects, can also take a name or group name (method for internal use)

      NOTE:

      Markers can be active and/or selected.
      ACTIVE:  If a window is 'active' then it is currently displayed on a window.
      If the window is no longer active, then the window is no longer
      active and must be deactivated. To make a window inactive the user must provide a windowID.
      SELECTED: If a window is 'selected' then it is either a new window (which automatically
      by default, becomes the selected window) or the user has clicked on a specific
      window to select it. There can only be one 'selected' window at a time.

    HISTORY:

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-13 09:37:27 -0700 (Mon, 13 Jul 2015) $
    $LastChangedRevision: 18098 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_windows__define.pro $

(See spedas_gui/objects/spd_ui_windows__define.pro)

## SPD_UI_WINDOW_MENUS__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

      Name: SPD_UI_WINDOW_MENUS

      Purpose: Manages window menu

    $LastChangedBy: egrimes $
    $LastChangedDate: 2014-12-18 13:19:05 -0800 (Thu, 18 Dec 2014) $
    $LastChangedRevision: 16510 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_window_menus__define.pro $

(See spedas_gui/objects/spd_ui_window_menus__define.pro)

## SPD_UI_WINDOW__DEFINE

[Previous Routine] [Next Routine] [List of Routines]

    NAME:
     spd_ui_window__define

    PURPOSE:
     window object, created each time a new window is opened

    CALLING SEQUENCE:
     window = Obj_New("SPD_UI_WINDOW")

    INPUT:
     none

    ATTRIBUTES:
     name        name for this window
     id          unique identifier for this window
     nRows       number of rows
     nCols       number of columns
     isActive    flag set if window is displayed
     panels      pointer to panel objects on this window
     settings    A list of settings for this window
     panelId     Current value of panelId
     tracking    flag set if tracking is on

    OUTPUT:
     window object reference

    METHODS:
     GetProperty
     GetAll
     SetProperty
     Copy
     getMargins
     repack

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_window, and
      call them in the same way as before

    $LastChangedBy: egrimes $
    $LastChangedDate: 2015-07-13 15:01:15 -0700 (Mon, 13 Jul 2015) $
    $LastChangedRevision: 18111 $
    $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/spedas_gui/objects/spd_ui_window__define.pro $

(See spedas_gui/objects/spd_ui_window__define.pro)

## SPD_UI_ZAXIS_SETTINGS__DEFINE

[Previous Routine] [List of Routines]

    NAME:
     spd_ui_zaxis_settings__define

    PURPOSE:
     zaxis_settings is an object that holds all of the settings necessary for
     spectral data plots that are common to the entire panel

    CALLING SEQUENCE:
     zaxisSettings = Obj_New("SPD_UI_ZAXIS_SETTINGS")

    INPUT:
     none

    KEYWORDS:

     xAxisIndex         flag to index x axis
     yAxisIndex         flag to index y axis
     colorTable         droplist value of color tables
     minRange           minimum range value
     maxRange           maximum range value
     fixed              flag to use fixed min/max values
     tickNum            the number of z-axis ticks
     minorTickNum       the number of minor ticks between majors
     logMinorTickType   full-interval,first-magnitude,last-magnitude,even-spacing
     annotationStyle    droplist value for annotation style
     annotateTextObject a text object to indicate the size,color,font,format of the annotation text
     annotationOrientation flag indicating horizontal or vertical annotations 0=horizontal, 1=vertical
     annotateExponent   Flag indicates whether to force annotations into an exponential format.  0: default behavior, 1: Always exponential, 2: Never exponential
     labelTextObject a text object to indicate the size,color,font,format of the label text - this is being treated as the z title
     subtitleTextObject a text object for the subtitle
     labelOrientation flag indicating horizontal/vertical text
     labelMargin in number of pts
     lazylabels         flag indicating if underscores will be converted to carriage returns
     scaling            0=Linear, 1=Log10, 2= Natural Log
     placement          droplist value of placement location
     margin             number of points between plot & zaxis
     showFrequencies    flag to show frequencies
     frequencyMin       minimum value for showing frequencies
     frequencyMax       maximum value for showing frequencies
     autoticks          direct the draw object to make decisions about tick positioning automatically, and mutate axis object settings

    OUTPUT:
     spectra property object reference

    METHODS:
     SetProperty    procedure to set keywords
     GetProperty    procedure to get keywords
     GetAll         returns the entire structure
     GetPlacements  returns string array of placement options
     GetPlacement   returns name of placement option given an index
     GetColorTables returns string array of color tables
     GetColorTable  returns name of color table given an index

    NOTES:
      Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class
      spd_ui_getset.  You can still call these methods when using objects of type spd_ui_zaxis_settings, and
      call them in the same way as before

    $LastChangedBy:pcruce $
    $LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $
    $LastChangedRevision:6707 $
    $URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/spedas/spd_ui/objects/spd_ui_zaxis_settings__define.pro $

(See spedas_gui/objects/spd_ui_zaxis_settings__define.pro)