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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC