mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-19 19:14:42 +00:00
changed widgets layout, removed labels
This commit is contained in:
parent
31fa05b7af
commit
f6a930ef70
@ -1,7 +1,11 @@
|
||||
#include "shaderDialog.h"
|
||||
|
||||
#define DECFACTOR 100000.0f
|
||||
|
||||
|
||||
|
||||
ShaderDialog::ShaderDialog(ShaderInfo *sInfo, GLArea* gla, QWidget *parent)
|
||||
: QDialog(parent)
|
||||
: QDialog(parent)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
shaderInfo = sInfo;
|
||||
@ -9,86 +13,55 @@ ShaderDialog::ShaderDialog(ShaderInfo *sInfo, GLArea* gla, QWidget *parent)
|
||||
colorSignalMapper = new QSignalMapper(this);
|
||||
valueSignalMapper = new QSignalMapper(this);
|
||||
|
||||
QVBoxLayout *verticalLayout = new QVBoxLayout(ui.uvTab);
|
||||
verticalLayout->setSpacing(6);
|
||||
verticalLayout->setMargin(0);
|
||||
verticalLayout->setObjectName("verticalLayout");
|
||||
verticalLayout->setGeometry(QRect(20, 40, 400, 280));
|
||||
QGridLayout * qgrid = new QGridLayout(ui.uvTab);
|
||||
qgrid->setColumnMinimumWidth(0, 45);
|
||||
qgrid->setColumnMinimumWidth(1, 40);
|
||||
qgrid->setColumnMinimumWidth(2, 40);
|
||||
qgrid->setColumnMinimumWidth(3, 40);
|
||||
|
||||
std::map<QString, UniformVariable>::iterator i;
|
||||
int row=0;
|
||||
std::map<QString, UniformVariable>::iterator i;
|
||||
for (i = shaderInfo->uniformVars.begin(); i != shaderInfo->uniformVars.end(); ++i) {
|
||||
QHBoxLayout *horLayout = new QHBoxLayout();
|
||||
horLayout->setSpacing(2);
|
||||
horLayout->setMargin(0);
|
||||
horLayout->setObjectName(i->first+"_horLayout");
|
||||
|
||||
|
||||
QLabel *varNameLabel = new QLabel(this);
|
||||
varNameLabel->setObjectName(i->first+"_name");
|
||||
varNameLabel->setText(i->first);
|
||||
|
||||
horLayout->addWidget(varNameLabel);
|
||||
|
||||
QLabel *varValueLabel = new QLabel(this);
|
||||
varValueLabel->setObjectName(i->first+"_value");
|
||||
|
||||
labels[i->first] = varValueLabel;
|
||||
qgrid->addWidget(varNameLabel, row, 0);
|
||||
|
||||
int varNum = getVarsNumber(i->second.type);
|
||||
bool varIsInt = 0;
|
||||
|
||||
switch (i->second.type) {
|
||||
case SINGLE_INT: {
|
||||
|
||||
varIsInt = 1;
|
||||
varValueLabel->setText(tr("%1").arg(i->second.ival[0]));
|
||||
} break;
|
||||
case SINGLE_FLOAT: {
|
||||
|
||||
varValueLabel->setText(tr("%1").arg(i->second.fval[0]));
|
||||
} break;
|
||||
case ARRAY_2_FLOAT : {
|
||||
|
||||
varValueLabel->setText(tr("%1, %2").arg(i->second.fval[0]).arg(i->second.fval[1]));
|
||||
} break;
|
||||
case ARRAY_3_FLOAT : {
|
||||
|
||||
varValueLabel->setText(tr("%1, %2, %3").arg(i->second.fval[0]).arg(i->second.fval[1]).arg(i->second.fval[2]));
|
||||
} break;
|
||||
case ARRAY_4_FLOAT : {
|
||||
|
||||
varValueLabel->setText(tr("%1, %2, %3, %4").arg(i->second.fval[0]).arg(i->second.fval[1]).arg(i->second.fval[2]).arg(i->second.fval[3]));
|
||||
} break;
|
||||
}
|
||||
horLayout->addWidget(varValueLabel);
|
||||
|
||||
switch (i->second.widget) {
|
||||
|
||||
|
||||
case WIDGET_NONE: {
|
||||
for (int j=0;j<varNum;++j) {
|
||||
QLineEdit *qline = new QLineEdit(this);
|
||||
qline->setObjectName(tr("%1%2").arg(i->first).arg(j));
|
||||
if (varIsInt) {
|
||||
qline->setText(tr("%1").arg(i->second.ival[j]));
|
||||
|
||||
if (i->second.type == SINGLE_INT) {
|
||||
qline->setText(tr("%1").arg(i->second.ival[j]));
|
||||
|
||||
} else {
|
||||
qline->setText(tr("%1").arg(i->second.fval[j]));
|
||||
|
||||
qline->setText(tr("%1").arg(i->second.fval[j]));
|
||||
|
||||
}
|
||||
|
||||
|
||||
connect(qline, SIGNAL(textChanged(QString)), valueSignalMapper, SLOT(map()));
|
||||
valueSignalMapper->setMapping(qline,tr("%1%2").arg(i->first).arg(j));
|
||||
horLayout->addWidget(qline);
|
||||
lineEdits[tr("%1%2").arg(i->first).arg(j)]=qline;
|
||||
|
||||
qgrid->addWidget(qline, row, j+1);
|
||||
}
|
||||
} break;
|
||||
case WIDGET_COLOR : {
|
||||
|
||||
QPushButton * colorButton = new QPushButton(this);
|
||||
colorButton->setText("Change");
|
||||
connect(colorButton, SIGNAL(clicked()), colorSignalMapper, SLOT(map()));
|
||||
colorSignalMapper->setMapping(colorButton,i->first);
|
||||
horLayout->addWidget(colorButton);
|
||||
|
||||
|
||||
QPushButton * colorButton = new QPushButton(this);
|
||||
colorButton->setText("Change");
|
||||
connect(colorButton, SIGNAL(clicked()), colorSignalMapper, SLOT(map()));
|
||||
colorSignalMapper->setMapping(colorButton,i->first);
|
||||
|
||||
qgrid->addWidget(colorButton, row, 1);
|
||||
|
||||
|
||||
} break;
|
||||
case WIDGET_SLIDER : {
|
||||
for (int j=0;j<varNum;++j) {
|
||||
@ -96,63 +69,67 @@ ShaderDialog::ShaderDialog(ShaderInfo *sInfo, GLArea* gla, QWidget *parent)
|
||||
qslider->setTickPosition(QSlider::NoTicks);
|
||||
qslider->setOrientation(Qt::Horizontal);
|
||||
qslider->setObjectName(tr("%1%2").arg(i->first).arg(j));
|
||||
if (varIsInt) {
|
||||
qslider->setTickInterval(i->second.step);
|
||||
if (i->second.type == SINGLE_INT) {
|
||||
qslider->setTickInterval(i->second.step);
|
||||
qslider->setRange(i->second.min, i->second.max);
|
||||
qslider->setValue(i->second.ival[j]);
|
||||
} else {
|
||||
qslider->setTickInterval(i->second.step*100000);
|
||||
qslider->setRange(i->second.min*100000, i->second.max*100000);
|
||||
qslider->setValue(i->second.fval[j]*100000);
|
||||
qslider->setTickInterval(i->second.step*DECFACTOR);
|
||||
qslider->setRange(i->second.min*DECFACTOR, i->second.max*DECFACTOR);
|
||||
qslider->setValue(i->second.fval[j]*DECFACTOR);
|
||||
}
|
||||
connect(qslider, SIGNAL(valueChanged(int)), valueSignalMapper, SLOT(map()));
|
||||
valueSignalMapper->setMapping(qslider,tr("%1%2").arg(i->first).arg(j));
|
||||
horLayout->addWidget(qslider);
|
||||
|
||||
sliders[tr("%1%2").arg(i->first).arg(j)]=qslider;
|
||||
|
||||
qgrid->addWidget(qslider, row, j+1);
|
||||
|
||||
}
|
||||
} break;
|
||||
}
|
||||
|
||||
verticalLayout->addLayout(horLayout);
|
||||
|
||||
|
||||
}
|
||||
++row;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
connect(colorSignalMapper, SIGNAL(mapped(const QString &)), this, SLOT(setColorValue(const QString &)));
|
||||
connect(valueSignalMapper, SIGNAL(mapped(const QString &)), this, SLOT(valuesChanged(const QString &)));
|
||||
|
||||
|
||||
|
||||
|
||||
//Vertex and Fragment Program Tabs Section
|
||||
QDir shadersDir = QDir(qApp->applicationDirPath());
|
||||
#if defined(Q_OS_WIN)
|
||||
if (shadersDir.dirName() == "debug" || shadersDir.dirName() == "release")
|
||||
shadersDir.cdUp();
|
||||
if (shadersDir.dirName() == "debug" || shadersDir.dirName() == "release")
|
||||
shadersDir.cdUp();
|
||||
#elif defined(Q_OS_MAC)
|
||||
if (shadersDir.dirName() == "MacOS") {
|
||||
shadersDir.cdUp();
|
||||
shadersDir.cdUp();
|
||||
shadersDir.cdUp();
|
||||
}
|
||||
if (shadersDir.dirName() == "MacOS") {
|
||||
shadersDir.cdUp();
|
||||
shadersDir.cdUp();
|
||||
shadersDir.cdUp();
|
||||
}
|
||||
#endif
|
||||
shadersDir.cd("shaders");
|
||||
|
||||
ui.fpTextBrowser->setSearchPaths(QStringList(shadersDir.absolutePath()));
|
||||
ui.fpTextBrowser->setSource(QUrl(shaderInfo->fpFile));
|
||||
ui.fpTextBrowser->setAutoFormatting(QTextBrowser::AutoNone);
|
||||
ui.fpTextBrowser->setLineWrapMode(QTextBrowser::WidgetWidth);
|
||||
|
||||
|
||||
|
||||
ui.vpTextBrowser->setSearchPaths(QStringList(shadersDir.absolutePath()));
|
||||
ui.vpTextBrowser->setSource(QUrl(shaderInfo->vpFile));
|
||||
ui.vpTextBrowser->setAutoFormatting(QTextBrowser::AutoNone);
|
||||
//End of Vertex and Fragment Program Tabs Section
|
||||
|
||||
|
||||
this->setWindowFlags(Qt::WindowStaysOnTopHint);
|
||||
connect(ui.okButton, SIGNAL(clicked()), this, SLOT(accept()));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
ShaderDialog::~ShaderDialog()
|
||||
@ -162,51 +139,39 @@ ShaderDialog::~ShaderDialog()
|
||||
|
||||
void ShaderDialog::setColorValue(const QString &varName)
|
||||
{
|
||||
QColor old;
|
||||
if ( shaderInfo->uniformVars[varName].type == ARRAY_3_FLOAT) {
|
||||
old.setRgbF(shaderInfo->uniformVars[varName].fval[0], shaderInfo->uniformVars[varName].fval[1], shaderInfo->uniformVars[varName].fval[2]);
|
||||
} else if (shaderInfo->uniformVars[varName].type == ARRAY_4_FLOAT) {
|
||||
old.setRgbF(shaderInfo->uniformVars[varName].fval[0], shaderInfo->uniformVars[varName].fval[1], shaderInfo->uniformVars[varName].fval[2], shaderInfo->uniformVars[varName].fval[3]);
|
||||
QColor old;
|
||||
if ( shaderInfo->uniformVars[varName].type == ARRAY_3_FLOAT) {
|
||||
old.setRgbF(shaderInfo->uniformVars[varName].fval[0], shaderInfo->uniformVars[varName].fval[1], shaderInfo->uniformVars[varName].fval[2]);
|
||||
} else if (shaderInfo->uniformVars[varName].type == ARRAY_4_FLOAT) {
|
||||
old.setRgbF(shaderInfo->uniformVars[varName].fval[0], shaderInfo->uniformVars[varName].fval[1], shaderInfo->uniformVars[varName].fval[2], shaderInfo->uniformVars[varName].fval[3]);
|
||||
}
|
||||
|
||||
QColor newColor = QColorDialog::getColor(old, this);
|
||||
if (newColor.isValid()) {
|
||||
|
||||
QLabel *label = labels[varName];
|
||||
|
||||
shaderInfo->uniformVars[varName].fval[0] = newColor.redF();
|
||||
shaderInfo->uniformVars[varName].fval[1] = newColor.greenF();
|
||||
shaderInfo->uniformVars[varName].fval[2] = newColor.blueF();
|
||||
|
||||
if (shaderInfo->uniformVars[varName].type == ARRAY_4_FLOAT) {
|
||||
|
||||
shaderInfo->uniformVars[varName].fval[3] = newColor.alphaF();
|
||||
|
||||
}
|
||||
|
||||
QColor newColor = QColorDialog::getColor(old, this);
|
||||
if (newColor.isValid()) {
|
||||
|
||||
QLabel *label = labels[varName];
|
||||
|
||||
shaderInfo->uniformVars[varName].fval[0] = newColor.redF();
|
||||
shaderInfo->uniformVars[varName].fval[1] = newColor.greenF();
|
||||
shaderInfo->uniformVars[varName].fval[2] = newColor.blueF();
|
||||
|
||||
|
||||
if (shaderInfo->uniformVars[varName].type == ARRAY_3_FLOAT) {
|
||||
|
||||
|
||||
label->setText(tr("%1, %2, %3").arg(shaderInfo->uniformVars[varName].fval[0]).arg(
|
||||
shaderInfo->uniformVars[varName].fval[1]).arg(
|
||||
shaderInfo->uniformVars[varName].fval[2]));
|
||||
|
||||
} else if (shaderInfo->uniformVars[varName].type == ARRAY_4_FLOAT) {
|
||||
|
||||
shaderInfo->uniformVars[varName].fval[3] = newColor.alphaF();
|
||||
|
||||
label->setText(tr("%1, %2, %3, %4").arg(shaderInfo->uniformVars[varName].fval[0]).arg(
|
||||
shaderInfo->uniformVars[varName].fval[1]).arg(
|
||||
shaderInfo->uniformVars[varName].fval[2]).arg(
|
||||
shaderInfo->uniformVars[varName].fval[3]));
|
||||
}
|
||||
}
|
||||
glarea->updateGL();
|
||||
}
|
||||
glarea->updateGL();
|
||||
}
|
||||
|
||||
|
||||
void ShaderDialog::valuesChanged(const QString &varNameAndIndex) {
|
||||
|
||||
|
||||
|
||||
|
||||
int varIndex = varNameAndIndex[varNameAndIndex.length()-1].digitValue();
|
||||
QString varName = varNameAndIndex;
|
||||
varName.chop(1);
|
||||
|
||||
varName.chop(1);
|
||||
|
||||
int varWidget = shaderInfo->uniformVars[varName].widget;
|
||||
int varType = shaderInfo->uniformVars[varName].type;
|
||||
switch (varWidget) {
|
||||
@ -223,16 +188,11 @@ void ShaderDialog::valuesChanged(const QString &varNameAndIndex) {
|
||||
if (varType == SINGLE_INT) {
|
||||
shaderInfo->uniformVars[varName].ival[varIndex] = qslider->value();
|
||||
} else {
|
||||
float c = shaderInfo->uniformVars[varName].fval[varIndex];
|
||||
float d = qslider->value();
|
||||
float g = d/100000.0f;
|
||||
shaderInfo->uniformVars[varName].fval[varIndex] = qslider->value()/100000.0f;
|
||||
c = shaderInfo->uniformVars[varName].fval[varIndex];
|
||||
c++;
|
||||
shaderInfo->uniformVars[varName].fval[varIndex] = qslider->value()/DECFACTOR;
|
||||
}
|
||||
} break;
|
||||
} break;
|
||||
}
|
||||
glarea->updateGL();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
#include <QSignalMapper>
|
||||
#include <QLineEdit>
|
||||
#include <QSlider>
|
||||
#include <QPalette>
|
||||
#include <QGridLayout>
|
||||
#include <map>
|
||||
#include "shaderStructs.h"
|
||||
#include "ui_shaderDialog.h"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user