kspread

kspread_handler.cpp
1//
2// TODO: insert copyright header
3//
4
5#include <tqpainter.h>
6
7#include "kspread_view.h"
8
9#include "kspread_handler.h"
10
11#define KS_MIN_RECTSIZE 3
12
13using namespace KSpread;
14
15InsertHandler::InsertHandler( View* view, TQWidget* widget )
16 : KoEventHandler( widget )
17{
18 m_view = view;
19 m_started = false;
20 m_clicked = false;
21
22 widget->setCursor( crossCursor );
23}
24
25InsertHandler::~InsertHandler()
26{
27 ((TQWidget*)target())->setCursor( arrowCursor );
28 m_view->resetInsertHandle();
29}
30
31bool InsertHandler::eventFilter( TQObject*, TQEvent* ev )
32{
33 if ( ev->type() == TQEvent::MouseButtonPress )
34 {
35 TQMouseEvent* e = (TQMouseEvent*)ev;
36
37 m_geometryStart = e->pos();
38 m_geometryEnd = e->pos();
39 m_started = false;
40 m_clicked = true;
41
42 return true;
43 }
44 else if ( ev->type() == TQEvent::MouseMove )
45 {
46 if ( !m_clicked )
47 return true;
48
49 TQMouseEvent* e = (TQMouseEvent*)ev;
50
51 TQPainter painter;
52 painter.begin( (TQWidget*)target() );
53 painter.setRasterOp( NotROP );
54
55 TQPen pen;
56 pen.setStyle( TQt::DashLine );
57 painter.setPen( pen );
58
59 if ( m_started )
60 {
61 int x = m_geometryStart.x();
62 int y = m_geometryStart.y();
63 if ( x > m_geometryEnd.x() )
64 x = m_geometryEnd.x();
65 if ( y > m_geometryEnd.y() )
66 y = m_geometryEnd.y();
67 int w = m_geometryEnd.x() - m_geometryStart.x();
68 if ( w < 0 ) w *= -1;
69 int h = m_geometryEnd.y() - m_geometryStart.y();
70 if ( h < 0 ) h *= -1;
71
72 if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
73 if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
74
75 painter.drawRect( x, y, w, h );
76 }
77 else
78 m_started = true;
79
80 m_geometryEnd = e->pos();
81
82 int x = m_geometryStart.x();
83 int y = m_geometryStart.y();
84 if ( x > m_geometryEnd.x() )
85 x = m_geometryEnd.x();
86 if ( y > m_geometryEnd.y() )
87 y = m_geometryEnd.y();
88 int w = m_geometryEnd.x() - m_geometryStart.x();
89 if ( w < 0 ) w *= -1;
90 int h = m_geometryEnd.y() - m_geometryStart.y();
91 if ( h < 0 ) h *= -1;
92
93 if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
94 if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
95
96 painter.drawRect( x, y, w, h );
97 painter.end();
98
99 return true;
100 }
101 else if ( ev->type() == TQEvent::MouseButtonRelease )
102 {
103 TQMouseEvent* e = (TQMouseEvent*)ev;
104
105 if ( !m_started )
106 {
107 delete this;
108 return true;
109 }
110
111 m_geometryEnd = e->pos();
112
113 int x = m_geometryStart.x();
114 int y = m_geometryStart.y();
115 if ( x > m_geometryEnd.x() )
116 x = m_geometryEnd.x();
117 if ( y > m_geometryEnd.y() )
118 y = m_geometryEnd.y();
119 int w = m_geometryEnd.x() - m_geometryStart.x();
120 if ( w < 0 ) w *= -1;
121 int h = m_geometryEnd.y() - m_geometryStart.y();
122 if ( h < 0 ) h *= -1;
123
124 if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
125 if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
126
127 TQPainter painter;
128 painter.begin( (TQWidget*)target() );
129
130 TQPen pen;
131 pen.setStyle( TQt::DashLine );
132 painter.setPen( pen );
133
134 painter.setRasterOp( NotROP );
135 painter.drawRect( x, y, w, h );
136 painter.end();
137
138 insertObject( TQRect( x, y, w, h) );
139
140 delete this;
141 return true;
142 }
143 else if ( ev->type() == TQEvent::KeyPress )
144 {
145 TQKeyEvent* e = (TQKeyEvent*)ev;
146 if ( e->key() != Key_Escape )
147 return false;
148
149 delete this;
150 return true;
151 }
152
153 return false;
154}
155
156InsertPartHandler::InsertPartHandler( View* view, TQWidget* widget, const KoDocumentEntry& entry )
157 : InsertHandler( view, widget ), m_entry( entry )
158{
159}
160InsertPartHandler::~InsertPartHandler()
161{
162}
163void InsertPartHandler::insertObject( TQRect r)
164{
165 m_view->insertChild( r, m_entry );
166}
167
168
169InsertChartHandler::InsertChartHandler( View* view, TQWidget* widget, const KoDocumentEntry& entry )
170 : InsertHandler( view, widget ), m_entry( entry )
171{
172}
173InsertChartHandler::~InsertChartHandler()
174{
175}
176void InsertChartHandler::insertObject( TQRect r)
177{
178 m_view->insertChart( r, m_entry );
179}
180
181InsertPictureHandler::InsertPictureHandler( View* view, TQWidget* widget, const KURL &file )
182 : InsertHandler( view, widget )
183{
184 m_file = file;
185}
186InsertPictureHandler::~InsertPictureHandler()
187{
188}
189void InsertPictureHandler::insertObject( TQRect r)
190{
191 //m_view->insertPicture(/* r,*/ m_file );
192}
193
194#include "kspread_handler.moc"
This event handler is used to insert a new part.
The View class displays a KSpread document.
The KSpread namespace.
Definition commands.h:39