00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "kis_control_frame.h"
00025
00026 #include <stdlib.h>
00027
00028 #include <QApplication>
00029 #include <QLayout>
00030 #include <QTabWidget>
00031 #include <QFrame>
00032 #include <QWidget>
00033 #include <QEvent>
00034 #include <QHBoxLayout>
00035 #include <QKeyEvent>
00036 #include <QMenu>
00037
00038 #include <kglobalsettings.h>
00039 #include <klocale.h>
00040 #include <kaction.h>
00041 #include <kactioncollection.h>
00042 #include <KoDualColorButton.h>
00043 #include <KoAbstractGradient.h>
00044 #include <KoResourceItemChooser.h>
00045 #include <KoResourceServer.h>
00046 #include <KoResourceServerAdapter.h>
00047 #include <KoResourceServerProvider.h>
00048
00049 #include "kis_pattern.h"
00050 #include "kis_resource_server_provider.h"
00051 #include "kis_canvas_resource_provider.h"
00052
00053 #include "widgets/kis_iconwidget.h"
00054
00055 #include "widgets/kis_gradient_chooser.h"
00056 #include "kis_view2.h"
00057 #include "kis_config.h"
00058 #include "kis_paintop_box.h"
00059 #include "kis_custom_pattern.h"
00060 #include "widgets/kis_pattern_chooser.h"
00061 #include "kis_popup_palette.h"
00062 #include "ko_favorite_resource_manager.h"
00063
00064
00065 KisControlFrame::KisControlFrame(KisView2 * view, const char* name)
00066 : QObject(view)
00067 , m_view(view)
00068 , m_patternWidget(0)
00069 , m_gradientWidget(0)
00070 , m_patternChooserPopup(0)
00071 , m_gradientChooserPopup(0)
00072 , m_paintopBox(0)
00073 {
00074 setObjectName(name);
00075 KisConfig cfg;
00076 m_font = KGlobalSettings::generalFont();
00077
00078 m_patternWidget = new KisIconWidget(view, "patterns");
00079 m_patternWidget->setText(i18n("Fill Patterns"));
00080 m_patternWidget->setToolTip(i18n("Fill Patterns"));
00081 m_patternWidget->setFixedSize(26, 26);
00082 KAction * action = new KAction(i18n("&Patterns"), this);
00083 view->actionCollection()->addAction("patterns", action);
00084 action->setDefaultWidget(m_patternWidget);
00085
00086 m_gradientWidget = new KisIconWidget(view, "gradients");
00087 m_gradientWidget->setText(i18n("Gradients"));
00088 m_gradientWidget->setToolTip(i18n("Gradients"));
00089 m_gradientWidget->setFixedSize(26, 26);
00090 action = new KAction(i18n("&Gradients"), this);
00091 view->actionCollection()->addAction("gradients", action);
00092 action->setDefaultWidget(m_gradientWidget);
00093
00094
00095 KoDualColorButton * dual = new KoDualColorButton(view->resourceProvider()->fgColor(), view->resourceProvider()->bgColor(), view, view);
00096 action = new KAction(i18n("&Color"), this);
00097 view->actionCollection()->addAction("dual", action);
00098 action->setDefaultWidget(dual);
00099 connect(dual, SIGNAL(foregroundColorChanged(const KoColor &)), view->resourceProvider(), SLOT(slotSetFGColor(const KoColor &)));
00100 connect(dual, SIGNAL(backgroundColorChanged(const KoColor &)), view->resourceProvider(), SLOT(slotSetBGColor(const KoColor &)));
00101 connect(view->resourceProvider(), SIGNAL(sigFGColorChanged(const KoColor &)), dual, SLOT(setForegroundColor(const KoColor &)));
00102 connect(view->resourceProvider(), SIGNAL(sigBGColorChanged(const KoColor &)), dual, SLOT(setBackgroundColor(const KoColor &)));
00103 dual->setFixedSize(26, 26);
00104
00105
00106
00107 createPatternsChooser(m_view);
00108 createGradientsChooser(m_view);
00109
00110 m_patternWidget->setPopupWidget(m_patternChooserPopup);
00111 m_gradientWidget->setPopupWidget(m_gradientChooserPopup);
00112
00113 m_paintopBox = new KisPaintopBox(view, view, "paintopbox");
00114 action = new KAction(i18n("&Painter's Tools"), this);
00115 view->actionCollection()->addAction("paintops", action);
00116 action->setDefaultWidget(m_paintopBox);
00117
00118
00119 m_view->setFavoriteResourceManager(m_paintopBox);
00120
00121 m_paletteButton = new QPushButton("Save to Palette");
00122 connect(m_paletteButton, SIGNAL(clicked()), this, SLOT(slotSaveToFavouriteBrushes()));
00123 action = new KAction(i18n("&Palette"), this);
00124 view->actionCollection()->addAction("palette_manager", action);
00125 action->setDefaultWidget(m_paletteButton);
00126
00127 }
00128
00129
00130 void KisControlFrame::slotSetPattern(KisPattern * pattern)
00131 {
00132 m_patternWidget->slotSetItem(pattern);
00133 }
00134
00135 void KisControlFrame::slotSetGradient(KoAbstractGradient * gradient)
00136 {
00137 m_gradientWidget->slotSetItem(gradient);
00138 }
00139
00140 void KisControlFrame::createPatternsChooser(KisView2 * view)
00141 {
00142 m_patternChooserPopup = new QWidget(m_patternWidget);
00143 m_patternChooserPopup->setObjectName("pattern_chooser_popup");
00144 QHBoxLayout * l2 = new QHBoxLayout(m_patternChooserPopup);
00145 l2->setObjectName("patternpopuplayout");
00146 l2->setMargin(2);
00147 l2->setSpacing(2);
00148
00149 m_patternsTab = new QTabWidget(m_patternChooserPopup);
00150 m_patternsTab->setObjectName("patternstab");
00151 m_patternsTab->setFocusPolicy(Qt::NoFocus);
00152 m_patternsTab->setFont(m_font);
00153 m_patternsTab->setContentsMargins(1, 1, 1, 1);
00154 l2->addWidget(m_patternsTab);
00155
00156 KisPatternChooser * chooser = new KisPatternChooser(m_patternChooserPopup);
00157 chooser->setFont(m_font);
00158 m_patternsTab->addTab(chooser, i18n("Patterns"));
00159
00160 KisCustomPattern* customPatterns = new KisCustomPattern(0, "custompatterns",
00161 i18n("Custom Pattern"), m_view);
00162 customPatterns->setFont(m_font);
00163 m_patternsTab->addTab(customPatterns, i18n("Custom Pattern"));
00164
00165 connect(chooser, SIGNAL(resourceSelected(KoResource*)),
00166 view->resourceProvider(), SLOT(slotPatternActivated(KoResource*)));
00167
00168 connect(customPatterns, SIGNAL(activatedResource(KoResource*)),
00169 view->resourceProvider(), SLOT(slotPatternActivated(KoResource*)));
00170
00171 connect(view->resourceProvider(), SIGNAL(sigPatternChanged(KisPattern *)),
00172 this, SLOT(slotSetPattern(KisPattern *)));
00173
00174 chooser->setCurrentItem(0, 0);
00175 if (chooser->currentResource())
00176 view->resourceProvider()->slotPatternActivated(chooser->currentResource());
00177
00178 }
00179
00180 void KisControlFrame::slotSaveToFavouriteBrushes()
00181 {
00182 if(! m_view->favoriteResourceManager())
00183 {
00184 qDebug() << "favoriteResourceManager is not instantiated";
00185 m_view->setFavoriteResourceManager(m_paintopBox);
00186 }
00187 else {
00188 m_view->favoriteResourceManager()->showPaletteManager();
00189 }
00190 }
00191
00192 void KisControlFrame::createGradientsChooser(KisView2 * view)
00193 {
00194 m_gradientChooserPopup = new QWidget(m_gradientWidget);
00195 m_gradientChooserPopup->setObjectName("gradient_chooser_popup");
00196 QHBoxLayout * l2 = new QHBoxLayout(m_gradientChooserPopup);
00197 l2->setObjectName("gradientpopuplayout");
00198 l2->setMargin(2);
00199 l2->setSpacing(2);
00200
00201 m_gradientTab = new QTabWidget(m_gradientChooserPopup);
00202 m_gradientTab->setObjectName("gradientstab");
00203 m_gradientTab->setFocusPolicy(Qt::NoFocus);
00204 m_gradientTab->setFont(m_font);
00205 m_gradientTab->setContentsMargins(1, 1, 1, 1);
00206 l2->addWidget(m_gradientTab);
00207
00208 m_gradientChooser = new KisGradientChooser(m_view, m_gradientChooserPopup);
00209 m_gradientChooser->setFont(m_font);
00210 m_gradientTab->addTab(m_gradientChooser, i18n("Gradients"));
00211
00212 connect(m_gradientChooser, SIGNAL(resourceSelected(KoResource*)),
00213 view->resourceProvider(), SLOT(slotGradientActivated(KoResource*)));
00214
00215 connect(view->resourceProvider(), SIGNAL(sigGradientChanged(KoAbstractGradient *)),
00216 this, SLOT(slotSetGradient(KoAbstractGradient *)));
00217
00218 m_gradientChooser->setCurrentItem(0, 0);
00219 if (m_gradientChooser->currentResource())
00220 view->resourceProvider()->slotGradientActivated(m_gradientChooser->currentResource());
00221 }
00222
00223 #include "kis_control_frame.moc"
00224