gusucode.com > vision工具箱matlab源码程序 > vision/+vision/+internal/+calibration/+tool/ExportDlg.m

    % ExportDlg Dialog for exporting the results of calibration

% Copyright 2014 The MathWorks, Inc.

classdef ExportDlg < vision.internal.uitools.OkCancelDlg
    properties
        ParamsVarName;
        ErrorsVarName;
        ShouldExportErrors;
        
        CheckBox;
    end
    
    properties(Access=private)
        ParamsPrompt;        
        ParamEditBox;
        
        ErrorsPrompt;
        ErrorsEditBox;
        
        PromptX = 10;
        EditBoxX = 207;
    end
    
    methods
        %------------------------------------------------------------------
        function this = ExportDlg(groupName, paramsPrompt, ...
                paramsVarName, errorsVarName, shouldExportErrors)
            dlgTitle = vision.getMessage('vision:uitools:ExportTitle');
            this = this@vision.internal.uitools.OkCancelDlg(...
                groupName, dlgTitle);
            
            this.ParamsVarName = paramsVarName;            
            this.ParamsPrompt = paramsPrompt;
            
            this.ErrorsVarName = errorsVarName;
            this.ErrorsPrompt = ...
                vision.getMessage('vision:caltool:ErrorsExportPrompt');
            
            this.ShouldExportErrors = shouldExportErrors;
            
            this.DlgSize = [400, 180];
            createDialog(this);
            
            addParamsVarPrompt(this);            
            addParamsVarEditBox(this);
            addErrorsVarPrompt(this);
            addErrorsVarEditBox(this);
            addErrorsCheckBox(this);
        end
    end
    
    methods(Access=private)
        %------------------------------------------------------------------
        function addParamsVarPrompt(this)
            % Prompt
            uicontrol('Parent',this.Dlg,'Style','text',...
                'Position',[this.PromptX, 128, 200, 20], ...
                'FontUnits', 'normalized', 'FontSize', 0.6,...
                'HorizontalAlignment', 'left',...
                'String', this.ParamsPrompt);                
        end
        
        %------------------------------------------------------------------
        function addParamsVarEditBox(this)
            this.ParamEditBox = uicontrol('Parent', this.Dlg,'Style','edit',...
                'String',this.ParamsVarName,...
                'Position', [this.EditBoxX, 127, 180, 25],...
                'FontUnits', 'normalized', 'FontSize', 0.6,...
                'HorizontalAlignment', 'left',...
                'BackgroundColor',[1 1 1], ...
                'Tag', 'varEditBox',...
                'ToolTipString', ...
                vision.getMessage('vision:caltool:ExportParametersNameToolTip'));
        end
        
        %------------------------------------------------------------------
        function addErrorsVarPrompt(this)
            uicontrol('Parent',this.Dlg,'Style','text',...
                'Position',[this.PromptX, 48, 200, 20],...
                'FontUnits', 'normalized', 'FontSize', 0.6,...
                'HorizontalAlignment', 'left',...
                'String', this.ErrorsPrompt);                
        end
        
        %------------------------------------------------------------------
        function addErrorsVarEditBox(this)
            this.ErrorsEditBox = uicontrol('Parent', this.Dlg,'Style','edit',...
                'String',this.ErrorsVarName,...
                'Position',[this.EditBoxX, 47, 180, 25],...
                'FontUnits', 'normalized', 'FontSize', 0.6,...
                'HorizontalAlignment', 'left',...
                'BackgroundColor',[1 1 1], ...
                'ToolTipString', ...
                vision.getMessage('vision:caltool:ExportErrorsNameToolTip'));
        end
        
        %------------------------------------------------------------------
        function addErrorsCheckBox(this)
            % prompt
            uicontrol('Parent', this.Dlg, 'Style', 'text', ...
                'Position', [this.PromptX + 20, 72, 200, 20],...
                'HorizontalAlignment', 'left', ...
                'FontUnits', 'normalized', 'FontSize', 0.6,...
                'String', ...
                vision.getMessage('vision:caltool:ExportErrorsCheckboxLabel'), ...
                'ToolTipString',...
                vision.getMessage('vision:caltool:EnableExportErrorsToolTip'));
            
            this.CheckBox = uicontrol('Parent', this.Dlg, ...
                'Style', 'checkbox', ...
                'Position', [this.PromptX, 74, 20, 20], ...
                'FontUnits', 'normalized', 'FontSize', 0.6,...
                'Callback', @checkBoxCallback,...
                'HorizontalAlignment', 'left', 'Value', this.ShouldExportErrors);
            
            if ~this.ShouldExportErrors
                disableErrors(this);
            end
            
            %--------------------------------------------------------------
            function checkBoxCallback(h, ~)
                if get(h, 'Value')
                    enableErrors(this);
                else
                    disableErrors(this);
                end
            end
        end
            
        %------------------------------------------------------------------
        function disableErrors(this)
            set(this.ErrorsEditBox, 'Enable', 'off');
        end
        
        %------------------------------------------------------------------
        function enableErrors(this)
            set(this.ErrorsEditBox, 'Enable', 'on');
        end
    end
    
    methods(Access=protected)
        %------------------------------------------------------------------
        function onOK(this, ~, ~)
            this.ShouldExportErrors = get(this.CheckBox, 'Value');
            this.ParamsVarName = get(this.ParamEditBox, 'String');
            this.ErrorsVarName = get(this.ErrorsEditBox, 'String');
            if ~isvarname(this.ParamsVarName)
                errordlg(getString(message('vision:uitools:invalidExportVariable')));
            elseif ~isvarname(this.ErrorsVarName)
                errordlg(getString(message('vision:uitools:invalidExportVariable')));             
            else
                this.IsCanceled = false;
                close(this);
            end
        end
    end
end