/****************************************************************************
 * Copyright (c) 2024 MAK Technologies, Inc.
 * All rights reserved.
 ****************************************************************************/

/*********************************************************************
 **
 *t  bdiUIPluginWidgetFactory Class Declaration
 **
 */

#pragma once

#include <diguy_constants.h>

class QFrame;
class QWidget;
class QOpenGLWidget;

class bdiQGraphicsView;
class diguyQGraphicsProxyWidget;

/****************************************************************************/
class diguyUIPluginWidgetFactory
{
public:

   diguyUIPluginWidgetFactory();
   virtual ~diguyUIPluginWidgetFactory();

   virtual diguyQGraphicsProxyWidget* add_graphics_proxy_widget( const char* name, QWidget* widget,
      int base_x = 0, int base_y = 0, int base_z = 0, int base_w = 0, int base_h = 0 );

   virtual diguyQGraphicsProxyWidget* create_graphics_proxy_widget( const char* name,
      int base_x = 0, int base_y = 0, int base_z = 0, int base_w = 0, int base_h = 0 );

   virtual diguyQGraphicsProxyWidget* create_graphics_proxy_window( const char* name, const char* title,
      int base_x = 0, int base_y = 0, int base_z = 0, int base_w = 0, int base_h = 0 );

   // could be a different member in classes that implement this one
   virtual bdiQGraphicsView *get_graphics_view() { return m_primary_3d_window_graphics_view; }


   QWidget* get_top_level_widget() { return m_top_level_widget; }
   QWidget* get_primary_3d_window_widget() { return m_primary_3d_window_widget; }
   QOpenGLWidget* get_primary_3d_gl_widget() { return m_primary_3d_gl_widget; }
   QFrame* get_primary_3d_window_frame_left();
   QFrame* get_primary_3d_window_frame_right();
   QFrame* get_primary_3d_window_frame_top();
   QFrame* get_primary_3d_window_frame_bottom();

   QWidget* m_top_level_widget;
   QWidget* m_primary_3d_window_widget;
   QOpenGLWidget* m_primary_3d_gl_widget;
   bdiQGraphicsView* m_primary_3d_window_graphics_view;

};
