void song::exportProject(bool multiExport) { if( isEmpty() ) { QMessageBox::information( engine::mainWindow(), tr( "Empty project" ), tr( "This project is empty so exporting makes " "no sense. Please put some items into " "Song Editor first!" ) ); return; } FileDialog efd( engine::mainWindow() ); if (multiExport) { efd.setFileMode( FileDialog::Directory); efd.setWindowTitle( tr( "Select directory for writing exported tracks..." ) ); if( !m_fileName.isEmpty() ) { efd.setDirectory( QFileInfo( m_fileName ).absolutePath() ); } } else { efd.setFileMode( FileDialog::AnyFile ); int idx = 0; QStringList types; while( __fileEncodeDevices[idx].m_fileFormat != ProjectRenderer::NumFileFormats ) { types << tr( __fileEncodeDevices[idx].m_description ); ++idx; } efd.setFilters( types ); QString base_filename; if( !m_fileName.isEmpty() ) { efd.setDirectory( QFileInfo( m_fileName ).absolutePath() ); base_filename = QFileInfo( m_fileName ).completeBaseName(); } else { efd.setDirectory( configManager::inst()->userProjectsDir() ); base_filename = tr( "untitled" ); } efd.selectFile( base_filename + __fileEncodeDevices[0].m_extension ); efd.setWindowTitle( tr( "Select file for project-export..." ) ); } efd.setAcceptMode( FileDialog::AcceptSave ); if( efd.exec() == QDialog::Accepted && !efd.selectedFiles().isEmpty() && !efd.selectedFiles()[0].isEmpty() ) { const QString export_file_name = efd.selectedFiles()[0]; exportProjectDialog epd( export_file_name, engine::mainWindow(), multiExport ); epd.exec(); } }
void Song::exportProjectMidi() { if( isEmpty() ) { QMessageBox::information( gui->mainWindow(), tr( "Empty project" ), tr( "This project is empty so exporting makes " "no sense. Please put some items into " "Song Editor first!" ) ); return; } FileDialog efd( gui->mainWindow() ); efd.setFileMode( FileDialog::AnyFile ); QStringList types; types << tr("MIDI File (*.mid)"); efd.setNameFilters( types ); QString base_filename; if( !m_fileName.isEmpty() ) { efd.setDirectory( QFileInfo( m_fileName ).absolutePath() ); base_filename = QFileInfo( m_fileName ).completeBaseName(); } else { efd.setDirectory( ConfigManager::inst()->userProjectsDir() ); base_filename = tr( "untitled" ); } efd.selectFile( base_filename + ".mid" ); efd.setDefaultSuffix( "mid"); efd.setWindowTitle( tr( "Select file for project-export..." ) ); efd.setAcceptMode( FileDialog::AcceptSave ); if( efd.exec() == QDialog::Accepted && !efd.selectedFiles().isEmpty() && !efd.selectedFiles()[0].isEmpty() ) { const QString suffix = ".mid"; QString export_filename = efd.selectedFiles()[0]; if (!export_filename.endsWith(suffix)) export_filename += suffix; // NOTE start midi export // instantiate midi export plugin TrackContainer::TrackList tracks; TrackContainer::TrackList tracks_BB; tracks = Engine::getSong()->tracks(); tracks_BB = Engine::getBBTrackContainer()->tracks(); ExportFilter *exf = dynamic_cast<ExportFilter *> (Plugin::instantiate("midiexport", NULL, NULL)); if (exf==NULL) { qDebug() << "failed to load midi export filter!"; return; } exf->tryExport(tracks, tracks_BB, getTempo(), m_masterPitchModel.value(), export_filename); } }
void song::exportProject(bool multiExport) { if( isEmpty() ) { QMessageBox::information( engine::mainWindow(), tr( "Empty project" ), tr( "This project is empty so exporting makes " "no sense. Please put some items into " "Song Editor first!" ) ); return; } FileDialog efd( engine::mainWindow() ); if (multiExport) { efd.setFileMode( FileDialog::Directory); efd.setWindowTitle( tr( "Select directory for writing exported tracks..." ) ); if( !m_fileName.isEmpty() ) { efd.setDirectory( QFileInfo( m_fileName ).absolutePath() ); } } else { efd.setFileMode( FileDialog::AnyFile ); int idx = 0; QStringList types; while( __fileEncodeDevices[idx].m_fileFormat != ProjectRenderer::NumFileFormats ) { types << tr( __fileEncodeDevices[idx].m_description ); ++idx; } efd.setNameFilters( types ); QString base_filename; if( !m_fileName.isEmpty() ) { efd.setDirectory( QFileInfo( m_fileName ).absolutePath() ); base_filename = QFileInfo( m_fileName ).completeBaseName(); } else { efd.setDirectory( configManager::inst()->userProjectsDir() ); base_filename = tr( "untitled" ); } efd.selectFile( base_filename + __fileEncodeDevices[0].m_extension ); efd.setWindowTitle( tr( "Select file for project-export..." ) ); } efd.setAcceptMode( FileDialog::AcceptSave ); if( efd.exec() == QDialog::Accepted && !efd.selectedFiles().isEmpty() && !efd.selectedFiles()[0].isEmpty() ) { QString suffix = ""; if ( !multiExport ) { int stx = efd.selectedNameFilter().indexOf( "(*." ); int etx = efd.selectedNameFilter().indexOf( ")" ); if ( stx > 0 && etx > stx ) { // Get first extension from selected dropdown. // i.e. ".wav" from "WAV-File (*.wav), Dummy-File (*.dum)" suffix = efd.selectedNameFilter().mid( stx + 2, etx - stx - 2 ).split( " " )[0].trimmed(); if ( efd.selectedFiles()[0].endsWith( suffix ) ) { suffix = ""; } } } const QString export_file_name = efd.selectedFiles()[0] + suffix; exportProjectDialog epd( export_file_name, engine::mainWindow(), multiExport ); epd.exec(); } }