KSeExpr  4.0.4.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 
20 ExprAddDialog::ExprAddDialog(int& count, QWidget* parent) : QDialog(parent) {
21  auto *verticalLayout = new QVBoxLayout();
22  verticalLayout->setSpacing(3);
23  verticalLayout->setMargin(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 
191 const 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
Definition: ExprAddDialog.h:35
QRadioButton * grayPaletteBtn
Definition: ExprAddDialog.h:44
const char * initSwatch() const
void colorChooseClicked()
QTabWidget * tabWidget
Definition: ExprAddDialog.h:28
ExprAddDialog(int &count, QWidget *parent=nullptr)
QLineEdit * vectorDefault1
Definition: ExprAddDialog.h:36
QLineEdit * variableName
Definition: ExprAddDialog.h:27
QLineEdit * floatDefault
Definition: ExprAddDialog.h:32
QRadioButton * rainbowPaletteBtn
Definition: ExprAddDialog.h:43
QLineEdit * stringDefaultWidget
Definition: ExprAddDialog.h:48
QLineEdit * intMin
Definition: ExprAddDialog.h:30
QLineEdit * intDefault
Definition: ExprAddDialog.h:29
QLineEdit * floatMin
Definition: ExprAddDialog.h:33
QLineEdit * stringNameWidget
Definition: ExprAddDialog.h:49
QLineEdit * vectorMin
Definition: ExprAddDialog.h:38
QComboBox * stringTypeWidget
Definition: ExprAddDialog.h:47
QLineEdit * intMax
Definition: ExprAddDialog.h:31
QLineEdit * colorCurveLookup
Definition: ExprAddDialog.h:41
QLineEdit * vectorDefault2
Definition: ExprAddDialog.h:37
QLineEdit * vectorMax
Definition: ExprAddDialog.h:39
QLineEdit * swatchLookup
Definition: ExprAddDialog.h:42
QLineEdit * curveLookup
Definition: ExprAddDialog.h:40
QPushButton * colorWidget
Definition: ExprAddDialog.h:46
QLineEdit * floatMax
Definition: ExprAddDialog.h:34