]> git.sesse.net Git - kdenlive/commitdiff
add effect from clip context menu
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 15 Mar 2008 13:42:20 +0000 (13:42 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 15 Mar 2008 13:42:20 +0000 (13:42 +0000)
svn path=/branches/KDE4/; revision=2059

src/customtrackview.cpp
src/customtrackview.h
src/kdenliveui.rc
src/mainwindow.cpp
src/mainwindow.h

index ae0625a97d3e47776e9f4256aaf9be413f55b04b..668fb8882b0ae470f3a527715bd2519dd193afda 100644 (file)
@@ -27,8 +27,6 @@
 #include <KLocale>
 #include <KUrl>
 #include <KCursor>
-#include <KXmlGuiWindow>
-#include <KActionCollection>
 
 #include "customtrackview.h"
 #include "clipitem.h"
@@ -69,9 +67,12 @@ CustomTrackView::CustomTrackView(KdenliveDoc *doc, QGraphicsScene * projectscene
         m_cursorLine->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIgnoresTransformations);
         m_cursorLine->setZValue(1000);
     }
-    m_timelineContextClipMenu = new QMenu(this);
-    QAction *delClip = static_cast<KXmlGuiWindow*>(parent)->actionCollection()->action("delete_timeline_clip");
-    if (delClip) m_timelineContextClipMenu->addAction(delClip);
+}
+
+void CustomTrackView::setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transition) {
+    m_timelineContextMenu = timeline;
+    m_timelineContextClipMenu = clip;
+    m_timelineContextTransitionMenu = transition;
 }
 
 void CustomTrackView::checkAutoScroll() {
index f039da59965b5763bb6892634a5afd1304bbc003..78bad08f4f7ca697c778ae1a21ed9e7ae2f25eb4 100644 (file)
@@ -56,6 +56,7 @@ public:
     void activateMonitor();
     int duration() const;
     void deleteSelectedClips();
+    void setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transition);
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
index 8a9e69b08d8777cfac9c4834708ed49b3e8c9da8..dbe1a4a20051c7dbc80d3bde88705ea8889098db 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<gui name="kdenlive" version="10">
+<gui name="kdenlive" version="13">
   <ToolBar name="extraToolBar" >
     <text>Extra Toolbar</text>
     <Action name="clear" />
 
     <Menu name="timeline" ><text>Timeline</text>
       <Action name="delete_timeline_clip" />
+      <Menu name="video_effects_menu" ><text>Add Video Effect</text>
+      </Menu>
+      <Menu name="audio_effects_menu" ><text>Add Audio Effect</text>
+      </Menu>
+      <Menu name="custom_effects_menu" ><text>Add Custom Effect</text>
+      </Menu>
     </Menu>
-
     <Menu name="monitor" ><text>Monitor</text>
       <Action name="monitor_play" />
     </Menu>
index 1b73b4bb7432600700e2dcdb9142316feb8f00a5..467a8f5590010ad5f03a17d5d2e1f469fc4a9883 100644 (file)
@@ -42,6 +42,8 @@
 #include <kstandarddirs.h>
 #include <KUrlRequesterDialog>
 #include <KTemporaryFile>
+#include <KActionMenu>
+#include <KMenu>
 #include <ktogglefullscreenaction.h>
 
 #include <mlt++/Mlt.h>
@@ -184,6 +186,44 @@ MainWindow::MainWindow(QWidget *parent)
 
     setupGUI(Default, "kdenliveui.rc");
 
