diff options
| -rw-r--r-- | muse2/ChangeLog | 3 | ||||
| -rw-r--r-- | muse2/synti/fluidsynth/fluidsynti.cpp | 20 | 
2 files changed, 22 insertions, 1 deletions
| diff --git a/muse2/ChangeLog b/muse2/ChangeLog index a22ef487..a8b29d58 100644 --- a/muse2/ChangeLog +++ b/muse2/ChangeLog @@ -1,3 +1,6 @@ +29.09.2012: +         - Added handling of missing soundfonts in fluidsynth load so +           a dialog asking for replacement soundfont pops up (rj)  17.09.2012:           * Introducing: Copy On Write for waves. (Tim)             It asks to copy, to the Project Directory, any wave to be modified which is either  diff --git a/muse2/synti/fluidsynth/fluidsynti.cpp b/muse2/synti/fluidsynth/fluidsynti.cpp index ab00606e..0fca4122 100644 --- a/muse2/synti/fluidsynth/fluidsynti.cpp +++ b/muse2/synti/fluidsynth/fluidsynti.cpp @@ -33,6 +33,7 @@  #include <iostream>  #include <QFileInfo> +#include <QFileDialog>  //#include "common_defs.h"  #include "fluidsynti.h" @@ -602,9 +603,26 @@ bool FluidSynth::pushSoundfont (const char* filename, int extid)        FS_Helper* helper = new FS_Helper;        helper->fptr = this; -      helper->filename = filename;        helper->id = extid; +      if (QFile::exists(filename)) +      { +              helper->filename = filename; +      } +      else +      { + +          // TODO: Strings should be translated, this does +          //       however require the class to be derived from qobject +          //       tried in vain to make the call in the gui object +          //       could'nt get it to work due to symbol missing in .so ... +          QString newName = QFileDialog::getOpenFileName(0, +                                  QString("Can't find soundfont: %1 - Choose soundfont").arg(filename), +                                  filename, +                                  QString("Soundfonts (*.sf2);;All files (*)")); +          helper->filename = newName.toStdString(); +      } +        if (pthread_create(&fontThread, attributes, ::fontLoadThread, (void*) helper))              perror("creating thread failed:"); | 
