correctly update the panel subtitles based on the media connected
This commit is contained in:
@@ -233,6 +233,18 @@ void ViewerOutput::Retranslate()
|
||||
}
|
||||
}
|
||||
|
||||
const QString &ViewerOutput::media_name() const
|
||||
{
|
||||
return media_name_;
|
||||
}
|
||||
|
||||
void ViewerOutput::set_media_name(const QString &name)
|
||||
{
|
||||
media_name_ = name;
|
||||
|
||||
emit MediaNameChanged(media_name_);
|
||||
}
|
||||
|
||||
const QVector<TrackOutput *>& ViewerOutput::Tracks() const
|
||||
{
|
||||
return track_cache_;
|
||||
|
||||
@@ -74,6 +74,9 @@ public:
|
||||
|
||||
virtual void Retranslate() override;
|
||||
|
||||
const QString& media_name() const;
|
||||
void set_media_name(const QString& name);
|
||||
|
||||
protected:
|
||||
virtual void DependentEdgeChanged(NodeInput* from) override;
|
||||
|
||||
@@ -100,6 +103,8 @@ signals:
|
||||
|
||||
void TrackHeightChanged(Timeline::TrackType type, int index, int height);
|
||||
|
||||
void MediaNameChanged(const QString& name);
|
||||
|
||||
private:
|
||||
QUuid uuid_;
|
||||
|
||||
@@ -121,6 +126,8 @@ private:
|
||||
|
||||
rational timeline_length_;
|
||||
|
||||
QString media_name_;
|
||||
|
||||
private slots:
|
||||
void UpdateTrackCache();
|
||||
|
||||
|
||||
@@ -41,6 +41,12 @@ FootageViewerPanel::FootageViewerPanel(QWidget *parent) :
|
||||
void FootageViewerPanel::SetFootage(Footage *f)
|
||||
{
|
||||
static_cast<FootageViewerWidget*>(viewer_)->SetFootage(f);
|
||||
|
||||
if (f) {
|
||||
SetSubtitle(f->name());
|
||||
} else {
|
||||
Retranslate();
|
||||
}
|
||||
}
|
||||
|
||||
void FootageViewerPanel::changeEvent(QEvent *e)
|
||||
@@ -54,5 +60,8 @@ void FootageViewerPanel::changeEvent(QEvent *e)
|
||||
void FootageViewerPanel::Retranslate()
|
||||
{
|
||||
SetTitle(tr("Footage Viewer"));
|
||||
SetSubtitle(tr("(none)"));
|
||||
|
||||
if (!static_cast<FootageViewerWidget*>(viewer_)->GetFootage()) {
|
||||
SetSubtitle(tr("(none)"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,17 @@ void TimelinePanel::SetTime(const int64_t ×tamp)
|
||||
|
||||
void TimelinePanel::ConnectTimelineNode(ViewerOutput *node)
|
||||
{
|
||||
if (timeline_widget_->GetConnectedNode()) {
|
||||
disconnect(timeline_widget_->GetConnectedNode(), &ViewerOutput::MediaNameChanged, this, &TimelinePanel::SetSubtitle);
|
||||
Retranslate();
|
||||
}
|
||||
|
||||
timeline_widget_->ConnectTimelineNode(node);
|
||||
|
||||
if (node) {
|
||||
connect(node, &ViewerOutput::MediaNameChanged, this, &TimelinePanel::SetSubtitle);
|
||||
SetSubtitle(node->media_name());
|
||||
}
|
||||
}
|
||||
|
||||
void TimelinePanel::DisconnectTimelineNode()
|
||||
@@ -140,5 +150,8 @@ void TimelinePanel::changeEvent(QEvent *e)
|
||||
void TimelinePanel::Retranslate()
|
||||
{
|
||||
SetTitle(tr("Timeline"));
|
||||
SetSubtitle(tr("(none)"));
|
||||
|
||||
if (!timeline_widget_->GetConnectedNode()) {
|
||||
SetSubtitle(tr("(none)"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,12 +39,17 @@ ViewerPanel::ViewerPanel(QWidget *parent) :
|
||||
|
||||
void ViewerPanel::ConnectViewerNode(ViewerOutput *node)
|
||||
{
|
||||
viewer_->ConnectViewerNode(node);
|
||||
}
|
||||
if (viewer_->GetConnectedViewer()) {
|
||||
disconnect(viewer_->GetConnectedViewer(), &ViewerOutput::MediaNameChanged, this, &ViewerPanel::SetSubtitle);
|
||||
Retranslate();
|
||||
}
|
||||
|
||||
void ViewerPanel::DisconnectViewerNode()
|
||||
{
|
||||
viewer_->DisconnectViewerNode();
|
||||
viewer_->ConnectViewerNode(node);
|
||||
|
||||
if (node) {
|
||||
connect(node, &ViewerOutput::MediaNameChanged, this, &ViewerPanel::SetSubtitle);
|
||||
SetSubtitle(node->media_name());
|
||||
}
|
||||
}
|
||||
|
||||
rational ViewerPanel::GetTime()
|
||||
@@ -73,5 +78,8 @@ void ViewerPanel::changeEvent(QEvent *e)
|
||||
void ViewerPanel::Retranslate()
|
||||
{
|
||||
SetTitle(tr("Viewer"));
|
||||
SetSubtitle(tr("(none)"));
|
||||
|
||||
if (!viewer_->GetConnectedViewer()) {
|
||||
SetSubtitle(tr("(none)"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,8 +35,6 @@ public:
|
||||
|
||||
void ConnectViewerNode(ViewerOutput* node);
|
||||
|
||||
void DisconnectViewerNode();
|
||||
|
||||
rational GetTime();
|
||||
|
||||
ViewerOutput* GetConnectedViewer() const;
|
||||
|
||||
@@ -95,6 +95,8 @@ const QString &Item::name() const
|
||||
void Item::set_name(const QString &n)
|
||||
{
|
||||
name_ = n;
|
||||
|
||||
NameChangedEvent(n);
|
||||
}
|
||||
|
||||
const QString &Item::tooltip() const
|
||||
@@ -155,6 +157,10 @@ bool Item::ChildExistsWithName(const QString &name)
|
||||
return ChildExistsWithNameInternal(name, this);
|
||||
}
|
||||
|
||||
void Item::NameChangedEvent(const QString &name)
|
||||
{
|
||||
}
|
||||
|
||||
bool Item::ChildExistsWithNameInternal(const QString &name, Item *folder)
|
||||
{
|
||||
// Loop through all children
|
||||
|
||||
@@ -44,7 +44,7 @@ using ItemPtr = std::shared_ptr<Item>;
|
||||
* Project objects implement a parent-child hierarchy of Items that can be used throughout the Project. The Item class
|
||||
* itself is abstract and will need to be subclassed to be used in a Project.
|
||||
*/
|
||||
class Item : public ThreadedObject
|
||||
class Item
|
||||
{
|
||||
public:
|
||||
enum Type {
|
||||
@@ -101,6 +101,9 @@ public:
|
||||
|
||||
bool ChildExistsWithName(const QString& name);
|
||||
|
||||
protected:
|
||||
virtual void NameChangedEvent(const QString& name);
|
||||
|
||||
private:
|
||||
bool ChildExistsWithNameInternal(const QString& name, Item* folder);
|
||||
|
||||
|
||||
@@ -250,5 +250,11 @@ void Sequence::set_default_parameters()
|
||||
Config::Current()["DefaultSequenceHeight"].toInt(),
|
||||
Config::Current()["DefaultSequenceFrameRate"].value<rational>()));
|
||||
set_audio_params(AudioParams(Config::Current()["DefaultSequenceAudioFrequency"].toInt(),
|
||||
Config::Current()["DefaultSequenceAudioLayout"].toULongLong()));
|
||||
Config::Current()["DefaultSequenceAudioLayout"].toULongLong()));
|
||||
}
|
||||
|
||||
void Sequence::NameChangedEvent(const QString &name)
|
||||
{
|
||||
qDebug() << "Setting viewer output name to" << name;
|
||||
viewer_output_->set_media_name(name);
|
||||
}
|
||||
|
||||
@@ -71,6 +71,9 @@ public:
|
||||
|
||||
void set_default_parameters();
|
||||
|
||||
protected:
|
||||
virtual void NameChangedEvent(const QString& name) override;
|
||||
|
||||
private:
|
||||
ViewerOutput* viewer_output_;
|
||||
|
||||
|
||||
@@ -113,6 +113,14 @@ public:
|
||||
virtual void DecreaseTrackHeight(){}
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @brief paintEvent
|
||||
* @param event
|
||||
*/
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
|
||||
|
||||
protected slots:
|
||||
/**
|
||||
* @brief Set panel's title
|
||||
*
|
||||
@@ -141,11 +149,6 @@ protected:
|
||||
*/
|
||||
void SetSubtitle(const QString& t);
|
||||
|
||||
/**
|
||||
* @brief paintEvent
|
||||
* @param event
|
||||
*/
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
private:
|
||||
/**
|
||||
* @brief Internal function that sets the QDockWidget's window title whenever the title/subtitle change.
|
||||
|
||||
@@ -525,6 +525,11 @@ QList<TimelineViewBlockItem *> TimelineWidget::GetSelectedBlocks()
|
||||
return list;
|
||||
}
|
||||
|
||||
ViewerOutput *TimelineWidget::GetConnectedNode() const
|
||||
{
|
||||
return timeline_node_;
|
||||
}
|
||||
|
||||
void TimelineWidget::RippleEditTo(Timeline::MovementMode mode, bool insert_gaps)
|
||||
{
|
||||
rational playhead_time = Timecode::timestamp_to_time(playhead_, timebase());
|
||||
|
||||
@@ -63,6 +63,8 @@ public:
|
||||
|
||||
QList<TimelineViewBlockItem*> GetSelectedBlocks();
|
||||
|
||||
ViewerOutput* GetConnectedNode() const;
|
||||
|
||||
public slots:
|
||||
void SetTimebase(const rational& timebase);
|
||||
|
||||
|
||||
@@ -15,10 +15,15 @@ FootageViewerWidget::FootageViewerWidget(QWidget *parent) :
|
||||
NodeParam::ConnectEdge(video_node_->output(), viewer_node_->length_input());
|
||||
}
|
||||
|
||||
Footage *FootageViewerWidget::GetFootage() const
|
||||
{
|
||||
return footage_;
|
||||
}
|
||||
|
||||
void FootageViewerWidget::SetFootage(Footage *footage)
|
||||
{
|
||||
if (footage_) {
|
||||
DisconnectViewerNode();
|
||||
ConnectViewerNode(nullptr);
|
||||
}
|
||||
|
||||
footage_ = footage;
|
||||
|
||||
@@ -12,6 +12,7 @@ class FootageViewerWidget : public ViewerWidget
|
||||
public:
|
||||
FootageViewerWidget(QWidget* parent = nullptr);
|
||||
|
||||
Footage* GetFootage() const;
|
||||
void SetFootage(Footage* footage);
|
||||
|
||||
private:
|
||||
|
||||
@@ -186,11 +186,6 @@ void ViewerWidget::ConnectViewerNode(ViewerOutput *node, ColorManager* color_man
|
||||
}
|
||||
}
|
||||
|
||||
void ViewerWidget::DisconnectViewerNode()
|
||||
{
|
||||
ConnectViewerNode(nullptr);
|
||||
}
|
||||
|
||||
ViewerOutput *ViewerWidget::GetConnectedViewer() const
|
||||
{
|
||||
return viewer_node_;
|
||||
|
||||
@@ -65,8 +65,6 @@ public:
|
||||
|
||||
void ConnectViewerNode(ViewerOutput* node, ColorManager *color_manager = nullptr);
|
||||
|
||||
void DisconnectViewerNode();
|
||||
|
||||
ViewerOutput* GetConnectedViewer() const;
|
||||
|
||||
void SetColorMenuEnabled(bool enabled);
|
||||
|
||||
Reference in New Issue
Block a user