1 #include "vogleditor_qshaderexplorer.h"
2 #include "ui_vogleditor_qshaderexplorer.h"
4 #include "vogl_gl_object.h"
5 #include "vogl_shader_state.h"
7 Q_DECLARE_METATYPE(vogl_shader_state*);
9 vogleditor_QShaderExplorer::vogleditor_QShaderExplorer(QWidget *parent) :
11 ui(new Ui::vogleditor_QShaderExplorer)
16 vogleditor_QShaderExplorer::~vogleditor_QShaderExplorer()
21 void vogleditor_QShaderExplorer::clear()
23 ui->shaderListbox->clear();
24 ui->shaderTextEdit->clear();
27 void vogleditor_QShaderExplorer::set_shader_objects(vogl_gl_object_state_ptr_vec objects)
32 for (vogl_gl_object_state_ptr_vec::iterator iter = objects.begin(); iter != objects.end(); iter++)
34 if ((*iter)->get_type() == cGLSTShader)
36 vogl_shader_state* pState = static_cast<vogl_shader_state*>(*iter);
39 valueStr = valueStr.sprintf("Shader %" PRIu64 " - %s", pState->get_snapshot_handle(), g_gl_enums.find_gl_name(pState->get_shader_type()));
41 ui->shaderListbox->addItem(valueStr, QVariant::fromValue(pState));
45 VOGL_ASSERT(!"Unhandled object type in vogleditor_QShaderExplorer");
51 bool vogleditor_QShaderExplorer::set_active_shader(unsigned long long shaderHandle)
53 bool bActivated = false;
55 for (vogl_gl_object_state_ptr_vec::iterator iter = m_objects.begin(); iter != m_objects.end(); iter++)
57 vogl_shader_state* pState = static_cast<vogl_shader_state*>(*iter);
58 if (pState->get_snapshot_handle() == shaderHandle)
60 ui->shaderListbox->setCurrentIndex(index);
70 void vogleditor_QShaderExplorer::on_shaderListbox_currentIndexChanged(int index)
72 ui->shaderTextEdit->clear();
74 int count = ui->shaderListbox->count();
75 if (index >= 0 && index < count)
77 vogl_shader_state* pObjState = ui->shaderListbox->itemData(index).value<vogl_shader_state*>();
78 if (pObjState == NULL)
80 VOGL_ASSERT(!"NULL shader object type in vogleditor_QShaderExplorer");
84 ui->shaderTextEdit->setText(pObjState->get_source().c_str());