Skip to content
TTdiag.m 2.95 KiB
Newer Older
Colin Eles's avatar
Colin Eles committed
function TTdiag(varargin)

orig_gcbh = gcbh;


Action = varargin{1};
Colin Eles's avatar
Colin Eles committed
Mode = varargin{2};
Colin Eles's avatar
Colin Eles committed

if 1 ~= nargin
    DAStudio.warning('improper function use')
end

switch Action,
    case 'Open',
        blockHandleTTTopMask = orig_gcbh;
Colin Eles's avatar
Colin Eles committed
        switch Mode,
            case 'Simulink'
                 LocalOpenBlockFcn(blockHandleTTTopMask,1);
            case 'Matlab'
                 LocalOpenBlockFcn([],0);
        end
Colin Eles's avatar
Colin Eles committed
        
    case 'Close',
        blockHandleTTTopMask = orig_gcbh;
        LocalCloseBlockFcn(blockHandleTTTopMask);

    case 'Copy',
        blockHandleTTTopMask = orig_gcbh;
        LocalCopyBlockFcn(blockHandleTTTopMask);
        DAStudio.ModelExplorer
Colin Eles's avatar
Colin Eles committed
        
    otherwise,
        DAStudio.error('Simulink:dialog:UnknownAction',Action);
    
end
    
end

function LocalCopyBlockFcn(blockHandleTTTopMask)
    data = get(blockHandleTTTopMask,'UserData')
    if(~isempty(data))
        data_new = data.clone(blockHandleTTTopMask);  
  
        set_param(blockHandleTTTopMask,'UserData',data_new)
Colin Eles's avatar
Colin Eles committed
    end
end

Colin Eles's avatar
Colin Eles committed
function LocalOpenBlockFcn(blockHandleTTTopMask,mode)
    data = []
    if (mode == 1)
            modelHandle = bdroot(blockHandleTTTopMask);
Colin Eles's avatar
Colin Eles committed
        % 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')
Colin Eles's avatar
Colin Eles committed
          errordlg(...
              DAStudio.message('can not open Model Locked, Add to new model to use'),...
              'Error', 'modal')
            return
        end
Colin Eles's avatar
Colin Eles committed

Colin Eles's avatar
Colin Eles committed
        data = get_param(blockHandleTTTopMask,'UserData');
    end
    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
Colin Eles's avatar
Colin Eles committed
        
Colin Eles's avatar
Colin Eles committed
    if mode == 1
        gui = GUI(blockHandleTTTopMask,1);   
    elseif mode == 0
        gui = GUI([],0);
    end

Colin Eles's avatar
Colin Eles committed
        if(mode == 1)
            set_param(blockHandleTTTopMask,'UserData',data); 
            set_param(blockHandleTTTopMask, 'UserDataPersistent', 'on');
        end
Colin Eles's avatar
Colin Eles committed
end

function LocalCloseRequestBlockFcn(blockHandleTTTopMask)
Colin Eles's avatar
Colin Eles committed

    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')
Colin Eles's avatar
Colin Eles committed
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