Mercurial > hg > tony
changeset 70:5310637392f6
Revert to using three separate tool modes (more like SV). This is less like the proposed design for Tony but better than the previous situation with two incomprehensible toggle buttons.
author | Chris Cannam |
---|---|
date | Tue, 26 Nov 2013 16:59:31 +0000 |
parents | 045360070b66 |
children | fc3b62262443 |
files | src/Analyser.cpp src/MainWindow.cpp src/MainWindow.h src/main.cpp |
diffstat | 4 files changed, 103 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Analyser.cpp Tue Nov 26 14:54:22 2013 +0000 +++ b/src/Analyser.cpp Tue Nov 26 16:59:31 2013 +0000 @@ -170,5 +170,7 @@ Analyser::setIntelligentActions(bool on) { std::cerr << "toggle setIntelligentActions " << on << std::endl; - m_flexiNoteLayer->setIntelligentActions(on); + if (m_flexiNoteLayer) { + m_flexiNoteLayer->setIntelligentActions(on); + } }
--- a/src/MainWindow.cpp Tue Nov 26 14:54:22 2013 +0000 +++ b/src/MainWindow.cpp Tue Nov 26 16:59:31 2013 +0000 @@ -74,9 +74,6 @@ #include <cstdio> #include <errno.h> -using std::cerr; -using std::endl; - using std::vector; @@ -583,6 +580,47 @@ toolbar->addWidget(m_playSpeed); toolbar->addWidget(m_fader); + toolbar = addToolBar(tr("Tools Toolbar")); + + CommandHistory::getInstance()->registerToolbar(toolbar); + + m_keyReference->setCategory(tr("Tool Selection")); + + toolbar = addToolBar(tr("Tools Toolbar")); + QActionGroup *group = new QActionGroup(this); + + QAction *action = toolbar->addAction(il.load("navigate"), + tr("Navigate")); + action->setCheckable(true); + action->setChecked(true); + action->setShortcut(tr("1")); + action->setStatusTip(tr("Navigate")); + connect(action, SIGNAL(triggered()), this, SLOT(toolNavigateSelected())); + connect(this, SIGNAL(replacedDocument()), action, SLOT(trigger())); + group->addAction(action); + m_keyReference->registerShortcut(action); + + action = toolbar->addAction(il.load("move"), + tr("Edit")); + action->setCheckable(true); + action->setShortcut(tr("2")); + action->setStatusTip(tr("Edit with Note Intelligence")); + connect(action, SIGNAL(triggered()), this, SLOT(toolEditSelected())); + connect(this, SIGNAL(canEditLayer(bool)), action, SLOT(setEnabled(bool))); + group->addAction(action); + m_keyReference->registerShortcut(action); + + action = toolbar->addAction(il.load("notes"), + tr("Free Edit")); + action->setCheckable(true); + action->setShortcut(tr("3")); + action->setStatusTip(tr("Free Edit")); + connect(action, SIGNAL(triggered()), this, SLOT(toolFreeEditSelected())); + group->addAction(action); + m_keyReference->registerShortcut(action); + + + /* toolbar = addToolBar(tr("Test actions toolbar")); // GF: temporary toolbar for triggering actions manually // GF: TEMP : this created a menu item @@ -601,11 +639,35 @@ m_toggleIntelligenceAction->setStatusTip(tr("Toggle note edit boundary constraints and automation")); m_toggleIntelligenceAction->setEnabled(true); connect(m_toggleIntelligenceAction, SIGNAL(triggered()), this, SLOT(toggleNoteEditIntelligence())); - + */ Pane::registerShortcuts(*m_keyReference); } void +MainWindow::toolNavigateSelected() +{ + m_viewManager->setToolMode(ViewManager::NavigateMode); + m_intelligentActionOn = true; +} + +void +MainWindow::toolEditSelected() +{ + m_viewManager->setToolMode(ViewManager::EditMode); + m_intelligentActionOn = true; + m_analyser->setIntelligentActions(m_intelligentActionOn); +} + +void +MainWindow::toolFreeEditSelected() +{ + m_viewManager->setToolMode(ViewManager::EditMode); + m_intelligentActionOn = false; + m_analyser->setIntelligentActions(m_intelligentActionOn); +} + +/* +void MainWindow::selectNoteEditMode() { IconLoader il; @@ -613,7 +675,7 @@ m_viewManager->setToolMode(ViewManager::NavigateMode); m_editSelectAction->setIcon(il.load("move")); } else { - std::cerr << "NoteEdit mode selected" << std::endl; + cerr << "NoteEdit mode selected" << endl; m_viewManager->setToolMode(ViewManager::NoteEditMode); m_editSelectAction->setIcon(il.load("navigate")); } @@ -633,6 +695,7 @@ m_analyser->setIntelligentActions(true); } } +*/ void MainWindow::updateMenuStates() @@ -838,8 +901,8 @@ QAction *action = qobject_cast<QAction *>(obj); if (!action) { - std::cerr << "WARNING: MainWindow::openRecentFile: sender is not an action" - << std::endl; + cerr << "WARNING: MainWindow::openRecentFile: sender is not an action" + << endl; return; } @@ -922,7 +985,7 @@ void MainWindow::configureNewPane(Pane *pane) { - std::cerr << "MainWindow::configureNewPane(" << pane << ")" << std::endl; + cerr << "MainWindow::configureNewPane(" << pane << ")" << endl; if (!pane) { pane = m_paneStack->addPane(); @@ -934,16 +997,16 @@ void MainWindow::closeEvent(QCloseEvent *e) { -// std::cerr << "MainWindow::closeEvent" << std::endl; +// cerr << "MainWindow::closeEvent" << endl; if (m_openingAudioFile) { -// std::cerr << "Busy - ignoring close event" << std::endl; +// cerr << "Busy - ignoring close event" << endl; e->ignore(); return; } if (!m_abandoning && !checkSaveModified()) { -// std::cerr << "Ignoring close event" << std::endl; +// cerr << "Ignoring close event" << endl; e->ignore(); return; } @@ -1199,7 +1262,7 @@ float percent = m_playSpeed->mappedValue(); float factor = mapper.getFactorForValue(percent); - std::cerr << "speed = " << position << " percent = " << percent << " factor = " << factor << std::endl; + cerr << "speed = " << position << " percent = " << percent << " factor = " << factor << endl; bool something = (position != 100); @@ -1379,7 +1442,7 @@ MainWindowBase::modelAdded(model); DenseTimeValueModel *dtvm = qobject_cast<DenseTimeValueModel *>(model); if (dtvm) { - std::cerr << "A dense time-value model (such as an audio file) has been loaded" << std::endl; + cerr << "A dense time-value model (such as an audio file) has been loaded" << endl; } } @@ -1474,7 +1537,7 @@ void MainWindow::rightButtonMenuRequested(Pane *pane, QPoint position) { -// std::cerr << "MainWindow::rightButtonMenuRequested(" << pane << ", " << position.x() << ", " << position.y() << ")" << std::endl; +// cerr << "MainWindow::rightButtonMenuRequested(" << pane << ", " << position.x() << ", " << position.y() << ")" << endl; m_paneStack->setCurrentPane(pane); m_rightButtonMenu->popup(position); } @@ -1482,7 +1545,7 @@ void MainWindow::handleOSCMessage(const OSCMessage &message) { - std::cerr << "MainWindow::handleOSCMessage: Not implemented" << std::endl; + cerr << "MainWindow::handleOSCMessage: Not implemented" << endl; } void
--- a/src/MainWindow.h Tue Nov 26 14:54:22 2013 +0000 +++ b/src/MainWindow.h Tue Nov 26 16:59:31 2013 +0000 @@ -44,6 +44,10 @@ virtual void renameCurrentLayer(); + virtual void toolNavigateSelected(); + virtual void toolEditSelected(); + virtual void toolFreeEditSelected(); + virtual void paneAdded(Pane *); virtual void paneHidden(Pane *); virtual void paneAboutToBeDeleted(Pane *); @@ -98,11 +102,6 @@ virtual void about(); virtual void keyReference(); - // GF: function for switching to NoteEditMode (perhaps temporary, as we may want this to be triggered in some other way...) - virtual void selectNoteEditMode(); - virtual void toggleNoteEditIntelligence(); - - protected: Analyser *m_analyser; @@ -126,7 +125,6 @@ QAction *m_toggleIntelligenceAction; bool m_intelligentActionOn; // GF: !!! temporary - KeyReference *m_keyReference; virtual void setupMenus();
--- a/src/main.cpp Tue Nov 26 14:54:22 2013 +0000 +++ b/src/main.cpp Tue Nov 26 16:59:31 2013 +0000 @@ -21,6 +21,7 @@ #include "base/PropertyContainer.h" #include "base/Preferences.h" #include "widgets/TipDialog.h" +#include "transform/TransformFactory.h" #include <QMetaType> #include <QApplication> @@ -39,16 +40,21 @@ #include <signal.h> static QMutex cleanupMutex; +static bool cleanedUp = false; static void signalHandler(int /* signal */) { // Avoid this happening more than once across threads + cerr << "signalHandler: cleaning up and exiting" << endl; cleanupMutex.lock(); - std::cerr << "signalHandler: cleaning up and exiting" << std::endl; - TempDirectory::getInstance()->cleanup(); - exit(0); // without releasing mutex + if (!cleanedUp) { + TempDirectory::getInstance()->cleanup(); + cleanedUp = true; + } + cleanupMutex.unlock(); + exit(0); } class TonyApplication : public QApplication @@ -241,11 +247,19 @@ gui->hide(); cleanupMutex.lock(); - TempDirectory::getInstance()->cleanup(); + + if (!cleanedUp) { + TransformFactory::deleteInstance(); + TempDirectory::getInstance()->cleanup(); + cleanedUp = true; + } + application.releaseMainWindow(); delete gui; + cleanupMutex.unlock(); + return rv; }