From 2a4302712f36856b62b88360b1c8bbbd8d096201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Mon, 15 Oct 2018 11:14:01 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@445 a8b55f48-bf90-11e4-a774-851b48703e85 --- qad/widgets/qcodeedit.cpp | 41 +++++++++++++++++++++++++++++++-------- qad/widgets/qcodeedit.h | 2 ++ 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/qad/widgets/qcodeedit.cpp b/qad/widgets/qcodeedit.cpp index 5342797..dbcc9d3 100644 --- a/qad/widgets/qcodeedit.cpp +++ b/qad/widgets/qcodeedit.cpp @@ -70,24 +70,30 @@ QCodeEdit::QCodeEdit(QWidget * parent): QWidget(parent) { ui->textLines->viewport()->setCursor(Qt::ArrowCursor); ui->textLines->setFixedWidth(ui->textLines->fontMetrics().width(" ")); - QAction * a = new QAction(this); + QAction * a = new QAction(this); ui->textCode->addAction(a); a->setShortcut(QKeySequence("Shift+Tab")); a->setShortcutContext(Qt::WidgetShortcut); connect(a, SIGNAL(triggered()), this, SLOT(deindent())); - ui->textCode->addAction(a); - a = new QAction(this); + a = new QAction(this); ui->textCode->addAction(a); a->setShortcut(QKeySequence("Ctrl+D")); a->setShortcutContext(Qt::WidgetShortcut); connect(a, SIGNAL(triggered()), this, SLOT(deleteLine())); - a = new QAction(this); + a = new QAction(this); ui->textCode->addAction(a); a->setShortcut(QKeySequence("Ctrl+Return")); a->setShortcutContext(Qt::WidgetShortcut); connect(a, SIGNAL(triggered()), this, SLOT(newLine())); - a = new QAction(this); + a = new QAction(this); ui->textCode->addAction(a); + a->setShortcut(QKeySequence("Ctrl+Up")); + a->setShortcutContext(Qt::WidgetShortcut); + connect(a, SIGNAL(triggered()), this, SLOT(scrollUp())); + a = new QAction(this); ui->textCode->addAction(a); + a->setShortcut(QKeySequence("Ctrl+Down")); + a->setShortcutContext(Qt::WidgetShortcut); + connect(a, SIGNAL(triggered()), this, SLOT(scrollDown())); + a = new QAction(this); ui->textCode->addAction(a); a->setShortcut(QKeySequence("Ctrl+Shift+Return")); a->setShortcutContext(Qt::WidgetShortcut); connect(a, SIGNAL(triggered()), this, SLOT(newLineBefore())); - ui->textCode->addAction(a); ui->frame->setFocusProxy(ui->textCode); QTextOption to = ui->textLines->document()->defaultTextOption(); to.setAlignment(Qt::AlignTop | Qt::AlignRight); @@ -675,6 +681,16 @@ void QCodeEdit::syncScrolls() { } +void QCodeEdit::scrollUp() { + ui->textCode->verticalScrollBar()->setValue(ui->textCode->verticalScrollBar()->value() - 1); +} + + +void QCodeEdit::scrollDown() { + ui->textCode->verticalScrollBar()->setValue(ui->textCode->verticalScrollBar()->value() + 1); +} + + void QCodeEdit::deleteLine() { QTextCursor tc = ui->textCode->textCursor(); tc.movePosition(QTextCursor::EndOfLine); @@ -925,12 +941,21 @@ void QCodeEdit::scrollToTop() { void QCodeEdit::newLine() { - /// TODO + QTextCursor tc = ui->textCode->textCursor(); + tc.movePosition(QTextCursor::EndOfLine); + tc.insertText("\n"); + ui->textCode->setTextCursor(tc); + QMetaObject::invokeMethod(this, "autoIndent", Qt::QueuedConnection); } void QCodeEdit::newLineBefore() { - /// TODO + QTextCursor tc = ui->textCode->textCursor(); + tc.movePosition(QTextCursor::StartOfLine); + tc.insertText("\n"); + tc.movePosition(QTextCursor::Up); + ui->textCode->setTextCursor(tc); + QMetaObject::invokeMethod(this, "autoIndent", Qt::QueuedConnection); } diff --git a/qad/widgets/qcodeedit.h b/qad/widgets/qcodeedit.h index b17542e..3da6d4d 100644 --- a/qad/widgets/qcodeedit.h +++ b/qad/widgets/qcodeedit.h @@ -108,6 +108,8 @@ private: private slots: void syncScrolls(); + void scrollUp(); + void scrollDown(); void hideHelp(); void deleteLine(); void copyLineUp();