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/QStandardItem/qstandarditem_wrap.cpp"
|
||||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_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/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)
|
# 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/QAbstractItemModel/nabstractitemmodel.hpp"
|
||||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QItemSelectionModel/nitemselectionmodel.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 {
|
namespace StaticQApplicationWrapMethods {
|
||||||
DLL_EXPORT Napi::Value instance(const Napi::CallbackInfo& info);
|
DLL_EXPORT Napi::Value instance(const Napi::CallbackInfo& info);
|
||||||
DLL_EXPORT Napi::Value clipboard(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);
|
DLL_EXPORT Napi::Value style(const Napi::CallbackInfo& info);
|
||||||
} // namespace StaticQApplicationWrapMethods
|
} // 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),
|
InstanceMethod("setStyleSheet", &QApplicationWrap::setStyleSheet),
|
||||||
StaticMethod("instance", &StaticQApplicationWrapMethods::instance),
|
StaticMethod("instance", &StaticQApplicationWrapMethods::instance),
|
||||||
StaticMethod("clipboard", &StaticQApplicationWrapMethods::clipboard),
|
StaticMethod("clipboard", &StaticQApplicationWrapMethods::clipboard),
|
||||||
|
StaticMethod("setStyle", &StaticQApplicationWrapMethods::setStyle),
|
||||||
StaticMethod("style", &StaticQApplicationWrapMethods::style),
|
StaticMethod("style", &StaticQApplicationWrapMethods::style),
|
||||||
QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(QApplicationWrap)});
|
QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(QApplicationWrap)});
|
||||||
constructor = Napi::Persistent(func);
|
constructor = Napi::Persistent(func);
|
||||||
@ -125,6 +126,19 @@ Napi::Value StaticQApplicationWrapMethods::clipboard(
|
|||||||
{Napi::External<QClipboard>::New(env, 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(
|
Napi::Value StaticQApplicationWrapMethods::style(
|
||||||
const Napi::CallbackInfo& info) {
|
const Napi::CallbackInfo& info) {
|
||||||
Napi::Env env = info.Env();
|
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/QStandardItem/qstandarditem_wrap.h"
|
||||||
#include "QtWidgets/QStandardItemModel/qstandarditemmodel_wrap.h"
|
#include "QtWidgets/QStandardItemModel/qstandarditemmodel_wrap.h"
|
||||||
#include "QtWidgets/QStatusBar/qstatusbar_wrap.h"
|
#include "QtWidgets/QStatusBar/qstatusbar_wrap.h"
|
||||||
|
#include "QtWidgets/QStyleFactory/qstylefactory_wrap.h"
|
||||||
#include "QtWidgets/QSvgWidget/qsvgwidget_wrap.h"
|
#include "QtWidgets/QSvgWidget/qsvgwidget_wrap.h"
|
||||||
#include "QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h"
|
#include "QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h"
|
||||||
#include "QtWidgets/QTabBar/qtabbar_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);
|
QAbstractItemModelWrap::init(env, exports);
|
||||||
QHeaderViewWrap::init(env, exports);
|
QHeaderViewWrap::init(env, exports);
|
||||||
QItemSelectionModelWrap::init(env, exports);
|
QItemSelectionModelWrap::init(env, exports);
|
||||||
|
QStyleFactoryWrap::init(env, exports);
|
||||||
return exports;
|
return exports;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -136,6 +136,8 @@ export {
|
|||||||
QTextEditLineWrapMode,
|
QTextEditLineWrapMode,
|
||||||
WrapMode,
|
WrapMode,
|
||||||
} from './lib/QtWidgets/QTextEdit';
|
} from './lib/QtWidgets/QTextEdit';
|
||||||
|
export { QStyleFactory } from './lib/QtWidgets/QStyleFactory';
|
||||||
|
|
||||||
// Core
|
// Core
|
||||||
export { QAbstractItemModel } from './lib/QtCore/QAbstractItemModel';
|
export { QAbstractItemModel } from './lib/QtCore/QAbstractItemModel';
|
||||||
export { QAbstractTableModel } from './lib/QtCore/QAbstractTableModel';
|
export { QAbstractTableModel } from './lib/QtCore/QAbstractTableModel';
|
||||||
|
|||||||
@ -74,6 +74,9 @@ export class QApplication extends NodeObject<QApplicationSignals> {
|
|||||||
const preparedSheet = StyleSheet.create(styleSheet);
|
const preparedSheet = StyleSheet.create(styleSheet);
|
||||||
this.native.setStyleSheet(preparedSheet);
|
this.native.setStyleSheet(preparedSheet);
|
||||||
}
|
}
|
||||||
|
static setStyle(style: QStyle): void {
|
||||||
|
addon.QApplication.setStyle(style.native);
|
||||||
|
}
|
||||||
static style(): QStyle {
|
static style(): QStyle {
|
||||||
return new QStyle(addon.QApplication.style());
|
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