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.
@@ -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
@@ -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(Rice::Object value, QMetaObject *mo) { bando_initializeValue<BandoQObject>(this, value, mo); };
41
- Rice::Object value() { return this->value_; };
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
- Rice::Object value_;
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
- Rice::Data_Type<BC_T> define_bando_qobject_under(Rice::Module module, char const *name)
126
+ Data_Type<BC_T> define_bando_qobject_under(Module module, char const *name)
77
127
  {
78
- Rice::Data_Type<BC_T> bando_qlass =
79
- Rice::define_class_under<BC_T, C_T>(module, name)
80
- .define_method("_initialize_ruby_value", &BC_T::initializeValue, Rice::Arg("value"), Rice::Arg("mo"))
81
- .define_method("_ruby_value", &BC_T::value)
82
- .define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Rice::Arg("name"), Rice::Arg("event"))
83
- .define_method("_event", &BC_T::Class_T_handleQObjectEvent, Rice::Arg("event"))
84
- .define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Rice::Arg("watched"), Rice::Arg("event"))
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(Rice::Object value, QMetaObject *mo) { bando_initializeValue<BandoQSpinBox>(this, value, mo); };
66
- Rice::Object value() { return this->value_; };
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 = Rice::Identifier("minimum_size_hint");
109
+ auto rb_name = Identifier("minimum_size_hint");
108
110
  auto rb_return = this->value_.call(rb_name);
109
- return Rice::detail::From_Ruby<QSize>().convert(rb_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 = Rice::Identifier("size_hint");
116
+ auto rb_name = Identifier("size_hint");
115
117
  auto rb_return = this->value_.call(rb_name);
116
- return Rice::detail::From_Ruby<QSize>().convert(rb_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 = Rice::Identifier("text_from_value");
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, Rice::Object(Rice::detail::to_ruby(value)));
126
- return Rice::detail::From_Ruby<QString>().convert(rb_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 = Rice::Identifier("value_from_text");
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, Rice::Object(Rice::detail::to_ruby(text)));
136
- return Rice::detail::From_Ruby<int>().convert(rb_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
- Rice::Object value_;
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
- Rice::Data_Type<BC_T> define_bando_qspinbox_under(Rice::Module module, char const *name)
191
+ Data_Type<BC_T> define_bando_qspinbox_under(Module module, char const *name)
190
192
  {
191
- Rice::Data_Type<BC_T> bando_qlass =
192
- Rice::define_class_under<BC_T, C_T>(module, name)
193
- .define_method("_initialize_ruby_value", &BC_T::initializeValue, Rice::Arg("value"), Rice::Arg("mo"))
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, Rice::Arg("name"), Rice::Arg("event"))
196
- .define_method("_event", &BC_T::Class_T_handleQObjectEvent, Rice::Arg("event"))
197
- .define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Rice::Arg("watched"), Rice::Arg("event"))
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
@@ -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(Rice::Object value, QMetaObject *mo) { bando_initializeValue<BandoQWidget>(this, value, mo); };
66
- Rice::Object value() { return this->value_; };
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 = Rice::Identifier("minimum_size_hint");
109
+ auto rb_name = Identifier("minimum_size_hint");
108
110
  auto rb_return = this->value_.call(rb_name);
109
- return Rice::detail::From_Ruby<QSize>().convert(rb_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 = Rice::Identifier("size_hint");
116
+ auto rb_name = Identifier("size_hint");
115
117
  auto rb_return = this->value_.call(rb_name);
116
- return Rice::detail::From_Ruby<QSize>().convert(rb_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
- Rice::Object value_;
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
- Rice::Data_Type<BC_T> define_bando_qwidget_under(Rice::Module module, char const *name)
219
+ VALUE bando_qwidget_minimum_size_hint(VALUE self)
170
220
  {
171
- Rice::Data_Type<BC_T> bando_qlass =
172
- Rice::define_class_under<BC_T, C_T>(module, name)
173
- .define_method("_initialize_ruby_value", &BC_T::initializeValue, Rice::Arg("value"), Rice::Arg("mo"))
174
- .define_method("_ruby_value", &BC_T::value)
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