Add a (basic) QPalette

This commit is contained in:
Simon Edwards 2021-07-30 09:02:58 +02:00
parent 978526c4e6
commit 17462abae7
9 changed files with 148 additions and 0 deletions

View File

@ -63,6 +63,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QCursor/qcursor_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QKeySequence/qkeysequence_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QMovie/qmovie_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPalette/qpalette_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QStyle/qstyle_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QDate/qdate_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtCore/QDateTime/qdatetime_wrap.cpp"

View File

@ -28,6 +28,8 @@ class DLL_EXPORT QApplicationWrap : public Napi::ObjectWrap<QApplicationWrap> {
Napi::Value exit(const Napi::CallbackInfo& info);
Napi::Value setQuitOnLastWindowClosed(const Napi::CallbackInfo& info);
Napi::Value quitOnLastWindowClosed(const Napi::CallbackInfo& info);
Napi::Value palette(const Napi::CallbackInfo& info);
// setStyleSheet
};
namespace StaticQApplicationWrapMethods {

View File

@ -0,0 +1,24 @@
#pragma once
#include <napi.h>
#include <QPalette>
#include "Extras/Export/export.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QPaletteWrap : public Napi::ObjectWrap<QPaletteWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
private:
std::unique_ptr<QPalette> instance;
public:
static Napi::FunctionReference constructor;
static Napi::Object init(Napi::Env env, Napi::Object exports);
QPaletteWrap(const Napi::CallbackInfo& info);
~QPaletteWrap();
QPalette* getInternalInstance();
// Wrapped methods
Napi::Value color(const Napi::CallbackInfo& info);
};

View File

