]> git.sesse.net Git - kdenlive/commitdiff
Allow custom name for tracks
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 16 Aug 2009 13:59:42 +0000 (13:59 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 16 Aug 2009 13:59:42 +0000 (13:59 +0000)
svn path=/trunk/kdenlive/; revision=3830

12 files changed:
src/abstractclipitem.cpp
src/clipitem.cpp
src/customtrackview.cpp
src/definitions.h
src/graphicsscenerectmove.cpp
src/guide.cpp
src/headertrack.cpp
src/headertrack.h
src/kdenlivedoc.cpp
src/trackview.cpp
src/trackview.h
src/transition.cpp

index 605b42dc566b5f72d09741e3d4e5c7c52041309c..5e4c77162fb000d52b77b1891d2ca47c25100e83 100644 (file)
@@ -38,7 +38,7 @@ AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, doub
         m_keyframeFactor(1),
         m_fps(fps)
 {
-    setFlags(/*QGraphicsItem::ItemClipsToShape | */QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+    setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
     setTrack(info.track);
     m_startPos = info.startPos;
     m_cropDuration = info.endPos - info.startPos;
@@ -411,7 +411,7 @@ void AbstractClipItem::setItemLocked(bool locked)
         setSelected(false);
         setFlag(QGraphicsItem::ItemIsMovable, false);
         setFlag(QGraphicsItem::ItemIsSelectable, false);
-    } else setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+    } else setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
 }
 
 bool AbstractClipItem::isItemLocked() const
index 31e89f224430cc0ca0d4f151237237519180da37..4ba13ad9b624fc6dd49306a7e7bd1f48fbf0b9e7 100644 (file)
@@ -74,8 +74,6 @@ ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps, double speed, i
     m_maxDuration = clip->maxDuration();
     setAcceptDrops(true);
     m_audioThumbReady = clip->audioThumbCreated();
-
-    setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
     //setAcceptsHoverEvents(true);
     connect(this , SIGNAL(prepareAudioThumb(double, int, int, int)) , this, SLOT(slotPrepareAudioThumb(double, int, int, int)));
 
index 32d5b94b74e54dca560d80aa46c4c20dbc067e39..2efe0305917d642618daf1f03cb814d18eafc9a7 100644 (file)
@@ -959,11 +959,11 @@ void CustomTrackView::resetSelectionGroup(bool selectItems)
         for (int i = 0; i < children.count(); i++) {
             if (children.at(i)->type() == AVWIDGET || children.at(i)->type() == TRANSITIONWIDGET) {
                 if (!static_cast <AbstractClipItem *>(children.at(i))->isItemLocked()) {
-                    children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+                    children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
                     children.at(i)->setSelected(selectItems);
                 }
             } else if (children.at(i)->type() == GROUPWIDGET) {
-                children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+                children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
                 children.at(i)->setSelected(selectItems);
             }
         }
@@ -3075,7 +3075,7 @@ void CustomTrackView::doGroupClips(QList <ItemInfo> clipInfos, QList <ItemInfo>
                 m_document->clipManager()->removeGroup(grp);
                 scene()->destroyItemGroup(grp);
             }
-            clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+            clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
         }
         for (int i = 0; i < transitionInfos.count(); i++) {
             Transition *tr = getTransitionItemAt(transitionInfos.at(i).startPos, transitionInfos.at(i).track);
@@ -3085,7 +3085,7 @@ void CustomTrackView::doGroupClips(QList <ItemInfo> clipInfos, QList <ItemInfo>
                 m_document->clipManager()->removeGroup(grp);
                 scene()->destroyItemGroup(grp);
             }
-            tr->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+            tr->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
         }
         setDocumentModified();
         return;
@@ -4629,7 +4629,7 @@ void CustomTrackView::doSplitAudio(const GenTime &pos, int track, bool split)
                 break;
             }
         }
-        clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+        clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
         m_document->clipManager()->removeGroup(grp);
         scene()->destroyItemGroup(grp);
     }
