[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdenlive/Applications/16.04] src: Fix editing of titles / slideshows
From: Jean-Baptiste Mardelle <jb () kdenlive ! org>
Date: 2016-03-31 20:37:33
Message-ID: E1aljLR-0001XQ-NC () scm ! kde ! org
[Download RAW message or body]
Git commit c88d97b9c144c434c5b81a4a93cfc249a7336f3c by Jean-Baptiste Mardelle.
Committed on 31/03/2016 at 20:37.
Pushed by mardelle into branch 'Applications/16.04'.
Fix editing of titles / slideshows
M +35 -40 src/bin/bin.cpp
M +2 -0 src/bin/bin.h
M +5 -0 src/mltcontroller/clippropertiescontroller.cpp
M +1 -0 src/mltcontroller/clippropertiescontroller.h
http://commits.kde.org/kdenlive/c88d97b9c144c434c5b81a4a93cfc249a7336f3c
diff --git a/src/bin/bin.cpp b/src/bin/bin.cpp
index 0f32e07..64ef6e4 100644
--- a/src/bin/bin.cpp
+++ b/src/bin/bin.cpp
@@ -1537,17 +1537,45 @@ void Bin::slotItemDoubleClicked(const QModelIndex &ix, const \
QPoint pos) if (item->itemType() == AbstractProjectItem::ClipItem) {
ProjectClip *clip = static_cast<ProjectClip*>(item);
if (clip) {
- if (clip->clipType() != Text) {
- m_editAction->trigger();
- } else {
- m_propertiesPanel->setEnabled(false);
+ if (clip->clipType() == Text) {
showTitleWidget(clip);
+ } else if (clip->clipType() == SlideShow) {
+ showSlideshowWidget(clip);
+ } else if (clip->clipType() == QText) {
+ ClipCreationDialog::createQTextClip(m_doc, getFolderInfo(), \
this, clip); + } else {
+ m_editAction->trigger();
}
}
}
}
}
+void Bin::slotEditClip()
+{
+ QString panelId = m_propertiesPanel->property("clipId").toString();
+ QModelIndex current = m_proxyModel->selectionModel()->currentIndex();
+ AbstractProjectItem *item = \
static_cast<AbstractProjectItem*>(m_proxyModel->mapToSource(current).internalPointer());
+ if (item->clipId() != panelId) {
+ // wrong clip
+ return;
+ }
+ ProjectClip *clip = qobject_cast<ProjectClip*>(item);
+ switch (clip->clipType()) {
+ case Text:
+ showTitleWidget(clip);
+ break;
+ case SlideShow:
+ showSlideshowWidget(clip);
+ break;
+ case QText:
+ ClipCreationDialog::createQTextClip(m_doc, getFolderInfo(), this, clip);
+ break;
+ default:
+ break;
+ }
+}
+
void Bin::slotSwitchClipProperties(bool display)
{
m_propertiesDock->toggleViewAction()->trigger();
@@ -1563,11 +1591,7 @@ void Bin::slotSwitchClipProperties(const QModelIndex &ix)
// User clicked in the icon, open clip properties
AbstractProjectItem *item = \
static_cast<AbstractProjectItem*>(m_proxyModel->mapToSource(ix).internalPointer()); \
ProjectClip *clip = qobject_cast<ProjectClip*>(item);
- if (clip && clip->clipType() == Text) {
- m_propertiesPanel->setEnabled(false);
- } else {
- m_propertiesPanel->setEnabled(true);
- }
+ m_propertiesPanel->setEnabled(true);
showClipProperties(clip);
}
else {
@@ -1594,45 +1618,16 @@ void Bin::showClipProperties(ProjectClip *clip, bool \
forceRefresh, bool openExte return;
}
// Special case: text clips open title widget
- if (clip->clipType() == Text) {
- foreach (QWidget * w, \
m_propertiesPanel->findChildren<ClipPropertiesController*>()) {
- delete w;
- }
- m_propertiesPanel->setProperty("clipId", clip->clipId());
- m_propertiesPanel->setEnabled(false);
- return;
- }
- if (clip->clipType() == SlideShow) {
- // Cleanup widget for new content
- foreach (QWidget * w, \
m_propertiesPanel->findChildren<ClipPropertiesController*>()) {
- delete w;
- }
- m_propertiesPanel->setProperty("clipId", clip->clipId());
- m_propertiesPanel->setEnabled(false);
- showSlideshowWidget(clip);
- return;
- }
- if (clip->clipType() == QText) {
- // Cleanup widget for new content
- foreach (QWidget * w, \
m_propertiesPanel->findChildren<ClipPropertiesController*>()) {
- delete w;
- }
- m_propertiesPanel->setProperty("clipId", clip->clipId());
- m_propertiesPanel->setEnabled(false);
- ClipCreationDialog::createQTextClip(m_doc, getFolderInfo(), this, clip);
- return;
- }
+ m_propertiesPanel->setEnabled(true);
QString panelId = m_propertiesPanel->property("clipId").toString();
if (!forceRefresh && panelId == clip->clipId()) {
// the properties panel is already displaying current clip, do nothing
- m_propertiesPanel->setEnabled(true);
return;
}
// Cleanup widget for new content
foreach (QWidget * w, \
m_propertiesPanel->findChildren<ClipPropertiesController*>()) { delete w;
}
- m_propertiesPanel->setEnabled(true);
m_propertiesPanel->setProperty("clipId", clip->clipId());
QVBoxLayout *lay = static_cast<QVBoxLayout*>(m_propertiesPanel->layout());
if (lay == 0) {
@@ -1645,7 +1640,7 @@ void Bin::showClipProperties(ProjectClip *clip, bool \
forceRefresh, bool openExte connect(panel, SIGNAL(updateClipProperties(const QString \
&, QMap<QString, QString>, QMap<QString, QString>)), this, \
SLOT(slotEditClipCommand(const QString &, QMap<QString, QString>, QMap<QString, \
QString>)));
connect(panel, SIGNAL(seekToFrame(int)), m_monitor, SLOT(slotSeek(int)));
connect(panel, SIGNAL(addMarkers(QString,QList<CommentedTime>)), this, \
SLOT(slotAddClipMarker(QString,QList<CommentedTime>)));
-
+ connect(panel, SIGNAL(editClip()), this, SLOT(slotEditClip()));
connect(panel, SIGNAL(editAnalysis(QString,QString,QString)), this, \
SLOT(slotAddClipExtraData(QString,QString,QString)));
connect(panel, SIGNAL(loadMarkers(QString)), this, \
SLOT(slotLoadClipMarkers(QString)));
diff --git a/src/bin/bin.h b/src/bin/bin.h
index 739aca7..3f859f7 100644
--- a/src/bin/bin.h
+++ b/src/bin/bin.h
@@ -560,6 +560,8 @@ private slots:
void doRefreshAudioThumbs(const QString &id);
/** @brief Enable item view and hide message */
void slotMessageActionTriggered();
+ /** @brief Request editing of title or slideshow clip */
+ void slotEditClip();
public slots:
void slotThumbnailReady(const QString &id, const QImage &img, bool fromFile = \
false);
diff --git a/src/mltcontroller/clippropertiescontroller.cpp \
b/src/mltcontroller/clippropertiescontroller.cpp index 09d7c81..06a7c2a 100644
--- a/src/mltcontroller/clippropertiescontroller.cpp
+++ b/src/mltcontroller/clippropertiescontroller.cpp
@@ -222,6 +222,11 @@ ClipPropertiesController::ClipPropertiesController(Timecode tc, \
ClipController *
// Force properties
QVBoxLayout *vbox = new QVBoxLayout;
+ if (m_type == Text || m_type == SlideShow || m_type == QText) {
+ QPushButton *editButton = new QPushButton(i18n("Edit Clip"), this);
+ connect(editButton, SIGNAL(clicked()), this, SIGNAL(editClip()));
+ vbox->addWidget(editButton);
+ }
if (m_type == Color || m_type == Image || m_type == AV || m_type == Video || \
m_type == TextTemplate) { // Edit duration widget
m_originalProperties.insert(QStringLiteral("out"), m_properties.get("out"));
diff --git a/src/mltcontroller/clippropertiescontroller.h \
b/src/mltcontroller/clippropertiescontroller.h index f29d086..7c2517f 100644
--- a/src/mltcontroller/clippropertiescontroller.h
+++ b/src/mltcontroller/clippropertiescontroller.h
@@ -120,6 +120,7 @@ signals:
void loadMarkers(const QString &);
void saveMarkers(const QString &);
void editAnalysis(const QString &id, const QString &name, const QString &value);
+ void editClip();
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic