• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeui
 

tdeui

  • tdeui
keditcl1.cpp
1/* This file is part of the KDE libraries
2
3 Copyright (C) 1997 Bernd Johannes Wuebben <wuebben@math.cornell.edu>
4 Copyright (C) 2000 Waldo Bastian <bastian@kde.org>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#include <tqdragobject.h>
23#include <tqpopupmenu.h>
24#include <tqtextstream.h>
25#include <tqtimer.h>
26
27#include <tdeapplication.h>
28#include <kcursor.h>
29#include <kdebug.h>
30#include <kcmenumngr.h>
31#include <tdefontdialog.h>
32#include <tdelocale.h>
33#include <tdemessagebox.h>
34#include <tdestdaccel.h>
35#include <kurldrag.h>
36
37#include "keditcl.h"
38#include "keditcl.moc"
39
40class KEdit::KEditPrivate
41{
42public:
43 bool overwriteEnabled:1;
44 bool posDirty:1;
45 bool autoUpdate:1;
46};
47
48
49KEdit::KEdit(TQWidget *_parent, const char *name)
50 : TQMultiLineEdit(_parent, name)
51{
52 d = new KEditPrivate;
53 d->overwriteEnabled = false;
54 d->posDirty = true;
55 d->autoUpdate = true;
56
57 parent = _parent;
58
59 // set some defaults
60
61 line_pos = col_pos = 0;
62
63 srchdialog = NULL;
64 replace_dialog= NULL;
65 gotodialog = NULL;
66
67 setAcceptDrops(true);
68 KCursor::setAutoHideCursor( this, true );
69
70 connect(this, TQ_SIGNAL(cursorPositionChanged(int,int)),
71 this, TQ_SLOT(slotCursorPositionChanged()));
72}
73
74
75KEdit::~KEdit()
76{
77 delete d;
78}
79
80void
81KEdit::setAutoUpdate(bool b)
82{
83 d->autoUpdate = b;
84}
85
86void
87KEdit::insertText(TQTextStream *stream)
88{
89// setAutoUpdate(false);
90 int line, col;
91 getCursorPosition(&line, &col);
92 int saveline = line;
93 int savecol = col;
94 TQString textLine;
95
96 // MS: Patch by Martin Schenk <martin@schenk.com>
97 // MS: disable UNDO, or TQMultiLineEdit remembers every textLine !!!
98 // memory usage is:
99 // textLine: 2*size rounded up to nearest power of 2 (520Kb -> 1024Kb)
100 // widget: about (2*size + 60bytes*lines)
101 // -> without disabling undo, it often needs almost 8*size
102 int oldUndoDepth = undoDepth();
103 setUndoDepth( 0 ); // ### -1?
104
105 // MS: read everything at once if file <= 1MB,
106 // else read in 5000-line chunks to keep memory usage acceptable.
107 TQIODevice *dev=stream->device();
108 if (dev && dev->size()>(1024*1024)) {
109 while(1) {
110 int i;
111 textLine="";
112 for (i=0; i<5000; i++) {
113 TQString line=stream->readLine();
114 if (line.isNull()) break; // EOF
115 textLine+=line+'\n';
116 }
117 insertAt(textLine, line, col);
118 line+=i; col=0;
119 if (i!=5000) break;
120 }
121 }
122 else {
123 textLine = stream->read(); // Read all !
124 insertAt( textLine, line, col);
125 }
126 setUndoDepth( oldUndoDepth );
127
128 setCursorPosition(saveline, savecol);
129// setAutoUpdate(true);
130
131// repaint();
132
133 setModified(true);
134 setFocus();
135
136 // Bernd: Please don't leave debug message like that lying around
137 // they cause ENORMOUSE performance hits. Once upon a day
138 // kedit used to be really really fast using memmap etc .....
139 // oh well ....
140
141 // TQString str = text();
142 // for (int i = 0; i < (int) str.length(); i++)
143 // printf("KEdit: U+%04X\n", str[i].unicode());
144
145}
146
147void
148KEdit::cleanWhiteSpace()
149{
150 d->autoUpdate = false;
151 if (!hasMarkedText())
152 selectAll();
153 TQString oldText = markedText();
154 TQString newText;
155 TQStringList lines = TQStringList::split('\n', oldText, true);
156 bool addSpace = false;
157 bool firstLine = true;
158 TQChar lastChar = oldText[oldText.length()-1];
159 TQChar firstChar = oldText[0];
160 for(TQStringList::Iterator it = lines.begin();
161 it != lines.end();)
162 {
163 TQString line = (*it).simplifyWhiteSpace();
164 if (line.isEmpty())
165 {
166 if (addSpace)
167 newText += TQString::fromLatin1("\n\n");
168 if (firstLine)
169 {
170 if (firstChar.isSpace())
171 newText += '\n';
172 firstLine = false;
173 }
174 addSpace = false;
175 }
176 else
177 {
178 if (addSpace)
179 newText += ' ';
180 if (firstLine)
181 {
182 if (firstChar.isSpace())
183 newText += ' ';
184 firstLine = false;
185 }
186 newText += line;
187 addSpace = true;
188 }
189 it = lines.remove(it);
190 }
191 if (addSpace)
192 {
193 if (lastChar == '\n')
194 newText += '\n';
195 else if (lastChar.isSpace())
196 newText += ' ';
197 }
198
199 if (oldText == newText)
200 {
201 deselect();
202 d->autoUpdate = true;
203 repaint();
204 return;
205 }
206 if (wordWrap() == NoWrap)
207 {
208 // If wordwrap is off, we have to do some line-wrapping ourselves now
209 // We use another TQMultiLineEdit for this, so that we get nice undo
210 // behavior.
211 TQMultiLineEdit *we = new TQMultiLineEdit();
212 we->setWordWrap(FixedColumnWidth);
213 we->setWrapColumnOrWidth(78);
214 we->setText(newText);
215 newText = TQString::null;
216 for(int i = 0; i < we->numLines(); i++)
217 {
218 TQString line = we->textLine(i);
219 if (line.right(1) != "\n")
220 line += '\n';
221 newText += line;
222 }
223 delete we;
224 }
225
226 insert(newText);
227 d->autoUpdate = true;
228 repaint();
229
230 setModified(true);
231 setFocus();
232}
233
234
235void
236KEdit::saveText(TQTextStream *stream)
237{
238 saveText(stream, false);
239}
240
241void
242KEdit::saveText(TQTextStream *stream, bool softWrap)
243{
244 int line_count = numLines()-1;
245 if (line_count < 0)
246 return;
247
248 if (softWrap || (wordWrap() == NoWrap))
249 {
250 for(int i = 0; i < line_count; i++)
251 {
252 (*stream) << textLine(i) << '\n';
253 }
254 (*stream) << textLine(line_count);
255 }
256 else
257 {
258 for(int i = 0; i <= line_count; i++)
259 {
260 int lines_in_parag = linesOfParagraph(i);
261 if (lines_in_parag == 1)
262 {
263 (*stream) << textLine(i);
264 }
265 else
266 {
267 TQString parag_text = textLine(i);
268 int pos = 0;
269 int first_pos = 0;
270 int current_line = 0;
271 while(true) {
272 while(lineOfChar(i, pos) == current_line) pos++;
273 (*stream) << parag_text.mid(first_pos, pos - first_pos - 1) << '\n';
274 current_line++;
275 first_pos = pos;
276 if (current_line+1 == lines_in_parag)
277 {
278 // Last line
279 (*stream) << parag_text.mid(pos);
280 break;
281 }
282 }
283 }
284 if (i < line_count)
285 (*stream) << '\n';
286 }
287 }
288}
289
290int KEdit::currentLine(){
291
292 computePosition();
293 return line_pos;
294
295}
296
297int KEdit::currentColumn(){
298
299 computePosition();
300 return col_pos;
301}
302
303void KEdit::slotCursorPositionChanged()
304{
305 d->posDirty = true;
306 emit CursorPositionChanged();
307}
308
309void KEdit::computePosition()
310{
311 if (!d->posDirty) return;
312 d->posDirty = false;
313
314 int line, col;
315
316 getCursorPosition(&line,&col);
317
318 // line is expressed in paragraphs, we now need to convert to lines
319 line_pos = 0;
320 if (wordWrap() == NoWrap)
321 {
322 line_pos = line;
323 }
324 else
325 {
326 for(int i = 0; i < line; i++)
327 line_pos += linesOfParagraph(i);
328 }
329
330 int line_offset = lineOfChar(line, col);
331 line_pos += line_offset;
332
333 // We now calculate where the current line starts in the paragraph.
334 TQString linetext = textLine(line);
335 int start_of_line = 0;
336 if (line_offset > 0)
337 {
338 start_of_line = col;
339 while(lineOfChar(line, --start_of_line) == line_offset);
340 start_of_line++;
341 }
342
343
344 // O.K here is the deal: The function getCursorPositoin returns the character
345 // position of the cursor, not the screenposition. I.e,. assume the line
346 // consists of ab\tc then the character c will be on the screen on position 8
347 // whereas getCursorPosition will return 3 if the cursors is on the character c.
348 // Therefore we need to compute the screen position from the character position.
349 // That's what all the following trouble is all about:
350
351 int coltemp = col-start_of_line;
352 int pos = 0;
353 int find = 0;
354 int mem = 0;
355 bool found_one = false;
356
357 // if you understand the following algorithm you are worthy to look at the
358 // kedit+ sources -- if not, go away ;-)
359
360
361 while(find >=0 && find <= coltemp- 1 ){
362 find = linetext.find('\t', find+start_of_line, true )-start_of_line;
363 if( find >=0 && find <= coltemp - 1 ){
364 found_one = true;
365 pos = pos + find - mem;
366 pos = pos + 8 - pos % 8;
367 mem = find;
368 find ++;
369 }
370 }
371
372 pos = pos + coltemp - mem; // add the number of characters behind the
373 // last tab on the line.
374
375 if (found_one){
376 pos = pos - 1;
377 }
378
379 col_pos = pos;
380}
381
382
383void KEdit::keyPressEvent ( TQKeyEvent *e)
384{
385 // ignore Ctrl-Return so that KDialogBase can catch them
386 if ( e->key() == Key_Return && e->state() == ControlButton ) {
387 e->ignore();
388 return;
389 }
390
391 KKey key(e);
392 int keyQt = key.keyCodeQt();
393
394 if ( keyQt == CTRL+Key_K ){
395
396 int line = 0;
397 int col = 0;
398 TQString killstring;
399
400 if(!killing){
401 killbufferstring = "";
402 killtrue = false;
403 lastwasanewline = false;
404 }
405
406 if(!atEnd()){
407
408 getCursorPosition(&line,&col);
409 killstring = textLine(line);
410 killstring = killstring.mid(col,killstring.length());
411
412
413 if(!killbufferstring.isEmpty() && !killtrue && !lastwasanewline){
414 killbufferstring += '\n';
415 }
416
417 if( (killstring.length() == 0) && !killtrue){
418 killbufferstring += '\n';
419 lastwasanewline = true;
420 }
421
422 if(killstring.length() > 0){
423
424 killbufferstring += killstring;
425 lastwasanewline = false;
426 killtrue = true;
427
428 }else{
429
430 lastwasanewline = false;
431 killtrue = !killtrue;
432
433 }
434
435 }else{
436
437 if(killbufferstring.isEmpty() && !killtrue && !lastwasanewline){
438 killtrue = true;
439 }
440
441 }
442
443 killing = true;
444
445 TQMultiLineEdit::keyPressEvent(e);
446 setModified(true);
447 return;
448 }
449 else if ( keyQt == CTRL+Key_Y ){
450
451 int line = 0;
452 int col = 0;
453
454 getCursorPosition(&line,&col);
455
456 TQString tmpstring = killbufferstring;
457 if(!killtrue)
458 tmpstring += '\n';
459
460 insertAt(tmpstring,line,col);
461
462 killing = false;
463 setModified(true);
464 return;
465 }
466
467 killing = false;
468
469 if ( TDEStdAccel::copy().contains( key ) )
470 copy();
471 else if ( isReadOnly() )
472 TQMultiLineEdit::keyPressEvent( e );
473 // If this is an unmodified printable key, send it directly to TQMultiLineEdit.
474 else if ( !(key.keyCodeQt() & (CTRL | ALT)) && !e->text().isEmpty() && TQString(e->text()).unicode()->isPrint() )
475 TQMultiLineEdit::keyPressEvent( e );
476 else if ( TDEStdAccel::paste().contains( key ) ) {
477 paste();
478 setModified(true);
479 slotCursorPositionChanged();
480 }
481 else if ( TDEStdAccel::cut().contains( key ) ) {
482 cut();
483 setModified(true);
484 slotCursorPositionChanged();
485 }
486 else if ( TDEStdAccel::undo().contains( key ) ) {
487 undo();
488 setModified(true);
489 slotCursorPositionChanged();
490 }
491 else if ( TDEStdAccel::redo().contains( key ) ) {
492 redo();
493 setModified(true);
494 slotCursorPositionChanged();
495 }
496 else if ( TDEStdAccel::deleteWordBack().contains( key ) ) {
497 moveCursor(MoveWordBackward, true);
498 if (hasSelectedText())
499 del();
500 setModified(true);
501 slotCursorPositionChanged();
502 }
503 else if ( TDEStdAccel::deleteWordForward().contains( key ) ) {
504 moveCursor(MoveWordForward, true);
505 if (hasSelectedText())
506 del();
507 setModified(true);
508 slotCursorPositionChanged();
509 }
510 else if ( TDEStdAccel::backwardWord().contains( key ) ) {
511 CursorAction action = MoveWordBackward;
512 int para, index;
513 getCursorPosition( &para, & index );
514 if (text(para).isRightToLeft())
515 action = MoveWordForward;
516 moveCursor(action, false );
517 slotCursorPositionChanged();
518 }
519 else if ( TDEStdAccel::forwardWord().contains( key ) ) {
520 CursorAction action = MoveWordForward;
521 int para, index;
522 getCursorPosition( &para, & index );
523 if (text(para).isRightToLeft())
524 action = MoveWordBackward;
525 moveCursor( action, false );
526 slotCursorPositionChanged();
527 }
528 else if ( TDEStdAccel::next().contains( key ) ) {
529 moveCursor( MovePgDown, false );
530 slotCursorPositionChanged();
531 }
532 else if ( TDEStdAccel::prior().contains( key ) ) {
533 moveCursor( MovePgUp, false );
534 slotCursorPositionChanged();
535 }
536 else if ( TDEStdAccel::home().contains( key ) ) {
537 moveCursor( MoveHome, false );
538 slotCursorPositionChanged();
539 }
540 else if ( TDEStdAccel::end().contains( key ) ) {
541 moveCursor( MoveEnd, false );
542 slotCursorPositionChanged();
543 }
544 else if ( TDEStdAccel::beginningOfLine().contains( key ) ) {
545 moveCursor( MoveLineStart, false);
546 slotCursorPositionChanged();
547 }
548 else if ( TDEStdAccel::endOfLine().contains( key ) ) {
549 moveCursor( MoveLineEnd, false);
550 slotCursorPositionChanged();
551 }
552 else if ( key == Key_Insert ) {
553 if (d->overwriteEnabled)
554 {
555 this->setOverwriteMode(!this->isOverwriteMode());
556 emit toggle_overwrite_signal();
557 }
558 }
559 else
560 TQMultiLineEdit::keyPressEvent(e);
561}
562
563void KEdit::installRBPopup(TQPopupMenu *p) {
564 KContextMenuManager::insert( this, p );
565}
566
567void KEdit::selectFont(){
568
569 TQFont font = this->font();
570 TDEFontDialog::getFont(font);
571 this->setFont(font);
572
573}
574
575void KEdit::doGotoLine() {
576
577 if( !gotodialog )
578 gotodialog = new KEdGotoLine( parent, "gotodialog" );
579
580 this->clearFocus();
581
582 gotodialog->exec();
583 // this seems to be not necessary
584 // gotodialog->setFocus();
585 if( gotodialog->result() != KEdGotoLine::Accepted)
586 return;
587 int target_line = gotodialog->getLineNumber()-1;
588 if (wordWrap() == NoWrap)
589 {
590 setCursorPosition( target_line, 0 );
591 setFocus();
592 return;
593 }
594
595 int max_parag = paragraphs();
596
597 int line = 0;
598 int parag = -1;
599 int lines_in_parag = 0;
600 while ((++parag < max_parag) && (line + lines_in_parag < target_line))
601 {
602 line += lines_in_parag;
603 lines_in_parag = linesOfParagraph(parag);
604 }
605
606 int col = 0;
607 if (parag >= max_parag)
608 {
609 target_line = line + lines_in_parag - 1;
610 parag = max_parag-1;
611 }
612
613 while(1+line+lineOfChar(parag,col) < target_line) col++;
614 setCursorPosition( parag, col );
615 setFocus();
616}
617
618
619void KEdit::dragMoveEvent(TQDragMoveEvent* e) {
620
621 if(KURLDrag::canDecode(e))
622 e->accept();
623 else if(TQTextDrag::canDecode(e))
624 TQMultiLineEdit::dragMoveEvent(e);
625}
626
627void KEdit::contentsDragMoveEvent(TQDragMoveEvent* e) {
628
629 if(KURLDrag::canDecode(e))
630 e->accept();
631 else if(TQTextDrag::canDecode(e))
632 TQMultiLineEdit::contentsDragMoveEvent(e);
633}
634
635void KEdit::dragEnterEvent(TQDragEnterEvent* e) {
636
637 kdDebug() << "KEdit::dragEnterEvent()" << endl;
638 e->accept(KURLDrag::canDecode(e) || TQTextDrag::canDecode(e));
639}
640
641void KEdit::contentsDragEnterEvent(TQDragEnterEvent* e) {
642
643 kdDebug() << "KEdit::contentsDragEnterEvent()" << endl;
644 e->accept(KURLDrag::canDecode(e) || TQTextDrag::canDecode(e));
645}
646
647
648void KEdit::dropEvent(TQDropEvent* e) {
649
650 kdDebug() << "KEdit::dropEvent()" << endl;
651
652 if(KURLDrag::canDecode(e)) {
653 emit gotUrlDrop(e);
654 }
655 else if(TQTextDrag::canDecode(e))
656 TQMultiLineEdit::dropEvent(e);
657}
658
659void KEdit::contentsDropEvent(TQDropEvent* e) {
660
661 kdDebug() << "KEdit::contentsDropEvent()" << endl;
662
663 if(KURLDrag::canDecode(e)) {
664 emit gotUrlDrop(e);
665 }
666 else if(TQTextDrag::canDecode(e))
667 TQMultiLineEdit::contentsDropEvent(e);
668}
669
670void KEdit::setOverwriteEnabled(bool b)
671{
672 d->overwriteEnabled = b;
673}
674
675// TQWidget::create() turns off mouse-Tracking which would break auto-hiding
676void KEdit::create( WId id, bool initializeWindow, bool destroyOldWindow )
677{
678 TQMultiLineEdit::create( id, initializeWindow, destroyOldWindow );
679 KCursor::setAutoHideCursor( this, true );
680}
681
682void KEdit::ensureCursorVisible()
683{
684 if (!d->autoUpdate)
685 return;
686
687 TQMultiLineEdit::ensureCursorVisible();
688}
689
690void KEdit::setCursor( const TQCursor &c )
691{
692 if (!d->autoUpdate)
693 return;
694
695 TQMultiLineEdit::setCursor(c);
696}
697
698void KEdit::viewportPaintEvent( TQPaintEvent*pe )
699{
700 if (!d->autoUpdate)
701 return;
702
703 TQMultiLineEdit::viewportPaintEvent(pe);
704}
705
706
707void KEdGotoLine::virtual_hook( int id, void* data )
708{ KDialogBase::virtual_hook( id, data ); }
709
710void KEdFind::virtual_hook( int id, void* data )
711{ KDialogBase::virtual_hook( id, data ); }
712
713void KEdReplace::virtual_hook( int id, void* data )
714{ KDialogBase::virtual_hook( id, data ); }
715
716void KEdit::virtual_hook( int, void* )
717{ /*BASE::virtual_hook( id, data );*/ }
718
KContextMenuManager::insert
static void insert(TQWidget *widget, TQPopupMenu *popup)
Makes popup a context popup menu for widget widget.
Definition: kcmenumngr.cpp:57
KCursor::setAutoHideCursor
static void setAutoHideCursor(TQWidget *w, bool enable)
Sets auto-hiding the cursor for widget w.
Definition: kcursor.cpp:218
KEdit::CursorPositionChanged
void CursorPositionChanged()
This signal is emitted whenever the cursor position changes.
KEdit::installRBPopup
void installRBPopup(TQPopupMenu *)
Install a context menu for KEdit.
Definition: keditcl1.cpp:563
KEdit::ensureCursorVisible
virtual void ensureCursorVisible()
Reimplemented for internal reasons, the API is not affected.
Definition: keditcl1.cpp:682
KEdit::toggle_overwrite_signal
void toggle_overwrite_signal()
This signal is emitted if the user toggles from insert to overwrite mode or vice versa.
KEdit::create
virtual void create(WId=0, bool initializeWindow=true, bool destroyOldWindow=true)
Reimplemented for internal reasons, the API is not affected.
Definition: keditcl1.cpp:676
KEdit::insertText
void insertText(TQTextStream *)
Insert text from the text stream into the edit widget.
Definition: keditcl1.cpp:87
KEdit::currentColumn
int currentColumn()
Retrieve the actual column number the cursor is on.
Definition: keditcl1.cpp:297
KEdit::selectFont
void selectFont()
Let the user select a font and set the font of the textwidget to that selected font.
Definition: keditcl1.cpp:567
KEdit::saveText
void saveText(TQTextStream *, bool softWrap)
Save text from the edit widget to a text stream.
Definition: keditcl1.cpp:242
KEdit::gotUrlDrop
void gotUrlDrop(TQDropEvent *e)
This signal is emitted if the user dropped a URL over the text editor TQMultiLineEdit widget.
KEdit::cleanWhiteSpace
void cleanWhiteSpace()
Clean up redundant whitespace from selected text.
Definition: keditcl1.cpp:148
KEdit::doGotoLine
void doGotoLine()
Present a "Goto Line" dialog to the user.
Definition: keditcl1.cpp:575
KEdit::KEdit
KEdit(TQWidget *_parent=NULL, const char *name=NULL)
The usual constructor.
Definition: keditcl1.cpp:49
KEdit::currentLine
int currentLine()
Retrieve the current line number.
Definition: keditcl1.cpp:290
KEdit::setOverwriteEnabled
void setOverwriteEnabled(bool b)
Allow the user to toggle between insert mode and overwrite mode with the "Insert" key.
Definition: keditcl1.cpp:670
KKey
TDEFontDialog::getFont
static int getFont(TQFont &theFont, bool onlyFixed=false, TQWidget *parent=0L, bool makeFrame=true, TQButton::ToggleState *sizeIsRelativeState=0L)
Creates a modal font dialog, lets the user choose a font, and returns when the dialog is closed.
Definition: tdefontdialog.cpp:798
endl
kndbgstream & endl(kndbgstream &s)
kdDebug
kdbgstream kdDebug(int area=0)
TDEStdAccel::copy
const TDEShortcut & copy()
TDEStdAccel::endOfLine
const TDEShortcut & endOfLine()
TDEStdAccel::next
const TDEShortcut & next()
TDEStdAccel::paste
const TDEShortcut & paste()
TDEStdAccel::key
int key(StdAccel id)
TDEStdAccel::prior
const TDEShortcut & prior()
TDEStdAccel::cut
const TDEShortcut & cut()
TDEStdAccel::end
const TDEShortcut & end()
TDEStdAccel::redo
const TDEShortcut & redo()
TDEStdAccel::forwardWord
const TDEShortcut & forwardWord()
TDEStdAccel::beginningOfLine
const TDEShortcut & beginningOfLine()
TDEStdAccel::deleteWordBack
const TDEShortcut & deleteWordBack()
TDEStdAccel::find
const TDEShortcut & find()
TDEStdAccel::undo
const TDEShortcut & undo()
TDEStdAccel::home
const TDEShortcut & home()
TDEStdAccel::action
TQString action(StdAccel id)
TDEStdAccel::backwardWord
const TDEShortcut & backwardWord()
TDEStdAccel::deleteWordForward
const TDEShortcut & deleteWordForward()
tdelocale.h

tdeui

Skip menu "tdeui"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeui

Skip menu "tdeui"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeui by doxygen 1.9.4
This website is maintained by Timothy Pearson.