diff --git a/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h b/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h index ad7e8ff37..d95e141bf 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h @@ -21,10 +21,27 @@ class DLL_EXPORT QLineEditWrap : public Napi::ObjectWrap { // 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); }; diff --git a/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp b/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp index 470a34cbd..4581a5f6b 100644 --- a/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp @@ -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(); - 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(); - this->instance->setReadOnly(isReadOnly.Value()); + bool mark = info[0].As().Value(); + int steps = info[1].As().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(); - this->instance->setPlaceholderText(text.Utf8Value().c_str()); + bool mark = info[0].As().Value(); + int steps = info[1].As().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::Unwrap(info[0].As()); + 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().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().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().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().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().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().Int32Value(); + int length = info[1].As().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().Int32Value(); + int top = info[1].As().Int32Value(); + int right = info[2].As().Int32Value(); + int bottom = info[3].As().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(); - this->instance->setEchoMode( - static_cast(mode.Int32Value())); + this->instance->copy(); return env.Null(); -} \ No newline at end of file +} + +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(); +} diff --git a/src/lib/QtWidgets/QLineEdit.ts b/src/lib/QtWidgets/QLineEdit.ts index 426ba5825..00e89d3c8 100644 --- a/src/lib/QtWidgets/QLineEdit.ts +++ b/src/lib/QtWidgets/QLineEdit.ts @@ -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 { 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(); } }