]> git.sesse.net Git - kdenlive/commitdiff
effectstack can add self effects
authorMarco Gittler <marco@gitma.de>
Wed, 20 Feb 2008 16:48:18 +0000 (16:48 +0000)
committerMarco Gittler <marco@gitma.de>
Wed, 20 Feb 2008 16:48:18 +0000 (16:48 +0000)
svn path=/branches/KDE4/; revision=1887

src/effectstackview.cpp
src/effectstackview.h
src/mainwindow.cpp
src/parameterplotter.cpp
src/parameterplotter.h
src/widgets/effectstack_ui.ui

index 3ff187468da29fc1b45716fba8e4a1ffc846959e..9c30faa4eaa8918b146664e9904e1e9728fa830d 100644 (file)
 #include <KLocale>
 
 #include "effectstackview.h"
+#include "effectslist.h"
 #include "clipitem.h"
 #include <QHeaderView>
+#include <QMenu>
 
-EffectStackView::EffectStackView( QWidget *parent)
+EffectStackView::EffectStackView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent)
 : QWidget(parent)
 {
        ui.setupUi(this);
@@ -42,7 +44,10 @@ EffectStackView::EffectStackView( QWidget *parent)
        ui.buttonHelp->setIcon(KIcon("help-about"));
        ui.buttonNewPoints->setIcon(KIcon("xedit"));
        
+       ui.effectlist->setDragDropMode(QAbstractItemView::NoDragDrop);//use internal if dropis recognised right
+       
        connect (ui.effectlist, SIGNAL ( itemSelectionChanged()), this , SLOT( slotItemSelectionChanged() ));
+       connect (ui.buttonNew, SIGNAL (clicked()), this, SLOT (slotNewEffect()) );
        connect (ui.buttonUp, SIGNAL (clicked()), this, SLOT (slotItemUp()) );
        connect (ui.buttonDown, SIGNAL (clicked()), this, SLOT (slotItemDown()) );
        connect (ui.buttonDel, SIGNAL (clicked()), this, SLOT (slotItemDel()) );
@@ -52,9 +57,15 @@ EffectStackView::EffectStackView( QWidget *parent)
        connect (ui.buttonNewPoints, SIGNAL (clicked()), this , SLOT ( slotSetNew() ) );
        connect (ui.buttonHelp, SIGNAL (clicked()), this , SLOT ( slotSetHelp() ) );
        connect (ui.parameterList, SIGNAL (currentIndexChanged ( const QString &  ) ), this, SLOT( slotParameterChanged(const QString&) ) );
+       connect (ui.effectlist, SIGNAL (itemSelectionChanged() ) , this, SLOT ( itemSelectionChanged()));
+       
+       effectLists["audio"]=audioEffectList;
+       effectLists["video"]=videoEffectList;
+       effectLists["custom"]=customEffectList;
+       
        ui.infoBox->hide();     
        updateButtonStatus();
-
+       
        
        QList< QPair<QString, QMap<int,QVariant> > > points;
        QMap<int,QVariant> data;
@@ -98,8 +109,10 @@ void EffectStackView::setupListView(const QStringList& effects_list){
                QListWidgetItem* item=ui.effectlist->item(i);
                item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
                item->setCheckState(Qt::Checked);
-               if (activeRow==i)
+               if (activeRow==i){
                        item->setSelected(true);
+                       ui.effectlist->setCurrentRow(activeRow);
+               }
        }
 
 }
@@ -188,4 +201,35 @@ void EffectStackView::slotParameterChanged(const QString& text){
        updateButtonStatus();
 }
 
+void EffectStackView::slotNewEffect(){
+       
+
+       QMenu *displayMenu=new QMenu (this);
+       foreach (QString type, effectLists.keys() ){
+               QAction *a=new QAction(type,displayMenu);
+               EffectsList *list=effectLists[type];
+               
+               QMenu *parts=new QMenu(type,displayMenu);
+               foreach (QString name, list->effectNames()){
+                       QAction *entry=new QAction(name,parts);
+                       parts->addAction(entry);
+                       //QAction
+               }
+               displayMenu->addMenu(parts);
+
+       }
+
+       QAction *result=displayMenu->exec(mapToGlobal(ui.buttonNew->pos()+ui.buttonNew->rect().bottomRight()));
+       
+       if (result)
+               kDebug()<< result->text();
+       else
+               kDebug() << "kein re4sult";
+       delete displayMenu;
+       
+}
+
+void EffectStackView::itemSelectionChanged (){
+       kDebug() << "droP";
+}
 #include "effectstackview.moc"
