--- qsampler/trunk/src/qsamplerInstrument.cpp 2006/12/17 22:29:29 980 +++ qsampler/trunk/src/qsamplerInstrument.cpp 2007/11/21 18:37:40 1505 @@ -1,7 +1,8 @@ // qsamplerInstrument.cpp // /**************************************************************************** - Copyright (C) 2004-2006, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2007, Christian Schoenebeck This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -21,10 +22,13 @@ #include "qsamplerAbout.h" #include "qsamplerInstrument.h" +#include "qsamplerUtilities.h" #include "qsamplerMainForm.h" +using namespace QSampler; + //------------------------------------------------------------------------- // qsamplerInstrument - MIDI instrument map structure. // @@ -157,7 +161,7 @@ { #ifdef CONFIG_MIDI_INSTRUMENT - qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); + MainForm *pMainForm = MainForm::getInstance(); if (pMainForm == NULL) return false; if (pMainForm->client() == NULL) @@ -190,12 +194,11 @@ } if (::lscp_map_midi_instrument(pMainForm->client(), &instr, - m_sEngineName.latin1(), - m_sInstrumentFile.latin1(), - m_iInstrumentNr, - m_fVolume, - load_mode, - m_sName.latin1()) != LSCP_OK) { + m_sEngineName.toUtf8().constData(), + qsamplerUtilities::lscpEscapePath( + m_sInstrumentFile).toUtf8().constData(), + m_iInstrumentNr, m_fVolume, load_mode, + m_sName.toUtf8().constData()) != LSCP_OK) { pMainForm->appendMessagesClient("lscp_map_midi_instrument"); return false; } @@ -217,7 +220,7 @@ if (m_iMap < 0 || m_iBank < 0 || m_iProg < 0) return false; - qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); + MainForm *pMainForm = MainForm::getInstance(); if (pMainForm == NULL) return false; if (pMainForm->client() == NULL) @@ -251,7 +254,7 @@ if (m_iMap < 0 || m_iBank < 0 || m_iProg < 0) return false; - qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); + MainForm *pMainForm = MainForm::getInstance(); if (pMainForm == NULL) return false; if (pMainForm->client() == NULL) @@ -270,10 +273,10 @@ return false; } - m_sName = pInstrInfo->name; + m_sName = qsamplerUtilities::lscpEscapedTextToRaw(pInstrInfo->name); m_sEngineName = pInstrInfo->engine_name; - m_sInstrumentName = pInstrInfo->instrument_name; - m_sInstrumentFile = pInstrInfo->instrument_file; + m_sInstrumentName = qsamplerUtilities::lscpEscapedTextToRaw(pInstrInfo->instrument_name); + m_sInstrumentFile = qsamplerUtilities::lscpEscapedPathToPosix(pInstrInfo->instrument_file); m_iInstrumentNr = pInstrInfo->instrument_nr; m_fVolume = pInstrInfo->volume; @@ -312,7 +315,7 @@ { QStringList maps; - qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); + MainForm *pMainForm = MainForm::getInstance(); if (pMainForm == NULL) return maps; if (pMainForm->client() == NULL) @@ -320,10 +323,15 @@ #ifdef CONFIG_MIDI_INSTRUMENT int *piMaps = ::lscp_list_midi_instrument_maps(pMainForm->client()); - for (int iMap = 0; piMaps && piMaps[iMap] >= 0; iMap++) { - const QString& sMapName = getMapName(piMaps[iMap]); - if (!sMapName.isEmpty()) - maps.append(sMapName); + if (piMaps == NULL) { + if (::lscp_client_get_errno(pMainForm->client())) + pMainForm->appendMessagesClient("lscp_list_midi_instruments"); + } else { + for (int iMap = 0; piMaps[iMap] >= 0; iMap++) { + const QString& sMapName = getMapName(piMaps[iMap]); + if (!sMapName.isEmpty()) + maps.append(sMapName); + } } #endif @@ -335,7 +343,7 @@ { QString sMapName; - qsamplerMainForm *pMainForm = qsamplerMainForm::getInstance(); + MainForm *pMainForm = MainForm::getInstance(); if (pMainForm == NULL) return sMapName; if (pMainForm->client() == NULL) @@ -344,9 +352,12 @@ #ifdef CONFIG_MIDI_INSTRUMENT const char *pszMapName = ::lscp_get_midi_instrument_map_name(pMainForm->client(), iMidiMap); - if (pszMapName == NULL) + if (pszMapName == NULL) { pszMapName = " -"; - sMapName = QString("%1 - %2").arg(iMidiMap).arg(pszMapName); + if (::lscp_client_get_errno(pMainForm->client())) + pMainForm->appendMessagesClient("lscp_get_midi_instrument_name"); + } + sMapName = QString("%1 - %2").arg(iMidiMap).arg(qsamplerUtilities::lscpEscapedTextToRaw(pszMapName)); #endif return sMapName;