# HG changeset patch # User John W. Eaton # Date 1366863061 14400 # Node ID e4b94abfeb966825e759867b1bce94bcceda7c58 # Parent aa5299a1d7700d9355e4d70fe5f60497f029ad72 use generic dialog for cd or addpath question * dialog.h, dialog.cc (cd_or_addpath_dialog): Delete class. (QUIWidgetCreator::get_dialog_button): Return QString, not QString*. Change all uses. (QUIWidgetCreator::signal_debug_cd_or_addpath): Delete. (QUIWidgetCreator::create_debug_cd_or_addpath_dialog): Delete. * file-editor-tab.cc (file_editor_tab::file_in_path): Also use same_file to compare curr_dir and info.path. * main-window.h, main-window.cc (main_window::handle_create_debug_cd_or_addpath_dialog): Delete. (main_window::connect_uiwidget_links): Delete connection from uiwidget_creator::create_debug_cd_or_addpath_dialog to main_window::handle_create_debug_cd_or_addpath_dialog. * octave-qt-link.cc (octave_qt_link::do_debug_cd_or_addpath_error): Use generic dialog for cd or addpath question. diff -r aa5299a1d770 -r e4b94abfeb96 libgui/src/dialog.cc --- a/libgui/src/dialog.cc Thu Apr 25 00:09:54 2013 -0400 +++ b/libgui/src/dialog.cc Thu Apr 25 00:11:01 2013 -0400 @@ -403,84 +403,3 @@ { buttonCancel_clicked (); } - - -cd_or_addpath_dialog::cd_or_addpath_dialog (const QString& file, - const QString& dir, - bool addpath_option) - : QDialog () -{ - QString prompt_string - = (addpath_option - ? tr ("The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.").arg(file).arg(dir) - : tr ("The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.").arg(file).arg(dir)); - - QLabel *label = new QLabel (prompt_string); - label->setFixedWidth (500); - label->setWordWrap (true); - // QIcon *question_mark = new QIcon; - QHBoxLayout *horizontalLayout = new QHBoxLayout; - // horizontalLayout->addWidget (question_mark); - horizontalLayout->addWidget (label); - - QPushButton *buttonCd = new QPushButton (tr ("Change directory")); - QPushButton *buttonAddpath = 0; - if (addpath_option) - buttonAddpath = new QPushButton (tr ("Add directory to load path")); - QPushButton *buttonCancel = new QPushButton (tr ("Cancel")); - - QHBoxLayout *buttonsLayout = new QHBoxLayout; - buttonsLayout->addStretch (1); - buttonsLayout->addWidget (buttonCd); - if (addpath_option) - buttonsLayout->addWidget (buttonAddpath); - buttonsLayout->addWidget (buttonCancel); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addLayout (horizontalLayout); - mainLayout->addSpacing (12); - mainLayout->addLayout (buttonsLayout); - setLayout (mainLayout); - - setWindowTitle (tr ("Change Directory or Add Directory to Load Path")); - - connect (buttonCd, SIGNAL (clicked ()), - this, SLOT (buttonCd_clicked ())); - - if (addpath_option) - connect (buttonAddpath, SIGNAL (clicked ()), - this, SLOT (buttonAddpath_clicked ())); - - connect (buttonCancel, SIGNAL (clicked ()), - this, SLOT (buttonCancel_clicked ())); - - connect (this, SIGNAL (finished (int)), - &uiwidget_creator, SLOT (dialog_finished (int))); -} - -void -cd_or_addpath_dialog::buttonCd_clicked (void) -{ - emit finished (1); - done (QDialog::Accepted); -} - -void -cd_or_addpath_dialog::buttonAddpath_clicked (void) -{ - emit finished (2); - done (QDialog::Accepted); -} - -void -cd_or_addpath_dialog::buttonCancel_clicked (void) -{ - emit finished (-1); - done (QDialog::Rejected); -} - -void -cd_or_addpath_dialog::reject (void) -{ - buttonCancel_clicked (); -} diff -r aa5299a1d770 -r e4b94abfeb96 libgui/src/dialog.h --- a/libgui/src/dialog.h Thu Apr 25 00:09:54 2013 -0400 +++ b/libgui/src/dialog.h Thu Apr 25 00:11:01 2013 -0400 @@ -71,7 +71,7 @@ int get_dialog_result (void) { return dialog_result; } - const QString *get_dialog_button (void) { return &dialog_button; } + QString get_dialog_button (void) { return dialog_button; } bool signal_listview (const QStringList& list, const QString& mode, int wd, int ht, const QList& initial, @@ -101,17 +101,6 @@ return true; }; - // The debug dialog functionality may not really belong here, but it - // seems like the easiest thing to do at the moment. - - bool signal_debug_cd_or_addpath (const QString& file, const QString& dir, - bool addpath_option) - { - emit create_debug_cd_or_addpath_dialog (file, dir, addpath_option); - - return true; - } - const QStringList *get_string_list (void) { return string_list; } void wait (void) @@ -133,8 +122,6 @@ const QFloatList&, const QFloatList&, const QStringList&); - void create_debug_cd_or_addpath_dialog (const QString&, const QString&, bool); - public slots: void dialog_button_clicked (QAbstractButton *button); @@ -240,24 +227,4 @@ void reject (void); }; -class cd_or_addpath_dialog : public QDialog -{ - Q_OBJECT - -public: - - cd_or_addpath_dialog (const QString& file, const QString& dir, - bool addpath_option); - -public slots: - - void buttonCd_clicked (void); - - void buttonAddpath_clicked (void); - - void buttonCancel_clicked (void); - - void reject (void); -}; - #endif diff -r aa5299a1d770 -r e4b94abfeb96 libgui/src/m-editor/file-editor-tab.cc --- a/libgui/src/m-editor/file-editor-tab.cc Thu Apr 25 00:09:54 2013 -0400 +++ b/libgui/src/m-editor/file-editor-tab.cc Thu Apr 25 00:11:01 2013 -0400 @@ -449,7 +449,7 @@ std::string curr_dir = octave_env::get_current_directory (); - if (curr_dir == info.path) + if (same_file (curr_dir, info.path)) ok = true; else { diff -r aa5299a1d770 -r e4b94abfeb96 libgui/src/main-window.cc --- a/libgui/src/main-window.cc Thu Apr 25 00:09:54 2013 -0400 +++ b/libgui/src/main-window.cc Thu Apr 25 00:11:01 2013 -0400 @@ -592,14 +592,6 @@ SLOT (handle_create_inputlayout (const QStringList&, const QString&, const QFloatList&, const QFloatList&, const QStringList&))); - - connect (&uiwidget_creator, - SIGNAL (create_debug_cd_or_addpath_dialog (const QString&, - const QString&, bool)), - this, - SLOT (handle_create_debug_cd_or_addpath_dialog (const QString&, - const QString&, - bool))); } // Create a message dialog with specified string, buttons and decorative @@ -656,19 +648,6 @@ input_dialog->show (); } -void -main_window::handle_create_debug_cd_or_addpath_dialog (const QString& file, - const QString& dir, - bool addpath_option) - -{ - cd_or_addpath_dialog *dialog - = new cd_or_addpath_dialog (file, dir, addpath_option); - - dialog->setAttribute (Qt::WA_DeleteOnClose); - dialog->show (); -} - // Main subroutine of the constructor void main_window::construct (void) diff -r aa5299a1d770 -r e4b94abfeb96 libgui/src/main-window.h --- a/libgui/src/main-window.h Thu Apr 25 00:09:54 2013 -0400 +++ b/libgui/src/main-window.h Thu Apr 25 00:11:01 2013 -0400 @@ -142,9 +142,6 @@ const QFloatList&, const QFloatList&, const QStringList&); - void handle_create_debug_cd_or_addpath_dialog (const QString& file, - const QString& dir, - bool addpath_option); // find files dialog void find_files(const QString &startdir=QDir::currentPath()); void find_files_finished(int); diff -r aa5299a1d770 -r e4b94abfeb96 libgui/src/octave-qt-link.cc --- a/libgui/src/octave-qt-link.cc Thu Apr 25 00:09:54 2013 -0400 +++ b/libgui/src/octave-qt-link.cc Thu Apr 25 00:11:01 2013 -0400 @@ -111,7 +111,7 @@ uiwidget_creator.wait (); // The GUI has sent a signal and the process has been awakened. - return uiwidget_creator.get_dialog_button ()->toStdString (); + return uiwidget_creator.get_dialog_button().toStdString (); } static QStringList @@ -193,13 +193,47 @@ const std::string& dir, bool addpath_option) { - uiwidget_creator.signal_debug_cd_or_addpath (QString::fromStdString (file), - QString::fromStdString (dir), - addpath_option); + int retval = -1; + + QString qdir = QString::fromStdString (dir); + QString qfile = QString::fromStdString (file); + + QString msg + = (addpath_option + ? tr ("The file %1 does not exist in the load path. To debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.").arg(qfile).arg(qdir) + : tr ("The file %1 is shadowed by a file with the same name in the load path. To debug the function you are editing, change to the directory %2.").arg(qfile).arg(qdir)); + + QString title = tr ("Change Directory or Add Directory to Load Path"); + + QString cd_txt = tr ("Change Directory"); + QString addpath_txt = tr ("Add Directory to Load Path"); + QString cancel_txt = tr ("Cancel"); + QStringList btn; + QStringList role; + btn << cd_txt; + role << "AcceptRole"; + if (addpath_option) + { + btn << addpath_txt; + role << "AcceptRole"; + } + btn << cancel_txt; + role << "AcceptRole"; + + uiwidget_creator.signal_dialog (msg, title, "quest", btn, cancel_txt, role); + + // Wait while the user is responding to message box. uiwidget_creator.wait (); - return uiwidget_creator.get_dialog_result (); + QString result = uiwidget_creator.get_dialog_button (); + + if (result == cd_txt) + retval = 1; + else if (result == addpath_txt) + retval = 2; + + return retval; } void