#include "effectcontrols.h" #include "ui_effectcontrols.h" #include #include #include #include "effects/effects.h" #include "project/clip.h" #include "project/effect.h" #include "ui/collapsiblewidget.h" EffectControls::EffectControls(QWidget *parent) : QDockWidget(parent), ui(new Ui::EffectControls) { ui->setupUi(this); init_effects(); clip = NULL; set_clip(NULL); } void EffectControls::menu_select(QAction* q) { clip->effects.append(create_effect(q->data().toInt(), clip)); set_clip(clip); } EffectControls::~EffectControls() { delete ui; } void EffectControls::on_pushButton_clicked() { int lim; QVector* effect_names; if (clip->track < 0) { lim = VIDEO_EFFECT_COUNT; effect_names = &video_effect_names; } else { lim = AUDIO_EFFECT_COUNT; effect_names = &audio_effect_names; } QMenu effects_menu(this); for (int i=0;isetText(effect_names->at(i)); action->setData(i); effects_menu.addAction(action); } connect(&effects_menu, SIGNAL(triggered(QAction*)), this, SLOT(menu_select(QAction*))); effects_menu.exec(QCursor::pos()); } void EffectControls::set_clip(Clip* c) { // clear ui->scrollAreaWidgetContents if (clip != NULL) { for (int i=0;ieffects.size();i++) { clip->effects.at(i)->container->setParent(NULL); } } ui->pushButton->setEnabled(c != NULL); if (c != NULL) { for (int i=0;ieffects.size();i++) { static_cast(ui->scrollAreaWidgetContents->layout())->insertWidget(i, c->effects.at(i)->container); } } clip = c; }