# HG changeset patch # User Chris Cannam # Date 1194453437 0 # Node ID 9fa27359883097abe55a97ed93ae35c6e6d21814 # Parent a798f5e6fc5e5e6ae4032587287544917319ffaa * Add [x] button to pane to quickly delete it diff -r a798f5e6fc5e -r 9fa273598830 framework/MainWindowBase.cpp --- a/framework/MainWindowBase.cpp Wed Nov 07 12:59:01 2007 +0000 +++ b/framework/MainWindowBase.cpp Wed Nov 07 16:37:17 2007 +0000 @@ -149,6 +149,8 @@ this, SLOT(paneDropAccepted(Pane *, QStringList))); connect(m_paneStack, SIGNAL(dropAccepted(Pane *, QString)), this, SLOT(paneDropAccepted(Pane *, QString))); + connect(m_paneStack, SIGNAL(paneDeleteButtonClicked(Pane *)), + this, SLOT(paneDeleteButtonClicked(Pane *))); m_playSource = new AudioCallbackPlaySource(m_viewManager); @@ -1926,6 +1928,42 @@ } void +MainWindowBase::paneDeleteButtonClicked(Pane *pane) +{ + bool found = false; + for (int i = 0; i < m_paneStack->getPaneCount(); ++i) { + if (m_paneStack->getPane(i) == pane) { + found = true; + break; + } + } + if (!found) { + std::cerr << "MainWindowBase::paneDeleteButtonClicked: Unknown pane " + << pane << std::endl; + return; + } + + CommandHistory::getInstance()->startCompoundOperation + (tr("Delete Pane"), true); + + while (pane->getLayerCount() > 0) { + Layer *layer = pane->getLayer(0); + if (layer) { + m_document->removeLayerFromView(pane, layer); + } else { + break; + } + } + + RemovePaneCommand *command = new RemovePaneCommand(this, pane); + CommandHistory::getInstance()->addCommand(command); + + CommandHistory::getInstance()->endCompoundOperation(); + + updateMenuStates(); +} + +void MainWindowBase::pollOSC() { if (!m_oscQueue || m_oscQueue->isEmpty()) return; diff -r a798f5e6fc5e -r 9fa273598830 framework/MainWindowBase.h --- a/framework/MainWindowBase.h Wed Nov 07 12:59:01 2007 +0000 +++ b/framework/MainWindowBase.h Wed Nov 07 16:37:17 2007 +0000 @@ -223,6 +223,7 @@ virtual void paneAboutToBeDeleted(Pane *) = 0; virtual void paneDropAccepted(Pane *, QStringList) = 0; virtual void paneDropAccepted(Pane *, QString) = 0; + virtual void paneDeleteButtonClicked(Pane *); virtual void pollOSC(); virtual void handleOSCMessage(const OSCMessage &) = 0;