Mercurial > hg > octave-nkf
changeset 18352:03a8428adef7 gui-release
gui: provide prefernces for the file browser's directory at startup
* settings-dialog.ui: add check box for restoring previous directory and
line edit / file dialog for setting startup directory
* settings-dialog.cc (constructor): init new input widgets from settings,
connect needed signals;
(write_changed_settings): write values from new widgets into settings file;
(get_file_browser_dir): new slot for settings octave dir in a file dialog;
(get_dir): common function for settings dialog slots;
(get_octave_dir): use get_dir;
(set_disabled_pref_file_browser_dir): slot for disabling some setting widgets
* settings-dialog.h: new slots get_file_browser_dir, get_dir,
set_disabled_pref_file_browser_dir
* files-doc-widget.cc (constructor): set start directory depending on settings
author | Torsten <ttl@justmail.de> |
---|---|
date | Sun, 19 Jan 2014 17:25:35 +0100 |
parents | 024940bd5b77 |
children | 7ac2a8b758fc |
files | libgui/src/files-dock-widget.cc libgui/src/settings-dialog.cc libgui/src/settings-dialog.h libgui/src/settings-dialog.ui |
diffstat | 4 files changed, 270 insertions(+), 86 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc +++ b/libgui/src/files-dock-widget.cc @@ -155,8 +155,29 @@ QSettings *settings = resource_manager::get_settings (); // FIXME: what should happen if settings is 0? - // Create the QFileSystemModel starting in the actual directory - QDir curr_dir; + // Create the QFileSystemModel starting in the desired directory + QDir startup_dir; // take current dir + + if (settings->value ("filesdockwidget/restore_last_dir",false).toBool ()) + { + // restore last dir from previous session + QStringList last_dirs + = settings->value ("filesdockwidget/mru_dir_list").toStringList (); + if (last_dirs.length () > 0) + startup_dir = QDir (last_dirs.at (0)); // last dir in previous session + } + else if (! settings->value ("filesdockwidget/startup_dir").toString ().isEmpty ()) + { + // do not restore but there is a startup dir configured + startup_dir = QDir (settings->value ("filesdockwidget/startup_dir").toString ()); + } + + if (! startup_dir.exists ()) + { + // the configured startup dir does not exist, take actual one + startup_dir = QDir (); + } + _file_system_model = new QFileSystemModel (this); if (settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()) { @@ -168,7 +189,7 @@ _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries); } QModelIndex rootPathIndex = _file_system_model->setRootPath ( - curr_dir.absolutePath ()); + startup_dir.absolutePath ()); // Attach the model to the QTreeView and set the root index _file_tree_view = new FileTreeViewer (container);
--- a/libgui/src/settings-dialog.cc +++ b/libgui/src/settings-dialog.cc @@ -183,6 +183,8 @@ settings->value ("terminal/fontName","Courier New").toString ()) ); ui->terminal_fontSize->setValue ( settings->value ("terminal/fontSize", 10).toInt ()); + + // file browser ui->showFileSize->setChecked ( settings->value ("filesdockwidget/showFileSize", false).toBool ()); ui->showFileType->setChecked ( @@ -193,8 +195,17 @@ settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); ui->useAlternatingRowColors->setChecked ( settings->value ("filesdockwidget/useAlternatingRowColors",true).toBool ()); + connect (ui->sync_octave_directory, SIGNAL (toggled (bool)), + this, SLOT (set_disabled_pref_file_browser_dir (bool))); ui->sync_octave_directory->setChecked ( settings->value ("filesdockwidget/sync_octave_directory",true).toBool ()); + ui->cb_restore_file_browser_dir->setChecked ( + settings->value ("filesdockwidget/restore_last_dir",false).toBool ()); + ui->le_file_browser_dir->setText ( + settings->value ("filesdockwidget/startup_dir").toString ()); + connect (ui->pb_file_browser_dir, SIGNAL (pressed ()), + this, SLOT (get_file_browser_dir ())); + ui->checkbox_allow_web_connect->setChecked ( settings->value ("news/allow_web_connection",false).toBool ()); ui->useProxyServer->setChecked ( @@ -568,6 +579,7 @@ settings->setValue ("terminal/fontSize", ui->terminal_fontSize->value ()); settings->setValue ("terminal/fontName", ui->terminal_fontName->currentFont ().family ()); + settings->setValue ("filesdockwidget/showFileSize", ui->showFileSize->isChecked ()); settings->setValue ("filesdockwidget/showFileType", @@ -580,6 +592,12 @@ ui->useAlternatingRowColors->isChecked ()); settings->setValue ("filesdockwidget/sync_octave_directory", ui->sync_octave_directory->isChecked ()); + settings->setValue ("filesdockwidget/restore_last_dir", + ui->cb_restore_file_browser_dir->isChecked ()); + settings->setValue ("filesdockwidget/startup_dir", + ui->le_file_browser_dir->text ()); + + settings->setValue ("news/allow_web_connection", ui->checkbox_allow_web_connect->isChecked ()); settings->setValue ("useProxyServer", ui->useProxyServer->isChecked ()); @@ -764,11 +782,43 @@ settings->sync (); } + +// internal slots + +void +settings_dialog::get_dir (QLineEdit *line_edit, const QString& title) +{ + QString dir = QFileDialog::getExistingDirectory(this, + title, line_edit->text (), + QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + line_edit->setText (dir); +} + 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 + get_dir (ui->le_octave_dir, tr ("Set Octave Startup Directory")); +} + +void +settings_dialog::get_file_browser_dir () +{ + get_dir (ui->le_file_browser_dir, tr ("Set File Browser Startup Directory")); +} + +void +settings_dialog::set_disabled_pref_file_browser_dir (bool disable) +{ + ui->cb_restore_file_browser_dir->setDisabled (disable); + + if (! disable) + { + ui->le_file_browser_dir->setDisabled (ui->cb_restore_file_browser_dir->isChecked ()); + ui->pb_file_browser_dir->setDisabled (ui->cb_restore_file_browser_dir->isChecked ()); + } + else + { + ui->le_file_browser_dir->setDisabled (disable); + ui->pb_file_browser_dir->setDisabled (disable); + } +}
--- a/libgui/src/settings-dialog.h +++ b/libgui/src/settings-dialog.h @@ -25,6 +25,7 @@ #include <QDialog> #include <QSettings> +#include <QLineEdit> #include "color-picker.h" @@ -47,6 +48,9 @@ private slots: void get_octave_dir (); + void get_file_browser_dir (); + void get_dir (QLineEdit*, const QString&); + void set_disabled_pref_file_browser_dir (bool disable); private: Ui::settings_dialog * ui;
--- a/libgui/src/settings-dialog.ui +++ b/libgui/src/settings-dialog.ui @@ -276,8 +276,6 @@ </layout> </item> </layout> - <zorder></zorder> - <zorder></zorder> </widget> </item> <item> @@ -295,7 +293,7 @@ </item> <item> <layout class="QGridLayout" name="gridLayout_9"> - <item row="0" column="4"> + <item row="0" column="5"> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -308,6 +306,19 @@ </property> </spacer> </item> + <item row="1" column="5"> + <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="0" column="0"> <widget class="QLabel" name="label_17"> <property name="text"> @@ -315,30 +326,7 @@ </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"> + <item row="1" column="3"> <widget class="QPushButton" name="pb_octave_dir"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> @@ -351,6 +339,16 @@ </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="1"> + <widget class="QLineEdit" name="le_octave_dir"/> + </item> </layout> </item> </layout> @@ -390,7 +388,7 @@ <rect> <x>0</x> <y>0</y> - <width>662</width> + <width>554</width> <height>399</height> </rect> </property> @@ -1329,56 +1327,135 @@ <rect> <x>0</x> <y>0</y> - <width>678</width> - <height>378</height> + <width>474</width> + <height>318</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_18"> <item> - <layout class="QGridLayout" name="gridLayout_8"> - <item row="0" column="0"> - <widget class="QCheckBox" name="showFileSize"> - <property name="text"> - <string>Show file size</string> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QCheckBox" name="sync_octave_directory"> - <property name="text"> - <string>Synchronize Octave working directory with file browser</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QCheckBox" name="showHiddenFiles"> - <property name="text"> - <string>Show hidden files</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QCheckBox" name="showFileType"> - <property name="text"> - <string>Show file type</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QCheckBox" name="showLastModified"> - <property name="text"> - <string>Show date of last modification</string> - </property> - </widget> - </item> - <item row="5" column="0"> - <widget class="QCheckBox" name="useAlternatingRowColors"> - <property name="text"> - <string>Alternating row colors</string> - </property> - </widget> - </item> - </layout> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>Display</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_23"> + <item> + <layout class="QGridLayout" name="gridLayout_11"> + <property name="topMargin"> + <number>0</number> + </property> + <item row="1" column="0"> + <widget class="QCheckBox" name="showFileType"> + <property name="text"> + <string>Show file type</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QCheckBox" name="showHiddenFiles"> + <property name="text"> + <string>Show hidden files</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QCheckBox" name="showFileSize"> + <property name="text"> + <string>Show file size</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QCheckBox" name="showLastModified"> + <property name="text"> + <string>Show date of last modification</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QCheckBox" name="useAlternatingRowColors"> + <property name="text"> + <string>Alternating row colors</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>Behavior</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_24"> + <item> + <layout class="QGridLayout" name="gridLayout_8"> + <item row="4" column="0"> + <widget class="QCheckBox" name="sync_octave_directory"> + <property name="text"> + <string>Synchronize Octave working directory with file browser</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <layout class="QGridLayout" name="lo_file_browser_startup"> + <item row="0" column="0"> + <widget class="QLabel" name="lbl_file_browser_dir"> + <property name="text"> + <string>Startup path</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="le_file_browser_dir"/> + </item> + <item row="0" column="1"> + <widget class="QCheckBox" name="cb_restore_file_browser_dir"> + <property name="text"> + <string>Restore last directory of previous session</string> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QPushButton" name="pb_file_browser_dir"> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + <item row="0" column="3"> + <spacer name="horizontalSpacer_29"> + <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="3"> + <spacer name="horizontalSpacer_30"> + <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> + </layout> + </item> + </layout> + </widget> </item> <item> <spacer name="verticalSpacer_2"> @@ -1414,8 +1491,8 @@ <rect> <x>0</x> <y>0</y> - <width>678</width> - <height>378</height> + <width>154</width> + <height>114</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_19"> @@ -1492,8 +1569,8 @@ <rect> <x>0</x> <y>0</y> - <width>678</width> - <height>378</height> + <width>529</width> + <height>204</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_20"> @@ -2065,5 +2142,37 @@ </hint> </hints> </connection> + <connection> + <sender>cb_restore_file_browser_dir</sender> + <signal>toggled(bool)</signal> + <receiver>le_file_browser_dir</receiver> + <slot>setDisabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>250</x> + <y>294</y> + </hint> + <hint type="destinationlabel"> + <x>250</x> + <y>324</y> + </hint> + </hints> + </connection> + <connection> + <sender>cb_restore_file_browser_dir</sender> + <signal>toggled(bool)</signal> + <receiver>pb_file_browser_dir</receiver> + <slot>setDisabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>250</x> + <y>294</y> + </hint> + <hint type="destinationlabel"> + <x>426</x> + <y>324</y> + </hint> + </hints> + </connection> </connections> </ui>