minor refactoring and signalling panel subtitle by node change
Fixes issue where Footage Viewer subtitle wouldn't update when dropping footage in.
This commit is contained in:
@@ -111,27 +111,7 @@ void TimeBasedPanel::ShuttleRight()
|
||||
|
||||
void TimeBasedPanel::ConnectViewerNode(ViewerOutput *node)
|
||||
{
|
||||
if (widget_->GetConnectedNode() == node) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (widget_->GetConnectedNode()) {
|
||||
disconnect(widget_->GetConnectedNode(), &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
|
||||
}
|
||||
|
||||
widget_->ConnectViewerNode(node);
|
||||
|
||||
if (node) {
|
||||
connect(node, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
|
||||
|
||||
if (show_and_raise_on_connect_) {
|
||||
this->show();
|
||||
this->raise();
|
||||
}
|
||||
}
|
||||
|
||||
// Update strings
|
||||
Retranslate();
|
||||
}
|
||||
|
||||
void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
|
||||
@@ -139,6 +119,7 @@ void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
|
||||
if (widget_) {
|
||||
disconnect(widget_, &TimeBasedWidget::TimeChanged, this, &TimeBasedPanel::TimeChanged);
|
||||
disconnect(widget_, &TimeBasedWidget::TimebaseChanged, this, &TimeBasedPanel::TimebaseChanged);
|
||||
disconnect(widget_, &TimeBasedWidget::ConnectedNodeChanged, this, &TimeBasedPanel::ConnectedNodeChanged);
|
||||
}
|
||||
|
||||
widget_ = widget;
|
||||
@@ -146,6 +127,7 @@ void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
|
||||
if (widget_) {
|
||||
connect(widget_, &TimeBasedWidget::TimeChanged, this, &TimeBasedPanel::TimeChanged);
|
||||
connect(widget_, &TimeBasedWidget::TimebaseChanged, this, &TimeBasedPanel::TimebaseChanged);
|
||||
connect(widget_, &TimeBasedWidget::ConnectedNodeChanged, this, &TimeBasedPanel::ConnectedNodeChanged);
|
||||
}
|
||||
|
||||
SetWidgetWithPadding(widget_);
|
||||
@@ -160,6 +142,25 @@ void TimeBasedPanel::Retranslate()
|
||||
}
|
||||
}
|
||||
|
||||
void TimeBasedPanel::ConnectedNodeChanged(ViewerOutput *old, ViewerOutput *now)
|
||||
{
|
||||
if (old) {
|
||||
disconnect(old, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
|
||||
}
|
||||
|
||||
if (now) {
|
||||
connect(now, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
|
||||
|
||||
if (show_and_raise_on_connect_) {
|
||||
this->show();
|
||||
this->raise();
|
||||
}
|
||||
}
|
||||
|
||||
// Update strings
|
||||
Retranslate();
|
||||
}
|
||||
|
||||
void TimeBasedPanel::SetIn()
|
||||
{
|
||||
GetTimeBasedWidget()->SetInAtPlayhead();
|
||||
|
||||
@@ -135,6 +135,9 @@ private:
|
||||
|
||||
bool show_and_raise_on_connect_;
|
||||
|
||||
private slots:
|
||||
void ConnectedNodeChanged(ViewerOutput* old, ViewerOutput* now);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ void CurveWidget::TimeTargetChangedEvent(Node *target)
|
||||
view_->SetTimeTarget(target);
|
||||
}
|
||||
|
||||
void CurveWidget::ConnectedNodeChanged(ViewerOutput *n)
|
||||
void CurveWidget::ConnectedNodeChangeEvent(ViewerOutput *n)
|
||||
{
|
||||
SetTimeTarget(n);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ protected:
|
||||
|
||||
virtual void TimeTargetChangedEvent(Node* target) override;
|
||||
|
||||
virtual void ConnectedNodeChanged(ViewerOutput* n) override;
|
||||
virtual void ConnectedNodeChangeEvent(ViewerOutput* n) override;
|
||||
|
||||
private:
|
||||
void SetKeyframeButtonEnabled(bool enable);
|
||||
|
||||
@@ -226,7 +226,7 @@ void NodeParamView::TimeChangedEvent(const int64_t ×tamp)
|
||||
UpdateItemTime(timestamp);
|
||||
}
|
||||
|
||||
void NodeParamView::ConnectedNodeChanged(ViewerOutput *n)
|
||||
void NodeParamView::ConnectedNodeChangeEvent(ViewerOutput *n)
|
||||
{
|
||||
// Set viewer as a time target
|
||||
keyframe_view_->SetTimeTarget(n);
|
||||
|
||||
@@ -96,7 +96,7 @@ protected:
|
||||
virtual void TimebaseChangedEvent(const rational&) override;
|
||||
virtual void TimeChangedEvent(const int64_t &) override;
|
||||
|
||||
virtual void ConnectedNodeChanged(ViewerOutput* n) override;
|
||||
virtual void ConnectedNodeChangeEvent(ViewerOutput* n) override;
|
||||
|
||||
private:
|
||||
void UpdateItemTime(const int64_t ×tamp);
|
||||
|
||||
@@ -81,7 +81,7 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
|
||||
|
||||
if (viewer_node_) {
|
||||
// Call potential derivative functions for disconnecting the viewer node
|
||||
DisconnectNodeInternal(viewer_node_);
|
||||
DisconnectNodeEvent(viewer_node_);
|
||||
|
||||
// Disconnect length changed signal
|
||||
disconnect(viewer_node_, &ViewerOutput::LengthChanged, this, &TimeBasedWidget::UpdateMaximumScroll);
|
||||
@@ -95,10 +95,12 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
|
||||
}
|
||||
|
||||
// Set viewer node
|
||||
ViewerOutput* old = viewer_node_;
|
||||
viewer_node_ = node;
|
||||
emit ConnectedNodeChanged(old, node);
|
||||
|
||||
// Call derivatives
|
||||
ConnectedNodeChanged(viewer_node_);
|
||||
ConnectedNodeChangeEvent(viewer_node_);
|
||||
|
||||
if (viewer_node_) {
|
||||
// Connect length changed signal
|
||||
@@ -126,7 +128,7 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
|
||||
}
|
||||
|
||||
// Call derivatives
|
||||
ConnectNodeInternal(viewer_node_);
|
||||
ConnectNodeEvent(viewer_node_);
|
||||
}
|
||||
|
||||
UpdateMaximumScroll();
|
||||
|
||||
@@ -105,11 +105,11 @@ protected:
|
||||
|
||||
virtual void ScaleChangedEvent(const double &) override;
|
||||
|
||||
virtual void ConnectedNodeChanged(ViewerOutput*){}
|
||||
virtual void ConnectedNodeChangeEvent(ViewerOutput*){}
|
||||
|
||||
virtual void ConnectNodeInternal(ViewerOutput*){}
|
||||
virtual void ConnectNodeEvent(ViewerOutput*){}
|
||||
|
||||
virtual void DisconnectNodeInternal(ViewerOutput*){}
|
||||
virtual void DisconnectNodeEvent(ViewerOutput*){}
|
||||
|
||||
void SetAutoMaxScrollBar(bool e);
|
||||
|
||||
@@ -138,6 +138,8 @@ signals:
|
||||
|
||||
void TimebaseChanged(const rational&);
|
||||
|
||||
void ConnectedNodeChanged(ViewerOutput* old, ViewerOutput* now);
|
||||
|
||||
private:
|
||||
class MarkerAddCommand : public UndoCommand
|
||||
{
|
||||
|
||||
@@ -218,7 +218,7 @@ void TimelineWidget::ScaleChangedEvent(const double &scale)
|
||||
}
|
||||
}
|
||||
|
||||
void TimelineWidget::ConnectNodeInternal(ViewerOutput *n)
|
||||
void TimelineWidget::ConnectNodeEvent(ViewerOutput *n)
|
||||
{
|
||||
Sequence* s = static_cast<Sequence*>(n);
|
||||
|
||||
@@ -246,7 +246,7 @@ void TimelineWidget::ConnectNodeInternal(ViewerOutput *n)
|
||||
}
|
||||
}
|
||||
|
||||
void TimelineWidget::DisconnectNodeInternal(ViewerOutput *n)
|
||||
void TimelineWidget::DisconnectNodeEvent(ViewerOutput *n)
|
||||
{
|
||||
Sequence* s = static_cast<Sequence*>(n);
|
||||
|
||||
|
||||
@@ -245,8 +245,8 @@ protected:
|
||||
virtual void TimeChangedEvent(const int64_t &) override;
|
||||
virtual void ScaleChangedEvent(const double &) override;
|
||||
|
||||
virtual void ConnectNodeInternal(ViewerOutput* n) override;
|
||||
virtual void DisconnectNodeInternal(ViewerOutput* n) override;
|
||||
virtual void ConnectNodeEvent(ViewerOutput* n) override;
|
||||
virtual void DisconnectNodeEvent(ViewerOutput* n) override;
|
||||
|
||||
virtual void CopyNodesToClipboardInternal(QXmlStreamWriter *writer, void* userdata) override;
|
||||
virtual void PasteNodesFromClipboardInternal(QXmlStreamReader *reader, XMLNodeData &xml_node_data, void* userdata) override;
|
||||
|
||||
@@ -40,20 +40,20 @@ FootageViewerWidget::FootageViewerWidget(QWidget *parent) :
|
||||
connect(controls_, &PlaybackControls::AudioPressed, this, &FootageViewerWidget::StartAudioDrag);
|
||||
}
|
||||
|
||||
void FootageViewerWidget::ConnectNodeInternal(ViewerOutput *n)
|
||||
void FootageViewerWidget::ConnectNodeEvent(ViewerOutput *n)
|
||||
{
|
||||
super::ConnectNodeInternal(n);
|
||||
super::ConnectNodeEvent(n);
|
||||
|
||||
SetTimestamp(cached_timestamps_.value(n, 0));
|
||||
}
|
||||
|
||||
void FootageViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
|
||||
void FootageViewerWidget::DisconnectNodeEvent(ViewerOutput *n)
|
||||
{
|
||||
// Cache timestamp in case this footage is opened again later
|
||||
cached_timestamps_.insert(n, GetTimestamp());
|
||||
SetTimestamp(0);
|
||||
|
||||
super::DisconnectNodeInternal(n);
|
||||
super::DisconnectNodeEvent(n);
|
||||
}
|
||||
|
||||
void FootageViewerWidget::StartFootageDragInternal(bool enable_video, bool enable_audio)
|
||||
|
||||
@@ -33,9 +33,9 @@ public:
|
||||
FootageViewerWidget(QWidget* parent = nullptr);
|
||||
|
||||
protected:
|
||||
virtual void ConnectNodeInternal(ViewerOutput *) override;
|
||||
virtual void ConnectNodeEvent(ViewerOutput *) override;
|
||||
|
||||
virtual void DisconnectNodeInternal(ViewerOutput *) override;
|
||||
virtual void DisconnectNodeEvent(ViewerOutput *) override;
|
||||
|
||||
private:
|
||||
void StartFootageDragInternal(bool enable_video, bool enable_audio);
|
||||
|
||||
@@ -175,7 +175,7 @@ void ViewerWidget::TimeChangedEvent(const int64_t &i)
|
||||
last_time_ = i;
|
||||
}
|
||||
|
||||
void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
|
||||
void ViewerWidget::ConnectNodeEvent(ViewerOutput *n)
|
||||
{
|
||||
connect(n, &ViewerOutput::SizeChanged, this, &ViewerWidget::SetViewerResolution);
|
||||
connect(n, &ViewerOutput::PixelAspectChanged, this, &ViewerWidget::SetViewerPixelAspect);
|
||||
@@ -217,7 +217,7 @@ void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
|
||||
ForceUpdate();
|
||||
}
|
||||
|
||||
void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
|
||||
void ViewerWidget::DisconnectNodeEvent(ViewerOutput *n)
|
||||
{
|
||||
PauseInternal();
|
||||
|
||||
@@ -248,7 +248,7 @@ void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
|
||||
QMetaObject::invokeMethod(this, "UpdateStack", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void ViewerWidget::ConnectedNodeChanged(ViewerOutput *n)
|
||||
void ViewerWidget::ConnectedNodeChangeEvent(ViewerOutput *n)
|
||||
{
|
||||
auto_cacher_.SetViewerNode(n);
|
||||
}
|
||||
|
||||
@@ -151,9 +151,9 @@ protected:
|
||||
virtual void TimebaseChangedEvent(const rational &) override;
|
||||
virtual void TimeChangedEvent(const int64_t &) override;
|
||||
|
||||
virtual void ConnectNodeInternal(ViewerOutput *) override;
|
||||
virtual void DisconnectNodeInternal(ViewerOutput *) override;
|
||||
virtual void ConnectedNodeChanged(ViewerOutput *) override;
|
||||
virtual void ConnectNodeEvent(ViewerOutput *) override;
|
||||
virtual void DisconnectNodeEvent(ViewerOutput *) override;
|
||||
virtual void ConnectedNodeChangeEvent(ViewerOutput *) override;
|
||||
|
||||
virtual void ScaleChangedEvent(const double& s) override;
|
||||
|
||||
|
||||
@@ -101,9 +101,10 @@ void ViewerSizer::UpdateSize()
|
||||
return;
|
||||
}
|
||||
|
||||
// If the aspect ratio is 0, the widget is always hidden
|
||||
// If the aspect ratio is 0, default to taking all space
|
||||
if (!width_ || !height_) {
|
||||
widget_->setVisible(false);
|
||||
widget_->move(0, 0);
|
||||
widget_->resize(width(), height());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -142,7 +143,6 @@ void ViewerSizer::UpdateSize()
|
||||
}
|
||||
|
||||
// Size widget to the UI space we've calculated
|
||||
widget_->setVisible(true);
|
||||
widget_->resize(available_width, available_height);
|
||||
|
||||
// Adjust to aspect ratio
|
||||
|
||||
Reference in New Issue
Block a user