www.gusucode.com > mbc 工具箱 matlab 源码程序 > mbc/+mbcextensions/ModelExtensions.m

    classdef ModelExtensions < mbcextensions.BaseExtensions
    %ModelExtensions Information about extensions installed in MBC
    %   e = mbcextensions.ModelExtensions()
    
    %  Copyright 2014 The MathWorks, Inc. and Ford Global Technologies, Inc.
    
    properties
        BrowserTools = [];
        DesignEditorTools = [];
        DataEditorTools = [];
        DataEditorViews = [];
        ModelClasses = [];
        LocalModelClasses = [];
        BrowserStartupTasks = {};
        BoundaryEditorTools = [];
        BoundaryEditorViews = [];
        CmdLineClassMappingFile = [];
        CmdLineModelNameMappingFile = [];
        CmdLineModelParameterMappingFile = [];
    end
    
    methods
        function obj = ModelExtensions()
            obj@mbcextensions.BaseExtensions('xregextras.mbc');
        end
        
        function obj=processinfo(obj,Svect)
            % loop over input structure and extract info into the form needed
            % Essentially this means compressing information in the n-element structure array
            % into a single structure element whose fields contain n values

            for n = 1:length(Svect)
                opts = Svect(n);
                % handle new extensions
                if ~isempty(opts.BrowserTools)
                    obj.BrowserTools = [obj.BrowserTools opts.BrowserTools];
                end    
                if ~isempty(opts.DesignEditorTools)
                    obj.DesignEditorTools = [obj.DesignEditorTools opts.DesignEditorTools];
                end   
                if ~isempty(opts.DataEditorTools)
                    obj.DataEditorTools = [obj.DataEditorTools opts.DataEditorTools];
                end   
                if ~isempty(opts.DataEditorViews)
                    obj.DataEditorViews = [obj.DataEditorViews opts.DataEditorViews];
                end   
                if ~isempty(opts.ModelClasses)
                    obj.ModelClasses = [obj.ModelClasses opts.ModelClasses];
                end   
                if ~isempty(opts.LocalModelClasses)
                    obj.LocalModelClasses = [obj.LocalModelClasses opts.LocalModelClasses];
                end 
                if ~isempty(opts.BrowserStartupTasks)
                    % Vertically concatenate cells
                    obj.BrowserStartupTasks = [obj.BrowserStartupTasks, opts.BrowserStartupTasks];  
                end
                if ~isempty(opts.BoundaryEditorTools)
                    obj.BoundaryEditorTools = [obj.BoundaryEditorTools opts.BoundaryEditorTools];
                end
                if ~isempty(opts.BoundaryEditorViews)
                    obj.BoundaryEditorViews = [obj.BoundaryEditorViews opts.BoundaryEditorViews];
                end

                % command line mapping files - for these latest addon wins - no
                % concatenation.
                if ~isempty(opts.CmdLineClassMappingFile)
                    obj.CmdLineClassMappingFile = opts.CmdLineClassMappingFile;
                end   
                if ~isempty(opts.CmdLineModelNameMappingFile)
                    obj.CmdLineModelNameMappingFile = opts.CmdLineModelNameMappingFile;
                end  
                if ~isempty(opts.CmdLineModelParameterMappingFile)
                    obj.CmdLineModelParameterMappingFile = opts.CmdLineModelParameterMappingFile;
                end  
            end

            % handle default properties
            ToolsMenuDefault = struct('Name',{}, ...
                'Level',{}, ...
                'Separator',{}, ...
                'Callback',{}, ...
                'EnableFcn',{});
            ViewListDefault = struct( ...
                'Constructor', {}, ...
                'MenuLabel', {}, ...
                'Icon', {}, ...
                'Description', {}, ...
                'MaxRecommended', {} );

            if isempty(obj.BrowserTools)
                obj.BrowserTools = ToolsMenuDefault;
            end
            if isempty(obj.DesignEditorTools)
                obj.DesignEditorTools = ToolsMenuDefault;
            end
            if isempty(obj.DataEditorTools)
                obj.DataEditorTools = ToolsMenuDefault;
            end
            if isempty(obj.DataEditorViews)
                obj.DataEditorViews = struct( 'Constructor', {}, 'MenuLabel', {}, ...
                    'MaxRecommended', {} );
            end
            if isempty(obj.ModelClasses)
                obj.ModelClasses = struct('fCreate',{},'DisplayName',{},'Group',{},...
                    'minNF',{},'maxNF',{},'exactNF',{},'RFmodel',{},'onestagemodel',{});
            end
            if isempty(obj.LocalModelClasses)
                obj.LocalModelClasses = struct('fCreate',{},'DisplayName',{},'Group',{},...
                    'minNF',{},'maxNF',{},'exactNF',{});
            end
            if isempty(obj.BoundaryEditorTools)
                obj.BoundaryEditorTools = ToolsMenuDefault;
            end
            if isempty(obj.BoundaryEditorViews)
                obj.BoundaryEditorViews = ViewListDefault;
            end

            if isempty(obj.CmdLineClassMappingFile)
                % put in the default
                obj.CmdLineClassMappingFile = xregrespath( 'ClassMappings.map' );
            end

            if isempty(obj.CmdLineModelNameMappingFile)
                % put in the default
                obj.CmdLineModelNameMappingFile = xregrespath( 'ModelNameMapping.map' );
            end

            if isempty(obj.CmdLineModelParameterMappingFile)
                % put in the default
                obj.CmdLineModelParameterMappingFile = xregrespath( 'ModelParameterMappings.map' );
            end
        end
    end
end