dockWidget refactoring, and added resource Widget
This commit is contained in:
parent
2f793bd15f
commit
1668101b46
@ -1,45 +1,67 @@
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include "sparrowrenderer.h"
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtWidgets/QAction>
|
||||
#include <QtWidgets/QApplication>
|
||||
#include <QtWidgets/QButtonGroup>
|
||||
#include <QtWidgets/QHBoxLayout>
|
||||
#include <QtWidgets/QHeaderView>
|
||||
#include <QtWidgets/QMainWindow>
|
||||
#include <QtWidgets/QMenu>
|
||||
#include <QtWidgets/QMenuBar>
|
||||
#include <QtWidgets/QVBoxLayout>
|
||||
#include <QtWidgets/QWidget>
|
||||
#include "modulewidget.h"
|
||||
#include "resourcewidget.h"
|
||||
#include "myglwidget.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
QMainWindow(parent),
|
||||
ui(new Ui::MainWindow)
|
||||
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
setWindowTitle("SparrowRenderer");
|
||||
resize(800, 600);
|
||||
|
||||
// modules widget
|
||||
moduleWidget = new ModuleWidget(this);
|
||||
addDockWidget(Qt::LeftDockWidgetArea, moduleWidget);
|
||||
|
||||
// resources widget
|
||||
resourceWidget = new ResourceWidget(this);
|
||||
addDockWidget(Qt::RightDockWidgetArea, resourceWidget);
|
||||
|
||||
// opengl widget
|
||||
openGLWidget = new OpenGLWidget(this);
|
||||
openGLWidget->setRenderer(moduleWidget);
|
||||
setCentralWidget(openGLWidget);
|
||||
|
||||
// actions
|
||||
actionExit = new QAction(this);
|
||||
actionExit->setText("Exit");
|
||||
|
||||
actionShowModuleWidget = new QAction(this);
|
||||
actionShowModuleWidget->setText("Modules");
|
||||
actionShowModuleWidget->setEnabled(false);
|
||||
|
||||
// menubar
|
||||
menuBar = new QMenuBar(this);
|
||||
menuBar->setGeometry(QRect(0, 0, 800, 22));
|
||||
menuMenu = new QMenu(menuBar);
|
||||
menuMenu->setTitle("Main menu");
|
||||
menuMenu->addAction(actionShowModuleWidget);
|
||||
menuMenu->addAction(actionExit);
|
||||
menuBar->addAction(menuMenu->menuAction());
|
||||
menuBar->setNativeMenuBar(false);
|
||||
setMenuBar(menuBar);
|
||||
|
||||
// connect signals to slots
|
||||
QObject::connect(actionExit, SIGNAL(triggered()), this, SLOT(close()));
|
||||
QObject::connect(moduleWidget, SIGNAL(visibilityChanged(bool)), actionShowModuleWidget, SLOT(setDisabled(bool)));
|
||||
QObject::connect(actionShowModuleWidget, SIGNAL(triggered()), this, SLOT(reopenModuleWidget()));
|
||||
QObject::connect(openGLWidget, SIGNAL(modulesChanged()), moduleWidget, SLOT(updateList()));
|
||||
QObject::connect(openGLWidget, SIGNAL(modulesChanged()), resourceWidget, SLOT(updateList()));
|
||||
|
||||
QMetaObject::connectSlotsByName(this);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
void MainWindow::reopenModuleWidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void MainWindow::dockWidgetClosed()
|
||||
{
|
||||
emit(ui->dockWidget->setVisible(true));
|
||||
}
|
||||
|
||||
void MainWindow::updateTree()
|
||||
{
|
||||
QTreeWidget* tree = ui->treeWidget;
|
||||
SparrowRenderer* renderer = ui->openGLWidget->getRenderer();
|
||||
tree->clear();
|
||||
for(int i=0; i<renderer->getNbModules(); ++i)
|
||||
{
|
||||
std::string moduleName = renderer->getModuleName(i);
|
||||
QTreeWidgetItem* item = new QTreeWidgetItem();
|
||||
item->setText(0, QString(moduleName.c_str()));
|
||||
tree->addTopLevelItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::moduleSetEnabled(QTreeWidgetItem* item, int button)
|
||||
{
|
||||
SparrowRenderer* renderer = ui->openGLWidget->getRenderer();
|
||||
std::string name = item->text(0).toStdString();
|
||||
if(renderer->isModuleEnabled(name))
|
||||
renderer->disableModule(name);
|
||||
else
|
||||
renderer->enableModule(name);
|
||||
ui->openGLWidget->updateGL();
|
||||
emit(moduleWidget->setVisible(true));
|
||||
}
|
||||
|
19
mainwindow.h
19
mainwindow.h
@ -3,7 +3,9 @@
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
class QTreeWidgetItem;
|
||||
class OpenGLWidget;
|
||||
class ModuleWidget;
|
||||
class ResourceWidget;
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
@ -15,15 +17,18 @@ class MainWindow : public QMainWindow
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
QAction *actionExit;
|
||||
QAction *actionShowModuleWidget;
|
||||
QMenuBar *menuBar;
|
||||
QMenu *menuMenu;
|
||||
OpenGLWidget *openGLWidget;
|
||||
ModuleWidget *moduleWidget;
|
||||
ResourceWidget *resourceWidget;
|
||||
|
||||
public slots:
|
||||
void dockWidgetClosed();
|
||||
void updateTree();
|
||||
void moduleSetEnabled(QTreeWidgetItem* item, int button);
|
||||
private slots:
|
||||
void reopenModuleWidget();
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
202
mainwindow.ui
202
mainwindow.ui
@ -1,202 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>854</width>
|
||||
<height>510</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="MyGLWidget" name="openGLWidget"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>854</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuMenu">
|
||||
<property name="title">
|
||||
<string>menu</string>
|
||||
</property>
|
||||
<addaction name="actionShow_control_panel"/>
|
||||
<addaction name="actionExit"/>
|
||||
</widget>
|
||||
<addaction name="menuMenu"/>
|
||||
</widget>
|
||||
<widget class="QDockWidget" name="dockWidget">
|
||||
<attribute name="dockWidgetArea">
|
||||
<number>1</number>
|
||||
</attribute>
|
||||
<widget class="QWidget" name="dockWidgetContents">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QTreeWidget" name="treeWidget">
|
||||
<column>
|
||||
<property name="text">
|
||||
<string notr="true">rendering pipeline</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<action name="actionExit">
|
||||
<property name="text">
|
||||
<string>exit</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionShow_control_panel">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>show control panel</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>MyGLWidget</class>
|
||||
<extends>QOpenGLWidget</extends>
|
||||
<header>myglwidget.h</header>
|
||||
<slots>
|
||||
<signal>modulesChanged()</signal>
|
||||
</slots>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>actionExit</sender>
|
||||
<signal>triggered()</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>close()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>-1</x>
|
||||
<y>-1</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>426</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>dockWidget</sender>
|
||||
<signal>visibilityChanged(bool)</signal>
|
||||
<receiver>actionShow_control_panel</receiver>
|
||||
<slot>setDisabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>127</x>
|
||||
<y>265</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>-1</x>
|
||||
<y>-1</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>actionShow_control_panel</sender>
|
||||
<signal>triggered()</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>dockWidgetClosed()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>-1</x>
|
||||
<y>-1</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>426</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>openGLWidget</sender>
|
||||
<signal>modulesChanged()</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>updateTree()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>555</x>
|
||||
<y>265</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>426</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>treeWidget</sender>
|
||||
<signal>itemClicked(QTreeWidgetItem*,int)</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>moduleSetEnabled(QTreeWidgetItem*,int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>127</x>
|
||||
<y>276</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>426</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>dockWidgetClosed()</slot>
|
||||
<slot>updateTree()</slot>
|
||||
<slot>moduleSetEnabled(QTreeWidgetItem*,int)</slot>
|
||||
</slots>
|
||||
</ui>
|
33
modulewidget.cpp
Normal file
33
modulewidget.cpp
Normal file
@ -0,0 +1,33 @@
|
||||
#include "modulewidget.h"
|
||||
#include "ui_modulewidget.h"
|
||||
|
||||
ModuleWidget::ModuleWidget(QWidget *parent) :
|
||||
QDockWidget(parent),
|
||||
ui(new Ui::ModuleWidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
ModuleWidget::~ModuleWidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ModuleWidget::updateList()
|
||||
{
|
||||
QListWidget* list = ui->listWidget;
|
||||
list->clear();
|
||||
for(ModuleNode& m : modules)
|
||||
list->addItem(new QListWidgetItem(QString(m.name.c_str())));
|
||||
}
|
||||
|
||||
/*void ModuleWidget::moduleSetEnabled(QTreeWidgetItem* item, int button)
|
||||
{
|
||||
SparrowRenderer* renderer = ui->openGLWidget->getRenderer();
|
||||
std::string name = item->text(0).toStdString();
|
||||
if(renderer->isModuleEnabled(name))
|
||||
renderer->disableModule(name);
|
||||
else
|
||||
renderer->enableModule(name);
|
||||
ui->openGLWidget->updateGL();
|
||||
}*/
|
26
modulewidget.h
Normal file
26
modulewidget.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef MODULEWIDGET_H
|
||||
#define MODULEWIDGET_H
|
||||
|
||||
#include <QDockWidget>
|
||||
#include "sparrowrenderer.h"
|
||||
|
||||
namespace Ui {
|
||||
class ModuleWidget;
|
||||
}
|
||||
|
||||
class ModuleWidget : public QDockWidget, public SparrowRenderer
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ModuleWidget(QWidget *parent = 0);
|
||||
~ModuleWidget();
|
||||
|
||||
private:
|
||||
Ui::ModuleWidget *ui;
|
||||
|
||||
public slots:
|
||||
void updateList();
|
||||
};
|
||||
|
||||
#endif // MODULEWIDGET_H
|
63
modulewidget.ui
Normal file
63
modulewidget.ui
Normal file
@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ModuleWidget</class>
|
||||
<widget class="QDockWidget" name="ModuleWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>141</width>
|
||||
<height>392</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="allowedAreas">
|
||||
<set>Qt::LeftDockWidgetArea</set>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Modules</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="dockWidgetContents">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QListWidget" name="listWidget"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>157</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -20,26 +20,25 @@
|
||||
#include <QKeyEvent>
|
||||
#include <QMouseEvent>
|
||||
|
||||
MyGLWidget::MyGLWidget(QWidget *parent) :
|
||||
OpenGLWidget::OpenGLWidget(QWidget *parent) :
|
||||
QGLWidget(parent),
|
||||
renderer(NULL),
|
||||
controller(NULL)
|
||||
{}
|
||||
|
||||
MyGLWidget::~MyGLWidget()
|
||||
OpenGLWidget::~OpenGLWidget()
|
||||
{
|
||||
if(renderer != NULL)
|
||||
delete(renderer);
|
||||
renderer->destroyGL();
|
||||
if(controller != NULL)
|
||||
delete(controller);
|
||||
}
|
||||
|
||||
SparrowRenderer* MyGLWidget::getRenderer()
|
||||
void OpenGLWidget::setRenderer(SparrowRenderer* myRenderer)
|
||||
{
|
||||
return renderer;
|
||||
renderer = myRenderer;
|
||||
}
|
||||
|
||||
void MyGLWidget::loadResources()
|
||||
void OpenGLWidget::loadResources()
|
||||
{
|
||||
std::string filenames[6] = {
|
||||
"../data/skybox_ft", "../data/skybox_bk",
|
||||
@ -59,7 +58,7 @@ void MyGLWidget::loadResources()
|
||||
ResourceBase::setShader("phong", new Shader(vertSource, fragSource));
|
||||
}
|
||||
|
||||
void MyGLWidget::buildScene()
|
||||
void OpenGLWidget::buildScene()
|
||||
{
|
||||
// camera positionning
|
||||
Camera* cam = renderer->getCamera();
|
||||
@ -94,59 +93,57 @@ void MyGLWidget::buildScene()
|
||||
emit modulesChanged();
|
||||
}
|
||||
|
||||
void MyGLWidget::initializeGL()
|
||||
void OpenGLWidget::initializeGL()
|
||||
{
|
||||
if(renderer != NULL)
|
||||
delete(renderer);
|
||||
renderer = new SparrowRenderer(width(), height());
|
||||
renderer->initGL(width(), height());
|
||||
loadResources();
|
||||
buildScene();
|
||||
controller = new FocusController(new glm::vec3(0));
|
||||
controller->setCamera(renderer->getCamera());
|
||||
}
|
||||
|
||||
void MyGLWidget::resizeGL(int width, int height)
|
||||
void OpenGLWidget::resizeGL(int width, int height)
|
||||
{
|
||||
renderer->resize(width, height);
|
||||
updateGL();
|
||||
}
|
||||
|
||||
void MyGLWidget::paintGL()
|
||||
void OpenGLWidget::paintGL()
|
||||
{
|
||||
renderer->render();
|
||||
}
|
||||
|
||||
void MyGLWidget::mouseMoveEvent(QMouseEvent *e)
|
||||
void OpenGLWidget::mouseMoveEvent(QMouseEvent *e)
|
||||
{
|
||||
controller->mouseMove(e->pos().x() - last.x(), e->pos().y() - last.y());
|
||||
last = e->pos();
|
||||
updateGL();
|
||||
}
|
||||
|
||||
void MyGLWidget::mousePressEvent(QMouseEvent* e)
|
||||
void OpenGLWidget::mousePressEvent(QMouseEvent* e)
|
||||
{
|
||||
controller->mouseEvent(e->button(), true);
|
||||
last = e->pos();
|
||||
updateGL();
|
||||
}
|
||||
void MyGLWidget::mouseReleaseEvent(QMouseEvent* e)
|
||||
void OpenGLWidget::mouseReleaseEvent(QMouseEvent* e)
|
||||
{
|
||||
controller->mouseEvent(e->button(), false);
|
||||
updateGL();
|
||||
}
|
||||
|
||||
void MyGLWidget::wheelEvent(QWheelEvent *e)
|
||||
void OpenGLWidget::wheelEvent(QWheelEvent *e)
|
||||
{
|
||||
controller->mouseWheelEvent(e->delta());
|
||||
updateGL();
|
||||
}
|
||||
|
||||
void MyGLWidget::keyPressEvent(QKeyEvent *e)
|
||||
void OpenGLWidget::keyPressEvent(QKeyEvent *e)
|
||||
{
|
||||
controller->mouseEvent(e->key(), true);
|
||||
updateGL();
|
||||
}
|
||||
void MyGLWidget::keyReleaseEvent(QKeyEvent *e)
|
||||
void OpenGLWidget::keyReleaseEvent(QKeyEvent *e)
|
||||
{
|
||||
controller->mouseEvent(e->key(), false);
|
||||
updateGL();
|
||||
|
@ -10,7 +10,7 @@ namespace Ui {
|
||||
class MyGLWidget;
|
||||
}
|
||||
|
||||
class MyGLWidget : public QGLWidget
|
||||
class OpenGLWidget : public QGLWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -19,10 +19,9 @@ class MyGLWidget : public QGLWidget
|
||||
QPoint last;
|
||||
|
||||
public:
|
||||
explicit MyGLWidget(QWidget *parent = 0);
|
||||
~MyGLWidget();
|
||||
|
||||
SparrowRenderer* getRenderer();
|
||||
explicit OpenGLWidget(QWidget *parent = 0);
|
||||
~OpenGLWidget();
|
||||
void setRenderer(SparrowRenderer* myRenderer);
|
||||
|
||||
protected:
|
||||
void initializeGL();
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
static Shader* getShader(const std::string &shaderName);
|
||||
static Entity* getEntity(const std::string &entityName);
|
||||
|
||||
private:
|
||||
protected:
|
||||
template <typename T>
|
||||
class DataBase
|
||||
{
|
||||
@ -42,7 +42,10 @@ private:
|
||||
|
||||
T* get(const std::string &name)
|
||||
{
|
||||
return data[name];
|
||||
if(data.count(name))
|
||||
return data[name];
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
};
|
||||
|
||||
|
76
resourcewidget.cpp
Normal file
76
resourcewidget.cpp
Normal file
@ -0,0 +1,76 @@
|
||||
#include "resourcewidget.h"
|
||||
#include "ui_resourcewidget.h"
|
||||
#include <iostream>
|
||||
|
||||
ResourceWidget::ResourceWidget(QWidget *parent) :
|
||||
QDockWidget(parent),
|
||||
ui(new Ui::ResourceWidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->treeWidget->resresizeColumnToContents(0);
|
||||
ui->treeWidget->header()->setStretchLastSection(false);
|
||||
}
|
||||
|
||||
ResourceWidget::~ResourceWidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ResourceWidget::updateList()
|
||||
{
|
||||
QTreeWidget* tree = ui->treeWidget;
|
||||
for(QTreeWidgetItemIterator it(tree); *it; ++it)
|
||||
{
|
||||
QTreeWidgetItem* item = *it;
|
||||
if(item->parent())
|
||||
continue;
|
||||
item->setBackgroundColor(0, QColor(180, 220, 255));
|
||||
item->setExpanded(true);
|
||||
QString text = item->text(0);
|
||||
if (text == "Textures")
|
||||
{
|
||||
for(std::string &name : textures.names)
|
||||
{
|
||||
QTreeWidgetItem* myItem = new QTreeWidgetItem(item);
|
||||
myItem->setText(0, QString(name.c_str()));
|
||||
tree->addTopLevelItem(myItem);
|
||||
}
|
||||
}
|
||||
else if(text == "Meshes")
|
||||
{
|
||||
for(std::string &name : meshes.names)
|
||||
{
|
||||
QTreeWidgetItem* myItem = new QTreeWidgetItem(item);
|
||||
myItem->setText(0, QString(name.c_str()));
|
||||
tree->addTopLevelItem(myItem);
|
||||
}
|
||||
}
|
||||
else if(text == "Materials")
|
||||
{
|
||||
for(std::string &name : materials.names)
|
||||
{
|
||||
QTreeWidgetItem* myItem = new QTreeWidgetItem(item);
|
||||
myItem->setText(0, QString(name.c_str()));
|
||||
tree->addTopLevelItem(myItem);
|
||||
}
|
||||
}
|
||||
else if(text == "Shaders")
|
||||
{
|
||||
for(std::string &name : shaders.names)
|
||||
{
|
||||
QTreeWidgetItem* myItem = new QTreeWidgetItem(item);
|
||||
myItem->setText(0, QString(name.c_str()));
|
||||
tree->addTopLevelItem(myItem);
|
||||
}
|
||||
}
|
||||
else if(text == "Entities")
|
||||
{
|
||||
for(std::string &name : entities.names)
|
||||
{
|
||||
QTreeWidgetItem* myItem = new QTreeWidgetItem(item);
|
||||
myItem->setText(0, QString(name.c_str()));
|
||||
tree->addTopLevelItem(myItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
26
resourcewidget.h
Normal file
26
resourcewidget.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef RESOURCEWIDGET_H
|
||||
#define RESOURCEWIDGET_H
|
||||
|
||||
#include <QDockWidget>
|
||||
#include "resourcebase.h"
|
||||
|
||||
namespace Ui {
|
||||
class ResourceWidget;
|
||||
}
|
||||
|
||||
class ResourceWidget : public QDockWidget, public ResourceBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ResourceWidget(QWidget *parent = 0);
|
||||
~ResourceWidget();
|
||||
|
||||
private:
|
||||
Ui::ResourceWidget *ui;
|
||||
|
||||
public slots:
|
||||
void updateList();
|
||||
};
|
||||
|
||||
#endif // RESOURCEWIDGET_H
|
93
resourcewidget.ui
Normal file
93
resourcewidget.ui
Normal file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ResourceWidget</class>
|
||||
<widget class="QDockWidget" name="ResourceWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>171</width>
|
||||
<height>411</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="allowedAreas">
|
||||
<set>Qt::RightDockWidgetArea</set>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Resources</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="dockWidgetContents">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QTreeWidget" name="treeWidget">
|
||||
<property name="alternatingRowColors">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="autoExpandDelay">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="indentation">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="headerStretchLastSection">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>name</string>
|
||||
</property>
|
||||
</column>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Textures</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Meshes</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Materials</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Shaders</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Entities</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -40,7 +40,9 @@ SOURCES += main.cpp\
|
||||
focuscontroller.cpp \
|
||||
phongmodule.cpp \
|
||||
skyboxmodule.cpp \
|
||||
basicmodule.cpp
|
||||
basicmodule.cpp \
|
||||
resourcewidget.cpp \
|
||||
modulewidget.cpp
|
||||
|
||||
HEADERS += mainwindow.h \
|
||||
myglwidget.h \
|
||||
@ -64,9 +66,13 @@ HEADERS += mainwindow.h \
|
||||
skyboxmodule.h \
|
||||
basicmodule.h \
|
||||
module.h \
|
||||
resource.h
|
||||
resource.h \
|
||||
resourcewidget.h \
|
||||
modulewidget.h
|
||||
|
||||
FORMS += mainwindow.ui
|
||||
FORMS += \
|
||||
resourcewidget.ui \
|
||||
modulewidget.ui
|
||||
|
||||
OTHER_FILES += *.frag *.vert *.glsl *.todo
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
// main methods
|
||||
|
||||
SparrowRenderer::SparrowRenderer(int width, int height) : camera(width, height)
|
||||
void SparrowRenderer::initGL(int width, int height)
|
||||
{
|
||||
glewExperimental = GL_TRUE;
|
||||
GLenum err = glewInit();
|
||||
@ -30,7 +30,12 @@ SparrowRenderer::SparrowRenderer(int width, int height) : camera(width, height)
|
||||
glAssert(glEnable(GL_DEPTH_TEST));
|
||||
glAssert(glEnable(GL_CULL_FACE));
|
||||
glAssert(glEnable(GL_TEXTURE_2D));
|
||||
glAssert(glViewport(0, 0, width, height));
|
||||
resize(width, height);
|
||||
}
|
||||
|
||||
void SparrowRenderer::destroyGL()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SparrowRenderer::resize(int width, int height)
|
||||
|
@ -9,22 +9,10 @@ class Module;
|
||||
|
||||
class SparrowRenderer
|
||||
{
|
||||
typedef struct s_moduleNode{
|
||||
Module* module;
|
||||
std::string name;
|
||||
bool isEnabled;
|
||||
|
||||
s_moduleNode(Module* myModule, const std::string &myName) : module(myModule), name(myName), isEnabled(true) {}
|
||||
} ModuleNode;
|
||||
|
||||
std::list<ModuleNode>::iterator getModuleNode(std::string name);
|
||||
|
||||
Camera camera;
|
||||
std::list<ModuleNode> modules;
|
||||
public:
|
||||
|
||||
// main methods
|
||||
SparrowRenderer(int width, int height);
|
||||
void initGL(int width, int height);
|
||||
void destroyGL();
|
||||
void resize(int width, int height);
|
||||
void render();
|
||||
|
||||
@ -46,6 +34,20 @@ public:
|
||||
|
||||
// camera methods
|
||||
Camera* getCamera();
|
||||
|
||||
protected:
|
||||
typedef struct s_moduleNode{
|
||||
Module* module;
|
||||
std::string name;
|
||||
bool isEnabled;
|
||||
|
||||
s_moduleNode(Module* myModule, const std::string &myName) : module(myModule), name(myName), isEnabled(true) {}
|
||||
} ModuleNode;
|
||||
|
||||
Camera camera;
|
||||
std::list<ModuleNode> modules;
|
||||
|
||||
std::list<ModuleNode>::iterator getModuleNode(std::string name);
|
||||
};
|
||||
|
||||
#endif // SPARROWRENDERER_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user