Home > marsbar > @marmoire > marmoire.m

marmoire

PURPOSE ^

marmoire - class constructor for marmoire container type

SYNOPSIS ^

function [o, others] = marmoire(params, varargin)

DESCRIPTION ^

 marmoire - class constructor for marmoire container type
 FORMAT [o, others] = marmoire(params, varargin)
  
 the marmoire object is to store various bits of stuff
 (armoire is the French for cupboard).
 This cupboard is to put items which I will want to fish out 
 from time to time.
 
 The items may well be associated with a filename
 If they are associated with a filename when set, they 
 are assumed to have been saved already.
 If not, they are flagged as awaiting a save

 If the data changes, you can indicate this with the 
 update method, which changes the data, and flags for a save

 The permissable actions are:

 add_item         - add an item to the armoire
 item_exists      - ask if there an exists an item of given name
 add_if_absent    - adds item if it does not yet exist
 set_item_data    - sets data for item 
 get_item_data    - gets data from item
 set_item_data_ui - sets data, getting via UI
 save_item_data   - save data for item, if required
 save_item_data_ui - saves, using GUI to ask for filename
 update_item_data  - updates data, sets flag to show change
 clear_item_data   - clears data for item
 isempty_item_data - returns 1 if no data for item
 item_needs_save   - returns 1 if this item needs a save

 Each item is stored in a field 'items' in the object

 The name of item is the same as the name of the field in the items field
 of the object, and this is the 'item' argument to the various methods.

 Each item field cotains a structure, widh the data contained in a field
 'data'. The rest of the fields in the structure are parameters telling
 the object how to deal with the various manipulations of the data.  So,
 each item requires the following fields:
                 
 data            - the data 
                   (or a filename which loads as the data - see the
                   char_is_filename field)
 has_changed     - flag, if set, means data has changed since first set
 save_if_changed - flag, if set, will try to save changed data when a
                   save is requested.  Saves can also be forced.
 leave_as_file   - flag, if set, will attempt to leave the data, defined
                   by the filename, on the disk, not in memory, and only
                   load the data for a 'get'.  
                   Otherwise, if a set occurs, and the data field is
                   empty, will load data into the global variable when
                   'set'ing field and leave it there.
                   If the data changes, and requires a save, this field
                   has no function, until the next save.
 file_name       - file name of .mat file containing data
                   If data is empty, and file_name is not, 
                   an attempt to 'get' data will load contents of
                   file_name
 default_file_name - default filename offered for save 
 file_type       - type of file to load ('mat' or 'ascii')
 char_is_filename - flag, if set, char data is assumed to be a filename
 filter_spec     - filter spec for uigetfile (see help uigetfile)
 prompt          - prompt for uigetfile
 verbose         - flag, if set, displays more information during
                   processing
 set_action      - actions to perform when item is set
                   in form of callback string.  This is executed
                   in the 'i_set' subfunction, and can use all
                   variables functions defined therein.  See programmers
                   notes in the function for callback format
 set_action_if_update - flag, if set, applied set_action for 'update' as
                   well as 'set'
 set_action_if_clear - flag, if set, applied set_action for 'clear' as
                   well as 'set'

 $Id$

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [o, others] = marmoire(params, varargin)
0002 % marmoire - class constructor for marmoire container type
0003 % FORMAT [o, others] = marmoire(params, varargin)
0004 %
0005 % the marmoire object is to store various bits of stuff
0006 % (armoire is the French for cupboard).
0007 % This cupboard is to put items which I will want to fish out
0008 % from time to time.
0009 %
0010 % The items may well be associated with a filename
0011 % If they are associated with a filename when set, they
0012 % are assumed to have been saved already.
0013 % If not, they are flagged as awaiting a save
0014 %
0015 % If the data changes, you can indicate this with the
0016 % update method, which changes the data, and flags for a save
0017 %
0018 % The permissable actions are:
0019 %
0020 % add_item         - add an item to the armoire
0021 % item_exists      - ask if there an exists an item of given name
0022 % add_if_absent    - adds item if it does not yet exist
0023 % set_item_data    - sets data for item
0024 % get_item_data    - gets data from item
0025 % set_item_data_ui - sets data, getting via UI
0026 % save_item_data   - save data for item, if required
0027 % save_item_data_ui - saves, using GUI to ask for filename
0028 % update_item_data  - updates data, sets flag to show change
0029 % clear_item_data   - clears data for item
0030 % isempty_item_data - returns 1 if no data for item
0031 % item_needs_save   - returns 1 if this item needs a save
0032 %
0033 % Each item is stored in a field 'items' in the object
0034 %
0035 % The name of item is the same as the name of the field in the items field
0036 % of the object, and this is the 'item' argument to the various methods.
0037 %
0038 % Each item field cotains a structure, widh the data contained in a field
0039 % 'data'. The rest of the fields in the structure are parameters telling
0040 % the object how to deal with the various manipulations of the data.  So,
0041 % each item requires the following fields:
0042 %
0043 % data            - the data
0044 %                   (or a filename which loads as the data - see the
0045 %                   char_is_filename field)
0046 % has_changed     - flag, if set, means data has changed since first set
0047 % save_if_changed - flag, if set, will try to save changed data when a
0048 %                   save is requested.  Saves can also be forced.
0049 % leave_as_file   - flag, if set, will attempt to leave the data, defined
0050 %                   by the filename, on the disk, not in memory, and only
0051 %                   load the data for a 'get'.
0052 %                   Otherwise, if a set occurs, and the data field is
0053 %                   empty, will load data into the global variable when
0054 %                   'set'ing field and leave it there.
0055 %                   If the data changes, and requires a save, this field
0056 %                   has no function, until the next save.
0057 % file_name       - file name of .mat file containing data
0058 %                   If data is empty, and file_name is not,
0059 %                   an attempt to 'get' data will load contents of
0060 %                   file_name
0061 % default_file_name - default filename offered for save
0062 % file_type       - type of file to load ('mat' or 'ascii')
0063 % char_is_filename - flag, if set, char data is assumed to be a filename
0064 % filter_spec     - filter spec for uigetfile (see help uigetfile)
0065 % prompt          - prompt for uigetfile
0066 % verbose         - flag, if set, displays more information during
0067 %                   processing
0068 % set_action      - actions to perform when item is set
0069 %                   in form of callback string.  This is executed
0070 %                   in the 'i_set' subfunction, and can use all
0071 %                   variables functions defined therein.  See programmers
0072 %                   notes in the function for callback format
0073 % set_action_if_update - flag, if set, applied set_action for 'update' as
0074 %                   well as 'set'
0075 % set_action_if_clear - flag, if set, applied set_action for 'clear' as
0076 %                   well as 'set'
0077 %
0078 % $Id$
0079   
0080 % Programmers' notes
0081 % ------------------
0082 % set_action callbacks
0083 % callbacks should in the following formats;
0084 %
0085 % [o errf msg] = my_function(args)
0086 %
0087 %  The return argument 'o' is the modified whole object. If
0088 % 'errf' is set, the routine warns, and aborts the set action with the
0089 % 'msg'.
0090 %
0091 % The preferred args will give a format of are:
0092 % [o errf msg] = my_function(o, item, old_o)
0093 %
0094 % where o is the object after the data has been set, item is the name of
0095 % the item which has just been set, and old_o is the object before the
0096 % data was set.
0097 %
0098 % The available args are:
0099 % o               - the whole object with new data set
0100 % item            - the name of the item which has been set
0101 % old_o           - the object before the data was set.
0102 %
0103 % as well as:
0104 %
0105 % item_struct     - proposed whole item field contents
0106 % data            - proposed data to be inserted
0107 % passed_filename - filename passed to function
0108 %
0109 % and anything else you can see in context, for the line containing the
0110 % 'eval' statement in the do_set method
0111   
0112 myclass = 'marmoire';
0113 defstruct = struct('items', []);
0114 
0115 if nargin < 1
0116   params = [];
0117 end
0118 if isa(params, myclass)
0119   o = params;
0120   return
0121 end
0122 
0123 % fill with defaults, parse into fields for this object, children
0124 [pparams, others] = mars_struct('ffillsplit', defstruct, params);
0125 
0126 % add version tag (was CVS; now marsbar version)
0127 pparams.cvs_version = marsbar('ver');
0128 
0129 % Set as object
0130 o  = class(pparams, myclass);

Generated on Wed 11-May-2022 16:26:09 by m2html © 2003-2019