Remove ToolBox MainWindow dependency.
This commit is contained in:
parent
e2c7f5ba75
commit
e68d384340
@ -21,6 +21,9 @@
|
|||||||
|
|
||||||
using namespace Qtk;
|
using namespace Qtk;
|
||||||
|
|
||||||
|
/// Static manager for all QtkWidget instances.
|
||||||
|
QtkWidgetManager QtkWidget::mWidgetManager;
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Constructors, Destructors
|
* Constructors, Destructors
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
@ -36,9 +39,11 @@ QtkWidget::QtkWidget(QWidget * parent, const QString & name, Scene * scene) :
|
|||||||
QOpenGLWidget(parent), mDebugLogger(Q_NULLPTR),
|
QOpenGLWidget(parent), mDebugLogger(Q_NULLPTR),
|
||||||
mConsole(new DebugConsole(this, name)), mScene(Q_NULLPTR)
|
mConsole(new DebugConsole(this, name)), mScene(Q_NULLPTR)
|
||||||
{
|
{
|
||||||
|
setObjectName(name);
|
||||||
|
mWidgetManager.add_widget(this);
|
||||||
|
|
||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
setScene(scene);
|
setScene(scene);
|
||||||
setObjectName(name);
|
|
||||||
QSurfaceFormat format;
|
QSurfaceFormat format;
|
||||||
format.setRenderableType(QSurfaceFormat::OpenGL);
|
format.setRenderableType(QSurfaceFormat::OpenGL);
|
||||||
format.setProfile(QSurfaceFormat::CoreProfile);
|
format.setProfile(QSurfaceFormat::CoreProfile);
|
||||||
|
@ -119,6 +119,13 @@ namespace Qtk
|
|||||||
*/
|
*/
|
||||||
void setScene(Qtk::Scene * scene);
|
void setScene(Qtk::Scene * scene);
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* Public Members
|
||||||
|
************************************************************************/
|
||||||
|
|
||||||
|
/// Static manager for all QtkWidget instances.
|
||||||
|
static class QtkWidgetManager mWidgetManager;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -212,6 +219,54 @@ namespace Qtk
|
|||||||
Qtk::DebugConsole * mConsole;
|
Qtk::DebugConsole * mConsole;
|
||||||
bool mConsoleActive = true;
|
bool mConsoleActive = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Struct to help manage QtkWidget instances.
|
||||||
|
* When a QtkWidget is constructed we register it by calling add_widget().
|
||||||
|
* Widgets can be retrieved by their unique name.
|
||||||
|
*/
|
||||||
|
struct QtkWidgetManager {
|
||||||
|
/**
|
||||||
|
* Get a QtkWidget by name.
|
||||||
|
*
|
||||||
|
* @param name The name of the QtkWidget to retrieve.
|
||||||
|
*/
|
||||||
|
QtkWidget * get_widget(const QString & name = "QtkWidget")
|
||||||
|
{
|
||||||
|
if (mQtkWidgets.count(name) == 0) {
|
||||||
|
qDebug() << this
|
||||||
|
<< " Attempt to get QtkWidget that doesn't exist: " << name;
|
||||||
|
return Q_NULLPTR;
|
||||||
|
}
|
||||||
|
return mQtkWidgets[name];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a QtkWidget with this manager.
|
||||||
|
*
|
||||||
|
* If the QObject::objectName is unset the widget and QObject is renamed
|
||||||
|
* 'Unamed-QtkWidget'.
|
||||||
|
*
|
||||||
|
* @param widget Pointer to the QtkWidget to register to this manager.
|
||||||
|
*/
|
||||||
|
void add_widget(QtkWidget * widget)
|
||||||
|
{
|
||||||
|
auto name = widget->objectName();
|
||||||
|
name = name == "" ? "Unamed-QtkWidget" : name;
|
||||||
|
if (mQtkWidgets.count(name)) {
|
||||||
|
qDebug()
|
||||||
|
<< "[QtkWidgetManager " << this
|
||||||
|
<< " ] Failed to add a QtkWidget with the previously used name '"
|
||||||
|
<< name << "'";
|
||||||
|
}
|
||||||
|
qDebug() << this << " Adding new QtkWidget named '" << name << "'";
|
||||||
|
mQtkWidgets[name] = widget;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unordered_map<QString, QtkWidget *> mQtkWidgets;
|
||||||
|
};
|
||||||
} // namespace Qtk
|
} // namespace Qtk
|
||||||
|
|
||||||
#endif // QTK_QTKWIDGET_H
|
#endif // QTK_QTKWIDGET_H
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "toolbox.h"
|
#include "toolbox.h"
|
||||||
#include "app/qtkmainwindow.h"
|
#include "qtkwidget.h"
|
||||||
#include "ui_toolbox.h"
|
#include "ui_toolbox.h"
|
||||||
|
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
@ -25,7 +25,7 @@ ToolBox::ToolBox(QWidget * parent) : QDockWidget(parent), ui(new Ui::ToolBox)
|
|||||||
void ToolBox::updateFocus(const QString & name)
|
void ToolBox::updateFocus(const QString & name)
|
||||||
{
|
{
|
||||||
auto object =
|
auto object =
|
||||||
MainWindow::getMainWindow()->getQtkWidget()->getScene()->getObject(name);
|
Qtk::QtkWidget::mWidgetManager.get_widget()->getScene()->getObject(name);
|
||||||
if (object != Q_NULLPTR) {
|
if (object != Q_NULLPTR) {
|
||||||
removePages();
|
removePages();
|
||||||
createPageProperties(object);
|
createPageProperties(object);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user