File indexing completed on 2025-03-09 04:08:57
0001 /* 0002 * SPDX-FileCopyrightText: 2009 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "presetdocker_dock.h" 0008 0009 #include <QHBoxLayout> 0010 0011 #include <klocalizedstring.h> 0012 0013 #include <KoCanvasResourceProvider.h> 0014 #include <KoCanvasBase.h> 0015 0016 #include "kis_canvas2.h" 0017 #include "KisViewManager.h" 0018 #include "kis_paintop_box.h" 0019 #include "kis_paintop_presets_chooser_popup.h" 0020 #include <brushengine/kis_paintop_preset.h> 0021 #include "KisMainWindow.h" 0022 0023 0024 PresetDockerDock::PresetDockerDock( ) 0025 : QDockWidget(i18nc("@title:window Brush presets chooser docker", "Brush Presets")) 0026 , m_canvas(0) 0027 { 0028 m_presetChooser = new KisPaintOpPresetsChooserPopup(this); 0029 m_presetChooser->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); 0030 m_presetChooser->setResponsiveness(true); 0031 setWidget(m_presetChooser); 0032 } 0033 0034 void PresetDockerDock::setCanvas(KoCanvasBase *canvas) 0035 { 0036 setEnabled(canvas != 0); 0037 0038 if (m_canvas) { 0039 m_canvas->disconnectCanvasObserver(this); 0040 m_presetChooser->disconnect(m_canvas->viewManager()->paintOpBox()); 0041 } 0042 0043 m_canvas = dynamic_cast<KisCanvas2*>(canvas); 0044 0045 if (!m_canvas || !m_canvas->viewManager() || !m_canvas->resourceManager()) return; 0046 0047 connect(m_presetChooser, SIGNAL(resourceSelected(KoResourceSP )), 0048 m_canvas->viewManager()->paintOpBox(), SLOT(resourceSelected(KoResourceSP ))); 0049 connect(m_presetChooser, SIGNAL(resourceClicked(KoResourceSP )), 0050 m_canvas->viewManager()->paintOpBox(), SLOT(resourceSelected(KoResourceSP ))); 0051 connect(canvas->resourceManager(), SIGNAL(canvasResourceChanged(int,QVariant)), 0052 this, SLOT(canvasResourceChanged(int,QVariant))); 0053 0054 0055 connect(m_canvas->viewManager()->mainWindow(), SIGNAL(themeChanged()), m_presetChooser, SLOT(slotThemeChanged()), Qt::UniqueConnection); 0056 m_presetChooser->slotThemeChanged(); 0057 0058 canvasResourceChanged(KoCanvasResource::CurrentPaintOpPreset); 0059 } 0060 0061 void PresetDockerDock::canvasResourceChanged(int key, const QVariant& /*v*/) 0062 { 0063 if (key == KoCanvasResource::CurrentPaintOpPreset) { 0064 if (m_canvas && m_canvas->resourceManager()) { 0065 if (sender()) sender()->blockSignals(true); 0066 KisPaintOpPresetSP preset = m_canvas->resourceManager()->resource(KoCanvasResource::CurrentPaintOpPreset).value<KisPaintOpPresetSP>(); 0067 if(preset) 0068 m_presetChooser->canvasResourceChanged(preset); 0069 if (sender()) sender()->blockSignals(false); 0070 } 0071 } 0072 } 0073 0074 0075