Skip to content

Commit 8af9443

Browse files
author
Matthew Wright
committed
many improvements to the interface
1 parent cd2a091 commit 8af9443

14 files changed

+581
-90
lines changed

interface/config_parameters.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ ConfigParameters::ConfigParameters() :
77
persistenceColor(160, 0, 200, 127), //purple semi-transparent, for persistence bars and dots
88
persistenceHighlightColor(255, 140, 0, 150), //orange semi-transparent, for highlighting part of the slice line
99
sliceLineColor(0, 0, 255, 150), //blue semi-transparent, for slice line
10-
sliceLineHighlightColor(0, 200, 200, 150) //cyan semi-transparent, for highlighting the slice line on click-and-drag
10+
sliceLineHighlightColor(0, 200, 200, 150) , //cyan semi-transparent, for highlighting the slice line on click-and-drag
11+
bettiDotRadius(5), //radius of dot representing xi_0 = 1 or xi_1 = 1
12+
persistenceDotRadius(5) //radius of dot representing one homology class in persistence diagram
1113
{ }
1214

interface/config_parameters.h

+6
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,19 @@
55

66
//these parameters control the visualization and are (mostly) user-customizable through the Configure dialog box
77
struct ConfigParameters {
8+
//colors
89
QColor xi0color;
910
QColor xi1color;
1011
QColor persistenceColor;
1112
QColor persistenceHighlightColor;
1213
QColor sliceLineColor;
1314
QColor sliceLineHighlightColor;
1415

16+
//sizes
17+
int bettiDotRadius;
18+
int persistenceDotRadius;
19+
20+
//constructor
1521
ConfigParameters();
1622
};
1723

interface/configuredialog.cpp

+116-12
Original file line numberDiff line numberDiff line change
@@ -13,44 +13,56 @@ ConfigureDialog::ConfigureDialog(ConfigParameters& params, QWidget *parent) :
1313
config_params(params),
1414
xi0col(config_params.xi0color), xi1col(config_params.xi1color),
1515
perCol(config_params.persistenceColor), perHiCol(config_params.persistenceHighlightColor),
16-
lineCol(config_params.sliceLineColor), lineHiCol(config_params.sliceLineHighlightColor)
16+
lineCol(config_params.sliceLineColor), lineHiCol(config_params.sliceLineHighlightColor),
17+
bettiRadius(config_params.bettiDotRadius), perRadius(config_params.persistenceDotRadius)
1718
{
1819
ui->setupUi(this);
1920

21+
//set color selectors to current colors
2022
QString qss = QString("border: none; outline: none; background-color: %1;").arg(xi0col.name());
2123
ui->xi0colorButton->setStyleSheet(qss);
2224
ui->xi0colorButton->setAutoFillBackground(true);
2325
ui->xi0colorButton->setFlat(true);
26+
ui->xi0spinBox->setValue(xi0col.alpha());
2427

2528
qss = QString("border: none; outline: none; background-color: %1;").arg(xi1col.name());
2629
ui->xi1colorButton->setStyleSheet(qss);
2730
ui->xi1colorButton->setAutoFillBackground(true);
2831
ui->xi1colorButton->setFlat(true);
32+
ui->xi1spinBox->setValue(xi1col.alpha());
2933

3034
qss = QString("border: none; outline: none; background-color: %1;").arg(perCol.name());
3135
ui->persistenceColorButton->setStyleSheet(qss);
3236
ui->persistenceColorButton->setAutoFillBackground(true);
3337
ui->persistenceColorButton->setFlat(true);
38+
ui->persistenceSpinBox->setValue(perCol.alpha());
3439

3540
qss = QString("border: none; outline: none; background-color: %1;").arg(perHiCol.name());
3641
ui->persistenceHighlightColorButton->setStyleSheet(qss);
3742
ui->persistenceHighlightColorButton->setAutoFillBackground(true);
3843
ui->persistenceHighlightColorButton->setFlat(true);
44+
ui->persistenceHighlightSpinBox->setValue(perHiCol.alpha());
3945

4046
qss = QString("border: none; outline: none; background-color: %1;").arg(lineCol.name());
4147
ui->lineColorButton->setStyleSheet(qss);
4248
ui->lineColorButton->setAutoFillBackground(true);
4349
ui->lineColorButton->setFlat(true);
50+
ui->lineSpinBox->setValue(lineCol.alpha());
4451

4552
qss = QString("border: none; outline: none; background-color: %1;").arg(lineHiCol.name());
4653
ui->lineHighlightColorButton->setStyleSheet(qss);
4754
ui->lineHighlightColorButton->setAutoFillBackground(true);
4855
ui->lineHighlightColorButton->setFlat(true);
49-
}
56+
ui->lineHighlightSpinBox->setValue(lineHiCol.alpha());
57+
58+
//set size selectors to current sizes
59+
ui->bettiDotSpinBox->setValue(bettiRadius);
60+
ui->persistenceDotSpinBox->setValue(perRadius);
61+
62+
}//end constructor
5063

