src/configDialog.cpp

changeset 469
f2faed654633
parent 467
59549731151a
child 471
fc58b67d445c
equal deleted inserted replaced
468:7b3159f1a9e2 469:f2faed654633
80 // ============================================================================= 80 // =============================================================================
81 // ----------------------------------------------------------------------------- 81 // -----------------------------------------------------------------------------
82 ConfigDialog::ConfigDialog (ConfigDialog::Tab deftab, QWidget* parent, Qt::WindowFlags f) : 82 ConfigDialog::ConfigDialog (ConfigDialog::Tab deftab, QWidget* parent, Qt::WindowFlags f) :
83 QDialog (parent, f) 83 QDialog (parent, f)
84 { 84 {
85 assert (g_win);
85 ui = new Ui_ConfigUI; 86 ui = new Ui_ConfigUI;
86 ui->setupUi (this); 87 ui->setupUi (this);
87 88
88 initMainTab(); 89 // Interface tab:
89 initShortcutsTab();
90 initQuickColorTab();
91 initGridTab();
92 initExtProgTab();
93
94 ui->downloadPath->setText (net_downloadpath);
95 ui->guessNetPaths->setChecked (net_guesspaths);
96 ui->autoCloseNetPrompt->setChecked (net_autoclose);
97 connect (ui->findDownloadPath, SIGNAL (clicked(bool)), this, SLOT (slot_findDownloadFolder()));
98
99 ui->m_profileName->setText (ld_defaultname);
100 ui->m_profileUsername->setText (ld_defaultuser);
101 ui->m_profileLicense->setCurrentIndex (ld_defaultlicense);
102
103 ui->tabs->setCurrentIndex (deftab);
104 }
105
106 // =============================================================================
107 // -----------------------------------------------------------------------------
108 ConfigDialog::~ConfigDialog() {
109 delete ui;
110 }
111
112 // =============================================================================
113 // -----------------------------------------------------------------------------
114 void ConfigDialog::initMainTab() {
115 // Init color stuff
116 setButtonBackground (ui->backgroundColorButton, gl_bgcolor); 90 setButtonBackground (ui->backgroundColorButton, gl_bgcolor);
117 connect (ui->backgroundColorButton, SIGNAL (clicked()), 91 connect (ui->backgroundColorButton, SIGNAL (clicked()),
118 this, SLOT (slot_setGLBackground())); 92 this, SLOT (slot_setGLBackground()));
119 93
120 setButtonBackground (ui->mainColorButton, gl_maincolor.value); 94 setButtonBackground (ui->mainColorButton, gl_maincolor.value);
121 connect (ui->mainColorButton, SIGNAL (clicked()), 95 connect (ui->mainColorButton, SIGNAL (clicked()),
122 this, SLOT (slot_setGLForeground())); 96 this, SLOT (slot_setGLForeground()));
123 97
124 // Sliders
125 ui->mainColorAlpha->setValue (gl_maincolor_alpha * 10.0f); 98 ui->mainColorAlpha->setValue (gl_maincolor_alpha * 10.0f);
126 ui->lineThickness->setValue (gl_linethickness); 99 ui->lineThickness->setValue (gl_linethickness);
127
128 // Checkboxes
129 ui->colorizeObjects->setChecked (lv_colorize); 100 ui->colorizeObjects->setChecked (lv_colorize);
130 ui->colorBFC->setChecked (gl_colorbfc); 101 ui->colorBFC->setChecked (gl_colorbfc);
131 ui->blackEdges->setChecked (gl_blackedges); 102 ui->blackEdges->setChecked (gl_blackedges);
132 // ui->scemanticInlining->setChecked (edit_schemanticinline);
133 ui->implicitFiles->setChecked (gui_implicitfiles); 103 ui->implicitFiles->setChecked (gui_implicitfiles);
134 ui->m_logostuds->setChecked (gl_logostuds); 104 ui->m_logostuds->setChecked (gl_logostuds);
135 } 105
136
137 // =============================================================================
138 // -----------------------------------------------------------------------------
139 void ConfigDialog::initShortcutsTab() {
140 ulong i = 0; 106 ulong i = 0;
141
142 #define act(N) addShortcut (key_##N, ACTION(N), i); 107 #define act(N) addShortcut (key_##N, ACTION(N), i);
143 #include "actions.h" 108 #include "actions.h"
144 109
145 ui->shortcutsList->setSortingEnabled (true); 110 ui->shortcutsList->setSortingEnabled (true);
146 ui->shortcutsList->sortItems(); 111 ui->shortcutsList->sortItems();
147 112
148 connect (ui->shortcut_set, SIGNAL (clicked()), this, SLOT (slot_setShortcut())); 113 connect (ui->shortcut_set, SIGNAL (clicked()), this, SLOT (slot_setShortcut()));
149 connect (ui->shortcut_reset, SIGNAL (clicked()), this, SLOT (slot_resetShortcut())); 114 connect (ui->shortcut_reset, SIGNAL (clicked()), this, SLOT (slot_resetShortcut()));
150 connect (ui->shortcut_clear, SIGNAL (clicked()), this, SLOT (slot_clearShortcut())); 115 connect (ui->shortcut_clear, SIGNAL (clicked()), this, SLOT (slot_clearShortcut()));
151 } 116
152
153 void ConfigDialog::addShortcut (KeySequenceConfig& cfg, QAction* act, ulong& i) {
154 ShortcutListItem* item = new ShortcutListItem;
155 item->setIcon (act->icon());
156 item->setKeyConfig (&cfg);
157 item->setAction (act);
158 setShortcutText (item);
159
160 // If the action doesn't have a valid icon, use an empty one
161 // so that the list is kept aligned.
162 if (act->icon().isNull())
163 item->setIcon (getIcon ("empty"));
164
165 ui->shortcutsList->insertItem (i++, item);
166 }
167
168 // =============================================================================
169 // -----------------------------------------------------------------------------
170 void ConfigDialog::initQuickColorTab() {
171 quickColors = quickColorsFromConfig(); 117 quickColors = quickColorsFromConfig();
172 updateQuickColorList(); 118 updateQuickColorList();
173 119
174 connect (ui->quickColor_add, SIGNAL (clicked()), this, SLOT (slot_setColor())); 120 connect (ui->quickColor_add, SIGNAL (clicked()), this, SLOT (slot_setColor()));
175 connect (ui->quickColor_remove, SIGNAL (clicked()), this, SLOT (slot_delColor())); 121 connect (ui->quickColor_remove, SIGNAL (clicked()), this, SLOT (slot_delColor()));
176 connect (ui->quickColor_edit, SIGNAL (clicked()), this, SLOT (slot_setColor())); 122 connect (ui->quickColor_edit, SIGNAL (clicked()), this, SLOT (slot_setColor()));
177 connect (ui->quickColor_addSep, SIGNAL (clicked()), this, SLOT (slot_addColorSeparator())); 123 connect (ui->quickColor_addSep, SIGNAL (clicked()), this, SLOT (slot_addColorSeparator()));
178 connect (ui->quickColor_moveUp, SIGNAL (clicked()), this, SLOT (slot_moveColor())); 124 connect (ui->quickColor_moveUp, SIGNAL (clicked()), this, SLOT (slot_moveColor()));
179 connect (ui->quickColor_moveDown, SIGNAL (clicked()), this, SLOT (slot_moveColor())); 125 connect (ui->quickColor_moveDown, SIGNAL (clicked()), this, SLOT (slot_moveColor()));
180 connect (ui->quickColor_clear, SIGNAL (clicked()), this, SLOT (slot_clearColors())); 126 connect (ui->quickColor_clear, SIGNAL (clicked()), this, SLOT (slot_clearColors()));
181 } 127
182 128 ui->downloadPath->setText (net_downloadpath);
183 // ============================================================================= 129 ui->guessNetPaths->setChecked (net_guesspaths);
184 // ----------------------------------------------------------------------------- 130 ui->autoCloseNetPrompt->setChecked (net_autoclose);
185 void ConfigDialog::initGridTab() { 131 connect (ui->findDownloadPath, SIGNAL (clicked(bool)), this, SLOT (slot_findDownloadFolder()));
132
133 ui->m_profileName->setText (ld_defaultname);
134 ui->m_profileUsername->setText (ld_defaultuser);
135 ui->m_profileLicense->setCurrentIndex (ld_defaultlicense);
136 ui->tabs->setCurrentIndex (deftab);
137
138 initGrids();
139 initExtProgs();
140
141 connect (ui->buttonBox, SIGNAL (clicked (QAbstractButton*)),
142 this, SLOT (buttonClicked(QAbstractButton*)));
143 }
144
145 // =============================================================================
146 // -----------------------------------------------------------------------------
147 ConfigDialog::~ConfigDialog() {
148 delete ui;
149 }
150
151 // =============================================================================
152 // -----------------------------------------------------------------------------
153 void ConfigDialog::addShortcut (KeySequenceConfig& cfg, QAction* act, ulong& i) {
154 ShortcutListItem* item = new ShortcutListItem;
155 item->setIcon (act->icon());
156 item->setKeyConfig (&cfg);
157 item->setAction (act);
158 setShortcutText (item);
159
160 // If the action doesn't have a valid icon, use an empty one
161 // so that the list is kept aligned.
162 if (act->icon().isNull())
163 item->setIcon (getIcon ("empty"));
164
165 ui->shortcutsList->insertItem (i++, item);
166 }
167
168 // =============================================================================
169 // -----------------------------------------------------------------------------
170 void ConfigDialog::initGrids() {
186 QGridLayout* gridlayout = new QGridLayout; 171 QGridLayout* gridlayout = new QGridLayout;
187 QLabel* xlabel = new QLabel ("X"), 172 QLabel* xlabel = new QLabel ("X"),
188 *ylabel = new QLabel ("Y"), 173 *ylabel = new QLabel ("Y"),
189 *zlabel = new QLabel ("Z"), 174 *zlabel = new QLabel ("Z"),
190 *anglabel = new QLabel ("Angle"); 175 *anglabel = new QLabel ("Angle");
213 dsb_gridData[i][j] = new QDoubleSpinBox; 198 dsb_gridData[i][j] = new QDoubleSpinBox;
214 dsb_gridData[i][j]->setValue (g_GridInfo[i].confs[j]->value); 199 dsb_gridData[i][j]->setValue (g_GridInfo[i].confs[j]->value);
215 gridlayout->addWidget (dsb_gridData[i][j], i + 1, j + 1); 200 gridlayout->addWidget (dsb_gridData[i][j], i + 1, j + 1);
216 } 201 }
217 } 202 }
218 203
219 ui->grids->setLayout (gridlayout); 204 ui->grids->setLayout (gridlayout);
220 } 205 }
221 206
222 // ============================================================================= 207 // =============================================================================
223 // ----------------------------------------------------------------------------- 208 // -----------------------------------------------------------------------------
245 #undef EXTPROG 230 #undef EXTPROG
246 }; 231 };
247 232
248 // ============================================================================= 233 // =============================================================================
249 // ----------------------------------------------------------------------------- 234 // -----------------------------------------------------------------------------
250 void ConfigDialog::initExtProgTab() { 235 void ConfigDialog::initExtProgs() {
251 QGridLayout* pathsLayout = new QGridLayout; 236 QGridLayout* pathsLayout = new QGridLayout;
252 ulong row = 0; 237 ulong row = 0;
253 238
254 for (const extProgInfo & info : g_extProgInfo) { 239 for (const extProgInfo & info : g_extProgInfo) {
255 QLabel* icon = new QLabel, 240 QLabel* icon = new QLabel,
277 pathsLayout->addWidget (wineBox, row, 4); 262 pathsLayout->addWidget (wineBox, row, 4);
278 #endif 263 #endif
279 264
280 ++row; 265 ++row;
281 } 266 }
282 267
283 ui->extProgs->setLayout (pathsLayout); 268 ui->extProgs->setLayout (pathsLayout);
269 }
270
271 // =============================================================================
272 // -----------------------------------------------------------------------------
273 void ConfigDialog::applySettings() {
274 // Apply configuration
275 lv_colorize = ui->colorizeObjects->isChecked();
276 gl_colorbfc = ui->colorBFC->isChecked();
277 // edit_schemanticinline = ui->scemanticInlining->isChecked();
278 gl_blackedges = ui->blackEdges->isChecked();
279 gl_maincolor_alpha = ((double) ui->mainColorAlpha->value()) / 10.0f;
280 gl_linethickness = ui->lineThickness->value();
281 gui_implicitfiles = ui->implicitFiles->isChecked();
282 net_downloadpath = ui->downloadPath->text();
283 net_guesspaths = ui->guessNetPaths->isChecked();
284 net_autoclose = ui->autoCloseNetPrompt->isChecked();
285 gl_logostuds = ui->m_logostuds->isChecked();
286 ld_defaultuser = ui->m_profileUsername->text();
287 ld_defaultname = ui->m_profileName->text();
288 ld_defaultlicense = ui->m_profileLicense->currentIndex();
289
290 if (net_downloadpath.value.right (1) != DIRSLASH)
291 net_downloadpath += DIRSLASH;
292
293 // Rebuild the quick color toolbar
294 g_win->setQuickColors (quickColors);
295 gui_colortoolbar = quickColorString();
296
297 // Set the grid settings
298 for (int i = 0; i < g_NumGrids; ++i)
299 for (int j = 0; j < 4; ++j)
300 g_GridInfo[i].confs[j]->value = dsb_gridData[i][j]->value();
301
302 // Apply key shortcuts
303 #define act(N) ACTION(N)->setShortcut (key_##N);
304 #include "actions.h"
305
306 // Ext program settings
307 for (const extProgInfo & info : g_extProgInfo) {
308 *info.path = info.input->text();
309
310 #ifndef _WIN32
311 *info.wine = info.wineBox->isChecked();
312 #endif // _WIN32
313 }
314
315 Config::save();
316 reloadAllSubfiles();
317 loadLogoedStuds();
318 g_win->R()->setBackground();
319 g_win->fullRefresh();
320 g_win->updateToolBars();
321 g_win->updateFileList();
322 }
323
324 // =============================================================================
325 // -----------------------------------------------------------------------------
326 void ConfigDialog::buttonClicked (QAbstractButton* button) {
327 typedef QDialogButtonBox QDDB;
328 QDialogButtonBox* dbb = ui->buttonBox;
329
330 if (button == dbb->button (QDDB::Ok)) {
331 applySettings();
332 accept();
333 } elif (button == dbb->button (QDDB::Apply)) {
334 applySettings();
335 } elif (button == dbb->button (QDDB::Cancel)) {
336 reject();
337 }
284 } 338 }
285 339
286 // ============================================================================= 340 // =============================================================================
287 // ----------------------------------------------------------------------------- 341 // -----------------------------------------------------------------------------
288 void ConfigDialog::updateQuickColorList (LDQuickColor* sel) { 342 void ConfigDialog::updateQuickColorList (LDQuickColor* sel) {
570 } 624 }
571 625
572 return val; 626 return val;
573 } 627 }
574 628
575 // =============================================================================
576 // -----------------------------------------------------------------------------
577 const Ui_ConfigUI* ConfigDialog::getUI() const {
578 return ui;
579 }
580
581 // =============================================================================
582 // -----------------------------------------------------------------------------
583 float ConfigDialog::getGridValue (int i, int j) const {
584 return dsb_gridData[i][j]->value();
585 }
586
587 // =============================================================================
588 // -----------------------------------------------------------------------------
589 void ConfigDialog::staticDialog() {
590 ConfigDialog dlg (InterfaceTab, g_win);
591
592 if (dlg.exec()) {
593 const alias ui = *dlg.getUI();
594
595 // Apply configuration
596 lv_colorize = ui.colorizeObjects->isChecked();
597 gl_colorbfc = ui.colorBFC->isChecked();
598 // edit_schemanticinline = ui.scemanticInlining->isChecked();
599 gl_blackedges = ui.blackEdges->isChecked();
600 gl_maincolor_alpha = ((double) ui.mainColorAlpha->value()) / 10.0f;
601 gl_linethickness = ui.lineThickness->value();
602 gui_implicitfiles = ui.implicitFiles->isChecked();
603 net_downloadpath = ui.downloadPath->text();
604 net_guesspaths = ui.guessNetPaths->isChecked();
605 net_autoclose = ui.autoCloseNetPrompt->isChecked();
606 gl_logostuds = ui.m_logostuds->isChecked();
607 ld_defaultuser = ui.m_profileUsername->text();
608 ld_defaultname = ui.m_profileName->text();
609 ld_defaultlicense = ui.m_profileLicense->currentIndex();
610
611 if (net_downloadpath.value.right (1) != DIRSLASH)
612 net_downloadpath += DIRSLASH;
613
614 // Rebuild the quick color toolbar
615 g_win->setQuickColors (dlg.quickColors);
616 gui_colortoolbar = dlg.quickColorString();
617
618 // Set the grid settings
619 for (int i = 0; i < g_NumGrids; ++i)
620 for (int j = 0; j < 4; ++j)
621 g_GridInfo[i].confs[j]->value = dlg.getGridValue (i, j);
622
623 // Apply key shortcuts
624 #define act(N) ACTION(N)->setShortcut (key_##N);
625 #include "actions.h"
626
627 // Ext program settings
628 for (const extProgInfo & info : g_extProgInfo) {
629 *info.path = info.input->text();
630
631 #ifndef _WIN32
632 *info.wine = info.wineBox->isChecked();
633 #endif // _WIN32
634 }
635
636 Config::save();
637 reloadAllSubfiles();
638 loadLogoedStuds();
639 g_win->R()->setBackground();
640 g_win->fullRefresh();
641 g_win->updateToolBars();
642 g_win->updateFileList();
643 }
644 }
645
646 // ========================================================================================================================= 629 // =========================================================================================================================
647 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 630 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
648 // ========================================================================================================================= 631 // =========================================================================================================================
649 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 632 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
650 // ========================================================================================================================= 633 // =========================================================================================================================

mercurial