Newer
Older
function error = headerForm(hTsgGUI)
%
% Input
% -----
% hTsgGUI ............ Handel to the main user interface
%
% Output
% ------
% error .............. 1: OK ; -1 : an error occured
% $Id$
error = -1;
% Get the data from the application GUI
% -------------------------------------
tsg = getappdata( hTsgGUI, 'tsg_data');
% Define uicontrol start position
% -------------------------------
left = .01;
bottom = .95;
inc_x = 0.5;
inc_y = 0.03;
% set default uicontrol size
% --------------------------
default_height = 0.018;
default_length = .1;

jacques.grelet_ird.fr
committed
% get actual date
% ---------------
date = datestr(now,30);
% Get global attributes list from class tsg_nc with file 'tsg_ncattr.csv'
% -----------------------------------------------------------------------
nca = tsg_nc('tsg_ncattr.csv');
nca_keys = keys(nca);
% header Uicontrols in a new figure
% ---------------------------------
hHeaderFig = figure(...
'BackingStore','off',...
'Name', 'TSG GLOBAL ATTRIBUTES', ...
'NumberTitle', 'off', ...
'Resize', 'on', ...
'Menubar','none', ...
'Toolbar', 'none', ...
'Tag', 'GLOBAL_ATTRIBUTES', ...
'Visible','on',...
'Units', 'normalized',...
'Position',get(hTsgGUI,'Position'), ...
'Color', get( 0, 'DefaultUIControlBackgroundColor' ));
% bg = [0.92549 0.913725 0.847059] = get( 0, 'DefaultUIControlBackgroundColor' );
% Display fields from class
% -------------------------
for i=1:numel(nca_keys)

jacques.grelet_ird.fr
committed

jacques.grelet_ird.fr
committed
% ------------------------

jacques.grelet_ird.fr
committed
% get all structure for the key

jacques.grelet_ird.fr
committed
% -----------------------------

jacques.grelet_ird.fr
committed
% set tsg.DATE_UPDATE
% -------------------
if strcmp(key, 'DATE_UPDATE')
tsg.(key) = [date(1:8) date(10:15)];
end
% check for empty field and replace them by default value
% -------------------------------------------------------
if isempty(s.length), s.length = default_length; end;
if isempty(s.height), s.height = default_height; end;

jacques.grelet_ird.fr
committed
% display dynamically uicontrol text
% use of char function to prevent error when field is empty [] => ''
% ------------------------------------------------------------------
uicontrol(...
'Parent', hHeaderFig, ...
'Units', 'normalized', ...
'Style', 'Text', ...
'HorizontalAlignment', 'left', ...
'Position',[left, bottom, .13, .0135], ...
'TooltipString', char(s.comment), ...
'String', char(s.name) );
% display dynamically uicontrol
% -----------------------------
ui = uicontrol(...
'Parent', hHeaderFig, ...
'Units', 'normalized', ...
'BackgroundColor', 'w', ...
'Style', char(s.uicontrolType), ...
'Fontsize', tsg.fontSize-1, ...
'HorizontalAlignment', char(s.horizontalAlignment), ...

jacques.grelet_ird.fr
committed
'Position',[left+.11, bottom, s.length, s.height], ...
'String', char(s.string), ...
'Value', s.value, ...
'Tag', key);

jacques.grelet_ird.fr
committed
% display conventions field if exist
% ----------------------------------
uicontrol(...
'Parent', hHeaderFig, ...
'Units', 'normalized', ...
'Style', 'text', ...
'Fontsize', tsg.fontSize-1, ...

jacques.grelet_ird.fr
committed
'HorizontalAlignment', 'left', ...
'Position',[left+.22, bottom, .1, s.height], ...
'String', char(s.conventions) );

