26 #include <QApplication> 32 #include <QTextCursor> 33 #include <QTextDocumentFragment> 34 #include <QDBusInterface> 35 #include <QDBusConnection> 36 #include <QDBusConnectionInterface> 59 class KTextEdit::Private
64 customPalette( false ),
66 findReplaceEnabled(true),
68 showAutoCorrectionButton(false),
70 lastReplacedPosition(-1)
73 KConfig sonnetKConfig(
"sonnetrc");
82 QString metaMsg =
i18nc(
"Italic placeholder text in line edits: 0 no, 1 yes",
"1");
83 italicizePlaceholder = (metaMsg.trimmed() != QString(
'0'));
100 bool overrideShortcut(
const QKeyEvent* e);
104 bool handleShortcut(
const QKeyEvent* e);
106 void spellCheckerMisspelling(
const QString &text,
int pos );
107 void spellCheckerCorrected(
const QString &,
int,
const QString &);
109 void spellCheckerCanceled();
110 void spellCheckerFinished();
111 void toggleAutoSpellCheck();
113 void slotFindHighlight(
const QString& text,
int matchingIndex,
int matchingLength);
114 void slotReplaceText(
const QString &text,
int replacementIndex,
int ,
int matchedLength);
120 void undoableClear();
123 void menuActivated(
QAction* action );
125 QRect clickMessageRect()
const;
136 bool italicizePlaceholder : 1;
137 bool customPalette : 1;
140 bool findReplaceEnabled: 1;
142 bool showAutoCorrectionButton: 1;
143 QTextDocumentFragment originalDoc;
144 QString spellCheckingConfigFileName;
151 int findIndex, repIndex;
152 int lastReplacedPosition;
156 void KTextEdit::Private::checkSpelling(
bool force)
158 if(parent->document()->isEmpty())
162 emit parent->spellCheckingFinished();
170 backgroundSpellCheck, force ? parent : 0);
171 backgroundSpellCheck->setParent(spellDialog);
172 spellDialog->setAttribute(Qt::WA_DeleteOnClose,
true);
174 connect(spellDialog, SIGNAL(
replace(QString,
int,QString)),
175 parent, SLOT(spellCheckerCorrected(QString,
int,QString)));
176 connect(spellDialog, SIGNAL(misspelling(QString,
int)),
177 parent, SLOT(spellCheckerMisspelling(QString,
int)));
178 connect(spellDialog, SIGNAL(autoCorrect(QString,QString)),
180 connect(spellDialog, SIGNAL(done(QString)),
181 parent, SLOT(spellCheckerFinished()));
182 connect(spellDialog, SIGNAL(
cancel()),
183 parent, SLOT(spellCheckerCanceled()));
199 originalDoc = QTextDocumentFragment(parent->document());
200 spellDialog->
setBuffer(parent->toPlainText());
205 void KTextEdit::Private::spellCheckerCanceled()
207 QTextDocument *doc = parent->document();
209 QTextCursor cursor(doc);
210 cursor.insertFragment(originalDoc);
211 spellCheckerFinished();
214 void KTextEdit::Private::spellCheckerAutoCorrect(
const QString& currentWord,
const QString& autoCorrectWord)
216 emit parent->spellCheckerAutoCorrect(currentWord, autoCorrectWord);
219 void KTextEdit::Private::spellCheckerMisspelling(
const QString &text,
int pos )
222 parent->highlightWord( text.length(), pos );
225 void KTextEdit::Private::spellCheckerCorrected(
const QString& oldWord,
int pos,
const QString& newWord)
228 if (oldWord != newWord ) {
229 QTextCursor cursor(parent->document());
230 cursor.setPosition(pos);
231 cursor.setPosition(pos+oldWord.length(),QTextCursor::KeepAnchor);
232 cursor.insertText(newWord);
236 void KTextEdit::Private::spellCheckerFinished()
238 QTextCursor cursor(parent->document());
239 cursor.clearSelection();
240 parent->setTextCursor(cursor);
241 if (parent->highlighter())
242 parent->highlighter()->rehighlight();
245 void KTextEdit::Private::toggleAutoSpellCheck()
247 parent->setCheckSpellingEnabled( !parent->checkSpellingEnabled() );
250 void KTextEdit::Private::undoableClear()
252 QTextCursor cursor = parent->textCursor();
253 cursor.beginEditBlock();
254 cursor.movePosition(QTextCursor::Start);
256 cursor.removeSelectedText();
257 cursor.endEditBlock();
260 void KTextEdit::Private::slotAllowTab()
262 parent->setTabChangesFocus( !parent->tabChangesFocus() );
265 void KTextEdit::Private::menuActivated(
QAction* action )
267 if ( action == spellCheckAction )
268 parent->checkSpelling();
269 else if ( action == autoSpellCheckAction )
270 toggleAutoSpellCheck();
271 else if ( action == allowTab )
276 void KTextEdit::Private::slotFindHighlight(
const QString& text,
int matchingIndex,
int matchingLength)
280 QTextCursor tc = parent->textCursor();
281 tc.setPosition(matchingIndex);
282 tc.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, matchingLength);
283 parent->setTextCursor(tc);
284 parent->ensureCursorVisible();
288 void KTextEdit::Private::slotReplaceText(const QString &text,
int replacementIndex,
int replacedLength,
int matchedLength) {
290 QTextCursor tc = parent->textCursor();
291 tc.setPosition(replacementIndex);
292 tc.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, matchedLength);
293 tc.removeSelectedText();
294 tc.insertText(text.mid(replacementIndex, replacedLength));
296 parent->setTextCursor(tc);
297 parent->ensureCursorVisible();
299 lastReplacedPosition = replacementIndex;
302 QRect KTextEdit::Private::clickMessageRect()
const 304 int margin = int(parent->document()->documentMargin());
305 QRect rect = parent->viewport()->rect().adjusted(margin, margin, -margin, -margin);
306 return parent->fontMetrics().boundingRect(rect, Qt::AlignTop | Qt::TextWordWrap,
clickMessage);
309 void KTextEdit::Private::init()
318 :
QTextEdit( text, parent ), d( new Private( this ) )
324 :
QTextEdit( parent ), d( new Private( this ) )
336 d->spellCheckingConfigFileName = _fileName;
341 return d->spellCheckingLanguage;
351 if (_language != d->spellCheckingLanguage) {
352 d->spellCheckingLanguage = _language;
358 const QString &windowIcon)
362 if (!d->spellCheckingLanguage.isEmpty())
364 if (!windowIcon.isEmpty())
365 dialog.setWindowIcon(
KIcon(windowIcon));
373 if (ev->type() == QEvent::ShortcutOverride) {
374 QKeyEvent *e =
static_cast<QKeyEvent *
>( ev );
375 if (d->overrideShortcut(e)) {
380 return QTextEdit::event(ev);
383 bool KTextEdit::Private::handleShortcut(
const QKeyEvent*
event)
385 const int key =
event->key() |
event->modifiers();
397 if(!parent->isReadOnly())
401 if(!parent->isReadOnly())
405 if (!parent->isReadOnly())
406 parent->deleteWordBack();
409 if (!parent->isReadOnly())
410 parent->deleteWordForward();
413 QTextCursor cursor = parent->textCursor();
414 cursor.movePosition( QTextCursor::PreviousWord );
415 parent->setTextCursor( cursor );
418 QTextCursor cursor = parent->textCursor();
419 cursor.movePosition( QTextCursor::NextWord );
420 parent->setTextCursor( cursor );
423 QTextCursor cursor = parent->textCursor();
425 qreal lastY = parent->cursorRect(cursor).bottom();
428 qreal y = parent->cursorRect(cursor).bottom();
429 distance += qAbs(y - lastY);
431 moved = cursor.movePosition(QTextCursor::Down);
432 }
while (moved && distance < parent->viewport()->height());
436 parent->verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepAdd);
438 parent->setTextCursor(cursor);
441 QTextCursor cursor = parent->textCursor();
443 qreal lastY = parent->cursorRect(cursor).bottom();
446 qreal y = parent->cursorRect(cursor).bottom();
447 distance += qAbs(y - lastY);
450 }
while (moved && distance < parent->viewport()->height());
453 cursor.movePosition(QTextCursor::Down);
454 parent->verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepSub);
456 parent->setTextCursor(cursor);
459 QTextCursor cursor = parent->textCursor();
460 cursor.movePosition( QTextCursor::Start );
461 parent->setTextCursor( cursor );
464 QTextCursor cursor = parent->textCursor();
466 parent->setTextCursor( cursor );
469 QTextCursor cursor = parent->textCursor();
470 cursor.movePosition( QTextCursor::StartOfLine );
471 parent->setTextCursor( cursor );
474 QTextCursor cursor = parent->textCursor();
476 parent->setTextCursor( cursor );
482 parent->slotFindNext();
485 parent->slotFindPrevious();
488 if (!parent->isReadOnly())
489 parent->slotReplace();
492 QString text = QApplication::clipboard()->text( QClipboard::Selection );
493 if ( !text.isEmpty() )
494 parent->insertPlainText( text );
500 static void deleteWord(QTextCursor cursor, QTextCursor::MoveOperation op)
502 cursor.clearSelection();
503 cursor.movePosition( op, QTextCursor::KeepAnchor );
504 cursor.removeSelectedText();
509 deleteWord(textCursor(), QTextCursor::PreviousWord);
514 deleteWord(textCursor(), QTextCursor::WordRight);
519 QMenu *popup = createStandardContextMenu();
520 if (!popup)
return 0;
521 connect( popup, SIGNAL(triggered(
QAction*)),
522 this, SLOT(menuActivated(
QAction*)) );
524 const bool emptyDocument = document()->isEmpty();
528 enum { UndoAct, RedoAct, CutAct, CopyAct, PasteAct, ClearAct, SelectAllAct, NCountActs };
530 int idx = actionList.indexOf( actionList[SelectAllAct] ) + 1;
531 if ( idx < actionList.count() )
532 separatorAction = actionList.at( idx );
533 if ( separatorAction )
537 clearAllAction->setEnabled(
false );
538 popup->insertAction( separatorAction, clearAllAction );
547 popup->addSeparator();
548 d->spellCheckAction = popup->addAction(
KIcon(
"tools-check-spelling" ),
549 i18n(
"Check Spelling..." ) );
551 d->spellCheckAction->setEnabled(
false );
552 d->autoSpellCheckAction = popup->addAction(
i18n(
"Auto Spell Check" ) );
553 d->autoSpellCheckAction->setCheckable(
true );
555 popup->addSeparator();
556 if (d->showTabAction) {
557 d->allowTab = popup->addAction(
i18n(
"Allow Tabulations") );
558 d->allowTab->setCheckable(
true );
559 d->allowTab->setChecked( !tabChangesFocus() );
563 if (d->findReplaceEnabled) {
568 findAction->setEnabled(
false);
569 findNextAction->setEnabled(
false);
570 findPrevAction->setEnabled(
false);
572 findNextAction->setEnabled(d->find != 0);
573 findPrevAction->setEnabled(d->find != 0);
575 popup->addSeparator();
576 popup->addAction(findAction);
577 popup->addAction(findNextAction);
578 popup->addAction(findPrevAction);
583 replaceAction->setEnabled(
false);
585 popup->addAction(replaceAction);
588 popup->addSeparator();
589 QAction *speakAction = popup->addAction(
i18n(
"Speak Text"));
590 speakAction->setIcon(
KIcon(
"preferences-desktop-text-to-speech"));
591 speakAction->setEnabled(!emptyDocument );
592 connect( speakAction, SIGNAL(triggered(
bool)),
this, SLOT(
slotSpeakText()) );
599 if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(
"org.kde.kttsd"))
608 QDBusInterface ktts(
"org.kde.kttsd",
"/KSpeech",
"org.kde.KSpeech");
610 if(textCursor().hasSelection())
611 text = textCursor().selectedText();
613 text = toPlainText();
614 ktts.asyncCall(
"say", text, 0);
620 QTextCursor cursorAtMouse = cursorForPosition(event->pos());
621 const int mousePos = cursorAtMouse.position();
622 QTextCursor cursor = textCursor();
625 const bool selectedWordClicked = cursor.hasSelection() &&
626 mousePos >= cursor.selectionStart() &&
627 mousePos <= cursor.selectionEnd();
631 QTextCursor wordSelectCursor(cursorAtMouse);
632 wordSelectCursor.clearSelection();
633 wordSelectCursor.select(QTextCursor::WordUnderCursor);
634 QString selectedWord = wordSelectCursor.selectedText();
636 bool isMouseCursorInsideWord =
true;
637 if ((mousePos < wordSelectCursor.selectionStart() ||
638 mousePos >= wordSelectCursor.selectionEnd())
639 && (selectedWord.length() > 1)) {
640 isMouseCursorInsideWord =
false;
644 wordSelectCursor.setPosition(wordSelectCursor.position()-selectedWord.size());
645 if (selectedWord.startsWith(
'\'') || selectedWord.startsWith(
'\"')) {
646 selectedWord = selectedWord.right(selectedWord.size() - 1);
647 wordSelectCursor.movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor);
649 if (selectedWord.endsWith(
'\'') || selectedWord.endsWith(
'\"'))
650 selectedWord.chop(1);
652 wordSelectCursor.movePosition(QTextCursor::NextCharacter,
653 QTextCursor::KeepAnchor, selectedWord.size());
655 const bool wordIsMisspelled = isMouseCursorInsideWord &&
657 !selectedWord.isEmpty() &&
665 bool inQuote =
false;
666 if (d->spellInterface &&
667 !d->spellInterface->shouldBlockBeSpellChecked(cursorAtMouse.block().text()))
669 if (!selectedWordClicked) {
670 if (wordIsMisspelled && !inQuote)
671 setTextCursor(wordSelectCursor);
673 setTextCursor(cursorAtMouse);
674 cursor = textCursor();
679 if (!wordIsMisspelled || selectedWordClicked || inQuote) {
680 QMetaObject::invokeMethod(
this,
"mousePopupMenuImplementation", Q_ARG(QPoint, event->globalPos()));
687 if (reps.isEmpty()) {
688 QAction *suggestionsAction = menu.addAction(
i18n(
"No suggestions for %1", selectedWord));
689 suggestionsAction->setEnabled(
false);
692 QStringList::const_iterator
end(reps.constEnd());
693 for (QStringList::const_iterator it = reps.constBegin(); it !=
end; ++it) {
700 QAction *ignoreAction = menu.addAction(
i18n(
"Ignore"));
701 QAction *addToDictAction = menu.addAction(
i18n(
"Add to Dictionary"));
703 const QAction *selectedAction = menu.exec(event->globalPos());
705 if (selectedAction) {
706 Q_ASSERT(cursor.selectedText() == selectedWord);
708 if (selectedAction == ignoreAction) {
712 else if (selectedAction == addToDictAction) {
719 const QString replacement = selectedAction->text();
720 Q_ASSERT(reps.contains(replacement));
721 cursor.insertText(replacement);
722 setTextCursor(cursor);
731 QTextEdit::wheelEvent( event );
733 QAbstractScrollArea::wheelEvent( event );
743 return d->highlighter;
748 delete d->highlighter;
749 d->highlighter = _highLighter;
754 if (d->spellInterface)
755 d->spellInterface->setSpellCheckingEnabled(check);
763 if ( check == d->checkSpellingEnabled )
770 d->checkSpellingEnabled = check;
781 delete d->highlighter;
788 if ( d->checkSpellingEnabled && !isReadOnly() && !d->highlighter )
791 QTextEdit::focusInEvent( event );
796 if (d->spellInterface)
797 return d->spellInterface->isSpellCheckingEnabled();
804 return d->checkSpellingEnabled;
809 if ( !readOnly && hasFocus() && d->checkSpellingEnabled && !d->highlighter )
812 if ( readOnly == isReadOnly() )
816 delete d->highlighter;
819 d->customPalette = testAttribute( Qt::WA_SetPalette );
820 QPalette p = palette();
821 QColor color = p.color( QPalette::Disabled, QPalette::Background );
822 p.setColor( QPalette::Base, color );
823 p.setColor( QPalette::Background, color );
826 if ( d->customPalette && testAttribute( Qt::WA_SetPalette ) ) {
827 QPalette p = palette();
828 QColor color = p.color( QPalette::Normal, QPalette::Base );
829 p.setColor( QPalette::Base, color );
830 p.setColor( QPalette::Background, color );
833 setPalette( QPalette() );
836 QTextEdit::setReadOnly( readOnly );
841 d->checkSpelling(
false);
846 d->checkSpelling(
true);
851 QTextCursor cursor(document());
852 cursor.setPosition(pos);
853 cursor.setPosition(pos+length,QTextCursor::KeepAnchor);
854 setTextCursor (cursor);
855 ensureCursorVisible();
860 if ( document()->isEmpty() )
867 QStringList(), QStringList(),
false);
868 connect( d->repDlg, SIGNAL(okClicked()),
this, SLOT(
slotDoReplace()) );
880 if(d->repDlg->pattern().isEmpty()) {
883 ensureCursorVisible();
888 d->replace =
new KReplace(d->repDlg->pattern(), d->repDlg->replacement(), d->repDlg->options(),
this);
891 d->repIndex = textCursor().anchor();
896 connect(d->replace, SIGNAL(highlight(QString,
int,
int)),
897 this, SLOT(slotFindHighlight(QString,
int,
int)));
899 connect(d->replace, SIGNAL(
replace(QString,
int,
int,
int)),
900 this, SLOT(slotReplaceText(QString,
int,
int,
int)));
912 d->lastReplacedPosition = -1;
914 textCursor().beginEditBlock();
915 viewport()->setUpdatesEnabled(
false);
920 if (d->replace->needData())
921 d->replace->setData(toPlainText(), d->repIndex);
922 res = d->replace->replace();
924 textCursor().endEditBlock();
925 if (d->lastReplacedPosition >= 0) {
926 QTextCursor tc = textCursor();
927 tc.setPosition(d->lastReplacedPosition);
929 ensureCursorVisible();
932 viewport()->setUpdatesEnabled(
true);
933 viewport()->update();
937 d->replace->displayFinalDialog();
938 d->replace->disconnect(
this);
939 d->replace->deleteLater();
941 ensureCursorVisible();
955 if( d->findDlg->pattern().isEmpty())
962 d->find =
new KFind(d->findDlg->pattern(), d->findDlg->options(),
this);
965 d->findIndex = textCursor().anchor();
970 connect(d->find, SIGNAL(highlight(QString,
int,
int)),
971 this, SLOT(slotFindHighlight(QString,
int,
int)));
975 d->find->closeFindNextDialog();
984 const long oldOptions = d->find->options();
988 d->find->setOptions(oldOptions);
996 if(document()->isEmpty())
998 d->find->disconnect(
this);
999 d->find->deleteLater();
1005 if (d->find->needData())
1006 d->find->setData(toPlainText(), d->findIndex);
1007 res = d->find->find();
1010 d->find->displayFinalDialog();
1011 d->find->disconnect(
this);
1012 d->find->deleteLater();
1023 if ( document()->isEmpty() )
1030 connect( d->findDlg, SIGNAL(okClicked()),
this, SLOT(
slotDoFind()) );
1038 if ( document()->isEmpty() )
1045 QStringList(), QStringList(),
false);
1046 connect( d->repDlg, SIGNAL(okClicked()),
this, SLOT(
slotDoReplace()) );
1053 d->findReplaceEnabled = enabled;
1058 d->showTabAction = show;
1063 d->spellInterface = spellInterface;
1066 bool KTextEdit::Private::overrideShortcut(
const QKeyEvent* event)
1068 const int key =
event->key() |
event->modifiers();
1112 }
else if (event->modifiers() == Qt::ControlModifier &&
1113 (
event->key() == Qt::Key_Return ||
event->key() == Qt::Key_Enter) &&
1114 qobject_cast<KDialog*>(parent->window()) ) {
1123 if (d->handleShortcut(event)) {
1125 }
else if (event->modifiers() == Qt::ControlModifier &&
1126 (
event->key() == Qt::Key_Return ||
event->key() == Qt::Key_Enter) &&
1127 qobject_cast<KDialog*>(window()) ) {
1130 QTextEdit::keyPressEvent(event);
1136 if (msg != d->clickMessage) {
1137 if (!d->clickMessage.isEmpty()) {
1138 viewport()->update(d->clickMessageRect());
1140 d->clickMessage = msg;
1141 if (!d->clickMessage.isEmpty()) {
1142 viewport()->update(d->clickMessageRect());
1149 return d->clickMessage;
1154 QTextEdit::paintEvent(ev);
1156 if (!d->clickMessage.isEmpty() && document()->isEmpty()) {
1157 QPainter p(viewport());
1160 f.setItalic(d->italicizePlaceholder);
1163 QColor color(palette().color(viewport()->foregroundRole()));
1164 color.setAlphaF(0.5);
1167 QRect cr = d->clickMessageRect();
1168 p.drawText(cr, Qt::AlignTop | Qt::TextWordWrap, d->clickMessage);
1174 QTextEdit::focusOutEvent(ev);
1179 d->showAutoCorrectionButton = show;
1192 #include "ktextedit.moc" KGuiItem cancel()
Returns the 'Cancel' gui item.
void setCheckSpellingEnabled(bool check)
Turns background spell checking for this text edit on or off.
QString i18n(const char *text)
const KShortcut & findNext()
Find/search next.
void showAutoCorrectButton(bool show)
const KShortcut & deleteWordForward()
Delete a word forward from mouse/cursor position.
const QString & spellCheckingLanguage() const
void spellCheckingCanceled()
signal spellCheckingCanceled is sent when we cancel spell checking.
void checkSpellingChanged(bool)
emit signal when we activate or not autospellchecking
const KShortcut & next()
Scroll down one page.
virtual void deleteWordForward()
Deletes a word forwards from the current cursor position, if available.
void enableFindReplace(bool enabled)
Enable find replace action.
bool checkSpellingEnabled() const
Returns true if background spell checking is enabled for this text edit.
const KShortcut & forwardWord()
ForwardWord.
const KShortcut & redo()
Redo.
StandardShortcut find(const QKeySequence &seq)
Return the StandardShortcut id of the standard accel action which uses this key sequence, or AccelNone if none of them do.
void showTabAction(bool show)
static void information(QWidget *parent, const QString &text, const QString &caption=QString(), const QString &dontShowAgainName=QString(), Options options=Notify)
Display an "Information" dialog.
QMenu * mousePopupMenu()
Return standard KTextEdit popupMenu.
const KShortcut & undo()
Undo last operation.
This interface is a workaround to keep binary compatibility in KDE4, because adding the virtual keywo...
static void deleteWord(QTextCursor cursor, QTextCursor::MoveOperation op)
void ignoreWord(const QString &word)
Ignores the given word.
const KShortcut & findPrev()
Find/search previous.
void replace()
Create replace dialogbox.
void setBuffer(const QString &)
KAction * find(const QObject *recvr, const char *slot, QObject *parent)
Initiate a 'find' request in the current document.
KAction * findNext(const QObject *recvr, const char *slot, QObject *parent)
Find the next instance of a stored 'find'.
QString i18nc(const char *ctxt, const char *text)
KSharedConfigPtr config()
void setSpellCheckingConfigFileName(const QString &fileName)
Allows to override the config file where the settings for spell checking, like the current language o...
A generic "replace" dialog.
void languageChanged(const QString &language)
Emitted when the user changes the language in the spellcheck dialog shown by checkSpelling() or when ...
void highlightWord(int length, int pos)
Selects the characters at the specified position.
void forceSpellChecking()
void mousePopupMenuImplementation(const QPoint &pos)
static void activateWindow(WId win, long time=0)
Requests that window win is activated.
void setSpellInterface(KTextEditSpellInterface *spellInterface)
Sets the spell interface, which is used to delegate certain function calls to the interface...
Start from current cursor position.
void changeLanguage(const QString &lang)
virtual void setReadOnly(bool readOnly)
Reimplemented to set a proper "deactivated" background color.
A generic implementation of the "replace" function.
void setClickMessage(const QString &msg)
This makes the text edit display a grayed-out hinting text as long as the user didn't enter any text...
virtual void paintEvent(QPaintEvent *)
Reimplemented to paint clickMessage.
void setHighlighter(Sonnet::Highlighter *_highLighter)
Sets a custom backgound spell highlighter for this text edit.
void spellCheckingFinished()
signal spellCheckingFinished is sent when we finish spell check or we click on "Terminate" button in ...
const KShortcut & endOfLine()
Goto end of current line.
static bool wheelMouseZooms()
Typically, QScrollView derived classes can be scrolled fast by holding down the Ctrl-button during wh...
virtual void wheelEvent(QWheelEvent *)
Reimplemented to allow fast-wheelscrolling with Ctrl-Wheel or zoom.
const KShortcut & backwardWord()
BackwardWord.
A wrapper around QIcon that provides KDE icon features.
const KShortcut & beginningOfLine()
Goto beginning of current line.
KAction * clear(const QObject *recvr, const char *slot, QObject *parent)
Clear the content of the focus widget.
QString clickMessage() const
const KShortcut & replace()
Find and replace matches.
virtual void createHighlighter()
Allows to create a specific highlighter if reimplemented.
~KTextEdit()
Destroys the KTextEdit object.
void addWordToDictionary(const QString &word)
Adds the given word permanently to the dictionary.
void activeAutoCorrect(bool _active)
const KShortcut & copy()
Copy selected area into the clipboard.
KTextEdit(const QString &text, QWidget *parent=0)
Constructs a KTextEdit object.
void setCurrentLanguage(const QString &lang)
virtual void deleteWordBack()
Deletes a word backwards from the current cursor position, if available.
bool isWordMisspelled(const QString &word)
Checks if a given word is marked as misspelled by the highlighter.
static void setAutoHideCursor(QWidget *w, bool enable, bool customEventFilter=false)
Sets auto-hiding the cursor for widget w.
A generic implementation of the "find" function.
const KShortcut & cut()
Cut selected area and store it in the clipboard.
QStringList suggestionsForWord(const QString &word, int max=10)
Returns a list of suggested replacements for the given misspelled word.
virtual void contextMenuEvent(QContextMenuEvent *)
Reimplemented from QTextEdit to add spelling related items when appropriate.
KAction * replace(const QObject *recvr, const char *slot, QObject *parent)
Find and replace matches.
const KShortcut & deleteWordBack()
Delete a word back from mouse/cursor position.
bool checkSpellingEnabledInternal() const
Checks whether spellchecking is enabled or disabled.
virtual void focusInEvent(QFocusEvent *)
Reimplemented to instantiate a KDictSpellingHighlighter, if spellchecking is enabled.
const KShortcut & prior()
Scroll up one page.
const KShortcut & pasteSelection()
Paste the selection at mouse/cursor position.
Class to encapsulate user-driven action or event.
static void assignIconsToContextMenu(ContextMenus type, QList< QAction *> actions)
Assigns standard icons to the various standard text edit context menus.
void showSpellConfigDialog(const QString &configFileName, const QString &windowIcon=QString())
Opens a Sonnet::ConfigDialog for this text edit.
void spellCheckerAutoCorrect(const QString ¤tWord, const QString &autoCorrectWord)
void setCheckSpellingEnabledInternal(bool check)
Enable or disable the spellchecking.
void setLanguage(const QString &language)
Sets the language/dictionary that will be selected by default in this config dialog.
KAction * findPrev(const QObject *recvr, const char *slot, QObject *parent)
Find a previous instance of a stored 'find'.
virtual void keyPressEvent(QKeyEvent *)
Reimplemented for internal reasons.
Sonnet::Highlighter * highlighter() const
Returns the current highlighter, which is 0 if spell checking is disabled.
void spellCheckStatus(const QString &)
Signal sends when spell checking is finished/stopped/completed.
void checkSpelling()
Show a dialog to check the spelling.
void setSpellCheckingLanguage(const QString &language)
Set the spell check language which will be used for highlighting spelling mistakes and for the spellc...
virtual void focusOutEvent(QFocusEvent *)
QString language() const
return selected language
const KShortcut & end()
Goto end of the document.
virtual bool event(QEvent *)
Reimplemented to catch "delete word" shortcut events.
void aboutToShowContextMenu(QMenu *menu)
Emitted before the context menu is displayed.
static void error(QWidget *parent, const QString &text, const QString &caption=QString(), Options options=Notify)
Display an "Error" dialog.
A KDE'ified QTextEdit.
const KShortcut & paste()
Paste contents of clipboard at mouse/cursor position.
const KShortcut & begin()
Goto beginning of the document.