Mercurial > octave
diff libgui/src/qt-interpreter-events.cc @ 27552:de5129cb0796
refactor dialog functions
* dialog.h, dialog.cc (QUIWidgetCreator::message_dialog): Rename from
signal_dialog and combine with part of qt_interpreter_events
question_dialog function. Use QMutexLocker object to manage lock.
Return result directly. Change all uses.
(QUIWidgetCreator::list_dialog): Rename from signal_listview and
combine with part of qt_interpreter_events list_dialog function.
Use QMutexLocker object to manage lock. Return result directly.
Change all uses.
(QUIWidgetCreator::input_dialog): Rename from signal_input_layout and
combine with part of qt_interpreter events input_dialog function. Use
QMutexLocker object to manage lock. Return result directly. Change
all uses.
(QUIWidgetCreator::file_dialog): Rename from signal_filedialog and
combine with part of qt_interpreter events file_dialog function. Use
QMutexLocker object to manage lock. Return result directly. Change
all uses.
(QUIWidgetCreator::dialog_button_clicked,
(QUIWidgetCreator::list_select_finished,
QUIWidgetCreator::input_finished): Don't lock/unlock mutex here.
* qt-interpreter-events.cc (qt_interpreter_events::file_dialog,
qt_interpreter_events::input_dialog,
qt_interpreter_events::list_dialog,
qt_interpreter_events::question_dialog): Simplify.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 24 Oct 2019 03:40:52 -0400 |
parents | 564bba235594 |
children | 9b72eb111b7e |
line wrap: on
line diff
--- a/libgui/src/qt-interpreter-events.cc Thu Oct 24 01:50:58 2019 -0400 +++ b/libgui/src/qt-interpreter-events.cc Thu Oct 24 03:40:52 2019 -0400 @@ -120,33 +120,18 @@ const std::string& dirname, const std::string& multimode) { + QStringList lst + = uiwidget_creator.file_dialog (make_filter_list (filter), + QString::fromStdString (title), + QString::fromStdString (filename), + QString::fromStdString (dirname), + QString::fromStdString (multimode)); + std::list<std::string> retval; - // Lock mutex before signaling. - uiwidget_creator.lock (); - - uiwidget_creator.signal_filedialog (make_filter_list (filter), - QString::fromStdString (title), - QString::fromStdString (filename), - QString::fromStdString (dirname), - QString::fromStdString (multimode)); - - // Wait while the user is responding to dialog. - uiwidget_creator.wait (); - - // The GUI has sent a signal and the thread has been awakened. - - // Add all the file dialog results to a string list. - QStringList inputLine = uiwidget_creator.get_string_list (); - - for (const auto& s : inputLine) + for (const auto& s : lst) retval.push_back (s.toStdString ()); - retval.push_back (uiwidget_creator.get_dialog_path ().toStdString ()); - retval.push_back ((QString ("%1").arg (uiwidget_creator.get_dialog_result ())).toStdString ()); - - uiwidget_creator.unlock (); - return retval; } @@ -157,27 +142,15 @@ const std::list<float>& nc, const std::list<std::string>& defaults) { + QStringList lst + = uiwidget_creator.input_dialog (make_qstring_list (prompt), + QString::fromStdString (title), + QFloatList::fromStdList (nr), + QFloatList::fromStdList (nc), + make_qstring_list (defaults)); std::list<std::string> retval; - // Lock mutex before signaling. - uiwidget_creator.lock (); - - uiwidget_creator.signal_inputlayout (make_qstring_list (prompt), - QString::fromStdString (title), - QFloatList::fromStdList (nr), - QFloatList::fromStdList (nc), - make_qstring_list (defaults)); - - // Wait while the user is responding to message box. - uiwidget_creator.wait (); - - // The GUI has sent a signal and the thread has been awakened. - - QStringList inputLine = uiwidget_creator.get_string_list (); - - uiwidget_creator.unlock (); - - for (const auto& s : inputLine) + for (const auto& s : lst) retval.push_back (s.toStdString ()); return retval; @@ -193,10 +166,8 @@ const std::string& ok_string, const std::string& cancel_string) { - // Lock mutex before signaling. - uiwidget_creator.lock (); - - uiwidget_creator.signal_listview (make_qstring_list (list), + QPair<QIntList, int> result + = uiwidget_creator.list_dialog (make_qstring_list (list), QString::fromStdString (mode), width, height, QList<int>::fromStdList (initial), @@ -205,17 +176,8 @@ QString::fromStdString (ok_string), QString::fromStdString (cancel_string)); - // Wait while the user is responding to message box. - uiwidget_creator.wait (); - - // The GUI has sent a signal and the thread has been awakened. - - QIntList selected = uiwidget_creator.get_list_index (); - int ok = uiwidget_creator.get_dialog_result (); - - uiwidget_creator.unlock (); - - return std::pair<std::list<int>, int> (selected.toStdList (), ok); + return std::pair<std::list<int>, int> (result.first.toStdList (), + result.second); } std::string @@ -226,36 +188,28 @@ const std::string& btn3, const std::string& btndef) { - QStringList btn; + QString icon = "quest"; + QStringList buttons; QStringList role; + // Must use ResetRole which is left-aligned for all OS and WM. role << "ResetRole" << "ResetRole" << "ResetRole"; - btn << QString::fromStdString (btn1); + + buttons << QString::fromStdString (btn1); if (btn2 == "") role.removeAt (0); else - btn << QString::fromStdString (btn2); - btn << QString::fromStdString (btn3); - - // Lock mutex before signaling. - uiwidget_creator.lock (); + buttons << QString::fromStdString (btn2); + buttons << QString::fromStdString (btn3); - uiwidget_creator.signal_dialog (QString::fromStdString (msg), - QString::fromStdString (title), - "quest", btn, - QString::fromStdString (btndef), - role); + QString answer + = uiwidget_creator.message_dialog (QString::fromStdString (msg), + QString::fromStdString (title), + icon, buttons, + QString::fromStdString (btndef), + role); - // Wait while the user is responding to message box. - uiwidget_creator.wait (); - - // The GUI has sent a signal and the thread has been awakened. - - std::string answer = uiwidget_creator.get_dialog_button ().toStdString (); - - uiwidget_creator.unlock (); - - return answer; + return answer.toStdString (); } void qt_interpreter_events::update_path_dialog (void) @@ -317,32 +271,16 @@ role << "YesRole" << "RejectRole"; btn << tr ("Create") << tr ("Cancel"); - // Lock mutex before signaling. - uiwidget_creator.lock (); - - uiwidget_creator.signal_dialog + QString answer = uiwidget_creator.message_dialog (tr ("File\n%1\ndoes not exist. Do you want to create it?"). arg (QString::fromStdString (abs_fname)), 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 thread has been awakened. - - QString answer = uiwidget_creator.get_dialog_button (); - - uiwidget_creator.unlock (); - return (answer == tr ("Create")); } // Prompt to allow file to be run by setting cwd (or if - // addpath_option==true, alternatively setting the path). This uses a - // QMessageBox unlike other functions in this file, because - // uiwidget_creator.waitcondition.wait hangs when called from - // file_editor_tab::handle_context_menu_break_condition(). (FIXME: - // why hang?) + // addpath_option==true, alternatively setting the path). int qt_interpreter_events::debug_cd_or_addpath_error (const std::string& file, @@ -376,19 +314,9 @@ btn << cancel_txt; role << "RejectRole"; - // Lock mutex before signaling. - uiwidget_creator.lock (); - - uiwidget_creator.signal_dialog (msg, title, "quest", btn, cancel_txt, role); - - // Wait while the user is responding to message box. - uiwidget_creator.wait (); - - // The GUI has sent a signal and the thread has been awakened. - - QString result = uiwidget_creator.get_dialog_button (); - - uiwidget_creator.unlock (); + QString result + = uiwidget_creator.message_dialog (msg, title, "quest", btn, + cancel_txt, role); if (result == cd_txt) retval = 1;