File indexing completed on 2024-05-26 04:33:01

0001 /*
0002  *  dlg_separate.cc - part of KimageShop^WKrayon^WKrita
0003  *
0004  *  SPDX-FileCopyrightText: 2004 Boudewijn Rempt <boud@valdyas.org>
0005  *
0006  *  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #include "dlg_separate.h"
0010 
0011 #include <QRadioButton>
0012 #include <QCheckBox>
0013 #include <QLabel>
0014 #include <QComboBox>
0015 
0016 #include <KisDialogStateSaver.h>
0017 
0018 #include <klocalizedstring.h>
0019 #include <kis_debug.h>
0020 DlgSeparate::DlgSeparate(const QString & imageCS,
0021                          const QString & layerCS,
0022                          QWidget *  parent,
0023                          const char * name)
0024         : KoDialog(parent)
0025         , m_imageCS(imageCS)
0026         , m_layerCS(layerCS)
0027 {
0028     setObjectName(name);
0029     setCaption(i18n("Separate Image"));
0030     setButtons(Ok | Cancel);
0031     setDefaultButton(Ok);
0032 
0033     m_page = new WdgSeparations(this);
0034     Q_CHECK_PTR(m_page);
0035     setMainWidget(m_page);
0036     resize(m_page->sizeHint());
0037 
0038     m_page->lblColormodel->setText(layerCS);
0039     connect(m_page->radioCurrentLayer, SIGNAL(toggled(bool)), this, SLOT(slotSetColorSpaceLabel()));
0040     connect(m_page->radioAllLayers, SIGNAL(toggled(bool)), this, SLOT(slotSetColorSpaceLabel()));
0041     connect(m_page->chkColors, SIGNAL(toggled(bool)), this, SLOT(separateToColorActivated(bool)));
0042 
0043     connect(this, SIGNAL(okClicked()),
0044             this, SLOT(okClicked()));
0045 
0046     KisDialogStateSaver::restoreState(m_page, "krita/separate channels");
0047 }
0048 
0049 DlgSeparate::~DlgSeparate()
0050 {
0051     KisDialogStateSaver::saveState(m_page, "krita/separate channels");
0052     delete m_page;
0053 }
0054 enumSepAlphaOptions DlgSeparate::getAlphaOptions()
0055 {
0056     if (m_page->radioCopyAlpha->isChecked()) return COPY_ALPHA_TO_SEPARATIONS;
0057     if (m_page->radioDiscardAlpha->isChecked()) return DISCARD_ALPHA;
0058     if (m_page->radioSeparateAlpha->isChecked()) return CREATE_ALPHA_SEPARATION;
0059 
0060     return COPY_ALPHA_TO_SEPARATIONS;
0061 }
0062 
0063 enumSepSource DlgSeparate::getSource()
0064 {
0065     if (m_page->radioCurrentLayer->isChecked()) return CURRENT_LAYER;
0066     if (m_page->radioAllLayers->isChecked()) return ALL_LAYERS;
0067     return CURRENT_LAYER;
0068 }
0069 
0070 bool DlgSeparate::getDownscale()
0071 {
0072     return m_page->chkDownscale->isChecked();
0073 }
0074 
0075 bool DlgSeparate::getToColor()
0076 {
0077     return m_page->chkColors->isChecked();
0078 }
0079 
0080 bool DlgSeparate::getActivateCurrentChannel()
0081 {
0082     return m_page->chkActivateCurrentChannel->isChecked();
0083 }
0084 
0085 void DlgSeparate::okClicked()
0086 {
0087     accept();
0088 }
0089 
0090 void DlgSeparate::separateToColorActivated(bool disable)
0091 {
0092     if (m_canDownScale) {
0093         m_page->chkDownscale->setDisabled(disable);
0094     }
0095     m_page->chkActivateCurrentChannel->setDisabled(!disable);
0096 }
0097 
0098 void DlgSeparate::slotSetColorSpaceLabel()
0099 {
0100     if (m_page->radioCopyAlpha->isChecked()) {
0101         m_page->lblColormodel->setText(m_layerCS);
0102     } else if (m_page->radioAllLayers->isChecked()) {
0103         m_page->lblColormodel->setText(m_imageCS);
0104     }
0105 }
0106 void DlgSeparate::enableDownscale(bool enable)
0107 {
0108     m_canDownScale = enable;
0109     m_page->chkDownscale->setEnabled(enable);
0110 }
0111