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.cpp88
1 files changed, 63 insertions, 25 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index 0f19da9..03f3a1e 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -159,355 +159,368 @@ class QpeEditor : public QMultiLineEdit
159 // Q_OBJECT 159 // Q_OBJECT
160public: 160public:
161 QpeEditor( QWidget *parent, const char * name = 0 ) 161 QpeEditor( QWidget *parent, const char * name = 0 )
162 : QMultiLineEdit( parent, name ) 162 : QMultiLineEdit( parent, name )
163 { 163 {
164 clearTableFlags(); 164 clearTableFlags();
165 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar ); 165 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar );
166 } 166 }
167 167
168 //public slots: 168 //public slots:
169 void find( const QString &txt, bool caseSensitive, 169 void find( const QString &txt, bool caseSensitive,
170 bool backwards ); 170 bool backwards );
171 /* 171 /*
172signals: 172signals:
173 void notFound(); 173 void notFound();
174 void searchWrapped(); 174 void searchWrapped();
175 */ 175 */
176 176
177private: 177private:
178 178
179}; 179};
180 180
181 181
182void QpeEditor::find ( const QString &txt, bool caseSensitive, 182void QpeEditor::find ( const QString &txt, bool caseSensitive,
183 bool backwards ) 183 bool backwards )
184{ 184{
185 static bool wrap = FALSE; 185 static bool wrap = FALSE;
186 int line, col; 186 int line, col;
187 if ( wrap ) { 187 if ( wrap ) {
188 if ( !backwards ) 188 if ( !backwards )
189 line = col = 0; 189 line = col = 0;
190 wrap = FALSE; 190 wrap = FALSE;
191 // emit searchWrapped(); 191 // emit searchWrapped();
192 } else { 192 } else {
193 getCursorPosition( &line, &col ); 193 getCursorPosition( &line, &col );
194 } 194 }
195 //ignore backwards for now.... 195 //ignore backwards for now....
196 if ( !backwards ) { 196 if ( !backwards ) {
197 for ( ; ; ) { 197 for ( ; ; ) {
198 if ( line >= numLines() ) { 198 if ( line >= numLines() ) {
199 wrap = TRUE; 199 wrap = TRUE;
200 //emit notFound(); 200 //emit notFound();
201 break; 201 break;
202 } 202 }
203 int findCol = getString( line )->find( txt, col, caseSensitive ); 203 int findCol = getString( line )->find( txt, col, caseSensitive );
204 if ( findCol >= 0 ) { 204 if ( findCol >= 0 ) {
205 setCursorPosition( line, findCol, FALSE ); 205 setCursorPosition( line, findCol, FALSE );
206 col = findCol + txt.length(); 206 col = findCol + txt.length();
207 setCursorPosition( line, col, TRUE ); 207 setCursorPosition( line, col, TRUE );
208 208
209 //found = TRUE; 209 //found = TRUE;
210 break; 210 break;
211 } 211 }
212 line++; 212 line++;
213 col = 0; 213 col = 0;
214 } 214 }
215 215
216 } 216 }
217 217
218} 218}
219 219
220 220
221#else 221#else
222 222
223#error "Must make a QpeEditor that inherits QTextEdit" 223#error "Must make a QpeEditor that inherits QTextEdit"
224 224
225#endif 225#endif
226 226
227 227
228 228
229 229
230static int u_id = 1; 230static int u_id = 1;
231static int get_unique_id() 231static int get_unique_id()
232{ 232{
233 return u_id++; 233 return u_id++;
234} 234}
235 235
236static const int nfontsizes = 6; 236static const int nfontsizes = 6;
237static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; 237static const int fontsize[nfontsizes] = {8,10,12,14,18,24};
238 238
239TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) 239TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
240 : QMainWindow( parent, name, f ), bFromDocView( FALSE ) 240 : QMainWindow( parent, name, f ), bFromDocView( FALSE )
241{ 241{
242 doc = 0; 242 doc = 0;
243 243
244 setToolBarsMovable( FALSE ); 244 setToolBarsMovable( FALSE );
245 245
246 setIcon( Resource::loadPixmap( "TextEditor" ) ); 246 setIcon( Resource::loadPixmap( "TextEditor" ) );
247 247
248 QPEToolBar *bar = new QPEToolBar( this ); 248 QPEToolBar *bar = new QPEToolBar( this );
249 bar->setHorizontalStretchable( TRUE ); 249 bar->setHorizontalStretchable( TRUE );
250 menu = bar; 250 menu = bar;
251 251
252 QPEMenuBar *mb = new QPEMenuBar( bar ); 252 QPEMenuBar *mb = new QPEMenuBar( bar );
253 QPopupMenu *file = new QPopupMenu( this ); 253 QPopupMenu *file = new QPopupMenu( this );
254 QPopupMenu *edit = new QPopupMenu( this ); 254 QPopupMenu *edit = new QPopupMenu( this );
255 QPopupMenu *font = new QPopupMenu( this ); 255 font = new QPopupMenu( this );
256 256
257 bar = new QPEToolBar( this ); 257 bar = new QPEToolBar( this );
258 editBar = bar; 258 editBar = bar;
259 259
260 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); 260 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
261 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 261 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
262 a->addTo( bar ); 262 a->addTo( bar );
263 a->addTo( file ); 263 a->addTo( file );
264 264
265 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 ); 265 a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
266 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); 266 connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
267// a->addTo( bar ); 267// a->addTo( bar );
268 a->addTo( file ); 268 a->addTo( file );
269 269
270 a = new QAction( tr( "Browse" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 ); 270 a = new QAction( tr( "Browse" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
271 connect( a, SIGNAL( activated() ), this, SLOT( newFileOpen() ) ); 271 connect( a, SIGNAL( activated() ), this, SLOT( newFileOpen() ) );
272 a->addTo( bar ); 272 a->addTo( bar );
273 a->addTo( file ); 273 a->addTo( file );
274 274
275 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 ); 275 a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 );
276 connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); 276 connect( a, SIGNAL( activated() ), this, SLOT( save() ) );
277// a->addTo( bar ); 277// a->addTo( bar );
278 file->insertSeparator(); 278 file->insertSeparator();
279 a->addTo( file ); 279 a->addTo( file );
280 280
281 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 ); 281 a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 );
282 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); 282 connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) );
283 a->addTo( file ); 283 a->addTo( file );
284 284
285 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), QString::null, 0, this, 0 ); 285 a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), QString::null, 0, this, 0 );
286 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); 286 connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
287 a->addTo( editBar ); 287 a->addTo( editBar );
288 a->addTo( edit ); 288 a->addTo( edit );
289 289
290 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 ); 290 a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 );
291 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); 291 connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
292 a->addTo( editBar ); 292 a->addTo( editBar );
293 a->addTo( edit ); 293 a->addTo( edit );
294 294
295 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); 295 a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 );
296 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); 296 connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
297 a->addTo( editBar ); 297 a->addTo( editBar );
298 a->addTo( edit ); 298 a->addTo( edit );
299 299
300 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); 300 a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 );
301 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); 301 connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) );
302 edit->insertSeparator(); 302 edit->insertSeparator();
303 a->addTo( bar ); 303 a->addTo( bar );
304 a->addTo( edit ); 304 a->addTo( edit );
305 305
306 306
307 int defsize; 307 int defsize;
308 bool defb, defi, wrap; 308 bool defb, defi, wrap;
309 309
310 Config cfg("TextEdit"); 310 Config cfg("TextEdit");
311 cfg.setGroup("View"); 311 cfg.setGroup("View");
312 defsize = cfg.readNumEntry("FontSize",10); 312 defsize = cfg.readNumEntry("FontSize",10);
313 defb = cfg.readBoolEntry("Bold",FALSE); 313 defb = cfg.readBoolEntry("Bold",FALSE);
314 defi = cfg.readBoolEntry("Italic",FALSE); 314 defi = cfg.readBoolEntry("Italic",FALSE);
315 wrap = cfg.readBoolEntry("Wrap",TRUE); 315 wrap = cfg.readBoolEntry("Wrap",TRUE);
316 316
317 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); 317 zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 );
318 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); 318 connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) );
319 zin->addTo( font ); 319 zin->addTo( font );
320 320
321 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); 321 zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 );
322 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); 322 connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) );
323 zout->addTo( font ); 323 zout->addTo( font );
324 324
325 font->insertSeparator(); 325 font->insertSeparator();
326 326
327#if 0 327#if 0
328 QAction *ba = new QAction( tr("Bold"), QString::null, 0, this, 0 ); 328 QAction *ba = new QAction( tr("Bold"), QString::null, 0, this, 0 );
329 connect( ba, SIGNAL( toggled(bool) ), this, SLOT( setBold(bool) ) ); 329 connect( ba, SIGNAL( toggled(bool) ), this, SLOT( setBold(bool) ) );
330 ba->setToggleAction(TRUE); 330 ba->setToggleAction(TRUE);
331 ba->addTo( font ); 331 ba->addTo( font );
332 332
333 QAction *ia = new QAction( tr("Italic"), QString::null, 0, this, 0 ); 333 QAction *ia = new QAction( tr("Italic"), QString::null, 0, this, 0 );
334 connect( ia, SIGNAL( toggled(bool) ), this, SLOT( setItalic(bool) ) ); 334 connect( ia, SIGNAL( toggled(bool) ), this, SLOT( setItalic(bool) ) );
335 ia->setToggleAction(TRUE); 335 ia->setToggleAction(TRUE);
336 ia->addTo( font ); 336 ia->addTo( font );
337 337
338 ba->setOn(defb); 338 ba->setOn(defb);
339 ia->setOn(defi); 339 ia->setOn(defi);
340 340
341 font->insertSeparator(); 341 font->insertSeparator();
342#endif 342#endif
343 343
344 QAction *wa = new QAction( tr("Wrap lines"), QString::null, 0, this, 0 ); 344 QAction *wa = new QAction( tr("Wrap lines"), QString::null, 0, this, 0 );
345 connect( wa, SIGNAL( toggled(bool) ), this, SLOT( setWordWrap(bool) ) ); 345 connect( wa, SIGNAL( toggled(bool) ), this, SLOT( setWordWrap(bool) ) );
346 wa->setToggleAction(TRUE); 346 wa->setToggleAction(TRUE);
347 wa->addTo( font ); 347 wa->addTo( font );
348 348
349 font->insertSeparator(); 349 font->insertSeparator();
350 font->insertItem("Font", this, SLOT(changeFont()) ); 350 font->insertItem("Font", this, SLOT(changeFont()) );
351 351
352 font->insertSeparator();
353 nStart = new QAction( tr("Start with new file"), QString::null, 0, this, 0 );
354 connect( nStart, SIGNAL( toggled(bool) ), this, SLOT( changeStartConfig(bool) ) );
355 nStart->setToggleAction(TRUE);
356 nStart->addTo( font );
357
352 mb->insertItem( tr( "File" ), file ); 358 mb->insertItem( tr( "File" ), file );
353 mb->insertItem( tr( "Edit" ), edit ); 359 mb->insertItem( tr( "Edit" ), edit );
354 mb->insertItem( tr( "View" ), font ); 360 mb->insertItem( tr( "View" ), font );
355 361
356 searchBar = new QPEToolBar(this); 362 searchBar = new QPEToolBar(this);
357 addToolBar( searchBar, "Search", QMainWindow::Top, TRUE ); 363 addToolBar( searchBar, "Search", QMainWindow::Top, TRUE );
358 364
359 searchBar->setHorizontalStretchable( TRUE ); 365 searchBar->setHorizontalStretchable( TRUE );
360 366
361 searchEdit = new QLineEdit( searchBar, "searchEdit" ); 367 searchEdit = new QLineEdit( searchBar, "searchEdit" );
362 searchBar->setStretchableWidget( searchEdit ); 368 searchBar->setStretchableWidget( searchEdit );
363 connect( searchEdit, SIGNAL( textChanged( const QString & ) ), 369 connect( searchEdit, SIGNAL( textChanged( const QString & ) ),
364 this, SLOT( search() ) ); 370 this, SLOT( search() ) );
365 371
366 372
367 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 ); 373 a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 );
368 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); 374 connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
369 a->addTo( searchBar ); 375 a->addTo( searchBar );
370 a->addTo( edit ); 376 a->addTo( edit );
371 377
372 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 378 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
373 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); 379 connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
374 a->addTo( searchBar ); 380 a->addTo( searchBar );
375 381
376 edit->insertSeparator(); 382 edit->insertSeparator();
377 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 383 a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
378 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); 384 connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) );
379 a->addTo( edit ); 385 a->addTo( edit );
380 386
381 searchBar->hide(); 387 searchBar->hide();
382 388
383 editorStack = new QWidgetStack( this ); 389 editorStack = new QWidgetStack( this );
384 setCentralWidget( editorStack ); 390 setCentralWidget( editorStack );
385 391
386 searchVisible = FALSE; 392 searchVisible = FALSE;
387 393
388 fileSelector = new FileSelector( "text/*", editorStack, "fileselector" , TRUE, TRUE); //buggy 394 fileSelector = new FileSelector( "text/*", editorStack, "fileselector" , TRUE, TRUE); //buggy
389 connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( showEditTools() ) ); 395 connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( showEditTools() ) );
390 connect( fileSelector, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); 396 connect( fileSelector, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) );
391 connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( openFile( const DocLnk & ) ) ); 397 connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( openFile( const DocLnk & ) ) );
392// fileOpen(); 398// fileOpen();
393 399
394 editor = new QpeEditor( editorStack ); 400 editor = new QpeEditor( editorStack );
395 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 401 editor->setFrameStyle( QFrame::Panel | QFrame::Sunken );
396 editorStack->addWidget( editor, get_unique_id() ); 402 editorStack->addWidget( editor, get_unique_id() );
397 403
398 resize( 200, 300 ); 404 resize( 200, 300 );
399 405
400// setFontSize(defsize,TRUE); 406// setFontSize(defsize,TRUE);
401 FontDatabase fdb; 407 FontDatabase fdb;
402 QFont defaultFont=editor->font(); 408 QFont defaultFont=editor->font();
403 QFontInfo fontInfo(defaultFont); 409 QFontInfo fontInfo(defaultFont);
404 410
405 cfg.setGroup("Font"); 411 cfg.setGroup("Font");
406 QString family = cfg.readEntry("Family", fontInfo.family()); 412 QString family = cfg.readEntry("Family", fontInfo.family());
407 QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); 413 QString style = cfg.readEntry("Style", fdb.styleString(defaultFont));
408 int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); 414 int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10);
409 QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); 415 QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) );
410 416
411 defaultFont = fdb.font(family,style,i_size,charSet); 417 defaultFont = fdb.font(family,style,i_size,charSet);
412 editor->setFont( defaultFont); 418 editor->setFont( defaultFont);
413 419
414 wa->setOn(wrap); 420 wa->setOn(wrap);
415 updateCaption(); 421 updateCaption();
416 422
417 fileNew(); 423 cfg.setGroup("View");
424 if(cfg.readEntry("startNew","TRUE") == "TRUE") {
425 nStart->setOn(TRUE);
426 fileNew();
427 } else {
428 fileOpen();
429 }
430
418} 431}
419 432
420TextEdit::~TextEdit() 433TextEdit::~TextEdit()
421{ 434{
422// save(); 435// save();
423 436
424 Config cfg("TextEdit"); 437 Config cfg("TextEdit");
425 cfg.setGroup("View"); 438 cfg.setGroup("View");
426 QFont f = editor->font(); 439 QFont f = editor->font();
427 cfg.writeEntry("FontSize",f.pointSize()); 440 cfg.writeEntry("FontSize",f.pointSize());
428 cfg.writeEntry("Bold",f.bold()); 441 cfg.writeEntry("Bold",f.bold());
429 cfg.writeEntry("Italic",f.italic()); 442 cfg.writeEntry("Italic",f.italic());
430 cfg.writeEntry("Wrap",editor->wordWrap() == QMultiLineEdit::WidgetWidth); 443 cfg.writeEntry("Wrap",editor->wordWrap() == QMultiLineEdit::WidgetWidth);
431} 444}
432 445
433void TextEdit::zoomIn() 446void TextEdit::zoomIn()
434{ 447{
435 setFontSize(editor->font().pointSize()+1,FALSE); 448 setFontSize(editor->font().pointSize()+1,FALSE);
436} 449}
437 450
438void TextEdit::zoomOut() 451void TextEdit::zoomOut()
439{ 452{
440 setFontSize(editor->font().pointSize()-1,TRUE); 453 setFontSize(editor->font().pointSize()-1,TRUE);
441} 454}
442 455
443 456
444void TextEdit::setFontSize(int sz, bool round_down_not_up) 457void TextEdit::setFontSize(int sz, bool round_down_not_up)
445{ 458{
446 int s=10; 459 int s=10;
447 for (int i=0; i<nfontsizes; i++) { 460 for (int i=0; i<nfontsizes; i++) {
448 if ( fontsize[i] == sz ) { 461 if ( fontsize[i] == sz ) {
449 s = sz; 462 s = sz;
450 break; 463 break;
451 } else if ( round_down_not_up ) { 464 } else if ( round_down_not_up ) {
452 if ( fontsize[i] < sz ) 465 if ( fontsize[i] < sz )
453 s = fontsize[i]; 466 s = fontsize[i];
454 } else { 467 } else {
455 if ( fontsize[i] > sz ) { 468 if ( fontsize[i] > sz ) {
456 s = fontsize[i]; 469 s = fontsize[i];
457 break; 470 break;
458 } 471 }
459 } 472 }
460 } 473 }
461 474
462 QFont f = editor->font(); 475 QFont f = editor->font();
463 f.setPointSize(s); 476 f.setPointSize(s);
464 editor->setFont(f); 477 editor->setFont(f);
465 478
466 zin->setEnabled(s != fontsize[nfontsizes-1]); 479 zin->setEnabled(s != fontsize[nfontsizes-1]);
467 zout->setEnabled(s != fontsize[0]); 480 zout->setEnabled(s != fontsize[0]);
468} 481}
469 482
470void TextEdit::setBold(bool y) 483void TextEdit::setBold(bool y)
471{ 484{
472 QFont f = editor->font(); 485 QFont f = editor->font();
473 f.setBold(y); 486 f.setBold(y);
474 editor->setFont(f); 487 editor->setFont(f);
475} 488}
476 489
477void TextEdit::setItalic(bool y) 490void TextEdit::setItalic(bool y)
478{ 491{
479 QFont f = editor->font(); 492 QFont f = editor->font();
480 f.setItalic(y); 493 f.setItalic(y);
481 editor->setFont(f); 494 editor->setFont(f);
482} 495}
483 496
484void TextEdit::setWordWrap(bool y) 497void TextEdit::setWordWrap(bool y)
485{ 498{
486 bool state = editor->edited(); 499 bool state = editor->edited();
487 editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap ); 500 editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap );
488 editor->setEdited( state ); 501 editor->setEdited( state );
489} 502}
490 503
491void TextEdit::fileNew() 504void TextEdit::fileNew()
492{ 505{
493 if( !bFromDocView ) { 506 if( !bFromDocView ) {
494 saveAs(); 507 saveAs();
495 } 508 }
496 newFile(DocLnk()); 509 newFile(DocLnk());
497} 510}
498 511
499void TextEdit::fileOpen() 512void TextEdit::fileOpen()
500{ 513{
501// if ( !save() ) { 514// if ( !save() ) {
502// if ( QMessageBox::critical( this, tr( "Out of space" ), 515// if ( QMessageBox::critical( this, tr( "Out of space" ),
503// tr( "Text Editor was unable to\n" 516// tr( "Text Editor was unable to\n"
504// "save your changes.\n" 517// "save your changes.\n"
505// "Free some space and try again.\n" 518// "Free some space and try again.\n"
506// "\nContinue anyway?" ), 519// "\nContinue anyway?" ),
507// QMessageBox::Yes|QMessageBox::Escape, 520// QMessageBox::Yes|QMessageBox::Escape,
508// QMessageBox::No|QMessageBox::Default ) 521// QMessageBox::No|QMessageBox::Default )
509// != QMessageBox::Yes ) 522// != QMessageBox::Yes )
510// return; 523// return;
511// else { 524// else {
512// delete doc; 525// delete doc;
513// doc = 0; 526// doc = 0;
@@ -604,299 +617,324 @@ void TextEdit::findNext()
604{ 617{
605 editor->find( searchEdit->text(), FALSE, FALSE ); 618 editor->find( searchEdit->text(), FALSE, FALSE );
606 619
607} 620}
608 621
609void TextEdit::findClose() 622void TextEdit::findClose()
610{ 623{
611 searchVisible = FALSE; 624 searchVisible = FALSE;
612 searchBar->hide(); 625 searchBar->hide();
613} 626}
614 627
615void TextEdit::search() 628void TextEdit::search()
616{ 629{
617 editor->find( searchEdit->text(), FALSE, FALSE ); 630 editor->find( searchEdit->text(), FALSE, FALSE );
618} 631}
619 632
620void TextEdit::newFile( const DocLnk &f ) 633void TextEdit::newFile( const DocLnk &f )
621{ 634{
622 DocLnk nf = f; 635 DocLnk nf = f;
623 nf.setType("text/plain"); 636 nf.setType("text/plain");
624 clear(); 637 clear();
625 editorStack->raiseWidget( editor ); 638 editorStack->raiseWidget( editor );
626 setWState (WState_Reserved1 ); 639 setWState (WState_Reserved1 );
627 editor->setFocus(); 640 editor->setFocus();
628 doc = new DocLnk(nf); 641 doc = new DocLnk(nf);
629 qDebug("newFile "+currentFileName); 642 qDebug("newFile "+currentFileName);
630 updateCaption(currentFileName); 643 updateCaption(currentFileName);
631} 644}
632 645
633void TextEdit::openFile( const QString &f ) 646void TextEdit::openFile( const QString &f )
634{ 647{
635 bFromDocView = TRUE; 648 bFromDocView = TRUE;
636 DocLnk nf; 649 DocLnk nf;
637 nf.setType("text/plain"); 650 nf.setType("text/plain");
638 nf.setFile(f); 651 nf.setFile(f);
639 currentFileName=f; 652 currentFileName=f;
640 QFileInfo fi( currentFileName); 653 QFileInfo fi( currentFileName);
641 nf.setName(fi.baseName()); 654 nf.setName(fi.baseName());
642 qDebug("openFile string"+currentFileName); 655 qDebug("openFile string"+currentFileName);
643 656
644 openFile(nf); 657 openFile(nf);
645 showEditTools(); 658 showEditTools();
646 // Show filename in caption 659 // Show filename in caption
647 QString name = f; 660 QString name = f;
648 int sep = name.findRev( '/' ); 661 int sep = name.findRev( '/' );
649 if ( sep > 0 ) 662 if ( sep > 0 )
650 name = name.mid( sep+1 ); 663 name = name.mid( sep+1 );
651 updateCaption( name ); 664 updateCaption( name );
652} 665}
653 666
654void TextEdit::openFile( const DocLnk &f ) 667void TextEdit::openFile( const DocLnk &f )
655{ 668{
656// clear(); 669// clear();
657 bFromDocView = TRUE; 670 bFromDocView = TRUE;
658 FileManager fm; 671 FileManager fm;
659 QString txt; 672 QString txt;
660 currentFileName=f.name(); 673 currentFileName=f.name();
661 qDebug("openFile doclnk " + currentFileName); 674 qDebug("openFile doclnk " + currentFileName);
662 if ( !fm.loadFile( f, txt ) ) { 675 if ( !fm.loadFile( f, txt ) ) {
663 // ####### could be a new file 676 // ####### could be a new file
664 qDebug( "Cannot open file" ); 677 qDebug( "Cannot open file" );
665 678
666 //return; 679 //return;
667 } 680 }
668 681
669 fileNew(); 682 fileNew();
670 if ( doc ) 683 if ( doc )
671 delete doc; 684 delete doc;
672 doc = new DocLnk(f); 685 doc = new DocLnk(f);
673 editor->setText(txt); 686 editor->setText(txt);
674 editor->setEdited( false); 687 editor->setEdited( false);
675 qDebug("openFile doclnk "+currentFileName); 688 qDebug("openFile doclnk "+currentFileName);
676 doc->setName(currentFileName); 689 doc->setName(currentFileName);
677 updateCaption(); 690 updateCaption();
678} 691}
679 692
680void TextEdit::showEditTools() 693void TextEdit::showEditTools()
681{ 694{
682// if ( !doc ) 695// if ( !doc )
683// close(); 696// close();
684// clear(); 697// clear();
685 fileSelector->hide(); 698 fileSelector->hide();
686 menu->show(); 699 menu->show();
687 editBar->show(); 700 editBar->show();
688 if ( searchVisible ) 701 if ( searchVisible )
689 searchBar->show(); 702 searchBar->show();
690// updateCaption(); 703// updateCaption();
691 editorStack->raiseWidget( editor ); 704 editorStack->raiseWidget( editor );
692 setWState (WState_Reserved1 ); 705 setWState (WState_Reserved1 );
693} 706}
694 707
695/*! 708/*!
696 unprompted save */ 709 unprompted save */
697bool TextEdit::save() 710bool TextEdit::save()
698{ 711{
699 QString file = doc->file(); 712 QString file = doc->file();
713 qDebug(file);
700 QString name= doc->name(); 714 QString name= doc->name();
701 715 qDebug(name);
702 QString rt = editor->text(); 716 QString rt = editor->text();
703 currentFileName= name ; 717 if( !rt.isEmpty() ) {
704 qDebug("saveFile "+currentFileName); 718 if(name.isEmpty()) {
705 719 saveAs();
706 struct stat buf; 720 } else {
707 mode_t mode; 721 currentFileName= name ;
708 stat(file.latin1(), &buf); 722 qDebug("saveFile "+currentFileName);
709 mode = buf.st_mode; 723
724 struct stat buf;
725 mode_t mode;
726 stat(file.latin1(), &buf);
727 mode = buf.st_mode;
728
729 doc->setName( name);
730 FileManager fm;
731 if ( !fm.saveFile( *doc, rt ) ) {
732 return false;
733 }
734 editor->setEdited( false );
710 735
711 doc->setName( name); 736 chmod( file.latin1(), mode);
712 FileManager fm; 737 }
713 if ( !fm.saveFile( *doc, rt ) ) { 738 return true;
714 return false;
715 } 739 }
716 editor->setEdited( false ); 740 return false;
717
718 chmod( file.latin1(), mode);
719 return true;
720} 741}
721 742
722/*! 743/*!
723 prompted save */ 744 prompted save */
724bool TextEdit::saveAs() 745bool TextEdit::saveAs()
725{ 746{
726// qDebug("saveAsFile "+currentFileName); 747// qDebug("saveAsFile "+currentFileName);
727 748
728 // case of nothing to save... /// there's always something to save 749 // case of nothing to save... /// there's always something to save
729// if ( !doc )//|| !bFromDocView) 750// if ( !doc )//|| !bFromDocView)
730// { 751// {
731// qDebug("no doc"); 752// qDebug("no doc");
732// return true; 753// return true;
733// } 754// }
734 if ( !editor->edited() ) { 755 if ( !editor->edited() ) {
735 delete doc; 756 delete doc;
736 doc = 0; 757 doc = 0;
737 return true; 758 return true;
738 } 759 }
739 760
740 QString rt = editor->text(); 761 QString rt = editor->text();
741 qDebug(currentFileName); 762 qDebug(currentFileName);
742 763
743 if( currentFileName.isEmpty() || currentFileName == "Unnamed") { 764 if( currentFileName.isEmpty() || currentFileName == "Unnamed") {
744 qDebug("do silly TT filename thing"); 765 qDebug("do silly TT filename thing");
745 if ( doc->name().isEmpty() ) { 766 if ( doc->name().isEmpty() ) {
746 QString pt = rt.simplifyWhiteSpace(); 767 QString pt = rt.simplifyWhiteSpace();
747 int i = pt.find( ' ' ); 768 int i = pt.find( ' ' );
748 QString docname = pt; 769 QString docname = pt;
749 if ( i > 0 ) 770 if ( i > 0 )
750 docname = pt.left( i ); 771 docname = pt.left( i );
751 // remove "." at the beginning 772 // remove "." at the beginning
752 while( docname.startsWith( "." ) ) 773 while( docname.startsWith( "." ) )
753 docname = docname.mid( 1 ); 774 docname = docname.mid( 1 );
754 docname.replace( QRegExp("/"), "_" ); 775 docname.replace( QRegExp("/"), "_" );
755 // cut the length. filenames longer than that don't make sense and something goes wrong when they get too long. 776 // cut the length. filenames longer than that don't make sense and something goes wrong when they get too long.
756 if ( docname.length() > 40 ) 777 if ( docname.length() > 40 )
757 docname = docname.left(40); 778 docname = docname.left(40);
758 if ( docname.isEmpty() ) 779 if ( docname.isEmpty() )
759 docname = "Unnamed"; 780 docname = "Unnamed";
760 doc->setName(docname); 781 doc->setName(docname);
761 currentFileName=docname; 782 currentFileName=docname;
762 } 783 }
763 } 784 }
764 785
765 786
766 fileSaveDlg=new fileSaver(this,"Save File",TRUE, 0, currentFileName); 787 fileSaveDlg=new fileSaver(this,"Save File As?",TRUE, 0, currentFileName);
767 qDebug("wanna save filename "+currentFileName); 788 qDebug("wanna save filename "+currentFileName);
768 fileSaveDlg->exec(); 789 fileSaveDlg->exec();
769 if( fileSaveDlg->result() == 1 ) { 790 if( fileSaveDlg->result() == 1 ) {
770 QString fileNm=fileSaveDlg->selectedFileName; 791 QString fileNm=fileSaveDlg->selectedFileName;
771 qDebug("saving filename "+fileNm); 792 qDebug("saving filename "+fileNm);
772 QFileInfo fi(fileNm); 793 QFileInfo fi(fileNm);
773 currentFileName=fi.fileName(); 794 currentFileName=fi.fileName();
774 if(doc) { 795 if(doc) {
775 qDebug("doclnk exists");
776// QString file = doc->file(); 796// QString file = doc->file();
777// doc->removeFiles(); 797// doc->removeFiles();
778 delete doc; 798 delete doc;
779 DocLnk nf; 799 DocLnk nf;
780 nf.setType("text/plain"); 800 nf.setType("text/plain");
781 nf.setFile( fileNm); 801 nf.setFile( fileNm);
782 doc = new DocLnk(nf); 802 doc = new DocLnk(nf);
783// editor->setText(rt); 803// editor->setText(rt);
784 qDebug("openFile doclnk "+currentFileName); 804// qDebug("openFile doclnk "+currentFileName);
785 doc->setName( currentFileName); 805 doc->setName( currentFileName);
786 updateCaption( currentFileName); 806 updateCaption( currentFileName);
787 807
788 FileManager fm; 808 FileManager fm;
789 if ( !fm.saveFile( *doc, rt ) ) { 809 if ( !fm.saveFile( *doc, rt ) ) {
790 return false; 810 return false;
791 } 811 }
792 if( fileSaveDlg->filePermCheck->isChecked() ) { 812 if( fileSaveDlg->filePermCheck->isChecked() ) {
793 filePermissions *filePerm; 813 filePermissions *filePerm;
794 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)fileNm); 814 filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)fileNm);
795 filePerm->exec(); 815 filePerm->exec();
796 editor->setEdited( false ); 816 editor->setEdited( false );
797 if( filePerm) 817 if( filePerm)
798 delete filePerm; 818 delete filePerm;
799 } 819 }
800 } 820 }
801 } 821 }
802 822
803 if(fileSaveDlg) 823 if(fileSaveDlg)
804 delete fileSaveDlg; 824 delete fileSaveDlg;
805 return true; 825 return true;
806} 826}
807 827
808void TextEdit::clear() 828void TextEdit::clear()
809{ 829{
810 delete doc; 830 delete doc;
811 doc = 0; 831 doc = 0;
812 editor->clear(); 832 editor->clear();
813} 833}
814 834
815void TextEdit::updateCaption( const QString &name ) 835void TextEdit::updateCaption( const QString &name )
816{ 836{
817 if ( !doc ) 837 if ( !doc )
818 setCaption( tr("Text Editor") ); 838 setCaption( tr("Text Editor") );
819 else { 839 else {
820 QString s = name; 840 QString s = name;
821 if ( s.isNull() ) 841 if ( s.isNull() )
822 s = doc->name(); 842 s = doc->name();
823 if ( s.isEmpty() ) { 843 if ( s.isEmpty() ) {
824 s = tr( "Unnamed" ); 844 s = tr( "Unnamed" );
825 currentFileName=s; 845 currentFileName=s;
826 } 846 }
827 847
828 setCaption( s + " - " + tr("Text Editor") ); 848 setCaption( s + " - " + tr("Text Editor") );
829 } 849 }
830} 850}
831 851
832void TextEdit::setDocument(const QString& fileref) 852void TextEdit::setDocument(const QString& fileref)
833{ 853{
834 bFromDocView = TRUE; 854 bFromDocView = TRUE;
835 qDebug("setDocument "+fileref); 855 qDebug("setDocument "+fileref);
836 bFromDocView = TRUE; 856 bFromDocView = TRUE;
837 if(fileref.find(".desktop",0,TRUE) == -1) { 857 if(fileref.find(".desktop",0,TRUE) == -1) {
838 openFile(fileref); 858 openFile(fileref);
839 } else { 859 } else {
840 openFile(DocLnk(fileref)); 860 openFile(DocLnk(fileref));
841 } 861 }
842} 862}
843 863
844void TextEdit::closeEvent( QCloseEvent *e ) 864void TextEdit::closeEvent( QCloseEvent *e )
845{ 865{
846 if ( editorStack->visibleWidget() == fileSelector && !bFromDocView ) { 866 if ( editorStack->visibleWidget() == fileSelector && !bFromDocView ) {
847 e->ignore(); 867 e->ignore();
848 repaint(); 868 repaint();
849// fileRevert(); 869// fileRevert();
850 870
851 } else { 871 } else {
852 bFromDocView = FALSE; 872 bFromDocView = FALSE;
853 e->accept(); 873 e->accept();
854 } 874 }
855} 875}
856 876
857void TextEdit::accept() 877void TextEdit::accept()
858{ 878 {
859 save(); 879 QString file = doc->file();
860 close(); 880 if (file.find("_.txt",0,TRUE) ==-1)
861// fileOpen(); //godamn thats obnoxious! lemme out!!! 881 save();
882 else {
883 QFile(file).remove();
884 }
885 exit(0);
886
862} 887}
863 888
864void TextEdit::changeFont() { 889void TextEdit::changeFont() {
865 FontDatabase fdb; 890 FontDatabase fdb;
866 QFont defaultFont=editor->font(); 891 QFont defaultFont=editor->font();
867 QFontInfo fontInfo(defaultFont); 892 QFontInfo fontInfo(defaultFont);
868 Config cfg("TextEdit"); 893 Config cfg("TextEdit");
869 cfg.setGroup("Font"); 894 cfg.setGroup("Font");
870 QString family = cfg.readEntry("Family", fontInfo.family()); 895 QString family = cfg.readEntry("Family", fontInfo.family());
871 QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); 896 QString style = cfg.readEntry("Style", fdb.styleString(defaultFont));
872 int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); 897 int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10);
873 QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); 898 QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) );
874 899
875 defaultFont = fdb.font(family,style,i_size,charSet); 900 defaultFont = fdb.font(family,style,i_size,charSet);
876 901
877 FontDialog *fontDlg; 902 FontDialog *fontDlg;
878 fontDlg=new FontDialog(this,"FontDialog",TRUE); 903 fontDlg=new FontDialog(this,"FontDialog",TRUE);
879 904
880 fontDlg->exec(); 905 fontDlg->exec();
881 906
882 QFont myFont=fontDlg->selectedFont; 907 QFont myFont=fontDlg->selectedFont;
883 editor->setFont( myFont); 908 editor->setFont( myFont);
884 delete fontDlg; 909 delete fontDlg;
885 910
886} 911}
887 912
888void TextEdit::editDelete() 913void TextEdit::editDelete()
889{ 914{
890 switch ( QMessageBox::warning(this,"Text Editor","Do you really want\nto delete the current file\nfrom the disk?\nThis is irreversable!!","Yes","No",0,0,1) ) { 915 switch ( QMessageBox::warning(this,"Text Editor","Do you really want\nto delete the current file\nfrom the disk?\nThis is irreversable!!","Yes","No",0,0,1) ) {
891 case 0: 916 case 0:
892 if(doc) { 917 if(doc) {
893 doc->removeFiles(); 918 doc->removeFiles();
894 clear(); 919 clear();
895 setCaption( tr("Text Editor") ); 920 setCaption( tr("Text Editor") );
896 } 921 }
897 break; 922 break;
898 case 1: 923 case 1:
899 // exit 924 // exit
900 break; 925 break;
901 }; 926 };
902} 927}
928
929void TextEdit::changeStartConfig( bool b ) {
930
931 Config cfg("TextEdit");
932 cfg.setGroup("View");
933 if(b) {
934 qDebug("bool");
935 cfg.writeEntry("startNew","TRUE");
936 } else {
937 cfg.writeEntry("startNew","FALSE");
938 }
939 update();
940}