Mercurial > octave
diff libgui/src/settings-dialog.cc @ 24011:9107bae20480
style fixes for some GUI source files
* color-picker.cc, color-picker.h, documentation-dock-widget.cc,
documentation-dock-widget.h, external-editor-interface.cc,
external-editor-interface.h, find-files-dialog.cc,
find-files-dialog.h, find-files-model.cc, find-files-model.h,
history-dock-widget.cc, history-dock-widget.h, settings-dialog.cc,
settings-dialog.h, terminal-dock-widget.cc, thread-manager.cc,
thread-manager.h: Use m_ prefix for member variables, order
functions consistently in header and source files, and follow more
Octave coding conventions.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 06 Sep 2017 09:25:46 -0400 |
parents | a5b20fc6588a |
children | 1265c7f0119a |
line wrap: on
line diff
--- a/libgui/src/settings-dialog.cc Tue Sep 05 17:24:13 2017 -0700 +++ b/libgui/src/settings-dialog.cc Wed Sep 06 09:25:46 2017 -0400 @@ -20,6 +20,10 @@ */ +// Programming Note: this file has many lines longer than 80 characters +// due to long function, variable, and property names. Please don't +// break those lines as it tends to make this code even harder to read. + #if defined (HAVE_CONFIG_H) # include "config.h" #endif @@ -78,8 +82,7 @@ } static void -read_lexer_settings (Ui::settings_dialog *ui, QsciLexer *lexer, - QSettings *settings) +read_lexer_settings (Ui::settings_dialog *ui, QsciLexer *lexer, QSettings *settings) { lexer->readSettings (*settings); int styles[MaxLexerStyles]; // array for saving valid styles @@ -96,7 +99,7 @@ QFont default_font = QFont (); int label_width; QColor default_color = QColor (); - QColor dummy_color = QColor (255,0,255); + QColor dummy_color = QColor (255, 0, 255); for (int i = 0; i < max_style; i++) // create dialog elements for all styles { @@ -105,19 +108,19 @@ description[i] = new QLabel (actual_name); description[i]->setWordWrap (true); label_width = 24*description[i]->fontMetrics ().averageCharWidth (); - description[i]->setMaximumSize (label_width,QWIDGETSIZE_MAX); - description[i]->setMinimumSize (label_width,1); + description[i]->setMaximumSize (label_width, QWIDGETSIZE_MAX); + description[i]->setMinimumSize (label_width, 1); select_font[i] = new QFontComboBox (); - select_font[i]->setObjectName (actual_name+"_font"); - select_font[i]->setMaximumSize (label_width,QWIDGETSIZE_MAX); - select_font[i]->setMinimumSize (label_width,1); + select_font[i]->setObjectName (actual_name + "_font"); + select_font[i]->setMaximumSize (label_width, QWIDGETSIZE_MAX); + select_font[i]->setMinimumSize (label_width, 1); font_size[i] = new QSpinBox (); - font_size[i]->setObjectName (actual_name+"_size"); + font_size[i]->setObjectName (actual_name + "_size"); if (styles[i] == 0) // the default { select_font[i]->setCurrentFont (actual_font); default_font = actual_font; - font_size[i]->setRange (6,24); + font_size[i]->setRange (6, 24); default_size = actual_font.pointSize (); font_size[i]->setValue (default_size); default_color = lexer->defaultPaper (); @@ -128,7 +131,7 @@ select_font[i]->setCurrentFont (actual_font); if (actual_font.family () == default_font.family ()) select_font[i]->setEditText (lexer->description (0)); - font_size[i]->setRange (-4,4); + font_size[i]->setRange (-4, 4); font_size[i]->setValue (actual_font.pointSize ()-default_size); font_size[i]->setToolTip (QObject::tr ("Difference to the default size")); if (lexer->paper (styles[i]) == default_color) @@ -136,48 +139,46 @@ else bg_color[i] = new color_picker (lexer->paper (styles[i])); bg_color[i]->setToolTip - (QObject::tr ("Background color, pink (255,0,255) means default")); + (QObject::tr ("Background color, pink (255, 0, 255) means default")); } attrib_font[0+3*i] = new QCheckBox (QObject::tr ("b", "short form for bold")); attrib_font[1+3*i] = new QCheckBox (QObject::tr ("i", "short form for italic")); attrib_font[2+3*i] = new QCheckBox (QObject::tr ("u", "short form for underlined")); attrib_font[0+3*i]->setChecked (actual_font.bold ()); - attrib_font[0+3*i]->setObjectName (actual_name+"_bold"); + attrib_font[0+3*i]->setObjectName (actual_name + "_bold"); attrib_font[1+3*i]->setChecked (actual_font.italic ()); - attrib_font[1+3*i]->setObjectName (actual_name+"_italic"); + attrib_font[1+3*i]->setObjectName (actual_name + "_italic"); attrib_font[2+3*i]->setChecked (actual_font.underline ()); - attrib_font[2+3*i]->setObjectName (actual_name+"_underline"); + attrib_font[2+3*i]->setObjectName (actual_name + "_underline"); color[i] = new color_picker (lexer->color (styles[i])); - color[i]->setObjectName (actual_name+"_color"); - bg_color[i]->setObjectName (actual_name+"_bg_color"); + color[i]->setObjectName (actual_name + "_color"); + bg_color[i]->setObjectName (actual_name + "_bg_color"); int column = 1; - style_grid->addWidget (description[i], i, column++); - style_grid->addWidget (select_font[i], i, column++); - style_grid->addWidget (font_size[i], i, column++); + style_grid->addWidget (description[i], i, column++); + style_grid->addWidget (select_font[i], i, column++); + style_grid->addWidget (font_size[i], i, column++); style_grid->addWidget (attrib_font[0+3*i], i, column++); style_grid->addWidget (attrib_font[1+3*i], i, column++); style_grid->addWidget (attrib_font[2+3*i], i, column++); - style_grid->addWidget (color[i], i, column++); - style_grid->addWidget (bg_color[i], i, column++); + style_grid->addWidget (color[i], i, column++); + style_grid->addWidget (bg_color[i], i, column++); } // place grid with elements into the tab QScrollArea *scroll_area = new QScrollArea (); QWidget *scroll_area_contents = new QWidget (); - scroll_area_contents->setObjectName (QString (lexer->language ())+"_styles"); + scroll_area_contents->setObjectName (QString (lexer->language ()) + "_styles"); scroll_area_contents->setLayout (style_grid); scroll_area->setWidget (scroll_area_contents); - ui->tabs_editor_lexers->addTab (scroll_area,lexer->language ()); + ui->tabs_editor_lexers->addTab (scroll_area, lexer->language ()); - ui->tabs_editor_lexers->setCurrentIndex ( - settings->value ("settings/last_editor_styles_tab",0).toInt ()); + ui->tabs_editor_lexers->setCurrentIndex (settings->value ("settings/last_editor_styles_tab", 0).toInt ()); } static void -write_lexer_settings (Ui::settings_dialog *ui, QsciLexer *lexer, - QSettings *settings) +write_lexer_settings (Ui::settings_dialog *ui, QsciLexer *lexer, QSettings *settings) { QWidget *tab = ui->tabs_editor_lexers-> - findChild <QWidget *>(QString (lexer->language ())+"_styles"); + findChild <QWidget *> (QString (lexer->language ()) + "_styles"); int styles[MaxLexerStyles]; // array for saving valid styles // (enum is not continuous) int max_style = get_valid_lexer_styles (lexer, styles); @@ -187,20 +188,20 @@ color_picker *color; color_picker *bg_color; int default_size = 10; - QFont default_font = QFont ("Courier New",10,-1,0); + QFont default_font = QFont ("Courier New", 10, -1, 0); QColor default_color = QColor (); - QColor dummy_color = QColor (255,0,255); + QColor dummy_color = QColor (255, 0, 255); for (int i = 0; i < max_style; i++) // get dialog elements and their contents { QString actual_name = lexer->description (styles[i]); - select_font = tab->findChild <QFontComboBox *>(actual_name+"_font"); - font_size = tab->findChild <QSpinBox *>(actual_name+"_size"); - attrib_font[0] = tab->findChild <QCheckBox *>(actual_name+"_bold"); - attrib_font[1] = tab->findChild <QCheckBox *>(actual_name+"_italic"); - attrib_font[2] = tab->findChild <QCheckBox *>(actual_name+"_underline"); - color = tab->findChild <color_picker *>(actual_name+"_color"); - bg_color = tab->findChild <color_picker *>(actual_name+"_bg_color"); + select_font = tab->findChild <QFontComboBox *> (actual_name + "_font"); + font_size = tab->findChild <QSpinBox *> (actual_name + "_size"); + attrib_font[0] = tab->findChild <QCheckBox *> (actual_name + "_bold"); + attrib_font[1] = tab->findChild <QCheckBox *> (actual_name + "_italic"); + attrib_font[2] = tab->findChild <QCheckBox *> (actual_name + "_underline"); + color = tab->findChild <color_picker *> (actual_name + "_color"); + bg_color = tab->findChild <color_picker *> (actual_name + "_bg_color"); QFont new_font = default_font; if (select_font) { @@ -226,33 +227,32 @@ new_font.setItalic (attrib_font[1]->isChecked ()); if (attrib_font[2]) new_font.setUnderline (attrib_font[2]->isChecked ()); - lexer->setFont (new_font,styles[i]); + lexer->setFont (new_font, styles[i]); if (styles[i] == 0) lexer->setDefaultFont (new_font); if (color) - lexer->setColor (color->color (),styles[i]); + lexer->setColor (color->color (), styles[i]); if (bg_color) { if (styles[i] == 0) { default_color = bg_color->color (); - lexer->setPaper (default_color,styles[i]); + lexer->setPaper (default_color, styles[i]); lexer->setDefaultPaper (default_color); } else { if (bg_color->color () == dummy_color) - lexer->setPaper (default_color,styles[i]); + lexer->setPaper (default_color, styles[i]); else - lexer->setPaper (bg_color->color (),styles[i]); + lexer->setPaper (bg_color->color (), styles[i]); } } } lexer->writeSettings (*settings); - settings->setValue ( - "settings/last_editor_styles_tab",ui->tabs_editor_lexers->currentIndex ()); + settings->setValue ("settings/last_editor_styles_tab", ui->tabs_editor_lexers->currentIndex ()); settings->sync (); } @@ -267,10 +267,12 @@ if (! settings) { - QMessageBox msgBox (QMessageBox::Warning, tr ("Octave Settings"), - tr ("Unable to save settings. Missing settings " - "file or unknown directory.")); + QMessageBox msgBox + (QMessageBox::Warning, tr ("Octave Settings"), + tr ("Unable to save settings. Missing settings file or unknown directory.")); + msgBox.exec (); + return; } @@ -280,13 +282,12 @@ // look for available language files and the actual settings QString qm_dir_name = resource_manager::get_gui_translation_dir (); QDir qm_dir (qm_dir_name); - QFileInfoList qm_files = qm_dir.entryInfoList (QStringList ("*.qm"), - QDir::Files | QDir::Readable, - QDir::Name); + QFileInfoList qm_files = qm_dir.entryInfoList (QStringList ("*.qm"), QDir::Files | QDir::Readable, QDir::Name); + for (int i = 0; i < qm_files.length (); i++) // insert available languages ui->comboBox_language->addItem (qm_files.at (i).baseName ()); // System at beginning - ui->comboBox_language->insertItem (0,tr ("System setting")); + ui->comboBox_language->insertItem (0, tr ("System setting")); ui->comboBox_language->insertSeparator (1); // separator after System QString language = settings->value ("language", "SYSTEM").toString (); if (language == "SYSTEM") @@ -314,52 +315,50 @@ icon_group->addButton (ui->general_icon_letter); QString widget_icon_set = settings->value ("DockWidgets/widget_icon_set", "NONE").toString (); - ui->general_icon_octave-> setChecked (true); // the default (if invalid set) - ui->general_icon_octave-> setChecked (widget_icon_set == "NONE"); - ui->general_icon_graphic-> setChecked (widget_icon_set == "GRAPHIC"); - ui->general_icon_letter-> setChecked (widget_icon_set == "LETTER"); + ui->general_icon_octave->setChecked (true); // the default (if invalid set) + ui->general_icon_octave->setChecked (widget_icon_set == "NONE"); + ui->general_icon_graphic->setChecked (widget_icon_set == "GRAPHIC"); + ui->general_icon_letter->setChecked (widget_icon_set == "LETTER"); // custom title bar of dock widget - QVariant default_var = QColor (255,255,255); - QColor bg_color = settings->value ("Dockwidgets/title_bg_color", - default_var).value<QColor> (); - _widget_title_bg_color = new color_picker (bg_color); - _widget_title_bg_color->setEnabled (false); - ui->layout_widget_bgtitle->addWidget (_widget_title_bg_color,0); + QVariant default_var = QColor (255, 255, 255); + QColor bg_color = settings->value ("Dockwidgets/title_bg_color", default_var).value<QColor> (); + m_widget_title_bg_color = new color_picker (bg_color); + m_widget_title_bg_color->setEnabled (false); + ui->layout_widget_bgtitle->addWidget (m_widget_title_bg_color, 0); + connect (ui->cb_widget_custom_style, SIGNAL (toggled (bool)), - _widget_title_bg_color, SLOT (setEnabled (bool))); + m_widget_title_bg_color, SLOT (setEnabled (bool))); - default_var = QColor (192,192,192); - QColor bg_color_active = settings->value ("Dockwidgets/title_bg_color_active", - default_var).value<QColor> (); - _widget_title_bg_color_active = new color_picker (bg_color_active); - _widget_title_bg_color_active->setEnabled (false); - ui->layout_widget_bgtitle_active->addWidget (_widget_title_bg_color_active,0); + default_var = QColor (192, 192, 192); + QColor bg_color_active = settings->value ("Dockwidgets/title_bg_color_active", default_var).value<QColor> (); + m_widget_title_bg_color_active = new color_picker (bg_color_active); + m_widget_title_bg_color_active->setEnabled (false); + ui->layout_widget_bgtitle_active->addWidget (m_widget_title_bg_color_active, 0); + connect (ui->cb_widget_custom_style, SIGNAL (toggled (bool)), - _widget_title_bg_color_active, SLOT (setEnabled (bool))); + m_widget_title_bg_color_active, SLOT (setEnabled (bool))); - default_var = QColor (0,0,0); - QColor fg_color = settings->value ("Dockwidgets/title_fg_color", - default_var).value<QColor> (); - _widget_title_fg_color = new color_picker (fg_color); - _widget_title_fg_color->setEnabled (false); - ui->layout_widget_fgtitle->addWidget (_widget_title_fg_color,0); + default_var = QColor (0, 0, 0); + QColor fg_color = settings->value ("Dockwidgets/title_fg_color", default_var).value<QColor> (); + m_widget_title_fg_color = new color_picker (fg_color); + m_widget_title_fg_color->setEnabled (false); + ui->layout_widget_fgtitle->addWidget (m_widget_title_fg_color, 0); + connect (ui->cb_widget_custom_style, SIGNAL (toggled (bool)), - _widget_title_fg_color, SLOT (setEnabled (bool))); + m_widget_title_fg_color, SLOT (setEnabled (bool))); - default_var = QColor (0,0,0); - QColor fg_color_active = settings->value ("Dockwidgets/title_fg_color_active", - default_var).value<QColor> (); - _widget_title_fg_color_active = new color_picker (fg_color_active); - _widget_title_fg_color_active->setEnabled (false); - ui->layout_widget_fgtitle_active->addWidget (_widget_title_fg_color_active,0); + default_var = QColor (0, 0, 0); + QColor fg_color_active = settings->value ("Dockwidgets/title_fg_color_active", default_var).value<QColor> (); + m_widget_title_fg_color_active = new color_picker (fg_color_active); + m_widget_title_fg_color_active->setEnabled (false); + ui->layout_widget_fgtitle_active->addWidget (m_widget_title_fg_color_active, 0); + connect (ui->cb_widget_custom_style, SIGNAL (toggled (bool)), - _widget_title_fg_color_active, SLOT (setEnabled (bool))); + m_widget_title_fg_color_active, SLOT (setEnabled (bool))); - ui->sb_3d_title->setValue ( - settings->value ("DockWidgets/widget_title_3d", 50).toInt ()); - ui->cb_widget_custom_style->setChecked ( - settings->value ("DockWidgets/widget_title_custom_style",false).toBool ()); + ui->sb_3d_title->setValue (settings->value ("DockWidgets/widget_title_3d", 50).toInt ()); + ui->cb_widget_custom_style->setChecked (settings->value ("DockWidgets/widget_title_custom_style", false).toBool ()); // Cursor blinking: consider old terminal related setting if not yet set // TODO: This pref. can be deprecated / removed if Qt adds support for @@ -367,116 +366,82 @@ if (settings->contains ("cursor_blinking")) { // Preference exists, read its value - ui->cb_cursor_blinking->setChecked ( - settings->value ("cursor_blinking",true).toBool ()); + ui->cb_cursor_blinking->setChecked (settings->value ("cursor_blinking", true).toBool ()); } else { // Pref. does not exist, so take old terminal related pref. - ui->cb_cursor_blinking->setChecked ( - settings->value ("terminal/cursorBlinking",true).toBool ()); + ui->cb_cursor_blinking->setChecked (settings->value ("terminal/cursorBlinking", true).toBool ()); } // prompt on exit - ui->cb_prompt_to_exit->setChecked ( - settings->value ("prompt_to_exit",false).toBool ()); + ui->cb_prompt_to_exit->setChecked (settings->value ("prompt_to_exit", false).toBool ()); // Main status bar - ui->cb_status_bar->setChecked ( - settings->value ("show_status_bar",true).toBool ()); + ui->cb_status_bar->setChecked (settings->value ("show_status_bar", true).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 ())); + 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 (void)), + this, SLOT (get_octave_dir (void))); // // editor // - ui->useCustomFileEditor->setChecked (settings->value ("useCustomFileEditor", - false).toBool ()); - ui->customFileEditor->setText ( - settings->value ("customFileEditor").toString ()); - ui->editor_showLineNumbers->setChecked ( - settings->value ("editor/showLineNumbers",true).toBool ()); - ui->editor_linenr_size->setValue ( - settings->value ("editor/line_numbers_size",0).toInt ()); + ui->useCustomFileEditor->setChecked (settings->value ("useCustomFileEditor", false).toBool ()); + ui->customFileEditor->setText (settings->value ("customFileEditor").toString ()); + ui->editor_showLineNumbers->setChecked (settings->value ("editor/showLineNumbers", true).toBool ()); + ui->editor_linenr_size->setValue (settings->value ("editor/line_numbers_size", 0).toInt ()); resource_manager::combo_encoding (ui->editor_combo_encoding); default_var = QColor (240, 240, 240); - QColor setting_color = settings->value ("editor/highlight_current_line_color", - default_var).value<QColor> (); - _editor_current_line_color = new color_picker (setting_color); - ui->editor_grid_current_line->addWidget (_editor_current_line_color,0,3); - _editor_current_line_color->setMinimumSize (20,10); - _editor_current_line_color->setEnabled (false); + QColor setting_color = settings->value ("editor/highlight_current_line_color", default_var).value<QColor> (); + m_editor_current_line_color = new color_picker (setting_color); + ui->editor_grid_current_line->addWidget (m_editor_current_line_color, 0, 3); + m_editor_current_line_color->setMinimumSize (20, 10); + m_editor_current_line_color->setEnabled (false); + connect (ui->editor_highlightCurrentLine, SIGNAL (toggled (bool)), - _editor_current_line_color, SLOT (setEnabled (bool))); - ui->editor_highlightCurrentLine->setChecked ( - settings->value ("editor/highlightCurrentLine",true).toBool ()); - ui->editor_long_line_marker->setChecked ( - settings->value ("editor/long_line_marker",true).toBool ()); + m_editor_current_line_color, SLOT (setEnabled (bool))); + + ui->editor_highlightCurrentLine->setChecked (settings->value ("editor/highlightCurrentLine", true).toBool ()); + ui->editor_long_line_marker->setChecked (settings->value ("editor/long_line_marker", true).toBool ()); bool long_line = - settings->value ("editor/long_line_marker_line",true).toBool (); + settings->value ("editor/long_line_marker_line", true).toBool (); ui->editor_long_line_marker_line->setChecked (long_line); bool long_back = - settings->value ("editor/long_line_marker_background",false).toBool (); + settings->value ("editor/long_line_marker_background", false).toBool (); ui->editor_long_line_marker_background->setChecked (long_back); if (! (long_line || long_back)) ui->editor_long_line_marker_line->setChecked (true); - ui->editor_long_line_column->setValue ( - settings->value ("editor/long_line_column",80).toInt ()); - ui->editor_break_checkbox->setChecked ( - settings->value ("editor/break_lines",false).toBool ()); - ui->editor_break_checkbox->setChecked ( - settings->value ("editor/break_lines_comments",false).toBool ()); - ui->editor_wrap_checkbox->setChecked ( - settings->value ("editor/wrap_lines",false).toBool ()); - ui->cb_edit_status_bar->setChecked ( - settings->value ("editor/show_edit_status_bar",true).toBool ()); - ui->cb_edit_tool_bar->setChecked ( - settings->value ("editor/show_toolbar",true).toBool ()); - ui->cb_code_folding->setChecked ( - settings->value ("editor/code_folding",true).toBool ()); - ui->editor_highlight_all_occurrences->setChecked ( - settings->value ("editor/highlight_all_occurrences",true).toBool ()); + ui->editor_long_line_column->setValue (settings->value ("editor/long_line_column", 80).toInt ()); + ui->editor_break_checkbox->setChecked (settings->value ("editor/break_lines", false).toBool ()); + ui->editor_break_checkbox->setChecked (settings->value ("editor/break_lines_comments", false).toBool ()); + ui->editor_wrap_checkbox->setChecked (settings->value ("editor/wrap_lines", false).toBool ()); + ui->cb_edit_status_bar->setChecked (settings->value ("editor/show_edit_status_bar", true).toBool ()); + ui->cb_edit_tool_bar->setChecked (settings->value ("editor/show_toolbar", true).toBool ()); + ui->cb_code_folding->setChecked (settings->value ("editor/code_folding", true).toBool ()); + ui->editor_highlight_all_occurrences->setChecked (settings->value ("editor/highlight_all_occurrences", true).toBool ()); - ui->editor_auto_endif->setCurrentIndex ( - settings->value ("editor/auto_endif", 1).toInt () ); - ui->editor_codeCompletion->setChecked ( - settings->value ("editor/codeCompletion", true).toBool ()); - ui->editor_spinbox_ac_threshold->setValue ( - settings->value ("editor/codeCompletion_threshold",2).toInt ()); - ui->editor_checkbox_ac_keywords->setChecked ( - settings->value ("editor/codeCompletion_keywords",true).toBool ()); - ui->editor_checkbox_ac_builtins->setEnabled ( - ui->editor_checkbox_ac_keywords->isChecked ()); - ui->editor_checkbox_ac_functions->setEnabled ( - ui->editor_checkbox_ac_keywords->isChecked ()); - ui->editor_checkbox_ac_builtins->setChecked ( - settings->value ("editor/codeCompletion_octave_builtins",true).toBool ()); - ui->editor_checkbox_ac_functions->setChecked ( - settings->value ("editor/codeCompletion_octave_functions",true).toBool ()); - ui->editor_checkbox_ac_document->setChecked ( - settings->value ("editor/codeCompletion_document",false).toBool ()); - ui->editor_checkbox_ac_case->setChecked ( - settings->value ("editor/codeCompletion_case",true).toBool ()); - ui->editor_checkbox_ac_replace->setChecked ( - settings->value ("editor/codeCompletion_replace",false).toBool ()); - ui->editor_ws_checkbox->setChecked ( - settings->value ("editor/show_white_space", false).toBool ()); - ui->editor_ws_indent_checkbox->setChecked ( - settings->value ("editor/show_white_space_indent",false).toBool ()); - ui->cb_show_eol->setChecked ( - settings->value ("editor/show_eol_chars",false).toBool ()); - ui->cb_show_hscrollbar->setChecked ( - settings->value ("editor/show_hscroll_bar",true).toBool ()); - ui->combo_oct_comment_str->setCurrentIndex ( - settings->value ("editor/octave_comment_string", 0).toInt ()); + ui->editor_auto_endif->setCurrentIndex (settings->value ("editor/auto_endif", 1).toInt () ); + ui->editor_codeCompletion->setChecked (settings->value ("editor/codeCompletion", true).toBool ()); + ui->editor_spinbox_ac_threshold->setValue (settings->value ("editor/codeCompletion_threshold", 2).toInt ()); + ui->editor_checkbox_ac_keywords->setChecked (settings->value ("editor/codeCompletion_keywords", true).toBool ()); + ui->editor_checkbox_ac_builtins->setEnabled (ui->editor_checkbox_ac_keywords->isChecked ()); + ui->editor_checkbox_ac_functions->setEnabled (ui->editor_checkbox_ac_keywords->isChecked ()); + ui->editor_checkbox_ac_builtins->setChecked (settings->value ("editor/codeCompletion_octave_builtins", true).toBool ()); + ui->editor_checkbox_ac_functions->setChecked (settings->value ("editor/codeCompletion_octave_functions", true).toBool ()); + ui->editor_checkbox_ac_document->setChecked (settings->value ("editor/codeCompletion_document", false).toBool ()); + ui->editor_checkbox_ac_case->setChecked (settings->value ("editor/codeCompletion_case", true).toBool ()); + ui->editor_checkbox_ac_replace->setChecked (settings->value ("editor/codeCompletion_replace", false).toBool ()); + ui->editor_ws_checkbox->setChecked (settings->value ("editor/show_white_space", false).toBool ()); + ui->editor_ws_indent_checkbox->setChecked (settings->value ("editor/show_white_space_indent", false).toBool ()); + ui->cb_show_eol->setChecked (settings->value ("editor/show_eol_chars", false).toBool ()); + ui->cb_show_hscrollbar->setChecked (settings->value ("editor/show_hscroll_bar", true).toBool ()); + ui->combo_oct_comment_str->setCurrentIndex (settings->value ("editor/octave_comment_string", 0).toInt ()); #if defined (HAVE_QSCINTILLA) # if defined (Q_OS_WIN32) @@ -489,50 +454,29 @@ #else int eol_mode = 2; #endif - ui->combo_eol_mode->setCurrentIndex ( - settings->value ("editor/default_eol_mode",eol_mode).toInt ()); - ui->editor_auto_ind_checkbox->setChecked ( - settings->value ("editor/auto_indent", true).toBool ()); - ui->editor_tab_ind_checkbox->setChecked ( - settings->value ("editor/tab_indents_line",false).toBool ()); - ui->editor_bs_unind_checkbox->setChecked ( - settings->value ("editor/backspace_unindents_line",false).toBool ()); - ui->editor_ind_guides_checkbox->setChecked ( - settings->value ("editor/show_indent_guides",false).toBool ()); - ui->editor_ind_width_spinbox->setValue ( - settings->value ("editor/indent_width", 2).toInt ()); - ui->editor_ind_uses_tabs_checkbox->setChecked ( - settings->value ("editor/indent_uses_tabs", false).toBool ()); - ui->editor_tab_width_spinbox->setValue ( - settings->value ("editor/tab_width", 2).toInt ()); - ui->editor_longWindowTitle->setChecked ( - settings->value ("editor/longWindowTitle",false).toBool ()); - ui->editor_notebook_tab_width_min->setValue ( - settings->value ("editor/notebook_tab_width_min", 160).toInt ()); - ui->editor_notebook_tab_width_max->setValue ( - settings->value ("editor/notebook_tab_width_max", 300).toInt ()); - ui->editor_restoreSession->setChecked ( - settings->value ("editor/restoreSession", true).toBool ()); - ui->editor_create_new_file->setChecked ( - settings->value ("editor/create_new_file",false).toBool ()); - ui->editor_reload_changed_files->setChecked ( - settings->value ("editor/always_reload_changed_files",false).toBool ()); - ui->editor_hiding_closes_files->setChecked ( - settings->value ("editor/hiding_closes_files",false).toBool ()); + ui->combo_eol_mode->setCurrentIndex (settings->value ("editor/default_eol_mode", eol_mode).toInt ()); + ui->editor_auto_ind_checkbox->setChecked (settings->value ("editor/auto_indent", true).toBool ()); + ui->editor_tab_ind_checkbox->setChecked (settings->value ("editor/tab_indents_line", false).toBool ()); + ui->editor_bs_unind_checkbox->setChecked (settings->value ("editor/backspace_unindents_line", false).toBool ()); + ui->editor_ind_guides_checkbox->setChecked (settings->value ("editor/show_indent_guides", false).toBool ()); + ui->editor_ind_width_spinbox->setValue (settings->value ("editor/indent_width", 2).toInt ()); + ui->editor_ind_uses_tabs_checkbox->setChecked (settings->value ("editor/indent_uses_tabs", false).toBool ()); + ui->editor_tab_width_spinbox->setValue (settings->value ("editor/tab_width", 2).toInt ()); + ui->editor_longWindowTitle->setChecked (settings->value ("editor/longWindowTitle", false).toBool ()); + ui->editor_notebook_tab_width_min->setValue (settings->value ("editor/notebook_tab_width_min", 160).toInt ()); + ui->editor_notebook_tab_width_max->setValue (settings->value ("editor/notebook_tab_width_max", 300).toInt ()); + ui->editor_restoreSession->setChecked (settings->value ("editor/restoreSession", true).toBool ()); + ui->editor_create_new_file->setChecked (settings->value ("editor/create_new_file", false).toBool ()); + ui->editor_reload_changed_files->setChecked (settings->value ("editor/always_reload_changed_files", false).toBool ()); + ui->editor_hiding_closes_files->setChecked (settings->value ("editor/hiding_closes_files", false).toBool ()); // terminal - ui->terminal_fontName->setCurrentFont (QFont ( - settings->value ("terminal/fontName", "Courier New").toString ())); - ui->terminal_fontSize->setValue ( - settings->value ("terminal/fontSize", 10).toInt ()); - ui->terminal_history_buffer->setValue ( - settings->value ("terminal/history_buffer",1000).toInt ()); - ui->terminal_cursorUseForegroundColor->setChecked ( - settings->value ("terminal/cursorUseForegroundColor",true).toBool ()); - ui->terminal_focus_command->setChecked ( - settings->value ("terminal/focus_after_command",false).toBool ()); - ui->terminal_print_dbg_location->setChecked ( - settings->value ("terminal/print_debug_location",false).toBool ()); + ui->terminal_fontName->setCurrentFont (QFont (settings->value ("terminal/fontName", "Courier New").toString ())); + ui->terminal_fontSize->setValue (settings->value ("terminal/fontSize", 10).toInt ()); + ui->terminal_history_buffer->setValue (settings->value ("terminal/history_buffer", 1000).toInt ()); + ui->terminal_cursorUseForegroundColor->setChecked (settings->value ("terminal/cursorUseForegroundColor", true).toBool ()); + ui->terminal_focus_command->setChecked (settings->value ("terminal/focus_after_command", false).toBool ()); + ui->terminal_print_dbg_location->setChecked (settings->value ("terminal/print_debug_location", false).toBool ()); QString cursorType = settings->value ("terminal/cursorType", "ibeam").toString (); @@ -554,22 +498,18 @@ // file browser 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->le_file_browser_extensions->setText ( - settings->value ("filesdockwidget/txt_file_extensions", "m;c;cc;cpp;h;txt") - .toString ()); + + 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 ()); - ui->checkbox_allow_web_connect->setChecked ( - settings->value ("news/allow_web_connection",false).toBool ()); - ui->useProxyServer->setChecked ( - settings->value ("useProxyServer", false).toBool ()); + connect (ui->pb_file_browser_dir, SIGNAL (pressed (void)), + this, SLOT (get_file_browser_dir (void))); + + ui->le_file_browser_extensions->setText (settings->value ("filesdockwidget/txt_file_extensions", "m;c;cc;cpp;h;txt").toString ()); + + ui->checkbox_allow_web_connect->setChecked (settings->value ("news/allow_web_connection", false).toBool ()); + ui->useProxyServer->setChecked (settings->value ("useProxyServer", false).toBool ()); ui->proxyHostName->setText (settings->value ("proxyHostName").toString ()); int currentIndex = 0; @@ -589,72 +529,85 @@ // colors read_workspace_colors (settings); // hide tool tips - ui->cb_hide_tool_tips->setChecked ( - settings->value ("workspaceview/hide_tool_tips",false).toBool ()); + ui->cb_hide_tool_tips->setChecked (settings->value ("workspaceview/hide_tool_tips", false).toBool ()); // terminal colors read_terminal_colors (settings); // variable editor - ui->varedit_columnWidth->setText(settings->value("variable_editor/column_width","100").toString()); - ui->varedit_autoFitColumnWidth->setChecked(settings->value("variable_editor/autofit_column_width",false).toBool()); - ui->varedit_autofitType->setCurrentIndex(settings->value("autofit_type",0).toInt()); - ui->varedit_rowHeight->setText(settings->value("variable_editor/row_height","2").toString()); - ui->varedit_rowAutofit->setChecked(settings->value("variable_editor/autofit_row_height",true).toBool()); - ui->varedit_font->setFont(QFont(settings->value("variable_editor/font",settings->value("terminal/FontName","Courier New")).toString())); - ui->varedit_fontSize->setValue(settings->value("variable_editor/font_size",QVariant(10)).toInt()); - ui->varedit_useTerminalFont->setChecked(settings->value("variable_editor/use_terminal_font",false).toBool()); - ui->varedit_alternate->setChecked(settings->value("variable_editor/alternate_rows",QVariant(false)).toBool()); + ui->varedit_columnWidth->setText (settings->value ("variable_editor/column_width", "100").toString ()); + ui->varedit_autoFitColumnWidth->setChecked (settings->value ("variable_editor/autofit_column_width", false).toBool ()); + ui->varedit_autofitType->setCurrentIndex (settings->value ("autofit_type", 0).toInt ()); + ui->varedit_rowHeight->setText (settings->value ("variable_editor/row_height", "2").toString ()); + ui->varedit_rowAutofit->setChecked (settings->value ("variable_editor/autofit_row_height", true).toBool ()); + ui->varedit_font->setFont (QFont (settings->value ("variable_editor/font", settings->value ("terminal/FontName", "Courier New")).toString ())); + ui->varedit_fontSize->setValue (settings->value ("variable_editor/font_size", QVariant (10)).toInt ()); + ui->varedit_useTerminalFont->setChecked (settings->value ("variable_editor/use_terminal_font", false).toBool ()); + ui->varedit_alternate->setChecked (settings->value ("variable_editor/alternate_rows", QVariant (false)).toBool ()); // variable editor colors - read_varedit_colors(settings); + read_varedit_colors (settings); // shortcuts - ui->cb_prevent_readline_conflicts->setChecked ( - settings->value ("shortcuts/prevent_readline_conflicts", true).toBool ()); + ui->cb_prevent_readline_conflicts->setChecked (settings->value ("shortcuts/prevent_readline_conflicts", true).toBool ()); // initialize the tree view with all shortcut data shortcut_manager::fill_treewidget (ui->shortcuts_treewidget); // connect the buttons for import/export of the shortcut sets - connect (ui->btn_import_shortcut_set, SIGNAL (clicked ()), - this, SLOT (import_shortcut_set ())); - connect (ui->btn_export_shortcut_set, SIGNAL (clicked ()), - this, SLOT (export_shortcut_set ())); - connect (ui->btn_default_shortcut_set, SIGNAL (clicked ()), - this, SLOT (default_shortcut_set ())); + connect (ui->btn_import_shortcut_set, SIGNAL (clicked (void)), + this, SLOT (import_shortcut_set (void))); + + connect (ui->btn_export_shortcut_set, SIGNAL (clicked (void)), + this, SLOT (export_shortcut_set (void))); + + connect (ui->btn_default_shortcut_set, SIGNAL (clicked (void)), + this, SLOT (default_shortcut_set (void))); #if defined (HAVE_QSCINTILLA) + // editor styles: create lexer, read settings, and create dialog elements QsciLexer *lexer; + #if defined (HAVE_LEXER_OCTAVE) + lexer = new QsciLexerOctave (); read_lexer_settings (ui, lexer, settings); delete lexer; + #elif defined (HAVE_LEXER_MATLAB) + lexer = new QsciLexerMatlab (); read_lexer_settings (ui, lexer, settings); delete lexer; + #endif + lexer = new QsciLexerCPP (); read_lexer_settings (ui, lexer, settings); delete lexer; + lexer = new QsciLexerPerl (); read_lexer_settings (ui, lexer, settings); delete lexer; + lexer = new QsciLexerBatch (); read_lexer_settings (ui, lexer, settings); delete lexer; + lexer = new QsciLexerDiff (); read_lexer_settings (ui, lexer, settings); delete lexer; + lexer = new QsciLexerBash (); read_lexer_settings (ui, lexer, settings); delete lexer; + lexer = new octave_txt_lexer (); read_lexer_settings (ui, lexer, settings); delete lexer; + #endif // which tab is the desired one? @@ -662,10 +615,10 @@ // connect button box signal connect (ui->button_box, SIGNAL (clicked (QAbstractButton *)), - this, SLOT (button_clicked (QAbstractButton *))); + this, SLOT (button_clicked (QAbstractButton *))); } -settings_dialog::~settings_dialog () +settings_dialog::~settings_dialog (void) { delete ui; } @@ -677,19 +630,293 @@ { QSettings *settings = resource_manager::get_settings (); if (settings) - ui->tabWidget->setCurrentIndex (settings->value ("settings/last_tab", - 0).toInt ()); + ui->tabWidget->setCurrentIndex (settings->value ("settings/last_tab", 0).toInt ()); } else { QHash <QString, QWidget*> tab_hash; tab_hash["editor"] = ui->tab_editor; tab_hash["editor_styles"] = ui->tab_editor_styles; - ui->tabWidget->setCurrentIndex ( - ui->tabWidget->indexOf (tab_hash.value (tab))); + ui->tabWidget->setCurrentIndex (ui->tabWidget->indexOf (tab_hash.value (tab))); + } +} + +void +settings_dialog::get_octave_dir (void) +{ + get_dir (ui->le_octave_dir, tr ("Set Octave Startup Directory")); +} + +void +settings_dialog::get_file_browser_dir (void) +{ + get_dir (ui->le_file_browser_dir, tr ("Set File Browser Startup Directory")); +} + +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::button_clicked (QAbstractButton *button) +{ + QDialogButtonBox::ButtonRole button_role = ui->button_box->buttonRole (button); + + if (button_role == QDialogButtonBox::ApplyRole + || button_role == QDialogButtonBox::AcceptRole) + { + write_changed_settings (button_role == QDialogButtonBox::AcceptRole); + emit apply_new_settings (); + } + + if (button_role == QDialogButtonBox::RejectRole + || button_role == QDialogButtonBox::AcceptRole) + close (); +} + +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); } } +// slots for import/export of shortcut sets +void +settings_dialog::import_shortcut_set (void) +{ + shortcut_manager::import_export (shortcut_manager::OSC_IMPORT); +} + +void +settings_dialog::export_shortcut_set (void) +{ + shortcut_manager::import_export (shortcut_manager::OSC_EXPORT); +} + +void +settings_dialog::default_shortcut_set (void) +{ + shortcut_manager::import_export (shortcut_manager::OSC_DEFAULT); +} + +void +settings_dialog::write_changed_settings (bool closing) +{ + QSettings *settings = resource_manager::get_settings (); + + // the icon set + QString widget_icon_set = "NONE"; + if (ui->general_icon_letter->isChecked ()) + widget_icon_set = "LETTER"; + else if (ui->general_icon_graphic->isChecked ()) + widget_icon_set = "GRAPHIC"; + settings->setValue ("DockWidgets/widget_icon_set", widget_icon_set); + + // language + QString language = ui->comboBox_language->currentText (); + if (language == tr ("System setting")) + language = "SYSTEM"; + settings->setValue ("language", language); + + // dock widget title bar + settings->setValue ("DockWidgets/widget_title_custom_style", ui->cb_widget_custom_style->isChecked ()); + settings->setValue ("DockWidgets/widget_title_3d", ui->sb_3d_title->value ()); + settings->setValue ("Dockwidgets/title_bg_color", m_widget_title_bg_color->color ()); + settings->setValue ("Dockwidgets/title_bg_color_active", m_widget_title_bg_color_active->color ()); + settings->setValue ("Dockwidgets/title_fg_color", m_widget_title_fg_color->color ()); + settings->setValue ("Dockwidgets/title_fg_color_active", m_widget_title_fg_color_active->color ()); + + // icon size + int icon_size = 0; + if (ui->icon_size_small->isChecked ()) + icon_size = -1; + else if (ui->icon_size_large->isChecked ()) + icon_size = 1; + settings->setValue ("toolbar_icon_size", icon_size); + + // cursor blinking + settings->setValue ("cursor_blinking", ui->cb_cursor_blinking->isChecked ()); + + // promp to exit + settings->setValue ("prompt_to_exit", ui->cb_prompt_to_exit->isChecked ()); + + // status bar + settings->setValue ("show_status_bar", ui->cb_status_bar->isChecked ()); + + // 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 ()); + settings->setValue ("editor/showLineNumbers", ui->editor_showLineNumbers->isChecked ()); + settings->setValue ("editor/line_numbers_size", ui->editor_linenr_size->value ()); + settings->setValue ("editor/highlightCurrentLine", ui->editor_highlightCurrentLine->isChecked ()); + settings->setValue ("editor/highlight_current_line_color", m_editor_current_line_color->color ()); + settings->setValue ("editor/long_line_marker", ui->editor_long_line_marker->isChecked ()); + settings->setValue ("editor/long_line_marker_line", ui->editor_long_line_marker_line->isChecked ()); + settings->setValue ("editor/long_line_marker_background", ui->editor_long_line_marker_background->isChecked ()); + settings->setValue ("editor/long_line_column", ui->editor_long_line_column->value ()); + settings->setValue ("editor/break_lines", ui->editor_break_checkbox->isChecked ()); + settings->setValue ("editor/break_lines_comments", ui->editor_break_comments_checkbox->isChecked ()); + settings->setValue ("editor/wrap_lines", ui->editor_wrap_checkbox->isChecked ()); + settings->setValue ("editor/code_folding", ui->cb_code_folding->isChecked ()); + settings->setValue ("editor/show_edit_status_bar", ui->cb_edit_status_bar->isChecked ()); + settings->setValue ("editor/show_toolbar", ui->cb_edit_tool_bar->isChecked ()); + settings->setValue ("editor/highlight_all_occurrences", ui->editor_highlight_all_occurrences->isChecked ()); + settings->setValue ("editor/codeCompletion", ui->editor_codeCompletion->isChecked ()); + settings->setValue ("editor/codeCompletion_threshold", ui->editor_spinbox_ac_threshold->value ()); + settings->setValue ("editor/codeCompletion_keywords", ui->editor_checkbox_ac_keywords->isChecked ()); + settings->setValue ("editor/codeCompletion_octave_builtins", ui->editor_checkbox_ac_builtins->isChecked ()); + settings->setValue ("editor/codeCompletion_octave_functions", ui->editor_checkbox_ac_functions->isChecked ()); + settings->setValue ("editor/codeCompletion_document", ui->editor_checkbox_ac_document->isChecked ()); + settings->setValue ("editor/codeCompletion_case", ui->editor_checkbox_ac_case->isChecked ()); + settings->setValue ("editor/codeCompletion_replace", ui->editor_checkbox_ac_replace->isChecked ()); + settings->setValue ("editor/auto_endif", ui->editor_auto_endif->currentIndex ()); + settings->setValue ("editor/show_white_space", ui->editor_ws_checkbox->isChecked ()); + settings->setValue ("editor/show_white_space_indent", ui->editor_ws_indent_checkbox->isChecked ()); + settings->setValue ("editor/show_eol_chars", ui->cb_show_eol->isChecked ()); + settings->setValue ("editor/show_hscroll_bar", ui->cb_show_hscrollbar->isChecked ()); + settings->setValue ("editor/default_eol_mode", ui->combo_eol_mode->currentIndex ()); + settings->setValue ("editor/octave_comment_string", ui->combo_oct_comment_str->currentIndex ()); + settings->setValue ("editor/default_encoding", ui->editor_combo_encoding->currentText ()); + settings->setValue ("editor/auto_indent", ui->editor_auto_ind_checkbox->isChecked ()); + settings->setValue ("editor/tab_indents_line", ui->editor_tab_ind_checkbox->isChecked ()); + settings->setValue ("editor/backspace_unindents_line", ui->editor_bs_unind_checkbox->isChecked ()); + settings->setValue ("editor/show_indent_guides", ui->editor_ind_guides_checkbox->isChecked ()); + settings->setValue ("editor/indent_width", ui->editor_ind_width_spinbox->value ()); + settings->setValue ("editor/indent_uses_tabs", ui->editor_ind_uses_tabs_checkbox->isChecked ()); + settings->setValue ("editor/tab_width", ui->editor_tab_width_spinbox->value ()); + settings->setValue ("editor/longWindowTitle", ui->editor_longWindowTitle->isChecked ()); + settings->setValue ("editor/notebook_tab_width_min", ui->editor_notebook_tab_width_min->value ()); + settings->setValue ("editor/notebook_tab_width_max", ui->editor_notebook_tab_width_max->value ()); + settings->setValue ("editor/restoreSession", ui->editor_restoreSession->isChecked ()); + settings->setValue ("editor/create_new_file", ui->editor_create_new_file->isChecked ()); + settings->setValue ("editor/hiding_closes_files", ui->editor_hiding_closes_files->isChecked ()); + settings->setValue ("editor/always_reload_changed_files", ui->editor_reload_changed_files->isChecked ()); + settings->setValue ("terminal/fontSize", ui->terminal_fontSize->value ()); + settings->setValue ("terminal/fontName", ui->terminal_fontName->currentFont ().family ()); + + // file browser + 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 ("filesdockwidget/txt_file_extensions", ui->le_file_browser_extensions->text ()); + + settings->setValue ("news/allow_web_connection", ui->checkbox_allow_web_connect->isChecked ()); + settings->setValue ("useProxyServer", ui->useProxyServer->isChecked ()); + settings->setValue ("proxyType", ui->proxyType->currentText ()); + settings->setValue ("proxyHostName", ui->proxyHostName->text ()); + settings->setValue ("proxyPort", ui->proxyPort->text ()); + settings->setValue ("proxyUserName", ui->proxyUserName->text ()); + settings->setValue ("proxyPassword", ui->proxyPassword->text ()); + settings->setValue ("terminal/cursorUseForegroundColor", ui->terminal_cursorUseForegroundColor->isChecked ()); + settings->setValue ("terminal/focus_after_command", ui->terminal_focus_command->isChecked ()); + settings->setValue ("terminal/print_debug_location", ui->terminal_print_dbg_location->isChecked ()); + settings->setValue ("terminal/history_buffer", ui->terminal_history_buffer->value ()); + + // the cursor + QString cursorType; + switch (ui->terminal_cursorType->currentIndex ()) + { + case 0: cursorType = "ibeam"; break; + case 1: cursorType = "block"; break; + case 2: cursorType = "underline"; break; + } + settings->setValue ("terminal/cursorType", cursorType); + +#if defined (HAVE_QSCINTILLA) + // editor styles: create lexer, get dialog contents, and write settings + QsciLexer *lexer; + +#if defined (HAVE_LEXER_OCTAVE) + + lexer = new QsciLexerOctave (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + +#elif defined (HAVE_LEXER_MATLAB) + + lexer = new QsciLexerMatlab (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + +#endif + + lexer = new QsciLexerCPP (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + + lexer = new QsciLexerPerl (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + + lexer = new QsciLexerBatch (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + + lexer = new QsciLexerDiff (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + + lexer = new QsciLexerBash (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + + lexer = new octave_txt_lexer (); + write_lexer_settings (ui, lexer, settings); + delete lexer; + +#endif + + // Workspace + write_workspace_colors (settings); + // hide tool tips + settings->setValue ("workspaceview/hide_tool_tips", ui->cb_hide_tool_tips->isChecked ()); + + // Terminal + write_terminal_colors (settings); + + // Variable editor + settings->setValue ("variable_editor/autofit_column_width", ui->varedit_autoFitColumnWidth->isChecked ()); + settings->setValue ("variable_editor/autofit_type", ui->varedit_autofitType->currentIndex ()); + settings->setValue ("variable_editor/column_width", ui->varedit_columnWidth->text ()); + settings->setValue ("variable_editor/row_height", ui->varedit_rowHeight->text ()); + settings->setValue ("variable_editor/autofit_row_height", ui->varedit_rowAutofit->isChecked ()); + settings->setValue ("variable_editor/use_terminal_font", ui->varedit_useTerminalFont->isChecked ()); + settings->setValue ("variable_editor/alternate_rows", ui->varedit_alternate->isChecked ()); + settings->setValue ("variable_editor/font_name", ui->varedit_font->currentFont ().family ()); + settings->setValue ("variable_editor/font_size", ui->varedit_fontSize->value ()); + write_varedit_colors (settings); + + // shortcuts + settings->setValue ("shortcuts/prevent_readline_conflicts", ui->cb_prevent_readline_conflicts->isChecked ()); + shortcut_manager::write_shortcuts (settings, closing); + + // settings dialog's geometry + settings->setValue ("settings/last_tab", ui->tabWidget->currentIndex ()); + settings->setValue ("settings/geometry", saveGeometry ()); + + settings->sync (); +} + void settings_dialog::read_workspace_colors (QSettings *settings) { @@ -711,14 +938,12 @@ description[i] = new QLabel (" " + class_names.at (i)); description[i]->setAlignment (Qt::AlignRight); QVariant default_var = default_colors.at (i); - QColor setting_color = settings->value ("workspaceview/color_" - + class_chars.mid (i,1), - default_var).value<QColor> (); + QColor setting_color = settings->value ("workspaceview/color_" + class_chars.mid (i, 1), default_var).value<QColor> (); color[i] = new color_picker (setting_color); - color[i]->setObjectName ("color_"+class_chars.mid (i, 1)); + color[i]->setObjectName ("color_" + class_chars.mid (i, 1)); color[i]->setMinimumSize (30, 10); style_grid->addWidget (description[i], row, 3*column); - style_grid->addWidget (color[i], row, 3*column+1); + style_grid->addWidget (color[i], row, 3*column+1); if (++column == 3) { style_grid->setColumnStretch (4*column, 10); @@ -732,6 +957,22 @@ } void +settings_dialog::write_workspace_colors (QSettings *settings) +{ + + QString class_chars = resource_manager::storage_class_chars (); + color_picker *color; + + for (int i = 0; i < class_chars.length (); i++) + { + color = ui->workspace_colors_box->findChild <color_picker *> ("color_" + class_chars.mid (i, 1)); + if (color) + settings->setValue ("workspaceview/color_" + class_chars.mid (i, 1), color->color ()); + } + settings->sync (); +} + +void settings_dialog::read_terminal_colors (QSettings *settings) { @@ -751,14 +992,12 @@ description[i] = new QLabel (" " + class_names.at (i)); description[i]->setAlignment (Qt::AlignRight); QVariant default_var = default_colors.at (i); - QColor setting_color = settings->value ("terminal/color_" - + class_chars.mid (i,1), - default_var).value<QColor> (); + QColor setting_color = settings->value ("terminal/color_" + class_chars.mid (i, 1), default_var).value<QColor> (); color[i] = new color_picker (setting_color); - color[i]->setObjectName ("terminal_color_"+class_chars.mid (i, 1)); + color[i]->setObjectName ("terminal_color_" + class_chars.mid (i, 1)); color[i]->setMinimumSize (30, 10); style_grid->addWidget (description[i], row, 2*column); - style_grid->addWidget (color[i], row, 2*column+1); + style_grid->addWidget (color[i], row, 2*column+1); if (++column == 2) { style_grid->setColumnStretch (3*column, 10); @@ -772,23 +1011,21 @@ } void -settings_dialog::write_varedit_colors (QSettings *settings) +settings_dialog::write_terminal_colors (QSettings *settings) { - QString class_chars = resource_manager::varedit_color_chars (); - color_picker *color; + QString class_chars = resource_manager::terminal_color_chars (); + color_picker *color; - for (int i = 0; i < class_chars.length (); i++) - { - color = ui->varedit_colors_box->findChild <color_picker *>( - "varedit_color_"+class_chars.mid (i,1)); - if (color) - settings->setValue ("variable_editor/color_"+class_chars.mid (i,1), - color->color ()); - } - settings->sync (); + for (int i = 0; i < class_chars.length (); i++) + { + color = ui->terminal_colors_box->findChild <color_picker *> ("terminal_color_" + class_chars.mid (i, 1)); + if (color) + settings->setValue ("terminal/color_" + class_chars.mid (i, 1), color->color ()); + } + + settings->sync (); } - void settings_dialog::read_varedit_colors (QSettings *settings) { @@ -808,14 +1045,12 @@ description[i] = new QLabel (" " + class_names.at (i)); description[i]->setAlignment (Qt::AlignRight); QVariant default_var = default_colors.at (i); - QColor setting_color = settings->value ("variable_editor/color_" - + class_chars.mid (i,1), - default_var).value<QColor> (); + QColor setting_color = settings->value ("variable_editor/color_" + class_chars.mid (i, 1), default_var).value<QColor> (); color[i] = new color_picker (setting_color); - color[i]->setObjectName ("varedit_color_"+class_chars.mid (i, 1)); + color[i]->setObjectName ("varedit_color_" + class_chars.mid (i, 1)); color[i]->setMinimumSize (30, 10); style_grid->addWidget (description[i], row, 2*column); - style_grid->addWidget (color[i], row, 2*column+1); + style_grid->addWidget (color[i], row, 2*column+1); if (++column == 2) { style_grid->setColumnStretch (3*column, 10); @@ -826,373 +1061,20 @@ // place grid with elements into the tab ui->varedit_colors_box->setLayout (style_grid); - } void -settings_dialog::write_changed_settings (bool closing) +settings_dialog::write_varedit_colors (QSettings *settings) { - QSettings *settings = resource_manager::get_settings (); - - // the icon set - QString widget_icon_set = "NONE"; - if (ui->general_icon_letter->isChecked ()) - widget_icon_set = "LETTER"; - else if (ui->general_icon_graphic->isChecked ()) - widget_icon_set = "GRAPHIC"; - settings->setValue ("DockWidgets/widget_icon_set",widget_icon_set); - - // language - QString language = ui->comboBox_language->currentText (); - if (language == tr ("System setting")) - language = "SYSTEM"; - settings->setValue ("language", language); - - // dock widget title bar - settings->setValue ("DockWidgets/widget_title_custom_style", - ui->cb_widget_custom_style->isChecked ()); - settings->setValue ("DockWidgets/widget_title_3d", - ui->sb_3d_title->value ()); - settings->setValue ("Dockwidgets/title_bg_color", - _widget_title_bg_color->color ()); - settings->setValue ("Dockwidgets/title_bg_color_active", - _widget_title_bg_color_active->color ()); - settings->setValue ("Dockwidgets/title_fg_color", - _widget_title_fg_color->color ()); - settings->setValue ("Dockwidgets/title_fg_color_active", - _widget_title_fg_color_active->color ()); - - // icon size - int icon_size = 0; - if (ui->icon_size_small->isChecked ()) - icon_size = -1; - else if (ui->icon_size_large->isChecked ()) - icon_size = 1; - settings->setValue ("toolbar_icon_size", icon_size); - - // cursor blinking - settings->setValue ("cursor_blinking", ui->cb_cursor_blinking->isChecked ()); - - // promp to exit - settings->setValue ("prompt_to_exit", ui->cb_prompt_to_exit->isChecked ()); - - // status bar - settings->setValue ("show_status_bar", ui->cb_status_bar->isChecked ()); - - // 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 ()); - settings->setValue ("editor/showLineNumbers", - ui->editor_showLineNumbers->isChecked ()); - settings->setValue ("editor/line_numbers_size", - ui->editor_linenr_size->value ()); - settings->setValue ("editor/highlightCurrentLine", - ui->editor_highlightCurrentLine->isChecked ()); - settings->setValue ("editor/highlight_current_line_color", - _editor_current_line_color->color ()); - settings->setValue ("editor/long_line_marker", - ui->editor_long_line_marker->isChecked ()); - settings->setValue ("editor/long_line_marker_line", - ui->editor_long_line_marker_line->isChecked ()); - settings->setValue ("editor/long_line_marker_background", - ui->editor_long_line_marker_background->isChecked ()); - settings->setValue ("editor/long_line_column", - ui->editor_long_line_column->value ()); - settings->setValue ("editor/break_lines", - ui->editor_break_checkbox->isChecked ()); - settings->setValue ("editor/break_lines_comments", - ui->editor_break_comments_checkbox->isChecked ()); - settings->setValue ("editor/wrap_lines", - ui->editor_wrap_checkbox->isChecked ()); - settings->setValue ("editor/code_folding", - ui->cb_code_folding->isChecked ()); - settings->setValue ("editor/show_edit_status_bar", - ui->cb_edit_status_bar->isChecked ()); - settings->setValue ("editor/show_toolbar", - ui->cb_edit_tool_bar->isChecked ()); - settings->setValue ("editor/highlight_all_occurrences", - ui->editor_highlight_all_occurrences->isChecked ()); - settings->setValue ("editor/codeCompletion", - ui->editor_codeCompletion->isChecked ()); - settings->setValue ("editor/codeCompletion_threshold", - ui->editor_spinbox_ac_threshold->value ()); - settings->setValue ("editor/codeCompletion_keywords", - ui->editor_checkbox_ac_keywords->isChecked ()); - settings->setValue ("editor/codeCompletion_octave_builtins", - ui->editor_checkbox_ac_builtins->isChecked ()); - settings->setValue ("editor/codeCompletion_octave_functions", - ui->editor_checkbox_ac_functions->isChecked ()); - settings->setValue ("editor/codeCompletion_document", - ui->editor_checkbox_ac_document->isChecked ()); - settings->setValue ("editor/codeCompletion_case", - ui->editor_checkbox_ac_case->isChecked ()); - settings->setValue ("editor/codeCompletion_replace", - ui->editor_checkbox_ac_replace->isChecked ()); - settings->setValue ("editor/auto_endif", - ui->editor_auto_endif->currentIndex ()); - settings->setValue ("editor/show_white_space", - ui->editor_ws_checkbox->isChecked ()); - settings->setValue ("editor/show_white_space_indent", - ui->editor_ws_indent_checkbox->isChecked ()); - settings->setValue ("editor/show_eol_chars", - ui->cb_show_eol->isChecked ()); - settings->setValue ("editor/show_hscroll_bar", - ui->cb_show_hscrollbar->isChecked ()); - settings->setValue ("editor/default_eol_mode", - ui->combo_eol_mode->currentIndex ()); - settings->setValue ("editor/octave_comment_string", - ui->combo_oct_comment_str->currentIndex ()); - settings->setValue ("editor/default_encoding", - ui->editor_combo_encoding->currentText ()); - settings->setValue ("editor/auto_indent", - ui->editor_auto_ind_checkbox->isChecked ()); - settings->setValue ("editor/tab_indents_line", - ui->editor_tab_ind_checkbox->isChecked ()); - settings->setValue ("editor/backspace_unindents_line", - ui->editor_bs_unind_checkbox->isChecked ()); - settings->setValue ("editor/show_indent_guides", - ui->editor_ind_guides_checkbox->isChecked ()); - settings->setValue ("editor/indent_width", - ui->editor_ind_width_spinbox->value ()); - settings->setValue ("editor/indent_uses_tabs", - ui->editor_ind_uses_tabs_checkbox->isChecked ()); - settings->setValue ("editor/tab_width", - ui->editor_tab_width_spinbox->value ()); - settings->setValue ("editor/longWindowTitle", - ui->editor_longWindowTitle->isChecked ()); - settings->setValue ("editor/notebook_tab_width_min", - ui->editor_notebook_tab_width_min->value ()); - settings->setValue ("editor/notebook_tab_width_max", - ui->editor_notebook_tab_width_max->value ()); - settings->setValue ("editor/restoreSession", - ui->editor_restoreSession->isChecked ()); - settings->setValue ("editor/create_new_file", - ui->editor_create_new_file->isChecked ()); - settings->setValue ("editor/hiding_closes_files", - ui->editor_hiding_closes_files->isChecked ()); - settings->setValue ("editor/always_reload_changed_files", - ui->editor_reload_changed_files->isChecked ()); - settings->setValue ("terminal/fontSize", ui->terminal_fontSize->value ()); - settings->setValue ("terminal/fontName", - ui->terminal_fontName->currentFont ().family ()); - - // file browser - 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 ("filesdockwidget/txt_file_extensions", - ui->le_file_browser_extensions->text ()); - - settings->setValue ("news/allow_web_connection", - ui->checkbox_allow_web_connect->isChecked ()); - settings->setValue ("useProxyServer", ui->useProxyServer->isChecked ()); - settings->setValue ("proxyType", ui->proxyType->currentText ()); - settings->setValue ("proxyHostName", ui->proxyHostName->text ()); - settings->setValue ("proxyPort", ui->proxyPort->text ()); - settings->setValue ("proxyUserName", ui->proxyUserName->text ()); - settings->setValue ("proxyPassword", ui->proxyPassword->text ()); - settings->setValue ("terminal/cursorUseForegroundColor", - ui->terminal_cursorUseForegroundColor->isChecked ()); - settings->setValue ("terminal/focus_after_command", - ui->terminal_focus_command->isChecked ()); - settings->setValue ("terminal/print_debug_location", - ui->terminal_print_dbg_location->isChecked ()); - settings->setValue ("terminal/history_buffer", - ui->terminal_history_buffer->value ()); - - // the cursor - QString cursorType; - switch (ui->terminal_cursorType->currentIndex ()) - { - case 0: cursorType = "ibeam"; break; - case 1: cursorType = "block"; break; - case 2: cursorType = "underline"; break; - } - settings->setValue ("terminal/cursorType", cursorType); - -#if defined (HAVE_QSCINTILLA) - // editor styles: create lexer, get dialog contents, and write settings - QsciLexer *lexer; -#if defined (HAVE_LEXER_OCTAVE) - lexer = new QsciLexerOctave (); - write_lexer_settings (ui, lexer, settings); - delete lexer; -#elif defined (HAVE_LEXER_MATLAB) - lexer = new QsciLexerMatlab (); - write_lexer_settings (ui, lexer, settings); - delete lexer; -#endif - lexer = new QsciLexerCPP (); - write_lexer_settings (ui, lexer, settings); - delete lexer; - lexer = new QsciLexerPerl (); - write_lexer_settings (ui, lexer, settings); - delete lexer; - lexer = new QsciLexerBatch (); - write_lexer_settings (ui, lexer, settings); - delete lexer; - lexer = new QsciLexerDiff (); - write_lexer_settings (ui, lexer, settings); - delete lexer; - lexer = new QsciLexerBash (); - write_lexer_settings (ui, lexer, settings); - delete lexer; - lexer = new octave_txt_lexer (); - write_lexer_settings (ui, lexer, settings); - delete lexer; -#endif - - // Workspace - write_workspace_colors (settings); - // hide tool tips - settings->setValue ("workspaceview/hide_tool_tips", - ui->cb_hide_tool_tips->isChecked ()); - - // Terminal - write_terminal_colors (settings); - - // Variable editor - settings->setValue("variable_editor/autofit_column_width",ui->varedit_autoFitColumnWidth->isChecked()); - settings->setValue("variable_editor/autofit_type",ui->varedit_autofitType->currentIndex()); - settings->setValue("variable_editor/column_width",ui->varedit_columnWidth->text()); - settings->setValue("variable_editor/row_height", ui->varedit_rowHeight->text()); - settings->setValue("variable_editor/autofit_row_height",ui->varedit_rowAutofit->isChecked()); - settings->setValue("variable_editor/use_terminal_font",ui->varedit_useTerminalFont->isChecked()); - settings->setValue("variable_editor/alternate_rows",ui->varedit_alternate->isChecked()); - settings->setValue("variable_editor/font_name",ui->varedit_font->currentFont().family()); - settings->setValue("variable_editor/font_size",ui->varedit_fontSize->value()); - write_varedit_colors(settings); - - // shortcuts - settings->setValue ("shortcuts/prevent_readline_conflicts", - ui->cb_prevent_readline_conflicts->isChecked ()); - shortcut_manager::write_shortcuts (settings, closing); - - // settings dialog's geometry - settings->setValue ("settings/last_tab",ui->tabWidget->currentIndex ()); - settings->setValue ("settings/geometry",saveGeometry ()); - - settings->sync (); -} - -void -settings_dialog::write_workspace_colors (QSettings *settings) -{ - - QString class_chars = resource_manager::storage_class_chars (); + QString class_chars = resource_manager::varedit_color_chars (); color_picker *color; for (int i = 0; i < class_chars.length (); i++) { - color = ui->workspace_colors_box->findChild <color_picker *>( - "color_"+class_chars.mid (i,1)); + color = ui->varedit_colors_box->findChild <color_picker *> ("varedit_color_" + class_chars.mid (i, 1)); if (color) - settings->setValue ("workspaceview/color_"+class_chars.mid (i,1), - color->color ()); - } - settings->sync (); -} - -void -settings_dialog::write_terminal_colors (QSettings *settings) -{ - QString class_chars = resource_manager::terminal_color_chars (); - color_picker *color; - - for (int i = 0; i < class_chars.length (); i++) - { - color = ui->terminal_colors_box->findChild <color_picker *>( - "terminal_color_"+class_chars.mid (i,1)); - if (color) - settings->setValue ("terminal/color_"+class_chars.mid (i,1), - color->color ()); - } - settings->sync (); -} - -// internal slots - -void -settings_dialog::button_clicked (QAbstractButton *button) -{ - QDialogButtonBox::ButtonRole button_role = ui->button_box->buttonRole (button); - - if (button_role == QDialogButtonBox::ApplyRole || - button_role == QDialogButtonBox::AcceptRole) - { - write_changed_settings (button_role == QDialogButtonBox::AcceptRole); - emit apply_new_settings (); + settings->setValue ("variable_editor/color_" + class_chars.mid (i, 1), color->color ()); } - if (button_role == QDialogButtonBox::RejectRole || - button_role == QDialogButtonBox::AcceptRole) - close (); -} - -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 () -{ - 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")); + settings->sync (); } - -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); - } -} - -// slots for import/export of shortcut sets -void -settings_dialog::import_shortcut_set () -{ - shortcut_manager::import_export (shortcut_manager::OSC_IMPORT); -} - -void -settings_dialog::export_shortcut_set () -{ - shortcut_manager::import_export (shortcut_manager::OSC_EXPORT); -} - -void -settings_dialog::default_shortcut_set () -{ - shortcut_manager::import_export (shortcut_manager::OSC_DEFAULT); -}