index eff9b24e99f0f7c5b1bff59236089fde7aa638cf..90d5e31364ee4f2c29bc9812f30f977154b857f5 100644 (file)
@@ -55,6 +55,7 @@ enum TRACKTYPE { AUDIOTRACK = 0, VIDEOTRACK = 1 };
 
 struct TrackInfo {
     TRACKTYPE type;
+    QString trackName;
     bool isMute;
     bool isBlind;
     bool isLocked;
index 275c2a4da4fa0e8271d1a44ce541f5a8be78c8be..47133a20d14fa0158bd5aa8548acead6c6b8df20 100644 (file)
@@ -246,7 +246,7 @@ void GraphicsSceneRectMove::mousePressEvent(QGraphicsSceneMouseEvent* e)
     } else if (m_tool == TITLE_TEXT) {
         m_selectedItem = addText(QString());
         emit newText((QGraphicsTextItem *) m_selectedItem);
-        m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+        m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
         ((QGraphicsTextItem *)m_selectedItem)->setTextInteractionFlags(Qt::TextEditorInteraction);
         m_selectedItem->setPos(e->scenePos());
         QGraphicsScene::mousePressEvent(e);
@@ -483,7 +483,7 @@ void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e)
             // create new rect item
             m_selectedItem = addRect(0, 0, e->scenePos().x() - m_sceneClickPoint.x(), e->scenePos().y() - m_sceneClickPoint.y());
             emit newRect((QGraphicsRectItem *) m_selectedItem);
-            m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+            m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape);
             m_selectedItem->setPos(m_sceneClickPoint);
             m_resizeMode = BottomRight;
             QGraphicsScene::mouseMoveEvent(e);
index 4fbc53b9bbe550177836c0b66b702a18f490894b..d608d7d00b093406e9fa7fdbf7dee7bfe6c7f334 100644 (file)
@@ -34,7 +34,7 @@ Guide::Guide(CustomTrackView *view, GenTime pos, QString label, double fps, doub
         m_fps(fps),
         m_view(view)
 {
-    setFlags(QGraphicsItem::ItemIsMovable);
+    setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemClipsToShape);
     setToolTip(label);
     setLine(0, 0, 0, height);
     setPos(m_position.frames(m_fps), 0);
index 3cb935ddcae331749c90995d87837b4cf4d81c7c..679e1256f5292fcf7ef552b5f6d36a18a0e3040f 100644 (file)
@@ -36,7 +36,7 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent)
 {
     setFixedHeight(height);
     m_view.setupUi(this);
-    m_view.track_number->setText(QString::number(m_index));
+    m_view.track_number->setText(info.trackName.isEmpty() ? QString::number(m_index) : info.trackName);
 
     m_view.buttonVideo->setChecked(!info.isBlind);
     m_view.buttonVideo->setToolTip(i18n("Hide track"));
@@ -83,6 +83,11 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent)
     QAction *changeAction = new QAction(i18n("Change Track Type"), this);
     addAction(changeAction);
     connect(changeAction, SIGNAL(triggered()), this, SLOT(slotChangeTrack()));
+
+    QAction *renameAction = new QAction(i18n("Rename Track"), this);
+    addAction(renameAction);
+    connect(renameAction, SIGNAL(triggered()), this, SLOT(slotRenameTrack()));
+
 }
 
 HeaderTrack::~HeaderTrack()
@@ -151,6 +156,10 @@ void HeaderTrack::slotChangeTrack()
     emit changeTrack(m_index);
 }
 
