summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/textedit.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index b81f3b4..ce868d6 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -1,1194 +1,1198 @@
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#include "resource.h" 58#include "resource.h"
59 59
60#if QT_VERSION < 300 60#if QT_VERSION < 300
61 61
62class QpeEditor : public QMultiLineEdit 62class QpeEditor : public QMultiLineEdit
63{ 63{
64 64
65public: 65public:
66 QpeEditor( QWidget *parent, const char * name = 0 ) 66 QpeEditor( QWidget *parent, const char * name = 0 )
67 : QMultiLineEdit( parent, name ) { 67 : QMultiLineEdit( parent, name ) {
68 clearTableFlags(); 68 clearTableFlags();
69 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar ); 69 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar );
70} 70}
71 71
72 void find( const QString &txt, bool caseSensitive, 72 void find( const QString &txt, bool caseSensitive,
73 bool backwards ); 73 bool backwards );
74protected: 74protected:
75 bool markIt; 75 bool markIt;
76 int line1, line2, col1, col2; 76 int line1, line2, col1, col2;
77 void mousePressEvent( QMouseEvent * ); 77 void mousePressEvent( QMouseEvent * );
78 void mouseReleaseEvent( QMouseEvent * ); 78 void mouseReleaseEvent( QMouseEvent * );
79 79
80//public slots: 80//public slots:
81 /* 81 /*
82signals: 82signals:
83 void notFound(); 83 void notFound();
84 void searchWrapped(); 84 void searchWrapped();
85 */ 85 */
86 86
87private: 87private:
88 88
89}; 89};
90 90
91void QpeEditor::mousePressEvent( QMouseEvent *e ) { 91void QpeEditor::mousePressEvent( QMouseEvent *e ) {
92 switch(e->button()) { 92 switch(e->button()) {
93 case RightButton: 93 case RightButton:
94 { //rediculous workaround for qt popup menu 94 { //rediculous workaround for qt popup menu
95 //and the hold right click mechanism 95 //and the hold right click mechanism
96 this->setSelection( line1, col1, line2, col2); 96 this->setSelection( line1, col1, line2, col2);
97 QMultiLineEdit::mousePressEvent( e ); 97 QMultiLineEdit::mousePressEvent( e );
98 markIt = false; 98 markIt = false;
99 } 99 }
100 break; 100 break;
101 default: 101 default:
102 { 102 {
103 if(!markIt) { 103 if(!markIt) {
104 int line, col; 104 int line, col;
105 this->getCursorPosition(&line, &col); 105 this->getCursorPosition(&line, &col);
106 line1=line2=line; 106 line1=line2=line;
107 col1=col2=col; 107 col1=col2=col;
108 } 108 }
109 QMultiLineEdit::mousePressEvent( e ); 109 QMultiLineEdit::mousePressEvent( e );
110 } 110 }
111 break; 111 break;
112 }; 112 };
113} 113}
114 114
115void QpeEditor::mouseReleaseEvent( QMouseEvent * ) { 115void QpeEditor::mouseReleaseEvent( QMouseEvent * ) {
116 if(this->hasMarkedText()) { 116 if(this->hasMarkedText()) {
117 markIt = true; 117 markIt = true;
118 this->getMarkedRegion( &line1, &col1, &line2, & col2 ); 118 this->getMarkedRegion( &line1, &col1, &line2, & col2 );
119 } else { 119 } else {
120 markIt = false; 120 markIt = false;
121 } 121 }
122} 122}
123 123
124void QpeEditor::find ( const QString &txt, bool caseSensitive, 124void QpeEditor::find ( const QString &txt, bool caseSensitive,
125 bool backwards ) 125 bool backwards )
126{ 126{
127 static bool wrap = false; 127 static bool wrap = false;
128 int line, col; 128 int line, col;
129 if ( wrap ) { 129 if ( wrap ) {
130 if ( !backwards ) 130 if ( !backwards )
131 line = col = 0; 131 line = col = 0;
132 wrap = false; 132 wrap = false;
133 // emit searchWrapped(); 133 // emit searchWrapped();
134 } else { 134 } else {
135 getCursorPosition( &line, &col ); 135 getCursorPosition( &line, &col );
136 } 136 }
137 //ignore backwards for now.... 137 //ignore backwards for now....
138 if ( !backwards ) { 138 if ( !backwards ) {
139 for ( ; ; ) { 139 for ( ; ; ) {
140 if ( line >= numLines() ) { 140 if ( line >= numLines() ) {
141 wrap = true; 141 wrap = true;
142 //emit notFound(); 142 //emit notFound();
143 break; 143 break;
144 } 144 }
145 int findCol = getString( line )->find( txt, col, caseSensitive ); 145 int findCol = getString( line )->find( txt, col, caseSensitive );
146 if ( findCol >= 0 ) { 146 if ( findCol >= 0 ) {
147 setCursorPosition( line, findCol, false ); 147 setCursorPosition( line, findCol, false );
148 col = findCol + txt.length(); 148 col = findCol + txt.length();
149 setCursorPosition( line, col, true ); 149 setCursorPosition( line, col, true );
150 150
151 //found = true; 151 //found = true;
152 break; 152 break;
153 } 153 }
154 line++; 154 line++;
155 col = 0; 155 col = 0;
156 } 156 }
157 } 157 }
158} 158}
159 159
160 160
161#else 161#else
162 162
163#error "Must make a QpeEditor that inherits QTextEdit" 163#error "Must make a QpeEditor that inherits QTextEdit"
164 164
165#endif 165#endif
166 166
167 167
168static const int nfontsizes = 6; 168static const int nfontsizes = 6;
169static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; 169static const int fontsize[nfontsizes] = {8,10,12,14,18,24};
170 170
171TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) 171TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
172 : QMainWindow( parent, name, f ), bFromDocView( false ) 172 : QMainWindow( parent, name, f ), bFromDocView( false )
173{ 173{
174 doc = 0; 174 doc = 0;
175 edited=false; 175 edited=false;
176 fromSetDocument=false; 176 fromSetDocument=false;
177 177
178 setToolBarsMovable( false ); 178 setToolBarsMovable( false );
179 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); 179 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
180 180
181 channel = new QCopChannel( "QPE/Application/textedit", this ); 181 channel = new QCopChannel( "QPE/Application/textedit", this );
182 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 182 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
183 this, SLOT(receive(const QCString&, const QByteArray&)) ); 183 this, SLOT(receive(const QCString&, const QByteArray&)) );
184 184
185 setIcon( Resource::loadPixmap( "TextEditor" ) ); 185 setIcon( Resource::loadPixmap( "TextEditor" ) );
186 186
187 QPEToolBar *bar = new QPEToolBar( this ); 187 QPEToolBar *bar = new QPEToolBar( this );
188 bar->setHorizontalStretchable( true ); 188 bar->setHorizontalStretchable( true );
189 menu = bar; 189 menu = bar;
190 190
191 QPEMenuBar *mb = new QPEMenuBar( bar ); 191 QPEMenuBar *mb = new QPEMenuBar( bar );
192 QPopupMenu *file = new QPopupMenu( this ); 192 QPopupMenu *file = new QPopupMenu( this );
193 QPopupMenu *edit = new QPopupMenu( this ); 193 QPopupMenu *edit = new QPopupMenu( this );
194 QPopupMenu *advancedMenu = new QPopupMenu(this); 194 QPopupMenu *advancedMenu = new QPopupMenu(this);
195 195
196 font = new QPopupMenu( this ); 196 font = new QPopupMenu( this );
197 197
198 bar = new QPEToolBar( this ); 198 bar = new QPEToolBar( this );
199 editBar = bar; 199 editBar = bar;
200 200
201 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), 201 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ),
202 QString::null, 0, this, 0 ); 202 QString::null, 0, this, 0 );
203 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 203 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
204// a->addTo( bar ); 204// a->addTo( bar );
205 a->addTo( file ); 205 a->addTo( file );
206 206
207 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), 207 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ),
208 QString::null, 0, this, 0 ); 208 QString::null, 0, this, 0 );
209 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); 209 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
210 a->addTo( bar ); 210 a->addTo( bar );
211 a->addTo( file ); 211 a->addTo( file );
212 212
213 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , 213 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) ,
214 QString::null, 0, this, 0 ); 214 QString::null, 0, this, 0 );
215 connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); 215 connect( a, SIGNAL( activated() ), this, SLOT( save() ) );
216 file->insertSeparator(); 216 file->insertSeparator();
217 a->addTo( bar ); 217 a->addTo( bar );
218 a->addTo( file ); 218 a->addTo( file );
219 219
220 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , 220 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) ,
221 QString::null, 0, this, 0 ); 221 QString::null, 0, this, 0 );
222 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); 222 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) );
223 a->addTo( file ); 223 a->addTo( file );
224 224
225 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), 225 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ),
226 QString::null, 0, this, 0 ); 226 QString::null, 0, this, 0 );
227 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); 227 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
228 a->addTo( editBar ); 228 a->addTo( editBar );
229 a->addTo( edit ); 229 a->addTo( edit );
230 230
231 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), 231 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ),
232 QString::null, 0, this, 0 ); 232 QString::null, 0, this, 0 );
233 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); 233 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
234 a->addTo( editBar ); 234 a->addTo( editBar );
235 a->addTo( edit ); 235 a->addTo( edit );
236 236
237 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), 237 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ),
238 QString::null, 0, this, 0 ); 238 QString::null, 0, this, 0 );
239 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); 239 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
240 a->addTo( editBar ); 240 a->addTo( editBar );
241 a->addTo( edit ); 241 a->addTo( edit );
242 242
243 243
244#ifndef QT_NO_CLIPBOARD 244#ifndef QT_NO_CLIPBOARD
245 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), 245 a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ),
246 QString::null, 0, this, 0 ); 246 QString::null, 0, this, 0 );
247 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); 247 connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) );
248 a->addTo( edit ); 248 a->addTo( edit );
249#endif 249#endif
250 250
251 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), 251 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ),
252 QString::null, 0, this, 0 ); 252 QString::null, 0, this, 0 );
253 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); 253 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) );
254 edit->insertSeparator(); 254 edit->insertSeparator();
255 a->addTo( bar ); 255 a->addTo( bar );
256 a->addTo( edit ); 256 a->addTo( edit );
257 257
258 a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ), 258 a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ),
259 QString::null, 0, this, 0 ); 259 QString::null, 0, this, 0 );
260 connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) ); 260 connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) );
261 a->addTo( edit ); 261 a->addTo( edit );
262 262
263 263
264 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); 264 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 );
265 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); 265 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) );
266 zin->addTo( font ); 266 zin->addTo( font );
267 267
268 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); 268 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 );
269 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); 269 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) );
270 zout->addTo( font ); 270 zout->addTo( font );
271 271
272 font->insertSeparator(); 272 font->insertSeparator();
273 273
274 font->insertItem(tr("Font"), this, SLOT(changeFont()) ); 274 font->insertItem(tr("Font"), this, SLOT(changeFont()) );
275 275
276 font->insertSeparator(); 276 font->insertSeparator();
277 font->insertItem(tr("Advanced Features"), advancedMenu); 277 font->insertItem(tr("Advanced Features"), advancedMenu);
278 278
279 QAction *wa = new QAction( tr("Wrap lines"), 279 QAction *wa = new QAction( tr("Wrap lines"),
280 QString::null, 0, this, 0 ); 280 QString::null, 0, this, 0 );
281 connect( wa, SIGNAL( toggled(bool) ), 281 connect( wa, SIGNAL( toggled(bool) ),
282 this, SLOT( setWordWrap(bool) ) ); 282 this, SLOT( setWordWrap(bool) ) );
283 wa->setToggleAction(true); 283 wa->setToggleAction(true);
284 wa->addTo( advancedMenu); 284 wa->addTo( advancedMenu);
285 285
286 nStart = new QAction( tr("Start with new file"), 286 nStart = new QAction( tr("Start with new file"),
287 QString::null, 0, this, 0 ); 287 QString::null, 0, this, 0 );
288 connect( nStart, SIGNAL( toggled(bool) ), 288 connect( nStart, SIGNAL( toggled(bool) ),
289 this, SLOT( changeStartConfig(bool) ) ); 289 this, SLOT( changeStartConfig(bool) ) );
290 nStart->setToggleAction(true); 290 nStart->setToggleAction(true);
291 nStart->addTo( advancedMenu ); 291 nStart->addTo( advancedMenu );
292 nStart->setEnabled(false); 292 nStart->setEnabled(false);
293 293
294 nAdvanced = new QAction( tr("Prompt on Exit"), 294 nAdvanced = new QAction( tr("Prompt on Exit"),
295 QString::null, 0, this, 0 ); 295 QString::null, 0, this, 0 );
296 connect( nAdvanced, SIGNAL( toggled(bool) ), 296 connect( nAdvanced, SIGNAL( toggled(bool) ),
297 this, SLOT( doPrompt(bool) ) ); 297 this, SLOT( doPrompt(bool) ) );
298 nAdvanced->setToggleAction(true); 298 nAdvanced->setToggleAction(true);
299 nAdvanced->addTo( advancedMenu ); 299 nAdvanced->addTo( advancedMenu );
300 300
301 desktopAction = new QAction( tr("Always open linked file"), 301 desktopAction = new QAction( tr("Always open linked file"),
302 QString::null, 0, this, 0 ); 302 QString::null, 0, this, 0 );
303 connect( desktopAction, SIGNAL( toggled(bool) ), 303 connect( desktopAction, SIGNAL( toggled(bool) ),
304 this, SLOT( doDesktop(bool) ) ); 304 this, SLOT( doDesktop(bool) ) );
305 desktopAction->setToggleAction(true); 305 desktopAction->setToggleAction(true);
306 desktopAction->addTo( advancedMenu); 306 desktopAction->addTo( advancedMenu);
307 307
308 filePermAction = new QAction( tr("File Permissions"), 308 filePermAction = new QAction( tr("File Permissions"),
309 QString::null, 0, this, 0 ); 309 QString::null, 0, this, 0 );
310 connect( filePermAction, SIGNAL( toggled(bool) ), 310 connect( filePermAction, SIGNAL( toggled(bool) ),
311 this, SLOT( doFilePerms(bool) ) ); 311 this, SLOT( doFilePerms(bool) ) );
312 filePermAction->setToggleAction(true); 312 filePermAction->setToggleAction(true);
313 filePermAction->addTo( advancedMenu); 313 filePermAction->addTo( advancedMenu);
314 314
315 searchBarAction = new QAction( tr("Search Bar Open"), 315 searchBarAction = new QAction( tr("Search Bar Open"),
316 QString::null, 0, this, 0 ); 316 QString::null, 0, this, 0 );
317 connect( searchBarAction, SIGNAL( toggled(bool) ), 317 connect( searchBarAction, SIGNAL( toggled(bool) ),
318 this, SLOT( setSearchBar(bool) ) ); 318 this, SLOT( setSearchBar(bool) ) );
319 searchBarAction->setToggleAction(true); 319 searchBarAction->setToggleAction(true);
320 searchBarAction->addTo( advancedMenu); 320 searchBarAction->addTo( advancedMenu);
321 321
322 nAutoSave = new QAction( tr("Auto Save 5 min."), 322 nAutoSave = new QAction( tr("Auto Save 5 min."),
323 QString::null, 0, this, 0 ); 323 QString::null, 0, this, 0 );
324 connect( nAutoSave, SIGNAL( toggled(bool) ), 324 connect( nAutoSave, SIGNAL( toggled(bool) ),
325 this, SLOT( doTimer(bool) ) ); 325 this, SLOT( doTimer(bool) ) );
326 nAutoSave->setToggleAction(true); 326 nAutoSave->setToggleAction(true);
327 nAutoSave->addTo( advancedMenu); 327 nAutoSave->addTo( advancedMenu);
328 328
329 329
330 font->insertSeparator(); 330 font->insertSeparator();
331 331
332 font->insertItem(tr("About"), this, SLOT( doAbout()) ); 332 font->insertItem(tr("About"), this, SLOT( doAbout()) );
333 333
334 mb->insertItem( tr( "File" ), file ); 334 mb->insertItem( tr( "File" ), file );
335 mb->insertItem( tr( "Edit" ), edit ); 335 mb->insertItem( tr( "Edit" ), edit );
336 mb->insertItem( tr( "View" ), font ); 336 mb->insertItem( tr( "View" ), font );
337 337
338 searchBar = new QPEToolBar(this); 338 searchBar = new QPEToolBar(this);
339 addToolBar( searchBar, "Search", QMainWindow::Top, true ); 339 addToolBar( searchBar, "Search", QMainWindow::Top, true );
340 340
341 searchBar->setHorizontalStretchable( true ); 341 searchBar->setHorizontalStretchable( true );
342 342
343 searchEdit = new QLineEdit( searchBar, "searchEdit" ); 343 searchEdit = new QLineEdit( searchBar, "searchEdit" );
344 searchBar->setStretchableWidget( searchEdit ); 344 searchBar->setStretchableWidget( searchEdit );
345 connect( searchEdit, SIGNAL( textChanged( const QString & ) ), 345 connect( searchEdit, SIGNAL( textChanged( const QString & ) ),
346 this, SLOT( search() ) ); 346 this, SLOT( search() ) );
347 347
348 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), 348 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ),
349 QString::null, 0, this, 0 ); 349 QString::null, 0, this, 0 );
350 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); 350 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
351 a->addTo( searchBar ); 351 a->addTo( searchBar );
352 a->addTo( edit ); 352 a->addTo( edit );
353 353
354 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), 354 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ),
355 QString::null, 0, this, 0 ); 355 QString::null, 0, this, 0 );
356 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); 356 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
357 a->addTo( searchBar ); 357 a->addTo( searchBar );
358 358
359 edit->insertSeparator(); 359 edit->insertSeparator();
360 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), 360 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ),
361 QString::null, 0, this, 0 ); 361 QString::null, 0, this, 0 );
362 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); 362 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) );
363 a->addTo( edit ); 363 a->addTo( edit );
364 364
365 searchBar->hide(); 365 searchBar->hide();
366 366
367 editor = new QpeEditor( this ); 367 editor = new QpeEditor( this );
368 setCentralWidget( editor ); 368 setCentralWidget( editor );
369 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 369 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken );
370 connect( editor, SIGNAL( textChanged() ), 370 connect( editor, SIGNAL( textChanged() ),
371 this, SLOT( editorChanged() ) ); 371 this, SLOT( editorChanged() ) );
372 372
373 QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold); 373 QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold);
374 374
375 Config cfg("TextEdit"); 375 Config cfg("TextEdit");
376 cfg. setGroup ( "Font" ); 376 cfg. setGroup ( "Font" );
377 377
378 QFont defaultFont = editor-> font ( ); 378 QFont defaultFont = editor-> font ( );
379 379
380 QString family = cfg. readEntry ( "Family", defaultFont. family ( )); 380 QString family = cfg. readEntry ( "Family", defaultFont. family ( ));
381 int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( )); 381 int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( ));
382 int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( )); 382 int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( ));
383 bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( )); 383 bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( ));
384 384
385 defaultFont = QFont ( family, size, weight, italic ); 385 defaultFont = QFont ( family, size, weight, italic );
386 editor-> setFont ( defaultFont ); 386 editor-> setFont ( defaultFont );
387 387
388// updateCaption(); 388// updateCaption();
389 389
390 cfg.setGroup ( "View" ); 390 cfg.setGroup ( "View" );
391 391
392 promptExit = cfg.readBoolEntry ( "PromptExit", false ); 392 promptExit = cfg.readBoolEntry ( "PromptExit", false );
393 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); 393 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true );
394 filePerms = cfg.readBoolEntry ( "FilePermissions", false ); 394 filePerms = cfg.readBoolEntry ( "FilePermissions", false );
395 useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); 395 useSearchBar = cfg.readBoolEntry ( "SearchBar", false );
396 startWithNew = cfg.readBoolEntry ( "startNew", true); 396 startWithNew = cfg.readBoolEntry ( "startNew", true);
397 featureAutoSave = cfg.readBoolEntry( "autosave", false); 397 featureAutoSave = cfg.readBoolEntry( "autosave", false);
398 398
399 if(useSearchBar) searchBarAction->setOn(true); 399 if(useSearchBar) searchBarAction->setOn(true);
400 if(promptExit) nAdvanced->setOn( true ); 400 if(promptExit) nAdvanced->setOn( true );
401 if(openDesktop) desktopAction->setOn( true ); 401 if(openDesktop) desktopAction->setOn( true );
402 if(filePerms) filePermAction->setOn( true ); 402 if(filePerms) filePermAction->setOn( true );
403 if(startWithNew) nStart->setOn( true ); 403 if(startWithNew) nStart->setOn( true );
404 if(featureAutoSave) nAutoSave->setOn(true); 404 if(featureAutoSave) nAutoSave->setOn(true);
405 405
406// { 406// {
407// doTimer(true); 407// doTimer(true);
408// } 408// }
409 409
410 bool wrap = cfg. readBoolEntry ( "Wrap", true ); 410 bool wrap = cfg. readBoolEntry ( "Wrap", true );
411 wa-> setOn ( wrap ); 411 wa-> setOn ( wrap );
412 setWordWrap ( wrap ); 412 setWordWrap ( wrap );
413 413
414///////////////// 414/////////////////
415 if( qApp->argc() > 1) { 415 if( qApp->argc() > 1) {
416 currentFileName=qApp->argv()[1]; 416 currentFileName=qApp->argv()[1];
417 417
418 QFileInfo fi(currentFileName); 418 QFileInfo fi(currentFileName);
419 419
420 if(fi.baseName().left(1) == "") { 420 if(fi.baseName().left(1) == "") {
421 openDotFile(currentFileName); 421 openDotFile(currentFileName);
422 } else { 422 } else {
423 openFile(currentFileName); 423 openFile(currentFileName);
424 } 424 }
425 } else { 425 } else {
426 edited1=false; 426 edited1=false;
427 openDotFile(""); 427 openDotFile("");
428 } 428 }
429 429
430 viewSelection = cfg.readNumEntry( "FileView", 0 ); 430 viewSelection = cfg.readNumEntry( "FileView", 0 );
431} 431}
432 432
433TextEdit::~TextEdit() { 433TextEdit::~TextEdit() {
434 qWarning("textedit d'tor"); 434 qWarning("textedit d'tor");
435 delete editor; 435 delete editor;
436} 436}
437 437
438void TextEdit::closeEvent(QCloseEvent *) { 438void TextEdit::closeEvent(QCloseEvent *) {
439 if( edited1 && promptExit) 439 if( edited1 && promptExit)
440 { 440 {
441 switch( savePrompt() ) 441 switch( savePrompt() )
442 { 442 {
443 case 1: 443 case 1:
444 { 444 {
445 saveAs(); 445 saveAs();
446 qApp->quit(); 446 qApp->quit();
447 } 447 }
448 break; 448 break;
449 449
450 case 2: 450 case 2:
451 { 451 {
452 qApp->quit(); 452 qApp->quit();
453 } 453 }
454 break; 454 break;
455 455
456 case -1: 456 case -1:
457 break; 457 break;
458 }; 458 };
459 } 459 }
460 else 460 else
461 qApp->quit(); 461 qApp->quit();
462 462
463} 463}
464 464
465void TextEdit::cleanUp() { 465void TextEdit::cleanUp() {
466 466
467 Config cfg ( "TextEdit" ); 467 Config cfg ( "TextEdit" );
468 cfg. setGroup ( "Font" ); 468 cfg. setGroup ( "Font" );
469 QFont f = editor->font(); 469 QFont f = editor->font();
470 cfg.writeEntry ( "Family", f. family ( )); 470 cfg.writeEntry ( "Family", f. family ( ));
471 cfg.writeEntry ( "Size", f. pointSize ( )); 471 cfg.writeEntry ( "Size", f. pointSize ( ));
472 cfg.writeEntry ( "Weight", f. weight ( )); 472 cfg.writeEntry ( "Weight", f. weight ( ));
473 cfg.writeEntry ( "Italic", f. italic ( )); 473 cfg.writeEntry ( "Italic", f. italic ( ));
474 474
475 cfg.setGroup ( "View" ); 475 cfg.setGroup ( "View" );
476 cfg.writeEntry ( "Wrap", editor->wordWrap() == QMultiLineEdit::WidgetWidth ); 476 cfg.writeEntry ( "Wrap", editor->wordWrap() == QMultiLineEdit::WidgetWidth );
477 cfg.writeEntry ( "FileView", viewSelection ); 477 cfg.writeEntry ( "FileView", viewSelection );
478 478
479 cfg.writeEntry ( "PromptExit", promptExit ); 479 cfg.writeEntry ( "PromptExit", promptExit );
480 cfg.writeEntry ( "OpenDesktop", openDesktop ); 480 cfg.writeEntry ( "OpenDesktop", openDesktop );
481 cfg.writeEntry ( "FilePermissions", filePerms ); 481 cfg.writeEntry ( "FilePermissions", filePerms );
482 cfg.writeEntry ( "SearchBar", useSearchBar ); 482 cfg.writeEntry ( "SearchBar", useSearchBar );
483 cfg.writeEntry ( "startNew", startWithNew ); 483 cfg.writeEntry ( "startNew", startWithNew );
484 484
485} 485}
486 486
487 487
488void TextEdit::accept() { 488void TextEdit::accept() {
489 if( edited1) 489 if( edited1)
490 saveAs(); 490 saveAs();
491 qApp->quit(); 491 qApp->quit();
492} 492}
493 493
494void TextEdit::zoomIn() { 494void TextEdit::zoomIn() {
495 setFontSize(editor->font().pointSize()+1,false); 495 setFontSize(editor->font().pointSize()+1,false);
496} 496}
497 497
498void TextEdit::zoomOut() { 498void TextEdit::zoomOut() {
499 setFontSize(editor->font().pointSize()-1,true); 499 setFontSize(editor->font().pointSize()-1,true);
500} 500}
501 501
502 502
503void TextEdit::setFontSize(int sz, bool round_down_not_up) { 503void TextEdit::setFontSize(int sz, bool round_down_not_up) {
504 int s=10; 504 int s=10;
505 for (int i=0; i<nfontsizes; i++) { 505 for (int i=0; i<nfontsizes; i++) {
506 if ( fontsize[i] == sz ) { 506 if ( fontsize[i] == sz ) {
507 s = sz; 507 s = sz;
508 break; 508 break;
509 } else if ( round_down_not_up ) { 509 } else if ( round_down_not_up ) {
510 if ( fontsize[i] < sz ) 510 if ( fontsize[i] < sz )
511 s = fontsize[i]; 511 s = fontsize[i];
512 } else { 512 } else {
513 if ( fontsize[i] > sz ) { 513 if ( fontsize[i] > sz ) {
514 s = fontsize[i]; 514 s = fontsize[i];
515 break; 515 break;
516 } 516 }
517 } 517 }
518 } 518 }
519 519
520 QFont f = editor->font(); 520 QFont f = editor->font();
521 f.setPointSize(s); 521 f.setPointSize(s);
522 editor->setFont(f); 522 editor->setFont(f);
523 523
524 zin->setEnabled(s != fontsize[nfontsizes-1]); 524 zin->setEnabled(s != fontsize[nfontsizes-1]);
525 zout->setEnabled(s != fontsize[0]); 525 zout->setEnabled(s != fontsize[0]);
526} 526}
527 527
528void TextEdit::setBold(bool y) { 528void TextEdit::setBold(bool y) {
529 QFont f = editor->font(); 529 QFont f = editor->font();
530 f.setBold(y); 530 f.setBold(y);
531 editor->setFont(f); 531 editor->setFont(f);
532} 532}
533 533
534void TextEdit::setItalic(bool y) { 534void TextEdit::setItalic(bool y) {
535 QFont f = editor->font(); 535 QFont f = editor->font();
536 f.setItalic(y); 536 f.setItalic(y);
537 editor->setFont(f); 537 editor->setFont(f);
538} 538}
539 539
540void TextEdit::setWordWrap(bool y) { 540void TextEdit::setWordWrap(bool y) {
541 bool state = editor->edited(); 541 bool state = editor->edited();
542 QString captionStr = caption(); 542 QString captionStr = caption();
543 bool b1 = edited1; 543 bool b1 = edited1;
544 bool b2 = edited; 544 bool b2 = edited;
545 545
546 editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap ); 546 editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap );
547 editor->setEdited( state ); 547 editor->setEdited( state );
548 edited1=b1; 548 edited1=b1;
549 edited=b2; 549 edited=b2;
550 setCaption(captionStr); 550 setCaption(captionStr);
551} 551}
552 552
553void TextEdit::setSearchBar(bool b) { 553void TextEdit::setSearchBar(bool b) {
554 useSearchBar=b; 554 useSearchBar=b;
555 Config cfg("TextEdit"); 555 Config cfg("TextEdit");
556 cfg.setGroup("View"); 556 cfg.setGroup("View");
557 cfg.writeEntry ( "SearchBar", b ); 557 cfg.writeEntry ( "SearchBar", b );
558 searchBarAction->setOn(b); 558 searchBarAction->setOn(b);
559 if(b) 559 if(b)
560 searchBar->show(); 560 searchBar->show();
561 else 561 else
562 searchBar->hide(); 562 searchBar->hide();
563 editor->setFocus(); 563 editor->setFocus();
564} 564}
565 565
566void TextEdit::fileNew() { 566void TextEdit::fileNew() {
567// if( !bFromDocView ) { 567// if( !bFromDocView ) {
568// saveAs(); 568// saveAs();
569// } 569// }
570 newFile(DocLnk()); 570 newFile(DocLnk());
571} 571}
572 572
573void TextEdit::fileOpen() { 573void TextEdit::fileOpen() {
574 QMap<QString, QStringList> map; 574 QMap<QString, QStringList> map;
575 map.insert(tr("All"), QStringList() ); 575 map.insert(tr("All"), QStringList() );
576 QStringList text; 576 QStringList text;
577 text << "text/*"; 577 text << "text/*";
578 map.insert(tr("Text"), text ); 578 map.insert(tr("Text"), text );
579 text << "*"; 579 text << "*";
580 map.insert(tr("All"), text ); 580 map.insert(tr("All"), text );
581 QString str = OFileDialog::getOpenFileName( 2, 581 QString str = OFileDialog::getOpenFileName( 2,
582 QPEApplication::documentDir(), 582 QPEApplication::documentDir(),
583 QString::null, map); 583 QString::null, map);
584 if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) 584 if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() )
585 openFile( str ); 585 openFile( str );
586 else 586 else
587 updateCaption(); 587 updateCaption();
588} 588}
589 589
590void TextEdit::doSearchBar() { 590void TextEdit::doSearchBar() {
591 if(!useSearchBar) 591 if(!useSearchBar)
592 searchBar->hide(); 592 searchBar->hide();
593 else 593 else
594 searchBar->show(); 594 searchBar->show();
595} 595}
596 596
597#if 0 597#if 0
598void TextEdit::slotFind() { 598void TextEdit::slotFind() {
599 FindDialog frmFind( tr("Text Editor"), this ); 599 FindDialog frmFind( tr("Text Editor"), this );
600 connect( &frmFind, SIGNAL(signalFindClicked(const QString &, bool, bool, int)), 600 connect( &frmFind, SIGNAL(signalFindClicked(const QString &, bool, bool, int)),
601 editor, SLOT(slotDoFind( const QString&,bool,bool))); 601 editor, SLOT(slotDoFind( const QString&,bool,bool)));
602 602
603 //case sensitive, backwards, [category] 603 //case sensitive, backwards, [category]
604 604
605 connect( editor, SIGNAL(notFound()), 605 connect( editor, SIGNAL(notFound()),
606 &frmFind, SLOT(slotNotFound()) ); 606 &frmFind, SLOT(slotNotFound()) );
607 connect( editor, SIGNAL(searchWrapped()), 607 connect( editor, SIGNAL(searchWrapped()),
608 &frmFind, SLOT(slotWrapAround()) ); 608 &frmFind, SLOT(slotWrapAround()) );
609 609
610 frmFind.exec(); 610 frmFind.exec();
611 611
612 612
613} 613}
614#endif 614#endif
615 615
616void TextEdit::fileRevert() { 616void TextEdit::fileRevert() {
617 clear(); 617 clear();
618 fileOpen(); 618 fileOpen();
619} 619}
620 620
621void TextEdit::editCut() { 621void TextEdit::editCut() {
622#ifndef QT_NO_CLIPBOARD 622#ifndef QT_NO_CLIPBOARD
623 editor->cut(); 623 editor->cut();
624#endif 624#endif
625} 625}
626 626
627void TextEdit::editCopy() { 627void TextEdit::editCopy() {
628#ifndef QT_NO_CLIPBOARD 628#ifndef QT_NO_CLIPBOARD
629 editor->copy(); 629 editor->copy();
630#endif 630#endif
631} 631}
632 632
633void TextEdit::editPaste() { 633void TextEdit::editPaste() {
634#ifndef QT_NO_CLIPBOARD 634#ifndef QT_NO_CLIPBOARD
635 editor->paste(); 635 editor->paste();
636#endif 636#endif
637} 637}
638 638
639void TextEdit::editFind() { 639void TextEdit::editFind() {
640 searchBar->show(); 640 searchBar->show();
641 searchEdit->setFocus(); 641 searchEdit->setFocus();
642} 642}
643 643
644void TextEdit::findNext() { 644void TextEdit::findNext() {
645 editor->find( searchEdit->text(), false, false ); 645 editor->find( searchEdit->text(), false, false );
646 646
647} 647}
648 648
649void TextEdit::findClose() { 649void TextEdit::findClose() {
650 searchBar->hide(); 650 searchBar->hide();
651} 651}
652 652
653void TextEdit::search() { 653void TextEdit::search() {
654 editor->find( searchEdit->text(), false, false ); 654 editor->find( searchEdit->text(), false, false );
655} 655}
656 656
657void TextEdit::newFile( const DocLnk &f ) { 657void TextEdit::newFile( const DocLnk &f ) {
658 DocLnk nf = f; 658 DocLnk nf = f;
659 nf.setType("text/plain"); 659 nf.setType("text/plain");
660 clear(); 660 clear();
661 setWState (WState_Reserved1 ); 661 setWState (WState_Reserved1 );
662 editor->setFocus(); 662 editor->setFocus();
663 doc = new DocLnk(nf); 663 doc = new DocLnk(nf);
664 currentFileName = "Unnamed"; 664 currentFileName = "Unnamed";
665 qDebug("newFile "+currentFileName); 665 qDebug("newFile "+currentFileName);
666 updateCaption( currentFileName); 666 updateCaption( currentFileName);
667// editor->setEdited( false); 667// editor->setEdited( false);
668} 668}
669 669
670void TextEdit::openDotFile( const QString &f ) { 670void TextEdit::openDotFile( const QString &f ) {
671 if(!currentFileName.isEmpty()) { 671 if(!currentFileName.isEmpty()) {
672 currentFileName=f; 672 currentFileName=f;
673 673
674 qDebug("openFile dotfile " + currentFileName); 674 qDebug("openFile dotfile " + currentFileName);
675 QString txt; 675 QString txt;
676 QFile file(f); 676 QFile file(f);
677 file.open(IO_ReadWrite); 677 file.open(IO_ReadWrite);
678 QTextStream t(&file); 678 QTextStream t(&file);
679 while ( !t.atEnd()) { 679 while ( !t.atEnd()) {
680 txt+=t.readLine()+"\n"; 680 txt+=t.readLine()+"\n";
681 } 681 }
682 editor->setText(txt); 682 editor->setText(txt);
683 editor->setEdited( false); 683 editor->setEdited( false);
684 edited1=false; 684 edited1=false;
685 edited=false; 685 edited=false;
686 686
687 687
688 } 688 }
689 updateCaption( currentFileName); 689 updateCaption( currentFileName);
690} 690}
691 691
692void TextEdit::openFile( const QString &f ) { 692void TextEdit::openFile( const QString &f ) {
693 qDebug("filename is "+ f); 693 qDebug("filename is "+ f);
694 QString filer; 694 QString filer;
695 QFileInfo fi( f); 695 QFileInfo fi( f);
696// bFromDocView = true; 696// bFromDocView = true;
697 if(f.find(".desktop",0,true) != -1 && !openDesktop ) { 697 if(f.find(".desktop",0,true) != -1 && !openDesktop ) {
698 switch ( QMessageBox::warning(this,tr("Text Editor"), 698 switch ( QMessageBox::warning(this,tr("Text Editor"),
699 tr("Text Editor has detected<BR>you selected a <B>.desktop</B> 699 tr("Text Editor has detected<BR>you selected a <B>.desktop</B>
700file.<BR>Open <B>.desktop</B> file or <B>linked</B> file?"), 700file.<BR>Open <B>.desktop</B> file or <B>linked</B> file?"),
701 tr(".desktop File"),tr("Linked Document"),0,1,1) ) { 701 tr(".desktop File"),tr("Linked Document"),0,1,1) ) {
702 case 0: 702 case 0:
703 filer = f; 703 filer = f;
704 break; 704 break;
705 case 1: 705 case 1:
706 DocLnk sf(f); 706 DocLnk sf(f);
707 filer = sf.file(); 707 filer = sf.file();
708 break; 708 break;
709 } 709 }
710 } else if(fi.baseName().left(1) == "") { 710 } else if(fi.baseName().left(1) == "") {
711 currentFileName=f; 711 currentFileName=f;
712 openDotFile(currentFileName); 712 openDotFile(currentFileName);
713 } else { 713 } else {
714 DocLnk sf(f); 714 DocLnk sf(f);
715 filer = sf.file(); 715 filer = sf.file();
716 if(filer.right(1) == "/") 716 if(filer.right(1) == "/")
717 filer = f; 717 filer = f;
718 718
719 DocLnk nf; 719 DocLnk nf;
720 nf.setType("text/plain"); 720 nf.setType("text/plain");
721 nf.setFile(filer); 721 nf.setFile(filer);
722 currentFileName=filer; 722 currentFileName=filer;
723 723
724 nf.setName(fi.baseName()); 724 nf.setName(fi.baseName());
725 openFile(nf); 725 openFile(nf);
726 726
727 qDebug("openFile string "+currentFileName); 727 qDebug("openFile string "+currentFileName);
728 728
729 } 729 }
730 showEditTools(); 730 showEditTools();
731 // Show filename in caption 731 // Show filename in caption
732 QString name = filer; 732 QString name = filer;
733 int sep = name.findRev( '/' ); 733 int sep = name.findRev( '/' );
734 if ( sep > 0 ) 734 if ( sep > 0 )
735 name = name.mid( sep+1 ); 735 name = name.mid( sep+1 );
736 updateCaption( name ); 736 updateCaption( name );
737} 737}
738 738
739void TextEdit::openFile( const DocLnk &f ) { 739void TextEdit::openFile( const DocLnk &f ) {
740// clear(); 740// clear();
741// bFromDocView = true; 741// bFromDocView = true;
742 FileManager fm; 742 FileManager fm;
743 QString txt; 743 QString txt;
744 currentFileName=f.file(); 744 currentFileName=f.file();
745 qDebug("openFile doclnk " + currentFileName); 745 qDebug("openFile doclnk " + currentFileName);
746 if ( !fm.loadFile( f, txt ) ) { 746 if ( !fm.loadFile( f, txt ) ) {
747 // ####### could be a new file 747 // ####### could be a new file
748 qDebug( "Cannot open file" ); 748 qDebug( "Cannot open file" );
749 } 749 }
750// fileNew(); 750// fileNew();
751 if ( doc ) 751 if ( doc )
752 delete doc; 752 delete doc;
753 doc = new DocLnk(f); 753 doc = new DocLnk(f);
754 editor->setText(txt); 754 editor->setText(txt);
755 editor->setEdited( false); 755 editor->setEdited( false);
756 edited1=false; 756 edited1=false;
757 edited=false; 757 edited=false;
758 758
759 doc->setName(currentFileName); 759 doc->setName(currentFileName);
760 updateCaption(); 760 updateCaption();
761 setTimer(); 761 setTimer();
762} 762}
763 763
764void TextEdit::showEditTools() { 764void TextEdit::showEditTools() {
765 menu->show(); 765 menu->show();
766 editBar->show(); 766 editBar->show();
767 if(!useSearchBar) 767 if(!useSearchBar)
768 searchBar->hide(); 768 searchBar->hide();
769 else 769 else
770 searchBar->show(); 770 searchBar->show();
771 setWState (WState_Reserved1 ); 771 setWState (WState_Reserved1 );
772} 772}
773 773
774/*! 774/*!
775 unprompted save */ 775 unprompted save */
776bool TextEdit::save() { 776bool TextEdit::save() {
777 qDebug("saveAsFile " + currentFileName); 777 qDebug("saveAsFile " + currentFileName);
778 if(currentFileName.isEmpty()) { 778 if(currentFileName.isEmpty()) {
779 saveAs(); 779 saveAs();
780 return false; 780 return false;
781 } 781 }
782 782
783 QString file = doc->file(); 783 QString file = doc->file();
784 qDebug("saver file "+file); 784 qDebug("saver file "+file);
785 QString name= doc->name(); 785 QString name= doc->name();
786 qDebug("File named "+name); 786 qDebug("File named "+name);
787 QString rt = editor->text(); 787 QString rt = editor->text();
788 if( !rt.isEmpty() ) { 788 if( !rt.isEmpty() ) {
789 if(name.isEmpty()) { 789 if(name.isEmpty()) {
790 saveAs(); 790 saveAs();
791 } else { 791 } else {
792 currentFileName= name ; 792 currentFileName= name ;
793 qDebug("saveFile "+currentFileName); 793 qDebug("saveFile "+currentFileName);
794 794
795 struct stat buf; 795 struct stat buf;
796 mode_t mode; 796 mode_t mode;
797 stat(file.latin1(), &buf); 797 stat(file.latin1(), &buf);
798 mode = buf.st_mode; 798 mode = buf.st_mode;
799 799
800 if(!fileIs) { 800 if(!fileIs) {
801 doc->setName( name); 801 doc->setName( name);
802 FileManager fm; 802 FileManager fm;
803 if ( !fm.saveFile( *doc, rt ) ) { 803 if ( !fm.saveFile( *doc, rt ) ) {
804 return false; 804 return false;
805 } 805 }
806 } else { 806 } else {
807 qDebug("regular save file"); 807 qDebug("regular save file");
808 QFile f(file); 808 QFile f(file);
809 if( f.open(IO_WriteOnly)) { 809 if( f.open(IO_WriteOnly)) {
810 QCString crt = rt.utf8(); 810 QCString crt = rt.utf8();
811 f.writeBlock(crt,crt.length()); 811 f.writeBlock(crt,crt.length());
812 } else { 812 } else {
813 QMessageBox::message(tr("Text Edit"),tr("Write Failed")); 813 QMessageBox::message(tr("Text Edit"),tr("Write Failed"));
814 return false; 814 return false;
815 } 815 }
816 816
817 } 817 }
818 editor->setEdited( false); 818 editor->setEdited( false);
819 edited1=false; 819 edited1=false;
820 edited=false; 820 edited=false;
821 if(caption().left(1)=="*") 821 if(caption().left(1)=="*")
822 setCaption(caption().right(caption().length()-1)); 822 setCaption(caption().right(caption().length()-1));
823 823
824 824
825 chmod( file.latin1(), mode); 825 chmod( file.latin1(), mode);
826 } 826 }
827 return true; 827 return true;
828 } 828 }
829 return false; 829 return false;
830} 830}
831 831
832/*! 832/*!
833 prompted save */ 833 prompted save */
834bool TextEdit::saveAs() { 834bool TextEdit::saveAs() {
835 835
836 if(caption() == tr("Text Editor")) 836 if(caption() == tr("Text Editor"))
837 return false; 837 return false;
838 qDebug("saveAsFile " + currentFileName); 838 qDebug("saveAsFile " + currentFileName);
839 // case of nothing to save... 839 // case of nothing to save...
840// if ( !doc && !currentFileName.isEmpty()) { 840// if ( !doc && !currentFileName.isEmpty()) {
841// //|| !bFromDocView) 841// //|| !bFromDocView)
842// qDebug("no doc"); 842// qDebug("no doc");
843// return true; 843// return true;
844// } 844// }
845// if ( !editor->edited() ) { 845// if ( !editor->edited() ) {
846// delete doc; 846// delete doc;
847// doc = 0; 847// doc = 0;
848// return true; 848// return true;
849// } 849// }
850 850
851 QString rt = editor->text(); 851 QString rt = editor->text();
852 qDebug(currentFileName); 852 qDebug(currentFileName);
853 853
854 if( currentFileName.isEmpty() 854 if( currentFileName.isEmpty()
855 || currentFileName == tr("Unnamed") 855 || currentFileName == tr("Unnamed")
856 || currentFileName == tr("Text Editor")) { 856 || currentFileName == tr("Text Editor")) {
857 qDebug("do silly TT filename thing"); 857 qDebug("do silly TT filename thing");
858// if ( doc && doc->name().isEmpty() ) { 858// if ( doc && doc->name().isEmpty() ) {
859 QString pt = rt.simplifyWhiteSpace(); 859 QString pt = rt.simplifyWhiteSpace();
860 int i = pt.find( ' ' ); 860 int i = pt.find( ' ' );
861 QString docname = pt; 861 QString docname = pt;
862 if ( i > 0 ) 862 if ( i > 0 )
863 docname = pt.left( i ); 863 docname = pt.left( i );
864 // remove "." at the beginning 864 // remove "." at the beginning
865 while( docname.startsWith( "." ) ) 865 while( docname.startsWith( "." ) )
866 docname = docname.mid( 1 ); 866 docname = docname.mid( 1 );
867 docname.replace( QRegExp("/"), "_" ); 867 docname.replace( QRegExp("/"), "_" );
868 // cut the length. filenames longer than that 868 // cut the length. filenames longer than that
869 //don't make sense and something goes wrong when they get too long. 869 //don't make sense and something goes wrong when they get too long.
870 if ( docname.length() > 40 ) 870 if ( docname.length() > 40 )
871 docname = docname.left(40); 871 docname = docname.left(40);
872 if ( docname.isEmpty() ) 872 if ( docname.isEmpty() )
873 docname = tr("Unnamed"); 873 docname = tr("Unnamed");
874 if(doc) doc->setName(docname); 874 if(doc) doc->setName(docname);
875 currentFileName=docname; 875 currentFileName=docname;
876// } 876// }
877// else 877// else
878// qDebug("hmmmmmm"); 878// qDebug("hmmmmmm");
879 } 879 }
880 880
881 881
882 QMap<QString, QStringList> map; 882 QMap<QString, QStringList> map;
883 map.insert(tr("All"), QStringList() ); 883 map.insert(tr("All"), QStringList() );
884 QStringList text; 884 QStringList text;
885 text << "text/*"; 885 text << "text/*";
886 map.insert(tr("Text"), text ); 886 map.insert(tr("Text"), text );
887 text << "*"; 887 text << "*";
888 map.insert(tr("All"), text ); 888 map.insert(tr("All"), text );
889 889
890 QFileInfo cuFi( currentFileName); 890 QFileInfo cuFi( currentFileName);
891 QString filee = cuFi.fileName(); 891 QString filee = cuFi.fileName();
892 QString dire = cuFi.dirPath(); 892 QString dire = cuFi.dirPath();
893 if(dire==".") 893 if(dire==".")
894 dire = QPEApplication::documentDir(); 894 dire = QPEApplication::documentDir();
895 QString str; 895 QString str;
896 if( !featureAutoSave) 896 if( !featureAutoSave)
897 { 897 {
898 str = OFileDialog::getSaveFileName( 2, 898 str = OFileDialog::getSaveFileName( 2,
899 dire, 899 dire,
900 filee, map); 900 filee, map);
901 } 901 }
902 else 902 else
903 str=currentFileName; 903 str=currentFileName;
904 if(!str.isEmpty()) { 904 if(!str.isEmpty()) {
905 QString fileNm=str; 905 QString fileNm=str;
906 906
907 qDebug("saving filename "+fileNm); 907 qDebug("saving filename "+fileNm);
908 QFileInfo fi(fileNm); 908 QFileInfo fi(fileNm);
909 currentFileName=fi.fileName(); 909 currentFileName=fi.fileName();
910 if(doc) 910 if(doc)
911// QString file = doc->file(); 911// QString file = doc->file();
912// doc->removeFiles(); 912// doc->removeFiles();
913 delete doc; 913 delete doc;
914 DocLnk nf; 914 DocLnk nf;
915 nf.setType("text/plain"); 915 nf.setType("text/plain");
916 nf.setFile( fileNm); 916 nf.setFile( fileNm);
917 doc = new DocLnk(nf); 917 doc = new DocLnk(nf);
918// editor->setText(rt); 918// editor->setText(rt);
919 qDebug("Saving file as "+currentFileName); 919 qDebug("Saving file as "+currentFileName);
920 doc->setName( currentFileName); 920 doc->setName( currentFileName);
921 updateCaption( currentFileName); 921 updateCaption( currentFileName);
922 922
923 FileManager fm; 923 FileManager fm;
924 if ( !fm.saveFile( *doc, rt ) ) { 924 if ( !fm.saveFile( *doc, rt ) ) {
925 return false; 925 return false;
926 } 926 }
927 927
928 if( filePerms ) { 928 if( filePerms ) {
929 filePermissions *filePerm; 929 filePermissions *filePerm;
930 filePerm = new filePermissions(this, 930 filePerm = new filePermissions(this,
931 tr("Permissions"),true, 931 tr("Permissions"),true,
932 0,(const QString &)fileNm); 932 0,(const QString &)fileNm);
933 filePerm->showMaximized(); 933 filePerm->showMaximized();
934 filePerm->exec(); 934 filePerm->exec();
935 935
936 if( filePerm) 936 if( filePerm)
937 delete filePerm; 937 delete filePerm;
938 } 938 }
939// } 939// }
940 editor->setEdited( false); 940 editor->setEdited( false);
941 edited1 = false; 941 edited1 = false;
942 edited = false; 942 edited = false;
943 if(caption().left(1)=="*") 943 if(caption().left(1)=="*")
944 setCaption(caption().right(caption().length()-1)); 944 setCaption(caption().right(caption().length()-1));
945 945
946 return true; 946 return true;
947 } 947 }
948 qDebug("returning false"); 948 qDebug("returning false");
949 return false; 949 return false;
950} //end saveAs 950} //end saveAs
951 951
952void TextEdit::clear() { 952void TextEdit::clear() {
953 delete doc; 953 delete doc;
954 doc = 0; 954 doc = 0;
955 editor->clear(); 955 editor->clear();
956} 956}
957 957
958void TextEdit::updateCaption( const QString &name ) { 958void TextEdit::updateCaption( const QString &name ) {
959 959
960 if ( name.isEmpty() ) 960 if ( name.isEmpty() )
961 setCaption( tr("Text Editor") ); 961 setCaption( tr("Text Editor") );
962 else { 962 else {
963 QString s = name; 963 QString s = name;
964 if ( s.isNull() ) 964 if ( s.isNull() )
965 s = doc->name(); 965 s = doc->name();
966 if ( s.isEmpty() ) { 966 if ( s.isEmpty() ) {
967 s = tr( "Unnamed" ); 967 s = tr( "Unnamed" );
968 currentFileName=s; 968 currentFileName=s;
969 } 969 }
970// if(s.left(1) == "/") 970// if(s.left(1) == "/")
971// s = s.right(s.length()-1); 971// s = s.right(s.length()-1);
972 setCaption( s + " - " + tr("Text Editor") ); 972 setCaption( s + " - " + tr("Text Editor") );
973 } 973 }
974} 974}
975 975
976void TextEdit::setDocument(const QString& fileref) { 976void TextEdit::setDocument(const QString& fileref) {
977 if(fileref != "Unnamed") { 977 if(fileref != "Unnamed") {
978 currentFileName=fileref; 978 currentFileName=fileref;
979 qDebug("setDocument"); 979 qDebug("setDocument");
980 QFileInfo fi(currentFileName); 980 QFileInfo fi(currentFileName);
981 qDebug("basename:"+fi.baseName()+": current filenmame "+currentFileName); 981 qDebug("basename:"+fi.baseName()+": current filenmame "+currentFileName);
982 if( (fi.baseName().left(1)).isEmpty() ) { 982 if( (fi.baseName().left(1)).isEmpty() ) {
983 openDotFile(currentFileName); 983 openDotFile(currentFileName);
984 984
985 } else { 985 } else {
986 qDebug("setDoc open"); 986 qDebug("setDoc open");
987 bFromDocView = true; 987 bFromDocView = true;
988 openFile(fileref); 988 openFile(fileref);
989 editor->setEdited(true); 989 editor->setEdited(true);
990 edited1=false; 990 edited1=false;
991 edited=true; 991 edited=true;
992 // fromSetDocument=false; 992 // fromSetDocument=false;
993 // doSearchBar(); 993 // doSearchBar();
994 } 994 }
995 } 995 }
996 updateCaption( currentFileName); 996 updateCaption( currentFileName);
997} 997}
998 998
999void TextEdit::changeFont() { 999void TextEdit::changeFont() {
1000 QDialog *d = new QDialog ( this, "FontDialog", true ); 1000 QDialog *d = new QDialog ( this, "FontDialog", true );
1001 d-> setCaption ( tr( "Choose font" )); 1001 d-> setCaption ( tr( "Choose font" ));
1002 QBoxLayout *lay = new QVBoxLayout ( d ); 1002 QBoxLayout *lay = new QVBoxLayout ( d );
1003 OFontSelector *ofs = new OFontSelector ( true, d ); 1003 OFontSelector *ofs = new OFontSelector ( true, d );
1004 lay-> addWidget ( ofs ); 1004 lay-> addWidget ( ofs );
1005 ofs-> setSelectedFont ( editor-> font ( )); 1005 ofs-> setSelectedFont ( editor-> font ( ));
1006 1006
1007 d-> showMaximized ( ); 1007 d-> showMaximized ( );
1008 if ( d-> exec ( ) == QDialog::Accepted ) 1008 if ( d-> exec ( ) == QDialog::Accepted )
1009 editor-> setFont ( ofs-> selectedFont ( )); 1009 editor-> setFont ( ofs-> selectedFont ( ));
1010 delete d; 1010 delete d;
1011 1011
1012} 1012}
1013 1013
1014void TextEdit::editDelete() { 1014void TextEdit::editDelete() {
1015 switch ( QMessageBox::warning(this,tr("Text Editor"), 1015 switch ( QMessageBox::warning(this,tr("Text Editor"),
1016 tr("Do you really want<BR>to <B>delete</B> " 1016 tr("Do you really want<BR>to <B>delete</B> "
1017 "the current file\nfrom the disk?<BR>This is " 1017 "the current file\nfrom the disk?<BR>This is "
1018 "<B>irreversable!!</B>"), 1018 "<B>irreversable!!</B>"),
1019 tr("Yes"),tr("No"),0,0,1) ) { 1019 tr("Yes"),tr("No"),0,0,1) ) {
1020 case 0: 1020 case 0:
1021 if(doc) { 1021 if(doc) {
1022 doc->removeFiles(); 1022 doc->removeFiles();
1023 clear(); 1023 clear();
1024 setCaption( tr("Text Editor") ); 1024 setCaption( tr("Text Editor") );
1025 } 1025 }
1026 break; 1026 break;
1027 case 1: 1027 case 1:
1028 // exit 1028 // exit
1029 break; 1029 break;
1030 }; 1030 };
1031} 1031}
1032 1032
1033void TextEdit::changeStartConfig( bool b ) { 1033void TextEdit::changeStartConfig( bool b ) {
1034 startWithNew=b; 1034 startWithNew=b;
1035 Config cfg("TextEdit"); 1035 Config cfg("TextEdit");
1036 cfg.setGroup("View"); 1036 cfg.setGroup("View");
1037 cfg.writeEntry("startNew",b); 1037 cfg.writeEntry("startNew",b);
1038 update(); 1038 update();
1039} 1039}
1040 1040
1041void TextEdit::editorChanged() { 1041void TextEdit::editorChanged() {
1042// qDebug("editor changed"); 1042// qDebug("editor changed");
1043 if( /*editor->edited() &&*/ /*edited && */!edited1) { 1043 if( /*editor->edited() &&*/ /*edited && */!edited1) {
1044 setCaption( "*"+caption()); 1044 setCaption( "*"+caption());
1045 edited1=true; 1045 edited1=true;
1046 } 1046 }
1047 edited=true; 1047 edited=true;
1048} 1048}
1049 1049
1050void TextEdit::receive(const QCString&msg, const QByteArray &) { 1050void TextEdit::receive(const QCString&msg, const QByteArray &) {
1051 qDebug("QCop "+msg); 1051 qDebug("QCop "+msg);
1052 if ( msg == "setDocument(QString)" ) { 1052 if ( msg == "setDocument(QString)" ) {
1053 qDebug("bugger all"); 1053 qDebug("bugger all");
1054 1054
1055 } 1055 }
1056 1056
1057} 1057}
1058 1058
1059void TextEdit::doAbout() { 1059void TextEdit::doAbout() {
1060 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>"
1061 "2000 Trolltech AS, and<BR>" 1061 "2000 Trolltech AS, and<BR>"
1062 "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>"
1063 "and is licensed under the GPL")); 1063 "and is licensed under the GPL"));
1064} 1064}
1065 1065
1066void TextEdit::doPrompt(bool b) { 1066void TextEdit::doPrompt(bool b) {
1067 promptExit=b; 1067 promptExit=b;
1068 Config cfg("TextEdit"); 1068 Config cfg("TextEdit");
1069 cfg.setGroup ( "View" ); 1069 cfg.setGroup ( "View" );
1070 cfg.writeEntry ( "PromptExit", b); 1070 cfg.writeEntry ( "PromptExit", b);
1071} 1071}
1072 1072
1073void TextEdit::doDesktop(bool b) { 1073void TextEdit::doDesktop(bool b) {
1074 openDesktop=b; 1074 openDesktop=b;
1075 Config cfg("TextEdit"); 1075 Config cfg("TextEdit");
1076 cfg.setGroup ( "View" ); 1076 cfg.setGroup ( "View" );
1077 cfg.writeEntry ( "OpenDesktop", b); 1077 cfg.writeEntry ( "OpenDesktop", b);
1078} 1078}
1079 1079
1080void TextEdit::doFilePerms(bool b) { 1080void TextEdit::doFilePerms(bool b) {
1081 filePerms=b; 1081 filePerms=b;
1082 Config cfg("TextEdit"); 1082 Config cfg("TextEdit");
1083 cfg.setGroup ( "View" ); 1083 cfg.setGroup ( "View" );
1084 cfg.writeEntry ( "FilePermissions", b); 1084 cfg.writeEntry ( "FilePermissions", b);
1085} 1085}
1086 1086
1087void TextEdit::editPasteTimeDate() { 1087void TextEdit::editPasteTimeDate() {
1088#ifndef QT_NO_CLIPBOARD 1088#ifndef QT_NO_CLIPBOARD
1089 QClipboard *cb = QApplication::clipboard(); 1089 QClipboard *cb = QApplication::clipboard();
1090 QDateTime dt = QDateTime::currentDateTime(); 1090 QDateTime dt = QDateTime::currentDateTime();
1091 cb->setText( dt.toString()); 1091 cb->setText( dt.toString());
1092 editor->paste(); 1092 editor->paste();
1093#endif 1093#endif
1094} 1094}
1095 1095
1096int TextEdit::savePrompt() 1096int TextEdit::savePrompt()
1097{ 1097{
1098 switch( QMessageBox::information( 0, (tr("Textedit")), 1098 switch( QMessageBox::information( 0, (tr("Textedit")),
1099 (tr("Textedit detected\n" 1099 (tr("Textedit detected\n"
1100 "you have unsaved changes\n" 1100 "you have unsaved changes\n"
1101 "Go ahead and save?\n")), 1101 "Go ahead and save?\n")),
1102 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) ) 1102 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
1103 { 1103 {
1104 case 0: 1104 case 0:
1105 { 1105 {
1106 return 1; 1106 return 1;
1107 } 1107 }
1108 break; 1108 break;
1109 1109
1110 case 1: 1110 case 1:
1111 { 1111 {
1112 return 2; 1112 return 2;
1113 } 1113 }
1114 break; 1114 break;
1115 1115
1116 case 2: 1116 case 2:
1117 { 1117 {
1118 return -1; 1118 return -1;
1119 } 1119 }
1120 break; 1120 break;
1121 }; 1121 };
1122 1122
1123 return 0; 1123 return 0;
1124} 1124}
1125 1125
1126void TextEdit::timerCrank() 1126void TextEdit::timerCrank()
1127{ 1127{
1128 if(featureAutoSave && edited1) 1128 if(featureAutoSave && edited1)
1129 { 1129 {
1130 if(currentFileName.isEmpty()) 1130 if(currentFileName.isEmpty())
1131 { 1131 {
1132 currentFileName = QDir::homeDirPath()+"/textedit.tmp"; 1132 currentFileName = QDir::homeDirPath()+"/textedit.tmp";
1133 saveAs(); 1133 saveAs();
1134 } 1134 }
1135 else 1135 else
1136 { 1136 {
1137// qDebug("autosave"); 1137// qDebug("autosave");
1138 save(); 1138 save();
1139 } 1139 }
1140 setTimer(); 1140 setTimer();
1141 } 1141 }
1142} 1142}
1143 1143
1144void TextEdit::doTimer(bool b) 1144void TextEdit::doTimer(bool b)
1145{ 1145{
1146 Config cfg("TextEdit"); 1146 Config cfg("TextEdit");
1147 cfg.setGroup ( "View" ); 1147 cfg.setGroup ( "View" );
1148 cfg.writeEntry ( "autosave", b); 1148 cfg.writeEntry ( "autosave", b);
1149 featureAutoSave = b; 1149 featureAutoSave = b;
1150 nAutoSave->setOn(b); 1150 nAutoSave->setOn(b);
1151 if(b) 1151 if(b)
1152 { 1152 {
1153// qDebug("doTimer true"); 1153// qDebug("doTimer true");
1154 setTimer(); 1154 setTimer();
1155 } 1155 }
1156// else 1156// else
1157// qDebug("doTimer false"); 1157// qDebug("doTimer false");
1158} 1158}
1159 1159
1160void TextEdit::setTimer() 1160void TextEdit::setTimer()
1161{ 1161{
1162if(featureAutoSave) 1162if(featureAutoSave)
1163 { 1163 {
1164// qDebug("setting autosave"); 1164// qDebug("setting autosave");
1165 QTimer *timer = new QTimer(this ); 1165 QTimer *timer = new QTimer(this );
1166 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) ); 1166 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) );
1167 timer->start( 300000, true); //5 minutes 1167 timer->start( 300000, true); //5 minutes
1168 } 1168 }
1169} 1169}
1170 1170
1171void TextEdit::gotoLine() { 1171void TextEdit::gotoLine() {
1172 1172
1173 QWidget *d = QApplication::desktop(); 1173 QWidget *d = QApplication::desktop();
1174 gotoEdit = new QLineEdit( 0, "Goto line"); 1174 gotoEdit = new QLineEdit( 0, "Goto line");
1175 1175
1176 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2)); 1176 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2));
1177 gotoEdit->setFrame(true); 1177 gotoEdit->setFrame(true);
1178 gotoEdit->show(); 1178 gotoEdit->show();
1179 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto())); 1179 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto()));
1180} 1180}
1181 1181
1182void TextEdit::doGoto() { 1182void TextEdit::doGoto() {
1183 QString number = gotoEdit->text(); 1183 QString number = gotoEdit->text();
1184 gotoEdit->hide(); 1184 gotoEdit->hide();
1185 if(gotoEdit) delete gotoEdit; 1185 if(gotoEdit) {
1186 delete gotoEdit;
1187 gotoEdit = 0;
1188 }
1189
1186 bool ok; 1190 bool ok;
1187 int lineNumber = number.toInt(&ok, 10); 1191 int lineNumber = number.toInt(&ok, 10);
1188 if(editor->numLines() < lineNumber) 1192 if(editor->numLines() < lineNumber)
1189 QMessageBox::message(tr("Text Edit"),tr("Not enough lines")); 1193 QMessageBox::message(tr("Text Edit"),tr("Not enough lines"));
1190 else 1194 else
1191 { 1195 {
1192 editor->setCursorPosition(lineNumber, 0, false); 1196 editor->setCursorPosition(lineNumber, 0, false);
1193 } 1197 }
1194} 1198}