changeset 340:3211f8cef51a sv-v1.7.1

* Layer data editor window: fix sorting for columns in region model, add Find feature * RDF import: assign names to layers based on event types, if no suitable labels are found in the RDF * Add label to status bar showing the last text that was passed in current layer (so e.g. counting 1, 2, 3, 4 if that's what beats are labelled) * Better layout of text labels for region layers in segmentation mode when they are close together * Give text layer the same method for finding "nearest point" as region and note layers, should improve its editability
author Chris Cannam
date Thu, 22 Oct 2009 15:54:21 +0000
parents e91910707283
children a22d19f50673
files main/MainWindow.cpp main/MainWindow.h
diffstat 2 files changed, 33 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/main/MainWindow.cpp	Fri Oct 16 08:31:02 2009 +0000
+++ b/main/MainWindow.cpp	Thu Oct 22 15:54:21 2009 +0000
@@ -37,6 +37,7 @@
 #include "layer/SliceLayer.h"
 #include "layer/SliceableLayer.h"
 #include "layer/ImageLayer.h"
+#include "layer/RegionLayer.h"
 #include "widgets/Fader.h"
 #include "view/Overview.h"
 #include "widgets/PropertyBox.h"
@@ -277,6 +278,8 @@
     setupHelpMenu();
 
     statusBar();
+    m_currentLabel = new QLabel;
+    statusBar()->addPermanentWidget(m_currentLabel);
 
     connect(m_viewManager, SIGNAL(activity(QString)),
             m_activityLog, SLOT(activityHappened(QString)));
@@ -3491,6 +3494,33 @@
     }
 
     statusBar()->showMessage(m_myStatusMessage);
+
+    updatePositionStatusDisplays();
+}
+
+void
+MainWindow::updatePositionStatusDisplays() const
+{
+    if (!statusBar()->isVisible()) return;
+
+    Pane *pane = 0;
+    size_t frame = m_viewManager->getPlaybackFrame();
+
+    if (m_paneStack) pane = m_paneStack->getCurrentPane();
+    if (!pane) return;
+
+    int layers = pane->getLayerCount();
+    if (layers == 0) m_currentLabel->setText("");
+
+    for (int i = layers-1; i >= 0; --i) {
+        Layer *layer = pane->getLayer(i);
+        if (!layer) continue;
+        if (!layer->isLayerEditable()) continue;
+        QString label = layer->getLabelPreceding
+            (pane->alignFromReference(frame));
+        m_currentLabel->setText(label);
+        break;
+    }
 }
 
 void
--- a/main/MainWindow.h	Fri Oct 16 08:31:02 2009 +0000
+++ b/main/MainWindow.h	Thu Oct 22 15:54:21 2009 +0000
@@ -213,6 +213,8 @@
     QFrame                  *m_playControlsSpacer;
     int                      m_playControlsWidth;
 
+    QLabel                  *m_currentLabel;
+
     QPointer<PreferencesDialog> m_preferencesDialog;
     QPointer<LayerTreeDialog>   m_layerTreeDialog;
 
@@ -268,6 +270,7 @@
     virtual bool checkSaveModified();
 
     virtual void updateVisibleRangeDisplay(Pane *p) const;
+    virtual void updatePositionStatusDisplays() const;
 
     virtual bool shouldCreateNewSessionForRDFAudio(bool *cancel);