From 9745b536f679916e4077ef61e58a7e04694a0767 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Fri, 17 Feb 2023 14:13:03 -0800 Subject: [PATCH] nodes: remove graph and merge into project --- app/codec/decoder.cpp | 2 +- app/core.h | 4 +- app/dialog/export/export.cpp | 2 +- .../projectproperties/projectproperties.h | 2 +- app/node/CMakeLists.txt | 4 +- app/node/color/ociobase/ociobase.cpp | 12 +- app/node/color/ociobase/ociobase.h | 2 +- .../ociogradingtransformlinear.cpp | 2 +- app/node/generator/text/textv3.cpp | 2 +- app/node/graph.cpp | 131 ------------------ app/node/graph.h | 111 --------------- app/node/group/group.cpp | 2 +- app/node/keying/despill/despill.cpp | 2 +- app/node/node.cpp | 13 +- app/node/node.h | 8 +- app/node/output/track/tracklist.cpp | 2 +- app/node/output/track/tracklist.h | 3 +- app/node/{project => }/project.cpp | 100 +++++++++++++ app/node/{project => }/project.h | 60 +++++++- app/node/project/CMakeLists.txt | 4 - app/node/project/serializer/serializer.cpp | 1 + app/node/project/serializer/serializer.h | 2 +- .../project/serializer/serializer210528.cpp | 1 + .../project/serializer/serializer210907.cpp | 1 + .../project/serializer/serializer211228.cpp | 1 + .../project/serializer/serializer220403.cpp | 1 + app/panel/project/project.h | 2 +- app/render/diskmanager.h | 2 +- app/render/playbackcache.cpp | 2 +- app/render/previewautocacher.cpp | 2 +- app/render/previewautocacher.h | 3 +- app/render/projectcopier.cpp | 26 ++-- app/render/projectcopier.h | 4 +- app/render/rendermanager.h | 2 +- app/render/renderprocessor.cpp | 2 +- app/task/precache/precachetask.cpp | 2 +- app/task/project/import/import.h | 2 +- app/task/project/load/loadbasetask.h | 2 +- app/task/project/save/save.h | 2 +- app/widget/keyframeview/keyframeview.cpp | 1 + app/widget/nodeparamview/nodeparamview.h | 1 + .../nodeparamview/nodeparamviewcontext.cpp | 2 +- .../nodeparamview/nodeparamviewitem.cpp | 1 + .../nodeparamviewwidgetbridge.cpp | 1 + app/widget/nodeview/nodeview.h | 2 +- app/widget/nodeview/nodeviewcontext.cpp | 3 +- app/widget/nodeview/nodeviewscene.h | 4 +- app/widget/nodeview/nodeviewundo.cpp | 2 +- app/widget/nodeview/nodeviewundo.h | 13 +- app/widget/projectexplorer/CMakeLists.txt | 26 ++-- app/widget/projectexplorer/projectexplorer.h | 4 +- .../projectexplorer}/projectviewmodel.cpp | 0 .../projectexplorer}/projectviewmodel.h | 4 +- app/widget/timelinewidget/timelinewidget.cpp | 2 +- app/widget/timelinewidget/tool/add.cpp | 2 +- app/widget/timelinewidget/tool/import.cpp | 2 +- app/widget/timelinewidget/tool/transition.cpp | 2 +- .../undo/timelineundopointer.cpp | 2 +- .../undo/timelineundoworkarea.h | 2 +- app/widget/viewer/footageviewer.cpp | 2 +- app/widget/viewer/viewer.cpp | 2 +- app/window/mainwindow/mainwindow.h | 2 +- 62 files changed, 266 insertions(+), 344 deletions(-) delete mode 100644 app/node/graph.cpp delete mode 100644 app/node/graph.h rename app/node/{project => }/project.cpp (55%) rename app/node/{project => }/project.h (70%) rename app/{node/project => widget/projectexplorer}/projectviewmodel.cpp (100%) rename app/{node/project => widget/projectexplorer}/projectviewmodel.h (99%) diff --git a/app/codec/decoder.cpp b/app/codec/decoder.cpp index f405d27de..185a964bb 100644 --- a/app/codec/decoder.cpp +++ b/app/codec/decoder.cpp @@ -30,7 +30,7 @@ #include "common/ffmpegutils.h" #include "common/filefunctions.h" #include "conformmanager.h" -#include "node/project/project.h" +#include "node/project.h" #include "task/taskmanager.h" namespace olive { diff --git a/app/core.h b/app/core.h index b32993c09..10018e7ba 100644 --- a/app/core.h +++ b/app/core.h @@ -28,12 +28,12 @@ #include #include "node/project/footage/footage.h" -#include "node/project/project.h" -#include "node/project/projectviewmodel.h" +#include "node/project.h" #include "node/project/sequence/sequence.h" #include "task/task.h" #include "tool/tool.h" #include "undo/undostack.h" +#include "widget/projectexplorer/projectviewmodel.h" namespace olive { diff --git a/app/dialog/export/export.cpp b/app/dialog/export/export.cpp index 5bdeeaec9..c5cfa2a17 100644 --- a/app/dialog/export/export.cpp +++ b/app/dialog/export/export.cpp @@ -34,7 +34,7 @@ #include "common/qtutils.h" #include "dialog/task/task.h" #include "exportsavepresetdialog.h" -#include "node/project/project.h" +#include "node/project.h" #include "node/project/sequence/sequence.h" #include "task/taskmanager.h" #include "ui/icons/icons.h" diff --git a/app/dialog/projectproperties/projectproperties.h b/app/dialog/projectproperties/projectproperties.h index e6963e541..ed0bbf786 100644 --- a/app/dialog/projectproperties/projectproperties.h +++ b/app/dialog/projectproperties/projectproperties.h @@ -28,7 +28,7 @@ #include #include -#include "node/project/project.h" +#include "node/project.h" #include "widget/path/pathwidget.h" namespace olive { diff --git a/app/node/CMakeLists.txt b/app/node/CMakeLists.txt index c21485b88..48734c072 100644 --- a/app/node/CMakeLists.txt +++ b/app/node/CMakeLists.txt @@ -36,8 +36,6 @@ set(OLIVE_SOURCES node/factory.h node/globals.cpp node/globals.h - node/graph.cpp - node/graph.h node/inputdragger.cpp node/inputdragger.h node/inputimmediate.cpp @@ -48,6 +46,8 @@ set(OLIVE_SOURCES node/node.h node/param.cpp node/param.h + node/project.cpp + node/project.h node/splitvalue.h node/traverser.cpp node/traverser.h diff --git a/app/node/color/ociobase/ociobase.cpp b/app/node/color/ociobase/ociobase.cpp index 498596b68..249cf49a3 100644 --- a/app/node/color/ociobase/ociobase.cpp +++ b/app/node/color/ociobase/ociobase.cpp @@ -21,7 +21,7 @@ #include "ociobase.h" #include "node/color/colormanager/colormanager.h" -#include "node/project/project.h" +#include "node/project.h" namespace olive { @@ -41,13 +41,11 @@ OCIOBaseNode::OCIOBaseNode() : SetFlags(kVideoEffect); } -void OCIOBaseNode::AddedToGraph(NodeGraph *graph) +void OCIOBaseNode::AddedToGraph(Project *p) { - if (Project *p = dynamic_cast(graph)) { - manager_ = p->color_manager(); - connect(manager_, &ColorManager::ConfigChanged, this, &OCIOBaseNode::ConfigChanged); - ConfigChanged(); - } + manager_ = p->color_manager(); + connect(manager_, &ColorManager::ConfigChanged, this, &OCIOBaseNode::ConfigChanged); + ConfigChanged(); } void OCIOBaseNode::RemovedFromGraph() diff --git a/app/node/color/ociobase/ociobase.h b/app/node/color/ociobase/ociobase.h index 2336c2214..1c5f349fa 100644 --- a/app/node/color/ociobase/ociobase.h +++ b/app/node/color/ociobase/ociobase.h @@ -51,7 +51,7 @@ private: ColorProcessorPtr processor_; private slots: - void AddedToGraph(NodeGraph *graph); + void AddedToGraph(Project *p); void RemovedFromGraph(); diff --git a/app/node/color/ociogradingtransformlinear/ociogradingtransformlinear.cpp b/app/node/color/ociogradingtransformlinear/ociogradingtransformlinear.cpp index a6a37012f..6b88ab7ce 100644 --- a/app/node/color/ociogradingtransformlinear/ociogradingtransformlinear.cpp +++ b/app/node/color/ociogradingtransformlinear/ociogradingtransformlinear.cpp @@ -23,7 +23,7 @@ #include #include "common/ocioutils.h" -#include "node/project/project.h" +#include "node/project.h" #include "render/colorprocessor.h" #include "widget/slider/floatslider.h" diff --git a/app/node/generator/text/textv3.cpp b/app/node/generator/text/textv3.cpp index 6d776f462..b33ec71c9 100644 --- a/app/node/generator/text/textv3.cpp +++ b/app/node/generator/text/textv3.cpp @@ -26,7 +26,7 @@ #include "common/html.h" #include "core.h" -#include "node/project/project.h" +#include "node/project.h" #include "widget/nodeparamview/nodeparamviewundo.h" namespace olive { diff --git a/app/node/graph.cpp b/app/node/graph.cpp deleted file mode 100644 index 44165727f..000000000 --- a/app/node/graph.cpp +++ /dev/null @@ -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 . - -***/ - -#include "graph.h" - -#include - -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(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(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(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); - } - } - } -} - -} diff --git a/app/node/graph.h b/app/node/graph.h deleted file mode 100644 index 93f1100b1..000000000 --- a/app/node/graph.h +++ /dev/null @@ -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 . - -***/ - -#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& nodes() const - { - return node_children_; - } - - const QVector& 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_children_; - - QVector default_nodes_; - -}; - -} - -#endif // NODEGRAPH_H diff --git a/app/node/group/group.cpp b/app/node/group/group.cpp index b0ed9705c..79ca24eba 100644 --- a/app/node/group/group.cpp +++ b/app/node/group/group.cpp @@ -20,7 +20,7 @@ #include "group.h" -#include "node/graph.h" +#include "node/project.h" namespace olive { diff --git a/app/node/keying/despill/despill.cpp b/app/node/keying/despill/despill.cpp index 8b91d3dfd..18d1fbad7 100644 --- a/app/node/keying/despill/despill.cpp +++ b/app/node/keying/despill/despill.cpp @@ -15,7 +15,7 @@ #include "despill.h" -#include "node/project/project.h" +#include "node/project.h" namespace olive { diff --git a/app/node/node.cpp b/app/node/node.cpp index d514c5d73..43b616130 100644 --- a/app/node/node.cpp +++ b/app/node/node.cpp @@ -28,7 +28,8 @@ #include "common/lerp.h" #include "core.h" #include "config/config.h" -#include "project/project.h" +#include "node/group/group.h" +#include "project.h" #include "ui/colorcoding.h" #include "ui/icons/icons.h" #include "widget/nodeparamview/nodeparamviewundo.h" @@ -76,9 +77,9 @@ Node::~Node() } } -NodeGraph *Node::parent() const +Project *Node::parent() const { - return static_cast(QObject::parent()); + return static_cast(QObject::parent()); } Project *Node::project() const @@ -982,7 +983,7 @@ QVector Node::CopyDependencyGraph(const QVector &nodes, MultiUnd Node::CopyInputs(nodes.at(i), c, false); // Add to graph - NodeGraph* graph = static_cast(nodes.at(i)->parent()); + Project* graph = nodes.at(i)->parent(); if (command) { command->add_child(new NodeAddCommand(graph, c)); } else { @@ -1113,7 +1114,7 @@ Node *Node::CopyNodeInGraph(Node *node, MultiUndoCommand *command) } else { copy = node->copy(); - command->add_child(new NodeAddCommand(static_cast(node->parent()), copy)); + command->add_child(new NodeAddCommand(node->parent(), copy)); CopyInputs(node, copy, true, command); @@ -2010,7 +2011,7 @@ void NodeRemovePositionFromContextCommand::undo() void NodeRemovePositionFromAllContextsCommand::redo() { - NodeGraph *graph = node_->parent(); + Project *graph = node_->parent(); foreach (Node* context, graph->nodes()) { if (context->ContextContainsNode(node_)) { diff --git a/app/node/node.h b/app/node/node.h index 24d13bdd8..b464d8ae0 100644 --- a/app/node/node.h +++ b/app/node/node.h @@ -56,7 +56,7 @@ namespace olive { #define NODE_COPY_FUNCTION(x) \ virtual Node *copy() const override {return new x();} -class NodeGraph; +class Project; class Folder; /** @@ -123,7 +123,7 @@ public: /** * @brief Convenience function - assumes parent is a NodeGraph */ - NodeGraph* parent() const; + Project *parent() const; Project* project() const; @@ -1275,9 +1275,9 @@ signals: 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); diff --git a/app/node/output/track/tracklist.cpp b/app/node/output/track/tracklist.cpp index 94c90b6ec..3c15dc628 100644 --- a/app/node/output/track/tracklist.cpp +++ b/app/node/output/track/tracklist.cpp @@ -142,7 +142,7 @@ void TrackList::UpdateTrackIndexesFrom(int index) } } -NodeGraph *TrackList::GetParentGraph() const +Project *TrackList::GetParentGraph() const { return parent()->parent(); } diff --git a/app/node/output/track/tracklist.h b/app/node/output/track/tracklist.h index bfa76a30e..5b97f58be 100644 --- a/app/node/output/track/tracklist.h +++ b/app/node/output/track/tracklist.h @@ -23,7 +23,6 @@ #include -#include "node/graph.h" #include "node/output/track/track.h" #include "timeline/timelinecommon.h" @@ -59,7 +58,7 @@ public: return track_cache_.size(); } - NodeGraph* GetParentGraph() const; + Project* GetParentGraph() const; const QString &track_input() const; NodeInput track_input(int element) const; diff --git a/app/node/project/project.cpp b/app/node/project.cpp similarity index 55% rename from app/node/project/project.cpp rename to app/node/project.cpp index b84c8ee22..ecfe73df6 100644 --- a/app/node/project/project.cpp +++ b/app/node/project.cpp @@ -33,6 +33,8 @@ namespace olive { +#define super QObject + const QString Project::kItemMimeType = QStringLiteral("application/x-oliveprojectitemdata"); Project::Project() : @@ -65,6 +67,104 @@ Project::Project() : 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(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(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(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() { return root_; diff --git a/app/node/project/project.h b/app/node/project.h similarity index 70% rename from app/node/project/project.h rename to app/node/project.h index 09e7e8606..025b0ee44 100644 --- a/app/node/project/project.h +++ b/app/node/project.h @@ -44,12 +44,34 @@ namespace olive { * * Project Settings * * Window Layout */ -class Project : public NodeGraph +class Project : public QObject { Q_OBJECT public: 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& nodes() const + { + return node_children_; + } + + const QVector& default_nodes() const + { + return default_nodes_; + } + + int GetNumberOfContextsNodeIsIn(Node *node, bool except_itself = false) const; + Folder* root(); QString name() const; @@ -124,6 +146,38 @@ signals: 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: QUuid uuid_; @@ -143,6 +197,10 @@ private: MainWindowLayoutInfo layout_info_; + QVector node_children_; + + QVector default_nodes_; + private slots: void ColorManagerValueChanged(const NodeInput& input, const TimeRange& range); diff --git a/app/node/project/CMakeLists.txt b/app/node/project/CMakeLists.txt index b745ea86f..f66293413 100644 --- a/app/node/project/CMakeLists.txt +++ b/app/node/project/CMakeLists.txt @@ -22,9 +22,5 @@ add_subdirectory(serializer) set(OLIVE_SOURCES ${OLIVE_SOURCES} - node/project/project.h - node/project/project.cpp - node/project/projectviewmodel.h - node/project/projectviewmodel.cpp PARENT_SCOPE ) diff --git a/app/node/project/serializer/serializer.cpp b/app/node/project/serializer/serializer.cpp index aa4de715b..14cba1098 100644 --- a/app/node/project/serializer/serializer.cpp +++ b/app/node/project/serializer/serializer.cpp @@ -26,6 +26,7 @@ #include "common/xmlutils.h" #include "core.h" +#include "node/group/group.h" #include "serializer190219.h" #include "serializer210528.h" #include "serializer210907.h" diff --git a/app/node/project/serializer/serializer.h b/app/node/project/serializer/serializer.h index 1377b325d..a7f86dfcc 100644 --- a/app/node/project/serializer/serializer.h +++ b/app/node/project/serializer/serializer.h @@ -24,7 +24,7 @@ #include #include "common/define.h" -#include "node/project/project.h" +#include "node/project.h" #include "typeserializer.h" namespace olive { diff --git a/app/node/project/serializer/serializer210528.cpp b/app/node/project/serializer/serializer210528.cpp index 419b2c890..f4b735c70 100644 --- a/app/node/project/serializer/serializer210528.cpp +++ b/app/node/project/serializer/serializer210528.cpp @@ -22,6 +22,7 @@ #include "config/config.h" #include "node/factory.h" +#include "node/group/group.h" namespace olive { diff --git a/app/node/project/serializer/serializer210907.cpp b/app/node/project/serializer/serializer210907.cpp index 8f7250bc2..8633dc55b 100644 --- a/app/node/project/serializer/serializer210907.cpp +++ b/app/node/project/serializer/serializer210907.cpp @@ -22,6 +22,7 @@ #include "config/config.h" #include "node/factory.h" +#include "node/group/group.h" namespace olive { diff --git a/app/node/project/serializer/serializer211228.cpp b/app/node/project/serializer/serializer211228.cpp index 918b8c552..921ee4108 100644 --- a/app/node/project/serializer/serializer211228.cpp +++ b/app/node/project/serializer/serializer211228.cpp @@ -22,6 +22,7 @@ #include "config/config.h" #include "node/factory.h" +#include "node/group/group.h" namespace olive { diff --git a/app/node/project/serializer/serializer220403.cpp b/app/node/project/serializer/serializer220403.cpp index f863f1ae9..32ba82207 100644 --- a/app/node/project/serializer/serializer220403.cpp +++ b/app/node/project/serializer/serializer220403.cpp @@ -22,6 +22,7 @@ #include "config/config.h" #include "node/factory.h" +#include "node/group/group.h" namespace olive { diff --git a/app/panel/project/project.h b/app/panel/project/project.h index 053570793..f5f9468d2 100644 --- a/app/panel/project/project.h +++ b/app/panel/project/project.h @@ -22,7 +22,7 @@ #define PROJECT_PANEL_H #include "footagemanagementpanel.h" -#include "node/project/project.h" +#include "node/project.h" #include "panel/panel.h" #include "widget/projectexplorer/projectexplorer.h" diff --git a/app/render/diskmanager.h b/app/render/diskmanager.h index 09221086a..8dc07787b 100644 --- a/app/render/diskmanager.h +++ b/app/render/diskmanager.h @@ -27,7 +27,7 @@ #include #include "common/define.h" -#include "node/project/project.h" +#include "node/project.h" namespace olive { diff --git a/app/render/playbackcache.cpp b/app/render/playbackcache.cpp index 3b23f043a..b96c65ffb 100644 --- a/app/render/playbackcache.cpp +++ b/app/render/playbackcache.cpp @@ -21,7 +21,7 @@ #include "playbackcache.h" #include "node/output/viewer/viewer.h" -#include "node/project/project.h" +#include "node/project.h" #include "node/project/sequence/sequence.h" #include "render/diskmanager.h" diff --git a/app/render/previewautocacher.cpp b/app/render/previewautocacher.cpp index dbac39eb5..e95dbeb65 100644 --- a/app/render/previewautocacher.cpp +++ b/app/render/previewautocacher.cpp @@ -26,7 +26,7 @@ #include "codec/conformmanager.h" #include "node/input/multicam/multicamnode.h" #include "node/inputdragger.h" -#include "node/project/project.h" +#include "node/project.h" #include "render/diskmanager.h" #include "render/rendermanager.h" diff --git a/app/render/previewautocacher.h b/app/render/previewautocacher.h index 02bf99df8..7cabdcd48 100644 --- a/app/render/previewautocacher.h +++ b/app/render/previewautocacher.h @@ -25,11 +25,10 @@ #include "config/config.h" #include "node/color/colormanager/colormanager.h" -#include "node/graph.h" #include "node/group/group.h" #include "node/node.h" #include "node/output/viewer/viewer.h" -#include "node/project/project.h" +#include "node/project.h" #include "render/projectcopier.h" #include "render/renderjobtracker.h" #include "render/renderticket.h" diff --git a/app/render/projectcopier.cpp b/app/render/projectcopier.cpp index 89ff9f1e4..2ff55dae2 100644 --- a/app/render/projectcopier.cpp +++ b/app/render/projectcopier.cpp @@ -20,6 +20,8 @@ #include "projectcopier.h" +#include "node/group/group.h" + namespace olive { ProjectCopier::ProjectCopier(QObject *parent) : @@ -39,12 +41,12 @@ void ProjectCopier::SetProject(Project *project) copy_map_.clear(); graph_update_queue_.clear(); - disconnect(original_, &NodeGraph::NodeAdded, this, &ProjectCopier::QueueNodeAdd); - disconnect(original_, &NodeGraph::NodeRemoved, this, &ProjectCopier::QueueNodeRemove); - disconnect(original_, &NodeGraph::InputConnected, this, &ProjectCopier::QueueEdgeAdd); - disconnect(original_, &NodeGraph::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove); - disconnect(original_, &NodeGraph::ValueChanged, this, &ProjectCopier::QueueValueChange); - disconnect(original_, &NodeGraph::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange); + disconnect(original_, &Project::NodeAdded, this, &ProjectCopier::QueueNodeAdd); + disconnect(original_, &Project::NodeRemoved, this, &ProjectCopier::QueueNodeRemove); + disconnect(original_, &Project::InputConnected, this, &ProjectCopier::QueueEdgeAdd); + disconnect(original_, &Project::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove); + disconnect(original_, &Project::ValueChanged, this, &ProjectCopier::QueueValueChange); + disconnect(original_, &Project::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange); } original_ = project; @@ -71,12 +73,12 @@ void ProjectCopier::SetProject(Project *project) UpdateLastSyncedValue(); // Connect signals for future node additions/deletions - connect(original_, &NodeGraph::NodeAdded, this, &ProjectCopier::QueueNodeAdd, Qt::DirectConnection); - connect(original_, &NodeGraph::NodeRemoved, this, &ProjectCopier::QueueNodeRemove, Qt::DirectConnection); - connect(original_, &NodeGraph::InputConnected, this, &ProjectCopier::QueueEdgeAdd, Qt::DirectConnection); - connect(original_, &NodeGraph::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove, Qt::DirectConnection); - connect(original_, &NodeGraph::ValueChanged, this, &ProjectCopier::QueueValueChange, Qt::DirectConnection); - connect(original_, &NodeGraph::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange, Qt::DirectConnection); + connect(original_, &Project::NodeAdded, this, &ProjectCopier::QueueNodeAdd, Qt::DirectConnection); + connect(original_, &Project::NodeRemoved, this, &ProjectCopier::QueueNodeRemove, Qt::DirectConnection); + connect(original_, &Project::InputConnected, this, &ProjectCopier::QueueEdgeAdd, Qt::DirectConnection); + connect(original_, &Project::InputDisconnected, this, &ProjectCopier::QueueEdgeRemove, Qt::DirectConnection); + connect(original_, &Project::ValueChanged, this, &ProjectCopier::QueueValueChange, Qt::DirectConnection); + connect(original_, &Project::InputValueHintChanged, this, &ProjectCopier::QueueValueHintChange, Qt::DirectConnection); } } diff --git a/app/render/projectcopier.h b/app/render/projectcopier.h index 42fd14daa..89d630872 100644 --- a/app/render/projectcopier.h +++ b/app/render/projectcopier.h @@ -21,7 +21,7 @@ #ifndef PROJECTCOPIER_H #define PROJECTCOPIER_H -#include "node/project/project.h" +#include "node/project.h" namespace olive { @@ -99,7 +99,7 @@ private: std::list graph_update_queue_; QHash copy_map_; - QHash graph_map_; + QHash graph_map_; QVector created_nodes_; JobTime graph_changed_time_; diff --git a/app/render/rendermanager.h b/app/render/rendermanager.h index cd5dfe6a4..558478c47 100644 --- a/app/render/rendermanager.h +++ b/app/render/rendermanager.h @@ -26,8 +26,8 @@ #include "config/config.h" #include "colorprocessorcache.h" #include "dialog/rendercancel/rendercancel.h" -#include "node/graph.h" #include "node/output/viewer/viewer.h" +#include "node/project.h" #include "node/traverser.h" #include "render/previewautocacher.h" #include "render/renderer.h" diff --git a/app/render/renderprocessor.cpp b/app/render/renderprocessor.cpp index 7d146ae9b..1df08f60b 100644 --- a/app/render/renderprocessor.cpp +++ b/app/render/renderprocessor.cpp @@ -28,7 +28,7 @@ #include "audio/audioprocessor.h" #include "node/block/clip/clip.h" #include "node/block/transition/transition.h" -#include "node/project/project.h" +#include "node/project.h" #include "rendermanager.h" namespace olive { diff --git a/app/task/precache/precachetask.cpp b/app/task/precache/precachetask.cpp index b0145474c..e355251ca 100644 --- a/app/task/precache/precachetask.cpp +++ b/app/task/precache/precachetask.cpp @@ -20,7 +20,7 @@ #include "precachetask.h" -#include "node/project/project.h" +#include "node/project.h" namespace olive { diff --git a/app/task/project/import/import.h b/app/task/project/import/import.h index f02afea9e..daed1e45c 100644 --- a/app/task/project/import/import.h +++ b/app/task/project/import/import.h @@ -25,8 +25,8 @@ #include #include "codec/decoder.h" -#include "node/project/projectviewmodel.h" #include "task/task.h" +#include "widget/projectexplorer/projectviewmodel.h" namespace olive { diff --git a/app/task/project/load/loadbasetask.h b/app/task/project/load/loadbasetask.h index 74c68a4f7..31970f044 100644 --- a/app/task/project/load/loadbasetask.h +++ b/app/task/project/load/loadbasetask.h @@ -21,7 +21,7 @@ #ifndef PROJECTLOADBASETASK_H #define PROJECTLOADBASETASK_H -#include "node/project/project.h" +#include "node/project.h" #include "task/task.h" namespace olive { diff --git a/app/task/project/save/save.h b/app/task/project/save/save.h index 642d00e7f..f3d8cc9aa 100644 --- a/app/task/project/save/save.h +++ b/app/task/project/save/save.h @@ -21,7 +21,7 @@ #ifndef PROJECTSAVEMANAGER_H #define PROJECTSAVEMANAGER_H -#include "node/project/project.h" +#include "node/project.h" #include "task/task.h" namespace olive { diff --git a/app/widget/keyframeview/keyframeview.cpp b/app/widget/keyframeview/keyframeview.cpp index 0811f416f..e2a11ef3b 100644 --- a/app/widget/keyframeview/keyframeview.cpp +++ b/app/widget/keyframeview/keyframeview.cpp @@ -27,6 +27,7 @@ #include "common/qtutils.h" #include "dialog/keyframeproperties/keyframeproperties.h" #include "keyframeviewundo.h" +#include "node/group/group.h" #include "node/node.h" #include "node/project/serializer/serializer.h" #include "widget/menu/menu.h" diff --git a/app/widget/nodeparamview/nodeparamview.h b/app/widget/nodeparamview/nodeparamview.h index a542fcc56..296abf392 100644 --- a/app/widget/nodeparamview/nodeparamview.h +++ b/app/widget/nodeparamview/nodeparamview.h @@ -24,6 +24,7 @@ #include #include +#include "node/group/group.h" #include "node/node.h" #include "node/project/serializer/serializer.h" #include "nodeparamviewcontext.h" diff --git a/app/widget/nodeparamview/nodeparamviewcontext.cpp b/app/widget/nodeparamview/nodeparamviewcontext.cpp index a2438bddd..d66227044 100644 --- a/app/widget/nodeparamview/nodeparamviewcontext.cpp +++ b/app/widget/nodeparamview/nodeparamviewcontext.cpp @@ -157,7 +157,7 @@ void NodeParamViewContext::AddEffectMenuItemTriggered(QAction *a) NodeInput new_node_input = n->GetEffectInput(); MultiUndoCommand *command = new MultiUndoCommand(); - QVector graphs_added_to; + QVector graphs_added_to; foreach (Node *ctx, contexts_) { NodeInput ctx_input = ctx->GetEffectInput(); diff --git a/app/widget/nodeparamview/nodeparamviewitem.cpp b/app/widget/nodeparamview/nodeparamviewitem.cpp index 7d0f6dc7a..340e4e370 100644 --- a/app/widget/nodeparamview/nodeparamviewitem.cpp +++ b/app/widget/nodeparamview/nodeparamviewitem.cpp @@ -26,6 +26,7 @@ #include "common/qtutils.h" #include "core.h" #include "dialog/speedduration/speeddurationdialog.h" +#include "node/group/group.h" #include "node/project/sequence/sequence.h" #include "nodeparamviewundo.h" diff --git a/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp b/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp index 693e66bd4..c43192927 100644 --- a/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp +++ b/app/widget/nodeparamview/nodeparamviewwidgetbridge.cpp @@ -28,6 +28,7 @@ #include "common/qtutils.h" #include "core.h" +#include "node/group/group.h" #include "node/node.h" #include "node/project/sequence/sequence.h" #include "nodeparamviewarraywidget.h" diff --git a/app/widget/nodeview/nodeview.h b/app/widget/nodeview/nodeview.h index 01e1dd487..fd497f338 100644 --- a/app/widget/nodeview/nodeview.h +++ b/app/widget/nodeview/nodeview.h @@ -25,7 +25,7 @@ #include #include "core.h" -#include "node/graph.h" +#include "node/group/group.h" #include "nodeviewedge.h" #include "nodeviewcontext.h" #include "nodeviewminimap.h" diff --git a/app/widget/nodeview/nodeviewcontext.cpp b/app/widget/nodeview/nodeviewcontext.cpp index 4f0be5acf..9f1dbc755 100644 --- a/app/widget/nodeview/nodeviewcontext.cpp +++ b/app/widget/nodeview/nodeviewcontext.cpp @@ -9,8 +9,9 @@ #include "core.h" #include "node/block/block.h" -#include "node/graph.h" +#include "node/group/group.h" #include "node/output/track/track.h" +#include "node/project.h" #include "node/project/sequence/sequence.h" #include "nodeviewitem.h" #include "ui/colorcoding.h" diff --git a/app/widget/nodeview/nodeviewscene.h b/app/widget/nodeview/nodeviewscene.h index 6a43becf2..d466e7d41 100644 --- a/app/widget/nodeview/nodeviewscene.h +++ b/app/widget/nodeview/nodeviewscene.h @@ -24,7 +24,7 @@ #include #include -#include "node/graph.h" +#include "node/project.h" #include "nodeviewcontext.h" #include "nodeviewedge.h" #include "nodeviewitem.h" @@ -74,7 +74,7 @@ public slots: private: QHash context_map_; - NodeGraph* graph_; + Project* graph_; NodeViewCommon::FlowDirection direction_; diff --git a/app/widget/nodeview/nodeviewundo.cpp b/app/widget/nodeview/nodeviewundo.cpp index 03ff5a372..6820379ab 100644 --- a/app/widget/nodeview/nodeviewundo.cpp +++ b/app/widget/nodeview/nodeviewundo.cpp @@ -84,7 +84,7 @@ Project *NodeEdgeRemoveCommand::GetRelevantProject() const return output_->project(); } -NodeAddCommand::NodeAddCommand(NodeGraph *graph, Node *node) : +NodeAddCommand::NodeAddCommand(Project *graph, Node *node) : graph_(graph), node_(node) { diff --git a/app/widget/nodeview/nodeviewundo.h b/app/widget/nodeview/nodeviewundo.h index f5508abb2..ffa2c174f 100644 --- a/app/widget/nodeview/nodeviewundo.h +++ b/app/widget/nodeview/nodeviewundo.h @@ -21,9 +21,8 @@ #ifndef NODEVIEWUNDO_H #define NODEVIEWUNDO_H -#include "node/graph.h" #include "node/node.h" -#include "node/project/project.h" +#include "node/project.h" #include "undo/undocommand.h" namespace olive { @@ -76,7 +75,7 @@ private: class NodeAddCommand : public UndoCommand { public: - NodeAddCommand(NodeGraph* graph, Node* node); + NodeAddCommand(Project* graph, Node* node); void PushToThread(QThread* thread); @@ -89,7 +88,7 @@ protected: private: QObject memory_manager_; - NodeGraph* graph_; + Project* graph_; Node* node_; }; @@ -109,7 +108,7 @@ public: virtual Project* GetRelevantProject() const override { - return dynamic_cast(graph_); + return graph_; } protected: @@ -135,7 +134,7 @@ private: QObject memory_manager_; Node* node_; - NodeGraph* graph_; + Project* graph_; MultiUndoCommand* command_; @@ -372,7 +371,7 @@ private: Node *node; Node *context; QPointF pos; - NodeGraph *removed_from_graph; + Project *removed_from_graph; }; QVector removed_nodes_; diff --git a/app/widget/projectexplorer/CMakeLists.txt b/app/widget/projectexplorer/CMakeLists.txt index 2de828952..35445facf 100644 --- a/app/widget/projectexplorer/CMakeLists.txt +++ b/app/widget/projectexplorer/CMakeLists.txt @@ -16,22 +16,24 @@ set(OLIVE_SOURCES ${OLIVE_SOURCES} - widget/projectexplorer/projectexplorer.h widget/projectexplorer/projectexplorer.cpp - widget/projectexplorer/projectexplorertreeview.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/projectexplorer.h widget/projectexplorer/projectexplorericonview.cpp - widget/projectexplorer/projectexplorericonviewitemdelegate.h + widget/projectexplorer/projectexplorericonview.h 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.h + widget/projectexplorer/projectexplorertreeview.cpp + widget/projectexplorer/projectexplorertreeview.h widget/projectexplorer/projectexplorerundo.h + widget/projectexplorer/projectviewmodel.cpp + widget/projectexplorer/projectviewmodel.h PARENT_SCOPE ) diff --git a/app/widget/projectexplorer/projectexplorer.h b/app/widget/projectexplorer/projectexplorer.h index c03fc2e67..851e26c25 100644 --- a/app/widget/projectexplorer/projectexplorer.h +++ b/app/widget/projectexplorer/projectexplorer.h @@ -26,8 +26,8 @@ #include #include -#include "node/project/project.h" -#include "node/project/projectviewmodel.h" +#include "node/project.h" +#include "projectviewmodel.h" #include "widget/projectexplorer/projectexplorericonview.h" #include "widget/projectexplorer/projectexplorerlistview.h" #include "widget/projectexplorer/projectexplorertreeview.h" diff --git a/app/node/project/projectviewmodel.cpp b/app/widget/projectexplorer/projectviewmodel.cpp similarity index 100% rename from app/node/project/projectviewmodel.cpp rename to app/widget/projectexplorer/projectviewmodel.cpp diff --git a/app/node/project/projectviewmodel.h b/app/widget/projectexplorer/projectviewmodel.h similarity index 99% rename from app/node/project/projectviewmodel.h rename to app/widget/projectexplorer/projectviewmodel.h index c4fd74bc5..b47b16d8c 100644 --- a/app/node/project/projectviewmodel.h +++ b/app/widget/projectexplorer/projectviewmodel.h @@ -23,9 +23,9 @@ #include -#include "project.h" -#include "undo/undocommand.h" #include "node/block/block.h" +#include "node/project.h" +#include "undo/undocommand.h" namespace olive { diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index f609d1da9..a65e8606c 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -724,7 +724,7 @@ void TimelineWidget::DeleteInToOut(bool ripple) gap->set_length_and_media_out(GetConnectedNode()->GetWorkArea()->length()); - command->add_child(new NodeAddCommand(static_cast(track->parent()), + command->add_child(new NodeAddCommand(static_cast(track->parent()), gap)); command->add_child(new TrackPlaceBlockCommand(sequence()->track_list(track->type()), diff --git a/app/widget/timelinewidget/tool/add.cpp b/app/widget/timelinewidget/tool/add.cpp index a765b0d73..f587a775b 100644 --- a/app/widget/timelinewidget/tool/add.cpp +++ b/app/widget/timelinewidget/tool/add.cpp @@ -134,7 +134,7 @@ Node *AddTool::CreateAddableClip(MultiUndoCommand *command, Sequence *sequence, } 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 NodeSetPositionCommand(clip, clip, QPointF(0, 0))); diff --git a/app/widget/timelinewidget/tool/import.cpp b/app/widget/timelinewidget/tool/import.cpp index b09e66752..1ce71f427 100644 --- a/app/widget/timelinewidget/tool/import.cpp +++ b/app/widget/timelinewidget/tool/import.cpp @@ -302,7 +302,7 @@ void ImportTool::DropGhosts(bool insert, MultiUndoCommand *parent_command) command->add_child(c); } - NodeGraph* dst_graph = nullptr; + Project* dst_graph = nullptr; Sequence* sequence = this->sequence(); bool open_sequence = false; diff --git a/app/widget/timelinewidget/tool/transition.cpp b/app/widget/timelinewidget/tool/transition.cpp index 73a89d02c..52675028e 100644 --- a/app/widget/timelinewidget/tool/transition.cpp +++ b/app/widget/timelinewidget/tool/transition.cpp @@ -110,7 +110,7 @@ void TransitionTool::MouseRelease(TimelineViewMouseEvent *event) MultiUndoCommand* command = new MultiUndoCommand(); // Place transition in place - command->add_child(new NodeAddCommand(static_cast(parent()->GetConnectedNode()->parent()), + command->add_child(new NodeAddCommand(parent()->GetConnectedNode()->parent(), transition)); command->add_child(new NodeSetPositionCommand(transition, transition, QPointF(0, 0))); diff --git a/app/widget/timelinewidget/undo/timelineundopointer.cpp b/app/widget/timelinewidget/undo/timelineundopointer.cpp index f46f5a47e..864ce468b 100644 --- a/app/widget/timelinewidget/undo/timelineundopointer.cpp +++ b/app/widget/timelinewidget/undo/timelineundopointer.cpp @@ -22,7 +22,7 @@ #include "node/block/gap/gap.h" #include "node/block/transition/transition.h" -#include "node/graph.h" +#include "node/project.h" #include "timelineundocommon.h" namespace olive { diff --git a/app/widget/timelinewidget/undo/timelineundoworkarea.h b/app/widget/timelinewidget/undo/timelineundoworkarea.h index f83601747..ae50b30f0 100644 --- a/app/widget/timelinewidget/undo/timelineundoworkarea.h +++ b/app/widget/timelinewidget/undo/timelineundoworkarea.h @@ -21,7 +21,7 @@ #ifndef TIMELINEUNDOWORKAREA_H #define TIMELINEUNDOWORKAREA_H -#include "node/project/project.h" +#include "node/project.h" namespace olive { diff --git a/app/widget/viewer/footageviewer.cpp b/app/widget/viewer/footageviewer.cpp index 05373b0f2..4d77cf341 100644 --- a/app/widget/viewer/footageviewer.cpp +++ b/app/widget/viewer/footageviewer.cpp @@ -24,7 +24,7 @@ #include #include "config/config.h" -#include "node/project/project.h" +#include "node/project.h" namespace olive { diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index 19cac1d1b..438625b6b 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -37,7 +37,7 @@ #include "core.h" #include "node/block/gap/gap.h" #include "node/generator/shape/shapenodebase.h" -#include "node/project/project.h" +#include "node/project.h" #include "panel/multicam/multicampanel.h" #include "panel/panelmanager.h" #include "render/rendermanager.h" diff --git a/app/window/mainwindow/mainwindow.h b/app/window/mainwindow/mainwindow.h index 46d515197..a624c965e 100644 --- a/app/window/mainwindow/mainwindow.h +++ b/app/window/mainwindow/mainwindow.h @@ -25,7 +25,7 @@ #include #include "mainwindowlayoutinfo.h" -#include "node/project/project.h" +#include "node/project.h" #include "panel/multicam/multicampanel.h" #include "panel/panelmanager.h" #include "panel/audiomonitor/audiomonitor.h"