* improved concept for file types supported by certain plugins
* various small improvements for an even better ZynAddSubFX integration git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1520 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -173,19 +173,14 @@ void engine::loadExtensions( void )
|
||||
pluginDescriptors.begin();
|
||||
it != pluginDescriptors.end(); ++it )
|
||||
{
|
||||
if( it->sub_plugin_features )
|
||||
if( it->type == plugin::Instrument )
|
||||
{
|
||||
if( it->type == plugin::Instrument )
|
||||
{
|
||||
const QStringList & ext =
|
||||
it->sub_plugin_features
|
||||
->supportedExtensions();
|
||||
for( QStringList::const_iterator itExt =
|
||||
ext.begin();
|
||||
const QStringList & ext =
|
||||
QString( it->supportedFileTypes ).split( ',' );
|
||||
for( QStringList::const_iterator itExt = ext.begin();
|
||||
itExt != ext.end(); ++itExt )
|
||||
{
|
||||
s_sampleExtensions[*itExt] = it->name;
|
||||
}
|
||||
{
|
||||
s_sampleExtensions[*itExt] = it->name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <QtCore/QMutex>
|
||||
#include <QtCore/QFileInfo>
|
||||
#include <QtCore/QMutexLocker>
|
||||
|
||||
#include "preset_preview_play_handle.h"
|
||||
@@ -104,8 +104,8 @@ previewTrackContainer * presetPreviewPlayHandle::s_previewTC;
|
||||
|
||||
|
||||
|
||||
presetPreviewPlayHandle::presetPreviewPlayHandle(
|
||||
const QString & _preset_file ) :
|
||||
presetPreviewPlayHandle::presetPreviewPlayHandle( const QString & _preset_file,
|
||||
bool _special_preset ) :
|
||||
playHandle( PresetPreviewHandle ),
|
||||
m_previewNote( NULL )
|
||||
{
|
||||
@@ -120,9 +120,30 @@ presetPreviewPlayHandle::presetPreviewPlayHandle(
|
||||
const bool j = engine::getProjectJournal()->isJournalling();
|
||||
engine::getProjectJournal()->setJournalling( FALSE );
|
||||
|
||||
multimediaProject mmp( _preset_file );
|
||||
s_previewTC->previewInstrumentTrack()->loadTrackSpecificSettings(
|
||||
if( _special_preset )
|
||||
{
|
||||
instrument * i = s_previewTC->previewInstrumentTrack()->
|
||||
getInstrument();
|
||||
const QString ext = QFileInfo( _preset_file ).
|
||||
suffix().toLower();
|
||||
if( i == NULL || !i->getDescriptor()->supportsFileType( ext ) )
|
||||
{
|
||||
i = s_previewTC->previewInstrumentTrack()->
|
||||
loadInstrument(
|
||||
engine::sampleExtensions()[ext] );
|
||||
}
|
||||
if( i != NULL )
|
||||
{
|
||||
i->setParameter( "samplefile", _preset_file );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
multimediaProject mmp( _preset_file );
|
||||
s_previewTC->previewInstrumentTrack()->
|
||||
loadTrackSpecificSettings(
|
||||
mmp.content().firstChild().toElement() );
|
||||
}
|
||||
|
||||
// make sure, our preset-preview-track does not appear in any MIDI-
|
||||
// devices list, so just disable receiving/sending MIDI-events at all
|
||||
|
||||
@@ -211,7 +211,8 @@ void listView::activateListItem( QTreeWidgetItem * _item, int _column )
|
||||
return;
|
||||
}
|
||||
|
||||
if( f->type() == fileItem::SampleFile )
|
||||
if( f->type() == fileItem::SampleFile ||
|
||||
f->type() == fileItem::SpecialPresetFile )
|
||||
{
|
||||
// samples are per default opened in bb-editor because they're
|
||||
// likely drum-samples etc.
|
||||
@@ -283,17 +284,19 @@ void listView::sendToActiveInstrumentTrack( void )
|
||||
// ok, it's an instrument-track, so we can apply the
|
||||
// sample or the preset
|
||||
engine::getMixer()->lock();
|
||||
if( m_contextMenuItem->type() == fileItem::SampleFile )
|
||||
if( m_contextMenuItem->type() == fileItem::SampleFile ||
|
||||
m_contextMenuItem->type() ==
|
||||
fileItem::SpecialPresetFile )
|
||||
{
|
||||
instrument * afp = itw->model()->loadInstrument(
|
||||
engine::sampleExtensions()
|
||||
[m_contextMenuItem
|
||||
->extension()] );
|
||||
if( afp != NULL )
|
||||
QString e = m_contextMenuItem->extension();
|
||||
instrument * i = itw->model()->getInstrument();
|
||||
if( !i->getDescriptor()->supportsFileType( e ) )
|
||||
{
|
||||
afp->setParameter( "samplefile",
|
||||
m_contextMenuItem->fullName() );
|
||||
i = itw->model()->loadInstrument(
|
||||
engine::sampleExtensions()[e] );
|
||||
}
|
||||
i->setParameter( "samplefile",
|
||||
m_contextMenuItem->fullName() );
|
||||
}
|
||||
else if( m_contextMenuItem->type() ==
|
||||
fileItem::PresetFile )
|
||||
@@ -317,20 +320,21 @@ void listView::sendToActiveInstrumentTrack( void )
|
||||
void listView::openInNewInstrumentTrack( trackContainer * _tc )
|
||||
{
|
||||
engine::getMixer()->lock();
|
||||
if( m_contextMenuItem->type() == fileItem::SampleFile )
|
||||
if( m_contextMenuItem->type() == fileItem::SampleFile ||
|
||||
m_contextMenuItem->type() == fileItem::SpecialPresetFile )
|
||||
{
|
||||
instrumentTrack * ct = dynamic_cast<instrumentTrack *>(
|
||||
track::create( track::InstrumentTrack, _tc ) );
|
||||
#ifdef LMMS_DEBUG
|
||||
assert( ct != NULL );
|
||||
#endif
|
||||
instrument * afp = ct->loadInstrument(
|
||||
instrument * i = ct->loadInstrument(
|
||||
engine::sampleExtensions()
|
||||
[m_contextMenuItem
|
||||
->extension()] );
|
||||
if( afp != NULL )
|
||||
if( i != NULL )
|
||||
{
|
||||
afp->setParameter( "samplefile",
|
||||
i->setParameter( "samplefile",
|
||||
m_contextMenuItem->fullName() );
|
||||
}
|
||||
//ct->toggledInstrumentTrackButton( TRUE );
|
||||
@@ -385,7 +389,8 @@ void listView::contextMenuEvent( QContextMenuEvent * _e )
|
||||
{
|
||||
fileItem * f = dynamic_cast<fileItem *>( itemAt( _e->pos() ) );
|
||||
if( f != NULL && ( f->type() == fileItem::SampleFile ||
|
||||
f->type() == fileItem::PresetFile ) )
|
||||
f->type() == fileItem::SpecialPresetFile ||
|
||||
f->type() == fileItem::PresetFile ) )
|
||||
{
|
||||
m_contextMenuItem = f;
|
||||
QMenu contextMenu( this );
|
||||
@@ -459,10 +464,13 @@ void listView::mousePressEvent( QMouseEvent * _me )
|
||||
m_previewPlayHandle = s;
|
||||
delete tf;
|
||||
}
|
||||
else if( f->type() == fileItem::PresetFile )
|
||||
else if( f->type() == fileItem::PresetFile ||
|
||||
f->type() == fileItem::SpecialPresetFile )
|
||||
{
|
||||
m_previewPlayHandle = new presetPreviewPlayHandle(
|
||||
f->fullName() );
|
||||
m_previewPlayHandle =
|
||||
new presetPreviewPlayHandle( f->fullName(),
|
||||
f->type() ==
|
||||
fileItem::SpecialPresetFile );
|
||||
}
|
||||
if( m_previewPlayHandle != NULL )
|
||||
{
|
||||
@@ -794,6 +802,7 @@ void fileItem::initPixmapStuff( void )
|
||||
setIcon( 0, *s_projectFilePixmap );
|
||||
break;
|
||||
case PresetFile:
|
||||
case SpecialPresetFile:
|
||||
setIcon( 0, *s_presetFilePixmap );
|
||||
break;
|
||||
case SampleFile:
|
||||
@@ -843,6 +852,10 @@ void fileItem::determineFileType( void )
|
||||
{
|
||||
m_type = PresetFile;
|
||||
}
|
||||
else if( ext == "xiz" )
|
||||
{
|
||||
m_type = SpecialPresetFile;
|
||||
}
|
||||
else if( engine::sampleExtensions().contains( ext ) )
|
||||
{
|
||||
m_type = SampleFile;
|
||||
|
||||
Reference in New Issue
Block a user