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

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

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

revision 1509 by capela, Thu Nov 22 11:10:44 2007 UTC revision 2110 by capela, Sat Jul 17 12:21:01 2010 UTC
# Line 1  Line 1 
1  // qsamplerInstrumentForm.cpp  // qsamplerInstrumentForm.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2003-2007, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2003-2010, 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 20  Line 20 
20    
21  *****************************************************************************/  *****************************************************************************/
22    
23    #include "qsamplerAbout.h"
24  #include "qsamplerInstrumentForm.h"  #include "qsamplerInstrumentForm.h"
25    
26  #include "qsamplerAbout.h"  #include "qsamplerOptions.h"
27    #include "qsamplerChannel.h"
28  #include "qsamplerMainForm.h"  #include "qsamplerMainForm.h"
29    
 #include <QFileDialog>  
30  #include <QMessageBox>  #include <QMessageBox>
31    #include <QPushButton>
32    #include <QFileDialog>
33    
34  // Needed for lroundf()  // Needed for lroundf()
35  #include <math.h>  #include <math.h>
36    
   
 namespace QSampler {  
   
37  #ifndef CONFIG_ROUND  #ifndef CONFIG_ROUND
38  static inline long lroundf ( float x )  static inline long lroundf ( float x )
39  {  {
# Line 44  static inline long lroundf ( float x ) Line 44  static inline long lroundf ( float x )
44  }  }
45  #endif  #endif
46    
47  InstrumentForm::InstrumentForm ( QWidget* pParent )  
48    namespace QSampler {
49    
50    //-------------------------------------------------------------------------
51    // QSampler::InstrumentForm -- Instrument map item form implementation.
52    //
53    
54    InstrumentForm::InstrumentForm ( QWidget *pParent )
55          : QDialog(pParent)          : QDialog(pParent)
56  {  {
57          m_ui.setupUi(this);          m_ui.setupUi(this);
# Line 90  InstrumentForm::InstrumentForm ( QWidget Line 97  InstrumentForm::InstrumentForm ( QWidget
97          QObject::connect(m_ui.LoadModeComboBox,          QObject::connect(m_ui.LoadModeComboBox,
98                  SIGNAL(activated(int)),                  SIGNAL(activated(int)),
99                  SLOT(changed()));                  SLOT(changed()));
100          QObject::connect(m_ui.OkPushButton,          QObject::connect(m_ui.DialogButtonBox,
101                  SIGNAL(clicked()),                  SIGNAL(accepted()),
102                  SLOT(accept()));                  SLOT(accept()));
103          QObject::connect(m_ui.CancelPushButton,          QObject::connect(m_ui.DialogButtonBox,
104                  SIGNAL(clicked()),                  SIGNAL(rejected()),
105                  SLOT(reject()));                  SLOT(reject()));
106  }  }
107    
# Line 105  InstrumentForm::~InstrumentForm (void) Line 112  InstrumentForm::~InstrumentForm (void)
112    
113    
114  // Channel dialog setup formal initializer.  // Channel dialog setup formal initializer.
115  void InstrumentForm::setup ( qsamplerInstrument *pInstrument )  void InstrumentForm::setup ( Instrument *pInstrument )
116  {  {
117          m_pInstrument = pInstrument;          m_pInstrument = pInstrument;
118    
# Line 123  void InstrumentForm::setup ( qsamplerIns Line 130  void InstrumentForm::setup ( qsamplerIns
130          if (pMainForm->client() == NULL)          if (pMainForm->client() == NULL)
131                  return;                  return;
132    
133          qsamplerOptions *pOptions = pMainForm->options();          Options *pOptions = pMainForm->options();
134          if (pOptions == NULL)          if (pOptions == NULL)
135                  return;                  return;
136    
# Line 142  void InstrumentForm::setup ( qsamplerIns Line 149  void InstrumentForm::setup ( qsamplerIns
149    
150          // Populate maps list.          // Populate maps list.
151          m_ui.MapComboBox->clear();          m_ui.MapComboBox->clear();
152          m_ui.MapComboBox->insertItems(0, qsamplerInstrument::getMapNames());          m_ui.MapComboBox->insertItems(0, Instrument::getMapNames());
153    
154          // Populate Engines list.          // Populate Engines list.
155          const char **ppszEngines          const char **ppszEngines
# Line 161  void InstrumentForm::setup ( qsamplerIns Line 168  void InstrumentForm::setup ( qsamplerIns
168          int iMap = (bNew ? pOptions->iMidiMap : m_pInstrument->map());          int iMap = (bNew ? pOptions->iMidiMap : m_pInstrument->map());
169          if (iMap < 0)          if (iMap < 0)
170                  iMap = 0;                  iMap = 0;
171          const QString& sMapName = qsamplerInstrument::getMapName(iMap);          const QString& sMapName = Instrument::getMapName(iMap);
172          if (!sMapName.isEmpty()) {          if (!sMapName.isEmpty()) {
173                  m_ui.MapComboBox->setItemText(                  m_ui.MapComboBox->setCurrentIndex(
174                          m_ui.MapComboBox->currentIndex(),                          m_ui.MapComboBox->findText(sMapName,
175                          sMapName);                                  Qt::MatchExactly | Qt::MatchCaseSensitive));
176          }          }
177    
178          // It might be no maps around...          // It might be no maps around...
179          bool bMapEnabled = (m_ui.MapComboBox->count() > 0);          bool bMapEnabled = (m_ui.MapComboBox->count() > 0);
180          m_ui.MapTextLabel->setEnabled(bMapEnabled);          m_ui.MapTextLabel->setEnabled(bMapEnabled);
# Line 190  void InstrumentForm::setup ( qsamplerIns Line 198  void InstrumentForm::setup ( qsamplerIns
198          if (sEngineName.isEmpty() || bNew)          if (sEngineName.isEmpty() || bNew)
199                  sEngineName = pOptions->sEngineName;                  sEngineName = pOptions->sEngineName;
200          if (sEngineName.isEmpty())          if (sEngineName.isEmpty())
201                  sEngineName = qsamplerChannel::noEngineName();                  sEngineName = Channel::noEngineName();
202          if (m_ui.EngineNameComboBox->findText(sEngineName,          if (m_ui.EngineNameComboBox->findText(sEngineName,
203                          Qt::MatchExactly | Qt::MatchCaseSensitive) < 0) {                          Qt::MatchExactly | Qt::MatchCaseSensitive) < 0) {
204                  m_ui.EngineNameComboBox->addItem(sEngineName);                  m_ui.EngineNameComboBox->addItem(sEngineName);
# Line 202  void InstrumentForm::setup ( qsamplerIns Line 210  void InstrumentForm::setup ( qsamplerIns
210          // Instrument filename and index...          // Instrument filename and index...
211          QString sInstrumentFile = m_pInstrument->instrumentFile();          QString sInstrumentFile = m_pInstrument->instrumentFile();
212          if (sInstrumentFile.isEmpty())          if (sInstrumentFile.isEmpty())
213                  sInstrumentFile = qsamplerChannel::noInstrumentName();                  sInstrumentFile = Channel::noInstrumentName();
214          m_ui.InstrumentFileComboBox->setEditText(sInstrumentFile);          m_ui.InstrumentFileComboBox->setEditText(sInstrumentFile);
215          m_ui.InstrumentNrComboBox->clear();          m_ui.InstrumentNrComboBox->clear();
216          m_ui.InstrumentNrComboBox->insertItems(0,          m_ui.InstrumentNrComboBox->insertItems(0,
217                  qsamplerChannel::getInstrumentList(sInstrumentFile,                  Channel::getInstrumentList(sInstrumentFile,
218                  pOptions->bInstrumentNames));                  pOptions->bInstrumentNames));
219          m_ui.InstrumentNrComboBox->setCurrentIndex(m_pInstrument->instrumentNr());          m_ui.InstrumentNrComboBox->setCurrentIndex(m_pInstrument->instrumentNr());
220    
# Line 223  void InstrumentForm::setup ( qsamplerIns Line 231  void InstrumentForm::setup ( qsamplerIns
231          // Done.          // Done.
232          m_iDirtySetup--;          m_iDirtySetup--;
233          stabilizeForm();          stabilizeForm();
   
         // Done.  
         m_iDirtySetup--;  
         stabilizeForm();  
234  }  }
235    
236    
# Line 248  void InstrumentForm::openInstrumentFile Line 252  void InstrumentForm::openInstrumentFile
252          if (pMainForm == NULL)          if (pMainForm == NULL)
253                  return;                  return;
254    
255          qsamplerOptions *pOptions = pMainForm->options();          Options *pOptions = pMainForm->options();
256          if (pOptions == NULL)          if (pOptions == NULL)
257                  return;                  return;
258    
259          // FIXME: the instrument file filters should be restricted,          // FIXME: the instrument file filters should be restricted,
260          // depending on the current engine.          // depending on the current engine.
261            const QString& sEngineName = m_ui.EngineNameComboBox->currentText().toUpper();
262            QStringList filters;
263            if (sEngineName.contains("GIG"))
264                    filters << tr("GIG Instrument files") + " (*.gig *.dls)";
265            if (sEngineName.contains("SFZ"))
266                    filters << tr("SFZ Instrument files") + " (*.sfz)";
267            if (sEngineName.contains("SF2"))
268                    filters << tr("SF2 Instrument files") + " (*.sf2)";
269            const QString& filter = filters.join(";;");
270    
271          QString sInstrumentFile = QFileDialog::getOpenFileName(this,          QString sInstrumentFile = QFileDialog::getOpenFileName(this,
272                  QSAMPLER_TITLE ": " + tr("Instrument files"), // Caption.                  QSAMPLER_TITLE ": " + tr("Instrument files"), // Caption.
273                  pOptions->sInstrumentDir,                 // Start here.                  pOptions->sInstrumentDir, // Start here.
274                  tr("Instrument files") + " (*.gig *.dls)" // Filter (GIG and DLS files)                  filter                    // File filter.
275          );          );
276    
277          if (sInstrumentFile.isEmpty())          if (sInstrumentFile.isEmpty())
# Line 275  void InstrumentForm::updateInstrumentNam Line 289  void InstrumentForm::updateInstrumentNam
289          if (pMainForm == NULL)          if (pMainForm == NULL)
290                  return;                  return;
291    
292          qsamplerOptions *pOptions = pMainForm->options();          Options *pOptions = pMainForm->options();
293          if (pOptions == NULL)          if (pOptions == NULL)
294                  return;                  return;
295    
# Line 283  void InstrumentForm::updateInstrumentNam Line 297  void InstrumentForm::updateInstrumentNam
297          // to retrieve the REAL instrument names.          // to retrieve the REAL instrument names.
298          m_ui.InstrumentNrComboBox->clear();          m_ui.InstrumentNrComboBox->clear();
299          m_ui.InstrumentNrComboBox->insertItems(0,          m_ui.InstrumentNrComboBox->insertItems(0,
300                  qsamplerChannel::getInstrumentList(                  Channel::getInstrumentList(
301                          m_ui.InstrumentFileComboBox->currentText(),                          m_ui.InstrumentFileComboBox->currentText(),
302                          pOptions->bInstrumentNames)                          pOptions->bInstrumentNames)
303          );          );
# Line 319  void InstrumentForm::accept (void) Line 333  void InstrumentForm::accept (void)
333          if (pMainForm->client() == NULL)          if (pMainForm->client() == NULL)
334                  return;                  return;
335    
336          qsamplerOptions *pOptions = pMainForm->options();          Options *pOptions = pMainForm->options();
337          if (pOptions == NULL)          if (pOptions == NULL)
338                  return;                  return;
339    
# Line 357  void InstrumentForm::reject (void) Line 371  void InstrumentForm::reject (void)
371          bool bReject = true;          bool bReject = true;
372    
373          // Check if there's any pending changes...          // Check if there's any pending changes...
374          if (m_iDirtyCount > 0 && m_ui.OkPushButton->isEnabled()) {          if (m_iDirtyCount > 0) {
375                  switch (QMessageBox::warning(this,                  switch (QMessageBox::warning(this,
376                          QSAMPLER_TITLE ": " + tr("Warning"),                          QSAMPLER_TITLE ": " + tr("Warning"),
377                          tr("Some channel settings have been changed.\n\n"                          tr("Some channel settings have been changed.\n\n"
378                          "Do you want to apply the changes?"),                          "Do you want to apply the changes?"),
379                          tr("Apply"), tr("Discard"), tr("Cancel"))) {                          QMessageBox::Apply |
380                  case 0:     // Apply...                          QMessageBox::Discard |
381                            QMessageBox::Cancel)) {
382                    case QMessageBox::Apply:
383                          accept();                          accept();
384                          return;                          return;
385                  case 1:     // Discard                  case QMessageBox::Discard:
386                          break;                          break;
387                  default:    // Cancel.                  default:    // Cancel.
388                          bReject = false;                          bReject = false;
# Line 393  void InstrumentForm::changed (void) Line 409  void InstrumentForm::changed (void)
409  // Stabilize current form state.  // Stabilize current form state.
410  void InstrumentForm::stabilizeForm (void)  void InstrumentForm::stabilizeForm (void)
411  {  {
412          bool bValid =          bool bValid = !m_ui.NameLineEdit->text().isEmpty()
413                  !m_ui.NameLineEdit->text().isEmpty() &&                  && m_ui.EngineNameComboBox->currentIndex() >= 0
414                  m_ui.EngineNameComboBox->currentIndex() >= 0 &&                  && m_ui.EngineNameComboBox->currentText() != Channel::noEngineName();
                 m_ui.EngineNameComboBox->currentText() !=  
                 qsamplerChannel::noEngineName();  
415    
416          const QString& sPath = m_ui.InstrumentFileComboBox->currentText();          const QString& sPath = m_ui.InstrumentFileComboBox->currentText();
417          bValid = bValid && !sPath.isEmpty() && QFileInfo(sPath).exists();          bValid = bValid && !sPath.isEmpty() && QFileInfo(sPath).exists();
418    
419          m_ui.OkPushButton->setEnabled(m_iDirtyCount > 0 && bValid);          m_ui.DialogButtonBox->button(
420                    QDialogButtonBox::Ok)->setEnabled(m_iDirtyCount > 0 && bValid);
421  }  }
422    
423  } // namespace QSampler  } // namespace QSampler

Legend:
Removed from v.1509  
changed lines
  Added in v.2110

  ViewVC Help
Powered by ViewVC