From 4665d7229615735262547a720d535a7de507a6ac Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 6 Oct 2008 15:57:20 +0000 Subject: [PATCH] Fix effect stack "add new effect" menu, make custom effects go in the correct submenu svn path=/branches/KDE4/; revision=2436 --- src/effectstackview.cpp | 45 ++++------------------------------- src/effectstackview.h | 2 +- src/mainwindow.cpp | 7 ++++++ src/widgets/effectstack_ui.ui | 3 +++ 4 files changed, 16 insertions(+), 41 deletions(-) diff --git a/src/effectstackview.cpp b/src/effectstackview.cpp index 1812e6f4..de232bd8 100644 --- a/src/effectstackview.cpp +++ b/src/effectstackview.cpp @@ -58,7 +58,6 @@ EffectStackView::EffectStackView(QWidget *parent) connect(ui.effectlist, SIGNAL(itemSelectionChanged()), this , SLOT(slotItemSelectionChanged())); connect(ui.effectlist, SIGNAL(itemChanged(QListWidgetItem *)), this , SLOT(slotItemChanged(QListWidgetItem *))); - 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())); @@ -74,6 +73,10 @@ EffectStackView::EffectStackView(QWidget *parent) setEnabled(false); } +void EffectStackView::setMenu(QMenu *menu) { + ui.buttonNew->setMenu(menu); +} + void EffectStackView::slotSaveEffect() { QString name = QInputDialog::getText(this, i18n("Save Effect"), i18n("Name for saved effect: ")); if (name.isEmpty()) return; @@ -88,6 +91,7 @@ void EffectStackView::slotSaveEffect() { effect = doc.firstChild().toElement(); effect.removeAttribute("kdenlive_ix"); effect.setAttribute("id", name); + effect.setAttribute("type", "custom"); QDomElement effectname = effect.firstChildElement("name"); effect.removeChild(effectname); effectname = doc.createElement("name"); @@ -243,45 +247,6 @@ void EffectStackView::slotResetEffect() { } } -void EffectStackView::slotNewEffect() { - int ix = ui.effectlist->currentRow(); - QMenu *displayMenu = new QMenu(this); - displayMenu->setTitle("Filters"); - foreach(const QString &type, effectLists.keys()) { - QAction *a = new QAction(type, displayMenu); - EffectsList *list = effectLists[type]; - - QMenu *parts = new QMenu(type, displayMenu); - parts->setTitle(type); - foreach(const QString &name, list->effectNames()) { - QAction *entry = new QAction(name, parts); - entry->setData(name); - entry->setToolTip(list->getInfo(name)); - entry->setStatusTip(list->getInfo(name)); - parts->addAction(entry); - //QAction - } - displayMenu->addMenu(parts); - - } - - QAction *result = displayMenu->exec(mapToGlobal(ui.buttonNew->pos() + ui.buttonNew->rect().bottomRight())); - - if (result) { - //TODO effects.append(result->data().toString()); - foreach(const EffectsList *e, effectLists.values()) { - QDomElement dom = e->getEffectByName(result->data().toString()); - if (clipref) - clipref->addEffect(dom); - slotClipItemSelected(clipref); - } - - setupListView(ix); - //kDebug()<< result->data(); - } - delete displayMenu; - -} void EffectStackView::raiseWindow(QWidget* dock) { if (clipref && dock) diff --git a/src/effectstackview.h b/src/effectstackview.h index ebafffa3..90e43a46 100644 --- a/src/effectstackview.h +++ b/src/effectstackview.h @@ -30,6 +30,7 @@ public: EffectStackView(QWidget *parent = 0); void raiseWindow(QWidget*); void clear(); + void setMenu(QMenu *menu); private: Ui::EffectStack_UI ui; @@ -48,7 +49,6 @@ private slots: void slotItemUp(); void slotItemDown(); void slotItemDel(); - void slotNewEffect(); void slotResetEffect(); void slotItemChanged(QListWidgetItem *item); void slotSaveEffect(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 43652b14..93b4de4d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -232,6 +232,13 @@ MainWindow::MainWindow(QWidget *parent) m_customEffectsMenu->addAction(action); } + QMenu *newEffect = new QMenu(this); + newEffect->addMenu(videoEffectsMenu); + newEffect->addMenu(audioEffectsMenu); + newEffect->addMenu(m_customEffectsMenu); + effectStack->setMenu(newEffect); + + QMenu *viewMenu = static_cast(factory()->container("dockwindows", this)); const QList viewActions = createPopupMenu()->actions(); viewMenu->insertActions(NULL, viewActions); diff --git a/src/widgets/effectstack_ui.ui b/src/widgets/effectstack_ui.ui index a4a22ee3..96ddf220 100644 --- a/src/widgets/effectstack_ui.ui +++ b/src/widgets/effectstack_ui.ui @@ -52,6 +52,9 @@ N + + QToolButton::InstantPopup + -- 2.39.5