19#include "addstenciltool.h"
26#include "kivio_canvas.h"
27#include "kivio_stencil_spawner.h"
28#include "kivio_stencil.h"
29#include "kivio_page.h"
31#include "kivio_pluginmanager.h"
35AddStencilTool::AddStencilTool(KivioView* parent)
36 :
MouseTool(parent,
"Add Stencil Mouse Tool")
38 m_leftMouseButtonPressed =
false;
43AddStencilTool::~AddStencilTool()
49bool AddStencilTool::processEvent(TQEvent* e)
52 case TQEvent::MouseButtonPress:
54 TQMouseEvent* me =
static_cast<TQMouseEvent*
>(e);
56 if(me->button() == TQt::LeftButton) {
57 m_leftMouseButtonPressed =
true;
58 createStencil(me->pos());
64 case TQEvent::MouseButtonRelease:
66 TQMouseEvent* me =
static_cast<TQMouseEvent*
>(e);
68 if(m_leftMouseButtonPressed && (me->button() == TQt::LeftButton)) {
69 m_leftMouseButtonPressed =
false;
70 endOperation(me->pos());
76 case TQEvent::MouseMove:
78 TQMouseEvent* me =
static_cast<TQMouseEvent*
>(e);
80 if(m_leftMouseButtonPressed) {
94void AddStencilTool::setActivated(
bool a)
97 m_leftMouseButtonPressed =
false;
98 view()->canvasWidget()->setCursor(TQt::CrossCursor);
101 view()->canvasWidget()->unsetCursor();
108void AddStencilTool::activateNewStencil(KivioStencilSpawner* spawner)
114void AddStencilTool::createStencil(
const TQPoint& position)
120 m_startPoint = view()->canvasWidget()->mapFromScreen(position);
121 m_startPoint = view()->canvasWidget()->snapToGridAndGuides(m_startPoint);
123 m_stencil = m_spawner->newStencil();
129 m_stencil->setPosition(m_startPoint.x(), m_startPoint.y());
130 m_originalSize.setWidth(m_stencil->w());
131 m_originalSize.setHeight(m_stencil->h());
134 view()->canvasWidget()->beginUnclippedSpawnerPainter();
135 view()->canvasWidget()->drawStencilXOR(m_stencil);
138void AddStencilTool::endOperation(
const TQPoint& position)
144 KoPoint endPoint = view()->canvasWidget()->mapFromScreen(position);
145 endPoint = view()->canvasWidget()->snapToGridAndGuides(endPoint);
147 if(m_startPoint == endPoint) {
148 m_stencil->setW(m_originalSize.width());
149 m_stencil->setH(m_originalSize.height());
152 KivioPage* page = view()->canvasWidget()->activePage();
153 page->unselectAllStencils();
154 page->addStencil(m_stencil);
155 page->selectStencil(m_stencil);
158 view()->canvasWidget()->endUnclippedSpawnerPainter();
159 view()->doc()->updateView(page);
161 view()->pluginManager()->activateDefaultTool();
164void AddStencilTool::resize(
const TQPoint& position)
166 KoPoint endPoint = view()->canvasWidget()->mapFromScreen(position);
167 endPoint = view()->canvasWidget()->snapToGridAndGuides(endPoint);
169 view()->canvasWidget()->drawStencilXOR(m_stencil);
170 m_stencil->setW(endPoint.x() - m_startPoint.x());
171 m_stencil->setH(endPoint.y() - m_startPoint.y());
172 view()->canvasWidget()->drawStencilXOR(m_stencil);
177#include "addstenciltool.moc"