Fill in most of the QLineEdit methods

This commit is contained in:
Simon Edwards 2022-03-12 10:56:46 +01:00
parent d805c7c66d
commit 34ce565bb8
3 changed files with 341 additions and 44 deletions

View File

@ -21,10 +21,27 @@ class DLL_EXPORT QLineEditWrap : public Napi::ObjectWrap<QLineEditWrap> {
// class constructor
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value setText(const Napi::CallbackInfo& info);
Napi::Value text(const Napi::CallbackInfo& info);
Napi::Value setPlaceholderText(const Napi::CallbackInfo& info);
Napi::Value setReadOnly(const Napi::CallbackInfo& info);
Napi::Value backspace(const Napi::CallbackInfo& info);
Napi::Value cursorBackward(const Napi::CallbackInfo& info);
Napi::Value cursorForward(const Napi::CallbackInfo& info);
Napi::Value cursorPositionAt(const Napi::CallbackInfo& info);
Napi::Value cursorWordBackward(const Napi::CallbackInfo& info);
Napi::Value cursorWordForward(const Napi::CallbackInfo& info);
Napi::Value del(const Napi::CallbackInfo& info);
Napi::Value deselect(const Napi::CallbackInfo& info);
Napi::Value end(const Napi::CallbackInfo& info);
Napi::Value home(const Napi::CallbackInfo& info);
Napi::Value insert(const Napi::CallbackInfo& info);
Napi::Value selectionEnd(const Napi::CallbackInfo& info);
Napi::Value selectionLength(const Napi::CallbackInfo& info);
Napi::Value selectionStart(const Napi::CallbackInfo& info);
Napi::Value setSelection(const Napi::CallbackInfo& info);
Napi::Value setTextMargins(const Napi::CallbackInfo& info);
Napi::Value clear(const Napi::CallbackInfo& info);
Napi::Value setEchoMode(const Napi::CallbackInfo& info);
Napi::Value copy(const Napi::CallbackInfo& info);
Napi::Value cut(const Napi::CallbackInfo& info);
Napi::Value paste(const Napi::CallbackInfo& info);
Napi::Value redo(const Napi::CallbackInfo& info);
Napi::Value selectAll(const Napi::CallbackInfo& info);
Napi::Value undo(const Napi::CallbackInfo& info);
};

View File

