src/ConfigurationDialog.cc

changeset 639
851634b85893
parent 633
34d18b9c2cab
child 642
751a8df42842
equal deleted inserted replaced
638:382226e40865 639:851634b85893
78 #else 78 #else
79 ""; 79 "";
80 #endif 80 #endif
81 81
82 // ============================================================================= 82 // =============================================================================
83 // ----------------------------------------------------------------------------- 83 // =============================================================================
84 ConfigDialog::ConfigDialog (ConfigDialog::Tab deftab, QWidget* parent, Qt::WindowFlags f) : 84 ConfigDialog::ConfigDialog (ConfigDialog::Tab deftab, QWidget* parent, Qt::WindowFlags f) :
85 QDialog (parent, f) 85 QDialog (parent, f)
86 { 86 {
87 assert (g_win != null); 87 assert (g_win != null);
88 ui = new Ui_ConfigUI; 88 ui = new Ui_ConfigUI;
161 connect (ui->m_pagelist, SIGNAL (currentRowChanged (int)), 161 connect (ui->m_pagelist, SIGNAL (currentRowChanged (int)),
162 this, SLOT (selectPage (int))); 162 this, SLOT (selectPage (int)));
163 } 163 }
164 164
165 // ============================================================================= 165 // =============================================================================
166 // ----------------------------------------------------------------------------- 166 // =============================================================================
167 ConfigDialog::~ConfigDialog() 167 ConfigDialog::~ConfigDialog()
168 { 168 {
169 delete ui; 169 delete ui;
170 } 170 }
171 171
172 // ============================================================================= 172 // =============================================================================
173 // ----------------------------------------------------------------------------- 173 // =============================================================================
174 void ConfigDialog::selectPage (int row) 174 void ConfigDialog::selectPage (int row)
175 { 175 {
176 ui->m_pagelist->setCurrentRow (row); 176 ui->m_pagelist->setCurrentRow (row);
177 ui->m_pages->setCurrentIndex (row); 177 ui->m_pages->setCurrentIndex (row);
178 } 178 }
179 179
180 // ============================================================================= 180 // =============================================================================
181 // Adds a shortcut entry to the list of shortcuts. 181 // Adds a shortcut entry to the list of shortcuts.
182 // ----------------------------------------------------------------------------- 182 // =============================================================================
183 void ConfigDialog::addShortcut (KeySequenceConfig& cfg, QAction* act, int& i) 183 void ConfigDialog::addShortcut (KeySequenceConfig& cfg, QAction* act, int& i)
184 { 184 {
185 ShortcutListItem* item = new ShortcutListItem; 185 ShortcutListItem* item = new ShortcutListItem;
186 item->setIcon (act->icon()); 186 item->setIcon (act->icon());
187 item->setKeyConfig (&cfg); 187 item->setKeyConfig (&cfg);
196 ui->shortcutsList->insertItem (i++, item); 196 ui->shortcutsList->insertItem (i++, item);
197 } 197 }
198 198
199 // ============================================================================= 199 // =============================================================================
200 // Initializes the table of grid stuff 200 // Initializes the table of grid stuff
201 // ----------------------------------------------------------------------------- 201 // =============================================================================
202 void ConfigDialog::initGrids() 202 void ConfigDialog::initGrids()
203 { 203 {
204 QGridLayout* gridlayout = new QGridLayout; 204 QGridLayout* gridlayout = new QGridLayout;
205 QLabel* xlabel = new QLabel ("X"), 205 QLabel* xlabel = new QLabel ("X"),
206 *ylabel = new QLabel ("Y"), 206 *ylabel = new QLabel ("Y"),
244 244
245 ui->grids->setLayout (gridlayout); 245 ui->grids->setLayout (gridlayout);
246 } 246 }
247 247
248 // ============================================================================= 248 // =============================================================================
249 // ----------------------------------------------------------------------------- 249 // =============================================================================
250 static struct LDExtProgInfo 250 static struct LDExtProgInfo
251 { 251 {
252 const QString name, 252 const QString name,
253 iconname; 253 iconname;
254 QString* const path; 254 QString* const path;
274 #undef EXTPROG 274 #undef EXTPROG
275 }; 275 };
276 276
277 // ============================================================================= 277 // =============================================================================
278 // Initializes the stuff in the ext programs tab 278 // Initializes the stuff in the ext programs tab
279 // ----------------------------------------------------------------------------- 279 // =============================================================================
280 void ConfigDialog::initExtProgs() 280 void ConfigDialog::initExtProgs()
281 { 281 {
282 QGridLayout* pathsLayout = new QGridLayout; 282 QGridLayout* pathsLayout = new QGridLayout;
283 int row = 0; 283 int row = 0;
284 284
315 ui->extProgs->setLayout (pathsLayout); 315 ui->extProgs->setLayout (pathsLayout);
316 } 316 }
317 317
318 // ============================================================================= 318 // =============================================================================
319 // Set the settings based on widget data. 319 // Set the settings based on widget data.
320 // ----------------------------------------------------------------------------- 320 // =============================================================================
321 void ConfigDialog::applySettings() 321 void ConfigDialog::applySettings()
322 { 322 {
323 // Apply configuration 323 // Apply configuration
324 lv_colorize = ui->colorizeObjects->isChecked(); 324 lv_colorize = ui->colorizeObjects->isChecked();
325 gl_colorbfc = ui->colorBFC->isChecked(); 325 gl_colorbfc = ui->colorBFC->isChecked();
368 g_win->updateDocumentList(); 368 g_win->updateDocumentList();
369 } 369 }
370 370
371 // ============================================================================= 371 // =============================================================================
372 // A dialog button was clicked 372 // A dialog button was clicked
373 // ----------------------------------------------------------------------------- 373 // =============================================================================
374 void ConfigDialog::buttonClicked (QAbstractButton* button) 374 void ConfigDialog::buttonClicked (QAbstractButton* button)
375 { 375 {
376 typedef QDialogButtonBox QDDB; 376 typedef QDialogButtonBox QDDB;
377 QDialogButtonBox* dbb = ui->buttonBox; 377 QDialogButtonBox* dbb = ui->buttonBox;
378 378
389 } 389 }
390 } 390 }
391 391
392 // ============================================================================= 392 // =============================================================================
393 // Update the list of color toolbar items in the quick color tab. 393 // Update the list of color toolbar items in the quick color tab.
394 // ----------------------------------------------------------------------------- 394 // =============================================================================
395 void ConfigDialog::updateQuickColorList (LDQuickColor* sel) 395 void ConfigDialog::updateQuickColorList (LDQuickColor* sel)
396 { 396 {
397 for (QListWidgetItem * item : quickColorItems) 397 for (QListWidgetItem * item : quickColorItems)
398 delete item; 398 delete item;
399 399
436 } 436 }
437 } 437 }
438 438
439 // ============================================================================= 439 // =============================================================================
440 // Quick colors: add or edit button was clicked. 440 // Quick colors: add or edit button was clicked.
441 // ----------------------------------------------------------------------------- 441 // =============================================================================
442 void ConfigDialog::slot_setColor() 442 void ConfigDialog::slot_setColor()
443 { 443 {
444 LDQuickColor* entry = null; 444 LDQuickColor* entry = null;
445 QListWidgetItem* item = null; 445 QListWidgetItem* item = null;
446 const bool isNew = static_cast<QPushButton*> (sender()) == ui->quickColor_add; 446 const bool isNew = static_cast<QPushButton*> (sender()) == ui->quickColor_add;
481 updateQuickColorList (entry); 481 updateQuickColorList (entry);
482 } 482 }
483 483
484 // ============================================================================= 484 // =============================================================================
485 // Remove a quick color 485 // Remove a quick color
486 // ----------------------------------------------------------------------------- 486 // =============================================================================
487 void ConfigDialog::slot_delColor() 487 void ConfigDialog::slot_delColor()
488 { 488 {
489 if (ui->quickColorList->selectedItems().isEmpty()) 489 if (ui->quickColorList->selectedItems().isEmpty())
490 return; 490 return;
491 491
494 updateQuickColorList(); 494 updateQuickColorList();
495 } 495 }
496 496
497 // ============================================================================= 497 // =============================================================================
498 // Move a quick color up/down 498 // Move a quick color up/down
499 // ----------------------------------------------------------------------------- 499 // =============================================================================
500 void ConfigDialog::slot_moveColor() 500 void ConfigDialog::slot_moveColor()
501 { 501 {
502 const bool up = (static_cast<QPushButton*> (sender()) == ui->quickColor_moveUp); 502 const bool up = (static_cast<QPushButton*> (sender()) == ui->quickColor_moveUp);
503 503
504 if (ui->quickColorList->selectedItems().isEmpty()) 504 if (ui->quickColorList->selectedItems().isEmpty())
518 updateQuickColorList (&quickColors[dest]); 518 updateQuickColorList (&quickColors[dest]);
519 } 519 }
520 520
521 // ============================================================================= 521 // =============================================================================
522 // Add a separator to quick colors 522 // Add a separator to quick colors
523 // ----------------------------------------------------------------------------- 523 // =============================================================================
524 void ConfigDialog::slot_addColorSeparator() 524 void ConfigDialog::slot_addColorSeparator()
525 { 525 {
526 quickColors << LDQuickColor::getSeparator(); 526 quickColors << LDQuickColor::getSeparator();
527 updateQuickColorList (&quickColors[quickColors.size() - 1]); 527 updateQuickColorList (&quickColors[quickColors.size() - 1]);
528 } 528 }
529 529
530 // ============================================================================= 530 // =============================================================================
531 // Clear all quick colors 531 // Clear all quick colors
532 // ----------------------------------------------------------------------------- 532 // =============================================================================
533 void ConfigDialog::slot_clearColors() 533 void ConfigDialog::slot_clearColors()
534 { 534 {
535 quickColors.clear(); 535 quickColors.clear();
536 updateQuickColorList(); 536 updateQuickColorList();
537 } 537 }
538 538
539 // ============================================================================= 539 // =============================================================================
540 // Pick a color and set the appropriate configuration option. 540 // Pick a color and set the appropriate configuration option.
541 // ----------------------------------------------------------------------------- 541 // =============================================================================
542 void ConfigDialog::pickColor (QString& conf, QPushButton* button) 542 void ConfigDialog::pickColor (QString& conf, QPushButton* button)
543 { 543 {
544 QColor col = QColorDialog::getColor (QColor (conf)); 544 QColor col = QColorDialog::getColor (QColor (conf));
545 545
546 if (col.isValid()) 546 if (col.isValid())
555 setButtonBackground (button, colname); 555 setButtonBackground (button, colname);
556 } 556 }
557 } 557 }
558 558
559 // ============================================================================= 559 // =============================================================================
560 // ----------------------------------------------------------------------------- 560 // =============================================================================
561 void ConfigDialog::slot_setGLBackground() 561 void ConfigDialog::slot_setGLBackground()
562 { 562 {
563 pickColor (gl_bgcolor, ui->backgroundColorButton); 563 pickColor (gl_bgcolor, ui->backgroundColorButton);
564 } 564 }
565 565
566 // ============================================================================= 566 // =============================================================================
567 // ----------------------------------------------------------------------------- 567 // =============================================================================
568 void ConfigDialog::slot_setGLForeground() 568 void ConfigDialog::slot_setGLForeground()
569 { 569 {
570 pickColor (gl_maincolor, ui->mainColorButton); 570 pickColor (gl_maincolor, ui->mainColorButton);
571 } 571 }
572 572
573 // ============================================================================= 573 // =============================================================================
574 // ----------------------------------------------------------------------------- 574 // =============================================================================
575 void ConfigDialog::slot_setGLSelectColor() 575 void ConfigDialog::slot_setGLSelectColor()
576 { 576 {
577 pickColor (gl_selectcolor, ui->selColorButton); 577 pickColor (gl_selectcolor, ui->selColorButton);
578 } 578 }
579 579
580 // ============================================================================= 580 // =============================================================================
581 // Sets background color of a given button. 581 // Sets background color of a given button.
582 // ----------------------------------------------------------------------------- 582 // =============================================================================
583 void ConfigDialog::setButtonBackground (QPushButton* button, QString value) 583 void ConfigDialog::setButtonBackground (QPushButton* button, QString value)
584 { 584 {
585 button->setIcon (getIcon ("colorselect")); 585 button->setIcon (getIcon ("colorselect"));
586 button->setAutoFillBackground (true); 586 button->setAutoFillBackground (true);
587 button->setStyleSheet (fmt ("background-color: %1", value)); 587 button->setStyleSheet (fmt ("background-color: %1", value));
588 } 588 }
589 589
590 // ============================================================================= 590 // =============================================================================
591 // Finds the given list widget item in the list of widget items given. 591 // Finds the given list widget item in the list of widget items given.
592 // ----------------------------------------------------------------------------- 592 // =============================================================================
593 int ConfigDialog::getItemRow (QListWidgetItem* item, QList<QListWidgetItem*>& haystack) 593 int ConfigDialog::getItemRow (QListWidgetItem* item, QList<QListWidgetItem*>& haystack)
594 { 594 {
595 int i = 0; 595 int i = 0;
596 596
597 for (QListWidgetItem* it : haystack) 597 for (QListWidgetItem* it : haystack)
605 return -1; 605 return -1;
606 } 606 }
607 607
608 // ============================================================================= 608 // =============================================================================
609 // Which quick color is currently selected? 609 // Which quick color is currently selected?
610 // ----------------------------------------------------------------------------- 610 // =============================================================================
611 QListWidgetItem* ConfigDialog::getSelectedQuickColor() 611 QListWidgetItem* ConfigDialog::getSelectedQuickColor()
612 { 612 {
613 if (ui->quickColorList->selectedItems().isEmpty()) 613 if (ui->quickColorList->selectedItems().isEmpty())
614 return null; 614 return null;
615 615
616 return ui->quickColorList->selectedItems() [0]; 616 return ui->quickColorList->selectedItems() [0];
617 } 617 }
618 618
619 // ============================================================================= 619 // =============================================================================
620 // Get the list of shortcuts selected 620 // Get the list of shortcuts selected
621 // ----------------------------------------------------------------------------- 621 // =============================================================================
622 QList<ShortcutListItem*> ConfigDialog::getShortcutSelection() 622 QList<ShortcutListItem*> ConfigDialog::getShortcutSelection()
623 { 623 {
624 QList<ShortcutListItem*> out; 624 QList<ShortcutListItem*> out;
625 625
626 for (QListWidgetItem* entry : ui->shortcutsList->selectedItems()) 626 for (QListWidgetItem* entry : ui->shortcutsList->selectedItems())
629 return out; 629 return out;
630 } 630 }
631 631
632 // ============================================================================= 632 // =============================================================================
633 // Edit the shortcut of a given action. 633 // Edit the shortcut of a given action.
634 // ----------------------------------------------------------------------------- 634 // =============================================================================
635 void ConfigDialog::slot_setShortcut() 635 void ConfigDialog::slot_setShortcut()
636 { 636 {
637 QList<ShortcutListItem*> sel = getShortcutSelection(); 637 QList<ShortcutListItem*> sel = getShortcutSelection();
638 638
639 if (sel.size() < 1) 639 if (sel.size() < 1)
645 setShortcutText (item); 645 setShortcutText (item);
646 } 646 }
647 647
648 // ============================================================================= 648 // =============================================================================
649 // Reset a shortcut to defaults 649 // Reset a shortcut to defaults
650 // ----------------------------------------------------------------------------- 650 // =============================================================================
651 void ConfigDialog::slot_resetShortcut() 651 void ConfigDialog::slot_resetShortcut()
652 { 652 {
653 QList<ShortcutListItem*> sel = getShortcutSelection(); 653 QList<ShortcutListItem*> sel = getShortcutSelection();
654 654
655 for (ShortcutListItem* item : sel) 655 for (ShortcutListItem* item : sel)
659 } 659 }
660 } 660 }
661 661
662 // ============================================================================= 662 // =============================================================================
663 // Remove the shortcut of an action. 663 // Remove the shortcut of an action.
664 // ----------------------------------------------------------------------------- 664 // =============================================================================
665 void ConfigDialog::slot_clearShortcut() 665 void ConfigDialog::slot_clearShortcut()
666 { 666 {
667 QList<ShortcutListItem*> sel = getShortcutSelection(); 667 QList<ShortcutListItem*> sel = getShortcutSelection();
668 668
669 for (ShortcutListItem* item : sel) 669 for (ShortcutListItem* item : sel)
673 } 673 }
674 } 674 }
675 675
676 // ============================================================================= 676 // =============================================================================
677 // Set the path of an external program 677 // Set the path of an external program
678 // ----------------------------------------------------------------------------- 678 // =============================================================================
679 void ConfigDialog::slot_setExtProgPath() 679 void ConfigDialog::slot_setExtProgPath()
680 { 680 {
681 const LDExtProgInfo* info = null; 681 const LDExtProgInfo* info = null;
682 682
683 for (const LDExtProgInfo& it : g_LDExtProgInfo) 683 for (const LDExtProgInfo& it : g_LDExtProgInfo)
698 info->input->setText (fpath); 698 info->input->setText (fpath);
699 } 699 }
700 700
701 // ============================================================================= 701 // =============================================================================
702 // '...' button pressed for the download path 702 // '...' button pressed for the download path
703 // ----------------------------------------------------------------------------- 703 // =============================================================================
704 void ConfigDialog::slot_findDownloadFolder() 704 void ConfigDialog::slot_findDownloadFolder()
705 { 705 {
706 QString dpath = QFileDialog::getExistingDirectory(); 706 QString dpath = QFileDialog::getExistingDirectory();
707 ui->downloadPath->setText (dpath); 707 ui->downloadPath->setText (dpath);
708 } 708 }
709 709
710 // ============================================================================= 710 // =============================================================================
711 // Updates the text string for a given shortcut list item 711 // Updates the text string for a given shortcut list item
712 // ----------------------------------------------------------------------------- 712 // =============================================================================
713 void ConfigDialog::setShortcutText (ShortcutListItem* item) 713 void ConfigDialog::setShortcutText (ShortcutListItem* item)
714 { 714 {
715 QAction* act = item->getAction(); 715 QAction* act = item->getAction();
716 QString label = act->iconText(); 716 QString label = act->iconText();
717 QString keybind = item->getKeyConfig()->getValue().toString(); 717 QString keybind = item->getKeyConfig()->getValue().toString();
718 item->setText (fmt ("%1 (%2)", label, keybind)); 718 item->setText (fmt ("%1 (%2)", label, keybind));
719 } 719 }
720 720
721 // ============================================================================= 721 // =============================================================================
722 // Gets the configuration string of the quick color toolbar 722 // Gets the configuration string of the quick color toolbar
723 // ----------------------------------------------------------------------------- 723 // =============================================================================
724 QString ConfigDialog::quickColorString() 724 QString ConfigDialog::quickColorString()
725 { 725 {
726 QString val; 726 QString val;
727 727
728 for (const LDQuickColor& entry : quickColors) 728 for (const LDQuickColor& entry : quickColors)
763 763
764 updateOutput(); 764 updateOutput();
765 } 765 }
766 766
767 // ============================================================================= 767 // =============================================================================
768 // ----------------------------------------------------------------------------- 768 // =============================================================================
769 bool KeySequenceDialog::staticDialog (KeySequenceConfig* cfg, QWidget* parent) 769 bool KeySequenceDialog::staticDialog (KeySequenceConfig* cfg, QWidget* parent)
770 { 770 {
771 KeySequenceDialog dlg (cfg->getValue(), parent); 771 KeySequenceDialog dlg (cfg->getValue(), parent);
772 772
773 if (dlg.exec() == false) 773 if (dlg.exec() == false)
776 cfg->setValue (dlg.seq); 776 cfg->setValue (dlg.seq);
777 return true; 777 return true;
778 } 778 }
779 779
780 // ============================================================================= 780 // =============================================================================
781 // ----------------------------------------------------------------------------- 781 // =============================================================================
782 void KeySequenceDialog::updateOutput() 782 void KeySequenceDialog::updateOutput()
783 { 783 {
784 QString shortcut = seq.toString(); 784 QString shortcut = seq.toString();
785 785
786 if (seq == QKeySequence()) 786 if (seq == QKeySequence())
789 QString text = fmt ("<center><b>%1</b></center>", shortcut); 789 QString text = fmt ("<center><b>%1</b></center>", shortcut);
790 lb_output->setText (text); 790 lb_output->setText (text);
791 } 791 }
792 792
793 // ============================================================================= 793 // =============================================================================
794 // ----------------------------------------------------------------------------- 794 // =============================================================================
795 void KeySequenceDialog::keyPressEvent (QKeyEvent* ev) 795 void KeySequenceDialog::keyPressEvent (QKeyEvent* ev)
796 { 796 {
797 seq = ev->key() + ev->modifiers(); 797 seq = ev->key() + ev->modifiers();
798 updateOutput(); 798 updateOutput();
799 } 799 }

mercurial