2 * \file GuiSetBorder.cpp
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
9 * Full author contact details are available in file CREDITS.
14 #include "GuiSetBorder.h"
17 #include <QMouseEvent>
18 #include <QPaintEvent>
21 GuiSetBorder::GuiSetBorder(QWidget * parent, Qt::WindowFlags fl)
22 : QWidget(parent, fl), buffer(75, 75)
24 /* length of corner line */
25 l = buffer.width() / 10;
27 m = buffer.height() / 10;
39 void GuiSetBorder::paintEvent(QPaintEvent * e)
41 QWidget::paintEvent(e);
42 QPainter painter(this);
43 painter.drawPixmap(0, 0, buffer);
47 void GuiSetBorder::init()
50 QPainter paint(&buffer);
52 paint.setPen(Qt::black);
54 // FIXME: wow, readable !! :)
56 paint.drawLine(m + l , m, m + l, m + l);
57 paint.drawLine(w - (m + l), m, w - (m + l), m + l);
59 paint.drawLine(m, m + l , m + l, m + l);
60 paint.drawLine(m, h - (m + l), m + l, h - (m + l));
62 paint.drawLine(m + l ,h - m, m + l ,h - (m + l));
63 paint.drawLine(w - (m + l), h - m, w - (m + l), h - (m + l));
65 paint.drawLine(h - m, m+l, h - (m + l), m + l);
66 paint.drawLine(h - m, h - (m + l), h - (m + l),h - (m + l));
70 void GuiSetBorder::mousePressEvent(QMouseEvent * e)
72 if (e->y() > e->x()) {
73 if (e->y() < height() - e->x()) {
75 setLeft(left_.set == LINE_SET ? LINE_UNSET : LINE_SET);
80 if (bottom_.enabled) {
81 setBottom(bottom_.set == LINE_SET ? LINE_UNSET : LINE_SET);
87 if (e->y() < height() - e->x()) {
89 setTop(top_.set == LINE_SET ? LINE_UNSET : LINE_SET);
95 setRight(right_.set == LINE_SET ? LINE_UNSET : LINE_SET);
107 void GuiSetBorder::drawLine(QColor const & col, int x, int y, int x2, int y2)
109 QPainter paint(&buffer);
110 QPen p = paint.pen();
114 paint.drawLine(x, y, x2, y2);
118 void GuiSetBorder::drawLeft(BorderState draw)
134 col = QColor(Qt::lightGray);
135 drawLine(col, m + l, m + l + 2, m + l, h - m - l - 1);
139 void GuiSetBorder::drawRight(BorderState draw)
155 col = QColor(Qt::lightGray);
156 drawLine(col, h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
160 void GuiSetBorder::drawTop(BorderState draw)
176 col = QColor(Qt::lightGray);
177 drawLine(col, m + l + 2, m + l, w - m - l - 1, m + l);
181 void GuiSetBorder::drawBottom(BorderState draw)
196 if (!bottom_.enabled)
197 col = QColor(Qt::lightGray);
198 drawLine(col, m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
202 void GuiSetBorder::setLeftEnabled(bool enabled)
204 left_.enabled = enabled;
209 void GuiSetBorder::setRightEnabled(bool enabled)
211 right_.enabled = enabled;
212 drawRight(right_.set);
216 void GuiSetBorder::setTopEnabled(bool enabled)
218 top_.enabled = enabled;
223 void GuiSetBorder::setBottomEnabled(bool enabled)
225 bottom_.enabled = enabled;
226 drawBottom(bottom_.set);
230 void GuiSetBorder::setLeft(BorderState border)
237 void GuiSetBorder::setRight(BorderState border)
244 void GuiSetBorder::setTop(BorderState border)
251 void GuiSetBorder::setBottom(BorderState border)
253 bottom_.set = border;
258 void GuiSetBorder::setAll(BorderState border)
267 GuiSetBorder::BorderState GuiSetBorder::getLeft()
273 GuiSetBorder::BorderState GuiSetBorder::getRight()
279 GuiSetBorder::BorderState GuiSetBorder::getTop()
285 GuiSetBorder::BorderState GuiSetBorder::getBottom()
290 #include "moc_GuiSetBorder.cpp"