Mercurial > hg > svapp
diff framework/MainWindowBase.cpp @ 128:09e6016c5436
* Add playback controls to data edit dialog
* Make data edit dialog close properly when layer is removed from view
* More fixes to playback tracking & selection model in data edit dialog
* Remove edit button from data edit dialog for now
author | Chris Cannam |
---|---|
date | Wed, 18 Jun 2008 15:53:23 +0000 |
parents | 7ee6da3f2b3c |
children | df5f16b3c925 |
line wrap: on
line diff
--- a/framework/MainWindowBase.cpp Tue Jun 17 16:07:56 2008 +0000 +++ b/framework/MainWindowBase.cpp Wed Jun 18 15:53:23 2008 +0000 @@ -1351,6 +1351,7 @@ emit hideSplash(); if (factory->isAutoCallbackTarget(targetName)) { + QMessageBox::warning (this, tr("Couldn't open audio device"), tr("<b>No audio available</b><p>Could not open an audio device for playback.<p>Automatic audio device detection failed. Audio playback will not be available during this session.</p>"), QMessageBox::Ok); @@ -1972,8 +1973,19 @@ QString title = layer->getLayerPresentationName(); ModelDataTableDialog *dialog = new ModelDataTableDialog(tabular, title, this); - dialog->setAttribute(Qt::WA_DeleteOnClose); // see below + dialog->setAttribute(Qt::WA_DeleteOnClose); + + connectLayerEditDialog(dialog); + m_layerDataDialogMap[layer] = dialog; + m_viewDataDialogMap[pane].insert(dialog); + + dialog->show(); +} + +void +MainWindowBase::connectLayerEditDialog(ModelDataTableDialog *dialog) +{ connect(m_viewManager, SIGNAL(globalCentreFrameChanged(unsigned long)), dialog, @@ -1988,12 +2000,7 @@ SIGNAL(scrollToFrame(unsigned long)), m_viewManager, SLOT(setGlobalCentreFrame(unsigned long))); - - m_layerDataDialogMap[layer] = dialog; - m_viewDataDialogMap[pane].insert(dialog); - - dialog->show(); -} +} void MainWindowBase::previousPane() @@ -2166,20 +2173,10 @@ void MainWindowBase::layerAboutToBeDeleted(Layer *layer) { - if (m_layerDataDialogMap.find(layer) != m_layerDataDialogMap.end()) { + std::cerr << "MainWindowBase::layerAboutToBeDeleted(" << layer << ")" << std::endl; - ModelDataTableDialog *dialog = m_layerDataDialogMap[layer]; + removeLayerEditDialog(layer); - for (ViewDataDialogMap::iterator vi = m_viewDataDialogMap.begin(); - vi != m_viewDataDialogMap.end(); ++vi) { - vi->second.erase(dialog); - } - - m_layerDataDialogMap.erase(layer); - delete dialog; - } - -// std::cerr << "MainWindowBase::layerAboutToBeDeleted(" << layer << ")" << std::endl; if (m_timeRulerLayer && (layer == m_timeRulerLayer)) { // std::cerr << "(this is the time ruler layer)" << std::endl; m_timeRulerLayer = 0; @@ -2189,7 +2186,9 @@ void MainWindowBase::layerInAView(Layer *layer, bool inAView) { -// std::cerr << "MainWindowBase::layerInAView(" << layer << "," << inAView << ")" << std::endl; + std::cerr << "MainWindowBase::layerInAView(" << layer << "," << inAView << ")" << std::endl; + + if (!inAView) removeLayerEditDialog(layer); // Check whether we need to add or remove model from play source Model *model = layer->getModel(); @@ -2218,6 +2217,23 @@ } void +MainWindowBase::removeLayerEditDialog(Layer *layer) +{ + if (m_layerDataDialogMap.find(layer) != m_layerDataDialogMap.end()) { + + ModelDataTableDialog *dialog = m_layerDataDialogMap[layer]; + + for (ViewDataDialogMap::iterator vi = m_viewDataDialogMap.begin(); + vi != m_viewDataDialogMap.end(); ++vi) { + vi->second.erase(dialog); + } + + m_layerDataDialogMap.erase(layer); + delete dialog; + } +} + +void MainWindowBase::modelAdded(Model *model) { // std::cerr << "MainWindowBase::modelAdded(" << model << ")" << std::endl;