comparison libgui/src/settings-dialog.cc @ 16700:cd7d08b8c928

make background colors of editor files configurable * settings-dialog.ui: insert a short help text for lexer style configurations * settings-dialog.cc(read_settings): insert color pickers for background colors, (write_changed_settings): write colors from new color pickers to settings file
author Torsten <ttl@justmail.de>
date Sat, 25 May 2013 15:00:31 +0200
parents e9d0b8252a0a
children ccfbc767ff5a
comparison
equal deleted inserted replaced
16699:d4bcb38ad056 16700:cd7d08b8c928
219 QVector<QLabel*> description (max_style); 219 QVector<QLabel*> description (max_style);
220 QVector<QFontComboBox*> select_font (max_style); 220 QVector<QFontComboBox*> select_font (max_style);
221 QVector<QSpinBox*> font_size (max_style); 221 QVector<QSpinBox*> font_size (max_style);
222 QVector<QCheckBox*> attrib_font (3 * max_style); 222 QVector<QCheckBox*> attrib_font (3 * max_style);
223 QVector<color_picker*> color (max_style); 223 QVector<color_picker*> color (max_style);
224 QVector<color_picker*> bg_color (max_style);
224 int default_size = 10; 225 int default_size = 10;
225 QFont default_font = QFont (); 226 QFont default_font = QFont ();
227 QColor default_color = QColor ();
228 QColor dummy_color = QColor (255,0,255);
229
226 for (int i = 0; i < max_style; i++) // create dialog elements for all styles 230 for (int i = 0; i < max_style; i++) // create dialog elements for all styles
227 { 231 {
228 QString actual_name = lexer->description (styles[i]); 232 QString actual_name = lexer->description (styles[i]);
229 QFont actual_font = lexer->font (styles[i]); 233 QFont actual_font = lexer->font (styles[i]);
230 description[i] = new QLabel (actual_name); 234 description[i] = new QLabel (actual_name);
231 description[i]->setWordWrap (true); 235 description[i]->setWordWrap (true);
232 description[i]->setMaximumSize (180,QWIDGETSIZE_MAX); 236 description[i]->setMaximumSize (160,QWIDGETSIZE_MAX);
233 description[i]->setMinimumSize (180,1); 237 description[i]->setMinimumSize (160,1);
234 select_font[i] = new QFontComboBox (); 238 select_font[i] = new QFontComboBox ();
235 select_font[i]->setObjectName (actual_name+"_font"); 239 select_font[i]->setObjectName (actual_name+"_font");
240 select_font[i]->setMaximumSize (180,QWIDGETSIZE_MAX);
241 select_font[i]->setMinimumSize (180,1);
236 font_size[i] = new QSpinBox (); 242 font_size[i] = new QSpinBox ();
237 font_size[i]->setObjectName (actual_name+"_size"); 243 font_size[i]->setObjectName (actual_name+"_size");
238 if (styles[i] == 0) // the default 244 if (styles[i] == 0) // the default
239 { 245 {
240 select_font[i]->setCurrentFont (actual_font); 246 select_font[i]->setCurrentFont (actual_font);
241 default_font = actual_font; 247 default_font = actual_font;
242 font_size[i]->setRange (6,24); 248 font_size[i]->setRange (6,24);
243 default_size = actual_font.pointSize (); 249 default_size = actual_font.pointSize ();
244 font_size[i]->setValue (default_size); 250 font_size[i]->setValue (default_size);
251 default_color = lexer->defaultPaper ();
252 bg_color[i] = new color_picker (default_color);
245 } 253 }
246 else // other styles 254 else // other styles
247 { 255 {
248 select_font[i]->setCurrentFont (actual_font); 256 select_font[i]->setCurrentFont (actual_font);
249 if (actual_font.family () == default_font.family ()) 257 if (actual_font.family () == default_font.family ())
250 select_font[i]->setEditText (lexer->description (0)); 258 select_font[i]->setEditText (lexer->description (0));
251 font_size[i]->setRange (-4,4); 259 font_size[i]->setRange (-4,4);
252 font_size[i]->setValue (actual_font.pointSize ()-default_size); 260 font_size[i]->setValue (actual_font.pointSize ()-default_size);
253 font_size[i]->setToolTip ("Difference to the defalt size"); 261 font_size[i]->setToolTip (tr ("Difference to the defalt size"));
262 if (lexer->paper (styles[i]) == default_color)
263 bg_color[i] = new color_picker (dummy_color);
264 else
265 bg_color[i] = new color_picker (lexer->paper (styles[i]));
266 bg_color[i]->setToolTip
267 (tr ("Background color, pink (255,0,255) means default"));
254 } 268 }
255 attrib_font[0+3*i] = new QCheckBox (tr("b")); 269 attrib_font[0+3*i] = new QCheckBox (tr("b"));
256 attrib_font[1+3*i] = new QCheckBox (tr("i")); 270 attrib_font[1+3*i] = new QCheckBox (tr("i"));
257 attrib_font[2+3*i] = new QCheckBox (tr("u")); 271 attrib_font[2+3*i] = new QCheckBox (tr("u"));
258 attrib_font[0+3*i]->setChecked(Qt::Checked && actual_font.bold ()); 272 attrib_font[0+3*i]->setChecked(Qt::Checked && actual_font.bold ());
261 attrib_font[1+3*i]->setObjectName (actual_name+"_italic"); 275 attrib_font[1+3*i]->setObjectName (actual_name+"_italic");
262 attrib_font[2+3*i]->setChecked(Qt::Checked && actual_font.underline ()); 276 attrib_font[2+3*i]->setChecked(Qt::Checked && actual_font.underline ());
263 attrib_font[2+3*i]->setObjectName (actual_name+"_underline"); 277 attrib_font[2+3*i]->setObjectName (actual_name+"_underline");
264 color[i] = new color_picker (lexer->color (styles[i])); 278 color[i] = new color_picker (lexer->color (styles[i]));
265 color[i]->setObjectName (actual_name+"_color"); 279 color[i]->setObjectName (actual_name+"_color");
280 bg_color[i]->setObjectName (actual_name+"_bg_color");
266 int column = 1; 281 int column = 1;
267 style_grid->addWidget (description[i], i, column++); 282 style_grid->addWidget (description[i], i, column++);
268 style_grid->addWidget (select_font[i], i, column++); 283 style_grid->addWidget (select_font[i], i, column++);
269 style_grid->addWidget (font_size[i], i, column++); 284 style_grid->addWidget (font_size[i], i, column++);
270 style_grid->addWidget (attrib_font[0+3*i], i, column++); 285 style_grid->addWidget (attrib_font[0+3*i], i, column++);
271 style_grid->addWidget (attrib_font[1+3*i], i, column++); 286 style_grid->addWidget (attrib_font[1+3*i], i, column++);
272 style_grid->addWidget (attrib_font[2+3*i], i, column++); 287 style_grid->addWidget (attrib_font[2+3*i], i, column++);
273 style_grid->addWidget (color[i], i, column++); 288 style_grid->addWidget (color[i], i, column++);
289 style_grid->addWidget (bg_color[i], i, column++);
274 } 290 }
275 // place grid with elements into the tab 291 // place grid with elements into the tab
276 QScrollArea *scroll_area = new QScrollArea (); 292 QScrollArea *scroll_area = new QScrollArea ();
277 QWidget *scroll_area_contents = new QWidget (); 293 QWidget *scroll_area_contents = new QWidget ();
278 scroll_area_contents->setObjectName (QString (lexer->language ())+"_styles"); 294 scroll_area_contents->setObjectName (QString (lexer->language ())+"_styles");
469 int max_style = get_valid_lexer_styles (lexer, styles); 485 int max_style = get_valid_lexer_styles (lexer, styles);
470 QFontComboBox *select_font; 486 QFontComboBox *select_font;
471 QSpinBox *font_size; 487 QSpinBox *font_size;
472 QCheckBox *attrib_font[3]; 488 QCheckBox *attrib_font[3];
473 color_picker *color; 489 color_picker *color;
490 color_picker *bg_color;
474 int default_size = 10; 491 int default_size = 10;
475 QFont default_font = QFont ("Courier New",10,-1,0); 492 QFont default_font = QFont ("Courier New",10,-1,0);
493 QColor default_color = QColor ();
494 QColor dummy_color = QColor (255,0,255);
495
476 for (int i = 0; i < max_style; i++) // get dialog elements and their contents 496 for (int i = 0; i < max_style; i++) // get dialog elements and their contents
477 { 497 {
478 QString actual_name = lexer->description (styles[i]); 498 QString actual_name = lexer->description (styles[i]);
479 select_font = tab->findChild <QFontComboBox *>(actual_name+"_font"); 499 select_font = tab->findChild <QFontComboBox *>(actual_name+"_font");
480 font_size = tab->findChild <QSpinBox *>(actual_name+"_size"); 500 font_size = tab->findChild <QSpinBox *>(actual_name+"_size");
481 attrib_font[0] = tab->findChild <QCheckBox *>(actual_name+"_bold"); 501 attrib_font[0] = tab->findChild <QCheckBox *>(actual_name+"_bold");
482 attrib_font[1] = tab->findChild <QCheckBox *>(actual_name+"_italic"); 502 attrib_font[1] = tab->findChild <QCheckBox *>(actual_name+"_italic");
483 attrib_font[2] = tab->findChild <QCheckBox *>(actual_name+"_underline"); 503 attrib_font[2] = tab->findChild <QCheckBox *>(actual_name+"_underline");
484 color = tab->findChild <color_picker *>(actual_name+"_color"); 504 color = tab->findChild <color_picker *>(actual_name+"_color");
505 bg_color = tab->findChild <color_picker *>(actual_name+"_bg_color");
485 QFont new_font = default_font; 506 QFont new_font = default_font;
486 if (select_font) 507 if (select_font)
487 { 508 {
488 new_font = select_font->currentFont (); 509 new_font = select_font->currentFont ();
489 if (styles[i] == 0) 510 if (styles[i] == 0)
511 lexer->setFont (new_font,styles[i]); 532 lexer->setFont (new_font,styles[i]);
512 if (styles[i] == 0) 533 if (styles[i] == 0)
513 lexer->setDefaultFont (new_font); 534 lexer->setDefaultFont (new_font);
514 if (color) 535 if (color)
515 lexer->setColor (color->color (),styles[i]); 536 lexer->setColor (color->color (),styles[i]);
516 } 537 if (bg_color)
538 {
539 if (styles[i] == 0)
540 {
541 default_color = bg_color->color ();
542 lexer->setPaper (default_color,styles[i]);
543 lexer->setDefaultPaper (default_color);
544 }
545 else
546 {
547 if (bg_color->color () == dummy_color)
548 lexer->setPaper (default_color,styles[i]);
549 else
550 lexer->setPaper (bg_color->color (),styles[i]);
551 }
552 }
553 }
554
517 lexer->writeSettings (*settings); 555 lexer->writeSettings (*settings);
518 556
519 settings->setValue ( 557 settings->setValue (
520 "settings/last_editor_styles_tab",ui->tabs_editor_styles->currentIndex ()); 558 "settings/last_editor_styles_tab",ui->tabs_editor_styles->currentIndex ());
521 } 559 }