5164
ConfigureDialog::~ConfigureDialog()
5265
{
53-
qDebug() << "deleting ConfigureDialog";
5466
delete ui;
5567
}
5668

@@ -61,18 +73,18 @@ void ConfigureDialog::on_cancelButton_clicked()
6173

6274
void ConfigureDialog::on_okButton_clicked()
6375
{
64-
//save selected configuration
65-
config_params.xi0color.setRgb(xi0col.red(), xi0col.green(), xi0col.blue(), config_params.xi0color.alpha());
66-
config_params.xi1color.setRgb(xi1col.red(), xi1col.green(), xi1col.blue(), config_params.xi1color.alpha());
67-
config_params.persistenceColor.setRgb(perCol.red(), perCol.green(), perCol.blue(), config_params.persistenceColor.alpha());
68-
config_params.persistenceHighlightColor.setRgb(perHiCol.red(), perHiCol.green(), perHiCol.blue(), config_params.persistenceHighlightColor.alpha());
69-
config_params.sliceLineColor.setRgb(lineCol.red(), lineCol.green(), lineCol.blue(), config_params.sliceLineColor.alpha());
70-
config_params.sliceLineHighlightColor.setRgb(lineHiCol.red(), lineHiCol.green(), lineHiCol.blue(), config_params.sliceLineHighlightColor.alpha());
76+
//update config_params to the selected parameters
77+
config_params.xi0color = xi0col;
78+
config_params.xi1color = xi1col;
79+
config_params.persistenceColor = perCol;
80+
config_params.persistenceHighlightColor = perHiCol;
81+
config_params.sliceLineColor = lineCol;
82+
config_params.sliceLineHighlightColor = lineHiCol;
83+
config_params.bettiDotRadius = bettiRadius;
84+
config_params.persistenceDotRadius = perRadius;
7185

7286
//redraw the diagrams
7387
emit configuration_changed();
74-
///TODO: FINISH THIS
75-
/// also think about how to best set opacity of colors
7688

7789
//close the dialog box
7890
close();
@@ -85,6 +97,7 @@ void ConfigureDialog::on_xi0colorButton_clicked()
8597
if(color.isValid())
8698
{
8799
xi0col = color;
100+
xi0col.setAlpha(ui->xi0spinBox->value());
88101
QString qss = QString("border: none; outline: none; background-color: %1;").arg(color.name());
89102
ui->xi0colorButton->setStyleSheet(qss);
90103
ui->xi0colorButton->setAutoFillBackground(true);
@@ -99,6 +112,7 @@ void ConfigureDialog::on_xi1colorButton_clicked()
99112
if(color.isValid())
100113
{
101114
xi1col = color;
115+
xi1col.setAlpha(ui->xi1spinBox->value());
102116
QString qss = QString("border: none; outline: none; background-color: %1;").arg(color.name());
103117
ui->xi1colorButton->setStyleSheet(qss);
104118
ui->xi1colorButton->setAutoFillBackground(true);
@@ -113,6 +127,7 @@ void ConfigureDialog::on_persistenceColorButton_clicked()
113127
if(color.isValid())
114128
{
115129
perCol = color;
130+
perCol.setAlpha(ui->persistenceSpinBox->value());
116131
QString qss = QString("border: none; outline: none; background-color: %1;").arg(color.name());
117132
ui->persistenceColorButton->setStyleSheet(qss);
118133
ui->persistenceColorButton->setAutoFillBackground(true);
@@ -127,6 +142,7 @@ void ConfigureDialog::on_persistenceHighlightColorButton_clicked()
127142
if(color.isValid())
128143
{
129144
perHiCol = color;
145+
perHiCol.setAlpha(ui->persistenceHighlightSpinBox->value());
130146
QString qss = QString("border: none; outline: none; background-color: %1;").arg(color.name());
131147
ui->persistenceHighlightColorButton->setStyleSheet(qss);
132148
ui->persistenceHighlightColorButton->setAutoFillBackground(true);
@@ -141,6 +157,7 @@ void ConfigureDialog::on_lineColorButton_clicked()
141157
if(color.isValid())
142158
{
143159
lineCol = color;
160+
lineCol.setAlpha(ui->lineSpinBox->value());
144161
QString qss = QString("border: none; outline: none; background-color: %1;").arg(color.name());
145162
ui->lineColorButton->setStyleSheet(qss);
146163
ui->lineColorButton->setAutoFillBackground(true);
@@ -155,10 +172,97 @@ void ConfigureDialog::on_lineHighlightColorButton_clicked()
155172
if(color.isValid())
156173
{
157174
lineHiCol = color;
175+
lineHiCol.setAlpha(ui->lineHighlightSpinBox->value());
158176
QString qss = QString("border: none; outline: none; background-color: %1;").arg(color.name());
159177
ui->lineHighlightColorButton->setStyleSheet(qss);
160178
ui->lineHighlightColorButton->setAutoFillBackground(true);
161179
ui->lineHighlightColorButton->setFlat(true);
162180
}
163181
}
164182

183+
184+
void ConfigureDialog::on_xi0spinBox_valueChanged(int arg1)
185+
{
186+
xi0col.setAlpha(arg1);
187+
}
188+
189+
void ConfigureDialog::on_xi1spinBox_valueChanged(int arg1)
190+
{
191+
xi1col.setAlpha(arg1);
192+
}
193+
194+
void ConfigureDialog::on_persistenceSpinBox_valueChanged(int arg1)
195+
{
196+
perCol.setAlpha(arg1);
197+
}
198+
199+
void ConfigureDialog::on_persistenceHighlightSpinBox_valueChanged(int arg1)
200+
{
201+
perHiCol.setAlpha(arg1);
202+
}
203+
204+
void ConfigureDialog::on_lineSpinBox_valueChanged(int arg1)
205+
{
206+
lineCol.setAlpha(arg1);
207+
}
208+
209+
void ConfigureDialog::on_lineHighlightSpinBox_valueChanged(int arg1)
210+
{
211+
lineHiCol.setAlpha(arg1);
212+
}
213+
214+
void ConfigureDialog::on_defaultColorsButton_clicked()
215+
{
216+
ConfigParameters defaults;
217+
218+
xi0col = defaults.xi0color;
219+
QString qss = QString("border: none; outline: none; background-color: %1;").arg(xi0col.name());
220+
ui->xi0colorButton->setStyleSheet(qss);
221+
ui->xi0spinBox->setValue(xi0col.alpha());
222+
223+
xi1col = defaults.xi1color;
224+
qss = QString("border: none; outline: none; background-color: %1;").arg(xi1col.name());
225+
ui->xi1colorButton->setStyleSheet(qss);
226+
ui->xi1spinBox->setValue(xi1col.alpha());
227+
228+
perCol = defaults.persistenceColor;
229+
qss = QString("border: none; outline: none; background-color: %1;").arg(perCol.name());
230+
ui->persistenceColorButton->setStyleSheet(qss);
231+
ui->persistenceSpinBox->setValue(perCol.alpha());
232+
233+
perHiCol = defaults.persistenceHighlightColor;
234+
qss = QString("border: none; outline: none; background-color: %1;").arg(perHiCol.name());
235+
ui->persistenceHighlightColorButton->setStyleSheet(qss);
236+
ui->persistenceHighlightSpinBox->setValue(perHiCol.alpha());
237+
238+
lineCol = defaults.sliceLineColor;
239+
qss = QString("border: none; outline: none; background-color: %1;").arg(lineCol.name());
240+
ui->lineColorButton->setStyleSheet(qss);
241+
ui->lineSpinBox->setValue(lineCol.alpha());
242+
243+
lineHiCol = defaults.sliceLineHighlightColor;
244+
qss = QString("border: none; outline: none; background-color: %1;").arg(lineHiCol.name());
245+
ui->lineHighlightColorButton->setStyleSheet(qss);
246+
ui->lineHighlightSpinBox->setValue(lineHiCol.alpha());
247+
}
248+
249+
void ConfigureDialog::on_bettiDotSpinBox_valueChanged(int arg1)
250+
{
251+
bettiRadius = arg1;
252+
}
253+
254+
void ConfigureDialog::on_persistenceDotSpinBox_valueChanged(int arg1)
255+
{
256+
perRadius = arg1;
257+
}
258+
259+
void ConfigureDialog::on_defaultSizesButton_clicked()
260+
{
261+
ConfigParameters defaults;
262+
263+
bettiRadius = defaults.bettiDotRadius;
264+
ui->bettiDotSpinBox->setValue(bettiRadius);
265+
266+
perRadius = defaults.persistenceDotRadius;
267+
ui->persistenceDotSpinBox->setValue(perRadius);
268+
}

interface/configuredialog.h

+16
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ private slots:
3535
void on_lineHighlightColorButton_clicked();
3636

3737

38+
void on_xi0spinBox_valueChanged(int arg1);
39+
void on_xi1spinBox_valueChanged(int arg1);
40+
void on_persistenceSpinBox_valueChanged(int arg1);
41+
void on_persistenceHighlightSpinBox_valueChanged(int arg1);
42+
void on_lineSpinBox_valueChanged(int arg1);
43+
void on_lineHighlightSpinBox_valueChanged(int arg1);
44+
45+
void on_defaultColorsButton_clicked();
46+
47+
void on_bettiDotSpinBox_valueChanged(int arg1);
48+
void on_persistenceDotSpinBox_valueChanged(int arg1);
49+
50+
void on_defaultSizesButton_clicked();
51+
3852
private:
3953
Ui::ConfigureDialog *ui;
4054
ConfigParameters& config_params;
@@ -46,6 +60,8 @@ private slots:
4660
QColor perHiCol;
4761
QColor lineCol;
4862
QColor lineHiCol;
63+
int bettiRadius;
64+
int perRadius;
4965
};
5066

5167
#endif // CONFIGUREDIALOG_H

0 commit comments

Comments
 (0)