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

View File

@ -10,39 +10,55 @@
This macro adds common QDialog exported methods This macro adds common QDialog exported methods
The exported methods are taken into this macro to avoid writing them in each The exported methods are taken into this macro to avoid writing them in each
and every widget we export. and every widget we export.
*/ */
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
#define QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \
\
QWIDGET_WRAPPED_METHODS_DECLARATION \
\
Napi::Value setResult(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
Napi::Number result = info[0].As<Napi::Number>(); \
this->instance->setResult(result.Int32Value()); \
return env.Null(); \
} \
Napi::Value result(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int value = this->instance->result(); \
return Napi::Value::From(env, value); \
} \
Napi::Value exec(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int value = static_cast<int>(this->instance->exec()); \
return Napi::Number::From(env, value); \
} \
Napi::Value open(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->open(); \
return env.Null(); \
} \
Napi::Value reject(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->reject(); \
return env.Null(); \
}
#endif
#ifndef QDIALOG_WRAPPED_METHODS_DECLARATION #ifndef QDIALOG_WRAPPED_METHODS_DECLARATION
#define QDIALOG_WRAPPED_METHODS_DECLARATION \ #define QDIALOG_WRAPPED_METHODS_DECLARATION \
\ QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE \
QWIDGET_WRAPPED_METHODS_DECLARATION \ Napi::Value accept(const Napi::CallbackInfo& info) { \
\ Napi::Env env = info.Env(); \
Napi::Value setResult(const Napi::CallbackInfo& info) { \ this->instance->accept(); \
Napi::Env env = info.Env(); \ return env.Null(); \
Napi::Number result = info[0].As<Napi::Number>(); \ } \
this->instance->setResult(result.Int32Value()); \ Napi::Value done(const Napi::CallbackInfo& info) { \
return env.Null(); \ Napi::Env env = info.Env(); \
} \ int r = info[0].As<Napi::Number>().Int32Value(); \
Napi::Value result(const Napi::CallbackInfo& info) { \ this->instance->done(r); \
Napi::Env env = info.Env(); \ return env.Null(); \
int value = this->instance->result(); \
return Napi::Value::From(env, value); \
} \
Napi::Value exec(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
int value = static_cast<int>(this->instance->exec()); \
return Napi::Number::From(env, value); \
} \
Napi::Value open(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->open(); \
return env.Null(); \
} \
Napi::Value reject(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
this->instance->reject(); \
return env.Null(); \
} }
#endif #endif
@ -54,7 +70,9 @@
InstanceMethod("setResult", &DialogWrapName::setResult), \ InstanceMethod("setResult", &DialogWrapName::setResult), \
InstanceMethod("exec", &DialogWrapName::exec), \ InstanceMethod("exec", &DialogWrapName::exec), \
InstanceMethod("open", &DialogWrapName::open), \ 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 #endif // QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE

View File

@ -10,7 +10,7 @@
class DLL_EXPORT QErrorMessageWrap class DLL_EXPORT QErrorMessageWrap
: public Napi::ObjectWrap<QErrorMessageWrap> { : public Napi::ObjectWrap<QErrorMessageWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private: private:
QPointer<QErrorMessage> instance; QPointer<QErrorMessage> instance;
@ -23,4 +23,6 @@ class DLL_EXPORT QErrorMessageWrap
static Napi::FunctionReference constructor; static Napi::FunctionReference constructor;
// wrapped methods // wrapped methods
Napi::Value showMessage(const Napi::CallbackInfo& info); 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" #include "QtWidgets/QFileDialog/nfiledialog.hpp"
class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> { class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private: private:
QPointer<QFileDialog> instance; QPointer<QFileDialog> instance;
@ -28,4 +28,6 @@ class DLL_EXPORT QFileDialogWrap : public Napi::ObjectWrap<QFileDialogWrap> {
Napi::Value setOption(const Napi::CallbackInfo& info); Napi::Value setOption(const Napi::CallbackInfo& info);
Napi::Value setNameFilter(const Napi::CallbackInfo& info); Napi::Value setNameFilter(const Napi::CallbackInfo& info);
Napi::Value selectedFiles(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" #include "QtWidgets/QFontDialog/nfontdialog.hpp"
class DLL_EXPORT QFontDialogWrap : public Napi::ObjectWrap<QFontDialogWrap> { class DLL_EXPORT QFontDialogWrap : public Napi::ObjectWrap<QFontDialogWrap> {
QDIALOG_WRAPPED_METHODS_DECLARATION QDIALOG_WRAPPED_METHODS_DECLARATION_NO_ACCEPT_OR_DONE
private: private:
QPointer<QFontDialog> instance; QPointer<QFontDialog> instance;
@ -24,4 +24,6 @@ class DLL_EXPORT QFontDialogWrap : public Napi::ObjectWrap<QFontDialogWrap> {
Napi::Value selectedFont(const Napi::CallbackInfo& info); Napi::Value selectedFont(const Napi::CallbackInfo& info);
Napi::Value setOption(const Napi::CallbackInfo& info); Napi::Value setOption(const Napi::CallbackInfo& info);
Napi::Value testOption(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 // wrapped methods
Napi::Value setDefaultButton(const Napi::CallbackInfo& info); Napi::Value setDefaultButton(const Napi::CallbackInfo& info);
Napi::Value addButton(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 { namespace StaticQMessageBoxWrapMethods {
DLL_EXPORT Napi::Value about(const Napi::CallbackInfo& info); 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); 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( Napi::Value StaticQColorDialogWrapMethods::customColor(
const Napi::CallbackInfo& info) { const Napi::CallbackInfo& info) {
Napi::Env env = info.Env(); Napi::Env env = info.Env();

View File

@ -64,3 +64,17 @@ Napi::Value QErrorMessageWrap::showMessage(const Napi::CallbackInfo& info) {
this->instance->showMessage(message); this->instance->showMessage(message);
return env.Null(); 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; 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)); static_cast<QFontDialog::FontDialogOption>(option));
return Napi::Boolean::New(env, on); 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, env, CLASSNAME,
{InstanceMethod("setDefaultButton", &QMessageBoxWrap::setDefaultButton), {InstanceMethod("setDefaultButton", &QMessageBoxWrap::setDefaultButton),
InstanceMethod("addButton", &QMessageBoxWrap::addButton), InstanceMethod("addButton", &QMessageBoxWrap::addButton),
InstanceMethod("accept", &QMessageBoxWrap::accept),
InstanceMethod("done", &QMessageBoxWrap::done),
StaticMethod("about", &StaticQMessageBoxWrapMethods::about), StaticMethod("about", &StaticQMessageBoxWrapMethods::about),
StaticMethod("aboutQt", &StaticQMessageBoxWrapMethods::aboutQt), StaticMethod("aboutQt", &StaticQMessageBoxWrapMethods::aboutQt),
QDIALOG_WRAPPED_METHODS_EXPORT_DEFINE(QMessageBoxWrap)}); 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)); this->instance->addButton(btn, QMessageBox::ButtonRole(role));
return env.Null(); 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( Napi::Value StaticQMessageBoxWrapMethods::about(
const Napi::CallbackInfo& info) { const Napi::CallbackInfo& info) {

View File

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