# HG changeset patch # User John Donoghue # Date 1368476158 14400 # Node ID 510b711f4e310e9a326f8e91e59b51e0e69ddacc # Parent 1cfa3a49247f30083c9d105e401ffa21dd850ce3 Added uigetdir to octave_link * libgui/src/dialog.cc (FileDialog::FileDialog): added mode "dir" setup of file dialog for getting dir path. * scripts/plot/uigetdir.m (uigetdir): Added detection of octave link and call to function __octave_link_file_dialog__ when available. diff -r 1cfa3a49247f -r 510b711f4e31 libgui/src/dialog.cc --- a/libgui/src/dialog.cc Sun May 05 19:11:45 2013 +0200 +++ b/libgui/src/dialog.cc Mon May 13 16:15:58 2013 -0400 @@ -443,6 +443,13 @@ setOption (QFileDialog::DontConfirmOverwrite, false); setConfirmOverwrite(true); } + else if (multimode == "dir") // uigetdir + { + setFileMode (QFileDialog::Directory); + setOption (QFileDialog::ShowDirsOnly, true); + setOption (QFileDialog::HideNameFilterDetails, true); + setAcceptMode (QFileDialog::AcceptOpen); + } else // uigetfile multiselect=off { setFileMode (QFileDialog::ExistingFile); diff -r 1cfa3a49247f -r 510b711f4e31 scripts/plot/uigetdir.m --- a/scripts/plot/uigetdir.m Sun May 05 19:11:45 2013 +0200 +++ b/scripts/plot/uigetdir.m Mon May 13 16:15:58 2013 -0400 @@ -30,16 +30,18 @@ function dirname = uigetdir (init_path = pwd, dialog_name = "Select Directory to Open") - defaulttoolkit = get (0, "defaultfigure__graphics_toolkit__"); - funcname = ["__uigetdir_", defaulttoolkit, "__"]; - functype = exist (funcname); - if (! __is_function__ (funcname)) - funcname = "__uigetdir_fltk__"; + if (! __octave_link_enabled__ ()) + defaulttoolkit = get (0, "defaultfigure__graphics_toolkit__"); + funcname = ["__uigetdir_", defaulttoolkit, "__"]; + functype = exist (funcname); if (! __is_function__ (funcname)) - error ("uigetdir: fltk graphics toolkit required"); - elseif (! strcmp (defaulttoolkit, "gnuplot")) - warning ("uigetdir: no implementation for toolkit '%s', using 'fltk' instead", - defaulttoolkit); + funcname = "__uigetdir_fltk__"; + if (! __is_function__ (funcname)) + error ("uigetdir: fltk graphics toolkit required"); + elseif (! strcmp (defaulttoolkit, "gnuplot")) + warning ("uigetdir: no implementation for toolkit '%s', using 'fltk' instead", + defaulttoolkit); + endif endif endif @@ -54,8 +56,19 @@ if (!isdir (init_path)) init_path = fileparts (init_path); endif - dirname = feval (funcname, init_path, dialog_name); + if (__octave_link_enabled__ ()) + dialogargs = {cell(0, 2), # File Filter + dialog_name, # Dialog title + "", # Default file name + [240, 120], # Dialog Position (pixel x/y) + "dir", # Dialog mode + init_path}; # Initial directory + + [filename, dirname, filterindex] = __octave_link_file_dialog__ (dialogargs{:}); + else + dirname = feval (funcname, init_path, dialog_name); + endif endfunction