began node work

This commit is contained in:
itsmattkc
2019-04-08 14:13:08 +10:00
parent 8e3d664061
commit 3e1c857de4
13 changed files with 189 additions and 2 deletions
+6
View File
@@ -0,0 +1,6 @@
#include "medianode.h"
MediaNode::MediaNode()
{
}
+12
View File
@@ -0,0 +1,12 @@
#ifndef MEDIANODE_H
#define MEDIANODE_H
#include "node.h"
class MediaNode : public Node
{
public:
MediaNode();
};
#endif // MEDIANODE_H
+7
View File
@@ -0,0 +1,7 @@
#include "node.h"
Node::Node() :
max_inputs_(INT_MAX),
max_outputs_(INT_MAX)
{
}
+31
View File
@@ -0,0 +1,31 @@
#ifndef NODE_H
#define NODE_H
#include <QObject>
#include <QVector>
class NodeInput {
public:
NodeInput();
private:
QString name_;
};
class Node : public QObject
{
Q_OBJECT
public:
Node();
private:
int max_inputs_;
QVector<Node*> inputs_;
int max_outputs_;
QVector<Node*> outputs_;
};
#endif // NODE_H
+10 -2
View File
@@ -184,7 +184,11 @@ SOURCES += \
global/clipboard.cpp \
timeline/timelinetools.cpp \
timeline/ghost.cpp \
ui/waveform.cpp
ui/waveform.cpp \
panels/nodeeditor.cpp \
ui/nodeview.cpp \
nodes/medianode.cpp \
nodes/node.cpp
HEADERS += \
ui/mainwindow.h \
@@ -325,7 +329,11 @@ HEADERS += \
ui/timelinelabel.h \
global/clipboard.h \
timeline/timelinetools.h \
ui/waveform.h
ui/waveform.h \
panels/nodeeditor.h \
ui/nodeview.h \
nodes/medianode.h \
nodes/node.h
FORMS +=
+29
View File
@@ -0,0 +1,29 @@
#include "nodeeditor.h"
#include <QVBoxLayout>
#include <QLabel>
#include <QPushButton>
NodeEditor::NodeEditor(QWidget *parent) :
Panel(parent),
view_(&scene_)
{
resize(720, 480);
QWidget* central_widget = new QWidget();
setWidget(central_widget);
QVBoxLayout* layout = new QVBoxLayout(central_widget);
layout->addWidget(&view_);
view_.setInteractive(true);
view_.setDragMode(QGraphicsView::RubberBandDrag);
QPushButton* push_button = new QPushButton("heck!!!");
scene_.addWidget(push_button);
}
void NodeEditor::Retranslate()
{
}
+22
View File
@@ -0,0 +1,22 @@
#ifndef NODEEDITOR_H
#define NODEEDITOR_H
#include <QGraphicsScene>
#include "ui/panel.h"
#include "ui/nodeview.h"
class NodeEditor : public Panel {
Q_OBJECT
public:
NodeEditor(QWidget* parent = nullptr);
virtual void Retranslate() override;
private:
QGraphicsScene scene_;
NodeView view_;
};
#endif // NODEEDITOR_H
+3
View File
@@ -36,6 +36,7 @@ Viewer* panel_sequence_viewer = nullptr;
Viewer* panel_footage_viewer = nullptr;
QVector<Timeline*> panel_timeline;
GraphEditor* panel_graph_editor = nullptr;
NodeEditor* panel_node_editor = nullptr;
void update_ui(bool modified) {
if (modified) {
@@ -86,6 +87,8 @@ void alloc_panels(QWidget* parent) {
panel_timeline.append(first_timeline_panel);
panel_graph_editor = new GraphEditor(parent);
panel_graph_editor->setObjectName("graph_editor");
panel_node_editor = new NodeEditor(parent);
panel_node_editor->setObjectName("node_editor");
}
void free_panels() {
+2
View File
@@ -26,6 +26,7 @@
#include "viewer.h"
#include "grapheditor.h"
#include "project.h"
#include "nodeeditor.h"
extern QVector<Project*> panel_project;
extern EffectControls* panel_effect_controls;
@@ -33,6 +34,7 @@ extern Viewer* panel_sequence_viewer;
extern Viewer* panel_footage_viewer;
extern QVector<Timeline*> panel_timeline;
extern GraphEditor* panel_graph_editor;
extern NodeEditor* panel_node_editor;
void update_ui(bool modified);
QDockWidget* get_focused_panel(bool force_hover = false);
+8
View File
@@ -148,6 +148,7 @@ void MainWindow::setup_layout(bool reset) {
addDockWidget(Qt::TopDockWidgetArea, panel_project.first());
addDockWidget(Qt::TopDockWidgetArea, panel_graph_editor);
addDockWidget(Qt::TopDockWidgetArea, panel_node_editor);
addDockWidget(Qt::TopDockWidgetArea, panel_footage_viewer);
tabifyDockWidget(panel_footage_viewer, panel_effect_controls);
panel_footage_viewer->raise();
@@ -160,6 +161,7 @@ void MainWindow::setup_layout(bool reset) {
panel_sequence_viewer->show();
panel_timeline.first()->show();
panel_graph_editor->hide();
panel_node_editor->hide();
panel_project.first()->setFloating(false);
panel_effect_controls->setFloating(false);
@@ -167,6 +169,7 @@ void MainWindow::setup_layout(bool reset) {
panel_sequence_viewer->setFloating(false);
panel_timeline.first()->setFloating(false);
panel_graph_editor->setFloating(true);
panel_node_editor->setFloating(true);
resizeDocks({panel_project.first(), panel_footage_viewer, panel_sequence_viewer},
{width()/3, width()/3, width()/3},
@@ -694,6 +697,10 @@ void MainWindow::setup_menus() {
window_graph_editor_action->setCheckable(true);
window_graph_editor_action->setData(reinterpret_cast<quintptr>(panel_graph_editor));
window_node_editor_action = MenuHelper::create_menu_action(window_menu, "panelnodeeditor", this, SLOT(toggle_panel_visibility()));
window_node_editor_action->setCheckable(true);
window_node_editor_action->setData(reinterpret_cast<quintptr>(panel_node_editor));
window_footageviewer_action = MenuHelper::create_menu_action(window_menu, "panelfootageviewer", this, SLOT(toggle_panel_visibility()));
window_footageviewer_action->setCheckable(true);
window_footageviewer_action->setData(reinterpret_cast<quintptr>(panel_footage_viewer));
@@ -887,6 +894,7 @@ void MainWindow::Retranslate()
window_effectcontrols_action->setText(tr("Effect Controls"));
window_timeline_action->setText(tr("Timeline"));
window_graph_editor_action->setText(tr("Graph Editor"));
window_node_editor_action->setText(tr("Node Editor"));
window_footageviewer_action->setText(tr("Media Viewer"));
window_sequenceviewer_action->setText(tr("Sequence Viewer"));
+1
View File
@@ -308,6 +308,7 @@ private:
QAction* window_effectcontrols_action;
QAction* window_timeline_action;
QAction* window_graph_editor_action;
QAction* window_node_editor_action;
QAction* window_footageviewer_action;
QAction* window_sequenceviewer_action;
+35
View File
@@ -0,0 +1,35 @@
#include "nodeview.h"
#include <QWheelEvent>
#include <QDebug>
NodeView::NodeView(QGraphicsScene *scene, QWidget *parent) :
QGraphicsView(scene, parent),
hand_moving_(false)
{
setMouseTracking(true);
setWindowTitle(tr("Node Editor"));
}
void NodeView::mousePressEvent(QMouseEvent *event)
{
QGraphicsView::mousePressEvent(event);
}
void NodeView::mouseMoveEvent(QMouseEvent *event)
{
QGraphicsView::mouseMoveEvent(event);
}
void NodeView::mouseReleaseEvent(QMouseEvent *event)
{
}
void NodeView::wheelEvent(QWheelEvent *event)
{
if (event->angleDelta().y() > 0) {
scale(0.9, 0.9);
} else {
scale(1.1, 1.1);
}
}
+23
View File
@@ -0,0 +1,23 @@
#ifndef NODEVIEW_H
#define NODEVIEW_H
#include <QGraphicsView>
class NodeView : public QGraphicsView {
Q_OBJECT
public:
NodeView(QGraphicsScene *scene, QWidget* parent = nullptr);
protected:
virtual void mousePressEvent(QMouseEvent *event) override;
virtual void mouseMoveEvent(QMouseEvent *event) override;
virtual void mouseReleaseEvent(QMouseEvent *event) override;
virtual void wheelEvent(QWheelEvent *event) override;
private:
bool hand_moving_;
QPoint drag_start_;
};
#endif // NODEVIEW_H