1 /* |
1 /* |
2 * LDForge: LDraw parts authoring CAD |
2 * LDForge: LDraw parts authoring CAD |
3 * Copyright (C) 2013 Santeri Piippo |
3 * Copyright (C) 2013 Santeri Piippo |
4 * |
4 * |
5 * This program is free software: you can redistribute it and/or modify |
5 * This program is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License as published by |
6 * it under the terms of the GNU General Public License as published by |
7 * the Free Software Foundation, either version 3 of the License, or |
7 * the Free Software Foundation, either version 3 of the License, or |
8 * (at your option) any later version. |
8 * (at your option) any later version. |
9 * |
9 * |
10 * This program is distributed in the hope that it will be useful, |
10 * This program is distributed in the hope that it will be useful, |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 * GNU General Public License for more details. |
13 * GNU General Public License for more details. |
14 * |
14 * |
15 * You should have received a copy of the GNU General Public License |
15 * You should have received a copy of the GNU General Public License |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 */ |
17 */ |
18 |
18 |
19 #include <QGridLayout> |
19 #include <QGridLayout> |
33 #include "misc.h" |
33 #include "misc.h" |
34 #include "colors.h" |
34 #include "colors.h" |
35 #include "colorSelectDialog.h" |
35 #include "colorSelectDialog.h" |
36 #include "gldraw.h" |
36 #include "gldraw.h" |
37 #include "ui_config.h" |
37 #include "ui_config.h" |
|
38 #include "build/moc_configDialog.cpp" |
38 |
39 |
39 extern_cfg (str, gl_bgcolor); |
40 extern_cfg (str, gl_bgcolor); |
40 extern_cfg (str, gl_maincolor); |
41 extern_cfg (str, gl_maincolor); |
41 extern_cfg (bool, lv_colorize); |
42 extern_cfg (bool, lv_colorize); |
42 extern_cfg (bool, gl_colorbfc); |
43 extern_cfg (bool, gl_colorbfc); |
72 |
73 |
73 #define act(N) extern_cfg (keyseq, key_##N); |
74 #define act(N) extern_cfg (keyseq, key_##N); |
74 #include "actions.h" |
75 #include "actions.h" |
75 |
76 |
76 // ============================================================================= |
77 // ============================================================================= |
77 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
78 // ----------------------------------------------------------------------------- |
78 // ============================================================================= |
|
79 ConfigDialog::ConfigDialog (ForgeWindow* parent) : QDialog (parent) { |
79 ConfigDialog::ConfigDialog (ForgeWindow* parent) : QDialog (parent) { |
80 ui = new Ui_ConfigUI; |
80 ui = new Ui_ConfigUI; |
81 ui->setupUi (this); |
81 ui->setupUi (this); |
82 |
82 |
83 initMainTab(); |
83 initMainTab(); |
91 ui->autoCloseNetPrompt->setChecked (net_autoclose); |
91 ui->autoCloseNetPrompt->setChecked (net_autoclose); |
92 connect (ui->findDownloadPath, SIGNAL (clicked(bool)), this, SLOT (slot_findDownloadFolder())); |
92 connect (ui->findDownloadPath, SIGNAL (clicked(bool)), this, SLOT (slot_findDownloadFolder())); |
93 } |
93 } |
94 |
94 |
95 // ============================================================================= |
95 // ============================================================================= |
96 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
96 // ----------------------------------------------------------------------------- |
97 // ============================================================================= |
|
98 ConfigDialog::~ConfigDialog() { |
97 ConfigDialog::~ConfigDialog() { |
99 delete ui; |
98 delete ui; |
100 } |
99 } |
101 |
100 |
102 // ============================================================================= |
101 // ============================================================================= |
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
102 // ----------------------------------------------------------------------------- |
104 // ============================================================================= |
|
105 void ConfigDialog::initMainTab() { |
103 void ConfigDialog::initMainTab() { |
106 // Init color stuff |
104 // Init color stuff |
107 setButtonBackground (ui->backgroundColorButton, gl_bgcolor); |
105 setButtonBackground (ui->backgroundColorButton, gl_bgcolor); |
108 connect (ui->backgroundColorButton, SIGNAL (clicked()), |
106 connect (ui->backgroundColorButton, SIGNAL (clicked()), |
109 this, SLOT (slot_setGLBackground())); |
107 this, SLOT (slot_setGLBackground())); |
123 // ui->scemanticInlining->setChecked (edit_schemanticinline); |
121 // ui->scemanticInlining->setChecked (edit_schemanticinline); |
124 ui->implicitFiles->setChecked (gui_implicitfiles); |
122 ui->implicitFiles->setChecked (gui_implicitfiles); |
125 } |
123 } |
126 |
124 |
127 // ============================================================================= |
125 // ============================================================================= |
128 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
126 // ----------------------------------------------------------------------------- |
129 // ============================================================================= |
|
130 void ConfigDialog::initShortcutsTab() { |
127 void ConfigDialog::initShortcutsTab() { |
131 ulong i = 0; |
128 ulong i = 0; |
132 |
129 |
133 #define act(N) addShortcut (key_##N, ACTION(N), i); |
130 #define act(N) addShortcut (key_##N, ACTION(N), i); |
134 #include "actions.h" |
131 #include "actions.h" |
155 |
152 |
156 ui->shortcutsList->insertItem (i++, item); |
153 ui->shortcutsList->insertItem (i++, item); |
157 } |
154 } |
158 |
155 |
159 // ============================================================================= |
156 // ============================================================================= |
160 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
157 // ----------------------------------------------------------------------------- |
161 // ============================================================================= |
|
162 void ConfigDialog::initQuickColorTab() { |
158 void ConfigDialog::initQuickColorTab() { |
163 quickColors = quickColorsFromConfig(); |
159 quickColors = quickColorsFromConfig(); |
164 updateQuickColorList(); |
160 updateQuickColorList(); |
165 |
161 |
166 connect (ui->quickColor_add, SIGNAL (clicked()), this, SLOT (slot_setColor())); |
162 connect (ui->quickColor_add, SIGNAL (clicked()), this, SLOT (slot_setColor())); |
171 connect (ui->quickColor_moveDown, SIGNAL (clicked()), this, SLOT (slot_moveColor())); |
167 connect (ui->quickColor_moveDown, SIGNAL (clicked()), this, SLOT (slot_moveColor())); |
172 connect (ui->quickColor_clear, SIGNAL (clicked()), this, SLOT (slot_clearColors())); |
168 connect (ui->quickColor_clear, SIGNAL (clicked()), this, SLOT (slot_clearColors())); |
173 } |
169 } |
174 |
170 |
175 // ============================================================================= |
171 // ============================================================================= |
176 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
172 // ----------------------------------------------------------------------------- |
177 // ============================================================================= |
|
178 void ConfigDialog::initGridTab() { |
173 void ConfigDialog::initGridTab() { |
179 QGridLayout* gridlayout = new QGridLayout; |
174 QGridLayout* gridlayout = new QGridLayout; |
180 QLabel* xlabel = new QLabel ("X"), |
175 QLabel* xlabel = new QLabel ("X"), |
181 *ylabel = new QLabel ("Y"), |
176 *ylabel = new QLabel ("Y"), |
182 *zlabel = new QLabel ("Z"), |
177 *zlabel = new QLabel ("Z"), |
211 |
206 |
212 ui->grids->setLayout (gridlayout); |
207 ui->grids->setLayout (gridlayout); |
213 } |
208 } |
214 |
209 |
215 // ============================================================================= |
210 // ============================================================================= |
216 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
211 // ----------------------------------------------------------------------------- |
217 // ============================================================================= |
|
218 static const struct extProgInfo { |
212 static const struct extProgInfo { |
219 const str name, iconname; |
213 const str name, iconname; |
220 strconfig* const path; |
214 strconfig* const path; |
221 mutable QLineEdit* input; |
215 mutable QLineEdit* input; |
222 mutable QPushButton* setPathButton; |
216 mutable QPushButton* setPathButton; |
237 EXTPROG (Coverer, coverer) |
231 EXTPROG (Coverer, coverer) |
238 EXTPROG (Edger2, edger2) |
232 EXTPROG (Edger2, edger2) |
239 #undef EXTPROG |
233 #undef EXTPROG |
240 }; |
234 }; |
241 |
235 |
|
236 // ============================================================================= |
|
237 // ----------------------------------------------------------------------------- |
242 void ConfigDialog::initExtProgTab() { |
238 void ConfigDialog::initExtProgTab() { |
243 QGridLayout* pathsLayout = new QGridLayout; |
239 QGridLayout* pathsLayout = new QGridLayout; |
244 ulong row = 0; |
240 ulong row = 0; |
245 |
241 |
246 for (const extProgInfo & info : g_extProgInfo) { |
242 for (const extProgInfo & info : g_extProgInfo) { |
274 |
270 |
275 ui->extProgs->setLayout (pathsLayout); |
271 ui->extProgs->setLayout (pathsLayout); |
276 } |
272 } |
277 |
273 |
278 // ============================================================================= |
274 // ============================================================================= |
279 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
275 // ----------------------------------------------------------------------------- |
280 // ============================================================================= |
|
281 void ConfigDialog::updateQuickColorList (LDQuickColor* sel) { |
276 void ConfigDialog::updateQuickColorList (LDQuickColor* sel) { |
282 for (QListWidgetItem* item : quickColorItems) |
277 for (QListWidgetItem* item : quickColorItems) |
283 delete item; |
278 delete item; |
284 |
279 |
285 quickColorItems.clear(); |
280 quickColorItems.clear(); |
312 } |
307 } |
313 } |
308 } |
314 } |
309 } |
315 |
310 |
316 // ============================================================================= |
311 // ============================================================================= |
317 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
312 // ----------------------------------------------------------------------------- |
318 // ============================================================================= |
|
319 void ConfigDialog::slot_setColor() { |
313 void ConfigDialog::slot_setColor() { |
320 LDQuickColor* entry = null; |
314 LDQuickColor* entry = null; |
321 QListWidgetItem* item = null; |
315 QListWidgetItem* item = null; |
322 const bool isNew = static_cast<QPushButton*> (sender()) == ui->quickColor_add; |
316 const bool isNew = static_cast<QPushButton*> (sender()) == ui->quickColor_add; |
323 |
317 |
359 |
353 |
360 updateQuickColorList (entry); |
354 updateQuickColorList (entry); |
361 } |
355 } |
362 |
356 |
363 // ============================================================================= |
357 // ============================================================================= |
364 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
358 // ----------------------------------------------------------------------------- |
365 // ============================================================================= |
|
366 void ConfigDialog::slot_delColor() { |
359 void ConfigDialog::slot_delColor() { |
367 if (ui->quickColorList->selectedItems().size() == 0) |
360 if (ui->quickColorList->selectedItems().size() == 0) |
368 return; |
361 return; |
369 |
362 |
370 QListWidgetItem* item = ui->quickColorList->selectedItems() [0]; |
363 QListWidgetItem* item = ui->quickColorList->selectedItems() [0]; |
371 quickColors.erase (getItemRow (item, quickColorItems)); |
364 quickColors.erase (getItemRow (item, quickColorItems)); |
372 updateQuickColorList(); |
365 updateQuickColorList(); |
373 } |
366 } |
374 |
367 |
375 // ============================================================================= |
368 // ============================================================================= |
|
369 // ----------------------------------------------------------------------------- |
376 void ConfigDialog::slot_moveColor() { |
370 void ConfigDialog::slot_moveColor() { |
377 const bool up = (static_cast<QPushButton*> (sender()) == ui->quickColor_moveUp); |
371 const bool up = (static_cast<QPushButton*> (sender()) == ui->quickColor_moveUp); |
378 |
372 |
379 if (ui->quickColorList->selectedItems().size() == 0) |
373 if (ui->quickColorList->selectedItems().size() == 0) |
380 return; |
374 return; |
392 |
386 |
393 updateQuickColorList (&quickColors[dest]); |
387 updateQuickColorList (&quickColors[dest]); |
394 } |
388 } |
395 |
389 |
396 // ============================================================================= |
390 // ============================================================================= |
|
391 // ----------------------------------------------------------------------------- |
397 void ConfigDialog::slot_addColorSeparator() { |
392 void ConfigDialog::slot_addColorSeparator() { |
398 quickColors << LDQuickColor ({null, null, true}); |
393 quickColors << LDQuickColor ({null, null, true}); |
399 updateQuickColorList (&quickColors[quickColors.size() - 1]); |
394 updateQuickColorList (&quickColors[quickColors.size() - 1]); |
400 } |
395 } |
401 |
396 |
402 // ============================================================================= |
397 // ============================================================================= |
|
398 // ----------------------------------------------------------------------------- |
403 void ConfigDialog::slot_clearColors() { |
399 void ConfigDialog::slot_clearColors() { |
404 quickColors.clear(); |
400 quickColors.clear(); |
405 updateQuickColorList(); |
401 updateQuickColorList(); |
406 } |
402 } |
407 |
403 |
408 // ============================================================================= |
404 // ============================================================================= |
409 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
405 // ----------------------------------------------------------------------------- |
410 // ============================================================================= |
|
411 void ConfigDialog::pickColor (strconfig& conf, QPushButton* button) { |
406 void ConfigDialog::pickColor (strconfig& conf, QPushButton* button) { |
412 QColor col = QColorDialog::getColor (QColor (conf)); |
407 QColor col = QColorDialog::getColor (QColor (conf)); |
413 |
408 |
414 if (col.isValid()) { |
409 if (col.isValid()) { |
415 uchar r = col.red(), |
410 uchar r = col.red(), |
418 conf.value.sprintf ("#%.2X%.2X%.2X", r, g, b); |
413 conf.value.sprintf ("#%.2X%.2X%.2X", r, g, b); |
419 setButtonBackground (button, conf.value); |
414 setButtonBackground (button, conf.value); |
420 } |
415 } |
421 } |
416 } |
422 |
417 |
|
418 // ============================================================================= |
|
419 // ----------------------------------------------------------------------------- |
423 void ConfigDialog::slot_setGLBackground() { |
420 void ConfigDialog::slot_setGLBackground() { |
424 pickColor (gl_bgcolor, ui->backgroundColorButton); |
421 pickColor (gl_bgcolor, ui->backgroundColorButton); |
425 } |
422 } |
426 |
423 |
|
424 // ============================================================================= |
|
425 // ----------------------------------------------------------------------------- |
427 void ConfigDialog::slot_setGLForeground() { |
426 void ConfigDialog::slot_setGLForeground() { |
428 pickColor (gl_maincolor, ui->mainColorButton); |
427 pickColor (gl_maincolor, ui->mainColorButton); |
429 } |
428 } |
430 |
429 |
431 // ============================================================================= |
430 // ============================================================================= |
432 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
431 // ----------------------------------------------------------------------------- |
433 // ============================================================================= |
|
434 void ConfigDialog::setButtonBackground (QPushButton* button, str value) { |
432 void ConfigDialog::setButtonBackground (QPushButton* button, str value) { |
435 button->setIcon (getIcon ("colorselect")); |
433 button->setIcon (getIcon ("colorselect")); |
436 button->setAutoFillBackground (true); |
434 button->setAutoFillBackground (true); |
437 button->setStyleSheet (fmt ("background-color: %1", value)); |
435 button->setStyleSheet (fmt ("background-color: %1", value)); |
438 } |
436 } |
439 |
437 |
440 // ============================================================================= |
438 // ============================================================================= |
|
439 // ----------------------------------------------------------------------------- |
441 int ConfigDialog::getItemRow (QListWidgetItem* item, List<QListWidgetItem*>& haystack) { |
440 int ConfigDialog::getItemRow (QListWidgetItem* item, List<QListWidgetItem*>& haystack) { |
442 int i = 0; |
441 int i = 0; |
443 |
442 |
444 for (QListWidgetItem* it : haystack) { |
443 for (QListWidgetItem* it : haystack) { |
445 if (it == item) |
444 if (it == item) |
449 } |
448 } |
450 return -1; |
449 return -1; |
451 } |
450 } |
452 |
451 |
453 // ============================================================================= |
452 // ============================================================================= |
|
453 // ----------------------------------------------------------------------------- |
454 QListWidgetItem* ConfigDialog::getSelectedQuickColor() { |
454 QListWidgetItem* ConfigDialog::getSelectedQuickColor() { |
455 if (ui->quickColorList->selectedItems().size() == 0) |
455 if (ui->quickColorList->selectedItems().size() == 0) |
456 return null; |
456 return null; |
457 |
457 |
458 return ui->quickColorList->selectedItems() [0]; |
458 return ui->quickColorList->selectedItems() [0]; |
459 } |
459 } |
460 |
460 |
461 // ============================================================================= |
461 // ============================================================================= |
462 QList<ShortcutListItem*> ConfigDialog::getShortcutSelection() |
462 // ----------------------------------------------------------------------------- |
463 { |
463 QList<ShortcutListItem*> ConfigDialog::getShortcutSelection() { |
464 QList<ShortcutListItem*> out; |
464 QList<ShortcutListItem*> out; |
465 |
465 |
466 for (QListWidgetItem* entry : ui->shortcutsList->selectedItems()) |
466 for (QListWidgetItem* entry : ui->shortcutsList->selectedItems()) |
467 out << static_cast<ShortcutListItem*> (entry); |
467 out << static_cast<ShortcutListItem*> (entry); |
468 |
468 |
469 return out; |
469 return out; |
470 } |
470 } |
471 |
471 |
472 // ============================================================================= |
472 // ============================================================================= |
473 void ConfigDialog::slot_setShortcut() |
473 // ----------------------------------------------------------------------------- |
474 { |
474 void ConfigDialog::slot_setShortcut() { |
475 QList<ShortcutListItem*> sel = getShortcutSelection(); |
475 QList<ShortcutListItem*> sel = getShortcutSelection(); |
476 |
476 |
477 if (sel.size() < 1) |
477 if (sel.size() < 1) |
478 return; |
478 return; |
479 |
479 |
483 setShortcutText (item); |
483 setShortcutText (item); |
484 } |
484 } |
485 |
485 |
486 // ============================================================================= |
486 // ============================================================================= |
487 // ----------------------------------------------------------------------------- |
487 // ----------------------------------------------------------------------------- |
488 void ConfigDialog::slot_resetShortcut() |
488 void ConfigDialog::slot_resetShortcut() { |
489 { |
|
490 QList<ShortcutListItem*> sel = getShortcutSelection(); |
489 QList<ShortcutListItem*> sel = getShortcutSelection(); |
491 |
490 |
492 for (ShortcutListItem* item : sel) { |
491 for (ShortcutListItem* item : sel) { |
493 item->keyConfig()->reset(); |
492 item->keyConfig()->reset(); |
494 setShortcutText (item); |
493 setShortcutText (item); |
542 str keybind = item->keyConfig()->value.toString(); |
541 str keybind = item->keyConfig()->value.toString(); |
543 item->setText (fmt ("%1 (%2)", label, keybind)); |
542 item->setText (fmt ("%1 (%2)", label, keybind)); |
544 } |
543 } |
545 |
544 |
546 // ============================================================================= |
545 // ============================================================================= |
547 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
546 // ----------------------------------------------------------------------------- |
548 // ============================================================================= |
|
549 str ConfigDialog::quickColorString() { |
547 str ConfigDialog::quickColorString() { |
550 str val; |
548 str val; |
551 |
549 |
552 for (LDQuickColor entry : quickColors) { |
550 for (LDQuickColor entry : quickColors) { |
553 if (val.length() > 0) |
551 if (val.length() > 0) |
560 } |
558 } |
561 |
559 |
562 return val; |
560 return val; |
563 } |
561 } |
564 |
562 |
|
563 // ============================================================================= |
|
564 // ----------------------------------------------------------------------------- |
565 const Ui_ConfigUI* ConfigDialog::getUI() const { |
565 const Ui_ConfigUI* ConfigDialog::getUI() const { |
566 return ui; |
566 return ui; |
567 } |
567 } |
568 |
568 |
|
569 // ============================================================================= |
|
570 // ----------------------------------------------------------------------------- |
569 float ConfigDialog::getGridValue (int i, int j) const { |
571 float ConfigDialog::getGridValue (int i, int j) const { |
570 return dsb_gridData[i][j]->value(); |
572 return dsb_gridData[i][j]->value(); |
571 } |
573 } |
572 |
574 |
573 // ============================================================================= |
575 // ============================================================================= |
574 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
576 // ----------------------------------------------------------------------------- |
575 // ============================================================================= |
|
576 void ConfigDialog::staticDialog() { |
577 void ConfigDialog::staticDialog() { |
577 ConfigDialog dlg (g_win); |
578 ConfigDialog dlg (g_win); |
578 |
579 |
579 if (dlg.exec()) { |
580 if (dlg.exec()) { |
580 // Apply configuration |
581 // Apply configuration |
646 |
647 |
647 updateOutput(); |
648 updateOutput(); |
648 } |
649 } |
649 |
650 |
650 // ============================================================================= |
651 // ============================================================================= |
651 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
652 // ----------------------------------------------------------------------------- |
652 // ============================================================================= |
|
653 bool KeySequenceDialog::staticDialog (keyseqconfig* cfg, QWidget* parent) { |
653 bool KeySequenceDialog::staticDialog (keyseqconfig* cfg, QWidget* parent) { |
654 KeySequenceDialog dlg (cfg->value, parent); |
654 KeySequenceDialog dlg (cfg->value, parent); |
655 |
655 |
656 if (dlg.exec() == false) |
656 if (dlg.exec() == false) |
657 return false; |
657 return false; |
659 cfg->value = dlg.seq; |
659 cfg->value = dlg.seq; |
660 return true; |
660 return true; |
661 } |
661 } |
662 |
662 |
663 // ============================================================================= |
663 // ============================================================================= |
664 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
664 // ----------------------------------------------------------------------------- |
665 // ============================================================================= |
|
666 void KeySequenceDialog::updateOutput() { |
665 void KeySequenceDialog::updateOutput() { |
667 str shortcut = seq.toString(); |
666 str shortcut = seq.toString(); |
668 |
667 |
669 if (seq == QKeySequence()) |
668 if (seq == QKeySequence()) |
670 shortcut = "<empty>"; |
669 shortcut = "<empty>"; |
672 str text = fmt ("<center><b>%1</b></center>", shortcut); |
671 str text = fmt ("<center><b>%1</b></center>", shortcut); |
673 lb_output->setText (text); |
672 lb_output->setText (text); |
674 } |
673 } |
675 |
674 |
676 // ============================================================================= |
675 // ============================================================================= |
677 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
676 // ----------------------------------------------------------------------------- |
678 // ============================================================================= |
|
679 void KeySequenceDialog::keyPressEvent (QKeyEvent* ev) { |
677 void KeySequenceDialog::keyPressEvent (QKeyEvent* ev) { |
680 seq = ev->key() + ev->modifiers(); |
678 seq = ev->key() + ev->modifiers(); |
681 updateOutput(); |
679 updateOutput(); |
682 } |
680 } |
683 |
|
684 #include "build/moc_configDialog.cpp" |
|