nodes: remove graph and merge into project

This commit is contained in:
itsmattkc
2023-02-17 14:13:03 -08:00
parent 491fbacfbc
commit 9745b536f6
62 changed files with 266 additions and 344 deletions
+1 -1
View File
@@ -30,7 +30,7 @@
#include "common/ffmpegutils.h" #include "common/ffmpegutils.h"
#include "common/filefunctions.h" #include "common/filefunctions.h"
#include "conformmanager.h" #include "conformmanager.h"
#include "node/project/project.h" #include "node/project.h"
#include "task/taskmanager.h" #include "task/taskmanager.h"
namespace olive { namespace olive {
+2 -2
View File
@@ -28,12 +28,12 @@
#include <QTranslator> #include <QTranslator>
#include "node/project/footage/footage.h" #include "node/project/footage/footage.h"
#include "node/project/project.h" #include "node/project.h"
#include "node/project/projectviewmodel.h"
#include "node/project/sequence/sequence.h" #include "node/project/sequence/sequence.h"
#include "task/task.h" #include "task/task.h"
#include "tool/tool.h" #include "tool/tool.h"
#include "undo/undostack.h" #include "undo/undostack.h"
#include "widget/projectexplorer/projectviewmodel.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -34,7 +34,7 @@
#include "common/qtutils.h" #include "common/qtutils.h"
#include "dialog/task/task.h" #include "dialog/task/task.h"
#include "exportsavepresetdialog.h" #include "exportsavepresetdialog.h"
#include "node/project/project.h" #include "node/project.h"
#include "node/project/sequence/sequence.h" #include "node/project/sequence/sequence.h"
#include "task/taskmanager.h" #include "task/taskmanager.h"
#include "ui/icons/icons.h" #include "ui/icons/icons.h"
@@ -28,7 +28,7 @@
#include <QLineEdit> #include <QLineEdit>
#include <QRadioButton> #include <QRadioButton>
#include "node/project/project.h" #include "node/project.h"
#include "widget/path/pathwidget.h" #include "widget/path/pathwidget.h"
namespace olive { namespace olive {
+2 -2
View File
@@ -36,8 +36,6 @@ set(OLIVE_SOURCES
node/factory.h node/factory.h
node/globals.cpp node/globals.cpp
node/globals.h node/globals.h
node/graph.cpp
node/graph.h
node/inputdragger.cpp node/inputdragger.cpp
node/inputdragger.h node/inputdragger.h
node/inputimmediate.cpp node/inputimmediate.cpp
@@ -48,6 +46,8 @@ set(OLIVE_SOURCES
node/node.h node/node.h
node/param.cpp node/param.cpp
node/param.h node/param.h
node/project.cpp
node/project.h
node/splitvalue.h node/splitvalue.h
node/traverser.cpp node/traverser.cpp
node/traverser.h node/traverser.h
+5 -7
View File
@@ -21,7 +21,7 @@
#include "ociobase.h" #include "ociobase.h"
#include "node/color/colormanager/colormanager.h" #include "node/color/colormanager/colormanager.h"
#include "node/project/project.h" #include "node/project.h"
namespace olive { namespace olive {
@@ -41,13 +41,11 @@ OCIOBaseNode::OCIOBaseNode() :
SetFlags(kVideoEffect); SetFlags(kVideoEffect);
} }
void OCIOBaseNode::AddedToGraph(NodeGraph *graph) void OCIOBaseNode::AddedToGraph(Project *p)
{ {
if (Project *p = dynamic_cast<Project*>(graph)) { manager_ = p->color_manager();
manager_ = p->color_manager(); connect(manager_, &ColorManager::ConfigChanged, this, &OCIOBaseNode::ConfigChanged);
connect(manager_, &ColorManager::ConfigChanged, this, &OCIOBaseNode::ConfigChanged); ConfigChanged();
ConfigChanged();
}
} }
void OCIOBaseNode::RemovedFromGraph() void OCIOBaseNode::RemovedFromGraph()
+1 -1
View File
@@ -51,7 +51,7 @@ private:
ColorProcessorPtr processor_; ColorProcessorPtr processor_;
private slots: private slots:
void AddedToGraph(NodeGraph *graph); void AddedToGraph(Project *p);
void RemovedFromGraph(); void RemovedFromGraph();
@@ -23,7 +23,7 @@
#include <iostream> #include <iostream>
#include "common/ocioutils.h" #include "common/ocioutils.h"
#include "node/project/project.h" #include "node/project.h"
#include "render/colorprocessor.h" #include "render/colorprocessor.h"
#include "widget/slider/floatslider.h" #include "widget/slider/floatslider.h"
+1 -1
View File
@@ -26,7 +26,7 @@
#include "common/html.h" #include "common/html.h"
#include "core.h" #include "core.h"
#include "node/project/project.h" #include "node/project.h"
#include "widget/nodeparamview/nodeparamviewundo.h" #include "widget/nodeparamview/nodeparamviewundo.h"
namespace olive { namespace olive {
-131
View File
@@ -1,131 +0,0 @@
/***
Olive - Non-Linear Video Editor
Copyright (C) 2022 Olive Team
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
***/
#include "graph.h"
#include <QChildEvent>
namespace olive {
#define super QObject
NodeGraph::NodeGraph()
{
}
NodeGraph::~NodeGraph()
{
Clear();
}
void NodeGraph::Clear()
{
// By deleting the last nodes first, we assume that nodes that are most important are deleted last
// (e.g. Project's ColorManager or ProjectSettingsNode.
for (auto it=node_children_.cbegin(); it!=node_children_.cend(); it++) {
(*it)->SetCachesEnabled(false);
}
while (!node_children_.isEmpty()) {
delete node_children_.last();
}
}
int NodeGraph::GetNumberOfContextsNodeIsIn(Node *node, bool except_itself) const
{
int count = 0;
foreach (Node *ctx, node_children_) {
if (ctx->ContextContainsNode(node) && (!except_itself || ctx != node)) {
count++;
}
}
return count;
}
void NodeGraph::childEvent(QChildEvent *event)
{
super::childEvent(event);
Node* node = dynamic_cast<Node*>(event->child());
if (node) {
if (event->type() == QEvent::ChildAdded) {
node_children_.append(node);
// Connect signals
connect(node, &Node::InputConnected, this, &NodeGraph::InputConnected, Qt::DirectConnection);
connect(node, &Node::InputDisconnected, this, &NodeGraph::InputDisconnected, Qt::DirectConnection);
connect(node, &Node::ValueChanged, this, &NodeGraph::ValueChanged, Qt::DirectConnection);
connect(node, &Node::InputValueHintChanged, this, &NodeGraph::InputValueHintChanged, Qt::DirectConnection);
if (NodeGroup *group = dynamic_cast<NodeGroup*>(node)) {
connect(group, &NodeGroup::InputPassthroughAdded, this, &NodeGraph::GroupAddedInputPassthrough, Qt::DirectConnection);
connect(group, &NodeGroup::InputPassthroughRemoved, this, &NodeGraph::GroupRemovedInputPassthrough, Qt::DirectConnection);
connect(group, &NodeGroup::OutputPassthroughChanged, this, &NodeGraph::GroupChangedOutputPassthrough, Qt::DirectConnection);
}
emit NodeAdded(node);
emit node->AddedToGraph(this);
// Emit input connections
for (auto it=node->input_connections().cbegin(); it!=node->input_connections().cend(); it++) {
if (nodes().contains(it->second)) {
emit InputConnected(it->second, it->first);
}
}
// Emit output connections
for (auto it=node->output_connections().cbegin(); it!=node->output_connections().cend(); it++) {
if (nodes().contains(it->second.node())) {
emit InputConnected(it->first, it->second);
}
}
} else if (event->type() == QEvent::ChildRemoved) {
node_children_.removeOne(node);
// Disconnect signals
disconnect(node, &Node::InputConnected, this, &NodeGraph::InputConnected);
disconnect(node, &Node::InputDisconnected, this, &NodeGraph::InputDisconnected);
disconnect(node, &Node::ValueChanged, this, &NodeGraph::ValueChanged);
disconnect(node, &Node::InputValueHintChanged, this, &NodeGraph::InputValueHintChanged);
if (NodeGroup *group = dynamic_cast<NodeGroup*>(node)) {
disconnect(group, &NodeGroup::InputPassthroughAdded, this, &NodeGraph::GroupAddedInputPassthrough);
disconnect(group, &NodeGroup::InputPassthroughRemoved, this, &NodeGraph::GroupRemovedInputPassthrough);
disconnect(group, &NodeGroup::OutputPassthroughChanged, this, &NodeGraph::GroupChangedOutputPassthrough);
}
emit NodeRemoved(node);
emit node->RemovedFromGraph(this);
// Remove from any contexts
foreach (Node *context, node_children_) {
context->RemoveNodeFromContext(node);
}
}
}
}
}
-111
View File
@@ -1,111 +0,0 @@
/***
Olive - Non-Linear Video Editor
Copyright (C) 2022 Olive Team
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
***/
#ifndef NODEGRAPH_H
#define NODEGRAPH_H
#include "node/group/group.h"
#include "node/node.h"
namespace olive {
/**
* @brief A collection of nodes
*
* This doesn't technically need to be a derivative of Item, but since both Item and NodeGraph need
* to be QObject derivatives, this simplifies Sequence.
*/
class NodeGraph : public QObject
{
Q_OBJECT
public:
/**
* @brief NodeGraph Constructor
*/
NodeGraph();
/**
* @brief NodeGraph Destructor
*/
virtual ~NodeGraph() override;
/**
* @brief Destructively destroys all nodes in the graph
*/
void Clear();
/**
* @brief Retrieve a complete list of the nodes belonging to this graph
*/
const QVector<Node*>& nodes() const
{
return node_children_;
}
const QVector<Node*>& default_nodes() const
{
return default_nodes_;
}
int GetNumberOfContextsNodeIsIn(Node *node, bool except_itself = false) const;
signals:
/**
* @brief Signal emitted when a Node is added to the graph
*/
void NodeAdded(Node* node);
/**
* @brief Signal emitted when a Node is removed from the graph
*/
void NodeRemoved(Node* node);
void InputConnected(Node *output, const NodeInput& input);
void InputDisconnected(Node *output, const NodeInput& input);
void ValueChanged(const NodeInput& input);
void InputValueHintChanged(const NodeInput& input);
void GroupAddedInputPassthrough(NodeGroup *group, const NodeInput &input);
void GroupRemovedInputPassthrough(NodeGroup *group, const NodeInput &input);
void GroupChangedOutputPassthrough(NodeGroup *group, Node *output);
protected:
void AddDefaultNode(Node* n)
{
default_nodes_.append(n);
}
virtual void childEvent(QChildEvent* event) override;
private:
QVector<Node*> node_children_;
QVector<Node*> default_nodes_;
};
}
#endif // NODEGRAPH_H
+1 -1
View File
@@ -20,7 +20,7 @@
#include "group.h" #include "group.h"
#include "node/graph.h" #include "node/project.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -15,7 +15,7 @@
#include "despill.h" #include "despill.h"
#include "node/project/project.h" #include "node/project.h"
namespace olive { namespace olive {
+7 -6
View File
@@ -28,7 +28,8 @@
#include "common/lerp.h" #include "common/lerp.h"
#include "core.h" #include "core.h"
#include "config/config.h" #include "config/config.h"
#include "project/project.h" #include "node/group/group.h"
#include "project.h"
#include "ui/colorcoding.h" #include "ui/colorcoding.h"
#include "ui/icons/icons.h" #include "ui/icons/icons.h"
#include "widget/nodeparamview/nodeparamviewundo.h" #include "widget/nodeparamview/nodeparamviewundo.h"
@@ -76,9 +77,9 @@ Node::~Node()
} }
} }
NodeGraph *Node::parent() const Project *Node::parent() const
{ {
return static_cast<NodeGraph*>(QObject::parent()); return static_cast<Project*>(QObject::parent());
} }
Project *Node::project() const Project *Node::project() const
@@ -982,7 +983,7 @@ QVector<Node *> Node::CopyDependencyGraph(const QVector<Node *> &nodes, MultiUnd
Node::CopyInputs(nodes.at(i), c, false); Node::CopyInputs(nodes.at(i), c, false);
// Add to graph // Add to graph
NodeGraph* graph = static_cast<NodeGraph*>(nodes.at(i)->parent()); Project* graph = nodes.at(i)->parent();
if (command) { if (command) {
command->add_child(new NodeAddCommand(graph, c)); command->add_child(new NodeAddCommand(graph, c));
} else { } else {
@@ -1113,7 +1114,7 @@ Node *Node::CopyNodeInGraph(Node *node, MultiUndoCommand *command)
} else { } else {
copy = node->copy(); copy = node->copy();
command->add_child(new NodeAddCommand(static_cast<NodeGraph*>(node->parent()), copy)); command->add_child(new NodeAddCommand(node->parent(), copy));
CopyInputs(node, copy, true, command); CopyInputs(node, copy, true, command);
@@ -2010,7 +2011,7 @@ void NodeRemovePositionFromContextCommand::undo()
void NodeRemovePositionFromAllContextsCommand::redo() void NodeRemovePositionFromAllContextsCommand::redo()
{ {
NodeGraph *graph = node_->parent(); Project *graph = node_->parent();
foreach (Node* context, graph->nodes()) { foreach (Node* context, graph->nodes()) {
if (context->ContextContainsNode(node_)) { if (context->ContextContainsNode(node_)) {
+4 -4
View File
@@ -56,7 +56,7 @@ namespace olive {
#define NODE_COPY_FUNCTION(x) \ #define NODE_COPY_FUNCTION(x) \
virtual Node *copy() const override {return new x();} virtual Node *copy() const override {return new x();}
class NodeGraph; class Project;
class Folder; class Folder;
/** /**
@@ -123,7 +123,7 @@ public:
/** /**
* @brief Convenience function - assumes parent is a NodeGraph * @brief Convenience function - assumes parent is a NodeGraph
*/ */
NodeGraph* parent() const; Project *parent() const;
Project* project() const; Project* project() const;
@@ -1275,9 +1275,9 @@ signals:
void InputDataTypeChanged(const QString& id, NodeValue::Type type); void InputDataTypeChanged(const QString& id, NodeValue::Type type);
void AddedToGraph(NodeGraph* graph); void AddedToGraph(Project* graph);
void RemovedFromGraph(NodeGraph* graph); void RemovedFromGraph(Project* graph);
void NodeAddedToContext(Node *node); void NodeAddedToContext(Node *node);
+1 -1
View File
@@ -142,7 +142,7 @@ void TrackList::UpdateTrackIndexesFrom(int index)
} }
} }
NodeGraph *TrackList::GetParentGraph() const Project *TrackList::GetParentGraph() const
{ {
return parent()->parent(); return parent()->parent();
} }
+1 -2
View File
@@ -23,7 +23,6 @@
#include <QObject> #include <QObject>
#include "node/graph.h"
#include "node/output/track/track.h" #include "node/output/track/track.h"
#include "timeline/timelinecommon.h" #include "timeline/timelinecommon.h"
@@ -59,7 +58,7 @@ public:
return track_cache_.size(); return track_cache_.size();
} }
NodeGraph* GetParentGraph() const; Project* GetParentGraph() const;
const QString &track_input() const; const QString &track_input() const;
NodeInput track_input(int element) const; NodeInput track_input(int element) const;
@@ -33,6 +33,8 @@
namespace olive { namespace olive {
#define super QObject
const QString Project::kItemMimeType = QStringLiteral("application/x-oliveprojectitemdata"); const QString Project::kItemMimeType = QStringLiteral("application/x-oliveprojectitemdata");
Project::Project() : Project::Project() :
@@ -65,6 +67,104 @@ Project::Project() :
this, &Project::ColorManagerValueChanged); this, &Project::ColorManagerValueChanged);
} }
Project::~Project()
{
Clear();
}
void Project::Clear()
{
// By deleting the last nodes first, we assume that nodes that are most important are deleted last
// (e.g. Project's ColorManager or ProjectSettingsNode.
for (auto it=node_children_.cbegin(); it!=node_children_.cend(); it++) {
(*it)->SetCachesEnabled(false);
}
while (!node_children_.isEmpty()) {
delete node_children_.last();
}
}
int Project::GetNumberOfContextsNodeIsIn(Node *node, bool except_itself) const
{
int count = 0;
foreach (Node *ctx, node_children_) {
if (ctx->ContextContainsNode(node) && (!except_itself || ctx != node)) {
count++;
}
}
return count;
}
void Project::childEvent(QChildEvent *event)
{
super::childEvent(event);
Node* node = dynamic_cast<Node*>(event->child());
if (node) {
if (event->type() == QEvent::ChildAdded) {
node_children_.append(node);
// Connect signals
connect(node, &Node::InputConnected, this, &Project::InputConnected, Qt::DirectConnection);
connect(node, &Node::InputDisconnected, this, &Project::InputDisconnected, Qt::DirectConnection);
connect(node, &Node::ValueChanged, this, &Project::ValueChanged, Qt::DirectConnection);
connect(node, &Node::InputValueHintChanged, this, &Project::InputValueHintChanged, Qt::DirectConnection);
if (NodeGroup *group = dynamic_cast<NodeGroup*>(node)) {
connect(group, &NodeGroup::InputPassthroughAdded, this, &Project::GroupAddedInputPassthrough, Qt::DirectConnection);
connect(group, &NodeGroup::InputPassthroughRemoved, this, &Project::GroupRemovedInputPassthrough, Qt::DirectConnection);
connect(group, &NodeGroup::OutputPassthroughChanged, this, &Project::GroupChangedOutputPassthrough, Qt::DirectConnection);
}
emit NodeAdded(node);
emit node->AddedToGraph(this);
// Emit input connections
for (auto it=node->input_connections().cbegin(); it!=node->input_connections().cend(); it++) {
if (nodes().contains(it->second)) {
emit InputConnected(it->second, it->first);
}
}
// Emit output connections
for (auto it=node->output_connections().cbegin(); it!=node->output_connections().cend(); it++) {
if (nodes().contains(it->second.node())) {
emit InputConnected(it->first, it->second);
}
}
} else if (event->type() == QEvent::ChildRemoved) {
node_children_.removeOne(node);
// Disconnect signals
disconnect(node, &Node::InputConnected, this, &Project::InputConnected);
disconnect(node, &Node::InputDisconnected, this, &Project::InputDisconnected);
disconnect(node, &Node::ValueChanged, this, &Project::ValueChanged);
disconnect(node, &Node::InputValueHintChanged, this, &Project::InputValueHintChanged);
if (NodeGroup *group = dynamic_cast<NodeGroup*>(node)) {
disconnect(group, &NodeGroup::InputPassthroughAdded, this, &Project::GroupAddedInputPassthrough);
disconnect(group, &NodeGroup::InputPassthroughRemoved, this, &Project::GroupRemovedInputPassthrough);
disconnect(group, &NodeGroup::OutputPassthroughChanged, this, &Project::GroupChangedOutputPassthrough);
}
emit NodeRemoved(node);
emit node->RemovedFromGraph(this);
// Remove from any contexts
foreach (Node *context, node_children_) {
context->RemoveNodeFromContext(node);
}
}
}
}
Folder *Project::root() Folder *Project::root()
{ {
return root_; return root_;
@@ -44,12 +44,34 @@ namespace olive {
* * Project Settings * * Project Settings
* * Window Layout * * Window Layout
*/ */
class Project : public NodeGraph class Project : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
Project(); Project();
virtual ~Project() override;
/**
* @brief Destructively destroys all nodes in the graph
*/
void Clear();
/**
* @brief Retrieve a complete list of the nodes belonging to this graph
*/
const QVector<Node*>& nodes() const
{
return node_children_;
}
const QVector<Node*>& default_nodes() const
{
return default_nodes_;
}
int GetNumberOfContextsNodeIsIn(Node *node, bool except_itself = false) const;
Folder* root(); Folder* root();
QString name() const; QString name() const;
@@ -124,6 +146,38 @@ signals:
void ModifiedChanged(bool e); void ModifiedChanged(bool e);
/**
* @brief Signal emitted when a Node is added to the graph
*/
void NodeAdded(Node* node);
/**
* @brief Signal emitted when a Node is removed from the graph
*/
void NodeRemoved(Node* node);
void InputConnected(Node *output, const NodeInput& input);
void InputDisconnected(Node *output, const NodeInput& input);
void ValueChanged(const NodeInput& input);
void InputValueHintChanged(const NodeInput& input);
void GroupAddedInputPassthrough(NodeGroup *group, const NodeInput &input);
void GroupRemovedInputPassthrough(NodeGroup *group, const NodeInput &input);
void GroupChangedOutputPassthrough(NodeGroup *group, Node *output);
protected:
void AddDefaultNode(Node* n)
{
default_nodes_.append(n);
}
virtual void childEvent(QChildEvent* event) override;
private: private:
QUuid uuid_; QUuid uuid_;
@@ -143,6 +197,10 @@ private:
MainWindowLayoutInfo layout_info_; MainWindowLayoutInfo layout_info_;
QVector<Node*> node_children_;
QVector<Node*> default_nodes_;
private slots: private slots:
void ColorManagerValueChanged(const NodeInput& input, const TimeRange& range); void ColorManagerValueChanged(const NodeInput& input, const TimeRange& range);
-4
View File
@@ -22,9 +22,5 @@ add_subdirectory(serializer)
set(OLIVE_SOURCES set(OLIVE_SOURCES
${OLIVE_SOURCES} ${OLIVE_SOURCES}
node/project/project.h
node/project/project.cpp
node/project/projectviewmodel.h
node/project/projectviewmodel.cpp
PARENT_SCOPE PARENT_SCOPE
) )
@@ -26,6 +26,7 @@
#include "common/xmlutils.h" #include "common/xmlutils.h"
#include "core.h" #include "core.h"
#include "node/group/group.h"
#include "serializer190219.h" #include "serializer190219.h"
#include "serializer210528.h" #include "serializer210528.h"
#include "serializer210907.h" #include "serializer210907.h"
+1 -1
View File
@@ -24,7 +24,7 @@
#include <vector> #include <vector>
#include "common/define.h" #include "common/define.h"
#include "node/project/project.h" #include "node/project.h"
#include "typeserializer.h" #include "typeserializer.h"
namespace olive { namespace olive {
@@ -22,6 +22,7 @@
#include "config/config.h" #include "config/config.h"
#include "node/factory.h" #include "node/factory.h"
#include "node/group/group.h"
namespace olive { namespace olive {
@@ -22,6 +22,7 @@
#include "config/config.h" #include "config/config.h"
#include "node/factory.h" #include "node/factory.h"
#include "node/group/group.h"
namespace olive { namespace olive {
@@ -22,6 +22,7 @@
#include "config/config.h" #include "config/config.h"
#include "node/factory.h" #include "node/factory.h"
#include "node/group/group.h"
namespace olive { namespace olive {
@@ -22,6 +22,7 @@
#include "config/config.h" #include "config/config.h"
#include "node/factory.h" #include "node/factory.h"
#include "node/group/group.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -22,7 +22,7 @@
#define PROJECT_PANEL_H #define PROJECT_PANEL_H
#include "footagemanagementpanel.h" #include "footagemanagementpanel.h"
#include "node/project/project.h" #include "node/project.h"
#include "panel/panel.h" #include "panel/panel.h"
#include "widget/projectexplorer/projectexplorer.h" #include "widget/projectexplorer/projectexplorer.h"
+1 -1
View File
@@ -27,7 +27,7 @@
#include <QTimer> #include <QTimer>
#include "common/define.h" #include "common/define.h"
#include "node/project/project.h" #include "node/project.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -21,7 +21,7 @@
#include "playbackcache.h" #include "playbackcache.h"
#include "node/output/viewer/viewer.h" #include "node/output/viewer/viewer.h"
#include "node/project/project.h" #include "node/project.h"
#include "node/project/sequence/sequence.h" #include "node/project/sequence/sequence.h"
#include "render/diskmanager.h" #include "render/diskmanager.h"
+1 -1
View File
@@ -26,7 +26,7 @@
#include "codec/conformmanager.h" #include "codec/conformmanager.h"
#include "node/input/multicam/multicamnode.h" #include "node/input/multicam/multicamnode.h"
#include "node/inputdragger.h" #include "node/inputdragger.h"
#include "node/project/project.h" #include "node/project.h"
#include "render/diskmanager.h" #include "render/diskmanager.h"
#include "render/rendermanager.h" #include "render/rendermanager.h"
+1 -2
View File
@@ -25,11 +25,10 @@
#include "config/config.h" #include "config/config.h"
#include "node/color/colormanager/colormanager.h" #include "node/color/colormanager/colormanager.h"
#include "node/graph.h"
#include "node/group/group.h" #include "node/group/group.h"
#include "node/node.h" #include "node/node.h"
#include "node/output/viewer/viewer.h" #include "node/output/viewer/viewer.h"
#include "node/project/project.h" #include "node/project.h"
#include "render/projectcopier.h" #include "render/projectcopier.h"
#include "render/renderjobtracker.h" #include "render/renderjobtracker.h"
#include "render/renderticket.h" #include "render/renderticket.h"
+14 -12
View File
@@ -20,6 +20,8 @@
#include "projectcopier.h" #include "projectcopier.h"
#include "node/group/group.h"
namespace olive { namespace olive {
ProjectCopier::ProjectCopier(QObject *parent) : ProjectCopier::ProjectCopier(QObject *parent) :
@@ -39,12 +41,12 @@ void ProjectCopier::SetProject(Project *project)
copy_map_.clear(); copy_map_.clear();
graph_update_queue_.clear(); graph_update_queue_.clear();
disconnect(original_, &NodeGraph::NodeAdded, this, &ProjectCopier::QueueNodeAdd); disconnect(original_, &Project::NodeAdded, this, &ProjectCopier::QueueNodeAdd);
disconnect(original_, &NodeGraph::NodeRemoved, this, &ProjectCopier::QueueNodeRemove); disconnect(original_, &Project::NodeRemoved, this, &ProjectCopier::QueueNodeRemove);
disconnect(original_, &NodeGraph::InputConnected, this, &ProjectCopier::QueueEdgeAdd); disconnect(original_, &Project::InputConnected, this, &ProjectCopier::QueueEdgeAdd);
disconnect(original_, &NodeGraph::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove); disconnect(original_, &Project::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove);
disconnect(original_, &NodeGraph::ValueChanged, this, &ProjectCopier::QueueValueChange); disconnect(original_, &Project::ValueChanged, this, &ProjectCopier::QueueValueChange);
disconnect(original_, &NodeGraph::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange); disconnect(original_, &Project::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange);
} }
original_ = project; original_ = project;
@@ -71,12 +73,12 @@ void ProjectCopier::SetProject(Project *project)
UpdateLastSyncedValue(); UpdateLastSyncedValue();
// Connect signals for future node additions/deletions // Connect signals for future node additions/deletions
connect(original_, &NodeGraph::NodeAdded, this, &ProjectCopier::QueueNodeAdd, Qt::DirectConnection); connect(original_, &Project::NodeAdded, this, &ProjectCopier::QueueNodeAdd, Qt::DirectConnection);
connect(original_, &NodeGraph::NodeRemoved, this, &ProjectCopier::QueueNodeRemove, Qt::DirectConnection); connect(original_, &Project::NodeRemoved, this, &ProjectCopier::QueueNodeRemove, Qt::DirectConnection);
connect(original_, &NodeGraph::InputConnected, this, &ProjectCopier::QueueEdgeAdd, Qt::DirectConnection); connect(original_, &Project::InputConnected, this, &ProjectCopier::QueueEdgeAdd, Qt::DirectConnection);
connect(original_, &NodeGraph::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove, Qt::DirectConnection); connect(original_, &Project::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove, Qt::DirectConnection);
connect(original_, &NodeGraph::ValueChanged, this, &ProjectCopier::QueueValueChange, Qt::DirectConnection); connect(original_, &Project::ValueChanged, this, &ProjectCopier::QueueValueChange, Qt::DirectConnection);
connect(original_, &NodeGraph::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange, Qt::DirectConnection); connect(original_, &Project::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange, Qt::DirectConnection);
} }
} }
+2 -2
View File
@@ -21,7 +21,7 @@
#ifndef PROJECTCOPIER_H #ifndef PROJECTCOPIER_H
#define PROJECTCOPIER_H #define PROJECTCOPIER_H
#include "node/project/project.h" #include "node/project.h"
namespace olive { namespace olive {
@@ -99,7 +99,7 @@ private:
std::list<QueuedJob> graph_update_queue_; std::list<QueuedJob> graph_update_queue_;
QHash<Node*, Node*> copy_map_; QHash<Node*, Node*> copy_map_;
QHash<NodeGraph*, NodeGraph*> graph_map_; QHash<Project*, Project*> graph_map_;
QVector<Node*> created_nodes_; QVector<Node*> created_nodes_;
JobTime graph_changed_time_; JobTime graph_changed_time_;
+1 -1
View File
@@ -26,8 +26,8 @@
#include "config/config.h" #include "config/config.h"
#include "colorprocessorcache.h" #include "colorprocessorcache.h"
#include "dialog/rendercancel/rendercancel.h" #include "dialog/rendercancel/rendercancel.h"
#include "node/graph.h"
#include "node/output/viewer/viewer.h" #include "node/output/viewer/viewer.h"
#include "node/project.h"
#include "node/traverser.h" #include "node/traverser.h"
#include "render/previewautocacher.h" #include "render/previewautocacher.h"
#include "render/renderer.h" #include "render/renderer.h"
+1 -1
View File
@@ -28,7 +28,7 @@
#include "audio/audioprocessor.h" #include "audio/audioprocessor.h"
#include "node/block/clip/clip.h" #include "node/block/clip/clip.h"
#include "node/block/transition/transition.h" #include "node/block/transition/transition.h"
#include "node/project/project.h" #include "node/project.h"
#include "rendermanager.h" #include "rendermanager.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -20,7 +20,7 @@
#include "precachetask.h" #include "precachetask.h"
#include "node/project/project.h" #include "node/project.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -25,8 +25,8 @@
#include <QUndoCommand> #include <QUndoCommand>
#include "codec/decoder.h" #include "codec/decoder.h"
#include "node/project/projectviewmodel.h"
#include "task/task.h" #include "task/task.h"
#include "widget/projectexplorer/projectviewmodel.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -21,7 +21,7 @@
#ifndef PROJECTLOADBASETASK_H #ifndef PROJECTLOADBASETASK_H
#define PROJECTLOADBASETASK_H #define PROJECTLOADBASETASK_H
#include "node/project/project.h" #include "node/project.h"
#include "task/task.h" #include "task/task.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -21,7 +21,7 @@
#ifndef PROJECTSAVEMANAGER_H #ifndef PROJECTSAVEMANAGER_H
#define PROJECTSAVEMANAGER_H #define PROJECTSAVEMANAGER_H
#include "node/project/project.h" #include "node/project.h"
#include "task/task.h" #include "task/task.h"
namespace olive { namespace olive {
+1
View File
@@ -27,6 +27,7 @@
#include "common/qtutils.h" #include "common/qtutils.h"
#include "dialog/keyframeproperties/keyframeproperties.h" #include "dialog/keyframeproperties/keyframeproperties.h"
#include "keyframeviewundo.h" #include "keyframeviewundo.h"
#include "node/group/group.h"
#include "node/node.h" #include "node/node.h"
#include "node/project/serializer/serializer.h" #include "node/project/serializer/serializer.h"
#include "widget/menu/menu.h" #include "widget/menu/menu.h"
+1
View File
@@ -24,6 +24,7 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QWidget> #include <QWidget>
#include "node/group/group.h"
#include "node/node.h" #include "node/node.h"
#include "node/project/serializer/serializer.h" #include "node/project/serializer/serializer.h"
#include "nodeparamviewcontext.h" #include "nodeparamviewcontext.h"
@@ -157,7 +157,7 @@ void NodeParamViewContext::AddEffectMenuItemTriggered(QAction *a)
NodeInput new_node_input = n->GetEffectInput(); NodeInput new_node_input = n->GetEffectInput();
MultiUndoCommand *command = new MultiUndoCommand(); MultiUndoCommand *command = new MultiUndoCommand();
QVector<NodeGraph*> graphs_added_to; QVector<Project*> graphs_added_to;
foreach (Node *ctx, contexts_) { foreach (Node *ctx, contexts_) {
NodeInput ctx_input = ctx->GetEffectInput(); NodeInput ctx_input = ctx->GetEffectInput();
@@ -26,6 +26,7 @@
#include "common/qtutils.h" #include "common/qtutils.h"
#include "core.h" #include "core.h"
#include "dialog/speedduration/speeddurationdialog.h" #include "dialog/speedduration/speeddurationdialog.h"
#include "node/group/group.h"
#include "node/project/sequence/sequence.h" #include "node/project/sequence/sequence.h"
#include "nodeparamviewundo.h" #include "nodeparamviewundo.h"
@@ -28,6 +28,7 @@
#include "common/qtutils.h" #include "common/qtutils.h"
#include "core.h" #include "core.h"
#include "node/group/group.h"
#include "node/node.h" #include "node/node.h"
#include "node/project/sequence/sequence.h" #include "node/project/sequence/sequence.h"
#include "nodeparamviewarraywidget.h" #include "nodeparamviewarraywidget.h"
+1 -1
View File
@@ -25,7 +25,7 @@
#include <QTimer> #include <QTimer>
#include "core.h" #include "core.h"
#include "node/graph.h" #include "node/group/group.h"
#include "nodeviewedge.h" #include "nodeviewedge.h"
#include "nodeviewcontext.h" #include "nodeviewcontext.h"
#include "nodeviewminimap.h" #include "nodeviewminimap.h"
+2 -1
View File
@@ -9,8 +9,9 @@
#include "core.h" #include "core.h"
#include "node/block/block.h" #include "node/block/block.h"
#include "node/graph.h" #include "node/group/group.h"
#include "node/output/track/track.h" #include "node/output/track/track.h"
#include "node/project.h"
#include "node/project/sequence/sequence.h" #include "node/project/sequence/sequence.h"
#include "nodeviewitem.h" #include "nodeviewitem.h"
#include "ui/colorcoding.h" #include "ui/colorcoding.h"
+2 -2
View File
@@ -24,7 +24,7 @@
#include <QGraphicsScene> #include <QGraphicsScene>
#include <QTimer> #include <QTimer>
#include "node/graph.h" #include "node/project.h"
#include "nodeviewcontext.h" #include "nodeviewcontext.h"
#include "nodeviewedge.h" #include "nodeviewedge.h"
#include "nodeviewitem.h" #include "nodeviewitem.h"
@@ -74,7 +74,7 @@ public slots:
private: private:
QHash<Node*, NodeViewContext*> context_map_; QHash<Node*, NodeViewContext*> context_map_;
NodeGraph* graph_; Project* graph_;
NodeViewCommon::FlowDirection direction_; NodeViewCommon::FlowDirection direction_;
+1 -1
View File
@@ -84,7 +84,7 @@ Project *NodeEdgeRemoveCommand::GetRelevantProject() const
return output_->project(); return output_->project();
} }
NodeAddCommand::NodeAddCommand(NodeGraph *graph, Node *node) : NodeAddCommand::NodeAddCommand(Project *graph, Node *node) :
graph_(graph), graph_(graph),
node_(node) node_(node)
{ {
+6 -7
View File
@@ -21,9 +21,8 @@
#ifndef NODEVIEWUNDO_H #ifndef NODEVIEWUNDO_H
#define NODEVIEWUNDO_H #define NODEVIEWUNDO_H
#include "node/graph.h"
#include "node/node.h" #include "node/node.h"
#include "node/project/project.h" #include "node/project.h"
#include "undo/undocommand.h" #include "undo/undocommand.h"
namespace olive { namespace olive {
@@ -76,7 +75,7 @@ private:
class NodeAddCommand : public UndoCommand { class NodeAddCommand : public UndoCommand {
public: public:
NodeAddCommand(NodeGraph* graph, Node* node); NodeAddCommand(Project* graph, Node* node);
void PushToThread(QThread* thread); void PushToThread(QThread* thread);
@@ -89,7 +88,7 @@ protected:
private: private:
QObject memory_manager_; QObject memory_manager_;
NodeGraph* graph_; Project* graph_;
Node* node_; Node* node_;
}; };
@@ -109,7 +108,7 @@ public:
virtual Project* GetRelevantProject() const override virtual Project* GetRelevantProject() const override
{ {
return dynamic_cast<Project*>(graph_); return graph_;
} }
protected: protected:
@@ -135,7 +134,7 @@ private:
QObject memory_manager_; QObject memory_manager_;
Node* node_; Node* node_;
NodeGraph* graph_; Project* graph_;
MultiUndoCommand* command_; MultiUndoCommand* command_;
@@ -372,7 +371,7 @@ private:
Node *node; Node *node;
Node *context; Node *context;
QPointF pos; QPointF pos;
NodeGraph *removed_from_graph; Project *removed_from_graph;
}; };
QVector<RemovedNode> removed_nodes_; QVector<RemovedNode> removed_nodes_;
+14 -12
View File
@@ -16,22 +16,24 @@
set(OLIVE_SOURCES set(OLIVE_SOURCES
${OLIVE_SOURCES} ${OLIVE_SOURCES}
widget/projectexplorer/projectexplorer.h
widget/projectexplorer/projectexplorer.cpp widget/projectexplorer/projectexplorer.cpp
widget/projectexplorer/projectexplorertreeview.h widget/projectexplorer/projectexplorer.h
widget/projectexplorer/projectexplorertreeview.cpp
widget/projectexplorer/projectexplorerlistview.h
widget/projectexplorer/projectexplorerlistview.cpp
widget/projectexplorer/projectexplorerlistviewbase.h
widget/projectexplorer/projectexplorerlistviewbase.cpp
widget/projectexplorer/projectexplorerlistviewitemdelegate.h
widget/projectexplorer/projectexplorerlistviewitemdelegate.cpp
widget/projectexplorer/projectexplorericonview.h
widget/projectexplorer/projectexplorericonview.cpp widget/projectexplorer/projectexplorericonview.cpp
widget/projectexplorer/projectexplorericonviewitemdelegate.h widget/projectexplorer/projectexplorericonview.h
widget/projectexplorer/projectexplorericonviewitemdelegate.cpp widget/projectexplorer/projectexplorericonviewitemdelegate.cpp
widget/projectexplorer/projectexplorernavigation.h widget/projectexplorer/projectexplorericonviewitemdelegate.h
widget/projectexplorer/projectexplorerlistview.cpp
widget/projectexplorer/projectexplorerlistview.h
widget/projectexplorer/projectexplorerlistviewbase.cpp
widget/projectexplorer/projectexplorerlistviewbase.h
widget/projectexplorer/projectexplorerlistviewitemdelegate.cpp
widget/projectexplorer/projectexplorerlistviewitemdelegate.h
widget/projectexplorer/projectexplorernavigation.cpp widget/projectexplorer/projectexplorernavigation.cpp
widget/projectexplorer/projectexplorernavigation.h
widget/projectexplorer/projectexplorertreeview.cpp
widget/projectexplorer/projectexplorertreeview.h
widget/projectexplorer/projectexplorerundo.h widget/projectexplorer/projectexplorerundo.h
widget/projectexplorer/projectviewmodel.cpp
widget/projectexplorer/projectviewmodel.h
PARENT_SCOPE PARENT_SCOPE
) )
+2 -2
View File
@@ -26,8 +26,8 @@
#include <QTimer> #include <QTimer>
#include <QTreeView> #include <QTreeView>
#include "node/project/project.h" #include "node/project.h"
#include "node/project/projectviewmodel.h" #include "projectviewmodel.h"
#include "widget/projectexplorer/projectexplorericonview.h" #include "widget/projectexplorer/projectexplorericonview.h"
#include "widget/projectexplorer/projectexplorerlistview.h" #include "widget/projectexplorer/projectexplorerlistview.h"
#include "widget/projectexplorer/projectexplorertreeview.h" #include "widget/projectexplorer/projectexplorertreeview.h"
@@ -23,9 +23,9 @@
#include <QAbstractItemModel> #include <QAbstractItemModel>
#include "project.h"
#include "undo/undocommand.h"
#include "node/block/block.h" #include "node/block/block.h"
#include "node/project.h"
#include "undo/undocommand.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -724,7 +724,7 @@ void TimelineWidget::DeleteInToOut(bool ripple)
gap->set_length_and_media_out(GetConnectedNode()->GetWorkArea()->length()); gap->set_length_and_media_out(GetConnectedNode()->GetWorkArea()->length());
command->add_child(new NodeAddCommand(static_cast<NodeGraph*>(track->parent()), command->add_child(new NodeAddCommand(static_cast<Project*>(track->parent()),
gap)); gap));
command->add_child(new TrackPlaceBlockCommand(sequence()->track_list(track->type()), command->add_child(new TrackPlaceBlockCommand(sequence()->track_list(track->type()),
+1 -1
View File
@@ -134,7 +134,7 @@ Node *AddTool::CreateAddableClip(MultiUndoCommand *command, Sequence *sequence,
} }
clip->set_length_and_media_out(length); clip->set_length_and_media_out(length);
NodeGraph* graph = sequence->parent(); Project* graph = sequence->parent();
command->add_child(new NodeAddCommand(graph, clip)); command->add_child(new NodeAddCommand(graph, clip));
command->add_child(new NodeSetPositionCommand(clip, clip, QPointF(0, 0))); command->add_child(new NodeSetPositionCommand(clip, clip, QPointF(0, 0)));
+1 -1
View File
@@ -302,7 +302,7 @@ void ImportTool::DropGhosts(bool insert, MultiUndoCommand *parent_command)
command->add_child(c); command->add_child(c);
} }
NodeGraph* dst_graph = nullptr; Project* dst_graph = nullptr;
Sequence* sequence = this->sequence(); Sequence* sequence = this->sequence();
bool open_sequence = false; bool open_sequence = false;
@@ -110,7 +110,7 @@ void TransitionTool::MouseRelease(TimelineViewMouseEvent *event)
MultiUndoCommand* command = new MultiUndoCommand(); MultiUndoCommand* command = new MultiUndoCommand();
// Place transition in place // Place transition in place
command->add_child(new NodeAddCommand(static_cast<NodeGraph*>(parent()->GetConnectedNode()->parent()), command->add_child(new NodeAddCommand(parent()->GetConnectedNode()->parent(),
transition)); transition));
command->add_child(new NodeSetPositionCommand(transition, transition, QPointF(0, 0))); command->add_child(new NodeSetPositionCommand(transition, transition, QPointF(0, 0)));
@@ -22,7 +22,7 @@
#include "node/block/gap/gap.h" #include "node/block/gap/gap.h"
#include "node/block/transition/transition.h" #include "node/block/transition/transition.h"
#include "node/graph.h" #include "node/project.h"
#include "timelineundocommon.h" #include "timelineundocommon.h"
namespace olive { namespace olive {
@@ -21,7 +21,7 @@
#ifndef TIMELINEUNDOWORKAREA_H #ifndef TIMELINEUNDOWORKAREA_H
#define TIMELINEUNDOWORKAREA_H #define TIMELINEUNDOWORKAREA_H
#include "node/project/project.h" #include "node/project.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -24,7 +24,7 @@
#include <QMimeData> #include <QMimeData>
#include "config/config.h" #include "config/config.h"
#include "node/project/project.h" #include "node/project.h"
namespace olive { namespace olive {
+1 -1
View File
@@ -37,7 +37,7 @@
#include "core.h" #include "core.h"
#include "node/block/gap/gap.h" #include "node/block/gap/gap.h"
#include "node/generator/shape/shapenodebase.h" #include "node/generator/shape/shapenodebase.h"
#include "node/project/project.h" #include "node/project.h"
#include "panel/multicam/multicampanel.h" #include "panel/multicam/multicampanel.h"
#include "panel/panelmanager.h" #include "panel/panelmanager.h"
#include "render/rendermanager.h" #include "render/rendermanager.h"
+1 -1
View File
@@ -25,7 +25,7 @@
#include <kddockwidgets/MainWindow.h> #include <kddockwidgets/MainWindow.h>
#include "mainwindowlayoutinfo.h" #include "mainwindowlayoutinfo.h"
#include "node/project/project.h" #include "node/project.h"
#include "panel/multicam/multicampanel.h" #include "panel/multicam/multicampanel.h"
#include "panel/panelmanager.h" #include "panel/panelmanager.h"
#include "panel/audiomonitor/audiomonitor.h" #include "panel/audiomonitor/audiomonitor.h"