diff --git a/ChangeLog b/ChangeLog index 53d841594..ddb8636e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2006-09-28 Tobias Doerffel + * include/setup_dialog.h: + * src/core/main_window.cpp: + * src/core/setup_dialog.cpp: + * src/lib/mmp.cpp: + added support for compressed project ("mmpz"-extension), files are + compressed if extension given to multimediaProject::writeFile() is + mmpz or (if none given) user enabled compression as default + * data/locale/de.ts: updated German translation (still incomplete (mainly for mallets-plugin)) diff --git a/data/locale/de.qm b/data/locale/de.qm index f1b106dc9..400f8c6ae 100644 Binary files a/data/locale/de.qm and b/data/locale/de.qm differ diff --git a/data/locale/de.ts b/data/locale/de.ts index ee8cc48ed..7a8186bed 100755 --- a/data/locale/de.ts +++ b/data/locale/de.ts @@ -2181,7 +2181,7 @@ Double clicking any of the plugins will bring up information on the ports. MultiMedia Project (*.mmp *.xml) - MultiMedia-Projekt (*.mmp *.xml) + MultiMedia-Projekt (*.mmp *.xml) Save project @@ -2189,7 +2189,7 @@ Double clicking any of the plugins will bring up information on the ports. MultiMedia Project (*.mmp);;MultiMedia Project Template (*.mpt) - MultiMedia-Projekt (*.mmp);;MultiMedia-Projekt-Vorlage (*.mpt) + MultiMedia-Projekt (*.mmp);;MultiMedia-Projekt-Vorlage (*.mpt) Help not available @@ -2237,6 +2237,14 @@ Bitte besuchen Sie http://wiki.mindrules.net für Dokumentationen über LMMS.LADSPA Plugins... LADSPA-Plugins... + + MultiMedia Project (*.mmp *.mmpz *.xml) + MultiMedia Projekt (*.mmp *.mmpz *.xml) + + + MultiMedia Project (*.mmp *.mmpz);;MultiMedia Project Template (*.mpt) + MultiMedia Projekt (*.mmp *.mmpz);;MultiMedia Projekt-Vorlage (*.mpt) + mallets @@ -3410,6 +3418,10 @@ Please note that in some cases parallelizing won't work with small buffer-s Wenn Sie einen Computer mit mehr als einem Prozessor besitzen (z.B. Dual-Core-Systeme), sollten Sie einen Parallelisierungs-Level größer 1 wählen. Das bedeutet, dass LMMS versuchen wird, die Sound-Verarbeitung in mehrere Threads aufzuteilen, welche dann vom Betriebsystem auf unterschiedlichen Kernen ausgeführt werden sollten. Bitte beachten Sie, dass in einigen Fällen Parallelisierung nicht mit kleinen Puffergrößen funktionieren wird. Wenn Probleme auftreten (z.B. viele XRuns), versuchen Sie die Puffergröße zu erhöhen. + + Do not compress project files per default + Projektdateien nicht standardmäßig komprimieren + setupWidget diff --git a/include/setup_dialog.h b/include/setup_dialog.h index e4c5d3ffd..2afcb997d 100644 --- a/include/setup_dialog.h +++ b/include/setup_dialog.h @@ -101,6 +101,7 @@ private slots: void toggleNoWizard( bool _enabled ); void toggleNoMsgAfterSetup( bool _enabled ); void toggleDisplaydBV( bool _enabled ); + void toggleNoMMPZ( bool _enabled ); void openWorkingDir( void ); void openVSTDir( void ); @@ -127,6 +128,7 @@ private: bool m_noWizard; bool m_noMsgAfterSetup; bool m_displaydBV; + bool m_noMMPZ; QLineEdit * m_wdLineEdit; diff --git a/src/core/main_window.cpp b/src/core/main_window.cpp index 033e21f98..383322e78 100644 --- a/src/core/main_window.cpp +++ b/src/core/main_window.cpp @@ -132,7 +132,7 @@ mainWindow::mainWindow( engine * _engine ) : side_bar->appendTab( new fileBrowser( configManager::inst()->factoryProjectsDir() + "*" + configManager::inst()->userProjectsDir(), - "*.mmp *.xml *.mid *.flp", + "*.mmp *.mmpz *.xml *.mid *.flp", tr( "My projects" ), embed::getIconPixmap( "project_file" ), splitter, eng() ), @@ -710,10 +710,10 @@ void mainWindow::openProject( void ) { #ifdef QT4 QFileDialog ofd( this, tr( "Open project" ), "", - tr( "MultiMedia Project (*.mmp *.xml)" ) ); + tr( "MultiMedia Project (*.mmp *.mmpz *.xml)" ) ); #else QFileDialog ofd( QString::null, - tr( "MultiMedia Project (*.mmp *.xml)" ), + tr( "MultiMedia Project (*.mmp *.mmpz *.xml)" ), this, "", TRUE ); ofd.setWindowTitle( tr( "Open project" ) ); #endif @@ -751,11 +751,11 @@ bool mainWindow::saveProjectAs( void ) { #ifdef QT4 QFileDialog sfd( this, tr( "Save project" ), "", - tr( "MultiMedia Project (*.mmp);;" + tr( "MultiMedia Project (*.mmp *.mmpz);;" "MultiMedia Project Template (*.mpt)" ) ); #else QFileDialog sfd( QString::null, - tr( "MultiMedia Project (*.mmp);;" + tr( "MultiMedia Project (*.mmp *.mmpz);;" "MultiMedia Project Template (*.mpt)" ), this, "", TRUE ); sfd.setWindowTitle( tr( "Save project" ) ); diff --git a/src/core/setup_dialog.cpp b/src/core/setup_dialog.cpp index 54741418a..3c0756570 100644 --- a/src/core/setup_dialog.cpp +++ b/src/core/setup_dialog.cpp @@ -113,6 +113,8 @@ setupDialog::setupDialog( engine * _engine, configTabs _tab_to_open ) : "nomsgaftersetup" ).toInt() ), m_displaydBV( configManager::inst()->value( "app", "displaydbv" ).toInt() ), + m_noMMPZ( configManager::inst()->value( "app", + "nommpz" ).toInt() ), m_workingDir( configManager::inst()->workingDir() ), m_vstDir( configManager::inst()->vstDir() ), m_artworkDir( configManager::inst()->artworkDir() ), @@ -198,7 +200,7 @@ setupDialog::setupDialog( engine * _engine, configTabs _tab_to_open ) : tabWidget * misc_tw = new tabWidget( tr( "MISC" ), general ); - misc_tw->setFixedHeight( 128 ); + misc_tw->setFixedHeight( 150 ); ledCheckBox * disable_tooltips = new ledCheckBox( tr( "Disable tooltips (no spurious " @@ -257,6 +259,16 @@ setupDialog::setupDialog( engine * _engine, configTabs _tab_to_open ) : connect( dbv, SIGNAL( toggled( bool ) ), this, SLOT( toggleDisplaydBV( bool ) ) ); + + ledCheckBox * no_mmpz = new ledCheckBox( + tr( "Do not compress project files per default" ), + misc_tw, NULL, eng(), NULL ); + no_mmpz->move( 10, 126 ); + no_mmpz->setChecked( m_noMMPZ ); + connect( no_mmpz, SIGNAL( toggled( bool ) ), + this, SLOT( toggleNoMMPZ( bool ) ) ); + + gen_layout->addWidget( bufsize_tw ); gen_layout->addSpacing( 10 ); gen_layout->addWidget( misc_tw ); @@ -741,6 +753,8 @@ void setupDialog::accept( void ) QString::number( m_noMsgAfterSetup ) ); configManager::inst()->setValue( "app", "displaydbv", QString::number( m_displaydBV ) ); + configManager::inst()->setValue( "app", "nommpz", + QString::number( m_noMMPZ ) ); configManager::inst()->setValue( "ui", "disablechannelactivityindicators", QString::number( m_disableChActInd ) ); @@ -888,6 +902,14 @@ void setupDialog::toggleDisplaydBV( bool _enabled ) +void setupDialog::toggleNoMMPZ( bool _enabled ) +{ + m_noMMPZ = _enabled; +} + + + + void setupDialog::toggleDisableChActInd( bool _disabled ) { m_disableChActInd = _disabled; diff --git a/src/lib/mmp.cpp b/src/lib/mmp.cpp index 01591cf1d..d556ed4ea 100644 --- a/src/lib/mmp.cpp +++ b/src/lib/mmp.cpp @@ -41,12 +41,12 @@ #ifdef HAVE_CONFIG_H #include -#endif +#endif #include "mmp.h" #include "song_editor.h" - +#include "config_mgr.h" multimediaProject::typeDescStruct @@ -126,7 +126,18 @@ multimediaProject::multimediaProject( const QString & _in_file_name, int col; if( _is_filename == TRUE ) { - if( !setContent( &in_file, &error_msg, &line, &col ) ) + bool error = FALSE; + if( _in_file_name.section( '.', -1 ) == "mmpz" ) + { + QString data = qUncompress( in_file.readAll() ); + error = !setContent( data, &error_msg, &line, &col ); + } + else + { + error = !setContent( &in_file, &error_msg, &line, + &col ); + } + if( error ) { QMessageBox::critical( NULL, songEditor::tr( "Error in " "multimedia-project" ), @@ -188,6 +199,7 @@ bool multimediaProject::writeFile( const QString & _fn, bool _overwrite_check ) { bool clean_meta_nodes = FALSE; QString fn = _fn; + bool compress = FALSE; if( type() == INSTRUMENT_TRACK_SETTINGS ) { if( fn.section( '.', -2, -1 ) != "cs.xml" ) @@ -199,9 +211,23 @@ bool multimediaProject::writeFile( const QString & _fn, bool _overwrite_check ) else if( type() == SONG_PROJECT ) { if( fn.section( '.', -1 ) != "mmp" && - fn.section( '.', -1 ) != "mpt" ) + fn.section( '.', -1 ) != "mpt" && + fn.section( '.', -1 ) != "mmpz" ) { - fn += ".mmp"; + compress = configManager::inst()->value( "app", + "nommpz" ).toInt() == 0; + if( compress ) + { + fn += ".mmpz"; + } + else + { + fn += ".mmp"; + } + } + else + { + compress = ( fn.section( '.', -1 ) == "mmpz" ); } clean_meta_nodes = TRUE; } @@ -263,15 +289,27 @@ bool multimediaProject::writeFile( const QString & _fn, bool _overwrite_check ) } QString xml = "\n" + toString( #if QT_VERSION >= 0x030100 - 0 + 1 #endif ); -#ifdef QT4 - outfile.write( xml.toUtf8().constData(), xml.length() ); + if( compress ) + { +#ifndef QT3 + outfile.write( qCompress( xml.toAscii() ) ); #else - QCString xml_utf8 = xml.utf8(); - outfile.writeBlock( xml_utf8.data(), xml_utf8.length() ); + outfile.writeBlock( qCompress( + (const uchar *) xml.ascii(), xml.length() ) ); #endif + } + else + { +#ifdef QT4 + outfile.write( xml.toUtf8().constData(), xml.length() ); +#else + QCString xml_utf8 = xml.utf8(); + outfile.writeBlock( xml_utf8.data(), xml_utf8.length() ); +#endif + } outfile.close(); return( TRUE );