constructed keyframeview and timeruler together inside nodeparamview and connected them
This commit is contained in:
@@ -23,16 +23,18 @@
|
||||
#include <QScrollArea>
|
||||
#include <QSplitter>
|
||||
|
||||
#include "node/output/viewer/viewer.h"
|
||||
|
||||
NodeParamView::NodeParamView(QWidget *parent) :
|
||||
QWidget(parent)
|
||||
{
|
||||
// Create horizontal layout to place scroll area in (and keyframe editing eventually)
|
||||
QHBoxLayout* widget_layout = new QHBoxLayout(this);
|
||||
widget_layout->setSpacing(0);
|
||||
widget_layout->setMargin(0);
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setSpacing(0);
|
||||
layout->setMargin(0);
|
||||
|
||||
QSplitter* splitter = new QSplitter(Qt::Horizontal);
|
||||
widget_layout->addWidget(splitter);
|
||||
layout->addWidget(splitter);
|
||||
|
||||
// Set up scroll area for params
|
||||
QScrollArea* scroll_area = new QScrollArea();
|
||||
@@ -52,8 +54,24 @@ NodeParamView::NodeParamView(QWidget *parent) :
|
||||
param_layout_->addStretch();
|
||||
|
||||
// Set up keyframe view
|
||||
QWidget* keyframe_area = new QWidget();
|
||||
QVBoxLayout* keyframe_area_layout = new QVBoxLayout(keyframe_area);
|
||||
keyframe_area_layout->setSpacing(0);
|
||||
keyframe_area_layout->setMargin(0);
|
||||
|
||||
// Create ruler object
|
||||
ruler_ = new TimeRuler(true);
|
||||
keyframe_area_layout->addWidget(ruler_);
|
||||
|
||||
// Create keyframe view
|
||||
keyframe_view_ = new KeyframeView();
|
||||
splitter->addWidget(keyframe_view_);
|
||||
keyframe_area_layout->addWidget(keyframe_view_);
|
||||
|
||||
// Connect ruler and keyframe view together
|
||||
connect(ruler_, SIGNAL(TimeChanged(const int64_t&)), keyframe_view_, SLOT(SetTime(const int64_t&)));
|
||||
connect(keyframe_view_, SIGNAL(TimeChanged(const int64_t&)), ruler_, SLOT(SetTime(const int64_t&)));
|
||||
|
||||
splitter->addWidget(keyframe_area);
|
||||
|
||||
// Disable collapsing param view (but collapsing keyframe view is permitted)
|
||||
splitter->setCollapsible(0, false);
|
||||
@@ -67,6 +85,9 @@ void NodeParamView::SetNodes(QList<Node *> nodes)
|
||||
}
|
||||
items_.clear();
|
||||
|
||||
// Reset keyframe view
|
||||
SetTimebase(rational());
|
||||
|
||||
// Set the internal list to the one we've received
|
||||
nodes_ = nodes;
|
||||
|
||||
@@ -97,9 +118,34 @@ void NodeParamView::SetNodes(QList<Node *> nodes)
|
||||
items_.append(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (!nodes_.isEmpty()) {
|
||||
const ViewerOutput* viewer = nodes_.first()->FindOutputNode<ViewerOutput>();
|
||||
|
||||
if (viewer) {
|
||||
SetTimebase(viewer->video_params().time_base());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const QList<Node *> &NodeParamView::nodes()
|
||||
{
|
||||
return nodes_;
|
||||
}
|
||||
|
||||
const double &NodeParamView::GetScale() const
|
||||
{
|
||||
return ruler_->scale();
|
||||
}
|
||||
|
||||
void NodeParamView::SetScale(const double& scale)
|
||||
{
|
||||
ruler_->SetScale(scale);
|
||||
keyframe_view_->SetScale(scale);
|
||||
}
|
||||
|
||||
void NodeParamView::SetTimebase(const rational &timebase)
|
||||
{
|
||||
ruler_->SetTimebase(timebase);
|
||||
keyframe_view_->SetTimebase(timebase);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user