ruby-qt6-rice 2.1.0 → 6.1.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 -1
- data/Rakefile +12 -1
- data/ext/qt6/rice/extconf.rb +5 -0
- data/ext/qt6/rice/rice-rb.cpp +10 -0
- data/ext/qt6/rice/rice-rb.hpp +3 -0
- data/include/bando/common.hpp +2 -1
- data/include/bando/qobject/qdbusabstractadaptor.hpp +13 -12
- data/include/bando/qobject/qdbusabstractinterface.hpp +2 -2
- data/include/bando/qobject/qitemdelegate.hpp +25 -24
- data/include/bando/qobject/qlayout.hpp +32 -31
- data/include/bando/qobject/qsortfilterproxymodel.hpp +132 -0
- data/include/bando/qobject/qwebenginepage.hpp +61 -46
- data/include/bando/qobject.hpp +1 -1
- data/include/bando/qwidget/qspinbox.hpp +27 -22
- data/include/bando/qwidget.hpp +1 -1
- data/include/rice/core/rice.hpp +1711 -1314
- data/include/rice/core/stl.hpp +562 -82
- data/include/rice/cxx/asserts.hpp +31 -0
- data/include/rice/cxx/concepts.hpp +31 -0
- data/include/rice/qt6/preludes/libqt6core.hpp +192 -0
- data/include/rice/qt6/preludes/libqt6gui.hpp +176 -0
- data/include/rice/qt6/preludes/libqt6multimedia.hpp +33 -0
- data/include/rice/qt6/preludes/libqt6qml.hpp +33 -0
- data/include/rice/qt6/preludes/libqt6quick.hpp +30 -0
- data/include/rice/qt6/preludes/libqt6webenginecore.hpp +30 -0
- data/include/rice/qt6/preludes/libqt6widgets.hpp +35 -0
- data/include/rice/qt6/preludes/qlass.hpp +63 -0
- data/include/rice/qt6/preludes/registries.hpp +52 -0
- data/include/rice/qt6/preludes.hpp +28 -0
- data/include/rice/qt6/qdbusreply.hpp +3 -3
- data/include/rice/qt6/qenum.hpp +1 -1
- data/include/rice/qt6/qflags.hpp +1 -1
- data/include/rice/qt6/qlist.hpp +17 -20
- data/include/rice/qt6/qmap.hpp +14 -11
- data/include/rice/qt6.hpp +3 -0
- data/lib/mkmf-rubyqt6.rb +24 -7
- data/lib/qt6/rice/version.rb +1 -1
- data/lib/qt6/rice.rb +1 -0
- metadata +19 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8ab2684a1d0400d98bffa6d22d6432a55684dd88517c9456285b147612ea77e6
|
|
4
|
+
data.tar.gz: 4ff95b5758a1b7478c2efe357f0832e8d2748960b5ffdc42138334578c2926b0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a72c624656b2fa1f5484d77cb67d88ef394987d3de285b044e25048586f140748684356a0f2bcfd18c220c85c50a9802bf1a04a0f993ee91c7bade6f3583803d
|
|
7
|
+
data.tar.gz: '08aead01b9205ad115a1cff1e4371fd98ebfbba934ef229f07b6881265bd843b2876161d2b8a19f492112a14c8835fda3d090ef85d2e1ac9231f0be227b196ea'
|
data/.rubocop.yml
CHANGED
data/Rakefile
CHANGED
|
@@ -3,10 +3,21 @@
|
|
|
3
3
|
require "bundler/gem_tasks"
|
|
4
4
|
GEMSPEC = Gem::Specification.load("rice.gemspec")
|
|
5
5
|
|
|
6
|
+
require "rake/extensiontask"
|
|
7
|
+
Rake::ExtensionTask.new("rice", GEMSPEC) do |ext|
|
|
8
|
+
ext.ext_dir = "ext/qt6/rice"
|
|
9
|
+
ext.lib_dir = "lib/qt6/rice"
|
|
10
|
+
end
|
|
11
|
+
Rake::Task["rake:compile"].enhance do
|
|
12
|
+
mkdir_p Pathname.new(GEMSPEC.gem_build_complete_path).parent
|
|
13
|
+
touch GEMSPEC.gem_build_complete_path
|
|
14
|
+
end
|
|
15
|
+
|
|
6
16
|
require "rubocop/rake_task"
|
|
7
17
|
RuboCop::RakeTask.new
|
|
8
18
|
|
|
9
19
|
require "rspec/core/rake_task"
|
|
10
20
|
RSpec::Core::RakeTask.new(:spec)
|
|
11
21
|
|
|
12
|
-
task
|
|
22
|
+
task build: :compile
|
|
23
|
+
task default: %i[compile spec]
|
data/include/bando/common.hpp
CHANGED
|
@@ -132,7 +132,8 @@ template <typename BandoClass_T> void bando_initializeValue(BandoClass_T *self,
|
|
|
132
132
|
self->value_ = value;
|
|
133
133
|
self->mo_ = mo;
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
auto v = self->value_.value();
|
|
136
|
+
self->value_address_ = const_cast<VALUE*>(&v);
|
|
136
137
|
detail::protect(rb_gc_register_address, self->value_address_);
|
|
137
138
|
}
|
|
138
139
|
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
#define BANDO_QDBUSABSTRACTADAPTOR_HPP
|
|
24
24
|
|
|
25
25
|
#include <bando/common.hpp>
|
|
26
|
-
#include <QChildEvent>
|
|
27
26
|
#include <QEvent>
|
|
27
|
+
#include <QChildEvent>
|
|
28
28
|
#include <QTimerEvent>
|
|
29
29
|
|
|
30
30
|
RICE4RUBYQT6_USE_NAMESPACE
|
|
@@ -52,14 +52,6 @@ template <typename Class_T, typename... Arg_Ts> class BandoQDBusAbstractAdaptor
|
|
|
52
52
|
void timerEvent(QTimerEvent *event) override { bando_handleEvent<BandoQDBusAbstractAdaptor>(this, event, bando_FunctionName::timerEvent); };
|
|
53
53
|
QObject *sender() const { return this->Class_T::sender(); }
|
|
54
54
|
|
|
55
|
-
bool autoRelaySignals() const {
|
|
56
|
-
return this->Class_T::autoRelaySignals();
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
void setAutoRelaySignals(bool enable) {
|
|
60
|
-
this->Class_T::setAutoRelaySignals(enable);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
55
|
public:
|
|
64
56
|
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
65
57
|
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
@@ -80,6 +72,15 @@ template <typename Class_T, typename... Arg_Ts> class BandoQDBusAbstractAdaptor
|
|
|
80
72
|
VALUE *value_address_;
|
|
81
73
|
|
|
82
74
|
QMetaObject *mo_;
|
|
75
|
+
|
|
76
|
+
public:
|
|
77
|
+
bool Class_T_autoRelaySignals() const {
|
|
78
|
+
return this->Class_T::autoRelaySignals();
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
void Class_T_setAutoRelaySignals(bool enable) {
|
|
82
|
+
this->Class_T::setAutoRelaySignals(enable);
|
|
83
|
+
};
|
|
83
84
|
};
|
|
84
85
|
|
|
85
86
|
template <typename BC_T, typename C_T>
|
|
@@ -92,11 +93,11 @@ Data_Type<BC_T> define_bando_qdbusabstractadaptor_under(Module module, char cons
|
|
|
92
93
|
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
93
94
|
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
94
95
|
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
95
|
-
.define_method("
|
|
96
|
+
.define_method("_sender", &BC_T::sender);
|
|
96
97
|
|
|
97
98
|
bando_qlass
|
|
98
|
-
.define_method("auto_relay_signals", &BC_T::
|
|
99
|
-
.define_method("set_auto_relay_signals", &BC_T::
|
|
99
|
+
.define_method("auto_relay_signals", &BC_T::Class_T_autoRelaySignals)
|
|
100
|
+
.define_method("set_auto_relay_signals", &BC_T::Class_T_setAutoRelaySignals, Arg("enable"));
|
|
100
101
|
|
|
101
102
|
return bando_qlass;
|
|
102
103
|
}
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
#define BANDO_QDBUSABSTRACTINTERFACE_HPP
|
|
24
24
|
|
|
25
25
|
#include <bando/common.hpp>
|
|
26
|
-
#include <QChildEvent>
|
|
27
26
|
#include <QEvent>
|
|
27
|
+
#include <QChildEvent>
|
|
28
28
|
#include <QTimerEvent>
|
|
29
29
|
|
|
30
30
|
RICE4RUBYQT6_USE_NAMESPACE
|
|
@@ -84,7 +84,7 @@ Data_Type<BC_T> define_bando_qdbusabstractinterface_under(Module module, char co
|
|
|
84
84
|
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
85
85
|
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
86
86
|
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
87
|
-
.define_method("
|
|
87
|
+
.define_method("_sender", &BC_T::sender);
|
|
88
88
|
return bando_qlass;
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
#define BANDO_QITEMDELEGATE_HPP
|
|
24
24
|
|
|
25
25
|
#include <bando/common.hpp>
|
|
26
|
-
#include <QChildEvent>
|
|
27
26
|
#include <QEvent>
|
|
27
|
+
#include <QChildEvent>
|
|
28
|
+
#include <QTimerEvent>
|
|
28
29
|
#include <QPainter>
|
|
29
30
|
#include <QStyleOptionViewItem>
|
|
30
|
-
#include <QTimerEvent>
|
|
31
31
|
|
|
32
32
|
RICE4RUBYQT6_USE_NAMESPACE
|
|
33
33
|
|
|
@@ -54,6 +54,28 @@ template <typename Class_T, typename... Arg_Ts> class BandoQItemDelegate : publi
|
|
|
54
54
|
void timerEvent(QTimerEvent *event) override { bando_handleEvent<BandoQItemDelegate>(this, event, bando_FunctionName::timerEvent); };
|
|
55
55
|
QObject *sender() const { return this->Class_T::sender(); }
|
|
56
56
|
|
|
57
|
+
public:
|
|
58
|
+
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
59
|
+
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
60
|
+
|
|
61
|
+
void Class_T_handleEvent(bando_FunctionName name, QEvent *event) {
|
|
62
|
+
switch (name)
|
|
63
|
+
{
|
|
64
|
+
case bando_FunctionName::childEvent: return this->Class_T::childEvent(static_cast<QChildEvent *>(event));
|
|
65
|
+
case bando_FunctionName::timerEvent: return this->Class_T::timerEvent(static_cast<QTimerEvent *>(event));
|
|
66
|
+
default: Q_UNREACHABLE(); break;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
public:
|
|
71
|
+
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
72
|
+
|
|
73
|
+
Object value_;
|
|
74
|
+
VALUE *value_address_;
|
|
75
|
+
|
|
76
|
+
QMetaObject *mo_;
|
|
77
|
+
|
|
78
|
+
public:
|
|
57
79
|
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override {
|
|
58
80
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
59
81
|
auto rb_name = Identifier("create_editor");
|
|
@@ -91,27 +113,6 @@ template <typename Class_T, typename... Arg_Ts> class BandoQItemDelegate : publi
|
|
|
91
113
|
auto rb_name = Identifier("update_editor_geometry");
|
|
92
114
|
this->value_.call(rb_name, Object(detail::to_ruby(editor)), Object(detail::to_ruby(option)), Object(detail::to_ruby(index)));
|
|
93
115
|
};
|
|
94
|
-
|
|
95
|
-
public:
|
|
96
|
-
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
97
|
-
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
98
|
-
|
|
99
|
-
void Class_T_handleEvent(bando_FunctionName name, QEvent *event) {
|
|
100
|
-
switch (name)
|
|
101
|
-
{
|
|
102
|
-
case bando_FunctionName::childEvent: return this->Class_T::childEvent(static_cast<QChildEvent *>(event));
|
|
103
|
-
case bando_FunctionName::timerEvent: return this->Class_T::timerEvent(static_cast<QTimerEvent *>(event));
|
|
104
|
-
default: Q_UNREACHABLE(); break;
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
public:
|
|
109
|
-
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
110
|
-
|
|
111
|
-
Object value_;
|
|
112
|
-
VALUE *value_address_;
|
|
113
|
-
|
|
114
|
-
QMetaObject *mo_;
|
|
115
116
|
};
|
|
116
117
|
|
|
117
118
|
template <typename BC_T, typename C_T>
|
|
@@ -124,7 +125,7 @@ Data_Type<BC_T> define_bando_qitemdelegate_under(Module module, char const *name
|
|
|
124
125
|
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
125
126
|
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
126
127
|
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
127
|
-
.define_method("
|
|
128
|
+
.define_method("_sender", &BC_T::sender);
|
|
128
129
|
|
|
129
130
|
bando_qlass
|
|
130
131
|
.define_method("create_editor", [](BC_T *self, QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) -> QWidget * { return self->C_T::createEditor(parent, option, index); }, Arg("parent"), Arg("option"), Arg("index"))
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
#define BANDO_QLAYOUT_HPP
|
|
24
24
|
|
|
25
25
|
#include <bando/common.hpp>
|
|
26
|
-
#include <QChildEvent>
|
|
27
26
|
#include <QEvent>
|
|
28
|
-
#include <
|
|
27
|
+
#include <QChildEvent>
|
|
29
28
|
#include <QTimerEvent>
|
|
29
|
+
#include <QLayoutItem>
|
|
30
30
|
#include <QWidget>
|
|
31
31
|
|
|
32
32
|
RICE4RUBYQT6_USE_NAMESPACE
|
|
@@ -54,6 +54,28 @@ template <typename Class_T, typename... Arg_Ts> class BandoQLayout : public Clas
|
|
|
54
54
|
void timerEvent(QTimerEvent *event) override { bando_handleEvent<BandoQLayout>(this, event, bando_FunctionName::timerEvent); };
|
|
55
55
|
QObject *sender() const { return this->Class_T::sender(); }
|
|
56
56
|
|
|
57
|
+
public:
|
|
58
|
+
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
59
|
+
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
60
|
+
|
|
61
|
+
void Class_T_handleEvent(bando_FunctionName name, QEvent *event) {
|
|
62
|
+
switch (name)
|
|
63
|
+
{
|
|
64
|
+
case bando_FunctionName::childEvent: return this->Class_T::childEvent(static_cast<QChildEvent *>(event));
|
|
65
|
+
case bando_FunctionName::timerEvent: return this->Class_T::timerEvent(static_cast<QTimerEvent *>(event));
|
|
66
|
+
default: Q_UNREACHABLE(); break;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
public:
|
|
71
|
+
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
72
|
+
|
|
73
|
+
Object value_;
|
|
74
|
+
VALUE *value_address_;
|
|
75
|
+
|
|
76
|
+
QMetaObject *mo_;
|
|
77
|
+
|
|
78
|
+
public:
|
|
57
79
|
void addItem(QLayoutItem *item) override {
|
|
58
80
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
59
81
|
auto rb_name = Identifier("add_item");
|
|
@@ -74,13 +96,6 @@ template <typename Class_T, typename... Arg_Ts> class BandoQLayout : public Clas
|
|
|
74
96
|
return detail::From_Ruby<QLayoutItem *>().convert(rb_return);
|
|
75
97
|
};
|
|
76
98
|
|
|
77
|
-
QLayoutItem *takeAt(int index) override {
|
|
78
|
-
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
79
|
-
auto rb_name = Identifier("take_at");
|
|
80
|
-
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(index)));
|
|
81
|
-
return detail::From_Ruby<QLayoutItem *>().convert(rb_return);
|
|
82
|
-
};
|
|
83
|
-
|
|
84
99
|
QSize sizeHint() const override {
|
|
85
100
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
86
101
|
auto rb_name = Identifier("size_hint");
|
|
@@ -88,6 +103,13 @@ template <typename Class_T, typename... Arg_Ts> class BandoQLayout : public Clas
|
|
|
88
103
|
return detail::From_Ruby<QSize>().convert(rb_return);
|
|
89
104
|
};
|
|
90
105
|
|
|
106
|
+
QLayoutItem *takeAt(int index) override {
|
|
107
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
108
|
+
auto rb_name = Identifier("take_at");
|
|
109
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(index)));
|
|
110
|
+
return detail::From_Ruby<QLayoutItem *>().convert(rb_return);
|
|
111
|
+
};
|
|
112
|
+
|
|
91
113
|
Qt::Orientations expandingDirections() const override {
|
|
92
114
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
93
115
|
auto rb_name = Identifier("expanding_directions");
|
|
@@ -128,27 +150,6 @@ template <typename Class_T, typename... Arg_Ts> class BandoQLayout : public Clas
|
|
|
128
150
|
auto rb_name = Identifier("set_geometry");
|
|
129
151
|
this->value_.call(rb_name, Object(detail::to_ruby(r)));
|
|
130
152
|
};
|
|
131
|
-
|
|
132
|
-
public:
|
|
133
|
-
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
134
|
-
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
135
|
-
|
|
136
|
-
void Class_T_handleEvent(bando_FunctionName name, QEvent *event) {
|
|
137
|
-
switch (name)
|
|
138
|
-
{
|
|
139
|
-
case bando_FunctionName::childEvent: return this->Class_T::childEvent(static_cast<QChildEvent *>(event));
|
|
140
|
-
case bando_FunctionName::timerEvent: return this->Class_T::timerEvent(static_cast<QTimerEvent *>(event));
|
|
141
|
-
default: Q_UNREACHABLE(); break;
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
public:
|
|
146
|
-
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
147
|
-
|
|
148
|
-
Object value_;
|
|
149
|
-
VALUE *value_address_;
|
|
150
|
-
|
|
151
|
-
QMetaObject *mo_;
|
|
152
153
|
};
|
|
153
154
|
|
|
154
155
|
template <typename BC_T, typename C_T>
|
|
@@ -161,7 +162,7 @@ Data_Type<BC_T> define_bando_qlayout_under(Module module, char const *name)
|
|
|
161
162
|
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
162
163
|
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
163
164
|
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
164
|
-
.define_method("
|
|
165
|
+
.define_method("_sender", &BC_T::sender);
|
|
165
166
|
|
|
166
167
|
bando_qlass
|
|
167
168
|
.define_method("expanding_directions", [](BC_T *self) -> Qt::Orientations { return self->C_T::expandingDirections(); })
|
|
@@ -0,0 +1,132 @@
|
|
|
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_QSORTFILTERPROXYMODEL_HPP
|
|
23
|
+
#define BANDO_QSORTFILTERPROXYMODEL_HPP
|
|
24
|
+
|
|
25
|
+
#include <bando/common.hpp>
|
|
26
|
+
#include <QChildEvent>
|
|
27
|
+
#include <QEvent>
|
|
28
|
+
#include <QTimerEvent>
|
|
29
|
+
#include <QSortFilterProxyModel>
|
|
30
|
+
|
|
31
|
+
RICE4RUBYQT6_USE_NAMESPACE
|
|
32
|
+
|
|
33
|
+
template <typename Class_T, typename... Arg_Ts> class BandoQSortFilterProxyModel : public Class_T
|
|
34
|
+
{
|
|
35
|
+
public:
|
|
36
|
+
BandoQSortFilterProxyModel(Arg_Ts... args) : Class_T(args...), value_(Qnil), value_address_(nullptr), mo_(nullptr) {};
|
|
37
|
+
BandoQSortFilterProxyModel(const BandoQSortFilterProxyModel &) = delete;
|
|
38
|
+
BandoQSortFilterProxyModel &operator=(const BandoQSortFilterProxyModel &) = delete;
|
|
39
|
+
BandoQSortFilterProxyModel(BandoQSortFilterProxyModel &&) = delete;
|
|
40
|
+
BandoQSortFilterProxyModel &operator=(BandoQSortFilterProxyModel &&) = delete;
|
|
41
|
+
~BandoQSortFilterProxyModel() override { bando_finalizer<BandoQSortFilterProxyModel>(this); };
|
|
42
|
+
|
|
43
|
+
void initializeValue(Object value, QMetaObject *mo) { bando_initializeValue<BandoQSortFilterProxyModel>(this, value, mo); };
|
|
44
|
+
Object value() { return this->value_; };
|
|
45
|
+
|
|
46
|
+
const QMetaObject *metaObject() const override { return bando_metaObject<BandoQSortFilterProxyModel, Class_T>(this); };
|
|
47
|
+
int qt_metacall(QMetaObject::Call call, int id, void **args) override { return bando_qt_metacall<BandoQSortFilterProxyModel>(this, call, id, args); };
|
|
48
|
+
|
|
49
|
+
bool event(QEvent *event) override { return bando_handleQObjectEvent<BandoQSortFilterProxyModel>(this, event); };
|
|
50
|
+
bool eventFilter(QObject *watched, QEvent *event) override { return bando_handleQObjectEventFilter<BandoQSortFilterProxyModel>(this, watched, event); };
|
|
51
|
+
|
|
52
|
+
void childEvent(QChildEvent *event) override { bando_handleEvent<BandoQSortFilterProxyModel>(this, event, bando_FunctionName::childEvent); };
|
|
53
|
+
void timerEvent(QTimerEvent *event) override { bando_handleEvent<BandoQSortFilterProxyModel>(this, event, bando_FunctionName::timerEvent); };
|
|
54
|
+
QObject *sender() const { return this->Class_T::sender(); }
|
|
55
|
+
|
|
56
|
+
public:
|
|
57
|
+
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
58
|
+
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
59
|
+
|
|
60
|
+
void Class_T_handleEvent(bando_FunctionName name, QEvent *event) {
|
|
61
|
+
switch (name)
|
|
62
|
+
{
|
|
63
|
+
case bando_FunctionName::childEvent: return this->Class_T::childEvent(static_cast<QChildEvent *>(event));
|
|
64
|
+
case bando_FunctionName::timerEvent: return this->Class_T::timerEvent(static_cast<QTimerEvent *>(event));
|
|
65
|
+
default: Q_UNREACHABLE(); break;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
public:
|
|
70
|
+
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
71
|
+
|
|
72
|
+
Object value_;
|
|
73
|
+
VALUE *value_address_;
|
|
74
|
+
|
|
75
|
+
QMetaObject *mo_;
|
|
76
|
+
|
|
77
|
+
public:
|
|
78
|
+
bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const override {
|
|
79
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
80
|
+
auto rb_name = Identifier("filter_accepts_column");
|
|
81
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(source_column)), Object(detail::to_ruby(source_parent)));
|
|
82
|
+
return detail::From_Ruby<bool>().convert(rb_return);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override {
|
|
86
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
87
|
+
auto rb_name = Identifier("filter_accepts_row");
|
|
88
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(source_row)), Object(detail::to_ruby(source_parent)));
|
|
89
|
+
return detail::From_Ruby<bool>().convert(rb_return);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override {
|
|
93
|
+
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
94
|
+
auto rb_name = Identifier("less_than");
|
|
95
|
+
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(source_left)), Object(detail::to_ruby(source_right)));
|
|
96
|
+
return detail::From_Ruby<bool>().convert(rb_return);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
bool Class_T_filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const {
|
|
100
|
+
return this->Class_T::filterAcceptsColumn(source_column, source_parent);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
bool Class_T_filterAcceptsRow(int source_row, const QModelIndex &source_parent) const {
|
|
104
|
+
return this->Class_T::filterAcceptsRow(source_row, source_parent);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
bool Class_T_lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const {
|
|
108
|
+
return this->Class_T::lessThan(source_left, source_right);
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
template <typename BC_T, typename C_T>
|
|
113
|
+
Data_Type<BC_T> define_bando_qsortfilterproxymodel_under(Module module, char const *name)
|
|
114
|
+
{
|
|
115
|
+
Data_Type<BC_T> bando_qlass =
|
|
116
|
+
define_class_under<BC_T, C_T>(module, name)
|
|
117
|
+
.define_method("_initialize_ruby_value", &BC_T::initializeValue, Arg("value"), Arg("mo"))
|
|
118
|
+
.define_method("_ruby_value", &BC_T::value)
|
|
119
|
+
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
120
|
+
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
121
|
+
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
122
|
+
.define_method("_sender", &BC_T::sender);
|
|
123
|
+
|
|
124
|
+
bando_qlass
|
|
125
|
+
.define_method("filter_accepts_column", &BC_T::Class_T_filterAcceptsColumn, Arg("source_column"), Arg("source_parent"))
|
|
126
|
+
.define_method("filter_accepts_row", &BC_T::Class_T_filterAcceptsRow, Arg("source_row"), Arg("source_parent"))
|
|
127
|
+
.define_method("less_than", &BC_T::Class_T_lessThan, Arg("source_left"), Arg("source_right"));
|
|
128
|
+
|
|
129
|
+
return bando_qlass;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
#endif
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
#define BANDO_QWEBENGINEPAGE_HPP
|
|
24
24
|
|
|
25
25
|
#include <bando/common.hpp>
|
|
26
|
-
#include <QChildEvent>
|
|
27
26
|
#include <QEvent>
|
|
27
|
+
#include <QChildEvent>
|
|
28
28
|
#include <QTimerEvent>
|
|
29
29
|
#include <QWebEnginePage>
|
|
30
30
|
|
|
@@ -53,6 +53,28 @@ template <typename Class_T, typename... Arg_Ts> class BandoQWebEnginePage : publ
|
|
|
53
53
|
void timerEvent(QTimerEvent *event) override { bando_handleEvent<BandoQWebEnginePage>(this, event, bando_FunctionName::timerEvent); };
|
|
54
54
|
QObject *sender() const { return this->Class_T::sender(); }
|
|
55
55
|
|
|
56
|
+
public:
|
|
57
|
+
bool Class_T_handleQObjectEvent(QEvent *event) { return this->Class_T::event(event); };
|
|
58
|
+
bool Class_T_handleQObjectEventFilter(QObject *watched, QEvent *event) { return this->Class_T::eventFilter(watched, event); };
|
|
59
|
+
|
|
60
|
+
void Class_T_handleEvent(bando_FunctionName name, QEvent *event) {
|
|
61
|
+
switch (name)
|
|
62
|
+
{
|
|
63
|
+
case bando_FunctionName::childEvent: return this->Class_T::childEvent(static_cast<QChildEvent *>(event));
|
|
64
|
+
case bando_FunctionName::timerEvent: return this->Class_T::timerEvent(static_cast<QTimerEvent *>(event));
|
|
65
|
+
default: Q_UNREACHABLE(); break;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
public:
|
|
70
|
+
template <typename BC_T, typename C_T> friend const QMetaObject *bando_metaObject(const BC_T *self);
|
|
71
|
+
|
|
72
|
+
Object value_;
|
|
73
|
+
VALUE *value_address_;
|
|
74
|
+
|
|
75
|
+
QMetaObject *mo_;
|
|
76
|
+
|
|
77
|
+
public:
|
|
56
78
|
void triggerAction(QWebEnginePage::WebAction action, bool checked = false) override {
|
|
57
79
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
58
80
|
auto rb_name = Identifier("trigger_action");
|
|
@@ -60,93 +82,79 @@ template <typename Class_T, typename... Arg_Ts> class BandoQWebEnginePage : publ
|
|
|
60
82
|
};
|
|
61
83
|
|
|
62
84
|
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
85
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
86
|
+
auto rb_name = Identifier("accept_navigation_request");
|
|
68
87
|
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(url)), Object(detail::to_ruby(type)), Object(detail::to_ruby(isMainFrame)));
|
|
69
88
|
return detail::From_Ruby<bool>().convert(rb_return);
|
|
70
89
|
};
|
|
71
90
|
|
|
72
91
|
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
92
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
93
|
+
auto rb_name = Identifier("choose_files");
|
|
78
94
|
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(mode)), Object(detail::to_ruby(oldFiles)), Object(detail::to_ruby(acceptedMimeTypes)));
|
|
79
95
|
return detail::From_Ruby<QStringList>().convert(rb_return);
|
|
80
96
|
};
|
|
81
97
|
|
|
82
98
|
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
99
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
100
|
+
auto rb_name = Identifier("create_window");
|
|
88
101
|
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(type)));
|
|
89
102
|
return detail::From_Ruby<QWebEnginePage *>().convert(rb_return);
|
|
90
103
|
};
|
|
91
104
|
|
|
92
105
|
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
106
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
107
|
+
auto rb_name = Identifier("java_script_alert");
|
|
98
108
|
this->value_.call(rb_name, Object(detail::to_ruby(securityOrigin)), Object(detail::to_ruby(msg)));
|
|
99
109
|
};
|
|
100
110
|
|
|
101
111
|
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
112
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
113
|
+
auto rb_name = Identifier("java_script_confirm");
|
|
107
114
|
auto rb_return = this->value_.call(rb_name, Object(detail::to_ruby(securityOrigin)), Object(detail::to_ruby(msg)));
|
|
108
115
|
return detail::From_Ruby<bool>().convert(rb_return);
|
|
109
116
|
};
|
|
110
117
|
|
|
111
118
|
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
119
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
120
|
+
auto rb_name = Identifier("java_script_console_message");
|
|
117
121
|
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
122
|
};
|
|
119
123
|
|
|
120
124
|
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
125
|
Q_ASSERT(this->value_.rb_type() != RUBY_T_NONE);
|
|
126
|
+
auto rb_name = Identifier("java_script_prompt");
|
|
126
127
|
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
128
|
return detail::From_Ruby<bool>().convert(rb_return);
|
|
128
129
|
};
|
|
129
130
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
bool Class_T_acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) {
|
|
132
|
+
return this->Class_T::acceptNavigationRequest(url, type, isMainFrame);
|
|
133
|
+
};
|
|
133
134
|
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
}
|
|
135
|
+
QStringList Class_T_chooseFiles(QWebEnginePage::FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes) {
|
|
136
|
+
return this->Class_T::chooseFiles(mode, oldFiles, acceptedMimeTypes);
|
|
141
137
|
};
|
|
142
138
|
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
QWebEnginePage *Class_T_createWindow(QWebEnginePage::WebWindowType type) {
|
|
140
|
+
return this->Class_T::createWindow(type);
|
|
141
|
+
};
|
|
145
142
|
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
void Class_T_javaScriptAlert(const QUrl &securityOrigin, const QString &msg) {
|
|
144
|
+
return this->Class_T::javaScriptAlert(securityOrigin, msg);
|
|
145
|
+
};
|
|
148
146
|
|
|
149
|
-
|
|
147
|
+
bool Class_T_javaScriptConfirm(const QUrl &securityOrigin, const QString &msg) {
|
|
148
|
+
return this->Class_T::javaScriptConfirm(securityOrigin, msg);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
void Class_T_javaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID) {
|
|
152
|
+
return this->Class_T::javaScriptConsoleMessage(level, message, lineNumber, sourceID);
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
bool Class_T_javaScriptPrompt(const QUrl &securityOrigin, const QString &msg, const QString &defaultValue, QString *result) {
|
|
156
|
+
return this->Class_T::javaScriptPrompt(securityOrigin, msg, defaultValue, result);
|
|
157
|
+
};
|
|
150
158
|
};
|
|
151
159
|
|
|
152
160
|
template <typename BC_T, typename C_T>
|
|
@@ -159,10 +167,17 @@ Data_Type<BC_T> define_bando_qwebenginepage_under(Module module, char const *nam
|
|
|
159
167
|
.define_method("_ruby_value_handle_event", &BC_T::Class_T_handleEvent, Arg("name"), Arg("event"))
|
|
160
168
|
.define_method("_event", &BC_T::Class_T_handleQObjectEvent, Arg("event"))
|
|
161
169
|
.define_method("_event_filter", &BC_T::Class_T_handleQObjectEventFilter, Arg("watched"), Arg("event"))
|
|
162
|
-
.define_method("
|
|
170
|
+
.define_method("_sender", &BC_T::sender);
|
|
163
171
|
|
|
164
172
|
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))
|
|
173
|
+
.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))
|
|
174
|
+
.define_method("accept_navigation_request", &BC_T::Class_T_acceptNavigationRequest, Arg("url"), Arg("type"), Arg("is_main_frame"))
|
|
175
|
+
.define_method("choose_files", &BC_T::Class_T_chooseFiles, Arg("mode"), Arg("old_files"), Arg("accepted_mime_types"))
|
|
176
|
+
.define_method("create_window", &BC_T::Class_T_createWindow, Arg("type"))
|
|
177
|
+
.define_method("java_script_alert", &BC_T::Class_T_javaScriptAlert, Arg("security_origin"), Arg("msg"))
|
|
178
|
+
.define_method("java_script_confirm", &BC_T::Class_T_javaScriptConfirm, Arg("security_origin"), Arg("msg"))
|
|
179
|
+
.define_method("java_script_console_message", &BC_T::Class_T_javaScriptConsoleMessage, Arg("level"), Arg("message"), Arg("line_number"), Arg("source_id"))
|
|
180
|
+
.define_method("java_script_prompt", &BC_T::Class_T_javaScriptPrompt, Arg("security_origin"), Arg("msg"), Arg("default_value"), Arg("result"));
|
|
166
181
|
|
|
167
182
|
return bando_qlass;
|
|
168
183
|
}
|