Krita Source Code Documentation
Loading...
Searching...
No Matches
ChannelDockerWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2011 Sven Langkamp <sven.langkamp@gmail.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
8
9#include <QGridLayout>
10#include <QTableView>
11#include <QHeaderView>
12
13#include "channelmodel.h"
14#include <KisViewManager.h>
15#include <kis_canvas2.h>
18#include <KisDisplayConfig.h>
19
20ChannelDockerWidget::ChannelDockerWidget(QWidget *parent, const char *name)
21 : KisWidgetWithIdleTask<QWidget>(parent)
22{
23 setObjectName(name);
24
25 m_channelTable = new QTableView();
26 m_model = new ChannelModel(this);
27 m_channelTable->setModel(m_model);
28 m_channelTable->setShowGrid(false);
29 m_channelTable->horizontalHeader()->setStretchLastSection(true);
30 m_channelTable->verticalHeader()->setVisible(false);
31 m_channelTable->horizontalHeader()->setVisible(false);
32 m_channelTable->setSelectionBehavior( QAbstractItemView::SelectRows );
33
34 m_channelTable->setMinimumHeight(50);
35
36 // Use a layout so the widget gets resized properly
37 QGridLayout *layout = new QGridLayout();
38 layout->addWidget(m_channelTable);
39 this->setLayout(layout);
40
42 if (scroller){
43 connect(scroller, SIGNAL(stateChanged(QScroller::State)),
44 this, SLOT(slotScrollerStateChanged(QScroller::State)));
45 }
46
48}
49
51{
52 if(m_canvas == canvas)
53 return;
54 m_canvas = canvas;
55
57
59
60 if (m_canvas) {
61 connect(m_canvas->displayColorConverter(), SIGNAL(displayConfigurationChanged()), SLOT(startUpdateCanvasProjection()));
62 connect(m_model, SIGNAL(channelFlagsChanged()), m_canvas, SLOT(channelSelectionChanged()));
63 }
64}
65
70
72{
73 return
74 canvas->viewManager()->idleTasksManager()->
75 addIdleTaskWithGuard([this](KisImageSP image) {
76 const KisDisplayConfig config = m_canvas->displayColorConverter()->displayConfig();
77
78 const QSize previewSize = m_model->thumbnailSizeLimit();
79
82 previewSize, false, config.profile,
83 config.intent, config.conversionFlags);
84
85 connect(strategy, SIGNAL(thumbnailsUpdated(QVector<QImage>, const KoColorSpace*)), this, SLOT(updateImageThumbnails(QVector<QImage>, const KoColorSpace*)));
86
87 return strategy;
88 });
89}
90
92{
93 m_model->setChannelThumbnails(channels, cs);
94 m_channelTable->resizeRowsToContents();
95 m_channelTable->resizeColumnsToContents();
96}
97
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void slotScrollerStateChanged(QScroller::State state)
KisIdleTasksManager::TaskGuard registerIdleTask(KisCanvas2 *canvas) override
void clearCachedState() override
void setCanvas(KisCanvas2 *canvas) override
ChannelDockerWidget(QWidget *parent=0, const char *name=0)
void updateImageThumbnails(const QVector< QImage > &channels, const KoColorSpace *cs)
void setCanvas(KisCanvas2 *canvas)
void rowActivated(const QModelIndex &index)
void setChannelThumbnails(const QVector< QImage > &channels, const KoColorSpace *cs)
QSize thumbnailSizeLimit() const
KisDisplayColorConverter displayColorConverter
KisViewManager * viewManager() const
KisDisplayConfig This class keeps track of the color management configuration for image to display....
KoColorConversionTransformation::ConversionFlags conversionFlags
const KoColorProfile * profile
KoColorConversionTransformation::Intent intent
KisPaintDeviceSP projection() const
QRect bounds() const override
KisIdleTasksManager * idleTasksManager()
virtual void setCanvas(KisCanvas2 *canvas)
KRITAWIDGETUTILS_EXPORT QScroller * createPreconfiguredScroller(QAbstractScrollArea *target)