27#include "formmanager.h"
28#include "resizehandle.h"
30#include "widgetfactory.h"
31#include "widgetlibrary.h"
33#define MINIMUM_WIDTH 10
34#define MINIMUM_HEIGHT 10
38ResizeHandle::ResizeHandle(
ResizeHandleSet *set, HandlePos pos,
bool editing)
39 : TQWidget(set->m_widget->parentWidget()), m_set(set)
44 setEditingMode(editing);
50 m_set->m_widget->installEventFilter(
this);
57ResizeHandle::~ResizeHandle()
61void ResizeHandle::setEditingMode(
bool editing)
64 setBackgroundColor(blue);
66 setBackgroundColor(black);
69void ResizeHandle::updatePos()
74 move(m_set->m_widget->x() - 3, m_set->m_widget->y() - 3);
75 setCursor(TQCursor(SizeFDiagCursor));
78 move(m_set->m_widget->x() + m_set->m_widget->width()/2 - 3, m_set->m_widget->y() - 3);
79 setCursor(TQCursor(SizeVerCursor));
82 move(m_set->m_widget->x() + m_set->m_widget->width() - 3, m_set->m_widget->y() - 3);
83 setCursor(TQCursor(SizeBDiagCursor));
86 move(m_set->m_widget->x() - 3, m_set->m_widget->y() + m_set->m_widget->height()/2 - 3);
87 setCursor(TQCursor(SizeHorCursor));
90 move(m_set->m_widget->x() + m_set->m_widget->width() - 3, m_set->m_widget->y() + m_set->m_widget->height()/2 - 3);
91 setCursor(TQCursor(SizeHorCursor));
94 move(m_set->m_widget->x() - 3, m_set->m_widget->y() + m_set->m_widget->height() - 3);
95 setCursor(TQCursor(SizeBDiagCursor));
98 move(m_set->m_widget->x() + m_set->m_widget->width()/2 - 3, m_set->m_widget->y() + m_set->m_widget->height() - 3);
99 setCursor(TQCursor(SizeVerCursor));
102 move(m_set->m_widget->x() + m_set->m_widget->width() - 3, m_set->m_widget->y() + m_set->m_widget->height() - 3);
103 setCursor(TQCursor(SizeFDiagCursor));
108bool ResizeHandle::eventFilter(TQObject *o, TQEvent *ev)
110 if (((ev->type() == TQEvent::Move) || (ev->type() == TQEvent::Resize)) && o == m_set->m_widget)
134void ResizeHandle::mousePressEvent(TQMouseEvent *ev)
136 const bool startDragging = !m_dragging;
142 WidgetFactory *wfactory = m_set->m_form->library()->factoryForClassName(m_set->widget()->className());
144 wfactory->resetEditor();
148void ResizeHandle::mouseMoveEvent(TQMouseEvent *ev)
150 int gridX = m_set->m_form->gridSize();
151 int gridY = m_set->m_form->gridSize();
153 if (!m_dragging)
return;
156 int tmpx = m_set->m_widget->x();
157 int tmpy = m_set->m_widget->y();
158 int tmpw = m_set->m_widget->width();
159 int tmph = m_set->m_widget->height();
161 int dummyx = ev->x() - m_x;
162 int dummyy = ev->y() - m_y;
164 if(
FormManager::self()->snapWidgetsToGrid() && (ev->state() != (TQt::LeftButton|TQt::ControlButton|TQt::AltButton)))
166 dummyy = (int) ( ((
float)dummyy) / ((
float)gridY) + 0.5 );
168 dummyx = (int) ( ((
float)dummyx) / ((
float)gridX) + 0.5 );
211 if(tmpx >= m_set->m_widget->x() + m_set->m_widget->width())
213 tmpx = m_set->m_widget->x() + m_set->m_widget->width() - MINIMUM_WIDTH;
214 tmpw = MINIMUM_WIDTH;
217 if(tmpy >= m_set->m_widget->y() + m_set->m_widget->height())
219 tmpy = m_set->m_widget->y() + m_set->m_widget->height() - MINIMUM_HEIGHT;
220 tmph = MINIMUM_HEIGHT;
229 else if(tmpx + tmpw > m_set->m_widget->parentWidget()->width())
230 tmpw = m_set->m_widget->parentWidget()->width() - tmpx;
237 else if(tmpy + tmph > m_set->m_widget->parentWidget()->height())
238 tmph = m_set->m_widget->parentWidget()->height() - tmpy;
240 const bool shouldBeMoved = (tmpx != m_set->m_widget->x()) || (tmpy != m_set->m_widget->y());
241 const bool shouldBeResized = (tmpw != m_set->m_widget->width()) || (tmph != m_set->m_widget->height());
243 if (shouldBeMoved && shouldBeResized)
244 m_set->m_widget->hide();
250 tmpw = (tmpw < MINIMUM_WIDTH) ? MINIMUM_WIDTH : tmpw;
251 tmph = (tmph < MINIMUM_HEIGHT) ? MINIMUM_HEIGHT : tmph;
252 m_set->m_widget->resize(tmpw,tmph);
257 m_set->m_widget->move(tmpx,tmpy);
259 if (shouldBeMoved && shouldBeResized)
260 m_set->m_widget->show();
263void ResizeHandle::mouseReleaseEvent(TQMouseEvent *)
268void ResizeHandle::paintEvent( TQPaintEvent * )
280ResizeHandleSet::ResizeHandleSet(TQWidget *modify,
Form *form,
bool editing)
281: TQObject(modify->parentWidget()), m_form(form)
294 setWidget(modify, editing);
297ResizeHandleSet::~ResizeHandleSet()
299 for (
int i = 0; i < 8; i++)
304ResizeHandleSet::setWidget(TQWidget *modify,
bool editing)
306 if(modify == m_widget)
310 for(
int i = 0; i < 8; i++)
316 m_handles[0] =
new ResizeHandle(
this, ResizeHandle::TopLeft, editing);
317 m_handles[1] =
new ResizeHandle(
this, ResizeHandle::TopCenter, editing);
318 m_handles[2] =
new ResizeHandle(
this, ResizeHandle::TopRight, editing);
319 m_handles[3] =
new ResizeHandle(
this, ResizeHandle::LeftCenter, editing);
320 m_handles[4] =
new ResizeHandle(
this, ResizeHandle::RightCenter, editing);
321 m_handles[5] =
new ResizeHandle(
this, ResizeHandle::BottomLeft, editing);
322 m_handles[6] =
new ResizeHandle(
this, ResizeHandle::BottomCenter, editing);
323 m_handles[7] =
new ResizeHandle(
this, ResizeHandle::BottomRight, editing);
327ResizeHandleSet::raise()
329 for(
int i = 0; i < 8; i++)
330 m_handles[i]->raise();
333void ResizeHandleSet::setEditingMode(
bool editing)
335 for(
int i = 0; i < 8; i++)
336 m_handles[i]->setEditingMode(editing);
339#include "resizehandle.moc"