KSeExpr 6.0.0.0
ExprAddDialog.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc.
2// SPDX-License-Identifier: LicenseRef-Apache-2.0
3// SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me>
4// SPDX-License-Identifier: GPL-3.0-or-later
5/*
6* @file ExprAddDialog.cpp
7* @brief Manages/creates a new variable by using ExprControls
8* @author aselle, amyspark
9*/
10
11#include <QColorDialog>
12#include <QDialogButtonBox>
13#include <QFormLayout>
14#include <QHBoxLayout>
15#include <QLabel>
16#include <QVBoxLayout>
17
18#include "ExprAddDialog.h"
19
20ExprAddDialog::ExprAddDialog(int& count, QWidget* parent) : QDialog(parent) {
21 auto *verticalLayout = new QVBoxLayout();
22 verticalLayout->setSpacing(3);
23 verticalLayout->setContentsMargins(3, 3, 3, 3);
24 setLayout(verticalLayout);
25 auto *horizontalLayout = new QHBoxLayout();
26
27 horizontalLayout->addWidget(new QLabel(tr("Variable")));
28 // TODO would be nice to unique this over multiple sessions
29 variableName = new QLineEdit(QString::fromLatin1("$var%1").arg(count++));
30
31 horizontalLayout->addWidget(variableName);
32 verticalLayout->addLayout(horizontalLayout);
33
34 tabWidget = new QTabWidget();
35
36 // Curve
37 {
38 auto *curveTab = new QWidget();
39 auto *curveLayout = new QFormLayout(curveTab);
40 curveLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("Lookup")));
41 curveLookup = new QLineEdit(tr("$u"));
42 curveLayout->setWidget(0, QFormLayout::FieldRole, curveLookup);
43 tabWidget->addTab(curveTab, QString(tr("Curve")));
44 }
45
46 // Color Curve
47 {
48 auto *colorCurveTab = new QWidget();
49 auto *colorCurveLayout = new QFormLayout(colorCurveTab);
50 colorCurveLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("Lookup")));
51 colorCurveLookup = new QLineEdit(tr("$u"));
52 colorCurveLayout->setWidget(0, QFormLayout::FieldRole, colorCurveLookup);
53 tabWidget->addTab(colorCurveTab, QString(tr("Color Curve")));
54 }
55
56 // Integer
57 {
58 auto *intTab = new QWidget();
59 auto *intFormLayout = new QFormLayout(intTab);
60 intFormLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("Default")));
61 intFormLayout->setWidget(1, QFormLayout::LabelRole, new QLabel(tr("Min")));
62 intFormLayout->setWidget(2, QFormLayout::LabelRole, new QLabel(tr("Max")));
63 intDefault = new QLineEdit(tr("0"));
64 intFormLayout->setWidget(0, QFormLayout::FieldRole, intDefault);
65 intMin = new QLineEdit(tr("0"));
66 intFormLayout->setWidget(1, QFormLayout::FieldRole, intMin);
67 intMax = new QLineEdit(tr("10"));
68 intFormLayout->setWidget(2, QFormLayout::FieldRole, intMax);
69 tabWidget->addTab(intTab, QString(tr("Int")));
70 }
71
72 // Float
73 {
74 auto *floatTab = new QWidget();
75 auto *floatFormLayout = new QFormLayout(floatTab);
76 floatFormLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("Default")));
77 floatFormLayout->setWidget(1, QFormLayout::LabelRole, new QLabel(tr("Min")));
78 floatFormLayout->setWidget(2, QFormLayout::LabelRole, new QLabel(tr("Max")));
79 floatDefault = new QLineEdit(tr("0"));
80 floatFormLayout->setWidget(0, QFormLayout::FieldRole, floatDefault);
81 floatMin = new QLineEdit(tr("0"));
82 floatFormLayout->setWidget(1, QFormLayout::FieldRole, floatMin);
83 floatMax = new QLineEdit(tr("1"));
84 floatFormLayout->setWidget(2, QFormLayout::FieldRole, floatMax);
85
86 tabWidget->addTab(floatTab, QString(tr("Float")));
87 }
88
89 // Vector
90 {
91 auto *vectorTab = new QWidget();
92 auto *vectorFormLayout = new QFormLayout(vectorTab);
93 vectorFormLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("Default")));
94 vectorFormLayout->setWidget(1, QFormLayout::LabelRole, new QLabel(tr("Min")));
95 vectorFormLayout->setWidget(2, QFormLayout::LabelRole, new QLabel(tr("Max")));
96 vectorDefault0 = new QLineEdit(tr("0"));
97 vectorDefault1 = new QLineEdit(tr("0"));
98 vectorDefault2 = new QLineEdit(tr("0"));
99 auto *compLayout = new QHBoxLayout();
100 compLayout->addWidget(vectorDefault0);
101 compLayout->addWidget(vectorDefault1);
102 compLayout->addWidget(vectorDefault2);
103 vectorFormLayout->setLayout(0, QFormLayout::FieldRole, compLayout);
104 vectorMin = new QLineEdit(tr("0"));
105 vectorFormLayout->setWidget(1, QFormLayout::FieldRole, vectorMin);
106 vectorMax = new QLineEdit(tr("1"));
107 vectorFormLayout->setWidget(2, QFormLayout::FieldRole, vectorMax);
108
109 tabWidget->addTab(vectorTab, QString(tr("Vector")));
110 }
111
112 // Color
113 {
114 auto *colorTab = new QWidget();
115 auto *colorLayout = new QFormLayout(colorTab);
116 colorWidget = new QPushButton();
117 colorWidget->setFixedWidth(30);
118 colorWidget->setFixedWidth(30);
119 colorLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("Color")));
120 colorLayout->setWidget(0, QFormLayout::FieldRole, colorWidget);
121 color = Qt::red;
122 QPixmap colorPix(30, 30);
123 colorPix.fill(color);
124 colorWidget->setIcon(QIcon(colorPix));
125 tabWidget->addTab(colorTab, QString(tr("Color")));
126
127 connect(colorWidget, SIGNAL(clicked()), this, SLOT(colorChooseClicked()));
128 }
129
130 // Color Swatch
131 {
132 auto *swatchTab = new QWidget();
133 auto *swatchLayout = new QFormLayout(swatchTab);
134 swatchLookup = new QLineEdit(tr("$u"));
135 swatchLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("Lookup")));
136 swatchLayout->setWidget(0, QFormLayout::FieldRole, swatchLookup);
137 rainbowPaletteBtn = new QRadioButton(tr("Rainbow"));
138 rainbowPaletteBtn->setChecked(true);
139 grayPaletteBtn = new QRadioButton(tr("Shades of Gray"));
140 swatchLayout->setWidget(1, QFormLayout::LabelRole, new QLabel(tr("Colors")));
141 swatchLayout->setWidget(1, QFormLayout::FieldRole, rainbowPaletteBtn);
142 swatchLayout->setWidget(2, QFormLayout::LabelRole, new QLabel(QString()));
143 swatchLayout->setWidget(2, QFormLayout::FieldRole, grayPaletteBtn);
144 tabWidget->addTab(swatchTab, QString(tr("Swatch")));
145 }
146
147 // String literal
148 {
149 auto *stringTab = new QWidget();
150 auto *stringLayout = new QFormLayout(stringTab);
151 stringTypeWidget = new QComboBox();
152 stringTypeWidget->addItem(tr("string"));
153 stringTypeWidget->addItem(tr("file"));
154 stringTypeWidget->addItem(tr("directory"));
155 stringDefaultWidget = new QLineEdit();
156 stringNameWidget = new QLineEdit(QString::fromLatin1("str1"));
157
158 stringLayout->setWidget(0, QFormLayout::LabelRole, new QLabel(tr("String Name")));
159 stringLayout->setWidget(0, QFormLayout::FieldRole, stringNameWidget);
160 stringLayout->setWidget(1, QFormLayout::LabelRole, new QLabel(tr("String Type")));
161 stringLayout->setWidget(1, QFormLayout::FieldRole, stringTypeWidget);
162 stringLayout->setWidget(2, QFormLayout::LabelRole, new QLabel(tr("String Default")));
163 stringLayout->setWidget(2, QFormLayout::FieldRole, stringDefaultWidget);
164
165 tabWidget->addTab(stringTab, QString(tr("String")));
166 }
167
168 verticalLayout->addWidget(tabWidget);
169
170 auto* buttonBox = new QDialogButtonBox();
171 buttonBox->setOrientation(Qt::Horizontal);
172 buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok);
173
174 verticalLayout->addWidget(buttonBox);
175
176 QObject::connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
177 QObject::connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
178
179 tabWidget->setCurrentIndex(0);
180}
181
183 color = QColorDialog::getColor(color);
184 if (color.isValid()) {
185 QPixmap colorPix(30, 30);
186 colorPix.fill(color);
187 (dynamic_cast<QPushButton*>(sender()))->setIcon(QIcon(colorPix));
188 }
189}
190
191const char* ExprAddDialog::initSwatch() const {
192 if (rainbowPaletteBtn->isChecked())
193 return ("[1,0,0],[1,.6,0],[1,1,0],[0,1,0],[0,1,1],[0,0,1],[.6,.1,.6],[1,0,1],[1,1,1],[0,0,0]");
194 else if (grayPaletteBtn->isChecked())
195 return (
196 "[1,1,1],[.9,.9,.9],[.8,.8,.8],[.7,.7,.7],[.6,.6,.6],[.5,.5,.5],[.4,.4,.4],[.3,.3,.3],[.2,.2,.2],[0,0,0]");
197 else
198 return ("[1,1,1],[.5,.5,.5],[0,0,0]");
199}
QLineEdit * vectorDefault0
QRadioButton * grayPaletteBtn
const char * initSwatch() const
void colorChooseClicked()
QTabWidget * tabWidget
ExprAddDialog(int &count, QWidget *parent=nullptr)
QLineEdit * vectorDefault1
QLineEdit * variableName
QLineEdit * floatDefault
QRadioButton * rainbowPaletteBtn
QLineEdit * stringDefaultWidget
QLineEdit * intMin
QLineEdit * intDefault
QLineEdit * floatMin
QLineEdit * stringNameWidget
QLineEdit * vectorMin
QComboBox * stringTypeWidget
QLineEdit * intMax
QLineEdit * colorCurveLookup
QLineEdit * vectorDefault2
QLineEdit * vectorMax
QLineEdit * swatchLookup
QLineEdit * curveLookup
QPushButton * colorWidget
QLineEdit * floatMax