本文整理汇总了C++中KateView类的典型用法代码示例。如果您正苦于以下问题:C++ KateView类的具体用法?C++ KateView怎么用?C++ KateView使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了KateView类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testSelectionUndo
void UndoManagerTest::testSelectionUndo()
{
TestDocument doc;
KateView *view = static_cast<KateView*>(doc.createView(0));
doc.setText("aaaa bbbb cccc\n"
"dddd eeee ffff");
view->setCursorPosition(KTextEditor::Cursor(1, 9));
KTextEditor::Range selectionRange(KTextEditor::Cursor(0, 5),
KTextEditor::Cursor(1, 9));
view->setSelection(selectionRange);
doc.typeChars(view, "eeee");
// cursor position: "aaaa eeee| ffff", no selection anymore
QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(0, 9));
QCOMPARE(view->selection(), false);
// undo to remove "eeee" and add selection and text again
doc.undo();
QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 9));
QCOMPARE(view->selection(), true);
QCOMPARE(view->selectionRange(), selectionRange);
// redo to insert "eeee" again and remove selection
// cursor position: "aaaa eeee| ffff", no selection anymore
doc.redo();
QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(0, 9));
QCOMPARE(view->selection(), false);
delete view;
}
示例2: doc
//
// when text is folded, and you set the text selection from top to bottom and
// type a character, the resulting text is borked.
//
// See https://bugs.kde.org/show_bug.cgi?id=295632
//
void KateFoldedSelectionTest::foldedSelectionTest()
{
KateDocument doc(false, false, false);
QString text = "oooossssssss\n"
"{\n"
"\n"
"}\n"
"ssssss----------";
doc.setText(text);
doc.setHighlightingMode("C++");
doc.buffer().ensureHighlighted (doc.lines());
// view must be visible...
KateView* view = static_cast<KateView*>(doc.createView(0));
view->show();
view->resize(400, 300);
QTest::qWait(500);
doc.foldingTree()->collapseOne(1, 1);
QTest::qWait(500);
view->setSelection(Range(Cursor(0,4), Cursor(4, 6)));
view->setCursorPosition(Cursor(4, 6));
QTest::qWait(500);
doc.typeChars(view, "x");
QTest::qWait(500);
QString line = doc.line(0);
QCOMPARE(line, QString("oooox----------"));
}
示例3: stream
void KateFoldingTest::testFolding_py_lang()
{
KTemporaryFile file;
file.setSuffix(".py");
file.open();
QTextStream stream(&file);
stream << "if customerName == x\n"
<< " print x\n"
<< "elif customerName == y\n"
<< " print y\n"
<< "else print z\n";
stream << flush;
file.close();
KateDocument doc(false, false, false);
QVERIFY(doc.openUrl(KUrl(file.fileName())));
KateView* view = new KateView(&doc, 0);
// is set to allow kate's hl to be called
view->config()->setDynWordWrap(true);
QCOMPARE(doc.visibleLines(), 6u);
QAction* action = view->action("folding_toplevel");
QVERIFY(action);
action->trigger();
QCOMPARE(doc.visibleLines(), 4u);
action = view->action("folding_expandtoplevel");
QVERIFY(action);
action->trigger();
QCOMPARE(doc.visibleLines(), 6u);
}
示例4: checkSave
bool TinyKate::checkSave() {
if (currentView==0) return true;
KateView *kv = (KateView*) currentView;
if(kv->isModified()) {
KateDocument *kd = (KateDocument*) kv->document();
switch( QMessageBox::information( 0, (tr("TinyKATE")),
(tr("Do you want to save\n"
"changes to the document\n"
"%1?\n").arg(kd->docName())),
(tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
{
case 0:
{
return saveDocument();
}
break;
case 1:
{
return true;
}
break;
default:
{
return false;
}
break;
};
}
else {
return true;
}
}
示例5: doc
// This test makes sure that,
// - if you have selected text
// - that spans a folded range,
// - and the cursor is at the end of the text selection,
// - and you type a char, e.g. 'x',
// then the resulting text is correct, and changing region
// visibility does not mess around with the text cursor.
//
// See https://bugs.kde.org/show_bug.cgi?id=295632
void KateFoldingTest::testBug295632()
{
KateDocument doc(false, false, false);
QString text = "oooossssssss\n"
"{\n"
"\n"
"}\n"
"ssssss----------";
doc.setText(text);
// view must be visible...
KateView* view = static_cast<KateView*>(doc.createView(0));
view->show();
view->resize(400, 300);
qint64 foldId = view->textFolding().newFoldingRange (KTextEditor::Range(1, 0, 3, 1));
view->textFolding().foldRange(foldId);
QVERIFY(view->textFolding().isLineVisible(0));
QVERIFY(view->textFolding().isLineVisible(1));
QVERIFY(!view->textFolding().isLineVisible(2));
QVERIFY(!view->textFolding().isLineVisible(3));
QVERIFY(view->textFolding().isLineVisible(4));
view->setSelection(Range(Cursor(0,4), Cursor(4, 6)));
view->setCursorPosition(Cursor(4, 6));
QTest::qWait(100);
doc.typeChars(view, "x");
QTest::qWait(100);
QString line = doc.line(0);
QCOMPARE(line, QString("oooox----------"));
}
示例6: shouldAbortCompletion
bool KateWordCompletionModel::shouldAbortCompletion(KTextEditor::View* view, const KTextEditor::Range &range, const QString ¤tCompletion) {
if (m_automatic) {
KateView *v = qobject_cast<KateView*> (view);
if (currentCompletion.length()<v->config()->wordCompletionMinimalWordLength()) return true;
}
return CodeCompletionModelControllerInterface4::shouldAbortCompletion(view,range,currentCompletion);
}
示例7: doc
void BugTest::tryCrash()
{
KateDocument doc(false, false, false);
QString url = KDESRCDIR + QString("folding-crash.py");
doc.openUrl(url);
doc.discardDataRecovery();
doc.setHighlightingMode("Python");
doc.buffer().ensureHighlighted (doc.lines());
// view must be visible...
KateView* view = static_cast<KateView*>(doc.createView(0));
view->show();
view->resize(400, 300);
// fold all
doc.foldingTree()->collapseToplevelNodes();
QTest::qWait(1000);
view->down();
view->down();
view->end();
view->cursorRight();
view->down();
view->down();
view->end();
QTest::qWait(1000);
qDebug() << "!!! The next line usually crashes in the code folding code";
view->backspace();
doc.buffer().ensureHighlighted (doc.lines());
QTest::qWait(1000);
}
示例8: KateCmdShellCompletion
KCompletion *KateCommands::CoreCommands::completionObject( const QString &cmd, Kate::View *view )
{
if ( cmd == "set-highlight" )
{
KateView *v = (KateView*)view;
QStringList l;
for ( uint i = 0; i < v->doc()->hlModeCount(); i++ )
l << v->doc()->hlModeName( i );
KateCmdShellCompletion *co = new KateCmdShellCompletion();
co->setItems( l );
co->setIgnoreCase( true );
return co;
}
return 0L;
}
示例9: re_ifind
void SearchCommand::processText( Kate::View *view, const TQString &cmd )
{
static TQRegExp re_ifind("ifind(?::([bcrs]*))?\\s(.*)");
if ( re_ifind.search( cmd ) > -1 )
{
TQString flags = re_ifind.cap( 1 );
TQString pattern = re_ifind.cap( 2 );
// if there is no setup, or the text length is 0, set up the properties
if ( ! m_ifindFlags || pattern.isEmpty() )
ifindInit( flags );
// if there is no fromCursor, add it if this is not the first character
else if ( ! ( m_ifindFlags & KFindDialog::FromCursor ) && ! pattern.isEmpty() )
m_ifindFlags |= KFindDialog::FromCursor;
// search..
if ( ! pattern.isEmpty() )
{
KateView *v = (KateView*)view;
// If it *looks like* we are continuing, place the cursor
// at the beginning of the selection, so that the search continues.
// ### check more carefully, like is the cursor currently at the end
// of the selection.
if ( pattern.startsWith( v->selection() ) &&
v->selection().length() + 1 == pattern.length() )
v->setCursorPositionInternal( v->selStartLine(), v->selStartCol() );
v->find( pattern, m_ifindFlags, false );
}
}
}
示例10: QFETCH
void KateFoldingTest::testFolding()
{
QFETCH(QString, text);
QFETCH(QString, fileExt);
QFETCH(QString, firstActionName);
QFETCH(QString, secondActionName);
QFETCH(unsigned int, initValue);
QFETCH(unsigned int, firstResult);
QFETCH(unsigned int, secondResult);
KTemporaryFile file;
file.setSuffix("." + fileExt);
file.open();
QTextStream stream(&file);
stream << text;
stream << flush;
file.close();
KateDocument doc(false, false, false);
QVERIFY(doc.openUrl(KUrl(file.fileName())));
KateView* view = new KateView(&doc, 0);
QAction* firstAction = view->action(qPrintable(firstActionName));
QVERIFY(firstAction);
QAction* secondAction = view->action(qPrintable(secondActionName));
QVERIFY(secondAction);
// is set to allow kate's hl to be called
view->config()->setDynWordWrap(true);
QCOMPARE(doc.visibleLines(), initValue);
firstAction->trigger();
QCOMPARE(doc.visibleLines(), firstResult);
secondAction->trigger();
QCOMPARE(doc.visibleLines(), secondResult);
}
示例11: shouldStartCompletion
bool KateWordCompletionModel::shouldStartCompletion(KTextEditor::View* view, const QString &insertedText, bool userInsertion, const KTextEditor::Cursor &position)
{
if (!userInsertion) return false;
if(insertedText.isEmpty())
return false;
KateView *v = qobject_cast<KateView*> (view);
QString text = view->document()->line(position.line()).left(position.column());
uint check=v->config()->wordCompletionMinimalWordLength();
if (check<=0) return true;
int start=text.length();
int end=text.length()-check;
if (end<0) return false;
for (int i=start-1;i>=end;i--) {
QChar c=text.at(i);
if (! (c.isLetter() || (c.isNumber()) || c=='_') ) return false;
}
return true;
}
示例12: completionInvoked
void KateWordCompletionModel::completionInvoked(KTextEditor::View* view, const KTextEditor::Range& range, InvocationType it)
{
/**
* auto invoke...
*/
m_automatic=false;
if (it==AutomaticInvocation) {
m_automatic=true;
KateView *v = qobject_cast<KateView*> (view);
if (range.columnWidth() >= v->config()->wordCompletionMinimalWordLength())
saveMatches( view, range );
else
m_matches.clear();
// done here...
return;
}
// normal case ;)
saveMatches( view, range );
}
示例13: testCursorPosition
void UndoManagerTest::testCursorPosition()
{
TestDocument doc;
KateView *view = static_cast<KateView*>(doc.createView(0));
doc.setText("aaaa bbbb cccc\n"
"dddd ffff");
view->setCursorPosition(KTextEditor::Cursor(1, 5));
doc.typeChars(view, "eeee");
// cursor position: "dddd eeee| ffff"
QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 9));
// undo once to remove "eeee", cursor position: "dddd | ffff"
doc.undo();
QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 5));
// redo once to insert "eeee" again. cursor position: "dddd eeee| ffff"
doc.redo();
QCOMPARE(view->cursorPosition(), KTextEditor::Cursor(1, 9));
delete view;
}
示例14: doc
// tests:
// - RangeFeedback::mouseEnteredRange
// - RangeFeedback::mouseExitedRange
void MovingRangeTest::testFeedbackMouse()
{
KateDocument doc (false, false, false);
// the range created below will span the 'x' characters
QString text("..xxxx\n"
"xxxx..");
doc.setText(text);
KateView* view = static_cast<KateView*>(doc.createView(0));
view->setCursorPosition(Cursor(1, 6));
view->show();
view->resize(200, 100);
// create range feedback
RangeFeedback rf;
QVERIFY(!rf.mouseEnteredRangeCalled());
QVERIFY(!rf.mouseExitedRangeCalled());
// allow empty
MovingRange* range = doc.newMovingRange(Range(Cursor(0, 2), Cursor(1, 4)),
KTextEditor::MovingRange::ExpandLeft |
KTextEditor::MovingRange::ExpandRight,
KTextEditor::MovingRange::InvalidateIfEmpty);
range->setFeedback(&rf);
rf.verifyReset();
// left (nothing)
QTest::mouseMove(view, view->cursorToCoordinate(Cursor(0, 0)) + QPoint(0, 5));
QTest::qWait(200); // process mouse events. do not move mouse manually
QVERIFY(!rf.mouseEnteredRangeCalled());
QVERIFY(!rf.mouseExitedRangeCalled());
// middle (enter)
rf.reset();
QTest::mouseMove(view, view->cursorToCoordinate(Cursor(0, 3)) + QPoint(0, 5));
QTest::qWait(200); // process mouse events. do not move mouse manually
QVERIFY(rf.mouseEnteredRangeCalled());
QVERIFY(!rf.mouseExitedRangeCalled());
// right (exit)
rf.reset();
QTest::mouseMove(view, view->cursorToCoordinate(Cursor(1, 6)) + QPoint(10, 5));
QTest::qWait(200); // process mouse events. do not move mouse manually
QVERIFY(!rf.mouseEnteredRangeCalled());
QVERIFY(rf.mouseExitedRangeCalled());
}
示例15: KCC_ERR
bool KateCommands::CoreCommands::exec(Kate::View *view,
const QString &_cmd,
QString &errorMsg)
{
#define KCC_ERR(s) { errorMsg=s; return false; }
// cast it hardcore, we know that it is really a kateview :)
KateView *v = (KateView*) view;
if ( ! v )
KCC_ERR( i18n("Could not access view") );
//create a list of args
QStringList args( QStringList::split( QRegExp("\\s+"), _cmd ) );
QString cmd ( args.first() );
args.remove( args.first() );
// ALL commands that takes no arguments.
if ( cmd == "indent" )
{
v->indent();
return true;
}
else if ( cmd == "run-myself" )
{
#ifndef Q_WS_WIN //todo
return KateFactory::self()->jscript()->execute(v, v->doc()->text(), errorMsg);
#else
return 0;
#endif
}
else if ( cmd == "unindent" )
{
v->unIndent();
return true;
}
else if ( cmd == "cleanindent" )
{
v->cleanIndent();
return true;
}
else if ( cmd == "comment" )
{
v->comment();
return true;
}
else if ( cmd == "uncomment" )
{
v->uncomment();
return true;
}
else if ( cmd == "kill-line" )
{
v->killLine();
return true;
}
else if ( cmd == "set-indent-mode" )
{
bool ok(false);
int val ( args.first().toInt( &ok ) );
if ( ok )
{
if ( val < 0 )
KCC_ERR( i18n("Mode must be at least 0.") );
v->doc()->config()->setIndentationMode( val );
}
else
v->doc()->config()->setIndentationMode( KateAutoIndent::modeNumber( args.first() ) );
return true;
}
else if ( cmd == "set-highlight" )
{
QString val = _cmd.section( ' ', 1 ).lower();
for ( uint i=0; i < v->doc()->hlModeCount(); i++ )
{
if ( v->doc()->hlModeName( i ).lower() == val )
{
v->doc()->setHlMode( i );
return true;
}
}
KCC_ERR( i18n("No such highlight '%1'").arg( args.first() ) );
}
// ALL commands that takes exactly one integer argument.
else if ( cmd == "set-tab-width" ||
cmd == "set-indent-width" ||
cmd == "set-word-wrap-column" ||
cmd == "goto" )
{
// find a integer value > 0
if ( ! args.count() )
KCC_ERR( i18n("Missing argument. Usage: %1 <value>").arg( cmd ) );
bool ok;
int val ( args.first().toInt( &ok ) );
if ( !ok )
KCC_ERR( i18n("Failed to convert argument '%1' to integer.")
.arg( args.first() ) );
if ( cmd == "set-tab-width" )
{
//.........这里部分代码省略.........