connect(picker, SIGNAL(colorPicked(QColor)), this, SLOT(setColor(QColor)));
connect(picker, SIGNAL(displayMessage(const QString&, int)), this, SIGNAL(displayMessage(const QString&, int)));
+ connect(picker, SIGNAL(disableCurrentFilter(bool)), this, SIGNAL(disableCurrentFilter(bool)));
connect(m_button, SIGNAL(changed(QColor)), this, SIGNAL(modified()));
}
/** @brief Emitted whenever a different color was choosen. */
void modified();
void displayMessage(const QString&, int);
+ /** @brief When user wants to pick a color, it's better to disable filter so we get proper color values. */
+ void disableCurrentFilter(bool);
};
#endif
void ColorPickerWidget::slotSetupEventFilter()
{
+ emit disableCurrentFilter(true);
m_filterActive = true;
setFocus();
installEventFilter(this);
releaseMouse();
releaseKeyboard();
removeEventFilter(this);
+ emit disableCurrentFilter(false);
}
bool ColorPickerWidget::eventFilter(QObject *object, QEvent *event)
signals:
void colorPicked(QColor);
void displayMessage(const QString&, int);
+ /** @brief When user wants to pick a color, it's better to disable filter so we get proper color values. */
+ void disableCurrentFilter(bool);
};
#endif
}
connect(collapseButton, SIGNAL(clicked()), this, SLOT(slotSwitch()));
- connect(enabledButton, SIGNAL(toggled(bool)), this, SLOT(slotEnable(bool)));
+ connect(enabledButton, SIGNAL(toggled(bool)), this, SLOT(slotDisable(bool)));
connect(buttonUp, SIGNAL(clicked()), this, SLOT(slotEffectUp()));
connect(buttonDown, SIGNAL(clicked()), this, SLOT(slotEffectDown()));
connect(buttonDel, SIGNAL(clicked()), this, SLOT(slotDeleteEffect()));
QWidget::mouseReleaseEvent(event);
}
-void CollapsibleEffect::slotEnable(bool disable, bool emitInfo)
+void CollapsibleEffect::slotDisable(bool disable, bool emitInfo)
{
title->setEnabled(!disable);
enabledButton->blockSignals(true);
}
else {
m_paramWidget = new ParameterContainer(m_effect, info, metaInfo, widgetFrame);
+ connect(m_paramWidget, SIGNAL(disableCurrentFilter(bool)), this, SLOT(slotDisableEffect(bool)));
if (m_effect.firstChildElement("parameter").isNull()) {
// Effect has no parameter, don't allow expand
collapseButton->setEnabled(false);
}
+void CollapsibleEffect::slotDisableEffect(bool disable)
+{
+ title->setEnabled(!disable);
+ enabledButton->blockSignals(true);
+ enabledButton->setChecked(disable);
+ enabledButton->blockSignals(false);
+ enabledButton->setIcon(disable ? KIcon("novisible") : KIcon("visible"));
+ m_effect.setAttribute("disable", disable ? 1 : 0);
+ emit effectStateChanged(disable, effectIndex(), isActive() && needsMonitorEffectScene());
+}
+
bool CollapsibleEffect::isGroup() const
{
return false;
public slots:
void slotSyncEffectsPos(int pos);
- void slotEnable(bool enable, bool emitInfo = true);
+ void slotDisable(bool disable, bool emitInfo = true);
void slotResetEffect();
private slots:
void slotUnGroup();
/** @brief A sub effect parameter was changed */
void slotUpdateRegionEffectParams(const QDomElement /*old*/, const QDomElement /*e*/, int /*ix*/);
+ /** @brief Dis/enable effect before processing an operation (color picker) */
+ void slotDisableEffect(bool disable);
private:
ParameterContainer *m_paramWidget;
enabledButton->setIcon(disable ? KIcon("novisible") : KIcon("visible"));
enabledButton->blockSignals(false);
for (int i = 0; i < m_subWidgets.count(); i++)
- m_subWidgets.at(i)->slotEnable(disable, emitInfo);
+ m_subWidgets.at(i)->slotDisable(disable, emitInfo);
}
void CollapsibleGroup::slotDeleteGroup()
// Disable all effects
QList <int> indexes;
for (int i = 0; i < m_effects.count(); i++) {
- m_effects.at(i)->slotEnable(disabled, false);
+ m_effects.at(i)->slotDisable(disabled, false);
indexes << m_effects.at(i)->effectIndex();
}
// Take care of groups
m_valueItems[paramName] = choosecolor;
connect(choosecolor, SIGNAL(displayMessage(const QString&, int)), this, SIGNAL(displayMessage(const QString&, int)));
connect(choosecolor, SIGNAL(modified()) , this, SLOT(slotCollectAllParameters()));
+ connect(choosecolor, SIGNAL(disableCurrentFilter(bool)) , this, SIGNAL(disableCurrentFilter(bool)));
} else if (type == "position") {
int pos = value.toInt();
if (effect.attribute("id") == "fadein" || effect.attribute("id") == "fade_from_black") {
signals:
void parameterChanged(const QDomElement, const QDomElement, int);
void syncEffectsPos(int);
- void effectStateChanged(bool);
+ void disableCurrentFilter(bool);
void checkMonitorPosition(int);
void seekTimeline(int);
void showComments(bool);
Mlt::Producer trackProducer(tt);
delete tt;
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
+ if (!trackPlaylist.is_valid()) continue;
int clipNb = trackPlaylist.count();
for (int i = 0; i < clipNb; i++) {
Mlt::Producer *c = trackPlaylist.get_clip(i);
Mlt::Producer trackProducer(tt);
delete tt;
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
+ if (!trackPlaylist.is_valid()) continue;
int clipNb = trackPlaylist.count();
for (int i = 0; i < clipNb; i++) {
Mlt::Producer *c = trackPlaylist.get_clip(i);