From f5fdd2602a08fd61cefccec81ff51f3e9ca2e7a3 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: Thu, 13 Dec 2018 15:02:44 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@469 a8b55f48-bf90-11e4-a774-851b48703e85 --- qad/widgets/qcodeedit.cpp | 27 +++++++++++++++++++++++++++ qad/widgets/qcodeedit.h | 3 +++ qad/widgets/qcodeedit.ui | 8 +++----- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/qad/widgets/qcodeedit.cpp b/qad/widgets/qcodeedit.cpp index dbcc9d3..110eef9 100644 --- a/qad/widgets/qcodeedit.cpp +++ b/qad/widgets/qcodeedit.cpp @@ -14,8 +14,10 @@ #include "qad_types.h" #include "ui_qcodeedit.h" +Q_DECLARE_METATYPE(QTextCursor) QCodeEdit::QCodeEdit(QWidget * parent): QWidget(parent) { + qRegisterMetaType(); ui = new Ui::QCodeEdit(); ui->setupUi(this); ui->widgetSearch->hide(); @@ -150,6 +152,31 @@ QTextDocument * QCodeEdit::document() const { } +void QCodeEdit::setDocument(QTextDocument * doc) { + if (document()) { + document()->setProperty("_cursor", QVariant::fromValue(textCursor())); + document()->setProperty("_vpos", textEdit()->verticalScrollBar()->value()); + } + documentUnset(); + if (!doc) { + ui->textCode->setDocument(0); + documentChanged(0); + return; + } + if (!qobject_cast(doc->documentLayout())) + doc->setDocumentLayout(new QPlainTextDocumentLayout(doc)); + ui->textCode->setDocument(doc); + ui->textCode->setCursorWidth(qMax(qRound(fontHeight() / 10.), 1)); + if (doc->property("_cursor").isValid()) { + setTextCursor(doc->property("_cursor").value()); + textEdit()->verticalScrollBar()->setValue(doc->property("_vpos").toInt()); + } + documentChanged(doc); + doc->setDefaultFont(editorFont()); + updateLines(); +} + + void QCodeEdit::setTextCursor(const QTextCursor & c) { ui->textCode->setTextCursor(c); } diff --git a/qad/widgets/qcodeedit.h b/qad/widgets/qcodeedit.h index 3da6d4d..1dc844c 100644 --- a/qad/widgets/qcodeedit.h +++ b/qad/widgets/qcodeedit.h @@ -37,6 +37,7 @@ public: QTextCursor textCursor() const; QTextDocument * document() const; + void setDocument(QTextDocument * doc); void setTextCursor(const QTextCursor & c); void centerCursor(); void insertText(const QString & text); @@ -63,6 +64,8 @@ protected: virtual ACList autoCompletitionList(const QStringList & scope, const QString & written) const {return ACList();} virtual void parse() {} + virtual void documentUnset() {} + virtual void documentChanged(QTextDocument * d) {} QString selectArg(QString s, int arg); void raiseHelp(QTextCursor tc, int arg = -1); QTextCursor functionStart(QTextCursor tc, int * arg); diff --git a/qad/widgets/qcodeedit.ui b/qad/widgets/qcodeedit.ui index 1a53c84..8874863 100644 --- a/qad/widgets/qcodeedit.ui +++ b/qad/widgets/qcodeedit.ui @@ -178,7 +178,7 @@ Previous - + :/icons/go-previous.png:/icons/go-previous.png @@ -195,7 +195,7 @@ Next - + :/icons/go-next.png:/icons/go-next.png @@ -311,9 +311,7 @@
ecombobox.h
- - - + buttonSearchNext