]> git.sesse.net Git - kdenlive/blob - src/effectstackview.cpp
update in effectstack for setup
[kdenlive] / src / effectstackview.cpp
1 /***************************************************************************
2                           effecstackview.cpp  -  description
3                              -------------------
4     begin                : Feb 15 2008
5     copyright            : (C) 2008 by Marco Gittler
6     email                : g.marco@freenet.de
7  ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  ***************************************************************************/
17
18 #include <KDebug>
19 #include <KLocale>
20
21 #include "effectstackview.h"
22 #include "clipitem.h"
23 #include <QHeaderView>
24
25 EffectStackView::EffectStackView( QWidget *parent)
26 : QWidget(parent)
27 {
28         ui.setupUi(this);
29         //ui.effectlist->horizontalHeader()->setVisible(false);
30         //ui.effectlist->verticalHeader()->setVisible(false);
31         activeRow=-1;
32         clipref=NULL;
33         
34         ui.buttonNew->setIcon(KIcon("document-new"));
35         ui.buttonUp->setIcon(KIcon("go-up"));
36         ui.buttonDown->setIcon(KIcon("go-down"));
37         ui.buttonDel->setIcon(KIcon("trash-empty"));
38         
39         ui.buttonLeftRight->setIcon(KIcon("go-next"));//better icons needed
40         ui.buttonUpDown->setIcon(KIcon("go-up"));
41         ui.buttonShowInTimeline->setIcon(KIcon("kmplayer"));
42         ui.buttonHelp->setIcon(KIcon("help-about"));
43         ui.buttonNewPoints->setIcon(KIcon("xedit"));
44         
45         connect (ui.effectlist, SIGNAL ( itemSelectionChanged()), this , SLOT( slotItemSelectionChanged() ));
46         connect (ui.buttonUp, SIGNAL (clicked()), this, SLOT (slotItemUp()) );
47         connect (ui.buttonDown, SIGNAL (clicked()), this, SLOT (slotItemDown()) );
48         connect (ui.buttonDel, SIGNAL (clicked()), this, SLOT (slotItemDel()) );
49         connect (ui.buttonLeftRight, SIGNAL (clicked()), this , SLOT ( slotSetMoveX() ) );
50         connect (ui.buttonUpDown, SIGNAL (clicked()), this , SLOT ( slotSetMoveY() ) );
51         connect (ui.buttonShowInTimeline, SIGNAL (clicked()), this , SLOT ( slotShowInTimeline() ) );
52         connect (ui.buttonNew, SIGNAL (clicked()), this , SLOT ( slotSetNew() ) );
53         connect (ui.buttonHelp, SIGNAL (clicked()), this , SLOT ( slotSetHelp() ) );
54
55         ui.infoBox->hide();     
56         updateButtonStatus();
57
58         
59         QList< QPair<QString, QMap<int,QVariant> > > points;
60         QMap<int,QVariant> data;
61         data[0]=0.1;
62         data[100]=30;
63         data[255]=50;
64         data[300]=100;
65         QPair<QString,QMap<int,QVariant> > testpair("gray",data);
66         points.append(testpair);
67         
68         QMap<int,QVariant> data1;
69         data1[0]=20;
70         data1[10]=70;
71         data1[155]=110;
72         data1[300]=133;
73         QPair<QString,QMap<int,QVariant> > testpair1("dx",data1);
74         points.append(testpair1);
75         
76         ui.kplotwidget->setPointLists(points,0,305);
77         
78 }
79
80 void EffectStackView::slotClipItemSelected(ClipItem* c)
81 {
82         clipref=c;
83         if (clipref==NULL)
84                 return;
85         effects=clipref->effectNames();
86         setupListView(effects);
87         
88 }
89
90 void EffectStackView::setupListView(const QStringList& effects_list){
91
92         ui.effectlist->clear();
93         ui.effectlist->addItems(effects);
94         for (int i=0;i< ui.effectlist->count();i++){
95                 QListWidgetItem* item=ui.effectlist->item(i);
96                 item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
97                 item->setCheckState(Qt::Checked);
98                 if (activeRow==i)
99                         item->setSelected(true);
100         }
101
102 }
103
104 void EffectStackView::slotItemSelectionChanged(){
105         
106         if (ui.effectlist->currentItem() && ui.effectlist->currentItem()->isSelected() ){
107                 activeRow=ui.effectlist->row( ui.effectlist->currentItem() );
108         }else{
109                 activeRow=-1;
110         }
111         ui.buttonDel->setEnabled( activeRow!=-1);
112         ui.buttonUp->setEnabled( activeRow >0 );
113         ui.buttonDown->setEnabled( (activeRow<ui.effectlist->count()-1) && activeRow>=0 );
114 }
115
116 void EffectStackView::slotItemUp(){
117         if (activeRow>0 && activeRow <effects.size() ){
118                 effects.swap(activeRow, activeRow-1);
119         }
120         activeRow--;
121         setupListView(effects);
122         
123 }
124
125 void EffectStackView::slotItemDown(){
126         if (activeRow<effects.size()-1  ){
127                 effects.swap(activeRow, activeRow+1);
128         }
129         activeRow++;
130         setupListView(effects);
131         
132 }
133
134 void EffectStackView::slotItemDel(){
135         if (activeRow<effects.size() && activeRow>=0  ){
136                 effects.removeAt(activeRow);
137         }
138         if (effects.size()>0 && activeRow>0)
139         activeRow--;
140         setupListView(effects);
141         
142 }
143
144 void EffectStackView::slotSetMoveX(){
145         ui.kplotwidget->setMoveX(!ui.kplotwidget->isMoveX());
146         updateButtonStatus();
147 }
148
149 void EffectStackView::slotSetMoveY(){
150         ui.kplotwidget->setMoveY(!ui.kplotwidget->isMoveY());
151         updateButtonStatus();
152 }
153
154 void EffectStackView::slotSetNew(){
155         
156 }
157
158 void EffectStackView::slotSetHelp(){
159         ui.infoBox->setVisible(!ui.infoBox->isVisible());
160         ui.buttonHelp->setDown(ui.infoBox->isVisible());
161 }
162
163 void EffectStackView::slotShowInTimeline(){
164
165         ui.kplotwidget->setMoveTimeLine(!ui.kplotwidget->isMoveTimeline());
166         updateButtonStatus();
167         
168 }
169
170 void EffectStackView::updateButtonStatus(){
171         ui.buttonLeftRight->setDown(ui.kplotwidget->isMoveX());
172         ui.buttonUpDown->setDown(ui.kplotwidget->isMoveY());
173         
174         ui.buttonShowInTimeline->setEnabled( ui.kplotwidget->isMoveX() || ui.kplotwidget->isMoveY ()  );
175         ui.buttonShowInTimeline->setDown(ui.kplotwidget->isMoveTimeline());
176
177 }
178 #include "effectstackview.moc"