void SongEditorPatternList::patternPopup_copy() { Engine *pEngine = g_engine; T<Song>::shared_ptr pSong = pEngine->getSong(); PatternList *pPatternList = pSong->get_pattern_list(); int nSelectedPattern = pEngine->getSelectedPatternNumber(); T<Tritium::Pattern>::shared_ptr pPattern = pPatternList->get( nSelectedPattern ); T<Tritium::Pattern>::shared_ptr pNewPattern = pPattern->copy(); pPatternList->add( pNewPattern ); // rename the copied pattern PatternPropertiesDialog *dialog = new PatternPropertiesDialog( this, pNewPattern, true ); if ( dialog->exec() == QDialog::Accepted ) { pSong->set_modified( true ); pEngine->setSelectedPatternNumber(pPatternList->get_size() - 1); // select the last pattern (the copied one) if (pSong->get_mode() == Song::PATTERN_MODE) { pEngine->sequencer_setNextPattern( pPatternList->get_size() - 1, false, false ); // select the last pattern (the new copied pattern) } } else { pPatternList->del( pNewPattern ); pNewPattern.reset(); } delete dialog; CompositeApp::get_instance()->getSongEditorPanel()->updateAll(); }
/// /// Create a new pattern /// void SongEditorPanel::newPatBtnClicked( Button* btn ) { UNUSED( btn ); Hydrogen *pEngine = Hydrogen::get_instance(); Song *pSong = pEngine->getSong(); PatternList *pPatternList = pSong->get_pattern_list(); Pattern *pNewPattern = new Pattern( trUtf8("Pattern %1").arg(pPatternList->size()+1)); PatternPropertiesDialog *pDialog = new PatternPropertiesDialog( this, pNewPattern, 0, true ); if ( pDialog->exec() == QDialog::Accepted ) { SE_addEmptyPatternAction*action = new SE_addEmptyPatternAction( pNewPattern->get_name() , pNewPattern->get_info(), pNewPattern->get_category(), pEngine->getSelectedPatternNumber()+1); HydrogenApp::get_instance()->m_undoStack->push( action ); } delete pNewPattern; delete pDialog; }
void SongEditorPatternList::patternPopup_properties() { Engine *engine = g_engine; T<Song>::shared_ptr song = engine->getSong(); PatternList *patternList = song->get_pattern_list(); int nSelectedPattern = engine->getSelectedPatternNumber(); T<Tritium::Pattern>::shared_ptr pattern = patternList->get( nSelectedPattern ); PatternPropertiesDialog *dialog = new PatternPropertiesDialog(this, pattern, false); if (dialog->exec() == QDialog::Accepted) { // Engine *engine = g_engine; // Song *song = engine->getSong(); song->set_modified( true ); g_engine->get_event_queue()->push_event( EVENT_SELECTED_PATTERN_CHANGED, -1 ); createBackground(); update(); } delete dialog; dialog = NULL; }