changeset 16654:510b711f4e31

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.
author John Donoghue <john.donoghue@ieee.org>
date Mon, 13 May 2013 16:15:58 -0400
parents 1cfa3a49247f
children 8fa0b416f465
files libgui/src/dialog.cc scripts/plot/uigetdir.m
diffstat 2 files changed, 30 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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