/[svn]/qsampler/trunk/src/qsamplerOptionsForm.cpp
ViewVC logotype

Annotation of /qsampler/trunk/src/qsamplerOptionsForm.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3761 - (hide annotations) (download)
Tue Mar 31 11:06:16 2020 UTC (4 years ago) by capela
File size: 19187 byte(s)
- More fixing to build for Qt >= 5.15.0 (re. custom styles and
  color themes/palette editor). (REGRESSION)
1 capela 1464 // qsamplerOptionsForm.cpp
2     //
3     /****************************************************************************
4 capela 3760 Copyright (C) 2004-2020, rncbc aka Rui Nuno Capela. All rights reserved.
5 capela 1464 Copyright (C) 2007, Christian Schoenebeck
6    
7     This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     as published by the Free Software Foundation; either version 2
10     of the License, or (at your option) any later version.
11    
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License along
18     with this program; if not, write to the Free Software Foundation, Inc.,
19     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20    
21     *****************************************************************************/
22    
23 schoenebeck 1461 #include "qsamplerOptionsForm.h"
24    
25     #include "qsamplerAbout.h"
26     #include "qsamplerOptions.h"
27    
28 capela 3648 #include "qsamplerPaletteForm.h"
29    
30 schoenebeck 1461 #include <QMessageBox>
31     #include <QFontDialog>
32 capela 1738 #include <QFileDialog>
33 schoenebeck 1461
34 capela 3648 #include <QStyleFactory>
35 capela 1499
36 schoenebeck 1461
37 capela 3648 // Default (empty/blank) name.
38 capela 3654 static const char *g_pszDefName = QT_TRANSLATE_NOOP("qsamplerOptionsForm", "(default)");
39 capela 3648
40 capela 3651
41     namespace QSampler {
42    
43 capela 1558 //-------------------------------------------------------------------------
44     // QSampler::OptionsForm -- Options form implementation.
45     //
46    
47 capela 1509 OptionsForm::OptionsForm ( QWidget* pParent )
48     : QDialog(pParent)
49 capela 1473 {
50 capela 1509 m_ui.setupUi(this);
51 schoenebeck 1461
52 capela 1473 // No settings descriptor initially (the caller will set it).
53 capela 3555 m_pOptions = nullptr;
54 schoenebeck 1461
55 capela 1473 // Initialize dirty control state.
56     m_iDirtySetup = 0;
57     m_iDirtyCount = 0;
58 schoenebeck 1461
59 capela 1473 // Set dialog validators...
60 capela 1509 m_ui.ServerPortComboBox->setValidator(
61     new QIntValidator(m_ui.ServerPortComboBox));
62 schoenebeck 1461
63 capela 1473 // Try to restore old window positioning.
64     adjustSize();
65 capela 1466
66 capela 1509 QObject::connect(m_ui.ServerHostComboBox,
67 capela 1504 SIGNAL(editTextChanged(const QString&)),
68 capela 1466 SLOT(optionsChanged()));
69 capela 1509 QObject::connect(m_ui.ServerPortComboBox,
70 capela 1504 SIGNAL(editTextChanged(const QString&)),
71 capela 1466 SLOT(optionsChanged()));
72 capela 1509 QObject::connect(m_ui.ServerTimeoutSpinBox,
73 capela 1466 SIGNAL(valueChanged(int)),
74     SLOT(optionsChanged()));
75 capela 1509 QObject::connect(m_ui.ServerStartCheckBox,
76 capela 1466 SIGNAL(stateChanged(int)),
77     SLOT(optionsChanged()));
78 capela 1509 QObject::connect(m_ui.ServerCmdLineComboBox,
79 capela 1504 SIGNAL(editTextChanged(const QString&)),
80 capela 1466 SLOT(optionsChanged()));
81 capela 1509 QObject::connect(m_ui.StartDelaySpinBox,
82 capela 1466 SIGNAL(valueChanged(int)),
83     SLOT(optionsChanged()));
84 capela 1738 QObject::connect(m_ui.MessagesLogCheckBox,
85     SIGNAL(stateChanged(int)),
86     SLOT(optionsChanged()));
87     QObject::connect(m_ui.MessagesLogPathComboBox,
88     SIGNAL(editTextChanged(const QString&)),
89     SLOT(optionsChanged()));
90     QObject::connect(m_ui.MessagesLogPathToolButton,
91     SIGNAL(clicked()),
92     SLOT(browseMessagesLogPath()));
93 capela 1509 QObject::connect(m_ui.DisplayFontPushButton,
94 capela 1466 SIGNAL(clicked()),
95     SLOT(chooseDisplayFont()));
96 capela 1509 QObject::connect(m_ui.DisplayEffectCheckBox,
97 capela 1466 SIGNAL(toggled(bool)),
98     SLOT(toggleDisplayEffect(bool)));
99 capela 1509 QObject::connect(m_ui.AutoRefreshCheckBox,
100 capela 1466 SIGNAL(stateChanged(int)),
101     SLOT(optionsChanged()));
102 capela 1509 QObject::connect(m_ui.AutoRefreshTimeSpinBox,
103 capela 1466 SIGNAL(valueChanged(int)),
104     SLOT(optionsChanged()));
105 capela 1509 QObject::connect(m_ui.MaxVolumeSpinBox,
106 capela 1466 SIGNAL(valueChanged(int)),
107     SLOT(optionsChanged()));
108 capela 1509 QObject::connect(m_ui.MessagesFontPushButton,
109 capela 1466 SIGNAL(clicked()),
110     SLOT(chooseMessagesFont()));
111 capela 1509 QObject::connect(m_ui.MessagesLimitCheckBox,
112 capela 1466 SIGNAL(stateChanged(int)),
113     SLOT(optionsChanged()));
114 capela 1509 QObject::connect(m_ui.MessagesLimitLinesSpinBox,
115 capela 1466 SIGNAL(valueChanged(int)),
116     SLOT(optionsChanged()));
117 capela 1509 QObject::connect(m_ui.ConfirmRemoveCheckBox,
118 capela 1466 SIGNAL(stateChanged(int)),
119     SLOT(optionsChanged()));
120 capela 2722 QObject::connect(m_ui.ConfirmResetCheckBox,
121     SIGNAL(stateChanged(int)),
122     SLOT(optionsChanged()));
123     QObject::connect(m_ui.ConfirmRestartCheckBox,
124     SIGNAL(stateChanged(int)),
125     SLOT(optionsChanged()));
126     QObject::connect(m_ui.ConfirmErrorCheckBox,
127     SIGNAL(stateChanged(int)),
128     SLOT(optionsChanged()));
129 capela 1509 QObject::connect(m_ui.KeepOnTopCheckBox,
130 capela 1466 SIGNAL(stateChanged(int)),
131     SLOT(optionsChanged()));
132 capela 1509 QObject::connect(m_ui.StdoutCaptureCheckBox,
133 capela 1466 SIGNAL(stateChanged(int)),
134     SLOT(optionsChanged()));
135 capela 1509 QObject::connect(m_ui.MaxRecentFilesSpinBox,
136 capela 1466 SIGNAL(valueChanged(int)),
137     SLOT(optionsChanged()));
138 capela 1509 QObject::connect(m_ui.CompletePathCheckBox,
139 capela 1466 SIGNAL(stateChanged(int)),
140     SLOT(optionsChanged()));
141 capela 1509 QObject::connect(m_ui.InstrumentNamesCheckBox,
142 capela 1466 SIGNAL(stateChanged(int)),
143     SLOT(optionsChanged()));
144 capela 3648 QObject::connect(m_ui.CustomColorThemeComboBox,
145     SIGNAL(activated(int)),
146     SLOT(optionsChanged()));
147     QObject::connect(m_ui.CustomColorThemeToolButton,
148     SIGNAL(clicked()),
149     SLOT(editCustomColorThemes()));
150     QObject::connect(m_ui.CustomStyleThemeComboBox,
151     SIGNAL(activated(int)),
152     SLOT(optionsChanged()));
153 capela 1749 QObject::connect(m_ui.BaseFontSizeComboBox,
154     SIGNAL(editTextChanged(const QString&)),
155     SLOT(optionsChanged()));
156 schoenebeck 1803 QObject::connect(m_ui.MaxVoicesSpinBox,
157     SIGNAL(valueChanged(int)),
158     SLOT(maxVoicesChanged(int)));
159     QObject::connect(m_ui.MaxStreamsSpinBox,
160     SIGNAL(valueChanged(int)),
161     SLOT(maxStreamsChanged(int)));
162 capela 2107 QObject::connect(m_ui.DialogButtonBox,
163     SIGNAL(accepted()),
164 capela 1466 SLOT(accept()));
165 capela 2107 QObject::connect(m_ui.DialogButtonBox,
166     SIGNAL(rejected()),
167 capela 1466 SLOT(reject()));
168 schoenebeck 1461 }
169    
170 capela 1473 OptionsForm::~OptionsForm()
171     {
172 schoenebeck 1461 }
173    
174     // Populate (setup) dialog controls from settings descriptors.
175 capela 1558 void OptionsForm::setup ( Options *pOptions )
176 schoenebeck 1461 {
177 capela 1509 // Set reference descriptor.
178     m_pOptions = pOptions;
179 schoenebeck 1461
180 capela 1509 // Start clean.
181     m_iDirtyCount = 0;
182     // Avoid nested changes.
183     m_iDirtySetup++;
184 schoenebeck 1461
185 capela 1509 // Load combo box history...
186     m_pOptions->loadComboBoxHistory(m_ui.ServerHostComboBox);
187     m_pOptions->loadComboBoxHistory(m_ui.ServerPortComboBox);
188     m_pOptions->loadComboBoxHistory(m_ui.ServerCmdLineComboBox);
189 capela 1738 m_pOptions->loadComboBoxHistory(m_ui.MessagesLogPathComboBox);
190 schoenebeck 1461
191 capela 1509 // Load Server settings...
192     m_ui.ServerHostComboBox->setEditText(m_pOptions->sServerHost);
193     m_ui.ServerPortComboBox->setEditText(QString::number(m_pOptions->iServerPort));
194     m_ui.ServerTimeoutSpinBox->setValue(m_pOptions->iServerTimeout);
195     m_ui.ServerStartCheckBox->setChecked(m_pOptions->bServerStart);
196     m_ui.ServerCmdLineComboBox->setEditText(m_pOptions->sServerCmdLine);
197     m_ui.StartDelaySpinBox->setValue(m_pOptions->iStartDelay);
198 schoenebeck 1461
199 capela 1738 // Logging options...
200     m_ui.MessagesLogCheckBox->setChecked(m_pOptions->bMessagesLog);
201     m_ui.MessagesLogPathComboBox->setEditText(m_pOptions->sMessagesLogPath);
202    
203 capela 1509 // Load Display options...
204     QFont font;
205 capela 1504 QPalette pal;
206 schoenebeck 1461
207 capela 1509 // Display font.
208     if (m_pOptions->sDisplayFont.isEmpty()
209     || !font.fromString(m_pOptions->sDisplayFont))
210     font = QFont("Sans Serif", 8);
211     m_ui.DisplayFontTextLabel->setFont(font);
212     m_ui.DisplayFontTextLabel->setText(font.family()
213     + ' ' + QString::number(font.pointSize()));
214 schoenebeck 1461
215 capela 1509 // Display effect.
216     m_ui.DisplayEffectCheckBox->setChecked(m_pOptions->bDisplayEffect);
217     toggleDisplayEffect(m_pOptions->bDisplayEffect);
218 schoenebeck 1461
219 capela 1509 // Auto-refresh and maximum volume options.
220     m_ui.AutoRefreshCheckBox->setChecked(m_pOptions->bAutoRefresh);
221     m_ui.AutoRefreshTimeSpinBox->setValue(m_pOptions->iAutoRefreshTime);
222     m_ui.MaxVolumeSpinBox->setValue(m_pOptions->iMaxVolume);
223 schoenebeck 1461
224 capela 1509 // Messages font.
225     if (m_pOptions->sMessagesFont.isEmpty()
226     || !font.fromString(m_pOptions->sMessagesFont))
227 capela 1788 font = QFont("Monospace", 8);
228 capela 1509 pal = m_ui.MessagesFontTextLabel->palette();
229 capela 1788 pal.setColor(QPalette::Background, pal.base().color());
230 capela 1509 m_ui.MessagesFontTextLabel->setPalette(pal);
231     m_ui.MessagesFontTextLabel->setFont(font);
232     m_ui.MessagesFontTextLabel->setText(font.family()
233     + ' ' + QString::number(font.pointSize()));
234 schoenebeck 1461
235 capela 1509 // Messages limit option.
236     m_ui.MessagesLimitCheckBox->setChecked(m_pOptions->bMessagesLimit);
237     m_ui.MessagesLimitLinesSpinBox->setValue(m_pOptions->iMessagesLimitLines);
238 schoenebeck 1461
239 capela 1509 // Other options finally.
240     m_ui.ConfirmRemoveCheckBox->setChecked(m_pOptions->bConfirmRemove);
241 capela 2722 m_ui.ConfirmRestartCheckBox->setChecked(m_pOptions->bConfirmRestart);
242     m_ui.ConfirmResetCheckBox->setChecked(m_pOptions->bConfirmReset);
243     m_ui.ConfirmErrorCheckBox->setChecked(m_pOptions->bConfirmError);
244 capela 1509 m_ui.KeepOnTopCheckBox->setChecked(m_pOptions->bKeepOnTop);
245     m_ui.StdoutCaptureCheckBox->setChecked(m_pOptions->bStdoutCapture);
246     m_ui.CompletePathCheckBox->setChecked(m_pOptions->bCompletePath);
247     m_ui.InstrumentNamesCheckBox->setChecked(m_pOptions->bInstrumentNames);
248     m_ui.MaxRecentFilesSpinBox->setValue(m_pOptions->iMaxRecentFiles);
249 capela 1749 if (m_pOptions->iBaseFontSize > 0)
250     m_ui.BaseFontSizeComboBox->setEditText(QString::number(m_pOptions->iBaseFontSize));
251     else
252     m_ui.BaseFontSizeComboBox->setCurrentIndex(0);
253 schoenebeck 1461
254     #ifndef CONFIG_LIBGIG
255 capela 1509 m_ui.InstrumentNamesCheckBox->setEnabled(false);
256 schoenebeck 1461 #endif
257    
258 schoenebeck 1803 bMaxVoicesModified = bMaxStreamsModified = false;
259     #ifdef CONFIG_MAX_VOICES
260     const bool bMaxVoicesSupported =
261     m_pOptions->getEffectiveMaxVoices() >= 0;
262     const bool bMaxStreamsSupported =
263     m_pOptions->getEffectiveMaxStreams() >= 0;
264    
265     m_ui.MaxVoicesSpinBox->setEnabled(bMaxVoicesSupported);
266     m_ui.MaxVoicesSpinBox->setValue(m_pOptions->getMaxVoices());
267     if (!bMaxVoicesSupported)
268     m_ui.MaxVoicesSpinBox->setToolTip(
269     tr("This parameter is not supported by the current sampler "
270     "version in use.")
271     );
272     else
273     m_ui.MaxVoicesSpinBox->setToolTip(
274     tr("The max. amount of voices the sampler shall process "
275 capela 3386 "simultaneously.")
276 schoenebeck 1803 );
277    
278     m_ui.MaxStreamsSpinBox->setEnabled(bMaxStreamsSupported);
279     m_ui.MaxStreamsSpinBox->setValue(m_pOptions->getMaxStreams());
280     if (!bMaxStreamsSupported)
281     m_ui.MaxStreamsSpinBox->setToolTip(
282     tr("This parameter is not supported by the current sampler "
283     "version in use.")
284     );
285     else
286     m_ui.MaxStreamsSpinBox->setToolTip(
287     tr("The max. amount of disk streams the sampler shall process "
288 capela 3386 "simultaneously.")
289 schoenebeck 1803 );
290     #else
291     m_ui.MaxVoicesSpinBox->setEnabled(false);
292     m_ui.MaxStreamsSpinBox->setEnabled(false);
293     m_ui.MaxVoicesSpinBox->setToolTip(
294     tr("QSampler was built without support for this parameter.")
295     );
296     m_ui.MaxStreamsSpinBox->setToolTip(
297     tr("QSampler was built without support for this parameter.")
298     );
299     #endif // CONFIG_MAX_VOICES
300    
301 capela 3648 // Custom display options...
302     resetCustomColorThemes(m_pOptions->sCustomColorTheme);
303     resetCustomStyleThemes(m_pOptions->sCustomStyleTheme);
304    
305 capela 1509 // Done.
306     m_iDirtySetup--;
307     stabilizeForm();
308 schoenebeck 1461 }
309    
310    
311     // Accept settings (OK button slot).
312     void OptionsForm::accept (void)
313     {
314 capela 1509 // Save options...
315     if (m_iDirtyCount > 0) {
316     // Server settings....
317     m_pOptions->sServerHost = m_ui.ServerHostComboBox->currentText().trimmed();
318     m_pOptions->iServerPort = m_ui.ServerPortComboBox->currentText().toInt();
319     m_pOptions->iServerTimeout = m_ui.ServerTimeoutSpinBox->value();
320     m_pOptions->bServerStart = m_ui.ServerStartCheckBox->isChecked();
321     m_pOptions->sServerCmdLine = m_ui.ServerCmdLineComboBox->currentText().trimmed();
322 capela 1738 m_pOptions->iStartDelay = m_ui.StartDelaySpinBox->value();
323     // Logging options...
324     m_pOptions->bMessagesLog = m_ui.MessagesLogCheckBox->isChecked();
325     m_pOptions->sMessagesLogPath = m_ui.MessagesLogPathComboBox->currentText();
326 capela 1509 // Channels options...
327     m_pOptions->sDisplayFont = m_ui.DisplayFontTextLabel->font().toString();
328     m_pOptions->bDisplayEffect = m_ui.DisplayEffectCheckBox->isChecked();
329     m_pOptions->bAutoRefresh = m_ui.AutoRefreshCheckBox->isChecked();
330     m_pOptions->iAutoRefreshTime = m_ui.AutoRefreshTimeSpinBox->value();
331     m_pOptions->iMaxVolume = m_ui.MaxVolumeSpinBox->value();
332     // Messages options...
333     m_pOptions->sMessagesFont = m_ui.MessagesFontTextLabel->font().toString();
334     m_pOptions->bMessagesLimit = m_ui.MessagesLimitCheckBox->isChecked();
335     m_pOptions->iMessagesLimitLines = m_ui.MessagesLimitLinesSpinBox->value();
336     // Other options...
337     m_pOptions->bConfirmRemove = m_ui.ConfirmRemoveCheckBox->isChecked();
338 capela 2722 m_pOptions->bConfirmRestart = m_ui.ConfirmRestartCheckBox->isChecked();
339     m_pOptions->bConfirmReset = m_ui.ConfirmResetCheckBox->isChecked();
340     m_pOptions->bConfirmError = m_ui.ConfirmErrorCheckBox->isChecked();
341 capela 1509 m_pOptions->bKeepOnTop = m_ui.KeepOnTopCheckBox->isChecked();
342     m_pOptions->bStdoutCapture = m_ui.StdoutCaptureCheckBox->isChecked();
343     m_pOptions->bCompletePath = m_ui.CompletePathCheckBox->isChecked();
344     m_pOptions->bInstrumentNames = m_ui.InstrumentNamesCheckBox->isChecked();
345     m_pOptions->iMaxRecentFiles = m_ui.MaxRecentFilesSpinBox->value();
346 capela 1749 m_pOptions->iBaseFontSize = m_ui.BaseFontSizeComboBox->currentText().toInt();
347 capela 3648 // Custom color/style theme options...
348     if (m_ui.CustomStyleThemeComboBox->currentIndex() > 0)
349     m_pOptions->sCustomStyleTheme = m_ui.CustomStyleThemeComboBox->currentText();
350     else
351     m_pOptions->sCustomStyleTheme.clear();
352     if (m_ui.CustomColorThemeComboBox->currentIndex() > 0)
353     m_pOptions->sCustomColorTheme = m_ui.CustomColorThemeComboBox->currentText();
354     else
355     m_pOptions->sCustomColorTheme.clear();
356 capela 1509 // Reset dirty flag.
357     m_iDirtyCount = 0;
358     }
359 schoenebeck 1461
360 capela 3761 // If the user modified the limits, apply them to the sampler
361 schoenebeck 1803 // (and store it later in qsampler's configuration)
362     if (bMaxVoicesModified && m_ui.MaxVoicesSpinBox->isEnabled())
363     m_pOptions->setMaxVoices(m_ui.MaxVoicesSpinBox->value());
364     if (bMaxStreamsModified && m_ui.MaxStreamsSpinBox->isEnabled())
365     m_pOptions->setMaxStreams(m_ui.MaxStreamsSpinBox->value());
366    
367 capela 1509 // Save combobox history...
368     m_pOptions->saveComboBoxHistory(m_ui.ServerHostComboBox);
369     m_pOptions->saveComboBoxHistory(m_ui.ServerPortComboBox);
370     m_pOptions->saveComboBoxHistory(m_ui.ServerCmdLineComboBox);
371 capela 1738 m_pOptions->saveComboBoxHistory(m_ui.MessagesLogPathComboBox);
372 schoenebeck 1461
373 capela 2028 // Save/commit to disk.
374     m_pOptions->saveOptions();
375    
376 capela 1509 // Just go with dialog acceptance.
377     QDialog::accept();
378 schoenebeck 1461 }
379    
380    
381     // Reject settings (Cancel button slot).
382     void OptionsForm::reject (void)
383     {
384 capela 1509 bool bReject = true;
385 schoenebeck 1461
386 capela 1509 // Check if there's any pending changes...
387     if (m_iDirtyCount > 0) {
388     switch (QMessageBox::warning(this,
389 capela 3559 tr("Warning"),
390 capela 1509 tr("Some settings have been changed.\n\n"
391     "Do you want to apply the changes?"),
392 capela 1840 QMessageBox::Apply |
393     QMessageBox::Discard |
394     QMessageBox::Cancel)) {
395     case QMessageBox::Apply:
396 capela 1509 accept();
397     return;
398 capela 1840 case QMessageBox::Discard:
399 capela 1509 break;
400     default: // Cancel.
401     bReject = false;
402     }
403     }
404 schoenebeck 1461
405 capela 1509 if (bReject)
406     QDialog::reject();
407 schoenebeck 1461 }
408    
409    
410     // Dirty up settings.
411     void OptionsForm::optionsChanged (void)
412     {
413 capela 1509 if (m_iDirtySetup > 0)
414     return;
415 schoenebeck 1461
416 capela 1509 m_iDirtyCount++;
417     stabilizeForm();
418 schoenebeck 1461 }
419    
420    
421     // Stabilize current form state.
422     void OptionsForm::stabilizeForm (void)
423     {
424 capela 1738 bool bValid = (m_iDirtyCount > 0);
425    
426 capela 1509 bool bEnabled = m_ui.ServerStartCheckBox->isChecked();
427     m_ui.ServerCmdLineTextLabel->setEnabled(bEnabled);
428     m_ui.ServerCmdLineComboBox->setEnabled(bEnabled);
429     m_ui.StartDelayTextLabel->setEnabled(bEnabled);
430     m_ui.StartDelaySpinBox->setEnabled(bEnabled);
431 schoenebeck 1461
432 capela 1738 bEnabled = m_ui.MessagesLogCheckBox->isChecked();
433     m_ui.MessagesLogPathComboBox->setEnabled(bEnabled);
434     m_ui.MessagesLogPathToolButton->setEnabled(bEnabled);
435     if (bEnabled && bValid) {
436     const QString& sPath = m_ui.MessagesLogPathComboBox->currentText();
437     bValid = !sPath.isEmpty();
438     }
439    
440 capela 1509 m_ui.AutoRefreshTimeSpinBox->setEnabled(
441     m_ui.AutoRefreshCheckBox->isChecked());
442     m_ui.MessagesLimitLinesSpinBox->setEnabled(
443     m_ui.MessagesLimitCheckBox->isChecked());
444 schoenebeck 1461
445 capela 2107 m_ui.DialogButtonBox->button(QDialogButtonBox::Ok)->setEnabled(bValid);
446 schoenebeck 1461 }
447    
448    
449 capela 1738 // Messages log path browse slot.
450     void OptionsForm::browseMessagesLogPath (void)
451     {
452     QString sFileName = QFileDialog::getSaveFileName(
453     this, // Parent.
454     tr("Messages Log"), // Caption.
455     m_ui.MessagesLogPathComboBox->currentText(), // Start here.
456     tr("Log files") + " (*.log)" // Filter (log files)
457     );
458    
459     if (!sFileName.isEmpty()) {
460     m_ui.MessagesLogPathComboBox->setEditText(sFileName);
461     m_ui.MessagesLogPathComboBox->setFocus();
462     optionsChanged();
463     }
464     }
465    
466    
467 schoenebeck 1461 // The channel display font selection dialog.
468     void OptionsForm::chooseDisplayFont (void)
469     {
470 capela 1509 bool bOk = false;
471     QFont font = QFontDialog::getFont(&bOk,
472     m_ui.DisplayFontTextLabel->font(), this);
473     if (bOk) {
474     m_ui.DisplayFontTextLabel->setFont(font);
475     m_ui.DisplayFontTextLabel->setText(font.family()
476     + ' ' + QString::number(font.pointSize()));
477     optionsChanged();
478     }
479 schoenebeck 1461 }
480    
481    
482     // The messages font selection dialog.
483     void OptionsForm::chooseMessagesFont (void)
484     {
485 capela 1509 bool bOk = false;
486     QFont font = QFontDialog::getFont(&bOk,
487     m_ui.MessagesFontTextLabel->font(), this);
488     if (bOk) {
489     m_ui.MessagesFontTextLabel->setFont(font);
490     m_ui.MessagesFontTextLabel->setText(font.family()
491     + ' ' + QString::number(font.pointSize()));
492     optionsChanged();
493     }
494 schoenebeck 1461 }
495    
496    
497     // The channel display effect demo changer.
498     void OptionsForm::toggleDisplayEffect ( bool bOn )
499     {
500 capela 1499 QPalette pal;
501     pal.setColor(QPalette::Foreground, Qt::green);
502     if (bOn) {
503 capela 2074 QPixmap pm(":/images/displaybg1.png");
504 capela 1499 pal.setBrush(QPalette::Background, QBrush(pm));
505     } else {
506     pal.setColor(QPalette::Background, Qt::black);
507     }
508 capela 1509 m_ui.DisplayFontTextLabel->setPalette(pal);
509 schoenebeck 1461
510 capela 1499 optionsChanged();
511 schoenebeck 1461 }
512    
513 schoenebeck 1803 void OptionsForm::maxVoicesChanged(int /*iMaxVoices*/)
514     {
515     bMaxVoicesModified = true;
516     optionsChanged();
517     }
518    
519     void OptionsForm::maxStreamsChanged(int /*iMaxStreams*/)
520     {
521     bMaxStreamsModified = true;
522     optionsChanged();
523     }
524    
525 capela 3648
526     // Custom color palette theme manager.
527     void OptionsForm::editCustomColorThemes (void)
528     {
529     PaletteForm form(this);
530     form.setSettings(&m_pOptions->settings());
531    
532     QString sCustomColorTheme;
533     int iDirtyCustomColorTheme = 0;
534    
535     const int iCustomColorTheme
536     = m_ui.CustomColorThemeComboBox->currentIndex();
537     if (iCustomColorTheme > 0) {
538     sCustomColorTheme = m_ui.CustomColorThemeComboBox->itemText(
539     iCustomColorTheme);
540     form.setPaletteName(sCustomColorTheme);
541     }
542    
543     if (form.exec() == QDialog::Accepted) {
544     sCustomColorTheme = form.paletteName();
545     ++iDirtyCustomColorTheme;
546     }
547    
548     if (iDirtyCustomColorTheme > 0 || form.isDirty()) {
549     resetCustomColorThemes(sCustomColorTheme);
550     optionsChanged();
551     }
552     }
553    
554    
555     // Custom color palette themes settler.
556     void OptionsForm::resetCustomColorThemes (
557     const QString& sCustomColorTheme )
558     {
559     m_ui.CustomColorThemeComboBox->clear();
560     m_ui.CustomColorThemeComboBox->addItem(
561     tr(g_pszDefName));
562     m_ui.CustomColorThemeComboBox->addItems(
563     PaletteForm::namedPaletteList(&m_pOptions->settings()));
564    
565     int iCustomColorTheme = 0;
566 capela 3649 if (!sCustomColorTheme.isEmpty()) {
567 capela 3648 iCustomColorTheme = m_ui.CustomColorThemeComboBox->findText(
568     sCustomColorTheme);
569 capela 3649 if (iCustomColorTheme < 0)
570     iCustomColorTheme = 0;
571     }
572 capela 3648 m_ui.CustomColorThemeComboBox->setCurrentIndex(iCustomColorTheme);
573     }
574    
575    
576     // Custom widget style themes settler.
577     void OptionsForm::resetCustomStyleThemes (
578     const QString& sCustomStyleTheme )
579     {
580     m_ui.CustomStyleThemeComboBox->clear();
581     m_ui.CustomStyleThemeComboBox->addItem(
582     tr(g_pszDefName));
583     m_ui.CustomStyleThemeComboBox->addItems(QStyleFactory::keys());
584    
585     int iCustomStyleTheme = 0;
586 capela 3649 if (!sCustomStyleTheme.isEmpty()) {
587 capela 3648 iCustomStyleTheme = m_ui.CustomStyleThemeComboBox->findText(
588     sCustomStyleTheme);
589 capela 3649 if (iCustomStyleTheme < 0)
590     iCustomStyleTheme = 0;
591     }
592 capela 3648 m_ui.CustomStyleThemeComboBox->setCurrentIndex(iCustomStyleTheme);
593     }
594    
595    
596 schoenebeck 1461 } // namespace QSampler
597 capela 1464
598 capela 1466 // end of qsamplerOptionsForm.cpp

  ViewVC Help
Powered by ViewVC