File indexing completed on 2024-06-09 04:26:52
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "smallcolorselector_dock.h" 0008 0009 #include <klocalizedstring.h> 0010 #include "kis_canvas2.h" 0011 0012 #include "kis_small_color_widget.h" 0013 #include "kis_canvas_resource_provider.h" 0014 0015 #include <KoColorSpaceRegistry.h> 0016 0017 #include <QVBoxLayout> 0018 0019 SmallColorSelectorDock::SmallColorSelectorDock() 0020 : QDockWidget() 0021 , m_canvas(0) 0022 { 0023 QWidget *page = new QWidget(this); 0024 QVBoxLayout *layout = new QVBoxLayout(page); 0025 m_smallColorWidget = new KisSmallColorWidget(this); 0026 layout->addWidget(m_smallColorWidget, 1); 0027 0028 setWidget(page); 0029 0030 m_smallColorWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 0031 connect(m_smallColorWidget, SIGNAL(colorChanged(KoColor)), 0032 this, SLOT(colorChangedProxy(KoColor))); 0033 0034 connect(this, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), 0035 m_smallColorWidget, SLOT(update())); 0036 0037 setWindowTitle(i18n("Small Color Selector")); 0038 } 0039 0040 void SmallColorSelectorDock::setCanvas(KoCanvasBase * canvas) 0041 { 0042 setEnabled(canvas != 0); 0043 0044 if (m_canvas) { 0045 m_canvas->disconnectCanvasObserver(this); 0046 m_smallColorWidget->setColor(KoColor(Qt::black, KoColorSpaceRegistry::instance()->rgb8())); 0047 m_smallColorWidget->setDisplayColorConverter(0); 0048 } 0049 m_canvas = canvas; 0050 if (m_canvas && m_canvas->resourceManager()) { 0051 connect(m_canvas->resourceManager(), SIGNAL(canvasResourceChanged(int,QVariant)), 0052 this, SLOT(canvasResourceChanged(int,QVariant))); 0053 0054 KisCanvas2 *kisCanvas = dynamic_cast<KisCanvas2*>(canvas); 0055 KIS_ASSERT(kisCanvas); 0056 0057 m_smallColorWidget->setDisplayColorConverter(kisCanvas->displayColorConverter()); 0058 m_smallColorWidget->setColor(m_canvas->resourceManager()->foregroundColor()); 0059 } 0060 } 0061 0062 void SmallColorSelectorDock::colorChangedProxy(const KoColor& c) 0063 { 0064 if (m_canvas) 0065 m_canvas->resourceManager()->setForegroundColor(c); 0066 } 0067 0068 void SmallColorSelectorDock::canvasResourceChanged(int key, const QVariant& v) 0069 { 0070 if (m_canvas && key == KoCanvasResource::ForegroundColor) { 0071 m_smallColorWidget->setColor(v.value<KoColor>()); 0072 } 0073 } 0074