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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1558 by capela, Thu Dec 6 09:35:33 2007 UTC revision 3555 by capela, Tue Aug 13 10:19:32 2019 UTC
# Line 1  Line 1 
1  // qsamplerOptionsForm.cpp  // qsamplerOptionsForm.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2019, rncbc aka Rui Nuno Capela. All rights reserved.
5     Copyright (C) 2007, Christian Schoenebeck     Copyright (C) 2007, Christian Schoenebeck
6    
7     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
# Line 27  Line 27 
27    
28  #include <QMessageBox>  #include <QMessageBox>
29  #include <QFontDialog>  #include <QFontDialog>
30    #include <QFileDialog>
31    
32    
33  namespace QSampler {  namespace QSampler {
# Line 41  OptionsForm::OptionsForm ( QWidget* pPar Line 42  OptionsForm::OptionsForm ( QWidget* pPar
42          m_ui.setupUi(this);          m_ui.setupUi(this);
43    
44          // No settings descriptor initially (the caller will set it).          // No settings descriptor initially (the caller will set it).
45          m_pOptions = NULL;          m_pOptions = nullptr;
46    
47          // Initialize dirty control state.          // Initialize dirty control state.
48          m_iDirtySetup = 0;          m_iDirtySetup = 0;
# Line 72  OptionsForm::OptionsForm ( QWidget* pPar Line 73  OptionsForm::OptionsForm ( QWidget* pPar
73          QObject::connect(m_ui.StartDelaySpinBox,          QObject::connect(m_ui.StartDelaySpinBox,
74                  SIGNAL(valueChanged(int)),                  SIGNAL(valueChanged(int)),
75                  SLOT(optionsChanged()));                  SLOT(optionsChanged()));
76            QObject::connect(m_ui.MessagesLogCheckBox,
77                    SIGNAL(stateChanged(int)),
78                    SLOT(optionsChanged()));
79            QObject::connect(m_ui.MessagesLogPathComboBox,
80                    SIGNAL(editTextChanged(const QString&)),
81                    SLOT(optionsChanged()));
82            QObject::connect(m_ui.MessagesLogPathToolButton,
83                    SIGNAL(clicked()),
84                    SLOT(browseMessagesLogPath()));
85          QObject::connect(m_ui.DisplayFontPushButton,          QObject::connect(m_ui.DisplayFontPushButton,
86                  SIGNAL(clicked()),                  SIGNAL(clicked()),
87                  SLOT(chooseDisplayFont()));                  SLOT(chooseDisplayFont()));
# Line 99  OptionsForm::OptionsForm ( QWidget* pPar Line 109  OptionsForm::OptionsForm ( QWidget* pPar
109          QObject::connect(m_ui.ConfirmRemoveCheckBox,          QObject::connect(m_ui.ConfirmRemoveCheckBox,
110                  SIGNAL(stateChanged(int)),                  SIGNAL(stateChanged(int)),
111                  SLOT(optionsChanged()));                  SLOT(optionsChanged()));
112            QObject::connect(m_ui.ConfirmResetCheckBox,
113                    SIGNAL(stateChanged(int)),
114                    SLOT(optionsChanged()));
115            QObject::connect(m_ui.ConfirmRestartCheckBox,
116                    SIGNAL(stateChanged(int)),
117                    SLOT(optionsChanged()));
118            QObject::connect(m_ui.ConfirmErrorCheckBox,
119                    SIGNAL(stateChanged(int)),
120                    SLOT(optionsChanged()));
121          QObject::connect(m_ui.KeepOnTopCheckBox,          QObject::connect(m_ui.KeepOnTopCheckBox,
122                  SIGNAL(stateChanged(int)),                  SIGNAL(stateChanged(int)),
123                  SLOT(optionsChanged()));                  SLOT(optionsChanged()));
# Line 114  OptionsForm::OptionsForm ( QWidget* pPar Line 133  OptionsForm::OptionsForm ( QWidget* pPar
133          QObject::connect(m_ui.InstrumentNamesCheckBox,          QObject::connect(m_ui.InstrumentNamesCheckBox,
134                  SIGNAL(stateChanged(int)),                  SIGNAL(stateChanged(int)),
135                  SLOT(optionsChanged()));                  SLOT(optionsChanged()));
136          QObject::connect(m_ui.OkPushButton,          QObject::connect(m_ui.BaseFontSizeComboBox,
137                  SIGNAL(clicked()),                  SIGNAL(editTextChanged(const QString&)),
138                    SLOT(optionsChanged()));
139            QObject::connect(m_ui.MaxVoicesSpinBox,
140                    SIGNAL(valueChanged(int)),
141                    SLOT(maxVoicesChanged(int)));
142            QObject::connect(m_ui.MaxStreamsSpinBox,
143                    SIGNAL(valueChanged(int)),
144                    SLOT(maxStreamsChanged(int)));
145            QObject::connect(m_ui.DialogButtonBox,
146                    SIGNAL(accepted()),
147                  SLOT(accept()));                  SLOT(accept()));
148          QObject::connect(m_ui.CancelPushButton,          QObject::connect(m_ui.DialogButtonBox,
149                  SIGNAL(clicked()),                  SIGNAL(rejected()),
150                  SLOT(reject()));                  SLOT(reject()));
151  }  }
152    
# Line 141  void OptionsForm::setup ( Options *pOpti Line 169  void OptionsForm::setup ( Options *pOpti
169          m_pOptions->loadComboBoxHistory(m_ui.ServerHostComboBox);          m_pOptions->loadComboBoxHistory(m_ui.ServerHostComboBox);
170          m_pOptions->loadComboBoxHistory(m_ui.ServerPortComboBox);          m_pOptions->loadComboBoxHistory(m_ui.ServerPortComboBox);
171          m_pOptions->loadComboBoxHistory(m_ui.ServerCmdLineComboBox);          m_pOptions->loadComboBoxHistory(m_ui.ServerCmdLineComboBox);
172            m_pOptions->loadComboBoxHistory(m_ui.MessagesLogPathComboBox);
173    
174          // Load Server settings...          // Load Server settings...
175          m_ui.ServerHostComboBox->setEditText(m_pOptions->sServerHost);          m_ui.ServerHostComboBox->setEditText(m_pOptions->sServerHost);
# Line 150  void OptionsForm::setup ( Options *pOpti Line 179  void OptionsForm::setup ( Options *pOpti
179          m_ui.ServerCmdLineComboBox->setEditText(m_pOptions->sServerCmdLine);          m_ui.ServerCmdLineComboBox->setEditText(m_pOptions->sServerCmdLine);
180          m_ui.StartDelaySpinBox->setValue(m_pOptions->iStartDelay);          m_ui.StartDelaySpinBox->setValue(m_pOptions->iStartDelay);
181    
182            // Logging options...
183            m_ui.MessagesLogCheckBox->setChecked(m_pOptions->bMessagesLog);
184            m_ui.MessagesLogPathComboBox->setEditText(m_pOptions->sMessagesLogPath);
185    
186          // Load Display options...          // Load Display options...
187          QFont font;          QFont font;
188          QPalette pal;          QPalette pal;
# Line 174  void OptionsForm::setup ( Options *pOpti Line 207  void OptionsForm::setup ( Options *pOpti
207          // Messages font.          // Messages font.
208          if (m_pOptions->sMessagesFont.isEmpty()          if (m_pOptions->sMessagesFont.isEmpty()
209                  || !font.fromString(m_pOptions->sMessagesFont))                  || !font.fromString(m_pOptions->sMessagesFont))
210                  font = QFont("Fixed", 8);                  font = QFont("Monospace", 8);
211          pal = m_ui.MessagesFontTextLabel->palette();          pal = m_ui.MessagesFontTextLabel->palette();
212          pal.setColor(QPalette::Background, Qt::white);          pal.setColor(QPalette::Background, pal.base().color());
213          m_ui.MessagesFontTextLabel->setPalette(pal);          m_ui.MessagesFontTextLabel->setPalette(pal);
214          m_ui.MessagesFontTextLabel->setFont(font);          m_ui.MessagesFontTextLabel->setFont(font);
215          m_ui.MessagesFontTextLabel->setText(font.family()          m_ui.MessagesFontTextLabel->setText(font.family()
# Line 188  void OptionsForm::setup ( Options *pOpti Line 221  void OptionsForm::setup ( Options *pOpti
221    
222          // Other options finally.          // Other options finally.
223          m_ui.ConfirmRemoveCheckBox->setChecked(m_pOptions->bConfirmRemove);          m_ui.ConfirmRemoveCheckBox->setChecked(m_pOptions->bConfirmRemove);
224            m_ui.ConfirmRestartCheckBox->setChecked(m_pOptions->bConfirmRestart);
225            m_ui.ConfirmResetCheckBox->setChecked(m_pOptions->bConfirmReset);
226            m_ui.ConfirmErrorCheckBox->setChecked(m_pOptions->bConfirmError);
227          m_ui.KeepOnTopCheckBox->setChecked(m_pOptions->bKeepOnTop);          m_ui.KeepOnTopCheckBox->setChecked(m_pOptions->bKeepOnTop);
228          m_ui.StdoutCaptureCheckBox->setChecked(m_pOptions->bStdoutCapture);          m_ui.StdoutCaptureCheckBox->setChecked(m_pOptions->bStdoutCapture);
229          m_ui.CompletePathCheckBox->setChecked(m_pOptions->bCompletePath);          m_ui.CompletePathCheckBox->setChecked(m_pOptions->bCompletePath);
230          m_ui.InstrumentNamesCheckBox->setChecked(m_pOptions->bInstrumentNames);          m_ui.InstrumentNamesCheckBox->setChecked(m_pOptions->bInstrumentNames);
231          m_ui.MaxRecentFilesSpinBox->setValue(m_pOptions->iMaxRecentFiles);          m_ui.MaxRecentFilesSpinBox->setValue(m_pOptions->iMaxRecentFiles);
232            if (m_pOptions->iBaseFontSize > 0)
233                    m_ui.BaseFontSizeComboBox->setEditText(QString::number(m_pOptions->iBaseFontSize));
234            else
235                    m_ui.BaseFontSizeComboBox->setCurrentIndex(0);
236    
237  #ifndef CONFIG_LIBGIG  #ifndef CONFIG_LIBGIG
238          m_ui.InstrumentNamesCheckBox->setEnabled(false);          m_ui.InstrumentNamesCheckBox->setEnabled(false);
239  #endif  #endif
240    
241            bMaxVoicesModified = bMaxStreamsModified = false;
242    #ifdef CONFIG_MAX_VOICES
243            const bool bMaxVoicesSupported =
244                    m_pOptions->getEffectiveMaxVoices() >= 0;
245            const bool bMaxStreamsSupported =
246                    m_pOptions->getEffectiveMaxStreams() >= 0;
247    
248            m_ui.MaxVoicesSpinBox->setEnabled(bMaxVoicesSupported);
249            m_ui.MaxVoicesSpinBox->setValue(m_pOptions->getMaxVoices());
250            if (!bMaxVoicesSupported)
251                    m_ui.MaxVoicesSpinBox->setToolTip(
252                            tr("This parameter is not supported by the current sampler "
253                               "version in use.")
254                    );
255            else
256                    m_ui.MaxVoicesSpinBox->setToolTip(
257                            tr("The max. amount of voices the sampler shall process "
258                               "simultaneously.")
259                    );
260    
261            m_ui.MaxStreamsSpinBox->setEnabled(bMaxStreamsSupported);
262            m_ui.MaxStreamsSpinBox->setValue(m_pOptions->getMaxStreams());
263            if (!bMaxStreamsSupported)
264                    m_ui.MaxStreamsSpinBox->setToolTip(
265                            tr("This parameter is not supported by the current sampler "
266                               "version in use.")
267                    );
268            else
269                    m_ui.MaxStreamsSpinBox->setToolTip(
270                            tr("The max. amount of disk streams the sampler shall process "
271                               "simultaneously.")
272                    );
273    #else
274            m_ui.MaxVoicesSpinBox->setEnabled(false);
275            m_ui.MaxStreamsSpinBox->setEnabled(false);
276            m_ui.MaxVoicesSpinBox->setToolTip(
277                    tr("QSampler was built without support for this parameter.")
278            );
279            m_ui.MaxStreamsSpinBox->setToolTip(
280                    tr("QSampler was built without support for this parameter.")
281            );
282    #endif // CONFIG_MAX_VOICES
283    
284          // Done.          // Done.
285          m_iDirtySetup--;          m_iDirtySetup--;
286          stabilizeForm();          stabilizeForm();
# Line 215  void OptionsForm::accept (void) Line 298  void OptionsForm::accept (void)
298                  m_pOptions->iServerTimeout = m_ui.ServerTimeoutSpinBox->value();                  m_pOptions->iServerTimeout = m_ui.ServerTimeoutSpinBox->value();
299                  m_pOptions->bServerStart   = m_ui.ServerStartCheckBox->isChecked();                  m_pOptions->bServerStart   = m_ui.ServerStartCheckBox->isChecked();
300                  m_pOptions->sServerCmdLine = m_ui.ServerCmdLineComboBox->currentText().trimmed();                  m_pOptions->sServerCmdLine = m_ui.ServerCmdLineComboBox->currentText().trimmed();
301                  m_pOptions->iStartDelay      = m_ui.StartDelaySpinBox->value();                  m_pOptions->iStartDelay    = m_ui.StartDelaySpinBox->value();
302                    // Logging options...
303                    m_pOptions->bMessagesLog   = m_ui.MessagesLogCheckBox->isChecked();
304                    m_pOptions->sMessagesLogPath = m_ui.MessagesLogPathComboBox->currentText();
305                  // Channels options...                  // Channels options...
306                  m_pOptions->sDisplayFont   = m_ui.DisplayFontTextLabel->font().toString();                  m_pOptions->sDisplayFont   = m_ui.DisplayFontTextLabel->font().toString();
307                  m_pOptions->bDisplayEffect = m_ui.DisplayEffectCheckBox->isChecked();                  m_pOptions->bDisplayEffect = m_ui.DisplayEffectCheckBox->isChecked();
# Line 228  void OptionsForm::accept (void) Line 314  void OptionsForm::accept (void)
314                  m_pOptions->iMessagesLimitLines = m_ui.MessagesLimitLinesSpinBox->value();                  m_pOptions->iMessagesLimitLines = m_ui.MessagesLimitLinesSpinBox->value();
315                  // Other options...                  // Other options...
316                  m_pOptions->bConfirmRemove = m_ui.ConfirmRemoveCheckBox->isChecked();                  m_pOptions->bConfirmRemove = m_ui.ConfirmRemoveCheckBox->isChecked();
317                    m_pOptions->bConfirmRestart = m_ui.ConfirmRestartCheckBox->isChecked();
318                    m_pOptions->bConfirmReset  = m_ui.ConfirmResetCheckBox->isChecked();
319                    m_pOptions->bConfirmError  = m_ui.ConfirmErrorCheckBox->isChecked();
320                  m_pOptions->bKeepOnTop     = m_ui.KeepOnTopCheckBox->isChecked();                  m_pOptions->bKeepOnTop     = m_ui.KeepOnTopCheckBox->isChecked();
321                  m_pOptions->bStdoutCapture = m_ui.StdoutCaptureCheckBox->isChecked();                  m_pOptions->bStdoutCapture = m_ui.StdoutCaptureCheckBox->isChecked();
322                  m_pOptions->bCompletePath  = m_ui.CompletePathCheckBox->isChecked();                  m_pOptions->bCompletePath  = m_ui.CompletePathCheckBox->isChecked();
323                  m_pOptions->bInstrumentNames = m_ui.InstrumentNamesCheckBox->isChecked();                  m_pOptions->bInstrumentNames = m_ui.InstrumentNamesCheckBox->isChecked();
324                  m_pOptions->iMaxRecentFiles  = m_ui.MaxRecentFilesSpinBox->value();                  m_pOptions->iMaxRecentFiles  = m_ui.MaxRecentFilesSpinBox->value();
325                    m_pOptions->iBaseFontSize  = m_ui.BaseFontSizeComboBox->currentText().toInt();
326                  // Reset dirty flag.                  // Reset dirty flag.
327                  m_iDirtyCount = 0;                  m_iDirtyCount = 0;
328          }          }
329    
330            // if the user modified the limits, apply them to the sampler
331            // (and store it later in qsampler's configuration)
332            if (bMaxVoicesModified && m_ui.MaxVoicesSpinBox->isEnabled())
333                    m_pOptions->setMaxVoices(m_ui.MaxVoicesSpinBox->value());
334            if (bMaxStreamsModified && m_ui.MaxStreamsSpinBox->isEnabled())
335                    m_pOptions->setMaxStreams(m_ui.MaxStreamsSpinBox->value());
336    
337          // Save combobox history...          // Save combobox history...
338          m_pOptions->saveComboBoxHistory(m_ui.ServerHostComboBox);          m_pOptions->saveComboBoxHistory(m_ui.ServerHostComboBox);
339          m_pOptions->saveComboBoxHistory(m_ui.ServerPortComboBox);          m_pOptions->saveComboBoxHistory(m_ui.ServerPortComboBox);
340          m_pOptions->saveComboBoxHistory(m_ui.ServerCmdLineComboBox);          m_pOptions->saveComboBoxHistory(m_ui.ServerCmdLineComboBox);
341            m_pOptions->saveComboBoxHistory(m_ui.MessagesLogPathComboBox);
342    
343            // Save/commit to disk.
344            m_pOptions->saveOptions();
345    
346          // Just go with dialog acceptance.          // Just go with dialog acceptance.
347          QDialog::accept();          QDialog::accept();
# Line 258  void OptionsForm::reject (void) Line 359  void OptionsForm::reject (void)
359                          QSAMPLER_TITLE ": " + tr("Warning"),                          QSAMPLER_TITLE ": " + tr("Warning"),
360                          tr("Some settings have been changed.\n\n"                          tr("Some settings have been changed.\n\n"
361                          "Do you want to apply the changes?"),                          "Do you want to apply the changes?"),
362                          tr("Apply"), tr("Discard"), tr("Cancel"))) {                          QMessageBox::Apply |
363                  case 0:     // Apply...                          QMessageBox::Discard |
364                            QMessageBox::Cancel)) {
365                    case QMessageBox::Apply:
366                          accept();                          accept();
367                          return;                          return;
368                  case 1:     // Discard                  case QMessageBox::Discard:
369                          break;                          break;
370                  default:    // Cancel.                  default:    // Cancel.
371                          bReject = false;                          bReject = false;
# Line 288  void OptionsForm::optionsChanged (void) Line 391  void OptionsForm::optionsChanged (void)
391  // Stabilize current form state.  // Stabilize current form state.
392  void OptionsForm::stabilizeForm (void)  void OptionsForm::stabilizeForm (void)
393  {  {
394            bool bValid = (m_iDirtyCount > 0);
395    
396          bool bEnabled = m_ui.ServerStartCheckBox->isChecked();          bool bEnabled = m_ui.ServerStartCheckBox->isChecked();
397          m_ui.ServerCmdLineTextLabel->setEnabled(bEnabled);          m_ui.ServerCmdLineTextLabel->setEnabled(bEnabled);
398          m_ui.ServerCmdLineComboBox->setEnabled(bEnabled);          m_ui.ServerCmdLineComboBox->setEnabled(bEnabled);
399          m_ui.StartDelayTextLabel->setEnabled(bEnabled);          m_ui.StartDelayTextLabel->setEnabled(bEnabled);
400          m_ui.StartDelaySpinBox->setEnabled(bEnabled);          m_ui.StartDelaySpinBox->setEnabled(bEnabled);
401    
402            bEnabled = m_ui.MessagesLogCheckBox->isChecked();
403            m_ui.MessagesLogPathComboBox->setEnabled(bEnabled);
404            m_ui.MessagesLogPathToolButton->setEnabled(bEnabled);
405            if (bEnabled && bValid) {
406                    const QString& sPath = m_ui.MessagesLogPathComboBox->currentText();
407                    bValid = !sPath.isEmpty();
408            }
409    
410          m_ui.AutoRefreshTimeSpinBox->setEnabled(          m_ui.AutoRefreshTimeSpinBox->setEnabled(
411                  m_ui.AutoRefreshCheckBox->isChecked());                  m_ui.AutoRefreshCheckBox->isChecked());
412          m_ui.MessagesLimitLinesSpinBox->setEnabled(          m_ui.MessagesLimitLinesSpinBox->setEnabled(
413                  m_ui.MessagesLimitCheckBox->isChecked());                  m_ui.MessagesLimitCheckBox->isChecked());
414    
415          m_ui.OkPushButton->setEnabled(m_iDirtyCount > 0);          m_ui.DialogButtonBox->button(QDialogButtonBox::Ok)->setEnabled(bValid);
416    }
417    
418    
419    // Messages log path browse slot.
420    void OptionsForm::browseMessagesLogPath (void)
421    {
422            QString sFileName = QFileDialog::getSaveFileName(
423                    this,                                                                                   // Parent.
424                    tr("Messages Log"),                                             // Caption.
425                    m_ui.MessagesLogPathComboBox->currentText(),    // Start here.
426                    tr("Log files") + " (*.log)"                    // Filter (log files)
427            );
428    
429            if (!sFileName.isEmpty()) {
430                    m_ui.MessagesLogPathComboBox->setEditText(sFileName);
431                    m_ui.MessagesLogPathComboBox->setFocus();
432                    optionsChanged();
433            }
434  }  }
435    
436    
# Line 339  void OptionsForm::toggleDisplayEffect ( Line 470  void OptionsForm::toggleDisplayEffect (
470          QPalette pal;          QPalette pal;
471          pal.setColor(QPalette::Foreground, Qt::green);          pal.setColor(QPalette::Foreground, Qt::green);
472          if (bOn) {          if (bOn) {
473                  QPixmap pm(":/icons/displaybg1.png");                  QPixmap pm(":/images/displaybg1.png");
474                  pal.setBrush(QPalette::Background, QBrush(pm));                  pal.setBrush(QPalette::Background, QBrush(pm));
475          } else {          } else {
476                  pal.setColor(QPalette::Background, Qt::black);                  pal.setColor(QPalette::Background, Qt::black);
# Line 349  void OptionsForm::toggleDisplayEffect ( Line 480  void OptionsForm::toggleDisplayEffect (
480          optionsChanged();          optionsChanged();
481  }  }
482    
483  } // namespace QSampler  void OptionsForm::maxVoicesChanged(int /*iMaxVoices*/)
484    {
485            bMaxVoicesModified = true;
486            optionsChanged();
487    }
488    
489    void OptionsForm::maxStreamsChanged(int /*iMaxStreams*/)
490    {
491            bMaxStreamsModified = true;
492            optionsChanged();
493    }
494    
495    } // namespace QSampler
496    
497  // end of qsamplerOptionsForm.cpp  // end of qsamplerOptionsForm.cpp

Legend:
Removed from v.1558  
changed lines
  Added in v.3555

  ViewVC Help
Powered by ViewVC