jacques.grelet_ird.fr
committed
% set dynamically uicontrol from tsg struct
% -----------------------------------------
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
switch s.uicontrolType
case 'popupmenu'
str = cellstr(get(ui,'String'));
ind = strfind(str,tsg.(key));
for k=1:numel(ind)
if ~isempty(ind{k})
set(ui, 'value', k);
end
end
case 'edit'
set(ui, 'string', tsg.(key));
case 'checkbox'
% not yet implemented !!!
end
% Check vertical position of last uicontrol and creation new colomn
% -----------------------------------------------------------------
bottom = bottom - inc_y;
if bottom < .15
bottom = 0.95;
left = left + inc_x;
end
end
% CONTINUE PUSH BUTTON
% --------------------
% The Continue (valid) button
uicontrol( ...
'Parent', hHeaderFig, ...
'Style','pushbutton',...
'Units', 'normalized', ...
'Position',[.05, .1, .05, .02],...
'String','Continue',...
'Interruptible','off',...
'BusyAction','cancel',...
'Tag','PUSH_BUTTON',...
'Callback', @continueCallback);
% CANCEL PUSH BUTTON
% ------------------
% The cancel button
uicontrol( ...
'Parent', hHeaderFig, ...
'Style','pushbutton',...
'Units', 'normalized', ...
'Position',[.15, .1, .05, .02],...
'String','Cancel',...
'Interruptible','off',...
'BusyAction','cancel',...
'Tag','PUSH_BUTTON',...
'Callback', @cancelCallback);
% Build structure container for graphic handles with tag property defined.
% ------------------------------------------------------------------------
data = guihandles(hHeaderFig);
% record data struct in application data object
% ---------------------------------------------
%guidata(hHeaderFig, data);
% stop execution until push-button Continue was press
% ---------------------------------------------------
uiwait(hHeaderFig);
%% Nested callback
% -----------------------------------------------------------------------
function continueCallback(obj, event)
% get uicontrol fields and populate tsg structure
% ------------------------------------------------
% for text only
% -------------
tsg.CYCLE_MESURE = get(data.CYCLE_MESURE, 'string');
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
tsg.PLATFORM_NAME = get(data.PLATFORM_NAME, 'string');
tsg.SHIP_CALL_SIGN = get(data.SHIP_CALL_SIGN, 'string');
tsg.SHIP_MMSI = get(data.SHIP_MMSI, 'string');
tsg.TSG_TYPE = get(data.TSG_TYPE, 'string');
tsg.TSG_NUMBER = get(data.TSG_NUMBER, 'string');
tsg.TINT_TYPE = get(data.TINT_TYPE, 'string');
tsg.TINT_NUMBER = get(data.TINT_NUMBER, 'string');
tsg.DATA_TYPE = get(data.DATA_TYPE, 'string');
tsg.DATA_MODE = get(data.DATA_MODE, 'string');
tsg.SAMPLING_PERIOD = get(data.SAMPLING_PERIOD, 'string');
tsg.DATE_START = get(data.DATE_START, 'string');
tsg.DATE_END = get(data.DATE_END, 'string');
tsg.SOUTH_LATX = get(data.SOUTH_LATX, 'string');
tsg.NORTH_LATX = get(data.NORTH_LATX, 'string');
tsg.WEST_LONX = get(data.WEST_LONX, 'string');
tsg.EAST_LONX = get(data.EAST_LONX, 'string');
tsg.FORMAT_VERSION = get(data.FORMAT_VERSION, 'string');
tsg.DATE_CREATION = get(data.DATE_CREATION, 'string');
tsg.DATE_UPDATE = get(data.DATE_UPDATE, 'string');
tsg.DATA_RESTRICTIONS = get(data.DATA_RESTRICTIONS, 'string');
tsg.COMMENT = get(data.COMMENT, 'string');
tsg.PROJECT_NAME = get(data.PROJECT_NAME, 'string');
tsg.PI_NAME = get(data.PI_NAME, 'string');
tsg.DATA_CENTRE = get(data.DATA_CENTRE, 'string');
tsg.DATA_ACQUISITION = get(data.DATA_ACQUISITION, 'string');
tsg.PROCESSING_CENTRE = get(data.PROCESSING_CENTRE, 'string');
tsg.PROCESSING_STATES = get(data.PROCESSING_STATES, 'string');

jacques.grelet_ird.fr
committed
% for popupmenu only, deblank remove all trailling whitespace char
% ----------------------------------------------------------------
tsg.TSG_TYPE = deblank(tsg.TSG_TYPE(get(data.TSG_TYPE, 'value'),:));
tsg.TINT_TYPE = deblank(tsg.TINT_TYPE(get(data.TINT_TYPE, 'value'),:));
tsg.DATA_MODE = deblank(tsg.DATA_MODE(get(data.DATA_MODE, 'value'),:));
tsg.PI_NAME = deblank(tsg.PI_NAME(get(data.PI_NAME, 'value'),:));
tsg.DATA_ACQUISITION = deblank(tsg.DATA_ACQUISITION(get(data.DATA_ACQUISITION, 'value'),:));
tsg.PROCESSING_CENTRE = deblank(tsg.PROCESSING_CENTRE(get(data.PROCESSING_CENTRE, 'value'),:));
tsg.PROCESSING_STATES = deblank(tsg.PROCESSING_STATES(get(data.PROCESSING_STATES, 'value'),:));
% Save tsg structure
% ------------------
setappdata( hTsgGUI, 'tsg_data', tsg);
% close windows (replace call to uiresume(hHeaderFig))
% ----------------------------------------------------
close(hHeaderFig);
% flushes the event queue and updates the figure window
% -----------------------------------------------------
drawnow;
% return no error code (true)
% ---------------------------
error = 1;
end
% -----------------------------------------------------------------------
function cancelCallback(obj, event)
% close windows
% -------------
close(hHeaderFig);
% flushes the event queue and updates the figure window
% -----------------------------------------------------
drawnow;
% return error code (no change)
% -----------------------------
error = -1;
end
end