KTextEditor::View* HtmlEditor::createView( QWidget* parent ) { KTextEditor::Document *document = mEditor->createDocument( parent ); bool result = document->setHighlightingMode( "html" ); if ( result ) { kDebug() << "Syntax highlighting enabled"; } KTextEditor::View *view = document->createView( parent ); QMenu *menu = view->defaultContextMenu(); KTextEditor::ConfigInterface *interface = qobject_cast< KTextEditor::ConfigInterface* >( view ); if ( interface ) { KAction *actWordWrap = new KAction( i18n( "Dynamic Word Wrap" ), view ); actWordWrap->setCheckable( true ); connect( actWordWrap, SIGNAL(triggered(bool)), this, SLOT(toggleWordWrap()) ); KAction *actLineNumber = new KAction( i18n("Show line numbers"), view ); actLineNumber->setCheckable( true ); connect( actLineNumber, SIGNAL(triggered(bool)), this, SLOT(toggleLineNumber()) ); QMenu *options = new QMenu( i18n( "Options" ), qobject_cast< QWidget* >( view ) ); options->addAction( actWordWrap ); options->addAction( actLineNumber ); menu->addSeparator(); menu->addMenu( options ); interface->setConfigValue( "dynamic-word-wrap", true ); actWordWrap->setChecked( true ); } view->setContextMenu( menu ); return view; }
void ModelTest::testCompletionRangeSecondLine() { KTextEditor::Document* doc = KTextEditor::Editor::instance()->createDocument(0); doc->setText("body{color:red;}\nbody{font-w:normal;}"); // 01234567890123456789 KTextEditor::View* view = doc->createView(0); CodeCompletionModel* model = new CodeCompletionModel(doc); KTextEditor::Cursor position(1, 9); KTextEditor::Range range = model->completionRange(view, position); kDebug() << range << doc->text(range); QCOMPARE(range, KTextEditor::Range(1, 5, 1, 11)); QCOMPARE(doc->text(range), QString("font-w")); delete doc; }
KTextEditor::View* EditorTabWidget::openKDocument(KURL url) { QWidget* tab = new QWidget(this); QVBoxLayout *lay = new QVBoxLayout(tab, 1, 1); KTextEditor::Document *doc = KTextEditor::EditorChooser::createDocument( 0L, "KTextEditor::Document"); if(!doc->openURL(url)) { delete tab; delete doc; return NULL; } KTextEditor::View * view = doc->createView(tab); lay->addWidget(view); insertTab(tab, url.fileName()); setCurrentPage(count()-1); return view; }
void ModelTest::completionItems() { KTextEditor::Document* doc = KTextEditor::Editor::instance()->createDocument(0); QFETCH(QString, text); QFETCH(QString, type); KTextEditor::Cursor position; QString textBeforeCursor = text.left(text.indexOf('|')); position.setLine(textBeforeCursor.count('\n')); position.setColumn(textBeforeCursor.mid(textBeforeCursor.lastIndexOf('\n')).length()); text.replace('|', ""); QTemporaryFile file("XXXXXXXXX."+type); file.open(); file.write(text.toUtf8()); file.close(); doc->openUrl(KUrl("file://"+QDir::current().absoluteFilePath(file.fileName()))); QCOMPARE(doc->mimeType(), QString("text/")+type); KTextEditor::View* view = doc->createView(0); CodeCompletionModel* model = new CodeCompletionModel(doc); QCOMPARE(model->rowCount(), 0); model->completionInvoked(view, model->completionRange(view, position), KTextEditor::CodeCompletionModel::ManualInvocation); QStringList completions; for (int i=0; i < model->rowCount(); ++i) { completions << model->data(model->index(i, CodeCompletionModel::Name), Qt::DisplayRole).toString(); } kDebug() << "completions" << completions; QFETCH(QStringList, result); foreach (const QString &i, result) { QVERIFY(completions.contains(i)); }
void FileManager::showInEditor(const KURL& url) { for (std::list<ManagedFileInfo*>::iterator mfi = files.begin(); mfi != files.end(); ++mfi) if ((*mfi)->getFileURL() == url) { if (!(*mfi)->getEditor()) { // The file has not yet been loaded, so we create an editor for // it. KTextEditor::Document* document; if (!(document = KTextEditor::EditorChooser::createDocument (viewStack, "KTextEditor::Document", "Editor"))) { KMessageBox::error (viewStack, i18n("A KDE text-editor component could not " "be found; please check your KDE " "installation.")); return; } if (!editorConfigured) { if (!KTextEditor::configInterface(document)) { KMessageBox::error (viewStack, i18n("You have selected a KDE Editor component " "that is not powerful enough for " "TaskJuggler. " "Please select the 'Embedded Advanced Text " "Editor' component in the KDE Control " "Panel.")); return; } KTextEditor::configInterface(document)->readConfig(config); editorConfigured = true; } KTextEditor::View* editor = document->createView(viewStack); viewStack->addWidget(editor); (*mfi)->setEditor(editor); editor->setMinimumSize(400, 200); editor->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum, 0, 85, editor->sizePolicy() .hasHeightForWidth())); document->openURL(url); document->setReadWrite(true); document->setModified(false); // Signal to update the file-modified status connect(document, SIGNAL(textChanged()), *mfi, SLOT(setModified())); connect(document, SIGNAL(modifiedOnDisc(Kate::Document*, bool, unsigned char)), *mfi, SLOT(setModifiedOnDisc(Kate::Document*, bool, unsigned char))); /* Remove some actions of the editor that we don't want to * show in the menu/toolbars */ KActionCollection* ac = editor->actionCollection(); if (ac->action("file_print")) ac->remove(ac->action("file_print")); if (ac->action("view_folding_markers")) ac->action("view_folding_markers")-> setShortcut(KShortcut()); if (ac->action("view_border")) ac->action("view_border")->setShortcut(KShortcut()); if (ac->action("view_line_numbers")) ac->action("view_line_numbers")->setShortcut(KShortcut()); if (ac->action("view_dynamic_word_wrap")) ac->action("view_dynamic_word_wrap")-> setShortcut(KShortcut()); /* KActionPtrList actionList = editor->actionCollection()->actions(); for (KActionPtrList::iterator it = actionList.begin(); it != actionList.end(); ++it) { printf("** Action found: %s\n", (*it)->name()); }*/ } viewStack->raiseWidget((*mfi)->getEditor()); browser->clearSelection(); QListViewItem* lvi = (*mfi)->getBrowserEntry(); if (lvi) { browser->setCurrentItem(lvi); lvi->setSelected(true); } break; }