]> git.cworth.org Git - apitrace/blob - gui/shaderssourcewidget.cpp
Add a very nice glsl editor code.
[apitrace] / gui / shaderssourcewidget.cpp
1 #include "shaderssourcewidget.h"
2
3 #include "glsledit.h"
4
5 ShadersSourceWidget::ShadersSourceWidget(QWidget *parent)
6     : QWidget(parent)
7 {
8     m_ui.setupUi(this);
9     m_edit = new GLSLEdit(this);
10     m_edit->setReadOnly(true);
11
12     m_ui.verticalLayout->addWidget(m_edit);
13
14     connect(m_ui.shadersCB, SIGNAL(currentIndexChanged(int)),
15             SLOT(changeShader(int)));
16 }
17
18 void ShadersSourceWidget::setShaders(const QStringList &sources)
19 {
20     m_sources = sources;
21
22     m_ui.shadersCB->clear();
23     m_edit->clear();
24
25     if (m_sources.isEmpty()) {
26         m_ui.shadersCB->setDisabled(true);
27         m_edit->setPlainText(tr("No bound shaders."));
28         m_edit->setDisabled(true);
29         return;
30     }
31
32     m_ui.shadersCB->setEnabled(true);
33     m_edit->setEnabled(true);
34
35     for (int i = 0; i < m_sources.count(); ++i) {
36         QString source = m_sources[i];
37         m_ui.shadersCB->insertItem(
38             i,
39             tr("Shader %1").arg(i));
40     }
41     m_ui.shadersCB->setCurrentIndex(0);
42 }
43
44 void ShadersSourceWidget::changeShader(int idx)
45 {
46     m_edit->setPlainText(m_sources.value(idx));
47 }
48
49 #include "shaderssourcewidget.moc"