Add QStyleFactory and bits to set the app style
This commit is contained in:
parent
25f529757e
commit
c3c597df4d
@ -146,6 +146,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStandardItem/qstandarditem_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QDesktopWidget/qdesktopwidget_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStyleFactory/qstylefactory_wrap.cpp"
|
||||
# Custom widgets (include them for automoc since they contain Q_OBJECT)
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QAbstractItemModel/nabstractitemmodel.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QItemSelectionModel/nitemselectionmodel.hpp"
|
||||
|
||||
@ -35,5 +35,6 @@ class DLL_EXPORT QApplicationWrap : public Napi::ObjectWrap<QApplicationWrap> {
|
||||
namespace StaticQApplicationWrapMethods {
|
||||
DLL_EXPORT Napi::Value instance(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value clipboard(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value setStyle(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value style(const Napi::CallbackInfo& info);
|
||||
} // namespace StaticQApplicationWrapMethods
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include <napi.h>
|
||||
|
||||
namespace QStyleFactoryWrap {
|
||||
DLL_EXPORT Napi::Object create(Napi::Env env, Napi::Object exports);
|
||||
DLL_EXPORT Napi::Object keys(Napi::Env env, Napi::Object exports);
|
||||
DLL_EXPORT Napi::Object init(Napi::Env env, Napi::Object exports);
|
||||
} // namespace QStyleFactoryWrap
|
||||
@ -25,6 +25,7 @@ Napi::Object QApplicationWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
InstanceMethod("setStyleSheet", &QApplicationWrap::setStyleSheet),
|
||||
StaticMethod("instance", &StaticQApplicationWrapMethods::instance),
|
||||
StaticMethod("clipboard", &StaticQApplicationWrapMethods::clipboard),
|
||||
StaticMethod("setStyle", &StaticQApplicationWrapMethods::setStyle),
|
||||
StaticMethod("style", &StaticQApplicationWrapMethods::style),
|
||||
QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(QApplicationWrap)});
|
||||
constructor = Napi::Persistent(func);
|
||||
@ -125,6 +126,19 @@ Napi::Value StaticQApplicationWrapMethods::clipboard(
|
||||
{Napi::External<QClipboard>::New(env, clipboard)});
|
||||
}
|
||||
|
||||
Napi::Value StaticQApplicationWrapMethods::setStyle(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
QStyleWrap* styleWrap =
|
||||
Napi::ObjectWrap<QStyleWrap>::Unwrap(info[0].As<Napi::Object>());
|
||||
QStyle* style = styleWrap->getInternalInstance();
|
||||
QApplication::setStyle(style);
|
||||
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value StaticQApplicationWrapMethods::style(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
|
||||
40
src/cpp/lib/QtWidgets/QStyleFactory/qstylefactory_wrap.cpp
Normal file
40
src/cpp/lib/QtWidgets/QStyleFactory/qstylefactory_wrap.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
#include <nodegui/Extras/Utils/nutils.h>
|
||||
|
||||
#include <QStyleFactory>
|
||||
|
||||
#include "QtGui/QStyle/qstyle_wrap.h"
|
||||
|
||||
namespace QStyleFactoryWrap {
|
||||
|
||||
Napi::Value create(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
Napi::String key = info[0].As<Napi::String>();
|
||||
|
||||
QStyle* style =
|
||||
QStyleFactory::create(QString::fromStdString(key.Utf8Value()));
|
||||
if (!style) {
|
||||
return env.Null();
|
||||
}
|
||||
return QStyleWrap::constructor.New({Napi::External<QStyle>::New(env, style)});
|
||||
}
|
||||
|
||||
Napi::Value keys(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
QStringList keys = QStyleFactory::keys();
|
||||
Napi::Array keysNapi = Napi::Array::New(env, keys.size());
|
||||
for (int i = 0; i < keys.size(); i++) {
|
||||
keysNapi[i] = Napi::String::New(env, keys[i].toStdString());
|
||||
}
|
||||
return keysNapi;
|
||||
}
|
||||
|
||||
Napi::Object init(Napi::Env env, Napi::Object exports) {
|
||||
exports.Set("QStyleFactory_create", Napi::Function::New<create>(env));
|
||||
exports.Set("QStyleFactory_keys", Napi::Function::New<keys>(env));
|
||||
return exports;
|
||||
}
|
||||
} // namespace QStyleFactoryWrap
|
||||
@ -94,6 +94,7 @@
|
||||
#include "QtWidgets/QStandardItem/qstandarditem_wrap.h"
|
||||
#include "QtWidgets/QStandardItemModel/qstandarditemmodel_wrap.h"
|
||||
#include "QtWidgets/QStatusBar/qstatusbar_wrap.h"
|
||||
#include "QtWidgets/QStyleFactory/qstylefactory_wrap.h"
|
||||
#include "QtWidgets/QSvgWidget/qsvgwidget_wrap.h"
|
||||
#include "QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h"
|
||||
#include "QtWidgets/QTabBar/qtabbar_wrap.h"
|
||||
@ -226,6 +227,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) {
|
||||
QAbstractItemModelWrap::init(env, exports);
|
||||
QHeaderViewWrap::init(env, exports);
|
||||
QItemSelectionModelWrap::init(env, exports);
|
||||
QStyleFactoryWrap::init(env, exports);
|
||||
return exports;
|
||||
}
|
||||
|
||||
|
||||
@ -136,6 +136,8 @@ export {
|
||||
QTextEditLineWrapMode,
|
||||
WrapMode,
|
||||
} from './lib/QtWidgets/QTextEdit';
|
||||
export { QStyleFactory } from './lib/QtWidgets/QStyleFactory';
|
||||
|
||||
// Core
|
||||
export { QAbstractItemModel } from './lib/QtCore/QAbstractItemModel';
|
||||
export { QAbstractTableModel } from './lib/QtCore/QAbstractTableModel';
|
||||
|
||||
@ -74,6 +74,9 @@ export class QApplication extends NodeObject<QApplicationSignals> {
|
||||
const preparedSheet = StyleSheet.create(styleSheet);
|
||||
this.native.setStyleSheet(preparedSheet);
|
||||
}
|
||||
static setStyle(style: QStyle): void {
|
||||
addon.QApplication.setStyle(style.native);
|
||||
}
|
||||
static style(): QStyle {
|
||||
return new QStyle(addon.QApplication.style());
|
||||
}
|
||||
|
||||
15
src/lib/QtWidgets/QStyleFactory.ts
Normal file
15
src/lib/QtWidgets/QStyleFactory.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import addon from '../utils/addon';
|
||||
import { QStyle } from '../QtGui/QStyle';
|
||||
|
||||
export class QStyleFactory {
|
||||
static create(key: string): QStyle | null {
|
||||
const qstyle = addon.QStyleFactory_create(key);
|
||||
if (qstyle == null) {
|
||||
return null;
|
||||
}
|
||||
return new QStyle(qstyle);
|
||||
}
|
||||
static keys(): string[] {
|
||||
return addon.QStyleFactory_keys();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user