Main Content

GUIDE의 대화형 방식 목록 상자 앱

참고

GUIDE 환경은 향후 릴리스에서 제거될 예정입니다. GUIDE가 제거된 후에도 기존 GUIDE 앱은 MATLAB®에서 계속 실행할 수 있지만 GUIDE에서 편집할 수는 없게 됩니다.

기존의 GUIDE 앱을 계속 편집하려면 GUIDE 마이그레이션 전략 항목에서 향후 MATLAB 릴리스와의 앱 호환성을 유지하는 방법에 대한 내용을 참고하십시오. 대화형 방식으로 새 앱을 만들려면 앱 디자이너를 사용하여 앱 개발하기 항목을 대신 참조하십시오.

이 예제에서는 사전 작성된 GUIDE 앱을 검토하고 실행하는 방법을 보여줍니다. 앱에는 특정 폴더의 파일이 표시되는 목록 상자가 포함되어 있습니다. 목록에서 항목을 더블 클릭하면 MATLAB이 이 항목을 엽니다.

예제 열기 및 실행하기

GUIDE에서 앱을 열고 Figure 실행(녹색 재생 버튼)을 클릭하여 실행합니다.

또는 명령 창에서 'dir' 이름-값 쌍 인수를 사용하여 lbox2 함수를 호출해도 됩니다. 이름-값 쌍 인수를 사용하면 어떤 폴더의 내용도 나열할 수 있습니다. 예를 들어, 다음 명령은 Windows® 시스템의 C:\ 폴더에 있는 파일을 나열합니다.

lbox2('dir','C:\')

참고: 명령 창에서 lbox2를 호출하려면 먼저 MATLAB® 경로에 있는 폴더에 GUIDE 파일을 저장해야 합니다. 파일을 저장하려면 GUIDE에서 파일 > 다른 이름으로 저장을 선택하십시오.

레이아웃과 콜백 코드 살펴보기

  1. GUIDE에서 편집기 버튼 을 클릭하여 코드를 확인합니다.

  2. 편집기 창 상단에 있는 이동 버튼을 사용하여 아래에서 설명하는 함수로 이동합니다.

lbox2_OpeningFcn

목록 상자가 처음으로 UI에 표시되기 직전에 콜백 함수 lbox2_OpeningFcn이 실행됩니다. 다음 명령문은 사용자가 lbox2에 대한 경로 인수를 지정했는지 여부를 확인합니다.

if nargin == 3,
    initial_dir = pwd;
elseif nargin > 4
    if strcmpi(varargin{1},'dir')
        if exist(varargin{2},'dir')
            initial_dir = varargin{2};
        else
            errordlg('Input must be a valid directory','Input Argument Error!')
            return
        end
    else
        errordlg('Unrecognized input argument','Input Argument Error!');
        return;
    end
end
nargin==3인 경우, lbox2_OpeningFcn에 대한 입력 인수는 hObject, eventdata, handles뿐입니다. 다시 말해, 사용자가 lbox2를 호출할 때 경로를 지정하지 않았기 때문에 목록 상자에는 현재 폴더의 내용이 표시됩니다. nargin>4인 경우에는 varargin 입력 인수에 2개의 추가 항목이 포함되어 있습니다(사용자가 경로를 지정했음을 알 수 있음). 이후의 if 문은 해당 경로가 유효한지 확인합니다.

listbox1_callback

사용자가 목록 상자 항목을 클릭하면 콜백 함수 listbox1_callback이 실행됩니다. 함수 시작 부분에 있는 다음 명령문은 사용자가 목록 상자의 항목을 더블 클릭할 때마다 true를 반환합니다.

if strcmp(get(handles.figure1,'SelectionType'),'open')
이 조건이 true이면 listbox1_callback은 사용자가 어떤 항목을 목록 상자에서 선택했는지 확인합니다.
index_selected = get(handles.listbox1,'Value');
file_list = get(handles.listbox1,'String');
filename = file_list{index_selected};
이 콜백 함수의 나머지 코드는 선택한 항목이 폴더인지, FIG 파일인지 아니면 다른 유형의 파일인지에 따라 그 항목을 여는 방법을 결정하는 내용입니다.
    if  handles.is_dir(handles.sorted_index(index_selected))
        cd (filename)
        load_listbox(pwd,handles)
    else
        [path,name,ext] = fileparts(filename);
        switch ext
            case '.fig'
                guide (filename)
            otherwise
                try
                    open(filename)
                catch ex
                    errordlg(...
                      ex.getReport('basic'),'File Type Error','modal')
                end
        end
    end

관련 항목