Remove large resources from the application. #16
@ -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