Merge pull request #84 from nodegui/feature/plain-text-edit-methodsandsignals

Feature/plaintextedit more methods and signals
This commit is contained in:
Atul R 2019-09-05 18:44:17 +02:00 committed by GitHub
commit 6cb1be07ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 148 additions and 13 deletions

View File

@ -32,20 +32,40 @@ QPlainTextEdit can access all the instance properties defined in [NodeWidget](ap
QPlainTextEdit can access all the instance methods defined in [NodeWidget](api/NodeWidget.md).
#### [`plainTextEdit.setPlainText(text)`](https://doc.qt.io/qt-5/qplaintextedit.html#setPlainText)
#### `plainTextEdit.setPlainText(text)`
Sets the given text to the plainTextEdit.
Sets the given text to the plainTextEdit. It calls the native method [QPlainTextEdit: setPlainText](https://doc.qt.io/qt-5/qplaintextedit.html#setPlainText).
- `text` string
#### [`plainTextEdit.toPlainText()`](https://doc.qt.io/qt-5/qplaintextedit.html#toPlainText)
#### `plainTextEdit.toPlainText()`
Returns the text of the text edit as plain text.
Returns the text of the text edit as plain text. [QPlainTextEdit: toPlainText](https://doc.qt.io/qt-5/qplaintextedit.html#toPlainText).
#### [`plainTextEdit.setReadOnly(isReadOnly)`](https://doc.qt.io/qt-5/qplaintextedit.html#readOnly-prop)
#### `plainTextEdit.setReadOnly(isReadOnly)`
Sets the plainTextEdit to be read only.
Sets the plainTextEdit to be read only. [QPlainTextEdit: isReadOnly](https://doc.qt.io/qt-5/qplaintextedit.html#readOnly-prop).
#### [`plainTextEdit.clear()`](https://doc.qt.io/qt-5/qplaintextedit.html#clear)
#### `plainTextEdit.clear()`
Deletes all the text in the text edit.
Deletes all the text in the text edit.[QPlainTextEdit: clear](https://doc.qt.io/qt-5/qplaintextedit.html#clear).
#### `plainTextEdit.setWordWrapMode(mode)`
This property holds the mode QPlainTextEdit will use when wrapping text by words.[QPlainTextEdit: setWordWrapMode](https://doc.qt.io/qt-5/qplaintextedit.html#wordWrapMode-prop).
- mode: WrapMode
#### `plainTextEdit.wordWrapMode()`
returns word wrap mode. [QPlainTextEdit: wordWrapMode](https://doc.qt.io/qt-5/qplaintextedit.html#wordWrapMode-prop).
#### `plainTextEdit.setLineWrapMode(mode)`
This property holds the line wrap mode. [QPlainTextEdit: setLineWrapMode](https://doc.qt.io/qt-5/qplaintextedit.html#lineWrapMode-prop).
- mode: LineWrapMode
#### `plainTextEdit.lineWrapMode()`
returns line wrap mode. [QPlainTextEdit: setLineWrapMode](https://doc.qt.io/qt-5/qplaintextedit.html#lineWrapMode-prop).

View File

@ -17,5 +17,40 @@ public:
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "textChanged")});
});
QObject::connect(this, &QPlainTextEdit::blockCountChanged, [=](int newBlockCount) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "blockCountChanged"), Napi::Value::From(env, newBlockCount)});
});
QObject::connect(this, &QPlainTextEdit::copyAvailable, [=](bool yes) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "copyAvailable"), Napi::Value::From(env, yes)});
});
QObject::connect(this, &QPlainTextEdit::cursorPositionChanged, [=]() {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "cursorPositionChanged")});
});
QObject::connect(this, &QPlainTextEdit::modificationChanged, [=](bool charged) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "modificationChanged"), Napi::Value::From(env, charged)});
});
QObject::connect(this, &QPlainTextEdit::redoAvailable, [=](bool available) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "redoAvailable"), Napi::Value::From(env, available)});
});
QObject::connect(this, &QPlainTextEdit::selectionChanged, [=]() {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "selectionChanged")});
});
QObject::connect(this, &QPlainTextEdit::undoAvailable, [=](bool available) {
Napi::Env env = this->emitOnNode.Env();
Napi::HandleScope scope(env);
this->emitOnNode.Call({Napi::String::New(env, "undoAvailable"), Napi::Value::From(env, available)});
});
}
};

View File

@ -15,6 +15,10 @@ Napi::Object QPlainTextEditWrap::init(Napi::Env env, Napi::Object exports) {
InstanceMethod("toPlainText",&QPlainTextEditWrap::toPlainText),
InstanceMethod("setReadOnly", &QPlainTextEditWrap::setReadOnly),
InstanceMethod("clear", &QPlainTextEditWrap::clear),
InstanceMethod("setWordWrapMode", &QPlainTextEditWrap::setWordWrapMode),
InstanceMethod("wordWrapMode", &QPlainTextEditWrap::wordWrapMode),
InstanceMethod("setLineWrapMode", &QPlainTextEditWrap::setLineWrapMode),
InstanceMethod("lineWrapMode", &QPlainTextEditWrap::lineWrapMode),
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QPlainTextEditWrap)
QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE(QPlainTextEditWrap)
});
@ -77,3 +81,33 @@ Napi::Value QPlainTextEditWrap::clear(const Napi::CallbackInfo &info){
this->instance->clear();
return env.Null();
}
Napi::Value QPlainTextEditWrap::setWordWrapMode(const Napi::CallbackInfo &info){
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
Napi::Number mode = info[0].As<Napi::Number>();
this->instance->setWordWrapMode(static_cast<QTextOption::WrapMode>(mode.Int32Value()));
return env.Null();
}
Napi::Value QPlainTextEditWrap::wordWrapMode(const Napi::CallbackInfo &info){
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
int value = static_cast<int>(this->instance->wordWrapMode());
return Napi::Number::From(env, value);
}
Napi::Value QPlainTextEditWrap::setLineWrapMode(const Napi::CallbackInfo &info){
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
Napi::Number mode = info[0].As<Napi::Number>();
this->instance->setLineWrapMode(static_cast<QPlainTextEdit::LineWrapMode>(mode.Int32Value()));
return env.Null();
}
Napi::Value QPlainTextEditWrap::lineWrapMode(const Napi::CallbackInfo &info){
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
int value = static_cast<int>(this->instance->lineWrapMode());
return Napi::Number::From(env, value);
}

