ruby-qt6-rice 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -5
- data/include/bando/common.hpp +16 -19
- data/include/bando/qobject/qdbusabstractadaptor.hpp +15 -13
- data/include/bando/qobject/qdbusabstractinterface.hpp +12 -10
- data/include/bando/qobject/qitemdelegate.hpp +37 -35
- data/include/bando/qobject/qlayout.hpp +40 -38
- data/include/bando/qobject/qwebenginepage.hpp +170 -0
- data/include/bando/qobject.hpp +61 -12
- data/include/bando/qwidget/qspinbox.hpp +22 -20
- data/include/bando/qwidget.hpp +82 -20
- data/include/rice/core/api.hpp +261 -0
- data/include/rice/{rice.hpp → core/rice.hpp} +2693 -1921
- data/include/rice/{stl.hpp → core/stl.hpp} +607 -668
- data/include/rice/qt6/qdbusreply.hpp +2 -5
- data/include/rice/qt6/qenum.hpp +26 -10
- data/include/rice/qt6/qflags.hpp +18 -22
- data/include/rice/qt6/qlist.hpp +19 -41
- data/include/rice/qt6/qmap.hpp +158 -0
- data/include/rice/qt6.hpp +39 -0
- data/lib/mkmf-rice.rb +2 -2
- data/lib/mkmf-rubyqt6.rb +43 -10
- data/lib/qt6/rice/version.rb +1 -1
- metadata +8 -7
- data/lib/qt6/rspec/bando_file_parser.rb +0 -102
- data/lib/qt6/rspec/qlass_file_parser.rb +0 -255
- data/lib/qt6/rspec.rb +0 -275
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// This file is part of [RubyQt6](https://github.com/souk4711/ruby-qt6).
|
|
2
|
+
//
|
|
3
|
+
// It is licensed under the LGPLv3, included below.
|
|
4
|
+
//
|
|
5
|
+
// As a special exception to the GNU Lesser General Public License version 3
|
|
6
|
+
// ("LGPL3"), the copyright holders of this Library give you permission to
|
|
7
|
+
// convey to a third party a Combined Work that links statically or dynamically
|
|
8
|
+
// to this Library without providing any Minimal Corresponding Source or
|
|
9
|
+
// Minimal Application Code as set out in 4d or providing the installation
|
|
10
|
+
// information set out in section 4e, provided that you comply with the other
|
|
11
|
+
// provisions of LGPL3 and provided that you meet, for the Application the
|
|
12
|
+
// terms and conditions of the license(s) which apply to the Application.
|
|
13
|
+
//
|
|
14
|
+
// Except as stated in this special exception, the provisions of LGPL3 will
|
|
15
|
+
// continue to comply in full to this Library. If you modify this Library, you
|
|
16
|
+
// may apply this exception to your version of this Library, but you are not
|
|
17
|
+
// obliged to do so. If you do not wish to do so, delete this exception
|
|
18
|
+
// statement from your version. This exception does not (and cannot) modify any
|
|
19
|
+
// license terms which apply to the Application, with which you must still
|
|
20
|
+
// comply.
|
|
21
|
+
|
|
22
|
+
#ifndef BANDO_QWEBENGINEPAGE_HPP
|
|
23
|
+
#define BANDO_QWEBENGINEPAGE_HPP
|
|
24
|
+
|
|
25
|
+
#include <bando/common.hpp>
|
|
26
|
+
#include <QChildEvent>
|
|
27
|
+
#include <QEvent>
|
|
28
|
+
#include <QTimerEvent>
|
|
29
|
+
#include <QWebEnginePage>
|
|
30
|
+
|
|
31
|
+
RICE4RUBYQT6_USE_NAMESPACE
|
|
32
|
+
|
|
33
|
+
template <typename Class_T, typename... Arg_Ts> class BandoQWebEnginePage : public Class_T
|
|
34
|
+
{
|
|
35
|
+
public:
|
|
36
|
+
BandoQWebEnginePage(Arg_Ts... args) : Class_T(args...), value_(Qnil), value_address_(nullptr), mo_(nullptr) {};
|
|
37
|
+
BandoQWebEnginePage(const BandoQWebEnginePage &) = delete;
|
|
38
|
+
BandoQWebEnginePage &operator=(const BandoQWebEnginePage &) = delete;
|
|
39
|
+
BandoQWebEnginePage(BandoQWebEnginePage &&) = delete;
|
|
40
|
+
BandoQWebEnginePage &operator=(BandoQWebEnginePage &&) = delete;
|
|
41
|
+
~BandoQWebEnginePage() override { bando_finalizer<BandoQWebEnginePage>(this); };
|
|
42
|
+
|
|
43
|
+
void initializeValue(Object value, QMetaObject *mo) { bando_initializeValue<BandoQWebEnginePage>(this, value, mo); };
|
|
44
|
+
Object value() { return this->value_; };
|
|
45
|
+
|
|
46
|
+
const QMetaObject *metaObject() const override { return bando_metaObject<BandoQWebEnginePage, Class_T>(this); };
|
|
47
|
+
int qt_metacall(QMetaObject::Call call, int id, void **args) override { return bando_qt_metacall<BandoQWebEnginePage>(this, call, id, args); };
|
|
48
|
+
|
|
49
|
+
bool event(QEvent *event) override { return bando_handleQObjectEvent<BandoQWebEnginePage>(this, event); };
|
|
50
|
+
bool eventFilter(QObject *watched, QEvent *event) override { return bando_handleQObjectEventFilter<BandoQWebEnginePage>(this, watched, event); };
|
|
51
|
+
|
|
52
|
+
void childEvent(QChildEvent *event) override { bando_handleEvent<BandoQWebEnginePage>(this, event, bando_FunctionName::childEvent); };
|
|
53
|
+
void timerEvent(QTimerEvent *event) override { bando_handleEvent<BandoQWebEnginePage>(this, event, bando_FunctionName::timerEvent); };
|
|
54
|
+
QObject *sender() const { return this->Class_T::sender(); }
|
|
55
|
+
|
|
56
|
+
void triggerAction(QWebEnginePage::WebAction action, bool checked = false) override {
|
|
57
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
58
|
+
auto rb_name = Identifier("trigger_action");
|
|
59
|
+
this->value_.call(rb_name, Object(detail::to_ruby(action)), Object(detail::to_ruby(checked)));
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override {
|
|
63
|
+
auto rb_name = Identifier("accept_navigation_request");
|
|
64
|
+
if (!this->value_.respond_to(rb_name))
|
|
65
|
+
return this->Class_T::acceptNavigationRequest(url, type, isMainFrame);
|
|
66
|
+
|
|
67
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
68
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(url)), Object(detail::to_ruby(type)), Object(detail::to_ruby(isMainFrame)));
|
|
69
|
+
return detail::From_Ruby<bool>().convert(rb_return);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
QStringList chooseFiles(QWebEnginePage::FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes) override {
|
|
73
|
+
auto rb_name = Identifier("choose_files");
|
|
74
|
+
if (!this->value_.respond_to(rb_name))
|
|
75
|
+
return this->Class_T::chooseFiles(mode, oldFiles, acceptedMimeTypes);
|
|
76
|
+
|
|
77
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
78
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(mode)), Object(detail::to_ruby(oldFiles)), Object(detail::to_ruby(acceptedMimeTypes)));
|
|
79
|
+
return detail::From_Ruby<QStringList>().convert(rb_return);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
QWebEnginePage *createWindow(QWebEnginePage::WebWindowType type) override {
|
|
83
|
+
auto rb_name = Identifier("create_window");
|
|
84
|
+
if (!this->value_.respond_to(rb_name))
|
|
85
|
+
return this->Class_T::createWindow(type);
|
|
86
|
+
|
|
87
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
88
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(type)));
|
|
89
|
+
return detail::From_Ruby<QWebEnginePage *>().convert(rb_return);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
void javaScriptAlert(const QUrl &securityOrigin, const QString &msg) override {
|
|
93
|
+
auto rb_name = Identifier("java_script_alert");
|
|
94
|
+
if (!this->value_.respond_to(rb_name))
|
|
95
|
+
return this->Class_T::javaScriptAlert(securityOrigin, msg);
|
|
96
|
+
|
|
97
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
98
|
+
this->value_.call(rb_name, Object(detail::to_ruby(securityOrigin)), Object(detail::to_ruby(msg)));
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
bool javaScriptConfirm(const QUrl &securityOrigin, const QString &msg) override {
|
|
102
|
+
auto rb_name = Identifier("java_script_confirm");
|
|
103
|
+
if (!this->value_.respond_to(rb_name))
|
|
104
|
+
return this->Class_T::javaScriptConfirm(securityOrigin, msg);
|
|
105
|
+
|
|
106
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
107
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(securityOrigin)), Object(detail::to_ruby(msg)));
|
|
108
|
+
return detail::From_Ruby<bool>().convert(rb_return);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
void javaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID) override {
|
|
112
|
+
auto rb_name = Identifier("java_script_console_message");
|
|
113
|
+
if (!this->value_.respond_to(rb_name))
|
|
114
|
+
return this->Class_T::javaScriptConsoleMessage(level, message, lineNumber, sourceID);
|
|
115
|
+
|
|
116
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
117
|
+
this->value_.call(rb_name, Object(detail::to_ruby(level)), Object(detail::to_ruby(message)), Object(detail::to_ruby(lineNumber)), Object(detail::to_ruby(sourceID)));
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
bool javaScriptPrompt(const QUrl &securityOrigin, const QString &msg, const QString &defaultValue, QString *result) override {
|
|
121
|
+
auto rb_name = Identifier("java_script_prompt");
|
|
122
|
+
if (!this->value_.respond_to(rb_name))
|
|
123
|
+
return this->Class_T::javaScriptPrompt(securityOrigin, msg, defaultValue, result);
|
|
124
|
+
|
|
125
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
126
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(securityOrigin)), Object(detail::to_ruby(msg)), Object(detail::to_ruby(defaultValue)), Object(detail::to_ruby(result)));
|
|
127
|
+
return detail::From_Ruby<bool>().convert(rb_return);
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
public:
|
|
131
|
+
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
132
|
+
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
133
|
+
|
|
134
|
+
void Class_T_handleEvent(bando_FunctionName name, QEvent *event) {
|
|
135
|
+
switch (name)
|
|
136
|
+
{
|
|
137
|
+
case bando_FunctionName::childEvent: return this->Class_T::childEvent(static_cast<QChildEvent *>(event));
|
|
138
|
+
case bando_FunctionName::timerEvent: return this->Class_T::timerEvent(static_cast<QTimerEvent *>(event));
|
|
139
|
+
default: Q_UNREACHABLE(); break;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
public:
|
|
144
|
+
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
145
|
+
|
|
146
|
+
Object value_;
|
|
147
|
+
VALUE *value_address_;
|
|
148
|
+
|
|
149
|
+
QMetaObject *mo_;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
template <typename BC_T, typename C_T>
|
|
153
|
+
Data_Type<BC_T> define_bando_qwebenginepage_under(Module module, char const *name)
|
|
154
|
+
{
|
|
155
|
+
Data_Type<BC_T> bando_qlass =
|
|
156
|
+
define_class_under<BC_T, C_T>(module, name)
|
|
157
|
+
.define_method("_initialize_ruby_value", &BC_T::initializeValue, Arg("value"), Arg("mo"))
|
|
158
|
+
.define_method("_ruby_value", &BC_T::value)
|
|
159
|
+
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
160
|
+
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
161
|
+
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
162
|
+
.define_method("sender", &BC_T::sender);
|
|
163
|
+
|
|
164
|
+
bando_qlass
|
|
165
|
+
.define_method("trigger_action", [](BC_T *self, QWebEnginePage::WebAction action, bool checked) -> void { return self->C_T::triggerAction(action, checked); }, Arg("action"), Arg("checked") = static_cast<bool>(false));
|
|
166
|
+
|
|
167
|
+
return bando_qlass;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
#endif
|
data/include/bando/qobject.hpp
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
#include <QEvent>
|
|
28
28
|
#include <QTimerEvent>
|
|
29
29
|
|
|
30
|
+
RICE4RUBYQT6_USE_NAMESPACE
|
|
31
|
+
|
|
30
32
|
template <typename Class_T, typename... Arg_Ts> class BandoQObject : public Class_T
|
|
31
33
|
{
|
|
32
34
|
public:
|
|
@@ -37,8 +39,8 @@ template <typename Class_T, typename... Arg_Ts> class BandoQObject : public Clas
|
|
|
37
39
|
BandoQObject &operator=(BandoQObject &&) = delete;
|
|
38
40
|
~BandoQObject() override { bando_finalizer<BandoQObject>(this); };
|
|
39
41
|
|
|
40
|
-
void initializeValue(
|
|
41
|
-
|
|
42
|
+
void initializeValue(Object value, QMetaObject *mo) { bando_initializeValue<BandoQObject>(this, value, mo); };
|
|
43
|
+
Object value() { return this->value_; };
|
|
42
44
|
|
|
43
45
|
const QMetaObject *metaObject() const override { return bando_metaObject<BandoQObject, Class_T>(this); };
|
|
44
46
|
int qt_metacall(QMetaObject::Call call, int id, void **args) override { return bando_qt_metacall<BandoQObject>(this, call, id, args); };
|
|
@@ -66,23 +68,70 @@ template <typename Class_T, typename... Arg_Ts> class BandoQObject : public Clas
|
|
|
66
68
|
public:
|
|
67
69
|
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
Object value_;
|
|
70
72
|
VALUE *value_address_;
|
|
71
73
|
|
|
72
74
|
QMetaObject *mo_;
|
|
73
75
|
};
|
|
74
76
|
|
|
77
|
+
template <typename BC_T>
|
|
78
|
+
VALUE bando_qobject_initialize_ruby_value(VALUE self, VALUE value, VALUE mo)
|
|
79
|
+
{
|
|
80
|
+
auto bando_qobject = detail::From_Ruby<BC_T *>().convert(self);
|
|
81
|
+
bando_qobject->initializeValue(Object(value), detail::From_Ruby<QMetaObject *>().convert(mo));
|
|
82
|
+
return Qnil;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
template <typename BC_T>
|
|
86
|
+
VALUE bando_qobject_ruby_value(VALUE self)
|
|
87
|
+
{
|
|
88
|
+
auto bando_qobject = detail::From_Ruby<BC_T *>().convert(self);
|
|
89
|
+
auto rb_return = bando_qobject->value();
|
|
90
|
+
return rb_return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
template <typename BC_T>
|
|
94
|
+
VALUE bando_qobject_ruby_value_handle_event(VALUE self, VALUE name, VALUE event)
|
|
95
|
+
{
|
|
96
|
+
auto bando_qobject = detail::From_Ruby<BC_T *>().convert(self);
|
|
97
|
+
bando_qobject->Class_T_handleEvent(detail::From_Ruby<bando_FunctionName>().convert(name), detail::From_Ruby<QEvent *>().convert(event));
|
|
98
|
+
return Qnil;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
template <typename BC_T>
|
|
102
|
+
VALUE bando_qobject_event(VALUE self, VALUE event)
|
|
103
|
+
{
|
|
104
|
+
auto bando_qobject = detail::From_Ruby<BC_T *>().convert(self);
|
|
105
|
+
auto rb_return = bando_qobject->Class_T_handleQObjectEvent(detail::From_Ruby<QEvent *>().convert(event));
|
|
106
|
+
return detail::To_Ruby<bool>().convert(rb_return);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
template <typename BC_T>
|
|
110
|
+
VALUE bando_qobject_event_filter(VALUE self, VALUE watched, VALUE event)
|
|
111
|
+
{
|
|
112
|
+
auto bando_qobject = detail::From_Ruby<BC_T *>().convert(self);
|
|
113
|
+
auto rb_return = bando_qobject->Class_T_handleQObjectEventFilter(detail::From_Ruby<QObject *>().convert(watched), detail::From_Ruby<QEvent *>().convert(event));
|
|
114
|
+
return detail::To_Ruby<bool>().convert(rb_return);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
template <typename BC_T>
|
|
118
|
+
VALUE bando_qobject_sender(VALUE self)
|
|
119
|
+
{
|
|
120
|
+
auto bando_qobject = detail::From_Ruby<BC_T *>().convert(self);
|
|
121
|
+
auto rb_return = bando_qobject->sender();
|
|
122
|
+
return detail::To_Ruby<QObject *>().convert(rb_return);
|
|
123
|
+
}
|
|
124
|
+
|
|
75
125
|
template <typename BC_T, typename C_T>
|
|
76
|
-
|
|
126
|
+
Data_Type<BC_T> define_bando_qobject_under(Module module, char const *name)
|
|
77
127
|
{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
.define_method("sender", &BC_T::sender);
|
|
128
|
+
Data_Type<BC_T> bando_qlass = define_class_under<BC_T, C_T>(module, name);
|
|
129
|
+
detail::protect(rb_define_method, bando_qlass, "_initialize_ruby_value", (RUBY_METHOD_FUNC)bando_qobject_initialize_ruby_value<BC_T>, 2);
|
|
130
|
+
detail::protect(rb_define_method, bando_qlass, "_ruby_value", (RUBY_METHOD_FUNC)bando_qobject_ruby_value<BC_T>, 0);
|
|
131
|
+
detail::protect(rb_define_method, bando_qlass, "_ruby_value_handle_event", (RUBY_METHOD_FUNC)bando_qobject_ruby_value_handle_event<BC_T>, 2);
|
|
132
|
+
detail::protect(rb_define_method, bando_qlass, "_event", (RUBY_METHOD_FUNC)bando_qobject_event<BC_T>, 1);
|
|
133
|
+
detail::protect(rb_define_method, bando_qlass, "_event_filter", (RUBY_METHOD_FUNC)bando_qobject_event_filter<BC_T>, 2);
|
|
134
|
+
detail::protect(rb_define_method, bando_qlass, "sender", (RUBY_METHOD_FUNC)bando_qobject_sender<BC_T>, 0);
|
|
86
135
|
return bando_qlass;
|
|
87
136
|
}
|
|
88
137
|
|
|
@@ -52,6 +52,8 @@
|
|
|
52
52
|
#include <QTimerEvent>
|
|
53
53
|
#include <QWheelEvent>
|
|
54
54
|
|
|
55
|
+
RICE4RUBYQT6_USE_NAMESPACE
|
|
56
|
+
|
|
55
57
|
template <typename Class_T, typename... Arg_Ts> class BandoQSpinBox : public Class_T
|
|
56
58
|
{
|
|
57
59
|
public:
|
|
@@ -62,8 +64,8 @@ template <typename Class_T, typename... Arg_Ts> class BandoQSpinBox : public Cla
|
|
|
62
64
|
BandoQSpinBox &operator=(BandoQSpinBox &&) = delete;
|
|
63
65
|
~BandoQSpinBox() override { bando_finalizer<BandoQSpinBox>(this); };
|
|
64
66
|
|
|
65
|
-
void initializeValue(
|
|
66
|
-
|
|
67
|
+
void initializeValue(Object value, QMetaObject *mo) { bando_initializeValue<BandoQSpinBox>(this, value, mo); };
|
|
68
|
+
Object value() { return this->value_; };
|
|
67
69
|
|
|
68
70
|
const QMetaObject *metaObject() const override { return bando_metaObject<BandoQSpinBox, Class_T>(this); };
|
|
69
71
|
int qt_metacall(QMetaObject::Call call, int id, void **args) override { return bando_qt_metacall<BandoQSpinBox>(this, call, id, args); };
|
|
@@ -104,36 +106,36 @@ template <typename Class_T, typename... Arg_Ts> class BandoQSpinBox : public Cla
|
|
|
104
106
|
|
|
105
107
|
QSize minimumSizeHint() const override {
|
|
106
108
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
107
|
-
auto rb_name =
|
|
109
|
+
auto rb_name = Identifier("minimum_size_hint");
|
|
108
110
|
auto rb_return = this->value_.call(rb_name);
|
|
109
|
-
return
|
|
111
|
+
return detail::From_Ruby<QSize>().convert(rb_return);
|
|
110
112
|
};
|
|
111
113
|
|
|
112
114
|
QSize sizeHint() const override {
|
|
113
115
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
114
|
-
auto rb_name =
|
|
116
|
+
auto rb_name = Identifier("size_hint");
|
|
115
117
|
auto rb_return = this->value_.call(rb_name);
|
|
116
|
-
return
|
|
118
|
+
return detail::From_Ruby<QSize>().convert(rb_return);
|
|
117
119
|
};
|
|
118
120
|
|
|
119
121
|
QString textFromValue(int value) const override {
|
|
120
|
-
auto rb_name =
|
|
122
|
+
auto rb_name = Identifier("text_from_value");
|
|
121
123
|
if (!this->value_.respond_to(rb_name))
|
|
122
124
|
return this->Class_T::textFromValue(value);
|
|
123
125
|
|
|
124
126
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
125
|
-
auto rb_return = this->value_.call(rb_name,
|
|
126
|
-
return
|
|
127
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(value)));
|
|
128
|
+
return detail::From_Ruby<QString>().convert(rb_return);
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
int valueFromText(const QString &text) const override {
|
|
130
|
-
auto rb_name =
|
|
132
|
+
auto rb_name = Identifier("value_from_text");
|
|
131
133
|
if (!this->value_.respond_to(rb_name))
|
|
132
134
|
return this->Class_T::valueFromText(text);
|
|
133
135
|
|
|
134
136
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
135
|
-
auto rb_return = this->value_.call(rb_name,
|
|
136
|
-
return
|
|
137
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(text)));
|
|
138
|
+
return detail::From_Ruby<int>().convert(rb_return);
|
|
137
139
|
}
|
|
138
140
|
|
|
139
141
|
public:
|
|
@@ -179,22 +181,22 @@ template <typename Class_T, typename... Arg_Ts> class BandoQSpinBox : public Cla
|
|
|
179
181
|
public:
|
|
180
182
|
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
181
183
|
|
|
182
|
-
|
|
184
|
+
Object value_;
|
|
183
185
|
VALUE *value_address_;
|
|
184
186
|
|
|
185
187
|
QMetaObject *mo_;
|
|
186
188
|
};
|
|
187
189
|
|
|
188
190
|
template <typename BC_T, typename C_T>
|
|
189
|
-
|
|
191
|
+
Data_Type<BC_T> define_bando_qspinbox_under(Module module, char const *name)
|
|
190
192
|
{
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
.define_method("_initialize_ruby_value", &BC_T::initializeValue,
|
|
193
|
+
Data_Type<BC_T> bando_qlass =
|
|
194
|
+
define_class_under<BC_T, C_T>(module, name)
|
|
195
|
+
.define_method("_initialize_ruby_value", &BC_T::initializeValue, Arg("value"), Arg("mo"))
|
|
194
196
|
.define_method("_ruby_value", &BC_T::value)
|
|
195
|
-
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent,
|
|
196
|
-
.define_method("_event", &BC_T::Class_T_handleQObjectEvent,
|
|
197
|
-
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter,
|
|
197
|
+
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
198
|
+
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
199
|
+
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
198
200
|
.define_method("sender", &BC_T::sender);
|
|
199
201
|
|
|
200
202
|
bando_qlass
|
data/include/bando/qwidget.hpp
CHANGED
|
@@ -52,6 +52,8 @@
|
|
|
52
52
|
#include <QTimerEvent>
|
|
53
53
|
#include <QWheelEvent>
|
|
54
54
|
|
|
55
|
+
RICE4RUBYQT6_USE_NAMESPACE
|
|
56
|
+
|
|
55
57
|
template <typename Class_T, typename... Arg_Ts> class BandoQWidget : public Class_T
|
|
56
58
|
{
|
|
57
59
|
public:
|
|
@@ -62,8 +64,8 @@ template <typename Class_T, typename... Arg_Ts> class BandoQWidget : public Clas
|
|
|
62
64
|
BandoQWidget &operator=(BandoQWidget &&) = delete;
|
|
63
65
|
~BandoQWidget() override { bando_finalizer<BandoQWidget>(this); };
|
|
64
66
|
|
|
65
|
-
void initializeValue(
|
|
66
|
-
|
|
67
|
+
void initializeValue(Object value, QMetaObject *mo) { bando_initializeValue<BandoQWidget>(this, value, mo); };
|
|
68
|
+
Object value() { return this->value_; };
|
|
67
69
|
|
|
68
70
|
const QMetaObject *metaObject() const override { return bando_metaObject<BandoQWidget, Class_T>(this); };
|
|
69
71
|
int qt_metacall(QMetaObject::Call call, int id, void **args) override { return bando_qt_metacall<BandoQWidget>(this, call, id, args); };
|
|
@@ -104,16 +106,16 @@ template <typename Class_T, typename... Arg_Ts> class BandoQWidget : public Clas
|
|
|
104
106
|
|
|
105
107
|
QSize minimumSizeHint() const override {
|
|
106
108
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
107
|
-
auto rb_name =
|
|
109
|
+
auto rb_name = Identifier("minimum_size_hint");
|
|
108
110
|
auto rb_return = this->value_.call(rb_name);
|
|
109
|
-
return
|
|
111
|
+
return detail::From_Ruby<QSize>().convert(rb_return);
|
|
110
112
|
};
|
|
111
113
|
|
|
112
114
|
QSize sizeHint() const override {
|
|
113
115
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
114
|
-
auto rb_name =
|
|
116
|
+
auto rb_name = Identifier("size_hint");
|
|
115
117
|
auto rb_return = this->value_.call(rb_name);
|
|
116
|
-
return
|
|
118
|
+
return detail::From_Ruby<QSize>().convert(rb_return);
|
|
117
119
|
};
|
|
118
120
|
|
|
119
121
|
public:
|
|
@@ -159,28 +161,88 @@ template <typename Class_T, typename... Arg_Ts> class BandoQWidget : public Clas
|
|
|
159
161
|
public:
|
|
160
162
|
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
161
163
|
|
|
162
|
-
|
|
164
|
+
Object value_;
|
|
163
165
|
VALUE *value_address_;
|
|
164
166
|
|
|
165
167
|
QMetaObject *mo_;
|
|
166
168
|
};
|
|
167
169
|
|
|
170
|
+
template <typename BC_T>
|
|
171
|
+
VALUE bando_qwidget_initialize_ruby_value(VALUE self, VALUE value, VALUE mo)
|
|
172
|
+
{
|
|
173
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
174
|
+
bando_qwidget->initializeValue(Object(value), detail::From_Ruby<QMetaObject *>().convert(mo));
|
|
175
|
+
return Qnil;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
template <typename BC_T>
|
|
179
|
+
VALUE bando_qwidget_ruby_value(VALUE self)
|
|
180
|
+
{
|
|
181
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
182
|
+
auto rb_return = bando_qwidget->value();
|
|
183
|
+
return rb_return;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
template <typename BC_T>
|
|
187
|
+
VALUE bando_qwidget_ruby_value_handle_event(VALUE self, VALUE name, VALUE event)
|
|
188
|
+
{
|
|
189
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
190
|
+
bando_qwidget->Class_T_handleEvent(detail::From_Ruby<bando_FunctionName>().convert(name), detail::From_Ruby<QEvent *>().convert(event));
|
|
191
|
+
return Qnil;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
template <typename BC_T>
|
|
195
|
+
VALUE bando_qwidget_event(VALUE self, VALUE event)
|
|
196
|
+
{
|
|
197
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
198
|
+
auto rb_return = bando_qwidget->Class_T_handleQObjectEvent(detail::From_Ruby<QEvent *>().convert(event));
|
|
199
|
+
return detail::To_Ruby<bool>().convert(rb_return);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
template <typename BC_T>
|
|
203
|
+
VALUE bando_qwidget_event_filter(VALUE self, VALUE watched, VALUE event)
|
|
204
|
+
{
|
|
205
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
206
|
+
auto rb_return = bando_qwidget->Class_T_handleQObjectEventFilter(detail::From_Ruby<QObject *>().convert(watched), detail::From_Ruby<QEvent *>().convert(event));
|
|
207
|
+
return detail::To_Ruby<bool>().convert(rb_return);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
template <typename BC_T>
|
|
211
|
+
VALUE bando_qwidget_sender(VALUE self)
|
|
212
|
+
{
|
|
213
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
214
|
+
auto rb_return = bando_qwidget->sender();
|
|
215
|
+
return detail::To_Ruby<QObject *>().convert(rb_return);
|
|
216
|
+
}
|
|
217
|
+
|
|
168
218
|
template <typename BC_T, typename C_T>
|
|
169
|
-
|
|
219
|
+
VALUE bando_qwidget_minimum_size_hint(VALUE self)
|
|
170
220
|
{
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Rice::Arg("name"), Rice::Arg("event"))
|
|
176
|
-
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Rice::Arg("event"))
|
|
177
|
-
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Rice::Arg("watched"), Rice::Arg("event"))
|
|
178
|
-
.define_method("sender", &BC_T::sender);
|
|
179
|
-
|
|
180
|
-
bando_qlass
|
|
181
|
-
.define_method("minimum_size_hint", [](BC_T *self) -> QSize { return self->C_T::minimumSizeHint(); })
|
|
182
|
-
.define_method("size_hint", [](BC_T *self) -> QSize { return self->C_T::sizeHint(); });
|
|
221
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
222
|
+
auto rb_return = bando_qwidget->C_T::minimumSizeHint();
|
|
223
|
+
return detail::To_Ruby<QSize>().convert(rb_return);
|
|
224
|
+
}
|
|
183
225
|
|
|
226
|
+
template <typename BC_T, typename C_T>
|
|
227
|
+
VALUE bando_qwidget_size_hint(VALUE self)
|
|
228
|
+
{
|
|
229
|
+
auto bando_qwidget = detail::From_Ruby<BC_T *>().convert(self);
|
|
230
|
+
auto rb_return = bando_qwidget->C_T::sizeHint();
|
|
231
|
+
return detail::To_Ruby<QSize>().convert(rb_return);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
template <typename BC_T, typename C_T>
|
|
235
|
+
Data_Type<BC_T> define_bando_qwidget_under(Module module, char const *name)
|
|
236
|
+
{
|
|
237
|
+
Data_Type<BC_T> bando_qlass = define_class_under<BC_T, C_T>(module, name);
|
|
238
|
+
detail::protect(rb_define_method, bando_qlass, "_initialize_ruby_value", (RUBY_METHOD_FUNC)bando_qwidget_initialize_ruby_value<BC_T>, 2);
|
|
239
|
+
detail::protect(rb_define_method, bando_qlass, "_ruby_value", (RUBY_METHOD_FUNC)bando_qwidget_ruby_value<BC_T>, 0);
|
|
240
|
+
detail::protect(rb_define_method, bando_qlass, "_ruby_value_handle_event", (RUBY_METHOD_FUNC)bando_qwidget_ruby_value_handle_event<BC_T>, 2);
|
|
241
|
+
detail::protect(rb_define_method, bando_qlass, "_event", (RUBY_METHOD_FUNC)bando_qwidget_event<BC_T>, 1);
|
|
242
|
+
detail::protect(rb_define_method, bando_qlass, "_event_filter", (RUBY_METHOD_FUNC)bando_qwidget_event_filter<BC_T>, 2);
|
|
243
|
+
detail::protect(rb_define_method, bando_qlass, "sender", (RUBY_METHOD_FUNC)bando_qwidget_sender<BC_T>, 0);
|
|
244
|
+
detail::protect(rb_define_method, bando_qlass, "minimum_size_hint", (RUBY_METHOD_FUNC)bando_qwidget_minimum_size_hint<BC_T, C_T>, 0);
|
|
245
|
+
detail::protect(rb_define_method, bando_qlass, "size_hint", (RUBY_METHOD_FUNC)bando_qwidget_size_hint<BC_T, C_T>, 0);
|
|
184
246
|
return bando_qlass;
|
|
185
247
|
}
|
|
186
248
|
|