Deprecated: Return type of ResultWrapper::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 174

Deprecated: Return type of ResultWrapper::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 192

Deprecated: Return type of ResultWrapper::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 185

Deprecated: Return type of ResultWrapper::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 202

Deprecated: Return type of ResultWrapper::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/db/DatabaseUtility.php on line 163

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/languages/Language.php on line 2104

Warning: Trying to access array offset on value of type null in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php on line 104

Warning: Trying to access array offset on value of type null in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php on line 104

Warning: Trying to access array offset on value of type null in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php on line 105

Warning: Trying to access array offset on value of type null in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php on line 105

Warning: Trying to access array offset on value of type null in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php on line 106

Warning: Trying to access array offset on value of type null in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php on line 106

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php:105) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php:105) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php:105) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/skins/SkinTemplate.php on line 313
Difference between revisions of "Coding explore methods" - Rave Documentation

Difference between revisions of "Coding explore methods"

From Rave Documentation
Jump to: navigation, search
(Required Files)
(Required Files)
Line 13: Line 13:
  
 
=Required Files=
 
=Required Files=
Each explore method requires 3 files, but will probably also have several "update" files that run in response to certain user actions.  
+
Each explore method requires 2 files, but will probably also have several "update" files that run in response to certain user actions and maybe other functions used by your uicontrol callbacks.  
  
 
'''Required files:'''
 
'''Required files:'''
Line 20: Line 20:
 
**properties.updates = a cell array of strings that lists the [[events and updates]] that trigger an update for this explore method. This list should contain all events that require an update for ANY workspace object, i.e. if the event causes some [[workspace objects]] to require an update, but others to not require an update, the event SHOULD appear in this list.
 
**properties.updates = a cell array of strings that lists the [[events and updates]] that trigger an update for this explore method. This list should contain all events that require an update for ANY workspace object, i.e. if the event causes some [[workspace objects]] to require an update, but others to not require an update, the event SHOULD appear in this list.
 
*'''makeuicontrols<KEYWORD>''' - this file creates the uicontrols on the Customize tab that appear when the user selects this explore method from the menu on the Customize tab. You can also store the callbacks for these uicontrols in this file, or you can put them in their own files. The handles of all objects created by this function must be appended to the end of handles.tabobjects so that they will be correctly deleted when the user changes tabs. For most explore methods, this function should create a button that toggles the method on and off (although this doesnt make sense for all methods and is by no means required).
 
*'''makeuicontrols<KEYWORD>''' - this file creates the uicontrols on the Customize tab that appear when the user selects this explore method from the menu on the Customize tab. You can also store the callbacks for these uicontrols in this file, or you can put them in their own files. The handles of all objects created by this function must be appended to the end of handles.tabobjects so that they will be correctly deleted when the user changes tabs. For most explore methods, this function should create a button that toggles the method on and off (although this doesnt make sense for all methods and is by no means required).
 +
 +
Everything else is optional, but you will probably have one or more "update" files with filenames using this naming convention:
 +
 +
'''raveupdateexplore<EXPLORE METHOD KEYWORD><UPDATE TYPE>'''
 +
 +
You can also "overload" the update function for a particular workspace object by including a file named:
 +
 +
'''raveupdateexplore<EXPLORE METHOD KEYWORD><WORKSPACE OBJECT KEYWORD><UPDATE TYPE>'''
 +
 +
which will run only for the specified workspace object. For example, if your explore method's keyword is "zoomzoom" and it updates in response to the user changing the selection, and you need a special update behavior for histograms, you would include a function named:
 +
 +
raveupdateexplorezoomzoomhistogramisselected.m
 +
 +
Rave will run this function when you have a histogram that is using the zoomzoom explore method and the user changes the selected data for the dataset/analysis used by the histogram.
 +
 +
One potential issue is that these filenames can get very long. For example, raveupdateexplorezoomzoomhistogramisselected is 44 characters. The maximum allowable function name in matlab is 64 characters, so try not to use excessively long keywords.
 +
 +
=How does Rave know which explore methods a workspace object is using?=

Revision as of 14:19, 11 October 2013

Introduction

An "explore method" is a customization that can be applied to a workspace object to specialize it in some way. Yes, that is a vague definition. More importantly, explore methods provide a way for you to add a custom tab to a workspace object, which you can use to do pretty much anything.

Explore methods are the things that you access from the Customize tab. I call them explore methods because the Customize tab used to be called the "Explore tab," and all the references in the code still use "explore".

Explore methods live in the rave\exploremethods\ folder. Just like everything other rave plugin, each explore method goes in its own folder, whose name serves as the KEYWORD. All the files related to the explore method will also contain this KEYWORD, which is how Rave knows which files to use for which purposes.

In order for an explore method to be useable on a particular workspace object, one of the following conditions must be true:

  • The explore method keyword is listed in the workspace object's graphproperties file under properties.exploremethods
  • The workspace object key word is listed in the explore method's exploreproperties file under properties.workspaceobjects

This way, if you code a new workspace object you can let it access exising explore methods without having to change the explore methods' code, and if you code a new explore method you can let it access existing workspace objects without changing the workspace objects' code.

Required Files

Each explore method requires 2 files, but will probably also have several "update" files that run in response to certain user actions and maybe other functions used by your uicontrol callbacks.

Required files:

  • exploreproperties<KEWORD> - this is similar to the graphproperties file used by workspace objects, although it contains fewer properties. Note that the properties stored in this file should all be static. You should not add your own properties to this file... those things should be stored in the workspace object's udata.explore field as described below. This file must contain the following properties:
    • properties.longname = the string that appears in the menu on the Customize tab. This is the name of this method that the user will see.
    • properties.updates = a cell array of strings that lists the events and updates that trigger an update for this explore method. This list should contain all events that require an update for ANY workspace object, i.e. if the event causes some workspace objects to require an update, but others to not require an update, the event SHOULD appear in this list.
  • makeuicontrols<KEYWORD> - this file creates the uicontrols on the Customize tab that appear when the user selects this explore method from the menu on the Customize tab. You can also store the callbacks for these uicontrols in this file, or you can put them in their own files. The handles of all objects created by this function must be appended to the end of handles.tabobjects so that they will be correctly deleted when the user changes tabs. For most explore methods, this function should create a button that toggles the method on and off (although this doesnt make sense for all methods and is by no means required).

Everything else is optional, but you will probably have one or more "update" files with filenames using this naming convention:

raveupdateexplore<EXPLORE METHOD KEYWORD><UPDATE TYPE>

You can also "overload" the update function for a particular workspace object by including a file named:

raveupdateexplore<EXPLORE METHOD KEYWORD><WORKSPACE OBJECT KEYWORD><UPDATE TYPE>

which will run only for the specified workspace object. For example, if your explore method's keyword is "zoomzoom" and it updates in response to the user changing the selection, and you need a special update behavior for histograms, you would include a function named:

raveupdateexplorezoomzoomhistogramisselected.m

Rave will run this function when you have a histogram that is using the zoomzoom explore method and the user changes the selected data for the dataset/analysis used by the histogram.

One potential issue is that these filenames can get very long. For example, raveupdateexplorezoomzoomhistogramisselected is 44 characters. The maximum allowable function name in matlab is 64 characters, so try not to use excessively long keywords.

How does Rave know which explore methods a workspace object is using?


Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php:105) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php:105) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php:105) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/profiler/SectionProfiler.php:105) in /var/www/vhosts/rave.gatech.edu/httpdocs/help/includes/WebResponse.php on line 37