RKCommandEditorWindow::RKCommandEditorWindow (QWidget *parent, bool use_r_highlighting) : RKMDIWindow (parent, RKMDIWindow::CommandEditorWindow) { RK_TRACE (COMMANDEDITOR); KLibFactory *factory = KLibLoader::self()->factory( "libkatepart" ); if (factory) { // Create the part m_doc = (Kate::Document *) factory->create( this, "katepart", "KParts::ReadWritePart" ); RK_ASSERT (m_doc); m_view = (Kate::View *) m_doc->widget(); } // strip down the khtmlpart's GUI. remove some stuff we definitely don't need. RKCommonFunctions::removeContainers (m_doc, QStringList::split (',', "bookmarks,tools_spelling,tools_spelling_from_cursor,tools_spelling_selection,switch_to_cmd_line"), true); RKCommonFunctions::moveContainer (m_doc, "Menu", "tools", "edit", true); m_doc->insertChildClient (new RKCommandEditorWindowPart (m_view, this)); setPart (m_doc); initializeActivationSignals (); setFocusProxy (m_view); QHBoxLayout *pLayout = new QHBoxLayout( this, 0, -1, "layout"); pLayout->addWidget(m_view); setIcon (SmallIcon ("source")); connect (m_doc, SIGNAL (fileNameChanged ()), this, SLOT (updateCaption ())); connect (m_doc, SIGNAL (modifiedChanged ()), this, SLOT (updateCaption ())); // of course most of the time this causes a redundant call to updateCaption. Not if a modification is undone, however. connect (m_doc, SIGNAL (textChanged ()), this, SLOT (tryCompletionProxy ())); connect (m_view, SIGNAL (filterInsertString (KTextEditor::CompletionEntry *, QString *)), this, SLOT (fixCompletion (KTextEditor::CompletionEntry *, QString *))); connect (m_view, SIGNAL (gotFocus (Kate::View *)), this, SLOT (setPopupMenu (Kate::View *))); completion_timer = new QTimer (this); connect (completion_timer, SIGNAL (timeout ()), this, SLOT (tryCompletion())); if (use_r_highlighting) { setRHighlighting (); hinter = new RKFunctionArgHinter (this, m_view); } else { hinter = 0; } updateCaption (); // initialize QTimer::singleShot (0, this, SLOT (setPopupMenu ())); }
void KreTextEdit::keyPressEvent( QKeyEvent *e ) { // Filter key-events if completion mode is not set to CompletionNone KeyBindingMap keys = getKeyBindings(); KShortcut cut; bool noModifier = ( e->modifiers() == Qt::NoModifier || e->modifiers() == Qt::ShiftModifier ); if ( noModifier ) { QString keycode = e->text(); if ( !keycode.isEmpty() && keycode.unicode() ->isPrint() ) { KTextEdit::keyPressEvent ( e ); tryCompletion(); e->accept(); return ; } } // Handles completion if ( keys[ TextCompletion ].isEmpty() ) cut = KStandardShortcut::shortcut( KStandardShortcut::TextCompletion ); else cut = keys[ TextCompletion ]; //using just the standard Ctrl+E isn't user-friendly enough for Grandma... if ( completing && ( cut.contains( e->key() ) || e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return ) ) { #if 0 int paraFrom, indexFrom, paraTo, indexTo; getSelection ( ¶From, &indexFrom, ¶To, &indexTo ); removeSelection(); setCursorPosition( paraTo, indexTo ); completing = false; return ; #endif } // handle rotation // Handles previous match if ( keys[ PrevCompletionMatch ].isEmpty() ) cut = KStandardShortcut::shortcut( KStandardShortcut::PrevCompletion ); else cut = keys[ PrevCompletionMatch ]; if ( cut.contains( e->key() ) ) { rotateText( KCompletionBase::PrevCompletionMatch ); return ; } // Handles next match if ( keys[ NextCompletionMatch ].isEmpty() ) cut = KStandardShortcut::shortcut( KStandardShortcut::NextCompletion ); else cut = keys[ NextCompletionMatch ]; if ( cut.contains( e->key() ) ) { rotateText( KCompletionBase::NextCompletionMatch ); return ; } //any other key events will end any text completion execpt for modifiers switch ( e->key() ) { case Qt::Key_Shift: case Qt::Key_Control: case Qt::Key_Alt: case Qt::Key_Meta: break; default: completing = false; break; } // Let KTextEdit handle any other keys events. KTextEdit::keyPressEvent ( e ); }