Skip to content
TTdiag.m 3.53 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

switch Action,
    case 'Open',
Colin Eles's avatar
Colin Eles committed
        Mode = varargin{2};

        if 2 ~= nargin
            DAStudio.warning('improper function use')
        end
Colin Eles's avatar
Colin Eles committed
        blockHandleTTTopMask = orig_gcbh;
Colin Eles's avatar
Colin Eles committed
        switch Mode,
Colin Eles's avatar
Colin Eles committed
            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);
        
    case 'Load',
        if 2 ~= nargin
            DAStudio.warning('improper function use')
        end
        file = varargin{2};
        try 
            data = importdata(file);
            gui = GUI([],0);
            gui.setData(data)
            gui.init();
        catch exception
            msgbox(exception.identifier)
        end
Colin Eles's avatar
Colin Eles committed
    case 'Delete'
       blockHandleTTTopMask = orig_gcbh;
       data = get_param(blockHandleTTTopMask,'UserData');
       if isempty(data)
           return
       end
        if ~data.valid
             errordlg(...
          DAStudio.message('Block Data has been corputed'),...
          'Error', 'modal')
            return
        end
       
        if data.open && ishandle(data.fig)
            delete(data.fig)
            data.fig = [];
            data.open = 0;
            set_param(blockHandleTTTopMask,'UserData',data); 

        end
Colin Eles's avatar
Colin Eles committed
    otherwise,
        DAStudio.error('Simulink:dialog:UnknownAction',Action);
    
Colin Eles's avatar
Colin Eles committed
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 = [];
Colin Eles's avatar
Colin Eles committed
    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')