Mercurial > hg > sonic-visualiser
diff main/MainWindow.cpp @ 117:8089a394829a
* Add display of selection extents in status bar when dragging a selection
* Some build fixes after that i18n update
author | Chris Cannam |
---|---|
date | Wed, 07 Mar 2007 18:00:49 +0000 |
parents | 99d65ba33c88 |
children | b4110b17bca8 |
line wrap: on
line diff
--- a/main/MainWindow.cpp Wed Mar 07 17:07:02 2007 +0000 +++ b/main/MainWindow.cpp Wed Mar 07 18:00:49 2007 +0000 @@ -147,6 +147,8 @@ m_viewManager = new ViewManager(); connect(m_viewManager, SIGNAL(selectionChanged()), this, SLOT(updateMenuStates())); + connect(m_viewManager, SIGNAL(inProgressSelectionChanged()), + this, SLOT(inProgressSelectionChanged())); m_descriptionLabel = new QLabel; @@ -1571,12 +1573,17 @@ void MainWindow::updateMenuStates() { + Pane *currentPane = 0; + Layer *currentLayer = 0; + + if (m_paneStack) currentPane = m_paneStack->getCurrentPane(); + if (currentPane) currentLayer = currentPane->getSelectedLayer(); + bool haveCurrentPane = - (m_paneStack && - (m_paneStack->getCurrentPane() != 0)); + (currentPane != 0); bool haveCurrentLayer = - (haveCurrentPane && - (m_paneStack->getCurrentPane()->getSelectedLayer())); + (haveCurrentPane && + (currentLayer != 0)); bool haveMainModel = (getMainModel() != 0); bool havePlayTarget = @@ -1586,20 +1593,16 @@ !m_viewManager->getSelections().empty()); bool haveCurrentEditableLayer = (haveCurrentLayer && - m_paneStack->getCurrentPane()->getSelectedLayer()-> - isLayerEditable()); + currentLayer->isLayerEditable()); bool haveCurrentTimeInstantsLayer = (haveCurrentLayer && - dynamic_cast<TimeInstantLayer *> - (m_paneStack->getCurrentPane()->getSelectedLayer())); + dynamic_cast<TimeInstantLayer *>(currentLayer)); bool haveCurrentTimeValueLayer = (haveCurrentLayer && - dynamic_cast<TimeValueLayer *> - (m_paneStack->getCurrentPane()->getSelectedLayer())); + dynamic_cast<TimeValueLayer *>(currentLayer)); bool haveCurrentColour3DPlot = (haveCurrentLayer && - dynamic_cast<Colour3DPlotLayer *> - (m_paneStack->getCurrentPane()->getSelectedLayer())); + dynamic_cast<Colour3DPlotLayer *>(currentLayer)); bool haveClipboardContents = (m_viewManager && !m_viewManager->getClipboard().empty()); @@ -3709,11 +3712,31 @@ return; } + bool haveSelection = false; + size_t startFrame = 0, endFrame = 0; + + if (m_viewManager && m_viewManager->haveInProgressSelection()) { + + bool exclusive = false; + Selection s = m_viewManager->getInProgressSelection(exclusive); + + if (!s.isEmpty()) { + haveSelection = true; + startFrame = s.getStartFrame(); + endFrame = s.getEndFrame(); + } + } + + if (!haveSelection) { + startFrame = p->getFirstVisibleFrame(); + endFrame = p->getLastVisibleFrame(); + } + RealTime start = RealTime::frame2RealTime - (p->getFirstVisibleFrame(), getMainModel()->getSampleRate()); + (startFrame, getMainModel()->getSampleRate()); RealTime end = RealTime::frame2RealTime - (p->getLastVisibleFrame(), getMainModel()->getSampleRate()); + (endFrame, getMainModel()->getSampleRate()); RealTime duration = end - start; @@ -3722,8 +3745,13 @@ endStr = end.toText(true).c_str(); durationStr = duration.toText(true).c_str(); - m_myStatusMessage = tr("Visible: %1 to %2 (duration %3)") - .arg(startStr).arg(endStr).arg(durationStr); + if (haveSelection) { + m_myStatusMessage = tr("Selection: %1 to %2 (duration %3)") + .arg(startStr).arg(endStr).arg(durationStr); + } else { + m_myStatusMessage = tr("Visible: %1 to %2 (duration %3)") + .arg(startStr).arg(endStr).arg(durationStr); + } statusBar()->showMessage(m_myStatusMessage); } @@ -4444,6 +4472,14 @@ } void +MainWindow::inProgressSelectionChanged() +{ + Pane *currentPane = 0; + if (m_paneStack) currentPane = m_paneStack->getCurrentPane(); + if (currentPane) updateVisibleRangeDisplay(currentPane); +} + +void MainWindow::contextHelpChanged(const QString &s) { if (s == "" && m_myStatusMessage != "") {