index 5799e2492250bd51878dc0f273e333362b512c88..703104ad247d94c536370f13289f95c851e42888 100644 (file)
 
 #include "ui_effectstack_ui.h"
 #include "clipitem.h"
+class EffectsList;
+
+
 class EffectStackView : public QWidget
 {
        Q_OBJECT
                
        public:
-               EffectStackView( QWidget *parent=0);
+               EffectStackView(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *customEffectList, QWidget *parent=0);
        
 private:
        int activeRow;
@@ -36,6 +39,8 @@ private:
        ClipItem* clipref;
        void setupListView(const QStringList& );
        void updateButtonStatus();
+       QMap<QString,EffectsList*> effectLists;
+
 public slots:
        void slotClipItemSelected(ClipItem*);
        void slotItemSelectionChanged();
@@ -45,9 +50,11 @@ public slots:
        void slotSetMoveX();
        void slotSetMoveY();
        void slotSetNew();
+       void slotNewEffect();
        void slotSetHelp();
        void slotShowInTimeline();
        void slotParameterChanged(const QString&);
+       void itemSelectionChanged();
 };
 
 #endif
index 6859fe65631c904633b45895a325b531bfbe3638..546f0663eb4a20d6174540508a6235f9c2c7bd97 100644 (file)
@@ -86,7 +86,7 @@ MainWindow::MainWindow(QWidget *parent)
   
   effectStackDock = new QDockWidget(i18n("Effect Stack"), this);
   effectStackDock->setObjectName("effect_stack");
-  effectStack = new EffectStackView(this);
+  effectStack = new EffectStackView(&m_audioEffects, &m_videoEffects, &m_customEffects,this);
   effectStackDock->setWidget(effectStack);
   addDockWidget(Qt::TopDockWidgetArea, effectStackDock);
   
index a69129ff5560cb6795f7d245f4886889dd76e28b..ef50c768922dbf47aa2807681238dea32844ed23 100644 (file)
@@ -104,6 +104,8 @@ void ParameterPlotter::mouseMoveEvent ( QMouseEvent * event ) {
                                                if ( newx>points[p-1]->x() && newx<points[p+1]->x() && m_moveX)
                                                        movepoint->setX(movepoint->x()+delta.x()*dataRect().width()/pixRect().width() );
                                        }
+                                       if (m_moveTimeline && (m_moveX|| m_moveY) )
+                                               emit updateFrame(0);
                                        replacePlotObject(i,o);
                                        oldmousepoint=event->pos();
                                }
@@ -119,8 +121,12 @@ void ParameterPlotter::mousePressEvent ( QMouseEvent * event ) {
        if (list.size() > 0){
                movepoint=list[0];
                oldmousepoint=event->pos();
-       }else
+       }else{
+               if (m_newPoints){
+                       //setup new points
+               }
                movepoint=NULL;
+       }
 }
 
 void ParameterPlotter::setMoveX(bool b){
index ae0e694f47c27c8dd12e5df746d1ca50690d1e01..a8c3a98027c1ba229859371f056036ef8ab8e3f6 100644 (file)
@@ -46,5 +46,6 @@ class ParameterPlotter : public KPlotWidget {
                void setPointLists(const QList< QPair<QString, QMap<int,QVariant> > >&,int,int);
        signals:
                void parameterChanged(QList< QPair<QString, QMap<int,QVariant> > > );
+               void updateFrame(int);
        
 };
index fce374290aacb13cd0d28a1f6f109434afee62f5..0fc695c6d456f9fc0a4085988700c551e28aba89 100644 (file)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>838</width>
-    <height>636</height>
+    <width>870</width>
+    <height>671</height>
    </rect>
   </property>
   <property name="sizePolicy" >
            <verstretch>0</verstretch>
           </sizepolicy>
          </property>
+         <property name="dragDropMode" >
+          <enum>QAbstractItemView::InternalMove</enum>
+         </property>
+         <property name="alternatingRowColors" >
+          <bool>true</bool>
+         </property>
+         <property name="movement" >
+          <enum>QListView::Free</enum>
+         </property>
         </widget>
        </item>
        <item>