Mercurial > octave-nkf
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 } |