changeset 19518:2b708273548d gui-release

button order in dialog for creating a non-existing file (bug #43537) * file-editor.cc (request_open_file): use custom buttons named create and cancel in dialog asking whether to create a new file or notice * octave-qt-link.cc (do_prompt_new_edit_file): use buttons named create and cancel and set appropriate roles in order to get a correct button ordering depending on the platform
author Torsten <ttl@justmail.de>
date Sat, 08 Nov 2014 16:45:13 +0100
parents 5fb4505b84ff
children 91cd85a75705
files libgui/src/m-editor/file-editor.cc libgui/src/octave-qt-link.cc
diffstat 2 files changed, 19 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor.cc
+++ b/libgui/src/m-editor/file-editor.cc
@@ -404,27 +404,31 @@
                   else
                     {
                       // File does not exist, should it be crated?
+                      bool create_file = true;
                       QMessageBox *msgBox;
-                      int answer;
                       QSettings *settings = resource_manager::get_settings ();
-                      if (settings->value ("editor/create_new_file", false).toBool ())
-                        {
-                          answer = QMessageBox::Yes;
-                        }
-                      else
+
+                      if (!settings->value ("editor/create_new_file", false).toBool ())
                         {
                           msgBox = new QMessageBox (QMessageBox::Question,
                                                     tr ("Octave Editor"),
                                                     tr ("File\n%1\ndoes not exist. "
                                                         "Do you want to create it?").arg (openFileName),
-                                                    QMessageBox::Yes
-                                                    | QMessageBox::No, 0);
+                                                    QMessageBox::NoButton,0);
+                          QPushButton *create_button =
+                            msgBox->addButton (tr ("Create"), QMessageBox::YesRole);
+                          msgBox->addButton (tr ("Cancel"), QMessageBox::RejectRole);
+                          msgBox->setDefaultButton (create_button);
+                          msgBox->exec ();
 
-                          msgBox->setAttribute (Qt::WA_DeleteOnClose);
-                          answer = msgBox->exec ();
+                          QAbstractButton *clicked_button = msgBox->clickedButton ();
+                          if (clicked_button != create_button)
+                            create_file = false;
+
+                          delete msgBox;
                         }
 
-                      if (answer == QMessageBox::Yes)
+                      if (create_file)
                         {
                           // create the file and call the editor again
                           QFile file (openFileName);
--- a/libgui/src/octave-qt-link.cc
+++ b/libgui/src/octave-qt-link.cc
@@ -93,21 +93,21 @@
   QFileInfo file_info (QString::fromStdString (file));
   QStringList btn;
   QStringList role;
-  role << "AcceptRole" << "AcceptRole";
-  btn << tr ("Yes") << tr ("No");
+  role << "YesRole" << "RejectRole";
+  btn << tr ("Create") << tr ("Cancel");
 
   uiwidget_creator.signal_dialog (
     tr ("File\n%1\ndoes not exist. Do you want to create it?").
     arg (QDir::currentPath () + QDir::separator ()
          + QString::fromStdString (file)),
-    tr ("Octave Editor"), "quest", btn, tr ("Yes"), role );
+    tr ("Octave Editor"), "quest", btn, tr ("Create"), role );
 
   // Wait while the user is responding to message box.
   uiwidget_creator.wait ();
   // The GUI has sent a signal and the process has been awakened.
   QString answer = uiwidget_creator.get_dialog_button ();
 
-  return (answer == tr ("Yes"));
+  return (answer == tr ("Create"));
 }
 
 int