summaryrefslogtreecommitdiff
path: root/core/apps/textedit/textedit.cpp
Unidiff
Diffstat (limited to 'core/apps/textedit/textedit.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/textedit.cpp130
1 files changed, 31 insertions, 99 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index f571511..b81f3b4 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -1,547 +1,454 @@
1/********************************************************************** 1/**********************************************************************
2// textedit.cpp 2// textedit.cpp
3** Copyright (C) 2000 Trolltech AS. All rights reserved. 3** Copyright (C) 2000 Trolltech AS. All rights reserved.
4** 4**
5** This file is part of Opie Environment. 5** This file is part of Opie Environment.
6** 6**
7** This file may be distributed and/or modified under the terms of the 7** This file may be distributed and/or modified under the terms of the
8** GNU General Public License version 2 as published by the Free Software 8** GNU General Public License version 2 as published by the Free Software
9** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 10** packaging of this file.
11** 11**
12**********************************************************************/ 12**********************************************************************/
13// changes added by L. J. Potter Sun 02-17-2002 21:31:31 13// changes added by L. J. Potter Sun 02-17-2002 21:31:31
14#include "textedit.h" 14#include "textedit.h"
15#include "filePermissions.h" 15#include "filePermissions.h"
16 16
17 17
18#include <opie/ofileselector.h> 18#include <opie/ofileselector.h>
19#include <opie/ofiledialog.h> 19#include <opie/ofiledialog.h>
20#include <opie/ofontselector.h> 20#include <opie/ofontselector.h>
21 21
22#include <qpe/fontdatabase.h> 22#include <qpe/fontdatabase.h>
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/fileselector.h> 24#include <qpe/fileselector.h>
25#include <qpe/applnk.h> 25#include <qpe/applnk.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/config.h> 27#include <qpe/config.h>
28#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
29#include <qpe/qpemenubar.h> 29#include <qpe/qpemenubar.h>
30#include <qpe/qpetoolbar.h> 30#include <qpe/qpetoolbar.h>
31#include <qpe/qcopenvelope_qws.h> 31#include <qpe/qcopenvelope_qws.h>
32 32
33#include <qpoint.h> 33#include <qpoint.h>
34#include <qtextstream.h> 34#include <qtextstream.h>
35#include <qdatetime.h> 35#include <qdatetime.h>
36#include <qclipboard.h> 36#include <qclipboard.h>
37#include <qstringlist.h> 37#include <qstringlist.h>
38#include <qaction.h> 38#include <qaction.h>
39#include <qcolordialog.h> 39#include <qcolordialog.h>
40#include <qfileinfo.h> 40#include <qfileinfo.h>
41#include <qlineedit.h> 41#include <qlineedit.h>
42#include <qmessagebox.h> 42#include <qmessagebox.h>
43#include <qobjectlist.h> 43#include <qobjectlist.h>
44#include <qpopupmenu.h> 44#include <qpopupmenu.h>
45#include <qspinbox.h> 45#include <qspinbox.h>
46#include <qtoolbutton.h> 46#include <qtoolbutton.h>
47#include <qwidgetstack.h> 47#include <qwidgetstack.h>
48#include <qcheckbox.h> 48#include <qcheckbox.h>
49#include <qcombo.h> 49#include <qcombo.h>
50#include <qlayout.h> 50#include <qlayout.h>
51#include <qapplication.h> 51#include <qapplication.h>
52#include <qtimer.h> 52#include <qtimer.h>
53#include <qdir.h> 53#include <qdir.h>
54#include <unistd.h> 54#include <unistd.h>
55#include <sys/stat.h> 55#include <sys/stat.h>
56#include <stdlib.h> //getenv 56#include <stdlib.h> //getenv
57 57
58 58#include "resource.h"
59/* XPM */
60static char * filesave_xpm[] = {
61"16 16 78 1",
62" c None",
63". c #343434",
64"+ c #A0A0A0",
65"@ c #565656",
66"# c #9E9E9E",
67"$ c #525252",
68"% c #929292",
69"& c #676767",
70"* c #848484",
71"= c #666666",
72"- c #D8D8D8",
73"; c #FFFFFF",
74"> c #DBDBDB",
75", c #636363",
76"' c #989898",
77") c #2D2D2D",
78"! c #909090",
79"~ c #AEAEAE",
80"{ c #EAEAEA",
81"] c #575757",
82"^ c #585858",
83"/ c #8A8A8A",
84"( c #828282",
85"_ c #6F6F6F",
86": c #C9C9C9",
87"< c #050505",
88"[ c #292929",
89"} c #777777",
90"| c #616161",
91"1 c #3A3A3A",
92"2 c #BEBEBE",
93"3 c #2C2C2C",
94"4 c #7C7C7C",
95"5 c #F6F6F6",
96"6 c #FCFCFC",
97"7 c #6B6B6B",
98"8 c #959595",
99"9 c #4F4F4F",
100"0 c #808080",
101"a c #767676",
102"b c #818181",
103"c c #B8B8B8",
104"d c #FBFBFB",
105"e c #F9F9F9",
106"f c #CCCCCC",
107"g c #030303",
108"h c #737373",
109"i c #7A7A7A",
110"j c #7E7E7E",
111"k c #6A6A6A",
112"l c #FAFAFA",
113"m c #505050",
114"n c #9D9D9D",
115"o c #333333",
116"p c #7B7B7B",
117"q c #787878",
118"r c #696969",
119"s c #494949",
120"t c #555555",
121"u c #949494",
122"v c #E6E6E6",
123"w c #424242",
124"x c #515151",
125"y c #535353",
126"z c #3E3E3E",
127"A c #D4D4D4",
128"B c #0C0C0C",
129"C c #353535",
130"D c #474747",
131"E c #ECECEC",
132"F c #919191",
133"G c #7D7D7D",
134"H c #000000",
135"I c #404040",
136"J c #858585",
137"K c #323232",
138"L c #D0D0D0",
139"M c #1C1C1C",
140" ...+ ",
141" @#$%&..+ ",
142" .*=-;;>,..+ ",
143" ')!~;;;;;;{]..",
144" ^/(-;;;;;;;_:<",
145" [}|;;;;;;;{12$",
146" #34-55;;;;678$+",
147" 90ab=c;dd;e1fg ",
148" [ahij((kbl0mn$ ",
149" op^q^^7r&]s/$+ ",
150"@btu;vbwxy]zAB ",
151"CzDEvEv;;DssF$ ",
152"G.H{E{E{IxsJ$+ ",
153" +...vEKxzLM ",
154" +...z]n$ ",
155" +... "};
156
157 59
158#if QT_VERSION < 300 60#if QT_VERSION < 300
159 61
160class QpeEditor : public QMultiLineEdit 62class QpeEditor : public QMultiLineEdit
161{ 63{
162 64
163public: 65public:
164 QpeEditor( QWidget *parent, const char * name = 0 ) 66 QpeEditor( QWidget *parent, const char * name = 0 )
165 : QMultiLineEdit( parent, name ) { 67 : QMultiLineEdit( parent, name ) {
166 clearTableFlags(); 68 clearTableFlags();
167 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar ); 69 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar );
168} 70}
169 71
170 void find( const QString &txt, bool caseSensitive, 72 void find( const QString &txt, bool caseSensitive,
171 bool backwards ); 73 bool backwards );
172protected: 74protected:
173 bool markIt; 75 bool markIt;
174 int line1, line2, col1, col2; 76 int line1, line2, col1, col2;
175 void mousePressEvent( QMouseEvent * ); 77 void mousePressEvent( QMouseEvent * );
176 void mouseReleaseEvent( QMouseEvent * ); 78 void mouseReleaseEvent( QMouseEvent * );
177 79
178//public slots: 80//public slots:
179 /* 81 /*
180signals: 82signals:
181 void notFound(); 83 void notFound();
182 void searchWrapped(); 84 void searchWrapped();
183 */ 85 */
184 86
185private: 87private:
186 88
187}; 89};
188 90
189void QpeEditor::mousePressEvent( QMouseEvent *e ) { 91void QpeEditor::mousePressEvent( QMouseEvent *e ) {
190 switch(e->button()) { 92 switch(e->button()) {
191 case RightButton: 93 case RightButton:
192 { //rediculous workaround for qt popup menu 94 { //rediculous workaround for qt popup menu
193 //and the hold right click mechanism 95 //and the hold right click mechanism
194 this->setSelection( line1, col1, line2, col2); 96 this->setSelection( line1, col1, line2, col2);
195 QMultiLineEdit::mousePressEvent( e ); 97 QMultiLineEdit::mousePressEvent( e );
196 markIt = false; 98 markIt = false;
197 } 99 }
198 break; 100 break;
199 default: 101 default:
200 { 102 {
201 if(!markIt) { 103 if(!markIt) {
202 int line, col; 104 int line, col;
203 this->getCursorPosition(&line, &col); 105 this->getCursorPosition(&line, &col);
204 line1=line2=line; 106 line1=line2=line;
205 col1=col2=col; 107 col1=col2=col;
206 } 108 }
207 QMultiLineEdit::mousePressEvent( e ); 109 QMultiLineEdit::mousePressEvent( e );
208 } 110 }
209 break; 111 break;
210 }; 112 };
211} 113}
212 114
213void QpeEditor::mouseReleaseEvent( QMouseEvent * ) { 115void QpeEditor::mouseReleaseEvent( QMouseEvent * ) {
214 if(this->hasMarkedText()) { 116 if(this->hasMarkedText()) {
215 markIt = true; 117 markIt = true;
216 this->getMarkedRegion( &line1, &col1, &line2, & col2 ); 118 this->getMarkedRegion( &line1, &col1, &line2, & col2 );
217 } else { 119 } else {
218 markIt = false; 120 markIt = false;
219 } 121 }
220} 122}
221 123
222void QpeEditor::find ( const QString &txt, bool caseSensitive, 124void QpeEditor::find ( const QString &txt, bool caseSensitive,
223 bool backwards ) 125 bool backwards )
224{ 126{
225 static bool wrap = false; 127 static bool wrap = false;
226 int line, col; 128 int line, col;
227 if ( wrap ) { 129 if ( wrap ) {
228 if ( !backwards ) 130 if ( !backwards )
229 line = col = 0; 131 line = col = 0;
230 wrap = false; 132 wrap = false;
231 // emit searchWrapped(); 133 // emit searchWrapped();
232 } else { 134 } else {
233 getCursorPosition( &line, &col ); 135 getCursorPosition( &line, &col );
234 } 136 }
235 //ignore backwards for now.... 137 //ignore backwards for now....
236 if ( !backwards ) { 138 if ( !backwards ) {
237 for ( ; ; ) { 139 for ( ; ; ) {
238 if ( line >= numLines() ) { 140 if ( line >= numLines() ) {
239 wrap = true; 141 wrap = true;
240 //emit notFound(); 142 //emit notFound();
241 break; 143 break;
242 } 144 }
243 int findCol = getString( line )->find( txt, col, caseSensitive ); 145 int findCol = getString( line )->find( txt, col, caseSensitive );
244 if ( findCol >= 0 ) { 146 if ( findCol >= 0 ) {
245 setCursorPosition( line, findCol, false ); 147 setCursorPosition( line, findCol, false );
246 col = findCol + txt.length(); 148 col = findCol + txt.length();
247 setCursorPosition( line, col, true ); 149 setCursorPosition( line, col, true );
248 150
249 //found = true; 151 //found = true;
250 break; 152 break;
251 } 153 }
252 line++; 154 line++;
253 col = 0; 155 col = 0;
254 } 156 }
255 } 157 }
256} 158}
257 159
258 160
259#else 161#else
260 162
261#error "Must make a QpeEditor that inherits QTextEdit" 163#error "Must make a QpeEditor that inherits QTextEdit"
262 164
263#endif 165#endif
264 166
265 167
266static const int nfontsizes = 6; 168static const int nfontsizes = 6;
267static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; 169static const int fontsize[nfontsizes] = {8,10,12,14,18,24};
268 170
269TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) 171TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
270 : QMainWindow( parent, name, f ), bFromDocView( false ) 172 : QMainWindow( parent, name, f ), bFromDocView( false )
271{ 173{
272 doc = 0; 174 doc = 0;
273 edited=false; 175 edited=false;
274 fromSetDocument=false; 176 fromSetDocument=false;
275 177
276 setToolBarsMovable( false ); 178 setToolBarsMovable( false );
277 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); 179 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
278 180
279 channel = new QCopChannel( "QPE/Application/textedit", this ); 181 channel = new QCopChannel( "QPE/Application/textedit", this );
280 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 182 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
281 this, SLOT(receive(const QCString&, const QByteArray&)) ); 183 this, SLOT(receive(const QCString&, const QByteArray&)) );
282 184
283 setIcon( Resource::loadPixmap( "TextEditor" ) ); 185 setIcon( Resource::loadPixmap( "TextEditor" ) );
284 186
285 QPEToolBar *bar = new QPEToolBar( this ); 187 QPEToolBar *bar = new QPEToolBar( this );
286 bar->setHorizontalStretchable( true ); 188 bar->setHorizontalStretchable( true );
287 menu = bar; 189 menu = bar;
288 190
289 QPEMenuBar *mb = new QPEMenuBar( bar ); 191 QPEMenuBar *mb = new QPEMenuBar( bar );
290 QPopupMenu *file = new QPopupMenu( this ); 192 QPopupMenu *file = new QPopupMenu( this );
291 QPopupMenu *edit = new QPopupMenu( this ); 193 QPopupMenu *edit = new QPopupMenu( this );
292 QPopupMenu *advancedMenu = new QPopupMenu(this); 194 QPopupMenu *advancedMenu = new QPopupMenu(this);
293 195
294 font = new QPopupMenu( this ); 196 font = new QPopupMenu( this );
295 197
296 bar = new QPEToolBar( this ); 198 bar = new QPEToolBar( this );
297 editBar = bar; 199 editBar = bar;
298 200
299 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), 201 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ),
300 QString::null, 0, this, 0 ); 202 QString::null, 0, this, 0 );
301 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 203 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
302// a->addTo( bar ); 204// a->addTo( bar );
303 a->addTo( file ); 205 a->addTo( file );
304 206
305 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), 207 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ),
306 QString::null, 0, this, 0 ); 208 QString::null, 0, this, 0 );
307 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); 209 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
308 a->addTo( bar ); 210 a->addTo( bar );
309 a->addTo( file ); 211 a->addTo( file );
310 212
311 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , 213 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) ,
312 QString::null, 0, this, 0 ); 214 QString::null, 0, this, 0 );
313 connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); 215 connect( a, SIGNAL( activated() ), this, SLOT( save() ) );
314 file->insertSeparator(); 216 file->insertSeparator();
315 a->addTo( bar ); 217 a->addTo( bar );
316 a->addTo( file ); 218 a->addTo( file );
317 219
318 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , 220 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) ,
319 QString::null, 0, this, 0 ); 221 QString::null, 0, this, 0 );
320 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); 222 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) );
321 a->addTo( file ); 223 a->addTo( file );
322 224
323 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), 225 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ),
324 QString::null, 0, this, 0 ); 226 QString::null, 0, this, 0 );
325 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); 227 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
326 a->addTo( editBar ); 228 a->addTo( editBar );
327 a->addTo( edit ); 229 a->addTo( edit );
328 230
329 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), 231 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ),
330 QString::null, 0, this, 0 ); 232 QString::null, 0, this, 0 );
331 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); 233 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
332 a->addTo( editBar ); 234 a->addTo( editBar );
333 a->addTo( edit ); 235 a->addTo( edit );
334 236
335 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), 237 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ),
336 QString::null, 0, this, 0 ); 238 QString::null, 0, this, 0 );
337 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); 239 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
338 a->addTo( editBar ); 240 a->addTo( editBar );
339 a->addTo( edit ); 241 a->addTo( edit );
340 242
341 243
342#ifndef QT_NO_CLIPBOARD 244#ifndef QT_NO_CLIPBOARD
343 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), 245 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ),
344 QString::null, 0, this, 0 ); 246 QString::null, 0, this, 0 );
345 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); 247 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) );
346 a->addTo( edit ); 248 a->addTo( edit );
347#endif 249#endif
348 250
349 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), 251 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ),
350 QString::null, 0, this, 0 ); 252 QString::null, 0, this, 0 );
351 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); 253 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) );
352 edit->insertSeparator(); 254 edit->insertSeparator();
353 a->addTo( bar ); 255 a->addTo( bar );
354 a->addTo( edit ); 256 a->addTo( edit );
355 257
258 a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ),
259 QString::null, 0, this, 0 );
260 connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) );
261 a->addTo( edit );
262
356 263
357 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); 264 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 );
358 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); 265 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) );
359 zin->addTo( font ); 266 zin->addTo( font );
360 267
361 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); 268 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 );
362 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); 269 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) );
363 zout->addTo( font ); 270 zout->addTo( font );
364 271
365 font->insertSeparator(); 272 font->insertSeparator();
366 273
367 font->insertItem(tr("Font"), this, SLOT(changeFont()) ); 274 font->insertItem(tr("Font"), this, SLOT(changeFont()) );
368 275
369 font->insertSeparator(); 276 font->insertSeparator();
370 font->insertItem(tr("Advanced Features"), advancedMenu); 277 font->insertItem(tr("Advanced Features"), advancedMenu);
371 278
372 QAction *wa = new QAction( tr("Wrap lines"), 279 QAction *wa = new QAction( tr("Wrap lines"),
373 QString::null, 0, this, 0 ); 280 QString::null, 0, this, 0 );
374 connect( wa, SIGNAL( toggled(bool) ), 281 connect( wa, SIGNAL( toggled(bool) ),
375 this, SLOT( setWordWrap(bool) ) ); 282 this, SLOT( setWordWrap(bool) ) );
376 wa->setToggleAction(true); 283 wa->setToggleAction(true);
377 wa->addTo( advancedMenu); 284 wa->addTo( advancedMenu);
378 285
379 nStart = new QAction( tr("Start with new file"), 286 nStart = new QAction( tr("Start with new file"),
380 QString::null, 0, this, 0 ); 287 QString::null, 0, this, 0 );
381 connect( nStart, SIGNAL( toggled(bool) ), 288 connect( nStart, SIGNAL( toggled(bool) ),
382 this, SLOT( changeStartConfig(bool) ) ); 289 this, SLOT( changeStartConfig(bool) ) );
383 nStart->setToggleAction(true); 290 nStart->setToggleAction(true);
384 nStart->addTo( advancedMenu ); 291 nStart->addTo( advancedMenu );
385 nStart->setEnabled(false); 292 nStart->setEnabled(false);
386 293
387 nAdvanced = new QAction( tr("Prompt on Exit"), 294 nAdvanced = new QAction( tr("Prompt on Exit"),
388 QString::null, 0, this, 0 ); 295 QString::null, 0, this, 0 );
389 connect( nAdvanced, SIGNAL( toggled(bool) ), 296 connect( nAdvanced, SIGNAL( toggled(bool) ),
390 this, SLOT( doPrompt(bool) ) ); 297 this, SLOT( doPrompt(bool) ) );
391 nAdvanced->setToggleAction(true); 298 nAdvanced->setToggleAction(true);
392 nAdvanced->addTo( advancedMenu ); 299 nAdvanced->addTo( advancedMenu );
393 300
394 desktopAction = new QAction( tr("Always open linked file"), 301 desktopAction = new QAction( tr("Always open linked file"),
395 QString::null, 0, this, 0 ); 302 QString::null, 0, this, 0 );
396 connect( desktopAction, SIGNAL( toggled(bool) ), 303 connect( desktopAction, SIGNAL( toggled(bool) ),
397 this, SLOT( doDesktop(bool) ) ); 304 this, SLOT( doDesktop(bool) ) );
398 desktopAction->setToggleAction(true); 305 desktopAction->setToggleAction(true);
399 desktopAction->addTo( advancedMenu); 306 desktopAction->addTo( advancedMenu);
400 307
401 filePermAction = new QAction( tr("File Permissions"), 308 filePermAction = new QAction( tr("File Permissions"),
402 QString::null, 0, this, 0 ); 309 QString::null, 0, this, 0 );
403 connect( filePermAction, SIGNAL( toggled(bool) ), 310 connect( filePermAction, SIGNAL( toggled(bool) ),
404 this, SLOT( doFilePerms(bool) ) ); 311 this, SLOT( doFilePerms(bool) ) );
405 filePermAction->setToggleAction(true); 312 filePermAction->setToggleAction(true);
406 filePermAction->addTo( advancedMenu); 313 filePermAction->addTo( advancedMenu);
407 314
408 searchBarAction = new QAction( tr("Search Bar Open"), 315 searchBarAction = new QAction( tr("Search Bar Open"),
409 QString::null, 0, this, 0 ); 316 QString::null, 0, this, 0 );
410 connect( searchBarAction, SIGNAL( toggled(bool) ), 317 connect( searchBarAction, SIGNAL( toggled(bool) ),
411 this, SLOT( setSearchBar(bool) ) ); 318 this, SLOT( setSearchBar(bool) ) );
412 searchBarAction->setToggleAction(true); 319 searchBarAction->setToggleAction(true);
413 searchBarAction->addTo( advancedMenu); 320 searchBarAction->addTo( advancedMenu);
414 321
415 nAutoSave = new QAction( tr("Auto Save 5 min."), 322 nAutoSave = new QAction( tr("Auto Save 5 min."),
416 QString::null, 0, this, 0 ); 323 QString::null, 0, this, 0 );
417 connect( nAutoSave, SIGNAL( toggled(bool) ), 324 connect( nAutoSave, SIGNAL( toggled(bool) ),
418 this, SLOT( doTimer(bool) ) ); 325 this, SLOT( doTimer(bool) ) );
419 nAutoSave->setToggleAction(true); 326 nAutoSave->setToggleAction(true);
420 nAutoSave->addTo( advancedMenu); 327 nAutoSave->addTo( advancedMenu);
421 328
422 329
423 font->insertSeparator(); 330 font->insertSeparator();
424 331
425 font->insertItem(tr("About"), this, SLOT( doAbout()) ); 332 font->insertItem(tr("About"), this, SLOT( doAbout()) );
426 333
427 mb->insertItem( tr( "File" ), file ); 334 mb->insertItem( tr( "File" ), file );
428 mb->insertItem( tr( "Edit" ), edit ); 335 mb->insertItem( tr( "Edit" ), edit );
429 mb->insertItem( tr( "View" ), font ); 336 mb->insertItem( tr( "View" ), font );
430 337
431 searchBar = new QPEToolBar(this); 338 searchBar = new QPEToolBar(this);
432 addToolBar( searchBar, "Search", QMainWindow::Top, true ); 339 addToolBar( searchBar, "Search", QMainWindow::Top, true );
433 340
434 searchBar->setHorizontalStretchable( true ); 341 searchBar->setHorizontalStretchable( true );
435 342
436 searchEdit = new QLineEdit( searchBar, "searchEdit" ); 343 searchEdit = new QLineEdit( searchBar, "searchEdit" );
437 searchBar->setStretchableWidget( searchEdit ); 344 searchBar->setStretchableWidget( searchEdit );
438 connect( searchEdit, SIGNAL( textChanged( const QString & ) ), 345 connect( searchEdit, SIGNAL( textChanged( const QString & ) ),
439 this, SLOT( search() ) ); 346 this, SLOT( search() ) );
440 347
441 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), 348 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ),
442 QString::null, 0, this, 0 ); 349 QString::null, 0, this, 0 );
443 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); 350 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
444 a->addTo( searchBar ); 351 a->addTo( searchBar );
445 a->addTo( edit ); 352 a->addTo( edit );
446 353
447 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), 354 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ),
448 QString::null, 0, this, 0 ); 355 QString::null, 0, this, 0 );
449 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); 356 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
450 a->addTo( searchBar ); 357 a->addTo( searchBar );
451 358
452 edit->insertSeparator(); 359 edit->insertSeparator();
453 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), 360 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ),
454 QString::null, 0, this, 0 ); 361 QString::null, 0, this, 0 );
455 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); 362 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) );
456 a->addTo( edit ); 363 a->addTo( edit );
457 364
458 searchBar->hide(); 365 searchBar->hide();
459 366
460 editor = new QpeEditor( this ); 367 editor = new QpeEditor( this );
461 setCentralWidget( editor ); 368 setCentralWidget( editor );
462 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 369 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken );
463 connect( editor, SIGNAL( textChanged() ), 370 connect( editor, SIGNAL( textChanged() ),
464 this, SLOT( editorChanged() ) ); 371 this, SLOT( editorChanged() ) );
465 372
466 QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold); 373 QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold);
467 374
468 Config cfg("TextEdit"); 375 Config cfg("TextEdit");
469 cfg. setGroup ( "Font" ); 376 cfg. setGroup ( "Font" );
470 377
471 QFont defaultFont = editor-> font ( ); 378 QFont defaultFont = editor-> font ( );
472 379
473 QString family = cfg. readEntry ( "Family", defaultFont. family ( )); 380 QString family = cfg. readEntry ( "Family", defaultFont. family ( ));
474 int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( )); 381 int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( ));
475 int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( )); 382 int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( ));
476 bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( )); 383 bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( ));
477 384
478 defaultFont = QFont ( family, size, weight, italic ); 385 defaultFont = QFont ( family, size, weight, italic );
479 editor-> setFont ( defaultFont ); 386 editor-> setFont ( defaultFont );
480 387
481// updateCaption(); 388// updateCaption();
482 389
483 cfg.setGroup ( "View" ); 390 cfg.setGroup ( "View" );
484 391
485 promptExit = cfg.readBoolEntry ( "PromptExit", false ); 392 promptExit = cfg.readBoolEntry ( "PromptExit", false );
486 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); 393 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true );
487 filePerms = cfg.readBoolEntry ( "FilePermissions", false ); 394 filePerms = cfg.readBoolEntry ( "FilePermissions", false );
488 useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); 395 useSearchBar = cfg.readBoolEntry ( "SearchBar", false );
489 startWithNew = cfg.readBoolEntry ( "startNew", true); 396 startWithNew = cfg.readBoolEntry ( "startNew", true);
490 featureAutoSave = cfg.readBoolEntry( "autosave", false); 397 featureAutoSave = cfg.readBoolEntry( "autosave", false);
491 398
492 if(useSearchBar) searchBarAction->setOn(true); 399 if(useSearchBar) searchBarAction->setOn(true);
493 if(promptExit) nAdvanced->setOn( true ); 400 if(promptExit) nAdvanced->setOn( true );
494 if(openDesktop) desktopAction->setOn( true ); 401 if(openDesktop) desktopAction->setOn( true );
495 if(filePerms) filePermAction->setOn( true ); 402 if(filePerms) filePermAction->setOn( true );
496 if(startWithNew) nStart->setOn( true ); 403 if(startWithNew) nStart->setOn( true );
497 if(featureAutoSave) nAutoSave->setOn(true); 404 if(featureAutoSave) nAutoSave->setOn(true);
498 405
499// { 406// {
500// doTimer(true); 407// doTimer(true);
501// } 408// }
502 409
503 bool wrap = cfg. readBoolEntry ( "Wrap", true ); 410 bool wrap = cfg. readBoolEntry ( "Wrap", true );
504 wa-> setOn ( wrap ); 411 wa-> setOn ( wrap );
505 setWordWrap ( wrap ); 412 setWordWrap ( wrap );
506 413
507///////////////// 414/////////////////
508 if( qApp->argc() > 1) { 415 if( qApp->argc() > 1) {
509 currentFileName=qApp->argv()[1]; 416 currentFileName=qApp->argv()[1];
510 417
511 QFileInfo fi(currentFileName); 418 QFileInfo fi(currentFileName);
512 419
513 if(fi.baseName().left(1) == "") { 420 if(fi.baseName().left(1) == "") {
514 openDotFile(currentFileName); 421 openDotFile(currentFileName);
515 } else { 422 } else {
516 openFile(currentFileName); 423 openFile(currentFileName);
517 } 424 }
518 } else { 425 } else {
519 edited1=false; 426 edited1=false;
520 openDotFile(""); 427 openDotFile("");
521 } 428 }
522 429
523 viewSelection = cfg.readNumEntry( "FileView", 0 ); 430 viewSelection = cfg.readNumEntry( "FileView", 0 );
524} 431}
525 432
526TextEdit::~TextEdit() { 433TextEdit::~TextEdit() {
527 qWarning("textedit d'tor"); 434 qWarning("textedit d'tor");
528 delete editor; 435 delete editor;
529} 436}
530 437
531void TextEdit::closeEvent(QCloseEvent *) { 438void TextEdit::closeEvent(QCloseEvent *) {
532 if( edited1 && promptExit) 439 if( edited1 && promptExit)
533 { 440 {
534 switch( savePrompt() ) 441 switch( savePrompt() )
535 { 442 {
536 case 1: 443 case 1:
537 { 444 {
538 saveAs(); 445 saveAs();
539 qApp->quit(); 446 qApp->quit();
540 } 447 }
541 break; 448 break;
542 449
543 case 2: 450 case 2:
544 { 451 {
545 qApp->quit(); 452 qApp->quit();
546 } 453 }
547 break; 454 break;
@@ -1071,192 +978,217 @@ void TextEdit::setDocument(const QString& fileref) {
1071 currentFileName=fileref; 978 currentFileName=fileref;
1072 qDebug("setDocument"); 979 qDebug("setDocument");
1073 QFileInfo fi(currentFileName); 980 QFileInfo fi(currentFileName);
1074 qDebug("basename:"+fi.baseName()+": current filenmame "+currentFileName); 981 qDebug("basename:"+fi.baseName()+": current filenmame "+currentFileName);
1075 if( (fi.baseName().left(1)).isEmpty() ) { 982 if( (fi.baseName().left(1)).isEmpty() ) {
1076 openDotFile(currentFileName); 983 openDotFile(currentFileName);
1077 984
1078 } else { 985 } else {
1079 qDebug("setDoc open"); 986 qDebug("setDoc open");
1080 bFromDocView = true; 987 bFromDocView = true;
1081 openFile(fileref); 988 openFile(fileref);
1082 editor->setEdited(true); 989 editor->setEdited(true);
1083 edited1=false; 990 edited1=false;
1084 edited=true; 991 edited=true;
1085 // fromSetDocument=false; 992 // fromSetDocument=false;
1086 // doSearchBar(); 993 // doSearchBar();
1087 } 994 }
1088 } 995 }
1089 updateCaption( currentFileName); 996 updateCaption( currentFileName);
1090} 997}
1091 998
1092void TextEdit::changeFont() { 999void TextEdit::changeFont() {
1093 QDialog *d = new QDialog ( this, "FontDialog", true ); 1000 QDialog *d = new QDialog ( this, "FontDialog", true );
1094 d-> setCaption ( tr( "Choose font" )); 1001 d-> setCaption ( tr( "Choose font" ));
1095 QBoxLayout *lay = new QVBoxLayout ( d ); 1002 QBoxLayout *lay = new QVBoxLayout ( d );
1096 OFontSelector *ofs = new OFontSelector ( true, d ); 1003 OFontSelector *ofs = new OFontSelector ( true, d );
1097 lay-> addWidget ( ofs ); 1004 lay-> addWidget ( ofs );
1098 ofs-> setSelectedFont ( editor-> font ( )); 1005 ofs-> setSelectedFont ( editor-> font ( ));
1099 1006
1100 d-> showMaximized ( ); 1007 d-> showMaximized ( );
1101 if ( d-> exec ( ) == QDialog::Accepted ) 1008 if ( d-> exec ( ) == QDialog::Accepted )
1102 editor-> setFont ( ofs-> selectedFont ( )); 1009 editor-> setFont ( ofs-> selectedFont ( ));
1103 delete d; 1010 delete d;
1104 1011
1105} 1012}
1106 1013
1107void TextEdit::editDelete() { 1014void TextEdit::editDelete() {
1108 switch ( QMessageBox::warning(this,tr("Text Editor"), 1015 switch ( QMessageBox::warning(this,tr("Text Editor"),
1109 tr("Do you really want<BR>to <B>delete</B> " 1016 tr("Do you really want<BR>to <B>delete</B> "
1110 "the current file\nfrom the disk?<BR>This is " 1017 "the current file\nfrom the disk?<BR>This is "
1111 "<B>irreversable!!</B>"), 1018 "<B>irreversable!!</B>"),
1112 tr("Yes"),tr("No"),0,0,1) ) { 1019 tr("Yes"),tr("No"),0,0,1) ) {
1113 case 0: 1020 case 0:
1114 if(doc) { 1021 if(doc) {
1115 doc->removeFiles(); 1022 doc->removeFiles();
1116 clear(); 1023 clear();
1117 setCaption( tr("Text Editor") ); 1024 setCaption( tr("Text Editor") );
1118 } 1025 }
1119 break; 1026 break;
1120 case 1: 1027 case 1:
1121 // exit 1028 // exit
1122 break; 1029 break;
1123 }; 1030 };
1124} 1031}
1125 1032
1126void TextEdit::changeStartConfig( bool b ) { 1033void TextEdit::changeStartConfig( bool b ) {
1127 startWithNew=b; 1034 startWithNew=b;
1128 Config cfg("TextEdit"); 1035 Config cfg("TextEdit");
1129 cfg.setGroup("View"); 1036 cfg.setGroup("View");
1130 cfg.writeEntry("startNew",b); 1037 cfg.writeEntry("startNew",b);
1131 update(); 1038 update();
1132} 1039}
1133 1040
1134void TextEdit::editorChanged() { 1041void TextEdit::editorChanged() {
1135// qDebug("editor changed"); 1042// qDebug("editor changed");
1136 if( /*editor->edited() &&*/ /*edited && */!edited1) { 1043 if( /*editor->edited() &&*/ /*edited && */!edited1) {
1137 setCaption( "*"+caption()); 1044 setCaption( "*"+caption());
1138 edited1=true; 1045 edited1=true;
1139 } 1046 }
1140 edited=true; 1047 edited=true;
1141} 1048}
1142 1049
1143void TextEdit::receive(const QCString&msg, const QByteArray &) { 1050void TextEdit::receive(const QCString&msg, const QByteArray &) {
1144 qDebug("QCop "+msg); 1051 qDebug("QCop "+msg);
1145 if ( msg == "setDocument(QString)" ) { 1052 if ( msg == "setDocument(QString)" ) {
1146 qDebug("bugger all"); 1053 qDebug("bugger all");
1147 1054
1148 } 1055 }
1149 1056
1150} 1057}
1151 1058
1152void TextEdit::doAbout() { 1059void TextEdit::doAbout() {
1153 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>" 1060 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>"
1154 "2000 Trolltech AS, and<BR>" 1061 "2000 Trolltech AS, and<BR>"
1155 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>" 1062 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>"
1156 "and is licensed under the GPL")); 1063 "and is licensed under the GPL"));
1157} 1064}
1158 1065
1159void TextEdit::doPrompt(bool b) { 1066void TextEdit::doPrompt(bool b) {
1160 promptExit=b; 1067 promptExit=b;
1161 Config cfg("TextEdit"); 1068 Config cfg("TextEdit");
1162 cfg.setGroup ( "View" ); 1069 cfg.setGroup ( "View" );
1163 cfg.writeEntry ( "PromptExit", b); 1070 cfg.writeEntry ( "PromptExit", b);
1164} 1071}
1165 1072
1166void TextEdit::doDesktop(bool b) { 1073void TextEdit::doDesktop(bool b) {
1167 openDesktop=b; 1074 openDesktop=b;
1168 Config cfg("TextEdit"); 1075 Config cfg("TextEdit");
1169 cfg.setGroup ( "View" ); 1076 cfg.setGroup ( "View" );
1170 cfg.writeEntry ( "OpenDesktop", b); 1077 cfg.writeEntry ( "OpenDesktop", b);
1171} 1078}
1172 1079
1173void TextEdit::doFilePerms(bool b) { 1080void TextEdit::doFilePerms(bool b) {
1174 filePerms=b; 1081 filePerms=b;
1175 Config cfg("TextEdit"); 1082 Config cfg("TextEdit");
1176 cfg.setGroup ( "View" ); 1083 cfg.setGroup ( "View" );
1177 cfg.writeEntry ( "FilePermissions", b); 1084 cfg.writeEntry ( "FilePermissions", b);
1178} 1085}
1179 1086
1180void TextEdit::editPasteTimeDate() { 1087void TextEdit::editPasteTimeDate() {
1181#ifndef QT_NO_CLIPBOARD 1088#ifndef QT_NO_CLIPBOARD
1182 QClipboard *cb = QApplication::clipboard(); 1089 QClipboard *cb = QApplication::clipboard();
1183 QDateTime dt = QDateTime::currentDateTime(); 1090 QDateTime dt = QDateTime::currentDateTime();
1184 cb->setText( dt.toString()); 1091 cb->setText( dt.toString());
1185 editor->paste(); 1092 editor->paste();
1186#endif 1093#endif
1187} 1094}
1188 1095
1189int TextEdit::savePrompt() 1096int TextEdit::savePrompt()
1190{ 1097{
1191 switch( QMessageBox::information( 0, (tr("Textedit")), 1098 switch( QMessageBox::information( 0, (tr("Textedit")),
1192 (tr("Textedit detected\n" 1099 (tr("Textedit detected\n"
1193 "you have unsaved changes\n" 1100 "you have unsaved changes\n"
1194 "Go ahead and save?\n")), 1101 "Go ahead and save?\n")),
1195 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) ) 1102 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
1196 { 1103 {
1197 case 0: 1104 case 0:
1198 { 1105 {
1199 return 1; 1106 return 1;
1200 } 1107 }
1201 break; 1108 break;
1202 1109
1203 case 1: 1110 case 1:
1204 { 1111 {
1205 return 2; 1112 return 2;
1206 } 1113 }
1207 break; 1114 break;
1208 1115
1209 case 2: 1116 case 2:
1210 { 1117 {
1211 return -1; 1118 return -1;
1212 } 1119 }
1213 break; 1120 break;
1214 }; 1121 };
1215 1122
1216 return 0; 1123 return 0;
1217} 1124}
1218 1125
1219void TextEdit::timerCrank() 1126void TextEdit::timerCrank()
1220{ 1127{
1221 if(featureAutoSave && edited1) 1128 if(featureAutoSave && edited1)
1222 { 1129 {
1223 if(currentFileName.isEmpty()) 1130 if(currentFileName.isEmpty())
1224 { 1131 {
1225 currentFileName = QDir::homeDirPath()+"/textedit.tmp"; 1132 currentFileName = QDir::homeDirPath()+"/textedit.tmp";
1226 saveAs(); 1133 saveAs();
1227 } 1134 }
1228 else 1135 else
1229 { 1136 {
1230// qDebug("autosave"); 1137// qDebug("autosave");
1231 save(); 1138 save();
1232 } 1139 }
1233 setTimer(); 1140 setTimer();
1234 } 1141 }
1235} 1142}
1236 1143
1237void TextEdit::doTimer(bool b) 1144void TextEdit::doTimer(bool b)
1238{ 1145{
1239 Config cfg("TextEdit"); 1146 Config cfg("TextEdit");
1240 cfg.setGroup ( "View" ); 1147 cfg.setGroup ( "View" );
1241 cfg.writeEntry ( "autosave", b); 1148 cfg.writeEntry ( "autosave", b);
1242 featureAutoSave = b; 1149 featureAutoSave = b;
1243 nAutoSave->setOn(b); 1150 nAutoSave->setOn(b);
1244 if(b) 1151 if(b)
1245 { 1152 {
1246// qDebug("doTimer true"); 1153// qDebug("doTimer true");
1247 setTimer(); 1154 setTimer();
1248 } 1155 }
1249// else 1156// else
1250// qDebug("doTimer false"); 1157// qDebug("doTimer false");
1251} 1158}
1252 1159
1253void TextEdit::setTimer() 1160void TextEdit::setTimer()
1254{ 1161{
1255if(featureAutoSave) 1162if(featureAutoSave)
1256 { 1163 {
1257// qDebug("setting autosave"); 1164// qDebug("setting autosave");
1258 QTimer *timer = new QTimer(this ); 1165 QTimer *timer = new QTimer(this );
1259 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) ); 1166 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) );
1260 timer->start( 300000, true); //5 minutes 1167 timer->start( 300000, true); //5 minutes
1261 } 1168 }
1262} 1169}
1170
1171void TextEdit::gotoLine() {
1172
1173 QWidget *d = QApplication::desktop();
1174 gotoEdit = new QLineEdit( 0, "Goto line");
1175
1176 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2));
1177 gotoEdit->setFrame(true);
1178 gotoEdit->show();
1179 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto()));
1180}
1181
1182void TextEdit::doGoto() {
1183 QString number = gotoEdit->text();
1184 gotoEdit->hide();
1185 if(gotoEdit) delete gotoEdit;
1186 bool ok;
1187 int lineNumber = number.toInt(&ok, 10);
1188 if(editor->numLines() < lineNumber)
1189 QMessageBox::message(tr("Text Edit"),tr("Not enough lines"));
1190 else
1191 {
1192 editor->setCursorPosition(lineNumber, 0, false);
1193 }
1194}