diff libgui/src/m-editor/file-editor-tab.cc @ 16402:7fa90eb41240

gui: individually configurable styles of the editor lexers * color-picker.cc/.h: new class for a simple color picker * libgui/src/module.mk: added color-picker.cc/.h * file-editor-tab.cc(update_lexer): read config of the lexer from settings file * file-editor-tab(notice_settings): editor font not directly configured from the settings file but via the lexer settings in update_lexer * lexer-octave-gui.cc(constructor): inherits from QsciLexerOctave instaead of QsciLexer, code cleanup * lexer-octave-gui.cc(language,lexer,defaultFont,defaultColor,description): removed, original methods used and configured via settings * lexer-octave-gui.h: removed functions language,lexer,defaultFont,defaultColor, description and enum; using methods of octave lexer instead * settings-dialog.cc(constructor): editor font not configured from settings, defining lexers for supported languages and reading their actual settings from the settings file (via read_lexer_settings) * settings-dialog.cc(read_lexer_settings): new function for reading the lexers settings from settings file and creating the tabs with interactive elements for configuring these settings * settings-dialog.cc(write_changed_settings): remove settings for editor font, defining lexers for supported languages and writing the settings from the dialog into the settings file (via write_lexer_settings) * settings-dialog.cc(write_lexer_settings): new funciton for getting the new lexer settings from the interactive elements and write them into the settings file * settings-dialog.h: new functiond read_lexer_settings, write_lexer_settings * settings-dialog.ui: new tab for the editor styles which contents is dynamically created in settings_dialog ()
author Torsten <ttl@justmail.de>
date Sun, 31 Mar 2013 23:56:11 +0200
parents fc491da603f6
children 28136851099a
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor-tab.cc
+++ b/libgui/src/m-editor/file-editor-tab.cc
@@ -242,21 +242,9 @@
     }
 
   QSettings *settings = resource_manager::get_settings ();
+  lexer->readSettings (*settings);
+  _edit_area->setLexer (lexer);
 
-  // Editor font (default or from settings)
-  if (settings)
-    lexer->setDefaultFont (QFont (
-                                  settings->value ("editor/fontName",
-                                                   "Courier New").toString (),
-                                  settings->value ("editor/fontSize",
-                                                   10).toInt ()));
-
-  // TODO: Autoindent not working as it should
-  lexer->setAutoIndentStyle (QsciScintilla::AiMaintain ||
-                             QsciScintilla::AiOpening  ||
-                             QsciScintilla::AiClosing);
-
-  _edit_area->setLexer (lexer);
 }
 
 // slot for fetab_set_focus: sets the focus to the current edit area
@@ -1017,6 +1005,8 @@
 void
 file_editor_tab::notice_settings ()
 {
+  update_lexer ();
+  QFontMetrics lexer_font_metrics (_edit_area->lexer ()->defaultFont (0));
   QSettings *settings = resource_manager::get_settings ();
 
   if (settings==NULL)
@@ -1029,15 +1019,10 @@
   else
     _edit_area->setAutoCompletionThreshold (-1);
 
-  QFont xfont (settings->value ("editor/fontName","Courier New").toString (),
-               settings->value ("editor/fontSize",10).toInt ());
-
   if (settings->value ("editor/showLineNumbers",true).toBool ())
     {
       _edit_area->setMarginLineNumbers (2, true);
-      _edit_area->setMarginsFont (xfont);
-      QFontMetrics metrics (xfont);
-      _edit_area->setMarginWidth(2, metrics.width("9999"));
+      _edit_area->setMarginWidth(2, lexer_font_metrics.width("9999"));
     }
   else
     {
@@ -1045,8 +1030,6 @@
       _edit_area->setMarginWidth(2, 0);
     }
 
-  update_lexer ();
-
   _long_title = settings->value ("editor/longWindowTitle",false).toBool ();
 
   update_window_title (false);