Adds qclipboard
This commit is contained in:
parent
6cb1be07ce
commit
0ff2c8d2a9
@ -11,6 +11,7 @@
|
||||
"../src/cpp/core/YogaWidget/yogawidget.cpp",
|
||||
# wrapped cpps. Move non wrapped ones to shared gypi
|
||||
"../src/cpp/QtGui/QApplication/qapplication_wrap.cpp",
|
||||
"../src/cpp/QtGui/QClipboard/qclipboard_wrap.cpp",
|
||||
"../src/cpp/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp",
|
||||
"../src/cpp/QtGui/QPixmap/qpixmap_wrap.cpp",
|
||||
"../src/cpp/QtGui/QIcon/qicon_wrap.cpp",
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#include "qapplication_wrap.h"
|
||||
#include "src/cpp/core/Component/component_macro.h"
|
||||
#include "src/cpp/Extras/Utils/nutils.h"
|
||||
#include "src/cpp/QtGui/QClipboard/qclipboard_wrap.h"
|
||||
|
||||
Napi::FunctionReference QApplicationWrap::constructor;
|
||||
int QApplicationWrap::argc = 0;
|
||||
@ -28,22 +29,24 @@ QApplicationWrap::QApplicationWrap(const Napi::CallbackInfo& info)
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
if(info.Length() == 1) {
|
||||
this->instance = std::unique_ptr<QApplication>(info[0].As<Napi::External<QApplication>>().Data());
|
||||
this->instance = info[0].As<Napi::External<QApplication>>().Data();
|
||||
} else if (info.Length() == 0){
|
||||
this->instance = std::make_unique<QApplication>(this->argc, this->argv);
|
||||
this->instance = new QApplication(this->argc, this->argv);
|
||||
this->_wasManuallyCreated = true;
|
||||
} else {
|
||||
Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException();
|
||||
}
|
||||
}
|
||||
|
||||
QApplicationWrap::~QApplicationWrap()
|
||||
{
|
||||
this->instance.reset();
|
||||
if(this->_wasManuallyCreated){
|
||||
delete this->instance;
|
||||
}
|
||||
}
|
||||
|
||||
QApplication* QApplicationWrap::getInternalInstance()
|
||||
{
|
||||
return this->instance.get();
|
||||
return this->instance;
|
||||
}
|
||||
|
||||
Napi::Value QApplicationWrap::processEvents(const Napi::CallbackInfo& info)
|
||||
@ -87,3 +90,11 @@ Napi::Value StaticQApplicationWrapMethods::instance(const Napi::CallbackInfo& in
|
||||
Napi::Object instance = QApplicationWrap::constructor.New({ Napi::External<QApplication>::New(env, app) });
|
||||
return instance;
|
||||
}
|
||||
|
||||
Napi::Value StaticQApplicationWrapMethods::clipboard(const Napi::CallbackInfo& info)
|
||||
{
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
QClipboard* clipboard = QApplication::clipboard();
|
||||
return QClipboardWrap::constructor.New({ Napi::External<QClipboard>::New(env, clipboard) });
|
||||
}
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <napi.h>
|
||||
#include <stdlib.h>
|
||||
#include <QApplication>
|
||||
|
||||
|
||||
class QApplicationWrap : public Napi::ObjectWrap<QApplicationWrap> {
|
||||
private:
|
||||
std::unique_ptr<QApplication> instance;
|
||||
QApplication* instance;
|
||||
static int argc;
|
||||
static char** argv;
|
||||
bool _wasManuallyCreated = false;
|
||||
|
||||
public:
|
||||
static Napi::FunctionReference constructor;
|
||||
@ -26,4 +26,5 @@ public:
|
||||
|
||||
namespace StaticQApplicationWrapMethods {
|
||||
Napi::Value instance(const Napi::CallbackInfo& info);
|
||||
Napi::Value clipboard(const Napi::CallbackInfo& info);
|
||||
}
|
||||
63
src/cpp/QtGui/QClipboard/qclipboard_wrap.cpp
Normal file
63
src/cpp/QtGui/QClipboard/qclipboard_wrap.cpp
Normal file
@ -0,0 +1,63 @@
|
||||
#include "qclipboard_wrap.h"
|
||||
#include "src/cpp/Extras/Utils/nutils.h"
|
||||
#include "deps/spdlog/spdlog.h"
|
||||
|
||||
Napi::FunctionReference QClipboardWrap::constructor;
|
||||
|
||||
Napi::Object QClipboardWrap::init(Napi::Env env, Napi::Object exports)
|
||||
{
|
||||
Napi::HandleScope scope(env);
|
||||
char CLASSNAME[] = "QClipboard";
|
||||
Napi::Function func = DefineClass(env, CLASSNAME, {
|
||||
InstanceMethod("clear", &QClipboardWrap::clear),
|
||||
InstanceMethod("setText", &QClipboardWrap::setText),
|
||||
InstanceMethod("text", &QClipboardWrap::text),
|
||||
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE
|
||||
});
|
||||
constructor = Napi::Persistent(func);
|
||||
exports.Set(CLASSNAME, func);
|
||||
return exports;
|
||||
}
|
||||
|
||||
QClipboardWrap::QClipboardWrap(const Napi::CallbackInfo &info) : Napi::ObjectWrap<QClipboardWrap>(info)
|
||||
{
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
if (info[0].IsExternal()) {
|
||||
this->instance = info[0].As<Napi::External<QClipboard>>().Data();
|
||||
}
|
||||
else {
|
||||
Napi::TypeError::New(env, "Incorrect initialization of QClipboardWrap").ThrowAsJavaScriptException();
|
||||
}
|
||||
}
|
||||
|
||||
QClipboard *QClipboardWrap::getInternalInstance()
|
||||
{
|
||||
return this->instance;
|
||||
}
|
||||
|
||||
Napi::Value QClipboardWrap::clear(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
Napi::Number mode = info[0].As<Napi::Number>();
|
||||
this->instance->clear(static_cast<QClipboard::Mode>(mode.Int32Value()));
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QClipboardWrap::setText(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
Napi::String text = info[0].As<Napi::String>();
|
||||
Napi::Number mode = info[1].As<Napi::Number>();
|
||||
QString clipboardText = text.Utf8Value().c_str();
|
||||
this->instance->setText(clipboardText, static_cast<QClipboard::Mode>(mode.Int32Value()));
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QClipboardWrap::text(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
Napi::Number mode = info[0].As<Napi::Number>();
|
||||
QString text = this->instance->text(static_cast<QClipboard::Mode>(mode.Int32Value()));
|
||||
return Napi::Value::From(env, text.toStdString());
|
||||
}
|
||||
20
src/cpp/QtGui/QClipboard/qclipboard_wrap.h
Normal file
20
src/cpp/QtGui/QClipboard/qclipboard_wrap.h
Normal file
@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#include <napi.h>
|
||||
#include <QClipboard>
|
||||
#include "src/cpp/core/Component/component_macro.h"
|
||||
|
||||
class QClipboardWrap : public Napi::ObjectWrap<QClipboardWrap>
|
||||
{
|
||||
private:
|
||||
QClipboard* instance;
|
||||
public:
|
||||
static Napi::FunctionReference constructor;
|
||||
static Napi::Object init(Napi::Env env, Napi::Object exports);
|
||||
QClipboardWrap(const Napi::CallbackInfo &info);
|
||||
QClipboard *getInternalInstance();
|
||||
// Wrapped methods
|
||||
Napi::Value clear(const Napi::CallbackInfo& info);
|
||||
Napi::Value setText(const Napi::CallbackInfo& info);
|
||||
Napi::Value text(const Napi::CallbackInfo& info);
|
||||
};
|
||||
@ -1,4 +1,5 @@
|
||||
#include "src/cpp/QtGui/QApplication/qapplication_wrap.h"
|
||||
#include "src/cpp/QtGui/QClipboard/qclipboard_wrap.h"
|
||||
#include "src/cpp/QtWidgets/QWidget/qwidget_wrap.h"
|
||||
#include "src/cpp/QtGui/QPixmap/qpixmap_wrap.h"
|
||||
#include "src/cpp/QtGui/QIcon/qicon_wrap.h"
|
||||
@ -27,6 +28,7 @@ void InitPrivateHelpers(Napi::Env env){
|
||||
Napi::Object Main(Napi::Env env, Napi::Object exports) {
|
||||
InitPrivateHelpers(env);
|
||||
QApplicationWrap::init(env, exports);
|
||||
QClipboardWrap::init(env, exports);
|
||||
QWidgetWrap::init(env, exports);
|
||||
QPixmapWrap::init(env, exports);
|
||||
QIconWrap::init(env, exports);
|
||||
|
||||
@ -6,6 +6,7 @@ export { QPixmap } from "./lib/QtGui/QPixmap";
|
||||
export { QIcon } from "./lib/QtGui/QIcon";
|
||||
export { QCursor } from "./lib/QtGui/QCursor";
|
||||
export { QTextOptionEnums } from "./lib/QtGui/QTextOption";
|
||||
export { QClipboard, QClipboardMode } from "./lib/QtGui/QClipboard";
|
||||
// Events: Maybe a separate module ?
|
||||
export { QKeyEvent } from "./lib/QtGui/QEvent/QKeyEvent";
|
||||
export { NativeEvent } from "./lib/core/EventWidget";
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import addon from "../../core/addon";
|
||||
import { Component, NativeElement } from "../../core/Component";
|
||||
import { checkIfNativeElement } from "../../utils";
|
||||
import { QClipboard } from "../QClipboard";
|
||||
|
||||
type arg = NativeElement;
|
||||
export class QApplication extends Component {
|
||||
@ -13,6 +14,9 @@ export class QApplication extends Component {
|
||||
this.native = new addon.QApplication();
|
||||
}
|
||||
}
|
||||
static clipboard = (): QClipboard => {
|
||||
return new QClipboard(addon.QApplication.clipboard());
|
||||
};
|
||||
processEvents = () => {
|
||||
this.native.processEvents();
|
||||
};
|
||||
|
||||
28
src/lib/QtGui/QClipboard/index.ts
Normal file
28
src/lib/QtGui/QClipboard/index.ts
Normal file
@ -0,0 +1,28 @@
|
||||
import { Component, NativeElement } from "../../core/Component";
|
||||
import { checkIfNativeElement } from "../../utils";
|
||||
|
||||
export class QClipboard extends Component {
|
||||
native: NativeElement;
|
||||
constructor(native: NativeElement) {
|
||||
super();
|
||||
if (checkIfNativeElement(native)) {
|
||||
this.native = native;
|
||||
} else {
|
||||
throw new Error(
|
||||
"QClipboard cannot be initialised this way. Use QApplication::clipboard()"
|
||||
);
|
||||
}
|
||||
}
|
||||
clear = (mode: QClipboardMode) => {
|
||||
this.native.clear(mode);
|
||||
};
|
||||
setText = (text: string, mode: QClipboardMode) => {
|
||||
this.native.setText(text, mode);
|
||||
};
|
||||
}
|
||||
|
||||
export enum QClipboardMode {
|
||||
Clipboard,
|
||||
Selection,
|
||||
FindBuffer
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user