Add done() and accept() to QDialog and subclasses as much as possible

issue #708
This commit is contained in:
Simon Edwards 2022-06-19 11:05:51 +02:00
parent 28b98b055a
commit 123524d126
12 changed files with 125 additions and 50 deletions

View File

@ -9,7 +9,7 @@
#include "QtWidgets/QDialog/qdialog_macro.h"
class DLL_EXPORT QColorDialogWrap : public Napi::ObjectWrap<QColorDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private:
QPointer<QColorDialog> instance;
@ -24,6 +24,8 @@ class DLL_EXPORT QColorDialogWrap : public Napi::ObjectWrap<QColorDialogWrap> {
Napi::Value selectedColor(const Napi::CallbackInfo& info);
Napi::Value setOption(const Napi::CallbackInfo& info);
Napi::Value testOption(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
};
namespace StaticQColorDialogWrapMethods {

View File

@ -13,8 +13,8 @@
and every widget we export.
*/
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION
#define QDIALOG_WRAPPED_METHODS_DECLARATION \
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
#define QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \
\
QWIDGET_WRAPPED_METHODS_DECLARATION \
\
@ -46,6 +46,22 @@
}
#endif
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION
#define QDIALOG_WRAPPED_METHODS_DECLARATION \
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \
Napi::Value accept(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->accept(); \
return env.Null(); \
} \
Napi::Value done(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int r = info[0].As<Napi::Number>().Int32Value(); \
this->instance->done(r); \
return env.Null(); \
}
#endif
#ifndef QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE
#define QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE(DialogWrapName) \
\
@ -54,7 +70,9 @@
InstanceMethod("setResult", &DialogWrapName::setResult), \
InstanceMethod("exec", &DialogWrapName::exec), \
InstanceMethod("open", &DialogWrapName::open), \
InstanceMethod("reject", &DialogWrapName::reject),
InstanceMethod("reject", &DialogWrapName::reject), \
InstanceMethod("accept", &DialogWrapName::accept), \
InstanceMethod("done", &DialogWrapName::done),
#endif // QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE

View File

@ -10,7 +10,7 @@
class DLL_EXPORT QErrorMessageWrap
: public Napi::ObjectWrap<QErrorMessageWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private:
QPointer<QErrorMessage> instance;
@ -23,4 +23,6 @@ class DLL_EXPORT QErrorMessageWrap
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value showMessage(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
};

View File

@ -9,7 +9,7 @@
#include "QtWidgets/QFileDialog/nfiledialog.hpp"
class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private:
QPointer<QFileDialog> instance;
@ -28,4 +28,6 @@ class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> {
Napi::Value setOption(const Napi::CallbackInfo& info);
Napi::Value setNameFilter(const Napi::CallbackInfo& info);
Napi::Value selectedFiles(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
};

View File

@ -9,7 +9,7 @@
#include "QtWidgets/QFontDialog/nfontdialog.hpp"
class DLL_EXPORT QFontDialogWrap : public Napi::ObjectWrap<QFontDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION
QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private:
QPointer<QFontDialog> instance;
@ -24,4 +24,6 @@ class DLL_EXPORT QFontDialogWrap : public Napi::ObjectWrap<QFontDialogWrap> {
Napi::Value selectedFont(const Napi::CallbackInfo& info);
Napi::Value setOption(const Napi::CallbackInfo& info);
Napi::Value testOption(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
};

View File

@ -23,8 +23,6 @@ class DLL_EXPORT QMessageBoxWrap : public Napi::ObjectWrap<QMessageBoxWrap> {
// wrapped methods
Napi::Value setDefaultButton(const Napi::CallbackInfo& info);
Napi::Value addButton(const Napi::CallbackInfo& info);
Napi::Value accept(const Napi::CallbackInfo& info);
Napi::Value done(const Napi::CallbackInfo& info);
};
namespace StaticQMessageBoxWrapMethods {
DLL_EXPORT Napi::Value about(const Napi::CallbackInfo& info);

View File

@ -91,6 +91,20 @@ Napi::Value QColorDialogWrap::testOption(const Napi::CallbackInfo& info) {
return Napi::Boolean::New(env, on);
}
Napi::Value QColorDialogWrap::accept(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->accept();
return env.Null();
}
Napi::Value QColorDialogWrap::done(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::TypeError::New(
env, "NodeGui: QColorDialog: done() is protected and can't be called.")
.ThrowAsJavaScriptException();
return env.Null();
}
Napi::Value StaticQColorDialogWrapMethods::customColor(
const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();

View File

@ -64,3 +64,17 @@ Napi::Value QErrorMessageWrap::showMessage(const Napi::CallbackInfo& info) {
this->instance->showMessage(message);
return env.Null();
}
Napi::Value QErrorMessageWrap::accept(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->accept();
return env.Null();
}
Napi::Value QErrorMessageWrap::done(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::TypeError::New(
env, "NodeGui: QErrorMessage: done() is protected and can't be called.")
.ThrowAsJavaScriptException();
return env.Null();
}

View File

@ -134,3 +134,19 @@ Napi::Value QFileDialogWrap::selectedFiles(const Napi::CallbackInfo& info) {
}
return fileList;
}
Napi::Value QFileDialogWrap::accept(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::TypeError::New(
env, "NodeGui: QFileDialog: accept() is protected and can't be called.")
.ThrowAsJavaScriptException();
return env.Null();
}
Napi::Value QFileDialogWrap::done(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::TypeError::New(
env, "NodeGui: QFileDialog: done() is protected and can't be called.")
.ThrowAsJavaScriptException();
return env.Null();
}

View File

@ -78,3 +78,17 @@ Napi::Value QFontDialogWrap::testOption(const Napi::CallbackInfo& info) {
static_cast<QFontDialog::FontDialogOption>(option));
return Napi::Boolean::New(env, on);
}
Napi::Value QFontDialogWrap::accept(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->accept();
return env.Null();
}
Napi::Value QFontDialogWrap::done(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::TypeError::New(
env, "NodeGui: QFontDialog: done() is protected and can't be called.")
.ThrowAsJavaScriptException();
return env.Null();
}

View File

@ -16,8 +16,6 @@ Napi::Object QMessageBoxWrap::init(Napi::Env env, Napi::Object exports) {
env, CLASSNAME,
{InstanceMethod("setDefaultButton", &QMessageBoxWrap::setDefaultButton),
InstanceMethod("addButton", &QMessageBoxWrap::addButton),
InstanceMethod("accept", &QMessageBoxWrap::accept),
InstanceMethod("done", &QMessageBoxWrap::done),
StaticMethod("about", &StaticQMessageBoxWrapMethods::about),
StaticMethod("aboutQt", &StaticQMessageBoxWrapMethods::aboutQt),
QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE(QMessageBoxWrap)});
@ -79,17 +77,6 @@ Napi::Value QMessageBoxWrap::addButton(const Napi::CallbackInfo& info) {
this->instance->addButton(btn, QMessageBox::ButtonRole(role));
return env.Null();
}
Napi::Value QMessageBoxWrap::accept(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->accept();
return env.Null();
}
Napi::Value QMessageBoxWrap::done(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Number r = info[0].As<Napi::Number>();
this->instance->done(r.Int32Value());
return env.Null();
}
Napi::Value StaticQMessageBoxWrapMethods::about(
const Napi::CallbackInfo& info) {

View File

@ -43,6 +43,12 @@ export class QDialog<Signals extends QDialogSignals = QDialogSignals> extends QW
isSizeGripEnabled(): boolean {
return this.property('sizeGripEnabled').toBool();
}
accept(): void {
this.native.accept();
}
done(r: number): void {
this.native.done(r);
}
exec(): DialogCode {
return this.native.exec();
}