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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC