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