diff src/MainWindow.cpp @ 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 8b7383948381
children 081202998535
line wrap: on
line diff
--- 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