src/dialogs/colorselector.cpp

Sat, 04 Mar 2017 00:54:46 +0200

author
Teemu Piippo <teemu@hecknology.net>
date
Sat, 04 Mar 2017 00:54:46 +0200
changeset 1181
ca6d0ef9aadb
parent 1175
7cf1dbf97d90
child 1192
317f4ce38f3f
child 1252
db1d4917626f
permissions
-rw-r--r--

Added polar grid rendering (which is disabled for now).

655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1 /*
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
2 * LDForge: LDraw parts authoring CAD
1072
9ce9496427f2 Happy new year 2017!
Teemu Piippo <teemu@hecknology.net>
parents: 1017
diff changeset
3 * Copyright (C) 2013 - 2017 Teemu Piippo
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
4 *
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
5 * This program is free software: you can redistribute it and/or modify
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
6 * it under the terms of the GNU General Public License as published by
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
7 * the Free Software Foundation, either version 3 of the License, or
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
8 * (at your option) any later version.
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
9 *
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful,
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
13 * GNU General Public License for more details.
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
14 *
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
17 */
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
18
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
19 #include <QGraphicsScene>
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
20 #include <QGraphicsItem>
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
21 #include <QMouseEvent>
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
22 #include <QScrollBar>
795
195fa1fff9c3 - changed all color usage to use LDColor classes instead of color indices. Added support for direct colors.
Santeri Piippo <crimsondusk64@gmail.com>
parents: 757
diff changeset
23 #include <QColorDialog>
974
b2fa5f89798a Added a GuiUtilities class to contain useful non-MainWindow-related GUI functions
Teemu Piippo <crimsondusk64@gmail.com>
parents: 971
diff changeset
24 #include "../colors.h"
b2fa5f89798a Added a GuiUtilities class to contain useful non-MainWindow-related GUI functions
Teemu Piippo <crimsondusk64@gmail.com>
parents: 971
diff changeset
25 #include "../guiutilities.h"
950
5df69eb50182 Move colorSelector.cc to dialogs/colorselector.cpp
Teemu Piippo <crimsondusk64@gmail.com>
parents: 947
diff changeset
26 #include "../main.h"
962
a4b463a7ee82 Rename MainWindow files
Teemu Piippo <crimsondusk64@gmail.com>
parents: 950
diff changeset
27 #include "../mainwindow.h"
950
5df69eb50182 Move colorSelector.cc to dialogs/colorselector.cpp
Teemu Piippo <crimsondusk64@gmail.com>
parents: 947
diff changeset
28 #include "../miscallenous.h"
5df69eb50182 Move colorSelector.cc to dialogs/colorselector.cpp
Teemu Piippo <crimsondusk64@gmail.com>
parents: 947
diff changeset
29 #include "colorselector.h"
5df69eb50182 Move colorSelector.cc to dialogs/colorselector.cpp
Teemu Piippo <crimsondusk64@gmail.com>
parents: 947
diff changeset
30 #include "ui_colorselector.h"
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
31
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
32 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
33 * Constructs a color selection dialog.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
34 */
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
35 ColorSelector::ColorSelector(QWidget* parent, LDColor defaultColor) :
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
36 QDialog {parent},
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
37 HierarchyElement {parent},
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
38 ui {*new Ui_ColorSelUi},
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
39 m_selectedColor {LDColor::nullColor}
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
40 {
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
41 ui.setupUi(this);
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
42
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
43 QGridLayout* gridLayout = new QGridLayout;
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
44
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
45 // Spawn color selector buttons
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
46 for (LDColor color; color.isLDConfigColor(); ++color)
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
47 {
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
48 QPushButton* button = new QPushButton {this};
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
49 button->setMinimumSize({32, 32});
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
50 button->setMaximumSize(button->minimumSize());
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
51
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
52 if (color.isValid())
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
53 {
1175
7cf1dbf97d90 No need for braces there...
Teemu Piippo <teemu@hecknology.net>
parents: 1174
diff changeset
54 QColor faceColor = color.faceColor();
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
55
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
56 if (color == MainColor)
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
57 {
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
58 faceColor = m_config->mainColor();
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
59 faceColor.setAlphaF(m_config->mainColorAlpha());
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
60 }
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
61
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
62 QString edgeColor = luma(faceColor) < 80 ? "white" : "black";
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
63 button->setAutoFillBackground(true);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
64 button->setStyleSheet(format("background-color: rgba(%1, %2, %3, %4); color: %5",
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
65 faceColor.red(), faceColor.green(), faceColor.blue(), faceColor.alpha(), edgeColor));
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
66 button->setCheckable(true);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
67 button->setText(QString::number(color.index()));
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
68 button->setToolTip(format("%1: %2", color.index(), color.name()));
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
69 m_buttons[color] = button;
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
70 m_buttonsReversed[button] = color;
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
71 connect(button, SIGNAL(clicked(bool)), this, SLOT(colorButtonClicked()));
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
72 }
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
73 else
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
74 {
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
75 button->setEnabled(false);
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
76 }
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
77
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
78 gridLayout->addWidget(button, color.index() / columnCount, color.index() % columnCount);
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
79 }
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
80
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
81 QWidget* gridContainerWidget = new QWidget;
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
82 gridContainerWidget->setLayout(gridLayout);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
83 ui.definedColors->setWidget(gridContainerWidget);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
84 connect(ui.directColor, SIGNAL(clicked(bool)), this, SLOT(chooseDirectColor()));
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
85 ui.definedColors->setMinimumWidth(ui.definedColors->widget()->width() + 16);
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
86
801
f6abc9eb4217 - made transparent direct colors a compile-time opt-in since it appears to be non-standard
Santeri Piippo <crimsondusk64@gmail.com>
parents: 796
diff changeset
87 #ifdef TRANSPARENT_DIRECT_COLORS
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
88 connect(ui.transparentDirectColor, SIGNAL(clicked(bool)), this, SLOT(transparentCheckboxClicked()));
801
f6abc9eb4217 - made transparent direct colors a compile-time opt-in since it appears to be non-standard
Santeri Piippo <crimsondusk64@gmail.com>
parents: 796
diff changeset
89 #else
947
edc8fc0f37f2 ColorSelector: `ui->` -> `ui.`
Teemu Piippo <crimsondusk64@gmail.com>
parents: 946
diff changeset
90 ui.transparentDirectColor->hide();
801
f6abc9eb4217 - made transparent direct colors a compile-time opt-in since it appears to be non-standard
Santeri Piippo <crimsondusk64@gmail.com>
parents: 796
diff changeset
91 #endif
795
195fa1fff9c3 - changed all color usage to use LDColor classes instead of color indices. Added support for direct colors.
Santeri Piippo <crimsondusk64@gmail.com>
parents: 757
diff changeset
92
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
93 setSelectedColor(defaultColor);
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
94 }
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
95
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
96 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
97 * Destructs the color selection dialog.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
98 */
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
99 ColorSelector::~ColorSelector()
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
100 {
947
edc8fc0f37f2 ColorSelector: `ui->` -> `ui.`
Teemu Piippo <crimsondusk64@gmail.com>
parents: 946
diff changeset
101 delete &ui;
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
102 }
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
103
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
104 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
105 * Handles the press of a color button.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
106 */
878
945e44575b3e - changed the unorthodox color selection grid into a push button grid
Teemu Piippo <crimsondusk64@gmail.com>
parents: 861
diff changeset
107 void ColorSelector::colorButtonClicked()
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
108 {
1173
6cd85b28f43b Cleanup ColorSelector::colorButtonClicked()
Teemu Piippo <teemu@hecknology.net>
parents: 1072
diff changeset
109 QPushButton* button = qobject_cast<QPushButton*>(sender());
6cd85b28f43b Cleanup ColorSelector::colorButtonClicked()
Teemu Piippo <teemu@hecknology.net>
parents: 1072
diff changeset
110 LDColor color = m_buttonsReversed.value(button, LDColor::nullColor);
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
111
1173
6cd85b28f43b Cleanup ColorSelector::colorButtonClicked()
Teemu Piippo <teemu@hecknology.net>
parents: 1072
diff changeset
112 if (color.isValid())
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
113 setSelectedColor(color);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
114 }
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
115
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
116 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
117 * Asks the user for a direct color.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
118 */
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
119 void ColorSelector::chooseDirectColor()
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
120 {
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
121 QColor defaultColor = selectedColor() != -1 ? selectedColor().faceColor() : Qt::white;
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
122 QColor newColor = QColorDialog::getColor(defaultColor);
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
123
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
124 if (newColor.isValid())
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
125 setSelectedColor({newColor, ui.transparentDirectColor->isChecked()});
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
126 }
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
127
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
128 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
129 * Handles the click of the transparent direct color option (only available of transparent direct colors are enabled).
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
130 */
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
131 void ColorSelector::transparentCheckboxClicked()
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
132 {
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
133 if (selectedColor().isDirect())
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
134 setSelectedColor({selectedColor().faceColor(), ui.transparentDirectColor->isChecked()});
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
135 }
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
136
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
137 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
138 * Convenience function for invoking the color selection dialog.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
139 */
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
140 bool ColorSelector::selectColor(QWidget* parent, LDColor& color, LDColor defaultColor)
795
195fa1fff9c3 - changed all color usage to use LDColor classes instead of color indices. Added support for direct colors.
Santeri Piippo <crimsondusk64@gmail.com>
parents: 757
diff changeset
141 {
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
142 ColorSelector dialog {parent, defaultColor};
795
195fa1fff9c3 - changed all color usage to use LDColor classes instead of color indices. Added support for direct colors.
Santeri Piippo <crimsondusk64@gmail.com>
parents: 757
diff changeset
143
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
144 if (dialog.exec() and dialog.selectedColor().isValid())
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
145 {
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
146 color = dialog.selectedColor();
655
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
147 return true;
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
148 }
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
149
b376645315ab - renamed files to camelCase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
150 return false;
861
83426c5fa732 - major identifier renaming
Teemu Piippo <crimsondusk64@gmail.com>
parents: 855
diff changeset
151 }
1010
969b48eddd6b A bit more cleanup. Finally removed the PROPERTY macro. (now let's see about making a new one sometime that isn't so terrible?)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 998
diff changeset
152
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
153 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
154 * Returns the currently selected color.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
155 */
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
156 LDColor ColorSelector::selectedColor() const
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
157 {
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
158 return m_selectedColor;
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
159 }
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
160
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
161 /*
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
162 * Changes the selected color to the one provided, and updates all relevant widgets.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
163 */
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
164 void ColorSelector::setSelectedColor(LDColor newColor)
1010
969b48eddd6b A bit more cleanup. Finally removed the PROPERTY macro. (now let's see about making a new one sometime that isn't so terrible?)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 998
diff changeset
165 {
1174
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
166 // Uncheck the button we previously had pressed.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
167 QPushButton* button = m_buttons.value(m_selectedColor);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
168
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
169 if (button)
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
170 button->setChecked(false);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
171
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
172 // Select the new color.
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
173 m_selectedColor = newColor;
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
174 button = m_buttons.value(newColor);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
175
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
176 if (button)
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
177 button->setChecked(true);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
178
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
179 if (m_selectedColor.isValid())
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
180 {
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
181 ui.colorLabel->setText(format("%1 - %2",
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
182 newColor.indexString(),
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
183 newColor.isDirect() ? newColor.faceColor().name() : newColor.name()));
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
184 ui.iconLabel->setPixmap(guiUtilities()->makeColorIcon(newColor, 16).pixmap(16, 16));
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
185 ui.transparentDirectColor->setEnabled(newColor.isDirect());
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
186 ui.transparentDirectColor->setChecked(newColor.isDirect() and newColor.faceColor().alphaF() < 1.0);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
187 }
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
188 else
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
189 {
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
190 ui.colorLabel->setText("---");
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
191 ui.iconLabel->setPixmap({});
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
192 ui.transparentDirectColor->setChecked(false);
91696a2e022c Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.
Teemu Piippo <teemu@hecknology.net>
parents: 1173
diff changeset
193 }
1010
969b48eddd6b A bit more cleanup. Finally removed the PROPERTY macro. (now let's see about making a new one sometime that isn't so terrible?)
Teemu Piippo <crimsondusk64@gmail.com>
parents: 998
diff changeset
194 }

mercurial