25#include <tqapplication.h>
27#include <tqtabwidget.h>
32#include <tdetoolbar.h>
33#include <tdemainwindow.h>
34#include <tdeglobalsettings.h>
35#include <kstandarddirs.h>
38#include <koFrameButton.h>
39#include <tdeactioncollection.h>
41#include "kis_resourceserver.h"
42#include "kis_controlframe.h"
43#include "kis_resource_mediator.h"
44#include "kis_itemchooser.h"
45#include "kis_pattern_chooser.h"
46#include "kis_gradient_chooser.h"
47#include "kis_icon_item.h"
48#include "kis_iconwidget.h"
50#include "kis_pattern.h"
51#include "kis_gradient.h"
52#include "kis_brush_chooser.h"
54#include "kis_autobrush.h"
55#include "kis_autogradient.h"
56#include "kis_config.h"
57#include "kis_paintop_box.h"
58#include "kis_custom_brush.h"
59#include "kis_custom_pattern.h"
61#include "kis_text_brush.h"
63KisPopupFrame::KisPopupFrame(TQWidget * parent,
const char* name)
64 : TQPopupMenu(parent, name)
66 setFocusPolicy(TQWidget::StrongFocus);
69void KisPopupFrame::keyPressEvent(TQKeyEvent * e)
71 if (e->key()== TQt::Key_Escape)
82KisControlFrame::KisControlFrame( TDEMainWindow * , KisView * view,
const char* name )
83 : TQObject(view, name)
89 , m_brushChooserPopup(0)
90 , m_patternChooserPopup(0)
91 , m_gradientChooserPopup(0)
93 , m_patternMediator(0)
94 , m_gradientMediator(0)
99 m_font = TDEGlobalSettings::generalFont();
100 m_font.setPointSize((
int)cfg.dockerFontSize());
102 m_brushWidget =
new KisIconWidget(view,
"brushes");
103 m_brushWidget->setTextLabel( i18n(
"Brush Shapes") );
105 TDEAction * action =
new KWidgetAction(m_brushWidget,
110 view->actionCollection(),
114 m_patternWidget =
new KisIconWidget(view,
"patterns");
115 m_patternWidget->setTextLabel( i18n(
"Fill Patterns") );
116 action =
new KWidgetAction(m_patternWidget,
121 view->actionCollection(),
124 m_gradientWidget =
new KisIconWidget(view,
"gradients");
125 m_gradientWidget->setTextLabel( i18n(
"Gradients") );
126 action =
new KWidgetAction(m_gradientWidget,
131 view->actionCollection(),
134 m_paintopBox =
new KisPaintopBox( view, view,
"paintopbox" );
135 action =
new KWidgetAction(m_paintopBox,
136 i18n(
"&Painter's Tools"),
140 view->actionCollection(),
143 m_brushWidget->setFixedSize( 26, 26 );
144 m_patternWidget->setFixedSize( 26, 26 );
145 m_gradientWidget->setFixedSize( 26, 26 );
147 createBrushesChooser(m_view);
148 createPatternsChooser(m_view);
149 createGradientsChooser(m_view);
151 m_brushWidget->setPopup(m_brushChooserPopup);
152 m_brushWidget->setPopupDelay(1);
153 m_patternWidget->setPopup(m_patternChooserPopup);
154 m_patternWidget->setPopupDelay(1);
155 m_gradientWidget->setPopup(m_gradientChooserPopup);
156 m_gradientWidget->setPopupDelay(1);
160void KisControlFrame::slotSetBrush(KoIconItem *item)
163 m_brushWidget->slotSetItem(*item);
166void KisControlFrame::slotSetPattern(KoIconItem *item)
169 m_patternWidget->slotSetItem(*item);
172void KisControlFrame::slotSetGradient(KoIconItem *item)
175 m_gradientWidget->slotSetItem(*item);
178void KisControlFrame::slotBrushChanged(KisBrush * brush)
182 if((item = m_brushMediator->itemFor(brush)))
186 slotSetBrush(
new KisIconItem(brush) );
191void KisControlFrame::slotPatternChanged(KisPattern * pattern)
197 if ( (item = m_patternMediator->itemFor(pattern)) )
198 slotSetPattern(item);
200 slotSetPattern(
new KisIconItem(pattern) );
204void KisControlFrame::slotGradientChanged(KisGradient * gradient)
210 if ( (item = m_gradientMediator->itemFor(gradient)) )
211 slotSetGradient(item);
213 slotSetGradient(
new KisIconItem(gradient) );
216void KisControlFrame::createBrushesChooser(KisView * view)
219 m_brushChooserPopup =
new KisPopupFrame(m_brushWidget,
"brush_chooser_popup");
221 TQHBoxLayout * l =
new TQHBoxLayout(m_brushChooserPopup, 2, 2,
"brushpopuplayout");
223 TQTabWidget * m_brushesTab =
new TQTabWidget(m_brushChooserPopup,
"brushestab");
224 m_brushesTab->setTabShape(TQTabWidget::Triangular);
225 m_brushesTab->setFocusPolicy(TQWidget::NoFocus);
226 m_brushesTab->setFont(m_font);
227 m_brushesTab->setMargin(1);
229 l->add(m_brushesTab);
231 KisAutobrush * m_autobrush =
new KisAutobrush(m_brushesTab,
"autobrush", i18n(
"Autobrush"));
232 m_brushesTab->addTab( m_autobrush, i18n(
"Autobrush"));
233 connect(m_autobrush, TQ_SIGNAL(activatedResource(
KisResource*)), m_view, TQ_SLOT(brushActivated(
KisResource* )));
235 KisBrushChooser * m_brushChooser =
new KisBrushChooser(m_brushesTab,
"brush_chooser");
236 m_brushesTab->addTab( m_brushChooser, i18n(
"Predefined Brushes"));
238 KisCustomBrush* customBrushes =
new KisCustomBrush(m_brushesTab,
"custombrush",
239 i18n(
"Custom Brush"), m_view);
240 m_brushesTab->addTab( customBrushes, i18n(
"Custom Brush"));
241 connect(customBrushes, TQ_SIGNAL(activatedResource(
KisResource*)),
243#ifdef HAVE_TEXT_BRUSH
244 KisTextBrush* textBrushes =
new KisTextBrush(m_brushesTab,
"textbrush",
246 m_brushesTab->addTab( textBrushes, i18n(
"Text Brush"));
247 connect(textBrushes, TQ_SIGNAL(activatedResource(
KisResource*)),
251 m_brushChooser->setFont(m_font);
253 connect(m_brushMediator, TQ_SIGNAL(activatedResource(
KisResource*)), m_view, TQ_SLOT(brushActivated(
KisResource*)));
255 KisResourceServerBase* rServer;
256 rServer = KisResourceServerRegistry::instance()->get(
"ImagePipeBrushServer");
257 m_brushMediator->connectServer(rServer);
258 rServer = KisResourceServerRegistry::instance()->get(
"BrushServer");
259 m_brushMediator->connectServer(rServer);
261 KisControlFrame::connect(view, TQ_SIGNAL(brushChanged(KisBrush *)),
this, TQ_SLOT(slotBrushChanged( KisBrush *)));
262 m_brushChooser->setCurrent( 0 );
263 m_brushMediator->setActiveItem( m_brushChooser->currentItem() );
264 customBrushes->setResourceServer(rServer);
266 m_autobrush->activate();
269void KisControlFrame::createPatternsChooser(KisView * view)
271 m_patternChooserPopup =
new KisPopupFrame(m_patternWidget,
"pattern_chooser_popup");
273 TQHBoxLayout * l2 =
new TQHBoxLayout(m_patternChooserPopup, 2, 2,
"patternpopuplayout");
275 TQTabWidget * m_patternsTab =
new TQTabWidget(m_patternChooserPopup,
"patternstab");
276 m_patternsTab->setTabShape(TQTabWidget::Triangular);
277 m_patternsTab->setFocusPolicy(TQWidget::NoFocus);
278 m_patternsTab->setFont(m_font);
279 m_patternsTab->setMargin(1);
280 l2->add( m_patternsTab );
282 KisPatternChooser * chooser =
new KisPatternChooser(m_patternChooserPopup,
"pattern_chooser");
283 chooser->setFont(m_font);
284 chooser->setMinimumSize(200, 150);
285 m_patternsTab->addTab(chooser, i18n(
"Patterns"));
287 KisCustomPattern* customPatterns =
new KisCustomPattern(m_patternsTab,
"custompatterns",
288 i18n(
"Custom Pattern"), m_view);
289 customPatterns->setFont(m_font);
290 m_patternsTab->addTab( customPatterns, i18n(
"Custom Pattern"));
294 connect( m_patternMediator, TQ_SIGNAL(activatedResource(
KisResource*)), view, TQ_SLOT(patternActivated(
KisResource*)));
295 connect(customPatterns, TQ_SIGNAL(activatedResource(
KisResource*)),
298 KisResourceServerBase* rServer;
299 rServer = KisResourceServerRegistry::instance()->get(
"PatternServer");
300 m_patternMediator->connectServer(rServer);
302 KisControlFrame::connect(view, TQ_SIGNAL(patternChanged(KisPattern *)),
this, TQ_SLOT(slotPatternChanged( KisPattern *)));
303 chooser->setCurrent( 0 );
304 m_patternMediator->setActiveItem( chooser->currentItem() );
306 customPatterns->setResourceServer(rServer);
310void KisControlFrame::createGradientsChooser(KisView * view)
312 m_gradientChooserPopup =
new KisPopupFrame(m_gradientWidget,
"gradient_chooser_popup");
314 TQHBoxLayout * l2 =
new TQHBoxLayout(m_gradientChooserPopup, 2, 2,
"gradientpopuplayout");
316 TQTabWidget * m_gradientTab =
new TQTabWidget(m_gradientChooserPopup,
"gradientstab");
317 m_gradientTab->setTabShape(TQTabWidget::Triangular);
318 m_gradientTab->setFocusPolicy(TQWidget::NoFocus);
319 m_gradientTab->setFont(m_font);
320 m_gradientTab->setMargin(1);
322 l2->add( m_gradientTab);
324 KisGradientChooser * m_gradientChooser =
new KisGradientChooser(m_view, m_gradientChooserPopup,
"gradient_chooser");
325 m_gradientChooser->setFont(m_font);
326 m_gradientChooser->setMinimumSize(200, 150);
327 m_gradientTab->addTab( m_gradientChooser, i18n(
"Gradients"));
330 connect(m_gradientMediator, TQ_SIGNAL(activatedResource(
KisResource*)), view, TQ_SLOT(gradientActivated(
KisResource*)));
332 KisResourceServerBase* rServer;
333 rServer = KisResourceServerRegistry::instance()->get(
"GradientServer");
334 m_gradientMediator->connectServer(rServer);
336 connect(view, TQ_SIGNAL(gradientChanged(KisGradient *)),
this, TQ_SLOT(slotGradientChanged( KisGradient *)));
337 m_gradientChooser->setCurrent( 0 );
338 m_gradientMediator->setActiveItem( m_gradientChooser->currentItem() );
342#include "kis_controlframe.moc"
This widget presents all paintops that a user can paint with.
The KisResource class provides a representation of Chalk image resources.