]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/qsetborder.C
Some string(widget->text()) fixes. Weirdness
[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  * \author John Levon
8  *
9  * Full author contact details are available in file CREDITS
10  */
11
12 #include <qpainter.h>
13 #include <qpixmap.h>
14 #include <qimage.h>
15 #include "qsetborder.h"
16
17
18 QSetBorder::QSetBorder(QWidget * parent, char const * name, WFlags fl)
19         : QWidget(parent, name, fl), 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         // FIXME: wow, readable !! :)
51  
52         paint.drawLine(m + l , m, m + l, m + l);
53         paint.drawLine(w - (m + l), m, w - (m + l), m + l);
54
55         paint.drawLine(m, m + l , m + l, m + l);
56         paint.drawLine(m, h - (m + l), m + l, h - (m + l));
57
58         paint.drawLine(m + l ,h - m, m + l ,h - (m + l));
59         paint.drawLine(w - (m + l), h - m, w - (m + l), h - (m + l));
60
61         paint.drawLine(h - m, m+l, h - (m + l), m + l);
62         paint.drawLine(h - m, h - (m + l), h - (m + l),h - (m + l));
63
64         paint.end();
65 }
66
67  
68 void QSetBorder::mousePressEvent(QMouseEvent * e)
69 {
70         if (e->y() > e->x()) {
71                 if (e->y() < height() - e->x()) {
72                         if (left_.enabled) {
73                                 setLeft(!left_.set);
74                                 emit leftSet(left_.set);
75                         }
76                 } else {
77                         if (bottom_.enabled) {
78                                 setBottom(!bottom_.set);
79                                 emit bottomSet(bottom_.set);
80                         }
81                 }
82         } else {
83                 if (e->y() < height() - e->x()) {
84                         if (top_.enabled) {
85                                 setTop(!top_.set);
86                                 emit topSet(top_.set);
87                         }
88                 } else {
89                         if (right_.enabled) {
90                                 setRight(!right_.set);
91                                 emit rightSet(right_.set);
92                         }
93                 }
94         }
95         update();
96         emit clicked();
97 }
98
99
100 void QSetBorder::drawLine(QColor const & col, int x, int y, int x2, int y2)
101 {
102         QPainter paint;
103         paint.begin(&buffer);
104         QPen p = paint.pen();
105         p.setWidth(2);
106         p.setColor(col);
107         paint.setPen(p);
108         paint.drawLine(x, y, x2, y2);
109         paint.end();
110 }
111
112
113 void QSetBorder::drawLeft(bool draw)
114 {
115         QColor col(draw ? Qt::black : Qt::white);
116         if (!left_.enabled)
117                 col = QColor("grey");
118         drawLine(col, m + l, m + l + 2, m + l, h - m - l - 1);
119 }
120  
121
122 void QSetBorder::drawRight(bool draw)
123 {
124         QColor col(draw ? Qt::black : Qt::white);
125         if (!right_.enabled)
126                 col = QColor("grey");
127         drawLine(col, h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
128 }
129
130  
131 void QSetBorder::drawTop(bool draw)
132 {
133         QColor col(draw ? Qt::black : Qt::white);
134         if (!top_.enabled)
135                 col = QColor("grey");
136         drawLine(col, m + l + 2, m + l, w - m - l - 1, m + l);
137 }
138
139
140 void QSetBorder::drawBottom(bool draw)
141 {
142         QColor col(draw ? Qt::black : Qt::white);
143         if (!bottom_.enabled)
144                 col = QColor("grey");
145         drawLine(col, m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
146 }
147
148
149 void QSetBorder::setLeftEnabled(bool border)
150 {
151         left_.enabled = border;
152         drawLeft(border);
153 }
154
155
156 void QSetBorder::setRightEnabled(bool border)
157 {
158         right_.enabled = border;
159         drawRight(border);
160 }
161
162
163 void QSetBorder::setTopEnabled(bool border)
164 {
165         top_.enabled = border;
166         drawTop(border);
167 }
168
169
170 void QSetBorder::setBottomEnabled(bool border)
171 {
172         bottom_.enabled = border;
173         drawBottom(border);
174 }
175
176
177 void QSetBorder::setLeft(bool border)
178 {
179         left_.set = border;
180         drawLeft(border);
181 }
182
183
184 void QSetBorder::setRight(bool border)
185 {
186         right_.set = border;
187         drawRight(border);
188 }
189  
190
191 void QSetBorder::setTop(bool border)
192 {
193         top_.set = border;
194         drawTop(border);
195 }
196  
197
198 void QSetBorder::setBottom(bool border)
199 {
200         bottom_.set = border;
201         drawBottom(border);
202 }
203
204
205 void QSetBorder::setAll(bool border)
206 {
207         setLeft(border);
208         setRight(border);
209         setTop(border);
210         setBottom(border);
211 }
212
213
214 bool QSetBorder::getLeft()
215 {
216         return left_.set;
217 }
218
219
220 bool QSetBorder::getRight()
221 {
222         return right_.set;
223 }
224
225
226 bool QSetBorder::getTop()
227 {
228         return top_.set;
229 }
230
231
232 bool QSetBorder::getBottom()
233 {
234         return bottom_.set;
235 }