+    // build effects menus
+    QAction *action;
+    QMenu *videoEffectsMenu = (QMenu*)(factory()->container("video_effects_menu", this));
+    QStringList effects = m_videoEffects.effectNames();
+    foreach(QString name, effects) {
+        action = new QAction(name, this);
+        action->setData(name);
+        videoEffectsMenu->addAction(action);
+    }
+    QMenu *audioEffectsMenu = (QMenu*)(factory()->container("audio_effects_menu", this));
+    effects = m_audioEffects.effectNames();
+    foreach(QString name, effects) {
+        action = new QAction(name, this);
+        action->setData(name);
+        audioEffectsMenu->addAction(action);
+    }
+    QMenu *customEffectsMenu = (QMenu*)(factory()->container("custom_effects_menu", this));
+    effects = m_customEffects.effectNames();
+    foreach(QString name, effects) {
+        action = new QAction(name, this);
+        action->setData(name);
+        customEffectsMenu->addAction(action);
+    }
+
+    connect(videoEffectsMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotAddVideoEffect(QAction *)));
+    connect(audioEffectsMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotAddAudioEffect(QAction *)));
+    connect(customEffectsMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotAddCustomEffect(QAction *)));
+
+    m_timelineContextMenu = new QMenu(this);
+    m_timelineContextClipMenu = new QMenu(this);
+    m_timelineContextTransitionMenu = new QMenu(this);
+
+    action = actionCollection()->action("delete_timeline_clip");
+    m_timelineContextClipMenu->addAction(action);
+    m_timelineContextClipMenu->addMenu(videoEffectsMenu);
+    m_timelineContextClipMenu->addMenu(audioEffectsMenu);
+    m_timelineContextClipMenu->addMenu(customEffectsMenu);
+
     connect(projectMonitorDock, SIGNAL(visibilityChanged(bool)), m_projectMonitor, SLOT(refreshMonitor(bool)));
     connect(clipMonitorDock, SIGNAL(visibilityChanged(bool)), m_clipMonitor, SLOT(refreshMonitor(bool)));
     //connect(m_monitorManager, SIGNAL(connectMonitors()), this, SLOT(slotConnectMonitors()));
@@ -613,8 +653,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
     connect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), trackView->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool)));
     connect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), trackView->projectView(), SLOT(slotRefreshEffects(ClipItem*)));
     connect(trackView->projectView(), SIGNAL(activateDocumentMonitor()), m_projectMonitor, SLOT(activateMonitor()));
-
-
+    trackView->projectView()->setContextMenu(m_timelineContextMenu, m_timelineContextClipMenu, m_timelineContextTransitionMenu);
     m_activeTimeline = trackView;
     KdenliveSettings::setCurrent_profile(doc->profilePath());
     if (m_renderWidget) m_renderWidget->setDocumentStandard(doc->getDocumentStandard());
@@ -685,6 +724,24 @@ void MainWindow::slotDeleteTimelineClip() {
     }
 }
 
+void MainWindow::slotAddVideoEffect(QAction *result) {
+    if (!result) return;
+    QDomElement effect = m_videoEffects.getEffectByName(result->data().toString());
+    slotAddEffect(effect);
+}
+
+void MainWindow::slotAddAudioEffect(QAction *result) {
+    if (!result) return;
+    QDomElement effect = m_audioEffects.getEffectByName(result->data().toString());
+    slotAddEffect(effect);
+}
+
+void MainWindow::slotAddCustomEffect(QAction *result) {
+    if (!result) return;
+    QDomElement effect = m_customEffects.getEffectByName(result->data().toString());
+    slotAddEffect(effect);
+}
+
 void MainWindow::slotZoomIn() {
     timeline_buttons_ui.zoom_slider->setValue(timeline_buttons_ui.zoom_slider->value() - 1);
 }
index ceb400ca0dddcc062c35a1a0b72936a5bcf3c429..90293eaa75b4474043afcbf8c981014d688439db 100644 (file)
@@ -98,6 +98,10 @@ private:
     EffectsList m_audioEffects;
     EffectsList m_customEffects;
 
+    QMenu *m_timelineContextMenu;
+    QMenu *m_timelineContextClipMenu;
+    QMenu *m_timelineContextTransitionMenu;
+
     RenderWidget *m_renderWidget;
     Ui::TimelineButtons_UI timeline_buttons_ui;
 
@@ -140,6 +144,9 @@ private slots:
     void slotFitZoom();
     void slotRemoveTab();
     void slotDeleteTimelineClip();
+    void slotAddVideoEffect(QAction *result);
+    void slotAddAudioEffect(QAction *result);
+    void slotAddCustomEffect(QAction *result);
 };
 
 #endif