Commit 94ae327d authored by Boudewijn Rempt's avatar Boudewijn Rempt

FEATURE: Krita now works better for people with low res screens: five dockers have been

transformed in very usable popups. (Todo: focus handling, location of popup if toolbar
not on top-left)
* Fixed scrolling with scrollwheel better
* Removed unnecessary parameter from convolution painter
* Removed unnecessary .rc file from color strategies
* Made toolbox tighter and nicer (still not bugfree, though).

svn path=/trunk/koffice/; revision=442189
parent 627839d7
......@@ -91,6 +91,7 @@ Import/Export
User Interface
* Add out-of-gamut selection
* Fix crash with tablet because of tool refactoring.
* Fix layout problems in tool option widgets.
* Disable dragging the toolbox from dock position to dock position (see Karbon)
......
......@@ -67,13 +67,6 @@ KisConvolutionPainter::KisConvolutionPainter(KisPaintDeviceSP device) : super(de
void KisConvolutionPainter::applyMatrix(KisMatrix3x3* matrix, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h)
{
applyMatrix(matrix, m_device, x, y, w, h);
}
void KisConvolutionPainter::applyMatrix(KisMatrix3x3 * matrix, KisPaintDeviceSP src, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h)
{
KisKernel * kernel = new KisKernel();
kernel -> width = 3;
kernel -> height = 3;
......@@ -87,22 +80,22 @@ void KisConvolutionPainter::applyMatrix(KisMatrix3x3 * matrix, KisPaintDeviceSP
kernel -> data[row * 3 + col] = matrix[0][col][row];
}
}
applyMatrix(kernel, src, x, y, w, h);
applyMatrix(kernel, x, y, w, h);
}
void KisConvolutionPainter::applyMatrix(KisKernel * kernel, KisPaintDeviceSP src, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h,
void KisConvolutionPainter::applyMatrix(KisKernel * kernel, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h,
KisConvolutionBorderOp borderOp,
enumChannelFlags channelFlags )
{
// Make the area we cover as small as possible
if (src -> hasSelection()) {
if (m_device -> hasSelection()) {
if (src -> selection() -> isTotallyUnselected(QRect(x, y, w, h))) {
if (m_device -> selection() -> isTotallyUnselected(QRect(x, y, w, h))) {
return;
}
QRect r = src -> selection() -> extent().intersect(QRect(x, y, w, h));
QRect r = m_device -> selection() -> extent().intersect(QRect(x, y, w, h));
x = r.x();
y = r.y();
w = r.width();
......@@ -123,7 +116,7 @@ void KisConvolutionPainter::applyMatrix(KisKernel * kernel, KisPaintDeviceSP src
int lastProgressPercent = 0;
emit notifyProgress(this, 0);
KisStrategyColorSpaceSP cs = src->colorStrategy();
KisStrategyColorSpaceSP cs = m_device->colorStrategy();
// Determine whether we convolve border pixels, or not.
switch (borderOp) {
......@@ -150,7 +143,7 @@ void KisConvolutionPainter::applyMatrix(KisKernel * kernel, KisPaintDeviceSP src
// col = the x position of the pixel we want to change
int col = x;
KisHLineIteratorPixel hit = src -> createHLineIterator(x, row, w, true);
KisHLineIteratorPixel hit = m_device -> createHLineIterator(x, row, w, true);
while (!hit.isDone()) {
if (hit.isSelected()) {
......@@ -165,7 +158,7 @@ void KisConvolutionPainter::applyMatrix(KisKernel * kernel, KisPaintDeviceSP src
// kw = the width of the kernel
// Fill the cache with pointers to the pixels under the kernel
KisHLineIteratorPixel kit = src -> createHLineIterator(col - kd, (row - kd) + krow, kw, false);
KisHLineIteratorPixel kit = m_device -> createHLineIterator(col - kd, (row - kd) + krow, kw, false);
while (!kit.isDone()) {
pixelPtrCache[i] = const_cast<Q_UINT8 *>(kit.oldRawData());
++kit;
......
......@@ -78,12 +78,6 @@ public:
*/
void applyMatrix(KisMatrix3x3* matrix, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h);
/**
* Convolve all channels in src using the specified matrix. Only the first matrix of the array is
* used.
*/
void applyMatrix(KisMatrix3x3* matrix, KisPaintDeviceSP src, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h);
/**
* Convolve all channels in src using the specified kernel; there is only one kernel for all
* channels possible. By default the the border pixels are not convolved, that is, convolving
......@@ -97,7 +91,7 @@ public:
*
* Note that we do not (currently) support different kernels for different channels _or_ channel types.
*/
void applyMatrix(KisKernel * kernel, KisPaintDeviceSP src, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h,
void applyMatrix(KisKernel * kernel, Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h,
KisConvolutionBorderOp borderOp = BORDER_AVOID,
enumChannelFlags channelFlags = FLAG_COLOR);
......
......@@ -655,7 +655,7 @@ void KisSelectionManager::feather()
// Make sure we've got enough space around the edges.
rect = QRect(rect.x() - 3, rect.y() - 3, rect.width() + 3, rect.height() + 3);
painter.applyMatrix(&k, selection.data(), rect.x(), rect.y(), rect.width(), rect.height(), BORDER_AVOID, FLAG_ALPHA);
painter.applyMatrix(&k, rect.x(), rect.y(), rect.width(), rect.height(), BORDER_AVOID, FLAG_ALPHA);
painter.end();
if (img -> undoAdapter())
......
......@@ -42,6 +42,7 @@
#include <qstringlist.h>
// KDE
#include <kglobalsettings.h>
#include <dcopobject.h>
#include <kaction.h>
#include <kcolordialog.h>
......@@ -137,8 +138,6 @@ KisView::KisView(KisDoc *doc, KisUndoAdapter *adapter, QWidget *parent, const ch
else
setXMLFile("krita.rc");
createToolBox();
m_paletteManager = new KoPaletteManager(this, actionCollection(), "Krita palette manager");
Q_CHECK_PTR(m_paletteManager);
Q_ASSERT(m_paletteManager);
......@@ -201,6 +200,13 @@ KisView::KisView(KisDoc *doc, KisUndoAdapter *adapter, QWidget *parent, const ch
m_statusBarProfileLabel = 0;
m_HDRExposure = 0;
createToolBox();
createLayerBox();
createPaintopBox();
// Now the view plugins will be loaded.
setInstance(KisFactory::global());
setupCanvas();
......@@ -214,12 +220,6 @@ KisView::KisView(KisDoc *doc, KisUndoAdapter *adapter, QWidget *parent, const ch
m_inputDevice = INPUT_DEVICE_MOUSE;
m_toolManager->setUp(m_toolBox, m_paletteManager, actionCollection());
createLayerBox();
createPaintopBox();
connect(m_doc, SIGNAL(imageListUpdated()), SLOT(docImageListUpdate()));
......@@ -231,6 +231,8 @@ KisView::KisView(KisDoc *doc, KisUndoAdapter *adapter, QWidget *parent, const ch
m_tabletEventTimer.start();
m_toolBox->setBarPos(KToolBar::Left);
m_toolManager->setUp(m_toolBox, m_paletteManager, actionCollection());
}
......@@ -282,7 +284,7 @@ void KisView::createPaintopBox()
{
m_paintopBox = new KisPaintopBox(this, "paintopbox");
m_paintopBox->setCaption(i18n("Brushes and stuff"));
paletteManager()->addWidget(m_paintopBox, "brushes and stuff", "layerpalette" );
paletteManager()->addWidget(m_paintopBox, i18n("Brushes and tools"), "paintopbox" );
}
......@@ -608,11 +610,11 @@ void KisView::resizeEvent(QResizeEvent *)
paintView(viewToWindow(drawRect));
}
}
int fontheight = QFontMetrics(KGlobalSettings::generalFont()).height() * 3;
m_vScroll -> setPageStep(drawH);
m_vScroll -> setLineStep(drawH/4);
m_vScroll -> setLineStep(fontheight);
m_hScroll -> setPageStep(drawW);
m_hScroll -> setLineStep(drawW/4);
m_hScroll -> setLineStep(fontheight);
if (m_vScroll -> isVisible())
m_vRuler -> updateVisibleArea(0, m_vScroll -> value());
......
......@@ -80,12 +80,9 @@ KoPalette::KoPalette(KoView * parent, const char * name)
layout() -> setMargin(0);
// Compute a font that's smaller that the general font
m_font = KGlobalSettings::toolBarFont();
QFont f2 = KGlobalSettings::generalFont();
if (m_font.pointSize() >= f2.pointSize() ) {
float ps = f2.pointSize() * 0.8;
m_font.setPointSize((int)ps);
}
m_font = KGlobalSettings::generalFont();
float ps = m_font.pointSize() * 0.7;
m_font.setPointSize((int)ps);
setFont(m_font);
#if 0 // Photoshop doesn't shade either, let's try for minimum size
......
......@@ -157,4 +157,7 @@
<ToolBar name="krita" position="left"><Text>Krita</Text>
</ToolBar>
<ToolBar name="resources" position="left"><Text>Resources</Text>
</ToolBar>
</kpartgui>
# location for the rc file
#kritarcdir = $(kde_datadir)/krita/kpartplugins
# rc file containing the GUI for the plugin
#kritarc_DATA = rgb_u16_plugin.rc
# Install the desktop file needed to detect the plugin
kde_services_DATA = krita_rgb_u16_plugin.desktop
#EXTRA_DIST = $(kritarc_DATA)
......
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<kpartgui library="krita_rgb_u16_plugin" version="1">
<Menu name="Image"><text>&amp;Image</text>
<Menu name="Mode"><text>&amp;Mode</text>
<Action name="convert to RGB(A) (16-bit integer)"/>
</Menu>
</Menu>
</kpartgui>
......@@ -38,12 +38,13 @@ void KisConvolutionFilter::process(KisPaintDeviceSP src,
KisFilterConfiguration* configuration,
const QRect& rect)
{
// XXX: We don't do anything with src here -- carefully test this for problems.
KisConvolutionPainter painter( dst );
if (m_progressDisplay)
m_progressDisplay->setSubject( &painter, true, true );
KisMatrix3x3* amatrixes = ((KisConvolutionConfiguration*)configuration)->matrixes();
painter.applyMatrix(amatrixes, src, rect.x(), rect.y(), rect.width(), rect.height());
painter.applyMatrix(amatrixes, rect.x(), rect.y(), rect.width(), rect.height());
if (painter.cancelRequested()) {
cancel();
......
......@@ -24,6 +24,7 @@ kritadefaultdockers_la_SOURCES = defaultdockers.cc \
kis_palette_widget.cc \
kis_pattern_chooser.cc \
kis_resource_mediator.cc \
kis_controlframe.cc \
wdgautobrush.ui \
wdgautogradient.ui \
wdgbirdeye.ui
......@@ -38,6 +39,7 @@ noinst_HEADERS = defaultdockers.h \
kis_gradient_chooser.h \
kis_palette_widget.h \
kis_pattern_chooser.h \
kis_controlframe.h \
kis_resource_mediator.h
kritadefaultdockers_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
......
......@@ -22,15 +22,17 @@
#include <qclipboard.h>
#include <qdockwindow.h>
#include <qwidget.h>
#include <qcombobox.h>
#include <kaction.h>
#include <kstdaction.h>
#include <klocale.h>
#include <kdebug.h>
#include <kgenericfactory.h>
#include <ktoolbar.h>
#include <koPaletteManager.h>
#include <kis_toolbox.h>
#include <kis_config.h>
#include <kis_types.h>
#include <kis_view.h>
......@@ -50,11 +52,11 @@
#include "kis_autogradient.h"
#include "kis_birdeye_box.h"
#include "kis_color.h"
//#include "kis_controlframe.h"
#include "kis_controlframe.h"
#include "kis_factory.h"
#include "kis_pattern.h"
#include "kis_brush_chooser.h"
//#include "kis_brush_chooser.h"
#include "kis_pattern_chooser.h"
#include "kis_gradient_chooser.h"
......@@ -91,16 +93,8 @@ KritaDefaultDockers::KritaDefaultDockers(QObject *parent, const char *name, cons
createRGBWidget(m_view);
createGrayWidget(m_view);
createPaletteWidget(m_view);
createControlFrame(m_view);
createBrushesWidget(m_view);
createAutoBrush(m_view);
createAutoGradient(m_view);
createGradientsWidget(m_view);
createPatternWidget(m_view);
m_paletteManager->showWidget("brushes");
m_paletteManager->showWidget("hsvwidget");
m_paletteManager->showWidget("layerbox");
m_paletteManager->showWidget(krita::TOOL_OPTION_WIDGET);
......@@ -111,6 +105,14 @@ KritaDefaultDockers::~KritaDefaultDockers()
{
}
void KritaDefaultDockers::createControlFrame(KisView * view)
{
m_controlWidget = new KisControlFrame(view, view, "control frame");
m_controlWidget->setCaption(i18n("Current stuff"));
//m_paletteManager->addWidget( m_controlWidget, "controlwidget", krita::CONTROL_PALETTE);
}
void KritaDefaultDockers::createBirdEyeBox(KisView * view)
{
m_birdEyeBox = new KisBirdEyeBox(view);
......@@ -119,21 +121,6 @@ void KritaDefaultDockers::createBirdEyeBox(KisView * view)
connect(m_birdEyeBox, SIGNAL(exposureChanged(float)), view, SLOT(setHDRExposure(float)));
}
void KritaDefaultDockers::createAutoBrush(KisView * view)
{
m_autobrush = new KisAutobrush(view, "autobrush", i18n("Autobrush"));
m_paletteManager->addWidget( m_autobrush, "autobrush", krita::PAINTBOX, INT_MAX, PALETTE_TOOLBOX);
connect(m_autobrush, SIGNAL(activatedResource(KisResource*)), m_view, SLOT(brushActivated(KisResource*)));
}
void KritaDefaultDockers::createAutoGradient(KisView * view)
{
m_autogradient = new KisAutogradient(view, "autogradient", i18n("Autogradient"));
m_paletteManager->addWidget( m_autogradient, "autogradient", krita::PAINTBOX, INT_MAX, PALETTE_TOOLBOX);
connect(m_autogradient, SIGNAL(activatedResource(KisResource*)), m_view, SLOT(gradientActivated(KisResource*)));
}
void KritaDefaultDockers::createHSVWidget(KisView * view)
{
......@@ -179,102 +166,4 @@ void KritaDefaultDockers::createPaletteWidget(KisView * view)
m_paletteManager->addWidget( m_palettewidget, "palettewidget", krita::COLORBOX);
}
void KritaDefaultDockers::createPatternWidget(KisView * view)
{
KisPatternChooser* patternChooser = new KisPatternChooser(view, "pattern chooser");
patternChooser -> setCaption(i18n("Patterns"));
m_patternMediator = new KisResourceMediator( patternChooser, view);
connect( m_patternMediator, SIGNAL(activatedResource(KisResource*)),
view, SLOT(patternActivated(KisResource*)));
KisResourceServerBase* rServer;
rServer = KisFactory::rServerRegistry() -> get("PatternServer");
m_patternMediator -> connectServer(rServer);
m_paletteManager->addWidget( m_patternMediator->chooserWidget(), "patterns", krita::PAINTBOX, INT_MAX, PALETTE_TOOLBOX);
//KritaDefaultDockers::connect(view, SIGNAL(patternChanged(KisPattern *)), this, SLOT(slotPatternChanged( KisPattern *)));
}
void KritaDefaultDockers::createBrushesWidget(KisView * view)
{
KisBrushChooser* brushChooser = new KisBrushChooser(view, "brush_chooser");
brushChooser -> setCaption(i18n("Brushes"));
m_brushMediator = new KisResourceMediator( brushChooser, view);
connect(m_brushMediator, SIGNAL(activatedResource(KisResource*)),
view, SLOT(brushActivated(KisResource*)));
KisResourceServerBase* rServer;
rServer = KisFactory::rServerRegistry() -> get("ImagePipeBrushServer");
m_brushMediator -> connectServer(rServer);
rServer = KisFactory::rServerRegistry() -> get("BrushServer");
m_brushMediator -> connectServer(rServer);
m_paletteManager->addWidget( m_brushMediator->chooserWidget(), "brushes", krita::PAINTBOX, INT_MAX, PALETTE_TOOLBOX);
//KritaDefaultDockers::connect(view, SIGNAL(brushChanged(KisBrush *)), this, SLOT(slotBrushChanged( KisBrush *)));
}
void KritaDefaultDockers::createGradientsWidget(KisView * view)
{
KisGradientChooser* gradientChooser = new KisGradientChooser(view, "gradient chooser");
gradientChooser -> setCaption(i18n("Gradients"));
m_gradientMediator = new KisResourceMediator( gradientChooser, view);
connect(m_gradientMediator, SIGNAL(activatedResource(KisResource*)),
view, SLOT(gradientActivated(KisResource*)));
KisResourceServerBase* rServer;
rServer = KisFactory::rServerRegistry() -> get("GradientServer");
m_gradientMediator -> connectServer(rServer);
m_paletteManager->addWidget( m_gradientMediator->chooserWidget(), "gradients", krita::PAINTBOX, INT_MAX, PALETTE_TOOLBOX);
//KritaDefaultDockers::connect(view, SIGNAL(gradientChanged(KisGradient *)), this, SLOT(slotGradientChanged( KisGradient *)));
}
#if 0
void KritaDefaultDockers::slotBrushChanged(KisBrush * brush)
{
KisIconItem *item;
if((item = m_brushMediator -> itemFor(brush)))
{
if (m_controlWidget) m_controlWidget -> slotSetBrush(item);
} else {
if (m_controlWidget) m_controlWidget -> slotSetBrush( new KisIconItem(brush) );
}
}
void KritaDefaultDockers::slotGradientChanged(KisGradient * gradient)
{
KisIconItem *item;
if (!gradient || ! m_controlWidget)
return;
if ( (item = m_gradientMediator -> itemFor(gradient)) )
m_controlWidget -> slotSetGradient(item);
else
m_controlWidget -> slotSetGradient( new KisIconItem(gradient) );
}
void KritaDefaultDockers::slotPatternChanged(KisPattern * pattern)
{
KisIconItem *item;
if (!pattern || ! m_controlWidget)
return;
if ( (item = m_gradientMediator -> itemFor(pattern)) )
m_controlWidget -> slotSetGradient(item);
else
m_controlWidget -> slotSetGradient( new KisIconItem(pattern) );
}
#endif
#include "defaultdockers.moc"
......@@ -29,15 +29,12 @@ class KisView;
class KisBrush;
class KisPattern;
class KisBirdEyeBox;
class KisAutoBrush;
class KisTextBrush;
class KisAutoGradient;
class KisHSVWidget;
class KisRGBWidget;
class KisGrayWidget;
class KisPaletteWidget;
class KisResourceMediator;
//class KisControlFrame;
class KisControlFrame;
class KritaDefaultDockers : public KParts::Plugin
{
......@@ -48,44 +45,27 @@ public:
virtual ~KritaDefaultDockers();
private:
//void createControlFrame(KisView * view);
void createControlFrame(KisView * view);
void createBirdEyeBox(KisView * view);
void createAutoBrush(KisView * view);
void createAutoGradient(KisView * view);
void createHSVWidget(KisView * view);
void createRGBWidget(KisView * view);
void createPaletteWidget(KisView * view);
void createGrayWidget(KisView * view);
void createPaletteWidget(KisView * view);
void createPatternWidget(KisView * view);
void createBrushesWidget(KisView * view);
void createGradientsWidget(KisView * view);
#if 0
public XXXslots:
void slotBrushChanged(KisBrush * brush);
void slotGradientChanged(KisGradient * gradient);
void slotPatternChanged(KisPattern * pattern);
#endif
private:
KisView * m_view;
KoPaletteManager * m_paletteManager;
#if 0
KisControlFrame * m_controlWidget;
#endif
KisBirdEyeBox * m_birdEyeBox;
KisAutobrush *m_autobrush;
KisAutogradient* m_autogradient;
KisBirdEyeBox * m_birdEyeBox;
KisHSVWidget *m_hsvwidget;
KisRGBWidget *m_rgbwidget;
KisGrayWidget *m_graywidget;
KisPaletteWidget *m_palettewidget;
KisResourceMediator *m_brushMediator;
KisResourceMediator *m_patternMediator;
KisResourceMediator *m_gradientMediator;
};
......
......@@ -139,9 +139,15 @@ KisAutobrush::KisAutobrush(QWidget *parent, const char* name, const QString& cap
paramChanged();
}
connect(brushPreview, SIGNAL(clicked()), SLOT(paramChanged()));
}
void KisAutobrush::activate()
{
paramChanged();
}
void KisAutobrush::paramChanged()
{
......
......@@ -29,6 +29,8 @@ class KisAutobrush : public KisWdgAutobrush
Q_OBJECT
public:
KisAutobrush(QWidget *parent, const char* name, const QString& caption);
void activate();
signals:
void activatedResource(KisResource *r);
......
......@@ -46,6 +46,12 @@ KisAutogradient::KisAutogradient(QWidget *parent, const char* name, const QStrin
connect(intNumInputLeftOpacity, SIGNAL( valueChanged(int) ), SLOT( slotChangedLeftOpacity(int) ));
// intNumInputRightOpacity -> setRange( 0, 100, false);
connect(intNumInputRightOpacity, SIGNAL( valueChanged(int) ), SLOT( slotChangedRightOpacity(int) ));
}
void KisAutogradient::activate()
{
paramChanged();
}
void KisAutogradient::slotSelectedSegment(KisGradientSegment* segment)
......
......@@ -30,6 +30,7 @@ class KisAutogradient : public KisWdgAutogradient
public:
KisAutogradient(QWidget *parent, const char* name, const QString& caption);;
void activate();
signals:
void activatedResource(KisResource *r);
private:
......
......@@ -27,7 +27,8 @@
#include "kis_icon_item.h"
#include "kis_brush.h"
KisBrushChooser::KisBrushChooser(QWidget *parent, const char *name) : super(parent, name)
KisBrushChooser::KisBrushChooser(QWidget *parent, const char *name)
: super(parent, name)
{
m_lbSpacing = new QLabel(i18n("Spacing: "), this);
m_slSpacing = new KisDoubleWidget(0.01, 10, this, "double_widget");
......
......@@ -25,21 +25,45 @@
#include <qframe.h>
#include <qtabwidget.h>
#include <qdockwindow.h>
#include <kdualcolorbutton.h>
#include <qcolor.h>
#include <koFrameButton.h>
class KDualColorButton;
class QWidget;
class KToolBar;
class KoIconItem;
class KisIconWidget;
class KisGradientWidget;
class KisAutobrush;
class KisAutogradient;
class KisBrush;
class KisPattern;
class KisBrushChooser;
class KisGradient;
class KisColor;
class KisGradientChooser;
class KisItemChooser;
class KisPattern;
class KisResourceMediator;
class KisView;
class KisPopupFrame : public QFrame {
Q_OBJECT
public:
KisPopupFrame(QWidget * parent, const char * name = 0, WFlags f = 0)
: QFrame(parent, name, f) {};
public:
void setChooser(KisItemChooser * chooser) { m_chooser = chooser; };
KisItemChooser * chooser() { return m_chooser; };
private:
KisItemChooser * m_chooser;
};
enum ActiveColor { ac_Foreground, ac_Background};
/**
* Control Frame - status display with access to
......@@ -49,32 +73,54 @@ class KisControlFrame : public QFrame {
Q_OBJECT
public:
KisControlFrame(QWidget *parent = 0, const char *name = 0 );
ActiveColor activeColor();
KisControlFrame(KisView * view, QWidget *parent = 0, const char *name = 0 );
public slots:
void slotSetFGColor(const KisColor& c);
void slotSetBGColor(const KisQColor& c);
void slotSetBrush(KoIconItem *item);
void slotSetPattern(KoIconItem *item);
void slotSetGradient(KoIconItem *item);
signals:
void fgColorChanged(const KisQColor& c);
void bgColorChanged(const KisQColor& c);
void activeColorChanged(ActiveColor ac);
void slotShowBrushChooser();
void slotShowPatternChooser();
void slotShowGradientChooser();
void slotBrushChanged(KisBrush * brush);
void slotPatternChanged(KisPattern * pattern);
void slotGradientChanged(KisGradient * gradient);
private:
void createBrushesChooser(KisView * view);
void createPatternsChooser(KisView * view);
void createGradientsChooser(KisView * view);
protected slots:
void slotFGColorSelected(const KisQColor& c);
void slotBGColorSelected(const KisQColor& c);
void slotActiveColorChanged(KDualColorButton::DualColor dc);
private:
KDualColorButton *m_pColorButton;
KisIconWidget *m_pBrushWidget;