67 mRgbGroup =
new QButtonGroup(
this );
69 for (
auto colorRadio : mRgbRadios )
70 mRgbGroup->addButton( colorRadio.first, i++ );
72 mCmykGroup =
new QButtonGroup(
this );
74 for (
auto colorRadio : mCmykRadios )
75 mCmykGroup->addButton( colorRadio.first, i++ );
77 connect( mRgbGroup, &QButtonGroup::idToggled,
this, &QgsCompoundColorWidget::onColorButtonGroupToggled );
78 connect( mCmykGroup, &QButtonGroup::idToggled,
this, &QgsCompoundColorWidget::onColorButtonGroupToggled );
79 connect( mAddColorToSchemeButton, &QPushButton::clicked,
this, &QgsCompoundColorWidget::mAddColorToSchemeButton_clicked );
80 connect( mAddCustomColorButton, &QPushButton::clicked,
this, &QgsCompoundColorWidget::mAddCustomColorButton_clicked );
81 connect( mSampleButton, &QPushButton::clicked,
this, &QgsCompoundColorWidget::mSampleButton_clicked );
82 connect( mTabWidget, &QTabWidget::currentChanged,
this, &QgsCompoundColorWidget::mTabWidget_currentChanged );
83 connect( mActionShowInButtons, &QAction::toggled,
this, &QgsCompoundColorWidget::mActionShowInButtons_toggled );
85 mColorModel->addItem( tr(
"RGB" ), QColor::Spec::Rgb );
86 mColorModel->addItem( tr(
"CMYK" ), QColor::Spec::Cmyk );
87 connect( mColorModel,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [
this](
int ) {
88 const QColor::Spec spec =
static_cast<QColor::Spec
>( mColorModel->currentData().toInt() );
89 if ( spec == QColor::Spec::Cmyk )
100 QVBoxLayout *newLayout =
new QVBoxLayout();
101 newLayout->setContentsMargins( 0, 0, 0, 0 );
102 newLayout->addWidget( mTabWidget );
103 newLayout->addWidget( mSlidersWidget );
104 newLayout->addWidget( mPreviewWidget );
105 newLayout->addWidget( mSwatchesWidget );
107 setLayout( newLayout );
112 mSchemeList->header()->hide();
113 mSchemeList->setColumnWidth( 0,
static_cast<int>(
Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance(
'X' ) * 6 ) );
116 refreshSchemeComboBox();
120 int activeScheme = settings.
value( u
"Windows/ColorDialog/activeScheme"_s, 0 ).toInt();
121 activeScheme = activeScheme >= mSchemeComboBox->count() ? 0 : activeScheme;
123 mSchemeList->setScheme( schemeList.at( activeScheme ) );
125 mSchemeComboBox->setCurrentIndex( activeScheme );
126 updateActionsForCurrentScheme();
129 connect( mSchemeList->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &QgsCompoundColorWidget::listSelectionChanged );
131 mActionCopyColors->setEnabled(
false );
137 connect( mActionImportPalette, &QAction::triggered,
this, &QgsCompoundColorWidget::importPalette );
138 connect( mActionRemovePalette, &QAction::triggered,
this, &QgsCompoundColorWidget::removePalette );
139 connect( mActionNewPalette, &QAction::triggered,
this, &QgsCompoundColorWidget::newPalette );
142 QMenu *schemeMenu =
new QMenu( mSchemeToolButton );
143 schemeMenu->addAction( mActionCopyColors );
144 schemeMenu->addAction( mActionPasteColors );
145 schemeMenu->addSeparator();
146 schemeMenu->addAction( mActionImportColors );
147 schemeMenu->addAction( mActionExportColors );
148 schemeMenu->addSeparator();
149 schemeMenu->addAction( mActionNewPalette );
150 schemeMenu->addAction( mActionImportPalette );
151 schemeMenu->addAction( mActionRemovePalette );
152 schemeMenu->addAction( mActionShowInButtons );
153 mSchemeToolButton->setMenu( schemeMenu );
155 connect( mSchemeComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsCompoundColorWidget::schemeIndexChanged );
158 mOldColorLabel->hide();
161 mVerticalRamp->setInteriorMargin( 2 );
162 mVerticalRamp->setShowFrame(
true );
176 mSwatchButton1->setShowMenu(
false );
178 mSwatchButton2->setShowMenu(
false );
180 mSwatchButton3->setShowMenu(
false );
182 mSwatchButton4->setShowMenu(
false );
184 mSwatchButton5->setShowMenu(
false );
186 mSwatchButton6->setShowMenu(
false );
188 mSwatchButton7->setShowMenu(
false );
190 mSwatchButton8->setShowMenu(
false );
192 mSwatchButton9->setShowMenu(
false );
194 mSwatchButton10->setShowMenu(
false );
196 mSwatchButton11->setShowMenu(
false );
198 mSwatchButton12->setShowMenu(
false );
200 mSwatchButton13->setShowMenu(
false );
202 mSwatchButton14->setShowMenu(
false );
204 mSwatchButton15->setShowMenu(
false );
206 mSwatchButton16->setShowMenu(
false );
209 mSwatchButton1->setColor( settings.
value( u
"Windows/ColorDialog/customColor1"_s, QVariant( QColor() ) ).value<QColor>() );
210 mSwatchButton2->setColor( settings.
value( u
"Windows/ColorDialog/customColor2"_s, QVariant( QColor() ) ).value<QColor>() );
211 mSwatchButton3->setColor( settings.
value( u
"Windows/ColorDialog/customColor3"_s, QVariant( QColor() ) ).value<QColor>() );
212 mSwatchButton4->setColor( settings.
value( u
"Windows/ColorDialog/customColor4"_s, QVariant( QColor() ) ).value<QColor>() );
213 mSwatchButton5->setColor( settings.
value( u
"Windows/ColorDialog/customColor5"_s, QVariant( QColor() ) ).value<QColor>() );
214 mSwatchButton6->setColor( settings.
value( u
"Windows/ColorDialog/customColor6"_s, QVariant( QColor() ) ).value<QColor>() );
215 mSwatchButton7->setColor( settings.
value( u
"Windows/ColorDialog/customColor7"_s, QVariant( QColor() ) ).value<QColor>() );
216 mSwatchButton8->setColor( settings.
value( u
"Windows/ColorDialog/customColor8"_s, QVariant( QColor() ) ).value<QColor>() );
217 mSwatchButton9->setColor( settings.
value( u
"Windows/ColorDialog/customColor9"_s, QVariant( QColor() ) ).value<QColor>() );
218 mSwatchButton10->setColor( settings.
value( u
"Windows/ColorDialog/customColor10"_s, QVariant( QColor() ) ).value<QColor>() );
219 mSwatchButton11->setColor( settings.
value( u
"Windows/ColorDialog/customColor11"_s, QVariant( QColor() ) ).value<QColor>() );
220 mSwatchButton12->setColor( settings.
value( u
"Windows/ColorDialog/customColor12"_s, QVariant( QColor() ) ).value<QColor>() );
221 mSwatchButton13->setColor( settings.
value( u
"Windows/ColorDialog/customColor13"_s, QVariant( QColor() ) ).value<QColor>() );
222 mSwatchButton14->setColor( settings.
value( u
"Windows/ColorDialog/customColor14"_s, QVariant( QColor() ) ).value<QColor>() );
223 mSwatchButton15->setColor( settings.
value( u
"Windows/ColorDialog/customColor15"_s, QVariant( QColor() ) ).value<QColor>() );
224 mSwatchButton16->setColor( settings.
value( u
"Windows/ColorDialog/customColor16"_s, QVariant( QColor() ) ).value<QColor>() );
227 mSpinBoxRadius->setValue( settings.
value( u
"Windows/ColorDialog/sampleRadius"_s, 1 ).toInt() );
228 mSamplePreview->setColor( QColor() );
231 const int swatchWidth =
static_cast<int>( std::round( std::max(
Qgis::UI_SCALE_FACTOR * 1.9 * mSwatchButton1->fontMetrics().height(), 38.0 ) ) );
232 const int swatchHeight =
static_cast<int>( std::round( std::max(
Qgis::UI_SCALE_FACTOR * 1.5 * mSwatchButton1->fontMetrics().height(), 30.0 ) ) );
233 mSwatchButton1->setMinimumSize( swatchWidth, swatchHeight );
234 mSwatchButton1->setMaximumSize( swatchWidth, swatchHeight );
235 mSwatchButton2->setMinimumSize( swatchWidth, swatchHeight );
236 mSwatchButton2->setMaximumSize( swatchWidth, swatchHeight );
237 mSwatchButton3->setMinimumSize( swatchWidth, swatchHeight );
238 mSwatchButton3->setMaximumSize( swatchWidth, swatchHeight );
239 mSwatchButton4->setMinimumSize( swatchWidth, swatchHeight );
240 mSwatchButton4->setMaximumSize( swatchWidth, swatchHeight );
241 mSwatchButton5->setMinimumSize( swatchWidth, swatchHeight );
242 mSwatchButton5->setMaximumSize( swatchWidth, swatchHeight );
243 mSwatchButton6->setMinimumSize( swatchWidth, swatchHeight );
244 mSwatchButton6->setMaximumSize( swatchWidth, swatchHeight );
245 mSwatchButton7->setMinimumSize( swatchWidth, swatchHeight );
246 mSwatchButton7->setMaximumSize( swatchWidth, swatchHeight );
247 mSwatchButton8->setMinimumSize( swatchWidth, swatchHeight );
248 mSwatchButton8->setMaximumSize( swatchWidth, swatchHeight );
249 mSwatchButton9->setMinimumSize( swatchWidth, swatchHeight );
250 mSwatchButton9->setMaximumSize( swatchWidth, swatchHeight );
251 mSwatchButton10->setMinimumSize( swatchWidth, swatchHeight );
252 mSwatchButton10->setMaximumSize( swatchWidth, swatchHeight );
253 mSwatchButton11->setMinimumSize( swatchWidth, swatchHeight );
254 mSwatchButton11->setMaximumSize( swatchWidth, swatchHeight );
255 mSwatchButton12->setMinimumSize( swatchWidth, swatchHeight );
256 mSwatchButton12->setMaximumSize( swatchWidth, swatchHeight );
257 mSwatchButton13->setMinimumSize( swatchWidth, swatchHeight );
258 mSwatchButton13->setMaximumSize( swatchWidth, swatchHeight );
259 mSwatchButton14->setMinimumSize( swatchWidth, swatchHeight );
260 mSwatchButton14->setMaximumSize( swatchWidth, swatchHeight );
261 mSwatchButton15->setMinimumSize( swatchWidth, swatchHeight );
262 mSwatchButton15->setMaximumSize( swatchWidth, swatchHeight );
263 mSwatchButton16->setMinimumSize( swatchWidth, swatchHeight );
264 mSwatchButton16->setMaximumSize( swatchWidth, swatchHeight );
265 const int previewHeight =
static_cast<int>( std::round( std::max(
Qgis::UI_SCALE_FACTOR * 2.0 * mSwatchButton1->fontMetrics().height(), 40.0 ) ) );
266 mColorPreview->setMinimumSize( 0, previewHeight );
267 mPreviewWidget->setMaximumHeight( previewHeight * 2 );
268 const int swatchAddSize =
static_cast<int>( std::round( std::max(
Qgis::UI_SCALE_FACTOR * 1.4 * mSwatchButton1->fontMetrics().height(), 28.0 ) ) );
269 mAddCustomColorButton->setMinimumWidth( swatchAddSize );
270 mAddCustomColorButton->setMaximumWidth( swatchAddSize );
273 mTabWidget->setIconSize( QSize( iconSize, iconSize ) );
278 const int activeRgbRadio = settings.
value( u
"Windows/ColorDialog/activeComponent"_s, 2 ).toInt();
279 if ( QAbstractButton *rgbRadio = mRgbGroup->button( activeRgbRadio ) )
280 rgbRadio->setChecked(
true );
282 const int activeCmykRadio = settings.
value( u
"Windows/ColorDialog/activeCmykComponent"_s, 0 ).toInt();
283 if ( QAbstractButton *cmykRadio = mCmykGroup->button( activeCmykRadio ) )
284 cmykRadio->setChecked(
true );
286 const int currentTab = settings.
value( u
"Windows/ColorDialog/activeTab"_s, 0 ).toInt();
287 mTabWidget->setCurrentIndex( currentTab );