Mercurial > hg > octave-nkf
changeset 18351:024940bd5b77 gui-release
gui: provide prefernces for the octave directory at startup
* settings-dialog.ui: add check box for restoring previous octave directory and
line edit / file dialog for setting startup directory
* settings-dialog.cc (constructor): init new input widgets from settings;
(write_changed_settings): wirte values from new widgets into settings file;
(get_octave_directory): new slot for settings octave dir in a file dialog
* main-window.h: new slot handle_octave_ready
* main-window.cc (handle_octave_ready): depending on settings set octave
directory to the last one from the previous session, the one set in the
settings or the current one;
(construct): do not set dir here but in handle_octave_ready;
(construct_octave_qt_link): pass 'this' to octave link as parent;
* octave-interpreter.h: new signal inidication interpreter is initialized
* octave-interpreter.cc (constructor): emit new signal after init of interpreter
* octave-qt-link.cc (constructor): connect new signal with slot in main window
author | Torsten <ttl@justmail.de> |
---|---|
date | Sun, 19 Jan 2014 11:30:15 +0100 |
parents | 106da7544504 |
children | 03a8428adef7 |
files | libgui/src/main-window.cc libgui/src/main-window.h libgui/src/octave-interpreter.cc libgui/src/octave-interpreter.h libgui/src/octave-qt-link.cc libgui/src/octave-qt-link.h libgui/src/settings-dialog.cc libgui/src/settings-dialog.h libgui/src/settings-dialog.ui |
diffstat | 9 files changed, 404 insertions(+), 217 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -1261,19 +1261,48 @@ int))); #endif - QDir curr_dir; - set_current_working_directory (curr_dir.absolutePath ()); - octave_link::post_event (this, &main_window::resize_command_window_callback); set_global_shortcuts (true); } + +void +main_window::handle_octave_ready () +{ + // actions after the startup files are executed + QSettings *settings = resource_manager::get_settings (); + + QDir startup_dir = QDir (); // current octave dir after startup + + if (settings->value ("restore_octave_dir").toBool ()) + { + // restore last dir from previous session + QStringList curr_dirs + = settings->value ("MainWindow/current_directory_list").toStringList (); + startup_dir = QDir (curr_dirs.at (0)); // last dir in previous session + } + else if (! settings->value ("octave_startup_dir").toString ().isEmpty ()) + { + // do not restore but there is a startup dir configured + startup_dir = QDir (settings->value ("octave_startup_dir").toString ()); + } + + if (! startup_dir.exists ()) + { + // the configured startup dir does not exist, take actual one + startup_dir = QDir (); + } + + set_current_working_directory (startup_dir.absolutePath ()); +} + + void main_window::construct_octave_qt_link (void) { - _octave_qt_link = new octave_qt_link (); + _octave_qt_link = new octave_qt_link (this); connect (_octave_qt_link, SIGNAL (exit_signal (int)), this, SLOT (exit (int)));
--- a/libgui/src/main-window.h +++ b/libgui/src/main-window.h @@ -185,6 +185,8 @@ void handle_show_doc (const QString &file); + void handle_octave_ready (); + // find files dialog void find_files (const QString &startdir=QDir::currentPath ()); void find_files_finished (int);
--- a/libgui/src/octave-interpreter.cc +++ b/libgui/src/octave-interpreter.cc @@ -43,6 +43,8 @@ octave_initialize_interpreter (octave_cmdline_argc, octave_cmdline_argv, octave_embedded); + emit octave_ready_signal (); + octave_execute_interpreter (); }
--- a/libgui/src/octave-interpreter.h +++ b/libgui/src/octave-interpreter.h @@ -38,6 +38,10 @@ octave_interpreter (void) : QObject (), thread_manager () { } +signals: + + void octave_ready_signal (); + public slots: // Initialize and execute the octave interpreter.
--- a/libgui/src/octave-qt-link.cc +++ b/libgui/src/octave-qt-link.cc @@ -43,13 +43,16 @@ #include "resource-manager.h" -octave_qt_link::octave_qt_link (void) +octave_qt_link::octave_qt_link (QWidget *p) : octave_link (), main_thread (new QThread ()), command_interpreter (new octave_interpreter ()) { connect (this, SIGNAL (execute_interpreter_signal (void)), command_interpreter, SLOT (execute (void))); + connect (command_interpreter, SIGNAL (octave_ready_signal ()), + p, SLOT (handle_octave_ready ())); + command_interpreter->moveToThread (main_thread); main_thread->start ();
--- a/libgui/src/octave-qt-link.h +++ b/libgui/src/octave-qt-link.h @@ -53,7 +53,7 @@ public: - octave_qt_link (void); + octave_qt_link (QWidget *p); ~octave_qt_link (void);
--- a/libgui/src/settings-dialog.cc +++ b/libgui/src/settings-dialog.cc @@ -30,6 +30,7 @@ #include "ui-settings-dialog.h" #include <QDir> #include <QFileInfo> +#include <QFileDialog> #include <QVector> #include <QHash> @@ -114,6 +115,14 @@ ui->cb_widget_custom_style->setChecked ( settings->value ("DockWidgets/widget_title_custom_style",false).toBool ()); + // Octave startup + ui->cb_restore_octave_dir->setChecked ( + settings->value ("restore_octave_dir",false).toBool ()); + ui->le_octave_dir->setText ( + settings->value ("octave_startup_dir").toString ()); + connect (ui->pb_octave_dir, SIGNAL (pressed ()), + this, SLOT (get_octave_dir ())); + // editor ui->useCustomFileEditor->setChecked (settings->value ("useCustomFileEditor", false).toBool ()); @@ -502,8 +511,15 @@ settings->setValue ("Dockwidgets/title_fg_color", _widget_title_fg_color->color ()); - // other settings + // icon size settings->setValue ("toolbar_icon_size", ui->toolbar_icon_size->value ()); + + // Octave startup + settings->setValue ("restore_octave_dir", + ui->cb_restore_octave_dir->isChecked ()); + settings->setValue ("octave_startup_dir", ui->le_octave_dir->text ()); + + //editor settings->setValue ("useCustomFileEditor", ui->useCustomFileEditor->isChecked ()); settings->setValue ("customFileEditor", ui->customFileEditor->text ()); @@ -747,3 +763,12 @@ } settings->sync (); } + +void +settings_dialog::get_octave_dir () +{ + QString dir = QFileDialog::getExistingDirectory(this, + tr("Set Octave Startup Directory"), "", + QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + ui->le_octave_dir->setText (dir); +} \ No newline at end of file
--- a/libgui/src/settings-dialog.h +++ b/libgui/src/settings-dialog.h @@ -45,6 +45,9 @@ ~settings_dialog (); void write_changed_settings (); +private slots: + void get_octave_dir (); + private: Ui::settings_dialog * ui; #ifdef HAVE_QSCINTILLA
--- a/libgui/src/settings-dialog.ui +++ b/libgui/src/settings-dialog.ui @@ -58,216 +58,303 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_17"> <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="4" column="0"> - <widget class="QLabel" name="label_15"> - <property name="text"> - <string>Dock widget title bar</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout_8"> - <item> - <widget class="QComboBox" name="comboBox_language"> - <property name="insertPolicy"> - <enum>QComboBox::InsertAtBottom</enum> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_8"> - <property name="text"> - <string>Icon size</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QCheckBox" name="cb_widget_custom_style"> - <property name="text"> - <string>Custom style</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_22"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLabel" name="label_bgtitle"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Background color</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="layout_widget_bgtitle"/> - </item> - <item> - <spacer name="horizontalSpacer_23"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>12</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLabel" name="label_fgtitle"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Text color</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="layout_widget_fgtitle"/> - </item> - <item> - <spacer name="horizontalSpacer_21"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="2" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout_6"> - <item> - <widget class="QSpinBox" name="toolbar_icon_size"> - <property name="minimum"> - <number>16</number> - </property> - <property name="maximum"> - <number>32</number> - </property> - <property name="singleStep"> - <number>4</number> - </property> - <property name="value"> - <number>24</number> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Language (requires restart)</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout_9"> - <item> - <widget class="QRadioButton" name="general_icon_octave"> - <property name="text"> - <string>Octave logo only</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="general_icon_letter"> - <property name="text"> - <string>Letter icons</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="general_icon_graphic"> - <property name="text"> - <string>Graphic icons</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_6"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_9"> - <property name="text"> - <string>Icon set for dock widgets</string> - </property> - </widget> - </item> - </layout> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Interface</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_21"> + <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="4" column="0"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>Dock widget title bar</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_8"> + <item> + <widget class="QComboBox" name="comboBox_language"> + <property name="insertPolicy"> + <enum>QComboBox::InsertAtBottom</enum> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>Icon size</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QCheckBox" name="cb_widget_custom_style"> + <property name="text"> + <string>Custom style</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_22"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="label_bgtitle"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Background color</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="layout_widget_bgtitle"/> + </item> + <item> + <spacer name="horizontalSpacer_23"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>12</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="label_fgtitle"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Text color</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="layout_widget_fgtitle"/> + </item> + <item> + <spacer name="horizontalSpacer_21"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_6"> + <item> + <widget class="QSpinBox" name="toolbar_icon_size"> + <property name="minimum"> + <number>16</number> + </property> + <property name="maximum"> + <number>32</number> + </property> + <property name="singleStep"> + <number>4</number> + </property> + <property name="value"> + <number>24</number> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Language (requires restart)</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_9"> + <item> + <widget class="QRadioButton" name="general_icon_octave"> + <property name="text"> + <string>Octave logo only</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="general_icon_letter"> + <property name="text"> + <string>Letter icons</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="general_icon_graphic"> + <property name="text"> + <string>Graphic icons</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_6"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_9"> + <property name="text"> + <string>Icon set for dock widgets</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + <zorder></zorder> + <zorder></zorder> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Octave Startup</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_22"> + <item> + <widget class="QLabel" name="label_18"> + <property name="text"> + <string>These preferences are applied after the startup files like .octaverc.</string> + </property> + </widget> + </item> + <item> + <layout class="QGridLayout" name="gridLayout_9"> + <item row="0" column="4"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_17"> + <property name="text"> + <string>Startup path</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QCheckBox" name="cb_restore_octave_dir"> + <property name="text"> + <string>Restore last Octave directory of previous session</string> + </property> + </widget> + </item> + <item row="1" column="4"> + <spacer name="horizontalSpacer_5"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="le_octave_dir"/> + </item> + <item row="1" column="2"> + <widget class="QPushButton" name="pb_octave_dir"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> </item> <item> <spacer name="verticalSpacer"> @@ -1946,5 +2033,37 @@ </hint> </hints> </connection> + <connection> + <sender>cb_restore_octave_dir</sender> + <signal>toggled(bool)</signal> + <receiver>le_octave_dir</receiver> + <slot>setDisabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>270</x> + <y>255</y> + </hint> + <hint type="destinationlabel"> + <x>270</x> + <y>285</y> + </hint> + </hints> + </connection> + <connection> + <sender>cb_restore_octave_dir</sender> + <signal>toggled(bool)</signal> + <receiver>pb_octave_dir</receiver> + <slot>setDisabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>270</x> + <y>255</y> + </hint> + <hint type="destinationlabel"> + <x>467</x> + <y>285</y> + </hint> + </hints> + </connection> </connections> </ui>