function TTdiag(varargin) orig_gcbh = gcbh; Action = varargin{1}; if 1 ~= nargin DAStudio.warning('improper function use') end switch Action, case 'Open', blockHandleTTTopMask = orig_gcbh; LocalOpenBlockFcn(blockHandleTTTopMask); case 'Close', blockHandleTTTopMask = orig_gcbh; LocalCloseBlockFcn(blockHandleTTTopMask); case 'Copy', blockHandleTTTopMask = orig_gcbh; LocalCopyBlockFcn(blockHandleTTTopMask); otherwise, DAStudio.error('Simulink:dialog:UnknownAction',Action); end end function LocalCopyBlockFcn(blockHandleTTTopMask) data = get(blockHandleTTTopMask,'UserData') if(~isempty(data)) data_new = data.clone(blockHandleTTTopMask); % gui_new = copy(gui,blockHandleTTTopMask) % gui_new.function_name_text = get_param(blockHandleTTTopMask,'Name'); % gui_new.fig = []; % gui_new.block_handle = blockHandleTTTopMask; % TEMPORARY SOLUTION set_param(blockHandleTTTopMask,'UserData',data_new) end end function LocalOpenBlockFcn(blockHandleTTTopMask) modelHandle = bdroot(blockHandleTTTopMask); % check if the user is trying to open the block from the library if strcmp(get_param(modelHandle,'Lock'), 'on') || ... strcmp(get_param(blockHandleTTTopMask,'LinkStatus'),'implicit') errordlg(... DAStudio.message('can not open Model Locked, Add to new model to use'),... 'Error', 'modal') return end data = get_param(blockHandleTTTopMask,'UserData'); if isempty(data) data = Data(); data.init(); % gui.block_handle = blockHandleTTTopMask; % if ishghandle(gui.fig) % set(gui.fig,'Visible','on') % figure(gui.fig) % %gui.init(); % % gui.reset_wh(); % % gui.draw_allgrids(); % else % gui.init(); % end % set_param(gui.fig,'Visible','on') else if ~data.valid errordlg(... DAStudio.message('Block Data has been corputed'),... 'Error', 'modal') return end if data.open if ishghandle(data.fig) figure(data.fig) end return end end gui = GUI(blockHandleTTTopMask); gui.setData(data) gui.init(); % % Grid2 = Grid(2,[]); % Grid1 = Grid(1,[]); % rGrid = RGrid(Grid1,Grid2); % Grid1.set_rGrid(rGrid); % Grid2.set_rGrid(rGrid); % Grid2.new_Cell; % Grid1.new_Cell; % % gui = GUI(blockHandleTTTopMask); % %gui.init(); % gui.set_grid(Grid2,Grid1,rGrid); % gui.init(); % %gui.reset_wh(); % %gui.draw_allgrids(); % set(Grid2.delete_cell_pb,'Enable','off'); % set(Grid1.delete_cell_pb,'Enable','off'); % set_param(blockHandleTTTopMask,'UserData',data); set_param(blockHandleTTTopMask, 'UserDataPersistent', 'on'); end function LocalCloseRequestBlockFcn(blockHandleTTTopMask) modelHandle = bdroot(blockHandleTTTopMask); data = get_param(blockHandleTTTopMask,'UserData') if ~isempty(data) if data.open delete(data.fig) end end %set_param(gui.fig,'Visible','off') end % Make a copy of a handle object. function new = copy(this,h) % Instantiate new object of the same class. new = feval(class(this),h); % Copy all non-hidden properties. p = properties(this); for i = 1:length(p) new.(p{i}) = this.(p{i}); end end