Mercurial > hg > octave-nkf
diff libgui/src/octave-qt-link.cc @ 17884:766ad9be2966
Prompt for non-existent new file when using edit.m from GUI (bug #40450)
* libgui/src/octave-qt-link.cc(do_prompt_new_edit_file): New function to
display question dialog.
* libgui/src/octave-qt-link.h(do_prompt_new_edit_file): Add function to header
file.
* libinterp/corefcn/octave-link.cc(__octave_link_edit_file__): If 2nd argument
present, display prompt dialog.
* libinterp/corefcn/octave-link.h(prompt_new_edit_file): If octave-link enabled,
use prompt dialog box.
* scripts/miscellaneous/edit.m: Modify to use new prompt routine. CLI behavior
is unchanged.
author | Torsten <ttl@justmail.de> |
---|---|
date | Fri, 08 Nov 2013 07:40:36 -0800 |
parents | 86e8dbccf7c7 |
children | a38cee8f0a9b |
line wrap: on
line diff
--- a/libgui/src/octave-qt-link.cc +++ b/libgui/src/octave-qt-link.cc @@ -27,6 +27,8 @@ #endif #include <QStringList> +#include <QDialog> +#include <QDir> #include "str-vec.h" #include "dialog.h" @@ -39,6 +41,8 @@ #include "octave-qt-link.h" +#include "resource-manager.h" + octave_qt_link::octave_qt_link (octave_main_thread *mt) : octave_link (), main_thread (mt) { } @@ -67,6 +71,34 @@ return true; } +bool +octave_qt_link::do_prompt_new_edit_file (const std::string& file) +{ + QSettings *settings = resource_manager::get_settings (); + + if (settings->value ("editor/create_new_file",false).toBool ()) + return true; + + QFileInfo file_info (QString::fromStdString (file)); + QStringList btn; + QStringList role; + role << "AcceptRole" << "AcceptRole"; + btn << tr ("Yes") << tr ("No"); + + 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 ); + + // 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")); +} + int octave_qt_link::do_message_dialog (const std::string& dlg, const std::string& msg,