Mercurial > hg > easaier-soundaccess
diff sv/main/MainWindow.cpp @ 79:afcf540ae3a2
add the real time filter stack to manage real time filters and their attributes
author | lbajardsilogic |
---|---|
date | Tue, 19 Jun 2007 15:15:12 +0000 |
parents | caee1bc9e77d |
children | 5060939ca69d |
line wrap: on
line diff
--- a/sv/main/MainWindow.cpp Wed Jun 13 15:49:23 2007 +0000 +++ b/sv/main/MainWindow.cpp Tue Jun 19 15:15:12 2007 +0000 @@ -48,8 +48,6 @@ #include "widgets/AdvancedToolBox.h" #include "widgets/ConnectionStatus.h" #include "widgets/LayerViewerWidget.h" -#include "widgets/AudioFilterViewerWidget.h" -#include "widgets/ItemAudioFilterList.h" #include "audioio/AudioCallbackPlaySource.h" #include "audioio/AudioCallbackPlayTarget.h" @@ -72,6 +70,9 @@ #include "base/TempDirectory.h" #include "osc/OSCQueue.h" #include "main/EasaierSessionManager.h" +#include "widgets/RealTimeFilterPropertyStack.h" +#include "filter/FilterStack.h" +#include "filter/RealTimeFilterFactory.h" // For version information #include "vamp/vamp.h" @@ -285,15 +286,8 @@ m_toolBox = new AdvancedToolBox(); m_toolBox->addItem("Layers", new QWidget); -/* ItemAudioFilterList *itAudio = new ItemAudioFilterList; - itAudio->setName(QString("testttttttt")); - itAudio->setIcon(QString(":icons/easaier.png")); -*/ - AudioFilterViewerWidget *audioview = new AudioFilterViewerWidget; -// audioview->addItem(itAudio); - - - m_toolBox->addItem("Real-time filters",audioview); + m_filterPropertyStack = new RealTimeFilterPropertyStack(); + m_toolBox->addItem("Real-time filters",m_filterPropertyStack); /******** only for logo ****/ QLabel *logo = new QLabel; @@ -312,8 +306,6 @@ widgetAuxForLogo->setLayout(logoLayout); /****************************/ - - ExpandWidget *mainExpandWidget = new ExpandWidget(); mainExpandWidget->setWidgetLocation(ExpandWidget::Location_Right); mainExpandWidget->setPanes(bottomExpandWidget, widgetAuxForLogo); @@ -488,6 +480,7 @@ setupViewMenu(); setupPaneAndLayerMenus(); setupTransformsMenu(); + setupFiltersMenu(); setupSettingMenu(); setupHelpMenu(); @@ -1817,6 +1810,7 @@ emit canClearSelection(haveSelection); emit canEditSelection(haveSelection && haveCurrentEditableLayer); emit canSave(m_sessionFile != "" && m_documentModified); + emit canAddFilter(haveMainModel); } void @@ -2773,6 +2767,14 @@ this, SLOT(modelGenerationFailed(QString))); connect(m_document, SIGNAL(modelRegenerationFailed(QString, QString)), this, SLOT(modelRegenerationFailed(QString, QString))); + + connect(m_document, SIGNAL(newFilterAdded(Filter *)), + m_filterPropertyStack, SLOT(filterAdded(Filter *))); + connect(m_document, SIGNAL(filterRemoved(QString)), + m_filterPropertyStack, SLOT(filterRemoved(QString))); + + m_playSource->setRealTimeFilterStack(m_document->getRealTimeFilterStack()); + } void @@ -2807,6 +2809,9 @@ m_paneStack->deletePane(pane); } + if (m_document) + m_document->removeAllFilters(); + m_infoWidget->reset(); m_searchWidget->reset(); m_resultsWidget->reset(); @@ -4206,6 +4211,8 @@ m_panLayer->setModel(model); if (model) m_viewManager->setMainModelSampleRate(model->getSampleRate()); if (model && !m_playTarget && m_audioOutput) createPlayTarget(); + + updateMenuStates(); } void @@ -5326,4 +5333,43 @@ connect(m_multiPaneLayerContainer, SIGNAL(removeSelectedItem()), this, SLOT(deleteCurrentLayer())); connect(this, SIGNAL(newCurrentPane(Pane*)), m_multiPaneLayerContainer, SLOT(currentPaneChanged(Pane*))); m_toolBox->insertItem(0,"Layers", m_multiPaneLayerContainer); -} \ No newline at end of file +} + +void MainWindow::setupFiltersMenu() +{ + if (m_mainMenusCreated) return; + + QAction *action = 0; + QMenu *menu = 0; + + menu = menuBar()->addMenu(tr("&Filter")); + menu->setTearOffEnabled(true); + + RealTimeFilterFactory::FilterTypeSet filterTypes = RealTimeFilterFactory::getInstance()->getFilterTypes(); + RealTimeFilterFactory::FilterTypeSet::iterator iter; + + for (iter = filterTypes.begin(); iter != filterTypes.end(); iter++) { + action = new QAction(RealTimeFilterFactory::getInstance()->getFilterLabel(*iter), this); + action->setObjectName(RealTimeFilterFactory::getInstance()->getFilterLabel(*iter)); + connect(action, SIGNAL(triggered()), this, SLOT(addFilter())); + connect(this, SIGNAL(canAddFilter(bool)), action, SLOT(setEnabled(bool))); + menu->addAction(action); + } + + connect(m_filterPropertyStack, SIGNAL(removeFilter(QString)), this, SLOT(removeFilter(QString))); + +} + +void MainWindow::addFilter() +{ + QString filterType = sender()->objectName(); + + Filter* filter = m_document->createFilter(RealTimeFilterFactory::getInstance()->getFilterType(filterType)); + +} + +void MainWindow::removeFilter(QString name) +{ + if (m_document) + m_document->removeFilter(name); +} \ No newline at end of file