]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/qsetborder.C
new tabular dialog + new widget. more bullet stuff (not finished yet though).
[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,  const char* 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 void QSetBorder::paintEvent( QPaintEvent *e )
36 {
37         QWidget::paintEvent( e );
38         bitBlt( this, 0, 0, &buffer, 0, 0, width(), height() );
39 }
40
41 void QSetBorder::init()
42 {
43         buffer.fill();
44         QPainter paint;
45         paint.begin( &buffer );
46         paint.setPen( Qt::black );
47         
48         paint.drawLine(   m+l ,m,   m+l ,m+l);
49         paint.drawLine(w-(m+l),m,w-(m+l),m+l);
50
51         paint.drawLine(m,   m+l ,m+l,   m+l);
52         paint.drawLine(m,h-(m+l),m+l,h-(m+l));
53
54         paint.drawLine(   m+l , h-m,   m+l ,h-(m+l));
55         paint.drawLine(w-(m+l),h-m,w-(m+l),h-(m+l));
56
57         paint.drawLine(h-m,   m+l ,h-(m+l),   m+l);
58         paint.drawLine(h-m,h-(m+l),h-(m+l),h-(m+l));
59
60         paint.end();
61 }
62 void QSetBorder::mousePressEvent( QMouseEvent *e)
63 {
64         if ( e->y() > e->x()) {
65                 if (e->y() < height() - e->x() ) {
66                         drawLeft(!left_);
67                         left_ = !left_;
68                         emit leftSet(left_);
69                 } else {
70                         drawBottom(!bottom_);
71                         bottom_ = !bottom_;
72                         emit bottomSet(bottom_);
73                 }
74         } else {
75                 if ( e->y() < height() - e->x() ) {
76                         drawTop(!top_);
77                         top_ = !top_;
78                         emit topSet(top_);
79                 } else {
80                         drawRight(!right_);
81                         right_ = !right_;
82                         emit rightSet(right_);
83                 }
84         }
85         update();
86 }
87
88 void QSetBorder::drawLeft(bool draw)
89 {
90         QPainter paint;
91         paint.begin( &buffer );
92         QPen p = paint.pen();
93         p.setWidth(2);
94         p.setColor( draw ? Qt::black : Qt::white );
95         paint.setPen(p);
96         paint.drawLine(m+l,m+l+2,m+l,h-m-l-1);
97         paint.end();
98 }
99
100 void QSetBorder::drawRight(bool draw)
101 {
102         QPainter paint;
103         paint.begin( &buffer );
104         QPen p = paint.pen();
105         p.setWidth(2);
106         p.setColor( draw ? Qt::black : Qt::white );
107         paint.setPen(p);
108         paint.drawLine(h-m-l+1,m+l+2,h-m-l+1,h-m-l-1);
109         paint.end();
110 }
111
112 void QSetBorder::drawTop(bool draw)
113 {
114         QPainter paint;
115         paint.begin( &buffer );
116         QPen p = paint.pen();
117         p.setWidth(2);
118         p.setColor( draw ? Qt::black : Qt::white );
119         paint.setPen(p);
120         paint.drawLine(m+l+2,m+l,w-m-l-1,m+l);
121         paint.end();
122 }
123
124 void QSetBorder::drawBottom(bool draw)
125 {
126         QPainter paint;
127         paint.begin( &buffer );
128         QPen p = paint.pen();
129         p.setWidth(2);
130         p.setColor( draw ? Qt::black : Qt::white );
131         paint.setPen(p);
132         paint.drawLine(m+l+2,w-m-l+1,w-m-l-1,w-m-l+1);
133         paint.end();
134 }
135
136 void QSetBorder::setLeft(bool border)
137 {
138         left_ = border;
139 }
140
141 void QSetBorder::setRight(bool border)
142 {
143         right_ = border;
144 }
145
146 void QSetBorder::setTop(bool border)
147 {
148         top_ = border;
149 }
150
151 void QSetBorder::setBottom(bool border)
152 {
153         bottom_ = border;
154 }
155
156 bool QSetBorder::getLeft()
157 {
158         return left_;
159 }
160
161 bool QSetBorder::getRight()
162 {
163         return right_;
164 }
165
166 bool QSetBorder::getTop()
167 {
168         return top_;
169 }
170
171 bool QSetBorder::getBottom()
172 {
173         return bottom_;
174 }
175
176