]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/qsetborder.C
This new citation dialog follows a new design similar to lyx-1.3:
[lyx.git] / src / frontends / qt4 / 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 <config.h>
13
14 #include "qsetborder.h"
15
16 #include <QPainter>
17
18 //Added by qt3to4:
19 #include <QMouseEvent>
20 #include <QPaintEvent>
21
22
23 QSetBorder::QSetBorder(QWidget * parent, char const * name, Qt::WFlags fl)
24         : QWidget(parent, name, fl), buffer(75, 75)
25 {
26         /* length of corner line */
27         l = buffer.width() / 10;
28         /* margin */
29         m = buffer.height() / 10;
30
31         w = buffer.width();
32         h = buffer.height();
33
34         init();
35
36         setMinimumSize(w,h);
37         setMaximumSize(w,h);
38 }
39
40
41 void QSetBorder::paintEvent(QPaintEvent * e)
42 {
43         QWidget::paintEvent(e);
44         bitBlt(this, 0, 0, &buffer, 0, 0, width(), height());
45 }
46
47
48 void QSetBorder::init()
49 {
50         buffer.fill();
51         QPainter paint(&buffer);
52
53         paint.setPen(Qt::black);
54
55         // FIXME: wow, readable !! :)
56
57         paint.drawLine(m + l , m, m + l, m + l);
58         paint.drawLine(w - (m + l), m, w - (m + l), m + l);
59
60         paint.drawLine(m, m + l , m + l, m + l);
61         paint.drawLine(m, h - (m + l), m + l, h - (m + l));
62
63         paint.drawLine(m + l ,h - m, m + l ,h - (m + l));
64         paint.drawLine(w - (m + l), h - m, w - (m + l), h - (m + l));
65
66         paint.drawLine(h - m, m+l, h - (m + l), m + l);
67         paint.drawLine(h - m, h - (m + l), h - (m + l),h - (m + l));
68 }
69
70
71 void QSetBorder::mousePressEvent(QMouseEvent * e)
72 {
73         if (e->y() > e->x()) {
74                 if (e->y() < height() - e->x()) {
75                         if (left_.enabled) {
76                                 setLeft(!left_.set);
77                                 emit leftSet(left_.set);
78                         }
79                 } else {
80                         if (bottom_.enabled) {
81                                 setBottom(!bottom_.set);
82                                 emit bottomSet(bottom_.set);
83                         }
84                 }
85         } else {
86                 if (e->y() < height() - e->x()) {
87                         if (top_.enabled) {
88                                 setTop(!top_.set);
89                                 emit topSet(top_.set);
90                         }
91                 } else {
92                         if (right_.enabled) {
93                                 setRight(!right_.set);
94                                 emit rightSet(right_.set);
95                         }
96                 }
97         }
98         update();
99         emit clicked();
100 }
101
102
103 void QSetBorder::drawLine(QColor const & col, int x, int y, int x2, int y2)
104 {
105         QPainter paint(&buffer);
106         QPen p = paint.pen();
107         p.setWidth(2);
108         p.setColor(col);
109         paint.setPen(p);
110         paint.drawLine(x, y, x2, y2);
111 }
112
113
114 void QSetBorder::drawLeft(bool draw)
115 {
116         QColor col(draw ? Qt::black : Qt::white);
117         if (!left_.enabled)
118                 col = QColor("grey");
119         drawLine(col, m + l, m + l + 2, m + l, h - m - l - 1);
120 }
121
122
123 void QSetBorder::drawRight(bool draw)
124 {
125         QColor col(draw ? Qt::black : Qt::white);
126         if (!right_.enabled)
127                 col = QColor("grey");
128         drawLine(col, h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
129 }
130
131
132 void QSetBorder::drawTop(bool draw)
133 {
134         QColor col(draw ? Qt::black : Qt::white);
135         if (!top_.enabled)
136                 col = QColor("grey");
137         drawLine(col, m + l + 2, m + l, w - m - l - 1, m + l);
138 }
139
140
141 void QSetBorder::drawBottom(bool draw)
142 {
143         QColor col(draw ? Qt::black : Qt::white);
144         if (!bottom_.enabled)
145                 col = QColor("grey");
146         drawLine(col, m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
147 }
148
149
150 void QSetBorder::setLeftEnabled(bool border)
151 {
152         left_.enabled = border;
153         drawLeft(border);
154 }
155
156
157 void QSetBorder::setRightEnabled(bool border)
158 {
159         right_.enabled = border;
160         drawRight(border);
161 }
162
163
164 void QSetBorder::setTopEnabled(bool border)
165 {
166         top_.enabled = border;
167         drawTop(border);
168 }
169
170
171 void QSetBorder::setBottomEnabled(bool border)
172 {
173         bottom_.enabled = border;
174         drawBottom(border);
175 }
176
177
178 void QSetBorder::setLeft(bool border)
179 {
180         left_.set = border;
181         drawLeft(border);
182 }
183
184
185 void QSetBorder::setRight(bool border)
186 {
187         right_.set = border;
188         drawRight(border);
189 }
190
191
192 void QSetBorder::setTop(bool border)
193 {
194         top_.set = border;
195         drawTop(border);
196 }
197
198
199 void QSetBorder::setBottom(bool border)
200 {
201         bottom_.set = border;
202         drawBottom(border);
203 }
204
205
206 void QSetBorder::setAll(bool border)
207 {
208         setLeft(border);
209         setRight(border);
210         setTop(border);
211         setBottom(border);
212 }
213
214
215 bool QSetBorder::getLeft()
216 {
217         return left_.set;
218 }
219
220
221 bool QSetBorder::getRight()
222 {
223         return right_.set;
224 }
225
226
227 bool QSetBorder::getTop()
228 {
229         return top_.set;
230 }
231
232
233 bool QSetBorder::getBottom()
234 {
235         return bottom_.set;
236 }