]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/qsetborder.C
Juergen S's tabular patch. Good stuff !
[lyx.git] / src / frontends / qt2 / qsetborder.C
1 /**
2  * \file QSetBorder.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Edwin Leuven
7  *
8  * Full author contact details are available in file CREDITS
9  */
10
11 #include <qpainter.h>
12 #include <qpixmap.h>
13 #include <qimage.h>
14 #include "qsetborder.h"
15
16
17 QSetBorder::QSetBorder(QWidget * parent, char const * name, WFlags fl)
18         : QWidget(parent, name, fl),
19           left_(false), right_(false), top_(false), bottom_(false), buffer(75,75)
20 {
21         /* length of corner line */
22         l = buffer.width() / 10;
23         /* margin */
24         m = buffer.height() / 10;
25
26         w = buffer.width();
27         h = buffer.height();
28
29         init();
30
31         setMinimumSize(w,h);
32         setMaximumSize(w,h);
33 }
34  
35
36 void QSetBorder::paintEvent(QPaintEvent * e)
37 {
38         QWidget::paintEvent(e);
39         bitBlt(this, 0, 0, &buffer, 0, 0, width(), height());
40 }
41
42
43 void QSetBorder::init()
44 {
45         buffer.fill();
46         QPainter paint;
47         paint.begin(&buffer);
48         paint.setPen(Qt::black);
49         
50         paint.drawLine(m + l , m, m + l, m + l);
51         paint.drawLine(w - (m + l), m, w - (m + l), m + l);
52
53         paint.drawLine(m, m + l , m + l, m + l);
54         paint.drawLine(m, h - (m + l), m + l, h - (m + l));
55
56         paint.drawLine(m + l ,h - m, m + l ,h - (m + l));
57         paint.drawLine(w - (m + l), h - m, w - (m + l), h - (m + l));
58
59         paint.drawLine(h - m, m+l, h - (m + l), m + l);
60         paint.drawLine(h - m, h - (m + l), h - (m + l),h - (m + l));
61
62         paint.end();
63 }
64
65  
66 void QSetBorder::mousePressEvent(QMouseEvent * e)
67 {
68         if (e->y() > e->x()) {
69                 if (e->y() < height() - e->x()) {
70                         drawLeft(!left_);
71                         left_ = !left_;
72                         emit leftSet(left_);
73                 } else {
74                         drawBottom(!bottom_);
75                         bottom_ = !bottom_;
76                         emit bottomSet(bottom_);
77                 }
78         } else {
79                 if (e->y() < height() - e->x()) {
80                         drawTop(!top_);
81                         top_ = !top_;
82                         emit topSet(top_);
83                 } else {
84                         drawRight(!right_);
85                         right_ = !right_;
86                         emit rightSet(right_);
87                 }
88         }
89         update();
90         emit clicked();
91 }
92
93
94 void QSetBorder::drawLeft(bool draw)
95 {
96         QPainter paint;
97         paint.begin(&buffer);
98         QPen p = paint.pen();
99         p.setWidth(2);
100         p.setColor(draw ? Qt::black : Qt::white);
101         paint.setPen(p);
102         paint.drawLine(m + l, m + l + 2, m + l, h - m - l - 1);
103         paint.end();
104 }
105  
106
107 void QSetBorder::drawRight(bool draw)
108 {
109         QPainter paint;
110         paint.begin(&buffer);
111         QPen p = paint.pen();
112         p.setWidth(2);
113         p.setColor(draw ? Qt::black : Qt::white);
114         paint.setPen(p);
115         paint.drawLine(h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
116         paint.end();
117 }
118
119 void QSetBorder::drawTop(bool draw)
120 {
121         QPainter paint;
122         paint.begin(&buffer);
123         QPen p = paint.pen();
124         p.setWidth(2);
125         p.setColor(draw ? Qt::black : Qt::white);
126         paint.setPen(p);
127         paint.drawLine(m + l + 2, m + l, w - m - l - 1, m + l);
128         paint.end();
129 }
130
131 void QSetBorder::drawBottom(bool draw)
132 {
133         QPainter paint;
134         paint.begin(&buffer);
135         QPen p = paint.pen();
136         p.setWidth(2);
137         p.setColor(draw ? Qt::black : Qt::white);
138         paint.setPen(p);
139         paint.drawLine(m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
140         paint.end();
141 }
142
143 void QSetBorder::setLeft(bool border)
144 {
145         left_ = border;
146         drawLeft(border);
147 }
148
149 void QSetBorder::setRight(bool border)
150 {
151         right_ = border;
152         drawRight(border);
153 }
154
155 void QSetBorder::setTop(bool border)
156 {
157         top_ = border;
158         drawTop(border);
159 }
160
161 void QSetBorder::setBottom(bool border)
162 {
163         bottom_ = border;
164         drawBottom(border);
165 }
166
167 void QSetBorder::setAll(bool border)
168 {
169         setLeft(border);
170         setRight(border);
171         setTop(border);
172         setBottom(border);
173 }
174
175 bool QSetBorder::getLeft()
176 {
177         return left_;
178 }
179
180 bool QSetBorder::getRight()
181 {
182         return right_;
183 }
184
185 bool QSetBorder::getTop()
186 {
187         return top_;
188 }
189
190 bool QSetBorder::getBottom()
191 {
192         return bottom_;
193 }