View File

@ -23,5 +23,9 @@ class QPlainTextEditWrap : public Napi::ObjectWrap<QPlainTextEditWrap>{
Napi::Value toPlainText(const Napi::CallbackInfo &info);
Napi::Value setReadOnly(const Napi::CallbackInfo &info);
Napi::Value clear(const Napi::CallbackInfo &info);
Napi::Value setWordWrapMode(const Napi::CallbackInfo &info);
Napi::Value wordWrapMode(const Napi::CallbackInfo &info);
Napi::Value setLineWrapMode(const Napi::CallbackInfo &info);
Napi::Value lineWrapMode(const Napi::CallbackInfo &info);
};

View File

@ -10,11 +10,12 @@ import {
QWidget,
QIcon,
QDial,
QPlainTextEdit
QPlainTextEdit,
QTextOptionEnums
} from "./index";
import { QScrollArea } from "./lib/QtWidgets/QScrollArea";
import { QPixmap } from "./lib/QtGui/QPixmap";
import { CursorShape, WindowState } from "./lib/QtEnums"
import { CursorShape, WindowState } from "./lib/QtEnums";
const path = require("path");
@ -65,6 +66,7 @@ rootView.setLayout(new FlexLayout());
const textEdit = new QPlainTextEdit();
textEdit.setPlainText("Hello");
textEdit.setWordWrapMode(QTextOptionEnums.WrapMode.NoWrap);
const scrollArea = new QScrollArea();
scrollArea.setInlineStyle("flex: 1; width:'100%';");

View File

@ -5,6 +5,7 @@ export { QApplication } from "./lib/QtGui/QApplication";
export { QPixmap } from "./lib/QtGui/QPixmap";
export { QIcon } from "./lib/QtGui/QIcon";
export { QCursor } from "./lib/QtGui/QCursor";
export { QTextOptionEnums } from "./lib/QtGui/QTextOption";
// Events: Maybe a separate module ?
export { QKeyEvent } from "./lib/QtGui/QEvent/QKeyEvent";
export { NativeEvent } from "./lib/core/EventWidget";
@ -26,7 +27,8 @@ export { QSpinBox, QSpinBoxEvents } from "./lib/QtWidgets/QSpinBox";
export { QRadioButton, QRadioButtonEvents } from "./lib/QtWidgets/QRadioButton";
export {
QPlainTextEdit,
QPlainTextEditEvents
QPlainTextEditEvents,
LineWrapMode
} from "./lib/QtWidgets/QPlainTextEdit";
export { QScrollArea, QScrollAreaEvents } from "./lib/QtWidgets/QScrollArea";
// Layouts:

View File

@ -0,0 +1,3 @@
import * as Enums from "./textOptionEnums";
export const QTextOptionEnums = Enums;

View File

@ -0,0 +1,7 @@
export enum WrapMode {
NoWrap,
WordWrap,
ManualWrap,
WrapAnywhere,
WrapAtWordBoundaryOrAnywhere
}

View File

@ -3,12 +3,24 @@ import { NodeWidget } from "../QWidget";
import { BaseWidgetEvents } from "../../core/EventWidget";
import { NativeElement } from "../../core/Component";
import { QAbstractScrollArea } from "../QAbstractScrollArea";
import { WrapMode } from "../../QtGui/QTextOption/textOptionEnums";
export const QPlainTextEditEvents = Object.freeze({
...BaseWidgetEvents,
textChanged: "textChanged"
textChanged: "textChanged",
blockCountChanged: "blockCountChanged",
copyAvailable: "copyAvailable",
cursorPositionChanged: "cursorPositionChanged",
modificationChanged: "modificationChanged",
redoAvailable: "redoAvailable",
selectionChanged: "selectionChanged",
undoAvailable: "undoAvailable"
});
export enum LineWrapMode {
NoWrap,
WidgetWidth
}
export class QPlainTextEdit extends QAbstractScrollArea {
native: NativeElement;
constructor(parent?: NodeWidget) {
@ -26,12 +38,16 @@ export class QPlainTextEdit extends QAbstractScrollArea {
this.toPlainText.bind(this);
this.setReadOnly.bind(this);
this.clear.bind(this);
this.setWordWrapMode.bind(this);
this.wordWrapMode.bind(this);
this.setLineWrapMode.bind(this);
this.lineWrapMode.bind(this);
}
setPlainText(text: string | number) {
// react:✓
this.native.setPlainText(`${text}`);
}
toPlainText() {
toPlainText(): string {
// react:✓
return this.native.toPlainText();
}
@ -43,4 +59,16 @@ export class QPlainTextEdit extends QAbstractScrollArea {
// react:✓
this.native.clear();
}
setWordWrapMode(mode: WrapMode) {
this.native.setWordWrapMode(mode);
}
wordWrapMode(): WrapMode {
return this.native.wordWrapMode();
}
setLineWrapMode(mode: LineWrapMode) {
this.native.setLineWrapMode(mode);
}
lineWrapMode(): LineWrapMode {
return this.native.lineWrapMode();
}
}