updated scope panel to be permanent
Never liked how this was set up before. This makes more sense to me.
This commit is contained in:
@@ -29,8 +29,7 @@ FootageViewerPanel::FootageViewerPanel(QWidget *parent) :
|
||||
{
|
||||
// Set ViewerWidget as the central widget
|
||||
FootageViewerWidget* fvw = new FootageViewerWidget();
|
||||
connect(fvw, &FootageViewerWidget::RequestScopePanel, this, &FootageViewerPanel::CreateScopePanel);
|
||||
SetTimeBasedWidget(fvw);
|
||||
SetViewerWidget(fvw);
|
||||
|
||||
// Set strings
|
||||
Retranslate();
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
namespace olive {
|
||||
|
||||
ScopePanel::ScopePanel(QWidget* parent) :
|
||||
PanelWidget(QStringLiteral("ScopePanel"), parent)
|
||||
PanelWidget(QStringLiteral("ScopePanel"), parent),
|
||||
viewer_(nullptr)
|
||||
{
|
||||
QWidget* central = new QWidget();
|
||||
setWidget(central);
|
||||
@@ -84,6 +85,30 @@ QString ScopePanel::TypeToName(ScopePanel::Type t)
|
||||
return QString();
|
||||
}
|
||||
|
||||
void ScopePanel::SetViewerPanel(ViewerPanelBase *vp)
|
||||
{
|
||||
if (viewer_ == vp) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (viewer_) {
|
||||
disconnect(viewer_, &ViewerPanelBase::TextureChanged, this, &ScopePanel::SetReferenceBuffer);
|
||||
disconnect(viewer_, &ViewerPanelBase::ColorManagerChanged, this, &ScopePanel::SetColorManager);
|
||||
}
|
||||
|
||||
viewer_ = vp;
|
||||
|
||||
if (viewer_) {
|
||||
// Connect viewer widget texture drawing to scope panel
|
||||
connect(viewer_, &ViewerPanelBase::TextureChanged, this, &ScopePanel::SetReferenceBuffer);
|
||||
connect(viewer_, &ViewerPanelBase::ColorManagerChanged, this, &ScopePanel::SetColorManager);
|
||||
|
||||
SetColorManager(viewer_->GetColorManager());
|
||||
|
||||
viewer_->UpdateTextureFromNode();
|
||||
}
|
||||
}
|
||||
|
||||
void ScopePanel::SetReferenceBuffer(TexturePtr frame)
|
||||
{
|
||||
histogram_->SetBuffer(frame);
|
||||
@@ -98,7 +123,7 @@ void ScopePanel::SetColorManager(ColorManager *manager)
|
||||
|
||||
void ScopePanel::Retranslate()
|
||||
{
|
||||
SetTitle(tr("Scope"));
|
||||
SetTitle(tr("Scopes"));
|
||||
|
||||
for (int i=0;i<ScopePanel::kTypeCount;i++) {
|
||||
scope_type_combobox_->setItemText(i, TypeToName(static_cast<Type>(i)));
|
||||
|
||||
+10
-2
@@ -24,14 +24,13 @@
|
||||
#include <QComboBox>
|
||||
#include <QStackedWidget>
|
||||
|
||||
#include "panel/viewer/viewerbase.h"
|
||||
#include "widget/panel/panel.h"
|
||||
#include "widget/scope/histogram/histogram.h"
|
||||
#include "widget/scope/waveform/waveform.h"
|
||||
|
||||
namespace olive {
|
||||
|
||||
class ViewerPanel;
|
||||
|
||||
class ScopePanel : public PanelWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -49,6 +48,13 @@ public:
|
||||
|
||||
static QString TypeToName(Type t);
|
||||
|
||||
void SetViewerPanel(ViewerPanelBase *vp);
|
||||
|
||||
ViewerPanelBase *GetConnectedViewerPanel() const
|
||||
{
|
||||
return viewer_;
|
||||
}
|
||||
|
||||
public slots:
|
||||
void SetReferenceBuffer(TexturePtr frame);
|
||||
|
||||
@@ -68,6 +74,8 @@ private:
|
||||
|
||||
HistogramScope* histogram_;
|
||||
|
||||
ViewerPanelBase *viewer_;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -27,8 +27,7 @@ ViewerPanel::ViewerPanel(const QString &object_name, QWidget *parent) :
|
||||
{
|
||||
// Set ViewerWidget as the central widget
|
||||
ViewerWidget* vw = new ViewerWidget();
|
||||
connect(vw, &ViewerWidget::RequestScopePanel, this, &ViewerPanel::CreateScopePanel);
|
||||
SetTimeBasedWidget(vw);
|
||||
SetViewerWidget(vw);
|
||||
|
||||
// Set strings
|
||||
Retranslate();
|
||||
|
||||
@@ -92,20 +92,13 @@ void ViewerPanelBase::CacheSequenceInOut()
|
||||
static_cast<ViewerWidget*>(GetTimeBasedWidget())->CacheSequenceInOut();
|
||||
}
|
||||
|
||||
void ViewerPanelBase::CreateScopePanel(ScopePanel::Type type)
|
||||
void ViewerPanelBase::SetViewerWidget(ViewerWidget *vw)
|
||||
{
|
||||
ViewerWidget* vw = static_cast<ViewerWidget*>(GetTimeBasedWidget());
|
||||
ScopePanel* p = Core::instance()->main_window()->AppendScopePanel();
|
||||
connect(vw, &ViewerWidget::TextureChanged, this, &ViewerPanelBase::TextureChanged);
|
||||
connect(vw, &ViewerWidget::ColorProcessorChanged, this, &ViewerPanelBase::ColorProcessorChanged);
|
||||
connect(vw, &ViewerWidget::ColorManagerChanged, this, &ViewerPanelBase::ColorManagerChanged);
|
||||
|
||||
p->SetType(type);
|
||||
|
||||
// Connect viewer widget texture drawing to scope panel
|
||||
connect(vw, &ViewerWidget::TextureChanged, p, &ScopePanel::SetReferenceBuffer);
|
||||
connect(vw, &ViewerWidget::ColorManagerChanged, p, &ScopePanel::SetColorManager);
|
||||
|
||||
p->SetColorManager(vw->color_manager());
|
||||
|
||||
vw->UpdateTextureFromNode();
|
||||
SetTimeBasedWidget(vw);
|
||||
}
|
||||
|
||||
void ViewerPanelBase::closeEvent(QCloseEvent *e)
|
||||
|
||||
@@ -52,6 +52,16 @@ public:
|
||||
*/
|
||||
void SetFullScreen(QScreen* screen = nullptr);
|
||||
|
||||
ColorManager *GetColorManager()
|
||||
{
|
||||
return static_cast<ViewerWidget*>(GetTimeBasedWidget())->color_manager();
|
||||
}
|
||||
|
||||
void UpdateTextureFromNode()
|
||||
{
|
||||
static_cast<ViewerWidget*>(GetTimeBasedWidget())->UpdateTextureFromNode();
|
||||
}
|
||||
|
||||
public slots:
|
||||
void SetGizmos(Node* node);
|
||||
|
||||
@@ -59,8 +69,24 @@ public slots:
|
||||
|
||||
void CacheSequenceInOut();
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief Signal emitted when a new frame is loaded
|
||||
*/
|
||||
void TextureChanged(TexturePtr t);
|
||||
|
||||
/**
|
||||
* @brief Wrapper for ViewerGLWidget::ColorProcessorChanged()
|
||||
*/
|
||||
void ColorProcessorChanged(ColorProcessorPtr processor);
|
||||
|
||||
/**
|
||||
* @brief Wrapper for ViewerGLWidget::ColorManagerChanged()
|
||||
*/
|
||||
void ColorManagerChanged(ColorManager* color_manager);
|
||||
|
||||
protected:
|
||||
void CreateScopePanel(ScopePanel::Type type);
|
||||
void SetViewerWidget(ViewerWidget *vw);
|
||||
|
||||
virtual void closeEvent(QCloseEvent* e) override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user