Skip to content
TTdiag.m 3.96 KiB
Newer Older
% Author: Colin Eles elesc@mcmaster.ca
% Organization: McMaster Centre for Software Certification
Colin Eles's avatar
Colin Eles committed
function TTdiag(varargin)
% Java needs to be loaded here.  Thus load it.

% First find the path.
path = mfilename('fullpath');
path = [path(1:size(path, 2)-6) 'Matlab2SMT/Matlab2SMT-1.0-SNAPSHOT-jar-with-dependencies.jar'];

% Verify the jar isn't already in the classpath.
classpath = javaclasspath;
exists = 0;
for i=1:size(classpath,1)
    if strcmp(classpath{i}, path) == 1
        exists = 1;
    end
end
if exists == 0
    % Not added yet, thus add it.
    javaaddpath(path);
end

Colin Eles's avatar
Colin Eles committed

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
        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);
Colin Eles's avatar
Colin Eles committed
            case 'Matlab'
                LocalOpenBlockFcn([],0);
Colin Eles's avatar
Colin Eles committed
        end
Colin Eles's avatar
Colin Eles committed
        
    case 'Close',
        blockHandleTTTopMask = orig_gcbh;
        LocalCloseBlockFcn(blockHandleTTTopMask);
Colin Eles's avatar
Colin Eles committed
    case 'Copy',
        blockHandleTTTopMask = orig_gcbh;
        LocalCopyBlockFcn(blockHandleTTTopMask);
        
    case 'Load',
        if 2 ~= nargin
        end
        file = varargin{2};
            data = importdata(file);
            gui = GUI([],0);
            gui.init();
        catch exception
    case 'Delete',
        blockHandleTTTopMask = orig_gcbh;
        data = get_param(blockHandleTTTopMask,'UserData');
        if isempty(data)
            return
        end
Colin Eles's avatar
Colin Eles committed
        if ~data.valid
            errordlg(...
                DAStudio.message('Block Data has been corputed'),...
Colin Eles's avatar
Colin Eles committed
            return
        end
Colin Eles's avatar
Colin Eles committed
        if data.open && ishandle(data.fig)
Colin Eles's avatar
Colin Eles committed
            data.fig = [];
            data.open = 0;
            set_param(blockHandleTTTopMask,'UserData',data);
            
Colin Eles's avatar
Colin Eles committed
        end
Colin Eles's avatar
Colin Eles committed
        DAStudio.error('Simulink:dialog:UnknownAction',Action);
Colin Eles's avatar
Colin Eles committed
        
Colin Eles's avatar
Colin Eles committed
        
        
Colin Eles's avatar
Colin Eles committed
end
Colin Eles's avatar
Colin Eles committed
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

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

if isempty(data)
    data = Data();
    data.init();
    
else
    if ~data.valid
        errordlg(...
            DAStudio.message('Block Data has been corputed'),...
        return
    end
    if data.open
        if ishghandle(data.fig)
Matthew Dawson's avatar
Matthew Dawson committed
            return            
Colin Eles's avatar
Colin Eles committed
        end
end
if mode == 1
    gui = GUI(blockHandleTTTopMask,1);
elseif mode == 0
    gui = GUI([],0);
end

gui.init();
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);
Colin Eles's avatar
Colin Eles committed

data = get_param(blockHandleTTTopMask,'UserData');
%set_param(gui.fig,'Visible','off')