Mercurial > octave
diff libgui/src/dialog.cc @ 27551:564bba235594
move some dialog slot functions from octave-qobject.cc to dialog.cc
* dialog.h, dialog.cc (QUIWidgetCreator::handle_create_dialog,
QUIWidgetCreator::handle_create_listview,
QUIWidgetCreator::handle_create_inputlayout,
QUIWidgetCreator::handle_create_filedialog):
Move here from base_qobject. Connect finish signals and slots here
instead of in dialog object constructors.
(QUIWidgetCreator::QUIWidgetCreator): Connect create signals and slots
for dialogs here instead of in base_qobject::connect_uiwidget_links
* octave-qobject.h, octave-qobject.cc (base_qobject::base_qobject):
Don't call connect_uiwidget_links.
(base_qobject::connect_uiwidget_links): Delete.
(base_qobject::handle_create_dialog,
base_qobject::handle_create_listview,
base_qobject::handle_create_inputlayout,
base_qobject::handle_create_filedialog): Delete.
* qt-interpreter-events.cc
(qt_interpreter_events::qt_interpreter_events): Call qRegisterMetaType
for QIntList and QFloatList here instead of in
base_qobject::connect_uiwidget_links.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 24 Oct 2019 01:50:58 -0400 |
parents | 5189bfa8ad2a |
children | de5129cb0796 |
line wrap: on
line diff
--- a/libgui/src/dialog.cc Thu Oct 24 01:26:31 2019 -0400 +++ b/libgui/src/dialog.cc Thu Oct 24 01:50:58 2019 -0400 @@ -49,7 +49,47 @@ QUIWidgetCreator::QUIWidgetCreator (void) : QObject (), m_dialog_result (-1), m_dialog_button (), m_string_list (), m_list_index (), m_path_name () - { } + { + connect (this, + SIGNAL (create_dialog (const QString&, const QString&, + const QString&, const QStringList&, + const QString&, const QStringList&)), + this, + SLOT (handle_create_dialog (const QString&, const QString&, + const QString&, const QStringList&, + const QString&, const QStringList&))); + + connect (this, + SIGNAL (create_listview (const QStringList&, const QString&, + int, int, const QIntList&, + const QString&, const QStringList&, + const QString&, const QString&)), + this, + SLOT (handle_create_listview (const QStringList&, const QString&, + int, int, const QIntList&, + const QString&, const QStringList&, + const QString&, const QString&))); + + connect (this, + SIGNAL (create_inputlayout (const QStringList&, const QString&, + const QFloatList&, const QFloatList&, + const QStringList&)), + this, + SLOT (handle_create_inputlayout (const QStringList&, + const QString&, + const QFloatList&, + const QFloatList&, + const QStringList&))); + + connect (this, + SIGNAL (create_filedialog (const QStringList&,const QString&, + const QString&, const QString&, + const QString&)), + this, + SLOT (handle_create_filedialog (const QStringList&, const QString&, + const QString&, const QString&, + const QString&))); + } QString QUIWidgetCreator::rm_amp (const QString& text) { @@ -58,6 +98,26 @@ return text_wo_amp; } + // Create a message dialog with specified string, buttons and decorative + // text. + + void QUIWidgetCreator::handle_create_dialog (const QString& message, + const QString& title, + const QString& icon, + const QStringList& button, + const QString& defbutton, + const QStringList& role) + { + MessageDialog *message_dialog = new MessageDialog (message, title, icon, + button, defbutton, role); + + connect (message_dialog, SIGNAL (buttonClicked (QAbstractButton *)), + this, SLOT (dialog_button_clicked (QAbstractButton *))); + + message_dialog->setAttribute (Qt::WA_DeleteOnClose); + message_dialog->show (); + } + void QUIWidgetCreator::dialog_button_clicked (QAbstractButton *button) { // Wait for link thread to go to sleep state. @@ -87,6 +147,29 @@ wake_all (); } + // Create a list dialog with specified list, initially selected, mode, + // view size and decorative text. + + void QUIWidgetCreator::handle_create_listview (const QStringList& list, + const QString& mode, + int wd, int ht, + const QIntList& initial, + const QString& name, + const QStringList& prompt, + const QString& ok_string, + const QString& cancel_string) + { + ListDialog *list_dialog = new ListDialog (list, mode, wd, ht, + initial, name, prompt, + ok_string, cancel_string); + + connect (list_dialog, SIGNAL (finish_selection (const QIntList&, int)), + this, SLOT (list_select_finished (const QIntList&, int))); + + list_dialog->setAttribute (Qt::WA_DeleteOnClose); + list_dialog->show (); + } + void QUIWidgetCreator::list_select_finished (const QIntList& selected, int button_pressed) { @@ -103,6 +186,24 @@ wake_all (); } + // Create an input dialog with specified prompts and defaults, title and + // row/column size specifications. + void QUIWidgetCreator::handle_create_inputlayout (const QStringList& prompt, + const QString& title, + const QFloatList& nr, + const QFloatList& nc, + const QStringList& defaults) + { + InputDialog *input_dialog = new InputDialog (prompt, title, nr, nc, + defaults); + + connect (input_dialog, SIGNAL (finish_input (const QStringList&, int)), + this, SLOT (input_finished (const QStringList&, int))); + + input_dialog->setAttribute (Qt::WA_DeleteOnClose); + input_dialog->show (); + } + void QUIWidgetCreator::input_finished (const QStringList& input, int button_pressed) { @@ -119,6 +220,24 @@ wake_all (); } + void QUIWidgetCreator::handle_create_filedialog (const QStringList& filters, + const QString& title, + const QString& filename, + const QString& dirname, + const QString& multimode) + { + FileDialog *file_dialog = new FileDialog (filters, title, filename, + dirname, multimode); + + connect (file_dialog, SIGNAL (finish_input (const QStringList&, + const QString&, int)), + this, SLOT (filedialog_finished (const QStringList&, + const QString&, int))); + + file_dialog->setAttribute (Qt::WA_DeleteOnClose); + file_dialog->show (); + } + void QUIWidgetCreator::filedialog_finished (const QStringList& files, const QString& path, int filterindex) @@ -201,10 +320,6 @@ } } } - - connect (this, SIGNAL (buttonClicked (QAbstractButton *)), - &uiwidget_creator, - SLOT (dialog_button_clicked (QAbstractButton *))); } ListDialog::ListDialog (const QStringList& list, const QString& mode, @@ -300,10 +415,6 @@ connect (buttonCancel, SIGNAL (clicked ()), this, SLOT (buttonCancel_clicked ())); - connect (this, SIGNAL (finish_selection (const QIntList&, int)), - &uiwidget_creator, - SLOT (list_select_finished (const QIntList&, int))); - connect (view, SIGNAL (doubleClicked (const QModelIndex&)), this, SLOT (item_double_clicked (const QModelIndex&))); } @@ -414,10 +525,6 @@ connect (buttonCancel, SIGNAL (clicked ()), this, SLOT (buttonCancel_clicked ())); - - connect (this, SIGNAL (finish_input (const QStringList&, int)), - &uiwidget_creator, - SLOT (input_finished (const QStringList&, int))); } void InputDialog::buttonOk_clicked (void) @@ -490,12 +597,8 @@ selectFile (filename); - connect (this, - SIGNAL (finish_input (const QStringList&, const QString&, int)), - &uiwidget_creator, - SLOT (filedialog_finished (const QStringList&, const QString&, - int))); connect (this, SIGNAL (accepted ()), this, SLOT (acceptSelection ())); + connect (this, SIGNAL (rejected ()), this, SLOT (rejectSelection ())); }