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