@ -13,12 +13,30 @@ Napi::Object QLineEditWrap::init(Napi::Env env, Napi::Object exports) {
char CLASSNAME[] = "QLineEdit";
Napi::Function func = DefineClass(
env, CLASSNAME,
{InstanceMethod("setPlaceholderText", &QLineEditWrap::setPlaceholderText),
InstanceMethod("setText", &QLineEditWrap::setText),
InstanceMethod("text", &QLineEditWrap::text),
InstanceMethod("setReadOnly", &QLineEditWrap::setReadOnly),
{InstanceMethod("backspace", &QLineEditWrap::backspace),
InstanceMethod("cursorBackward", &QLineEditWrap::cursorBackward),
InstanceMethod("cursorForward", &QLineEditWrap::cursorForward),
InstanceMethod("cursorPositionAt", &QLineEditWrap::cursorPositionAt),
InstanceMethod("cursorWordBackward", &QLineEditWrap::cursorWordBackward),
InstanceMethod("cursorWordForward", &QLineEditWrap::cursorWordForward),
InstanceMethod("del", &QLineEditWrap::del),
InstanceMethod("deselect", &QLineEditWrap::deselect),
InstanceMethod("end", &QLineEditWrap::end),
InstanceMethod("home", &QLineEditWrap::home),
InstanceMethod("insert", &QLineEditWrap::insert),
InstanceMethod("selectionEnd", &QLineEditWrap::selectionEnd),
InstanceMethod("selectionLength", &QLineEditWrap::selectionLength),
InstanceMethod("selectionStart", &QLineEditWrap::selectionStart),
InstanceMethod("setSelection", &QLineEditWrap::setSelection),
InstanceMethod("setTextMargins", &QLineEditWrap::setTextMargins),
InstanceMethod("clear", &QLineEditWrap::clear),
InstanceMethod("setEchoMode", &QLineEditWrap::setEchoMode),
InstanceMethod("copy", &QLineEditWrap::copy),
InstanceMethod("cut", &QLineEditWrap::cut),
InstanceMethod("paste", &QLineEditWrap::paste),
InstanceMethod("redo", &QLineEditWrap::redo),
InstanceMethod("selectAll", &QLineEditWrap::selectAll),
InstanceMethod("undo", &QLineEditWrap::undo),
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QLineEditWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
@ -48,43 +66,153 @@ QLineEditWrap::QLineEditWrap(const Napi::CallbackInfo& info)
QLineEditWrap::~QLineEditWrap() { extrautils::safeDelete(this->instance); }
Napi::Value QLineEditWrap::setText(const Napi::CallbackInfo& info) {
Napi::Value QLineEditWrap::backspace(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::String text = info[0].As<Napi::String>();
this->instance->setText(text.Utf8Value().c_str());
this->instance->backspace();
return env.Null();
}
Napi::Value QLineEditWrap::setReadOnly(const Napi::CallbackInfo& info) {
Napi::Value QLineEditWrap::cursorBackward(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Boolean isReadOnly = info[0].As<Napi::Boolean>();
this->instance->setReadOnly(isReadOnly.Value());
bool mark = info[0].As<Napi::Boolean>().Value();
int steps = info[1].As<Napi::Number>().Int32Value();
this->instance->cursorBackward(mark, steps);
return env.Null();
}
Napi::Value QLineEditWrap::text(const Napi::CallbackInfo& info) {
Napi::Value QLineEditWrap::cursorForward(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QString text = this->instance->text();
return Napi::String::New(env, text.toStdString().c_str());
}
Napi::Value QLineEditWrap::setPlaceholderText(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::String text = info[0].As<Napi::String>();
this->instance->setPlaceholderText(text.Utf8Value().c_str());
bool mark = info[0].As<Napi::Boolean>().Value();
int steps = info[1].As<Napi::Number>().Int32Value();
this->instance->cursorForward(mark, steps);
return env.Null();
}
Napi::Value QLineEditWrap::cursorPositionAt(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QPointWrap* posWrap =
Napi::ObjectWrap<QPointWrap>::Unwrap(info[0].As<Napi::Object>());
QPoint* pos = posWrap->getInternalInstance();
int result = this->instance->cursorPositionAt(*pos);
return Napi::Number::New(env, result);
}
Napi::Value QLineEditWrap::cursorWordBackward(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
bool mark = info[0].As<Napi::Boolean>().Value();
this->instance->cursorWordBackward(mark);
return env.Null();
}
Napi::Value QLineEditWrap::cursorWordForward(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
bool mark = info[0].As<Napi::Boolean>().Value();
this->instance->cursorWordForward(mark);
return env.Null();
}
Napi::Value QLineEditWrap::del(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->del();
return env.Null();
}
Napi::Value QLineEditWrap::deselect(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->deselect();
return env.Null();
}
Napi::Value QLineEditWrap::end(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
bool mark = info[0].As<Napi::Boolean>().Value();
this->instance->end(mark);
return env.Null();
}
Napi::Value QLineEditWrap::home(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
bool mark = info[0].As<Napi::Boolean>().Value();
this->instance->home(mark);
return env.Null();
}
Napi::Value QLineEditWrap::insert(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
std::string newTextNapiText = info[0].As<Napi::String>().Utf8Value();
QString newText = QString::fromUtf8(newTextNapiText.c_str());
this->instance->insert(newText);
return env.Null();
}
Napi::Value QLineEditWrap::selectionEnd(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int result = this->instance->selectionEnd();
return Napi::Number::New(env, result);
}
Napi::Value QLineEditWrap::selectionLength(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int result = this->instance->selectionLength();
return Napi::Number::New(env, result);
}
Napi::Value QLineEditWrap::selectionStart(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int result = this->instance->selectionStart();
return Napi::Number::New(env, result);
}
Napi::Value QLineEditWrap::setSelection(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int start = info[0].As<Napi::Number>().Int32Value();
int length = info[1].As<Napi::Number>().Int32Value();
this->instance->setSelection(start, length);
return env.Null();
}
Napi::Value QLineEditWrap::setTextMargins(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int left = info[0].As<Napi::Number>().Int32Value();
int top = info[1].As<Napi::Number>().Int32Value();
int right = info[2].As<Napi::Number>().Int32Value();
int bottom = info[3].As<Napi::Number>().Int32Value();
this->instance->setTextMargins(left, top, right, bottom);
return env.Null();
}
Napi::Value QLineEditWrap::clear(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->clear();
return env.Null();
}
Napi::Value QLineEditWrap::setEchoMode(const Napi::CallbackInfo& info) {
Napi::Value QLineEditWrap::copy(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Number mode = info[0].As<Napi::Number>();
this->instance->setEchoMode(
static_cast<QLineEdit::EchoMode>(mode.Int32Value()));
this->instance->copy();
return env.Null();
}
}
Napi::Value QLineEditWrap::cut(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->cut();
return env.Null();
}
Napi::Value QLineEditWrap::paste(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->paste();
return env.Null();
}
Napi::Value QLineEditWrap::redo(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->redo();
return env.Null();
}
Napi::Value QLineEditWrap::selectAll(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->selectAll();
return env.Null();
}
Napi::Value QLineEditWrap::undo(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->undo();
return env.Null();
}

View File

@ -1,6 +1,9 @@
import addon from '../utils/addon';
import { NodeWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { AlignmentFlag } from '../QtEnums/AlignmentFlag';
import { CursorMoveStyle } from '../QtEnums/CursorMoveStyle';
import { QPoint } from '../QtCore/QPoint';
/**
@ -34,32 +37,181 @@ export class QLineEdit extends NodeWidget<QLineEditSignals> {
this.native = native;
this.setNodeParent(parent);
}
setText(text: string): void {
if (text == null) {
return;
}
this.native.setText(text);
// TODO: void addAction(QAction *action, QLineEdit::ActionPosition position)
// TODO: QAction * addAction(const QIcon &icon, QLineEdit::ActionPosition position)
alignment(): AlignmentFlag {
return this.property('alignment').toInt();
}
text(): string {
return this.native.text();
backspace(): void {
this.native.backspace();
}
setPlaceholderText(text: string): void {
this.native.setPlaceholderText(text);
// TODO: QCompleter * completer() const
// TODO: QMenu * createStandardContextMenu()
cursorBackward(mark: boolean, steps = 1): void {
this.native.cursorBackward(mark, steps);
}
cursorForward(mark: boolean, steps = 1): void {
this.native.cursorForward(mark, steps);
}
cursorMoveStyle(): CursorMoveStyle {
return this.property('cursorMoveStyle').toInt();
}
cursorPosition(): number {
return this.property('cursorPosition').toInt();
}
cursorPositionAt(pos: QPoint): number {
return this.native.cursorPositionAt(pos);
}
cursorWordBackward(mark: boolean): void {
this.native.cursorWordBackward(mark);
}
cursorWordForward(mark: boolean): void {
this.native.cursorWordForward(mark);
}
del(): void {
this.native.del();
}
deselect(): void {
this.native.deselect();
}
displayText(): string {
return this.property('displayText').toString();
}
dragEnabled(): boolean {
return this.property('dragEnabled').toBool();
}
echoMode(): EchoMode {
return this.property('echoMode').toInt();
}
end(mark: boolean): void {
this.native.end(mark);
}
hasAcceptableInput(): boolean {
return this.property('hasAcceptableInput').toBool();
}
hasFrame(): boolean {
return this.property('hasFrame').toBool();
}
hasSelectedText(): boolean {
return this.property('hasSelectedText').toBool();
}
home(mark: boolean): void {
this.native.home(mark);
}
inputMask(): string {
return this.property('inputMask').toString();
}
insert(newText: string): void {
this.native.insert(newText);
}
isClearButtonEnabled(): boolean {
return this.property('isClearButtonEnabled').toBool();
}
isModified(): boolean {
return this.property('isModified').toBool();
}
isReadOnly(): boolean {
return this.property('isReadOnly').toBool();
}
isRedoAvailable(): boolean {
return this.property('isRedoAvailable').toBool();
}
isUndoAvailable(): boolean {
return this.property('isUndoAvailable').toBool();
}
maxLength(): number {
return this.property('maxLength').toInt();
}
placeholderText(): string {
return this.property('placeholderText').toString();
}
selectedText(): string {
return this.property('selectedText').toString();
}
selectionEnd(): number {
return this.native.selectionEnd();
}
selectionLength(): number {
return this.native.selectionLength();
}
selectionStart(): number {
return this.native.selectionStart();
}
setAlignment(alignment: AlignmentFlag): void {
this.setProperty('alignment', alignment);
}
setClearButtonEnabled(enable: boolean): void {
this.setProperty('clearButtonEnabled', enable);
}
// TODO: void setCompleter(QCompleter *c)
setCursorMoveStyle(style: CursorMoveStyle): void {
this.setProperty('cursorMoveStyle', style);
}
setCursorPosition(pos: number): void {
this.setProperty('cursorPosition', pos);
}
setDragEnabled(b: boolean): void {
this.setProperty('dragEnabled', b);
}
setEchoMode(echoMode: EchoMode): void {
this.setProperty('echoMode', echoMode);
}
setFrame(useFrame: boolean): void {
this.setProperty('frame', useFrame);
}
setInputMask(inputMask: string): void {
this.setProperty('inputMask', inputMask);
}
setMaxLength(maxLength: number): void {
this.setProperty('maxLength', maxLength);
}
setModified(isModified: boolean): void {
this.setProperty('modified', isModified);
}
setPlaceholderText(text: string): void {
this.setProperty('placeholderText', text);
}
setReadOnly(isReadOnly: boolean): void {
this.native.setReadOnly(isReadOnly);
this.setProperty('readOnly', isReadOnly);
}
isReadOnly(): boolean {
return this.property('readOnly').toBool();
setSelection(start: number, length: number): void {
this.native.setSelection(start, length);
}
setTextMargins(left: number, top: number, right: number, bottom: number): void {
this.native.setTextMargins(left, top, right, bottom);
}
// TODO: void setTextMargins(const QMargins &margins)
// TODO: void setValidator(const QValidator *v)
text(): string {
return this.property('text').toString();
}
// TODO: QMargins textMargins() const
// TODO: const QValidator * validator() const
// *** Public Slots ***
clear(): void {
this.native.clear();
}
setEchoMode(mode: EchoMode): void {
this.native.setEchoMode(mode);
copy(): void {
this.native.copy();
}
cut(): void {
this.native.cut();
}
paste(): void {
this.native.paste();
}
redo(): void {
this.native.redo();
}
selectAll(): void {
this.native.selectAll();
}
setText(text: string): void {
this.setProperty('text', text);
}
undo(): void {
this.native.undo();
}
}