Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
VideoLAN
VLMC
Commits
56d5057c
Commit
56d5057c
authored
Jul 26, 2010
by
Hugo Beauzée-Luyssen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
EffectsEngine: Allowing filter drag and drop to the timeline.
parent
21ee39e1
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
136 additions
and
35 deletions
+136
-35
src/CMakeLists.txt
src/CMakeLists.txt
+2
-0
src/Gui/MainWindow.cpp
src/Gui/MainWindow.cpp
+8
-8
src/Gui/effectsengine/EffectsList.cpp
src/Gui/effectsengine/EffectsList.cpp
+2
-18
src/Gui/effectsengine/EffectsList.h
src/Gui/effectsengine/EffectsList.h
+0
-7
src/Gui/effectsengine/EffectsListView.cpp
src/Gui/effectsengine/EffectsListView.cpp
+59
-0
src/Gui/effectsengine/EffectsListView.h
src/Gui/effectsengine/EffectsListView.h
+30
-0
src/Gui/effectsengine/ui/EffectsList.ui
src/Gui/effectsengine/ui/EffectsList.ui
+12
-2
src/Gui/timeline/Timeline.cpp
src/Gui/timeline/Timeline.cpp
+19
-0
src/Gui/timeline/Timeline.h
src/Gui/timeline/Timeline.h
+3
-0
src/Renderer/WorkflowRenderer.cpp
src/Renderer/WorkflowRenderer.cpp
+1
-0
No files found.
src/CMakeLists.txt
View file @
56d5057c
...
...
@@ -153,6 +153,7 @@ ELSE(NOT WITH_GUI)
Gui/UndoStack.cpp
Gui/WorkflowFileRendererDialog.cpp
Gui/effectsengine/EffectsList.cpp
Gui/effectsengine/EffectsListView.cpp
Gui/export/RendererSettings.cpp
Gui/export/ShareOnYoutube.cpp
Gui/import/ImportController.cpp
...
...
@@ -216,6 +217,7 @@ ELSE(NOT WITH_GUI)
Gui/UndoStack.h
Gui/WorkflowFileRendererDialog.h
Gui/effectsengine/EffectsList.h
Gui/effectsengine/EffectsListView.h
Gui/export/RendererSettings.h
Gui/export/ShareOnYoutube.h
Gui/import/ImportController.h
...
...
src/Gui/MainWindow.cpp
View file @
56d5057c
...
...
@@ -425,7 +425,15 @@ MainWindow::createStatusBar()
void
MainWindow
::
initializeDockWidgets
(
void
)
{
DockWidgetManager
*
dockManager
=
DockWidgetManager
::
getInstance
();
//FIXME !!!
EffectsList
*
effectsList
=
new
EffectsList
(
this
);
dockManager
->
addDockedWidget
(
effectsList
,
QT_TRANSLATE_NOOP
(
"DockWidgetManager"
,
"Effects List"
),
Qt
::
AllDockWidgetAreas
,
QDockWidget
::
AllDockWidgetFeatures
,
Qt
::
LeftDockWidgetArea
);
EffectsEngine
::
getInstance
()
->
browseDirectory
(
"/usr/local/frei0r/lib/"
);
m_renderer
=
new
WorkflowRenderer
();
...
...
@@ -435,8 +443,6 @@ MainWindow::initializeDockWidgets( void )
m_timeline
->
show
();
setCentralWidget
(
m_timeline
);
DockWidgetManager
*
dockManager
=
DockWidgetManager
::
getInstance
();
m_clipPreview
=
new
PreviewWidget
(
this
);
m_clipPreview
->
setRenderer
(
new
ClipRenderer
);
dockManager
->
addDockedWidget
(
m_clipPreview
,
...
...
@@ -457,12 +463,6 @@ MainWindow::initializeDockWidgets( void )
KeyboardShortcutHelper
*
renderShortcut
=
new
KeyboardShortcutHelper
(
"keyboard/renderpreview"
,
this
);
connect
(
renderShortcut
,
SIGNAL
(
activated
()
),
m_projectPreview
,
SLOT
(
on_pushButtonPlay_clicked
()
)
);
EffectsList
*
effectsList
=
new
EffectsList
(
this
);
dockManager
->
addDockedWidget
(
effectsList
,
QT_TRANSLATE_NOOP
(
"DockWidgetManager"
,
"Effects List"
),
Qt
::
AllDockWidgetAreas
,
QDockWidget
::
AllDockWidgetFeatures
,
Qt
::
LeftDockWidgetArea
);
QDockWidget
*
dock
=
dockManager
->
addDockedWidget
(
UndoStack
::
getInstance
(
this
),
QT_TRANSLATE_NOOP
(
"DockWidgetManager"
,
"History"
),
Qt
::
AllDockWidgetAreas
,
...
...
src/Gui/effectsengine/EffectsList.cpp
View file @
56d5057c
...
...
@@ -24,32 +24,16 @@
#include "EffectsEngine/EffectsEngine.h"
#include "ui_EffectsList.h"
#include <QStandardItemModel>
EffectsList
::
EffectsList
(
QWidget
*
parent
)
:
QWidget
(
parent
),
m_ui
(
new
Ui
::
EffectsList
)
{
m_ui
->
setupUi
(
this
);
m_filtersModel
=
new
QStandardItemModel
(
this
);
m_effectsModel
=
new
QStandardItemModel
(
this
);
m_ui
->
filterList
->
setModel
(
m_filtersModel
);
m_ui
->
effectsList
->
setModel
(
m_effectsModel
);
connect
(
EffectsEngine
::
getInstance
(),
SIGNAL
(
effectAdded
(
Effect
*
,
Effect
::
Type
)
),
this
,
SLOT
(
effectAdded
(
Effect
*
,
Effect
::
Type
)
)
);
m_ui
->
filterList
->
setType
(
Effect
::
Filter
);
m_ui
->
effectsList
->
setType
(
Effect
::
Mixer2
);
}
EffectsList
::~
EffectsList
()
{
delete
m_ui
;
}
void
EffectsList
::
effectAdded
(
Effect
*
effect
,
Effect
::
Type
type
)
{
if
(
type
==
Effect
::
Filter
)
m_filtersModel
->
appendRow
(
new
QStandardItem
(
effect
->
name
()
)
);
else
m_effectsModel
->
appendRow
(
new
QStandardItem
(
effect
->
name
()
)
);
}
src/Gui/effectsengine/EffectsList.h
View file @
56d5057c
...
...
@@ -26,8 +26,6 @@
#include <QWidget>
#include "EffectsEngine/Effect.h"
class
QStandardItemModel
;
namespace
Ui
{
class
EffectsList
;
...
...
@@ -43,11 +41,6 @@ class EffectsList : public QWidget
private:
Ui
::
EffectsList
*
m_ui
;
QStandardItemModel
*
m_filtersModel
;
QStandardItemModel
*
m_effectsModel
;
public
slots
:
void
effectAdded
(
Effect
*
effect
,
Effect
::
Type
type
);
};
#endif // EFFECTSLIST_H
src/Gui/effectsengine/EffectsListView.cpp
0 → 100644
View file @
56d5057c
#include "EffectsListView.h"
#include "EffectsEngine/EffectsEngine.h"
#include <QApplication>
#include <QMouseEvent>
#include <QStandardItem>
#include <QtDebug>
EffectsListView
::
EffectsListView
(
QWidget
*
parent
)
:
QListView
(
parent
)
{
m_model
=
new
QStandardItemModel
(
this
);
connect
(
EffectsEngine
::
getInstance
(),
SIGNAL
(
effectAdded
(
Effect
*
,
Effect
::
Type
)
),
this
,
SLOT
(
effectAdded
(
Effect
*
,
Effect
::
Type
)
)
);
setModel
(
m_model
);
setEditTriggers
(
QListView
::
NoEditTriggers
);
setDragEnabled
(
true
);
setSelectionMode
(
QAbstractItemView
::
MultiSelection
);
}
void
EffectsListView
::
effectAdded
(
Effect
*
effect
,
Effect
::
Type
type
)
{
if
(
type
==
m_type
)
m_model
->
appendRow
(
new
QStandardItem
(
effect
->
name
()
)
);
}
void
EffectsListView
::
setType
(
Effect
::
Type
type
)
{
m_type
=
type
;
}
void
EffectsListView
::
mousePressEvent
(
QMouseEvent
*
event
)
{
QListView
::
mousePressEvent
(
event
);
if
(
(
event
->
buttons
()
|
Qt
::
LeftButton
)
==
Qt
::
LeftButton
)
m_dragStartPos
=
event
->
pos
();
}
void
EffectsListView
::
mouseMoveEvent
(
QMouseEvent
*
event
)
{
if
(
(
event
->
buttons
()
|
Qt
::
LeftButton
)
!=
Qt
::
LeftButton
)
return
;
if
(
(
event
->
pos
()
-
m_dragStartPos
).
manhattanLength
()
<
QApplication
::
startDragDistance
()
)
return
;
QMimeData
*
mimeData
=
new
QMimeData
;
mimeData
->
setData
(
"vlmc/effect_name"
,
m_model
->
data
(
currentIndex
()
).
toByteArray
()
);
QDrag
*
drag
=
new
QDrag
(
this
);
drag
->
setMimeData
(
mimeData
);
drag
->
exec
(
Qt
::
CopyAction
|
Qt
::
MoveAction
,
Qt
::
CopyAction
);
}
src/Gui/effectsengine/EffectsListView.h
0 → 100644
View file @
56d5057c
#ifndef EFFECTLISTVIEW_H
#define EFFECTLISTVIEW_H
#include "EffectsEngine/Effect.h"
#include <QListView>
class
QStandardItemModel
;
class
EffectsListView
:
public
QListView
{
Q_OBJECT
public:
explicit
EffectsListView
(
QWidget
*
parent
=
0
);
void
setType
(
Effect
::
Type
type
);
protected:
void
mousePressEvent
(
QMouseEvent
*
event
);
void
mouseMoveEvent
(
QMouseEvent
*
event
);
private:
QStandardItemModel
*
m_model
;
Effect
::
Type
m_type
;
QPoint
m_dragStartPos
;
public
slots
:
void
effectAdded
(
Effect
*
effect
,
Effect
::
Type
type
);
};
#endif // EFFECTLISTVIEW_H
src/Gui/effectsengine/ui/EffectsList.ui
View file @
56d5057c
...
...
@@ -25,13 +25,16 @@
</attribute>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout_2"
>
<item>
<widget
class=
"
Q
ListView"
name=
"filterList"
>
<widget
class=
"
Effects
ListView"
name=
"filterList"
>
<property
name=
"editTriggers"
>
<set>
QAbstractItemView::NoEditTriggers
</set>
</property>
<property
name=
"dragEnabled"
>
<bool>
true
</bool>
</property>
<property
name=
"dragDropMode"
>
<enum>
QAbstractItemView::DragOnly
</enum>
</property>
</widget>
</item>
</layout>
...
...
@@ -42,7 +45,7 @@
</attribute>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout_3"
>
<item>
<widget
class=
"
Q
ListView"
name=
"effectsList"
/>
<widget
class=
"
Effects
ListView"
name=
"effectsList"
/>
</item>
</layout>
</widget>
...
...
@@ -50,6 +53,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>
EffectsListView
</class>
<extends>
QListView
</extends>
<header>
effectsengine/EffectsListView.h
</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>
src/Gui/timeline/Timeline.cpp
View file @
56d5057c
...
...
@@ -251,3 +251,22 @@ Timeline::load( const QDomElement &root )
elem
=
elem
.
nextSibling
().
toElement
();
}
}
void
Timeline
::
dragEnterEvent
(
QDragEnterEvent
*
event
)
{
if
(
event
->
mimeData
()
->
hasFormat
(
"vlmc/effect_name"
)
==
true
)
event
->
acceptProposedAction
();
else
event
->
ignore
();
}
void
Timeline
::
dropEvent
(
QDropEvent
*
event
)
{
Effect
*
effect
=
EffectsEngine
::
getInstance
()
->
effect
(
event
->
mimeData
()
->
data
(
"vlmc/effect_name"
)
);
if
(
effect
!=
NULL
)
m_renderer
->
appendEffect
(
effect
);
else
qWarning
()
<<
"Can't find effect name"
<<
event
->
mimeData
()
->
data
(
"vlmc/effect_name"
);
}
src/Gui/timeline/Timeline.h
View file @
56d5057c
...
...
@@ -99,6 +99,9 @@ public slots:
*/
void
actionRemoveClip
(
const
QUuid
&
uuid
,
unsigned
int
track
,
MainWorkflow
::
TrackType
trackType
);
void
dragEnterEvent
(
QDragEnterEvent
*
event
);
void
dropEvent
(
QDropEvent
*
event
);
protected:
virtual
void
changeEvent
(
QEvent
*
e
);
...
...
src/Renderer/WorkflowRenderer.cpp
View file @
56d5057c
...
...
@@ -430,6 +430,7 @@ void
WorkflowRenderer
::
appendEffect
(
Effect
*
effect
,
qint64
start
,
qint64
end
)
{
effect
->
setUsed
(
true
);
effect
->
init
(
m_width
,
m_height
);
m_effects
.
push_back
(
new
EffectsEngine
::
EffectHelper
(
effect
,
start
,
end
)
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment