diff libgui/src/dialog.cc @ 16581:fa4a035e0cf4

Add octave_link uiputfile implementation * libgui/src/dialog.cc, libgui/src/dialog.h (FileDialog::FileDialog): Change bool multiselect to QString multimode, add mode option of 'create' and set options accordingly. (QUIWidgetCreator::signal_filedialog): Change bool multiselect to QString multimode. (QUIWidgetCreator::create_filedialog): Change bool multiselect to QString multimode. * libgui/src/main-window.cc, libgui/src/main-window.h (main_window::connect_uiwidget_links): update bool multiselect to QString multimode. (main_window::handle_create_filedialog): update bool multiselect to QString multimode. * libgui/src/octave-qt-link.h (octave_qt_link::do_file_dialog): update bool multiselect to std::string multimode. * libinterp/interpfcn/octave-link.h (octave_link::do_file_dialog): update bool multiselect to std::string multimode. (octave_link::file_dialog): update bool multiselect to std::string multimode. * scripts/plot/uiputfile.m (uiputfile): update to call __octave_link_file_dialog__ if octave_link is present.
author John Donoghue <john.donoghue@ieee.org>
date Sun, 28 Apr 2013 17:00:00 -0400
parents adc150db1809
children 868d0bcfabae
line wrap: on
line diff
--- a/libgui/src/dialog.cc	Sun Apr 28 13:41:37 2013 -0400
+++ b/libgui/src/dialog.cc	Sun Apr 28 17:00:00 2013 -0400
@@ -424,7 +424,7 @@
                         const QString& title,
                         const QString& filename,
                         const QString& dirname,
-                        bool multiselect)
+                        const QString& multimode)
   : QFileDialog()
 {
   // Create a NonModal message.
@@ -433,13 +433,26 @@
   setWindowTitle (title.isEmpty () ? " " : title);
   setDirectory (dirname);
 
-  if (multiselect)
-    setFileMode (QFileDialog::ExistingFiles);
-  else
-    setFileMode (QFileDialog::ExistingFile);
+  if (multimode == "on")         // uigetfile multiselect=on
+    {
+      setFileMode (QFileDialog::ExistingFiles);
+      setAcceptMode (QFileDialog::AcceptOpen);
+    }
+  else if(multimode == "create") // uiputfile
+    {
+      setFileMode (QFileDialog::AnyFile); 
+      setAcceptMode (QFileDialog::AcceptSave);
+      setOption (QFileDialog::DontConfirmOverwrite, false);
+      setConfirmOverwrite(true);
+    }
+  else                           // uigetfile multiselect=off
+    {
+      setFileMode (QFileDialog::ExistingFile);
+      setAcceptMode (QFileDialog::AcceptOpen);
+    }
 
   setNameFilters (filters);
-  setAcceptMode (QFileDialog::AcceptOpen);
+
   selectFile (filename);
   
   connect (this,