uigetdir2

PURPOSE ^

UIGETDIR2 Standard dialog box for selecting a directory which remembers

SYNOPSIS ^

function directory_name = uigetdir2(varargin)

DESCRIPTION ^

UIGETDIR2 Standard dialog box for selecting a directory which remembers
last selected directory.
   UIGETDIR2 is a wrapper for Matlab's UIGETDIR function which adds the
   ability to remember the last selected directory.  UIGETDIR2 stores
   information about the last selected directory in a mat file which it
   looks for when called.

   UIGETDIR2 can only remember the selected directory if the current
   directory is writable so that a mat file can be stored.  Only
   successful directory selections update the folder remembered.  If the
   user cancels the directory selection dialog box then the remembered
   path is left the same.

   Usage is the same as UIGETDIR.

   uigetdir('','Dialog box text')  Empty start path will invoke use of
                                   last used directory if dialog text is
                                   desired


   See also UIGETDIR, UIGETFILE, UIPUTFILE.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function directory_name = uigetdir2(varargin)
0002 
0003 %UIGETDIR2 Standard dialog box for selecting a directory which remembers
0004 %last selected directory.
0005 %   UIGETDIR2 is a wrapper for Matlab's UIGETDIR function which adds the
0006 %   ability to remember the last selected directory.  UIGETDIR2 stores
0007 %   information about the last selected directory in a mat file which it
0008 %   looks for when called.
0009 %
0010 %   UIGETDIR2 can only remember the selected directory if the current
0011 %   directory is writable so that a mat file can be stored.  Only
0012 %   successful directory selections update the folder remembered.  If the
0013 %   user cancels the directory selection dialog box then the remembered
0014 %   path is left the same.
0015 %
0016 %   Usage is the same as UIGETDIR.
0017 %
0018 %   uigetdir('','Dialog box text')  Empty start path will invoke use of
0019 %                                   last used directory if dialog text is
0020 %                                   desired
0021 %
0022 %
0023 %   See also UIGETDIR, UIGETFILE, UIPUTFILE.
0024 
0025 %   Written by Chris J Cannell
0026 %   Contact ccannell@gmail.com for questions or comments.
0027 %   01/05/2006  Created
0028 %   04/18/2007  Script checks if an empty string is passed as the first
0029 %               argument, if so then last used directory is used in its
0030 %               place (thanks to Jonathan Erickson for the bug report)
0031 
0032 
0033 % name of mat file to save last used directory information
0034 lastDirMat = 'lastUsedDir.mat';
0035 
0036 
0037 %% Check passed arguments and load saved directory
0038 % if start path is specified and not empty call uigetdir with arguments
0039 % from user, if no arguments are passed or start path is empty load saved
0040 % directory from mat file
0041 if nargin > 0 && ~isempty(varargin{1})
0042     % call uigetdir with arguments passed from uigetdir2 function
0043     directory_name = uigetdir(varargin{:});
0044 else
0045     % set default dialog open directory to the present working directory
0046     lastDir = pwd;
0047     % load last data directory
0048     if exist(lastDirMat, 'file') ~= 0
0049         % lastDirMat mat file exists, load it
0050         load('-mat', lastDirMat)
0051         % check if lastDataDir variable exists and contains a valid path
0052         if (exist('lastUsedDir', 'var') == 1) && ...
0053                 (exist(lastUsedDir, 'dir') == 7)
0054             % set default dialog open directory
0055             lastDir = lastUsedDir;
0056         end
0057     end
0058 
0059     % check if second argument (dialog box text) was passed
0060     if nargin == 2
0061         % call uigetdir with saved directory and second argument from user
0062         directory_name = uigetdir(lastDir,varargin{2});
0063     else
0064         % call uigetdir with saved directory
0065         directory_name = uigetdir(lastDir);
0066     end
0067 end
0068 
0069 
0070 %% Store last used directory
0071 % if the user did not cancel the directory dialog then update
0072 % lastDirMat mat file with the folder selected
0073 if ~isequal(directory_name,0)
0074     try
0075         % save last folder used to lastDirMat mat file
0076         lastUsedDir = directory_name;
0077         save(lastDirMat, 'lastUsedDir');
0078     catch
0079         % error saving lastDirMat mat file, display warning, the folder
0080         % will not be remembered
0081         disp(['Warning: Could not save file ''', lastDirMat, '''']);
0082     end
0083 end

Generated on Thu 21-Aug-2014 10:40:31 by m2html © 2005