@ -2,6 +2,7 @@
#include "Extras/Utils/nutils.h"
#include "QtGui/QClipboard/qclipboard_wrap.h"
#include "QtGui/QPalette/qpalette_wrap.h"
#include "QtGui/QStyle/qstyle_wrap.h"
#include "core/Integration/qode-api.h"
@ -20,6 +21,7 @@ Napi::Object QApplicationWrap::init(Napi::Env env, Napi::Object exports) {
&QApplicationWrap::setQuitOnLastWindowClosed),
InstanceMethod("quitOnLastWindowClosed",
&QApplicationWrap::quitOnLastWindowClosed),
InstanceMethod("palette", &QApplicationWrap::palette),
StaticMethod("instance", &StaticQApplicationWrapMethods::instance),
StaticMethod("clipboard", &StaticQApplicationWrapMethods::clipboard),
StaticMethod("style", &StaticQApplicationWrapMethods::style),
@ -81,6 +83,15 @@ Napi::Value QApplicationWrap::exit(const Napi::CallbackInfo& info) {
return env.Null();
}
Napi::Value QApplicationWrap::palette(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
QPalette* palette = new QPalette(this->instance->palette());
return QPaletteWrap::constructor.New(
{Napi::External<QPalette>::New(env, palette)});
}
Napi::Value StaticQApplicationWrapMethods::instance(
const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();

View File

@ -0,0 +1,58 @@
#include "QtGui/QPalette/qpalette_wrap.h"
#include "Extras/Utils/nutils.h"
#include "QtCore/QVariant/qvariant_wrap.h"
#include "QtGui/QBrush/qbrush_wrap.h"
#include "QtGui/QColor/qcolor_wrap.h"
#include "QtGui/QPixmap/qpixmap_wrap.h"
Napi::FunctionReference QPaletteWrap::constructor;
Napi::Object QPaletteWrap::init(Napi::Env env, Napi::Object exports) {
Napi::HandleScope scope(env);
char CLASSNAME[] = "QPen";
Napi::Function func =
DefineClass(env, CLASSNAME,
{InstanceMethod("color", &QPaletteWrap::color),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QPaletteWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;
}
QPaletteWrap::QPaletteWrap(const Napi::CallbackInfo& info)
: Napi::ObjectWrap<QPaletteWrap>(info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
if (info.Length() == 0) {
this->instance = std::make_unique<QPalette>();
} else if (info.Length() == 1) {
this->instance = std::unique_ptr<QPalette>(
info[0].As<Napi::External<QPalette>>().Data());
} else {
Napi::TypeError::New(env, "Wrong number of arguments")
.ThrowAsJavaScriptException();
}
this->rawData = extrautils::configureComponent(this->getInternalInstance());
}
QPaletteWrap::~QPaletteWrap() { this->instance.reset(); }
QPalette* QPaletteWrap::getInternalInstance() { return this->instance.get(); }
Napi::Value QPaletteWrap::color(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
QPalette::ColorGroup colorGroup = static_cast<QPalette::ColorGroup>(
info[0].As<Napi::Number>().Int32Value());
QPalette::ColorRole colorRole =
static_cast<QPalette::ColorRole>(info[1].As<Napi::Number>().Int32Value());
QColor color = this->instance->color(colorGroup, colorRole);
auto instance = QColorWrap::constructor.New(
{Napi::External<QColor>::New(env, new QColor(color))});
return instance;
}

View File

@ -37,6 +37,7 @@
#include "QtGui/QImage/qimage_wrap.h"
#include "QtGui/QKeySequence/qkeysequence_wrap.h"
#include "QtGui/QMovie/qmovie_wrap.h"
#include "QtGui/QPalette/qpalette_wrap.h"
#include "QtGui/QPen/qpen_wrap.h"
#include "QtGui/QPicture/qpicture_wrap.h"
#include "QtGui/QPixmap/qpixmap_wrap.h"
@ -218,6 +219,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) {
QSvgWidgetWrap::init(env, exports);
QDesktopWidgetWrap::init(env, exports);
QPaintEventWrap::init(env, exports);
QPaletteWrap::init(env, exports);
return exports;
}

View File

@ -13,6 +13,7 @@ export { QIcon, QIconMode, QIconState } from './lib/QtGui/QIcon';
export { QImage, QImageFormat } from './lib/QtGui/QImage';
export { QFont, QFontCapitalization, QFontStretch, QFontWeight } from './lib/QtGui/QFont';
export { QMovie, CacheMode, MovieState } from './lib/QtGui/QMovie';
export { QPalette, ColorGroup, ColorRole } from './lib/QtGui/QPalette';
export { QCursor } from './lib/QtGui/QCursor';
export { QTextOptionWrapMode } from './lib/QtGui/QTextOption';
export { QClipboard, QClipboardMode } from './lib/QtGui/QClipboard';

View File

@ -5,6 +5,7 @@ import { QClipboard } from './QClipboard';
import { QStyle } from './QStyle';
import { QObjectSignals, NodeObject } from '../QtCore/QObject';
import { QDesktopWidget } from '../QtWidgets/QDesktopWidget';
import { QPalette } from './QPalette';
/**
@ -62,6 +63,9 @@ export class QApplication extends NodeObject<QApplicationSignals> {
quitOnLastWindowClosed(): boolean {
return this.native.quitOnLastWindowClosed();
}
palette(): QPalette {
return new QPalette(this.native.palette());
}
static style(): QStyle {
return new QStyle(addon.QApplication.style());
}

45
src/lib/QtGui/QPalette.ts Normal file
View File

@ -0,0 +1,45 @@
import { Component, NativeElement } from '../core/Component';
import { QColor } from './QColor';
export enum ColorGroup {
Disabled = 1,
Active = 0,
Inactive = 2,
Normal = 0,
}
export enum ColorRole {
WindowText = 0,
Button = 1,
Light = 2,
Midlight = 3,
Dark = 4,
Mid = 5,
Text = 6,
BrightText = 7,
ButtonText = 8,
Base = 9,
Window = 10,
Shadow = 11,
Highlight = 12,
HighlightedText = 13,
Link = 14,
LinkVisited = 15,
AlternateBase = 16,
NoRole = 17,
ToolTipBase = 18,
ToolTipText = 19,
PlaceholderText = 20,
}
export class QPalette extends Component {
native: NativeElement;
constructor(native: NativeElement) {
super();
this.native = native;
}
color(group: ColorGroup, role: ColorRole): QColor {
return new QColor(this.native.color(group, role));
}
}