+void HeaderTrack::slotRenameTrack()
+{
+    emit renameTrack(m_index);
+}
 
 // virtual
 /*void HeaderTrack::paintEvent(QPaintEvent *e) {
index 8ff6f2c7049352430865e228d6dae1f942228040..903e45a31e6aca76b54f497eceb66f1b19266f4c 100644 (file)
@@ -47,6 +47,7 @@ private slots:
     void slotDeleteTrack();
     void slotAddTrack();
     void slotChangeTrack();
+    void slotRenameTrack();
     void switchLock(bool emitSignal = true);
 
 signals:
@@ -56,6 +57,7 @@ signals:
     void insertTrack(int);
     void deleteTrack(int);
     void changeTrack(int);
+    void renameTrack(int);
 };
 
 #endif
index 6fa0b47123f4de25fc9ef05fb4e93f66dacb2b00..4551ee26bd3017ae6da0c2489327136b57cf79bd 100644 (file)
@@ -121,6 +121,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                                     projectTrack.isMute = e.attribute("mute").toInt();
                                     projectTrack.isBlind = e.attribute("blind").toInt();
                                     projectTrack.isLocked = e.attribute("locked").toInt();
+                                    projectTrack.trackName = e.attribute("trackname");
                                     m_tracksList.append(projectTrack);
                                 }
                             }
@@ -518,6 +519,7 @@ bool KdenliveDoc::saveSceneList(const QString &path, const QString &scene)
         trackinfo.setAttribute("mute", info.isMute);
         trackinfo.setAttribute("blind", info.isBlind);
         trackinfo.setAttribute("locked", info.isLocked);
+        trackinfo.setAttribute("trackname", info.trackName);
         tracksinfo.appendChild(trackinfo);
     }
     addedXml.appendChild(tracksinfo);
@@ -1176,6 +1178,7 @@ void KdenliveDoc::setTrackType(int ix, TrackInfo type)
     m_tracksList[ix].isMute = type.isMute;
     m_tracksList[ix].isBlind = type.isBlind;
     m_tracksList[ix].isLocked = type.isLocked;
+    m_tracksList[ix].trackName = type.trackName;
 }
 
 const QList <TrackInfo> KdenliveDoc::tracksList() const
index 0ed52e0984eba2e69bdf3cd531399bef574d978f..aabf0e6ccca886474e060c63bf22b770dda78844 100644 (file)
@@ -36,6 +36,7 @@
 #include <KMessageBox>
 
 #include <QScrollBar>
+#include <QInputDialog>
 
 TrackView::TrackView(KdenliveDoc *doc, bool *ok, QWidget *parent) :
         QWidget(parent),
@@ -462,6 +463,7 @@ void TrackView::slotRebuildTrackHeaders()
         connect(header, SIGNAL(deleteTrack(int)), this, SIGNAL(deleteTrack(int)));
         connect(header, SIGNAL(insertTrack(int)), this, SIGNAL(insertTrack(int)));
         connect(header, SIGNAL(changeTrack(int)), this, SIGNAL(changeTrack(int)));
+        connect(header, SIGNAL(renameTrack(int)), this, SLOT(slotRenameTrack(int)));
         m_headersLayout->addWidget(header);
     }
 }
@@ -835,4 +837,18 @@ void TrackView::updateProjectFps()
     m_ruler->updateProjectFps(m_doc->timecode());
 }
 
+void TrackView::slotRenameTrack(int ix)
+{
+    int tracknumber = m_doc->tracksCount() - ix;
+    TrackInfo info = m_doc->trackInfoAt(tracknumber - 1);
+    bool ok;
+    QString newName = QInputDialog::getText(this, i18n("New Track Name"), i18n("Enter new name"), QLineEdit::Normal, info.trackName, &ok);
+    if (ok) {
+        info.trackName = newName;
+        m_doc->setTrackType(tracknumber - 1, info);
+        QTimer::singleShot(300, this, SLOT(slotRebuildTrackHeaders()));
+    }
+}
+
+
 #include "trackview.moc"
index 7002e10f72d28cb05f8f5eef96793dfdbe98ab79..85374ec94e2faaf99623961d94c2275225ba3624 100644 (file)
@@ -92,6 +92,7 @@ private slots:
     void slotChangeTrackLock(int ix, bool lock);
     void slotVerticalZoomDown();
     void slotVerticalZoomUp();
+    void slotRenameTrack(int ix);
 
 signals:
     void mousePosition(int);
@@ -100,6 +101,7 @@ signals:
     void insertTrack(int);
     void deleteTrack(int);
     void changeTrack(int);
+    void renameTrack(int);
 };
 
 #endif
index cfabafcd488548f1f5d4de271044b2374c1e4fd5..0c2b6452e166b26d62c2d0770a5e65d8e0ddf362 100644 (file)
@@ -41,7 +41,7 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDo
     setZValue(3);
     setRect(0, 0, (info.endPos - info.startPos).frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1));
     setPos(info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 3 * 2));
-    
+
     m_cropStart = GenTime();
     m_maxDuration = GenTime(600);
 
@@ -59,7 +59,6 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDo
     if (m_parameters.attribute("force_track") == "1") m_forceTransitionTrack = true;
     m_name = m_parameters.elementsByTagName("name").item(0).toElement().text();
     m_secondClip = 0;
-    setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
 
     //m_referenceClip->addTransition(this);
 }