added simple-serializing mode which makes tracks not save their TCOs - used for improved save and restore of presets (closes #2025902)
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1417 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
63
ChangeLog
63
ChangeLog
@@ -1,5 +1,68 @@
|
||||
2008-07-30 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
|
||||
|
||||
* include/track.h:
|
||||
* src/core/track.cpp:
|
||||
* src/gui/file_browser.cpp:
|
||||
* src/tracks/instrument_track.cpp:
|
||||
added simple-serializing mode which makes tracks not save their TCOs -
|
||||
used for improved save and restore of presets (closes #2025902)
|
||||
|
||||
* src/gui/widgets/effect_view.cpp:
|
||||
do not cast model to effect for only calling displayName()
|
||||
|
||||
* src/gui/widgets/effect_rack_view.cpp:
|
||||
- initialize bool-map with correct size - fixes crashes under various
|
||||
circumstances
|
||||
- do not cast model of effectView as the effect might not exist
|
||||
anymore
|
||||
|
||||
* data/presets/TripleOscillator/Steel.cs.xml:
|
||||
* data/presets/TripleOscillator/SawLead.cs.xml:
|
||||
* data/presets/TripleOscillator/Bass.cs.xml:
|
||||
* data/presets/TripleOscillator/E-Organ.cs.xml:
|
||||
* data/presets/TripleOscillator/FM-Wood-Arp.cs.xml:
|
||||
* data/presets/TripleOscillator/Harmonium.cs.xml:
|
||||
* data/presets/TripleOscillator/NostalgicFeelings.cs.xml:
|
||||
* data/presets/TripleOscillator/Moog.cs.xml:
|
||||
* data/presets/TripleOscillator/SawLead2.cs.xml:
|
||||
* data/presets/TripleOscillator/HardClipping.cs.xml:
|
||||
* data/presets/TripleOscillator/RaveBass.cs.xml:
|
||||
* data/presets/TripleOscillator/EvilHardcore.cs.xml:
|
||||
* data/presets/TripleOscillator/Distorted-FM-Bass_2.cs.xml:
|
||||
* data/presets/TripleOscillator/ShortBass.cs.xml:
|
||||
* data/presets/TripleOscillator/Crystallo.cs.xml:
|
||||
* data/presets/TripleOscillator/Fear.cs.xml:
|
||||
* data/presets/TripleOscillator/HorrorBass.cs.xml:
|
||||
* data/presets/TripleOscillator/Default.cs.xml:
|
||||
* data/presets/TripleOscillator/SoftStrings.cs.xml:
|
||||
* data/presets/TripleOscillator/RaveBass_2.cs.xml:
|
||||
* data/presets/TripleOscillator/Warmth.cs.xml:
|
||||
* data/presets/TripleOscillator/Beam.cs.xml:
|
||||
* data/presets/TripleOscillator/SquareLead2.cs.xml:
|
||||
* data/presets/TripleOscillator/Weird.cs.xml:
|
||||
* data/presets/TripleOscillator/LFO-party.cs.xml:
|
||||
* data/presets/TripleOscillator/Nice.cs.xml:
|
||||
* data/presets/TripleOscillator/ChurchOrgan_2.cs.xml:
|
||||
* data/presets/TripleOscillator/SoftBass.cs.xml:
|
||||
* data/presets/TripleOscillator/Stranger.cs.xml:
|
||||
* data/presets/TripleOscillator/TB303-Arpeggio.cs.xml:
|
||||
* data/presets/TripleOscillator/E-Piano.cs.xml:
|
||||
* data/presets/TripleOscillator/PluckArpeggio.cs.xml:
|
||||
* data/presets/TripleOscillator/WarmStack.cs.xml:
|
||||
* data/presets/TripleOscillator/Square.cs.xml:
|
||||
* data/presets/TripleOscillator/MyComputer.cs.xml:
|
||||
* data/presets/TripleOscillator/Simple-Acid-Bass.cs.xml:
|
||||
* data/presets/TripleOscillator/MoogArpeggio.cs.xml:
|
||||
* data/presets/TripleOscillator/Jupiter.cs.xml:
|
||||
* data/presets/TripleOscillator/AnalogTimes2.cs.xml:
|
||||
* data/presets/TripleOscillator/SquareLead.cs.xml:
|
||||
* data/presets/TripleOscillator/TB303.cs.xml:
|
||||
* data/presets/TripleOscillator/Detuned-Synced-FM-Bass.cs.xml:
|
||||
* data/presets/TripleOscillator/ChurchOrgan.cs.xml:
|
||||
* data/presets/TripleOscillator/SquareArp.cs.xml:
|
||||
* data/presets/TripleOscillator/OldComputerGames.cs.xml:
|
||||
removed old raw presets, tuned others and added a few new ones
|
||||
|
||||
* plugins/stk/mallets/mallets.cpp:
|
||||
detect incomplete Stk-installation in model rather than view for not
|
||||
crashing when playing without opening the GUI before
|
||||
|
||||
@@ -381,6 +381,10 @@ public:
|
||||
virtual void saveSettings( QDomDocument & _doc, QDomElement & _this );
|
||||
virtual void loadSettings( const QDomElement & _this );
|
||||
|
||||
void setSimpleSerializing( void )
|
||||
{
|
||||
m_simpleSerializingMode = TRUE;
|
||||
}
|
||||
|
||||
// -- for usage by trackContentObject only ---------------
|
||||
trackContentObject * addTCO( trackContentObject * _tco );
|
||||
@@ -449,6 +453,7 @@ private:
|
||||
boolModel m_soloModel;
|
||||
bool m_mutedBeforeSolo;
|
||||
|
||||
bool m_simpleSerializingMode;
|
||||
|
||||
tcoVector m_trackContentObjects;
|
||||
|
||||
|
||||
@@ -1551,6 +1551,7 @@ track::track( TrackTypes _type, trackContainer * _tc ) :
|
||||
/*!< For controlling track muting */
|
||||
m_soloModel( FALSE, this, tr( "Solo" ) ),
|
||||
/*!< For controlling track soloing */
|
||||
m_simpleSerializingMode( FALSE ),
|
||||
m_trackContentObjects() /*!< The track content objects (segments) */
|
||||
{
|
||||
m_trackContainer->addTrack( this );
|
||||
@@ -1661,7 +1662,10 @@ void track::clone( void )
|
||||
*/
|
||||
void track::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
{
|
||||
_this.setTagName( "track" );
|
||||
if( !m_simpleSerializingMode )
|
||||
{
|
||||
_this.setTagName( "track" );
|
||||
}
|
||||
_this.setAttribute( "type", type() );
|
||||
_this.setAttribute( "name", name() );
|
||||
_this.setAttribute( "muted", isMuted() );
|
||||
@@ -1674,6 +1678,12 @@ void track::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
_this.appendChild( ts_de );
|
||||
saveTrackSpecificSettings( _doc, ts_de );
|
||||
|
||||
if( m_simpleSerializingMode )
|
||||
{
|
||||
m_simpleSerializingMode = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
// now save settings of all TCO's
|
||||
for( tcoVector::const_iterator it = m_trackContentObjects.begin();
|
||||
it != m_trackContentObjects.end(); ++it )
|
||||
@@ -1710,6 +1720,22 @@ void track::loadSettings( const QDomElement & _this )
|
||||
|
||||
setMuted( _this.attribute( "muted" ).toInt() );
|
||||
|
||||
if( m_simpleSerializingMode )
|
||||
{
|
||||
QDomNode node = _this.firstChild();
|
||||
while( !node.isNull() )
|
||||
{
|
||||
if( node.isElement() && node.nodeName() == nodeName() )
|
||||
{
|
||||
loadTrackSpecificSettings( node.toElement() );
|
||||
break;
|
||||
}
|
||||
node = node.nextSibling();
|
||||
}
|
||||
m_simpleSerializingMode = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
while( !m_trackContentObjects.empty() )
|
||||
{
|
||||
delete m_trackContentObjects.front();
|
||||
|
||||
@@ -251,10 +251,8 @@ void listView::activateListItem( QTreeWidgetItem * _item, int _column )
|
||||
engine::getBBTrackContainer() ) );
|
||||
if( it != NULL )
|
||||
{
|
||||
it->loadTrackSpecificSettings( mmp.content().
|
||||
firstChild().
|
||||
toElement() );
|
||||
//it->toggledInstrumentTrackButton( TRUE );
|
||||
it->setSimpleSerializing();
|
||||
it->loadSettings( mmp.content().toElement() );
|
||||
}
|
||||
engine::getMixer()->unlock();
|
||||
}
|
||||
@@ -312,9 +310,9 @@ void listView::sendToActiveInstrumentTrack( void )
|
||||
multimediaProject mmp(
|
||||
m_contextMenuItem->fullName() );
|
||||
removeMidiPortNode( mmp );
|
||||
itw->model()->loadTrackSpecificSettings(
|
||||
mmp.content().firstChild().
|
||||
toElement() );
|
||||
itw->model()->setSimpleSerializing();
|
||||
itw->model()->loadSettings(
|
||||
mmp.content().toElement() );
|
||||
}
|
||||
engine::getMixer()->unlock();
|
||||
break;
|
||||
@@ -351,13 +349,11 @@ void listView::openInNewInstrumentTrack( trackContainer * _tc )
|
||||
multimediaProject mmp( m_contextMenuItem->fullName() );
|
||||
removeMidiPortNode( mmp );
|
||||
track * t = track::create( track::InstrumentTrack, _tc );
|
||||
instrumentTrack * ct = dynamic_cast<instrumentTrack *>( t );
|
||||
if( ct != NULL )
|
||||
instrumentTrack * it = dynamic_cast<instrumentTrack *>( t );
|
||||
if( it != NULL )
|
||||
{
|
||||
ct->loadTrackSpecificSettings( mmp.content().
|
||||
firstChild().
|
||||
toElement() );
|
||||
//ct->toggledInstrumentTrackButton( TRUE );
|
||||
it->setSimpleSerializing();
|
||||
it->loadSettings( mmp.content().toElement() );
|
||||
}
|
||||
}
|
||||
engine::getMixer()->unlock();
|
||||
|
||||
@@ -1236,9 +1236,8 @@ void instrumentTrackWindow::saveSettingsBtnClicked( void )
|
||||
{
|
||||
multimediaProject mmp(
|
||||
multimediaProject::InstrumentTrackSettings );
|
||||
QDomElement _this = mmp.createElement( m_track->nodeName() );
|
||||
m_track->saveTrackSpecificSettings( mmp, _this );
|
||||
mmp.content().appendChild( _this );
|
||||
m_track->setSimpleSerializing();
|
||||
m_track->saveSettings( mmp, mmp.content() );
|
||||
QString f = sfd.selectedFiles()[0];
|
||||
mmp.writeFile( f );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user