wxruby3 1.6.0 → 1.6.1
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/INSTALL.md +2 -2
- data/README.md +3 -3
- data/ext/wxruby3/swig/mark_free_impl.i +2 -0
- data/lib/wx/core/variant.rb +6 -0
- data/lib/wx/doc/pg/pg_property.rb +5 -0
- data/lib/wx/doc/variant.rb +30 -0
- data/lib/wx/pg/pg_property.rb +60 -53
- data/lib/wx/pg/property_grid_interface.rb +10 -0
- data/lib/wx/version.rb +1 -1
- data/rakelib/gem.rake +83 -66
- data/rakelib/gem.rb +4 -20
- data/rakelib/lib/config.rb +3 -3
- data/rakelib/lib/core/spec.rb +1 -1
- data/rakelib/lib/director/bitmap_combobox.rb +4 -2
- data/rakelib/lib/director/html_listbox.rb +16 -3
- data/rakelib/lib/director/hvscrolled.rb +253 -0
- data/rakelib/lib/director/persistent_window.rb +16 -0
- data/rakelib/lib/director/pgproperty.rb +3 -2
- data/rakelib/lib/director/richtext_style_listbox.rb +8 -2
- data/rakelib/lib/director/top_level_window.rb +0 -1
- data/rakelib/lib/director/utils.rb +3 -1
- data/rakelib/lib/director/variant.rb +28 -0
- data/rakelib/lib/director/vlistbox.rb +5 -1
- data/rakelib/lib/director/window.rb +2 -1
- data/rakelib/lib/specs/interfaces.rb +3 -1
- data/rakelib/lib/swig_runner.rb +2 -2
- data/tests/test_propgrid.rb +857 -0
- metadata +4 -3
- data/rakelib/lib/director/hvscrolled_window.rb +0 -140
@@ -0,0 +1,253 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
###
|
6
|
+
# wxRuby3 wxWidgets interface director
|
7
|
+
###
|
8
|
+
|
9
|
+
require_relative './window'
|
10
|
+
|
11
|
+
module WXRuby3
|
12
|
+
|
13
|
+
class Director
|
14
|
+
|
15
|
+
class HVScrolled < Window
|
16
|
+
|
17
|
+
def setup
|
18
|
+
super
|
19
|
+
case spec.module_name
|
20
|
+
when 'wxHScrolledWindow'
|
21
|
+
spec.items.replace %w[wxVarScrollHelperBase wxVarVScrollHelper wxVarHVScrollHelper wxVarHScrollHelper wxHScrolledWindow wxHVScrolledWindow wxPosition]
|
22
|
+
spec.override_inheritance_chain('wxHScrolledWindow', %w[wxPanel wxWindow wxEvtHandler wxObject])
|
23
|
+
spec.fold_bases('wxHScrolledWindow' => %w[wxVarHScrollHelper wxVarScrollHelperBase])
|
24
|
+
spec.make_abstract 'wxHScrolledWindow'
|
25
|
+
spec.force_proxy 'wxHScrolledWindow'
|
26
|
+
spec.override_inheritance_chain('wxHVScrolledWindow', %w[wxPanel wxWindow wxEvtHandler wxObject])
|
27
|
+
spec.fold_bases('wxHVScrolledWindow' => %w[wxVarHVScrollHelper wxVarHScrollHelper wxVarVScrollHelper wxVarScrollHelperBase])
|
28
|
+
spec.make_abstract 'wxHVScrolledWindow'
|
29
|
+
spec.force_proxy 'wxHVScrolledWindow'
|
30
|
+
# provide base implementations for pure virtuals
|
31
|
+
spec.add_header_code <<~__HEREDOC
|
32
|
+
// Custom subclass implementation.
|
33
|
+
class wxRubyHScrolledWindow : public wxHScrolledWindow
|
34
|
+
{
|
35
|
+
public:
|
36
|
+
wxRubyHScrolledWindow()
|
37
|
+
: wxHScrolledWindow () {}
|
38
|
+
wxRubyHScrolledWindow(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxPanelNameStr)
|
39
|
+
: wxHScrolledWindow(parent, id, pos, size, style, name) {}
|
40
|
+
protected:
|
41
|
+
virtual wxCoord OnGetColumnWidth(size_t) const
|
42
|
+
{
|
43
|
+
return {};
|
44
|
+
}
|
45
|
+
};
|
46
|
+
|
47
|
+
// Custom subclass implementation.
|
48
|
+
class wxRubyHVScrolledWindow : public wxHVScrolledWindow
|
49
|
+
{
|
50
|
+
public:
|
51
|
+
wxRubyHVScrolledWindow()
|
52
|
+
: wxHVScrolledWindow () {}
|
53
|
+
wxRubyHVScrolledWindow(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxPanelNameStr)
|
54
|
+
: wxHVScrolledWindow(parent, id, pos, size, style, name) {}
|
55
|
+
protected:
|
56
|
+
virtual wxCoord OnGetRowHeight(size_t) const
|
57
|
+
{
|
58
|
+
return {};
|
59
|
+
}
|
60
|
+
virtual wxCoord OnGetColumnWidth(size_t) const
|
61
|
+
{
|
62
|
+
return {};
|
63
|
+
}
|
64
|
+
};
|
65
|
+
__HEREDOC
|
66
|
+
# make Ruby director and wrappers use custom implementation
|
67
|
+
spec.use_class_implementation('wxHScrolledWindow', 'wxRubyHScrolledWindow')
|
68
|
+
spec.use_class_implementation('wxHVScrolledWindow', 'wxRubyHVScrolledWindow')
|
69
|
+
# regard protected methods
|
70
|
+
spec.regard 'wxVarVScrollHelper::OnGetRowHeight',
|
71
|
+
'wxVarVScrollHelper::OnGetRowsHeightHint'
|
72
|
+
spec.regard 'wxVarHScrollHelper::OnGetColumnWidth',
|
73
|
+
'wxVarHScrollHelper::OnGetColumnsWidthHint'
|
74
|
+
# ignore internal implementation methods
|
75
|
+
spec.ignore 'wxVarScrollHelperBase::GetNonOrientationTargetSize',
|
76
|
+
'wxVarScrollHelperBase::GetOrientation',
|
77
|
+
'wxVarScrollHelperBase::GetOrientationTargetSize',
|
78
|
+
'wxVarScrollHelperBase::OnGetUnitSize',
|
79
|
+
'wxVarScrollHelperBase::CalcScrolledPosition',
|
80
|
+
'wxVarScrollHelperBase::CalcUnscrolledPosition',
|
81
|
+
'wxVarScrollHelperBase::GetTargetWindow',
|
82
|
+
'wxVarScrollHelperBase::SetTargetWindow',
|
83
|
+
'wxVarScrollHelperBase::UpdateScrollbar',
|
84
|
+
'wxVarScrollHelperBase::RefreshAll'
|
85
|
+
spec.map 'const wxPosition&' => 'Array(Integer, Integer), Wx::Position' do
|
86
|
+
add_header_code '#include <memory>'
|
87
|
+
map_in temp: 'std::unique_ptr<$1_basetype> tmp', code: <<~__CODE
|
88
|
+
if ( TYPE($input) == T_DATA )
|
89
|
+
{
|
90
|
+
void* argp$argnum;
|
91
|
+
SWIG_ConvertPtr($input, &argp$argnum, $1_descriptor, 0);
|
92
|
+
$1 = reinterpret_cast< $1_basetype * >(argp$argnum);
|
93
|
+
}
|
94
|
+
else if ( TYPE($input) == T_ARRAY )
|
95
|
+
{
|
96
|
+
$1 = new $1_basetype( NUM2INT( rb_ary_entry($input, 0) ),
|
97
|
+
NUM2INT( rb_ary_entry($input, 1) ) );
|
98
|
+
tmp.reset($1); // auto destruct when method scope ends
|
99
|
+
}
|
100
|
+
else
|
101
|
+
{
|
102
|
+
rb_raise(rb_eTypeError, "Wrong type for $1_basetype parameter");
|
103
|
+
}
|
104
|
+
__CODE
|
105
|
+
map_typecheck precedence: 'POINTER', code: <<~__CODE
|
106
|
+
void *vptr = 0;
|
107
|
+
$1 = 0;
|
108
|
+
if (TYPE($input) == T_ARRAY && RARRAY_LEN($input) == 2)
|
109
|
+
$1 = 1;
|
110
|
+
else if (TYPE($input) == T_DATA && SWIG_CheckState (SWIG_ConvertPtr ($input, &vptr, $1_descriptor, 0)))
|
111
|
+
$1 = 1;
|
112
|
+
__CODE
|
113
|
+
end
|
114
|
+
if Config.instance.wx_version_check('3.3.0') <= 0
|
115
|
+
spec.items << 'wxVScrolledWindow'
|
116
|
+
spec.override_inheritance_chain('wxVScrolledWindow', %w[wxPanel wxWindow wxEvtHandler wxObject])
|
117
|
+
spec.fold_bases('wxVScrolledWindow' => %w[wxVarVScrollHelper wxVarScrollHelperBase])
|
118
|
+
spec.make_abstract 'wxVScrolledWindow'
|
119
|
+
spec.force_proxy 'wxVScrolledWindow'
|
120
|
+
# provide base implementations for pure virtuals
|
121
|
+
spec.add_header_code <<~__HEREDOC
|
122
|
+
// Custom subclass implementation.
|
123
|
+
class wxRubyVScrolledWindow : public wxVScrolledWindow
|
124
|
+
{
|
125
|
+
public:
|
126
|
+
wxRubyVScrolledWindow()
|
127
|
+
: wxVScrolledWindow () {}
|
128
|
+
wxRubyVScrolledWindow(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxPanelNameStr)
|
129
|
+
: wxVScrolledWindow(parent, id, pos, size, style, name) {}
|
130
|
+
protected:
|
131
|
+
virtual wxCoord OnGetRowHeight(size_t) const
|
132
|
+
{
|
133
|
+
return {};
|
134
|
+
}
|
135
|
+
};
|
136
|
+
__HEREDOC
|
137
|
+
# make Ruby director and wrappers use custom implementation
|
138
|
+
spec.use_class_implementation('wxVScrolledWindow', 'wxRubyVScrolledWindow')
|
139
|
+
end
|
140
|
+
spec.do_not_generate(:typedefs)
|
141
|
+
when 'wxVScrolledWindow'
|
142
|
+
if Config.instance.wx_version_check('3.3.0') > 0
|
143
|
+
spec.items.replace %w[wxVScrolled wxVarScrollHelperBase wxVarVScrollHelper]
|
144
|
+
spec.gc_as_window
|
145
|
+
spec.use_template_as_class('wxVScrolled', 'wxVScrolledWindow')
|
146
|
+
spec.override_inheritance_chain('wxVScrolled', %w[wxPanel wxWindow wxEvtHandler wxObject])
|
147
|
+
spec.fold_bases('wxVScrolled' => %w[wxVarVScrollHelper wxVarScrollHelperBase])
|
148
|
+
spec.make_abstract 'wxVScrolled'
|
149
|
+
spec.force_proxy 'wxVScrolled'
|
150
|
+
spec.swig_import %w[
|
151
|
+
swig/classes/include/wxObject.h
|
152
|
+
swig/classes/include/wxEvtHandler.h
|
153
|
+
swig/classes/include/wxWindow.h
|
154
|
+
swig/classes/include/wxPanel.h
|
155
|
+
swig/classes/include/wxHScrolledWindow.h
|
156
|
+
]
|
157
|
+
# provide base implementations for pure virtuals
|
158
|
+
spec.add_header_code <<~__HEREDOC
|
159
|
+
// Custom subclass implementation.
|
160
|
+
class wxRubyVScrolledWindow : public wxVScrolledWindow
|
161
|
+
{
|
162
|
+
public:
|
163
|
+
wxRubyVScrolledWindow()
|
164
|
+
: wxVScrolledWindow () {}
|
165
|
+
wxRubyVScrolledWindow(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxPanelNameStr)
|
166
|
+
: wxVScrolledWindow(parent, id, pos, size, style, name) {}
|
167
|
+
protected:
|
168
|
+
virtual wxCoord OnGetRowHeight(size_t) const
|
169
|
+
{
|
170
|
+
return {};
|
171
|
+
}
|
172
|
+
};
|
173
|
+
__HEREDOC
|
174
|
+
# make Ruby director and wrappers use custom implementation
|
175
|
+
spec.use_class_implementation('wxVScrolled', 'wxRubyVScrolledWindow')
|
176
|
+
# regard protected methods
|
177
|
+
spec.regard 'wxVarVScrollHelper::OnGetRowHeight',
|
178
|
+
'wxVarVScrollHelper::OnGetRowsHeightHint'
|
179
|
+
# ignore internal implementation methods
|
180
|
+
spec.ignore 'wxVarScrollHelperBase::GetNonOrientationTargetSize',
|
181
|
+
'wxVarScrollHelperBase::GetOrientation',
|
182
|
+
'wxVarScrollHelperBase::GetOrientationTargetSize',
|
183
|
+
'wxVarScrollHelperBase::OnGetUnitSize',
|
184
|
+
'wxVarScrollHelperBase::CalcScrolledPosition',
|
185
|
+
'wxVarScrollHelperBase::CalcUnscrolledPosition',
|
186
|
+
'wxVarScrollHelperBase::GetTargetWindow',
|
187
|
+
'wxVarScrollHelperBase::SetTargetWindow',
|
188
|
+
'wxVarScrollHelperBase::UpdateScrollbar',
|
189
|
+
'wxVarScrollHelperBase::RefreshAll'
|
190
|
+
spec.do_not_generate(:typedefs, :functions, :defines, :variables)
|
191
|
+
else
|
192
|
+
spec.items.clear
|
193
|
+
end
|
194
|
+
when 'wxVScrolledCanvas'
|
195
|
+
if Config.instance.wx_version_check('3.3.0') > 0
|
196
|
+
spec.items.replace %w[wxVScrolled wxVarScrollHelperBase wxVarVScrollHelper]
|
197
|
+
spec.gc_as_window
|
198
|
+
spec.use_template_as_class('wxVScrolled', 'wxVScrolledCanvas')
|
199
|
+
spec.override_inheritance_chain('wxVScrolled', %w[wxPanel wxWindow wxEvtHandler wxObject])
|
200
|
+
spec.fold_bases('wxVScrolled' => %w[wxVarVScrollHelper wxVarScrollHelperBase])
|
201
|
+
spec.make_abstract 'wxVScrolled'
|
202
|
+
spec.force_proxy 'wxVScrolled'
|
203
|
+
spec.swig_import %w[
|
204
|
+
swig/classes/include/wxObject.h
|
205
|
+
swig/classes/include/wxEvtHandler.h
|
206
|
+
swig/classes/include/wxWindow.h
|
207
|
+
swig/classes/include/wxPanel.h
|
208
|
+
swig/classes/include/wxHScrolledWindow.h
|
209
|
+
]
|
210
|
+
# provide base implementations for pure virtuals
|
211
|
+
spec.add_header_code <<~__HEREDOC
|
212
|
+
// Custom subclass implementation.
|
213
|
+
class wxRubyVScrolledCanvas : public wxVScrolledCanvas
|
214
|
+
{
|
215
|
+
public:
|
216
|
+
wxRubyVScrolledCanvas()
|
217
|
+
: wxVScrolledCanvas () {}
|
218
|
+
wxRubyVScrolledCanvas(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxPanelNameStr)
|
219
|
+
: wxVScrolledCanvas(parent, id, pos, size, style, name) {}
|
220
|
+
protected:
|
221
|
+
virtual wxCoord OnGetRowHeight(size_t) const
|
222
|
+
{
|
223
|
+
return {};
|
224
|
+
}
|
225
|
+
};
|
226
|
+
__HEREDOC
|
227
|
+
# make Ruby director and wrappers use custom implementation
|
228
|
+
spec.use_class_implementation('wxVScrolled', 'wxRubyVScrolledCanvas')
|
229
|
+
# regard protected methods
|
230
|
+
spec.regard 'wxVarVScrollHelper::OnGetRowHeight',
|
231
|
+
'wxVarVScrollHelper::OnGetRowsHeightHint'
|
232
|
+
# ignore internal implementation methods
|
233
|
+
spec.ignore 'wxVarScrollHelperBase::GetNonOrientationTargetSize',
|
234
|
+
'wxVarScrollHelperBase::GetOrientation',
|
235
|
+
'wxVarScrollHelperBase::GetOrientationTargetSize',
|
236
|
+
'wxVarScrollHelperBase::OnGetUnitSize',
|
237
|
+
'wxVarScrollHelperBase::CalcScrolledPosition',
|
238
|
+
'wxVarScrollHelperBase::CalcUnscrolledPosition',
|
239
|
+
'wxVarScrollHelperBase::GetTargetWindow',
|
240
|
+
'wxVarScrollHelperBase::SetTargetWindow',
|
241
|
+
'wxVarScrollHelperBase::UpdateScrollbar',
|
242
|
+
'wxVarScrollHelperBase::RefreshAll'
|
243
|
+
spec.do_not_generate(:typedefs, :functions, :defines, :variables)
|
244
|
+
else
|
245
|
+
spec.items.clear
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end # class HVScrolledWindow
|
250
|
+
|
251
|
+
end # class Director
|
252
|
+
|
253
|
+
end # module WXRuby3
|
@@ -18,6 +18,10 @@ module WXRuby3
|
|
18
18
|
# only after 3.2.4 properly available
|
19
19
|
spec.items << 'wxPersistentComboBox'
|
20
20
|
end
|
21
|
+
if Config.instance.wx_version_check('3.3.0') > 0
|
22
|
+
# only after 3.3.0 available
|
23
|
+
spec.items << 'wxPersistentCheckBox' << 'wxPersistentRadioButton'
|
24
|
+
end
|
21
25
|
super
|
22
26
|
spec.gc_as_marked
|
23
27
|
spec.use_template_as_class('wxPersistentWindow', 'wxPersistentWindowBase')
|
@@ -64,6 +68,18 @@ module WXRuby3
|
|
64
68
|
spec.extend_interface 'wxPersistentComboBox',
|
65
69
|
'virtual wxString GetKind() const override'
|
66
70
|
end
|
71
|
+
if Config.instance.wx_version_check('3.3.0') > 0
|
72
|
+
# wxPersistentCheckBox
|
73
|
+
spec.override_inheritance_chain('wxPersistentCheckBox', [{ 'wxPersistentWindowBase' => 'wxPersistentWindow' }, 'wxPersistentObject'])
|
74
|
+
# add method override missing from docs
|
75
|
+
spec.extend_interface 'wxPersistentCheckBox',
|
76
|
+
'virtual wxString GetKind() const override'
|
77
|
+
# wxPersistentRadioButton
|
78
|
+
spec.override_inheritance_chain('wxPersistentRadioButton', [{ 'wxPersistentWindowBase' => 'wxPersistentWindow' }, 'wxPersistentObject'])
|
79
|
+
# add method override missing from docs
|
80
|
+
spec.extend_interface 'wxPersistentRadioButton',
|
81
|
+
'virtual wxString GetKind() const override'
|
82
|
+
end
|
67
83
|
end
|
68
84
|
|
69
85
|
end
|
@@ -121,8 +121,9 @@ module WXRuby3
|
|
121
121
|
spec.ignore 'wxPGProperty::GetCellRenderer'
|
122
122
|
# obsolete
|
123
123
|
if Config.instance.wx_version_check('3.3.0') < 0
|
124
|
-
spec.ignore
|
125
|
-
|
124
|
+
spec.ignore 'wxPGProperty::GetValueString'
|
125
|
+
end
|
126
|
+
if Config.instance.wx_version_check('3.3.0') <= 0
|
126
127
|
spec.ignore 'wxPGProperty::AddChild'
|
127
128
|
end
|
128
129
|
# not of use in Ruby
|
@@ -22,7 +22,11 @@ module WXRuby3
|
|
22
22
|
spec.items << 'wxRichTextStyleListCtrl' << 'wxRichTextStyleComboCtrl'
|
23
23
|
spec.include 'wx/odcombo.h'
|
24
24
|
spec.add_header_code 'extern VALUE wxRuby_RichTextStyleDefinition2Ruby(const wxRichTextStyleDefinition *wx_rtsd, int own);'
|
25
|
-
|
25
|
+
if Config.instance.wx_version_check('3.3.0') > 0
|
26
|
+
spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', 'wxVScrolledWindow', 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
|
27
|
+
else
|
28
|
+
spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', { 'wxVScrolledWindow' => 'wxHScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
|
29
|
+
end
|
26
30
|
spec.override_inheritance_chain('wxRichTextStyleComboCtrl',
|
27
31
|
%w[wxComboCtrl
|
28
32
|
wxControl
|
@@ -33,7 +37,9 @@ module WXRuby3
|
|
33
37
|
spec.extend_interface 'wxRichTextStyleComboCtrl',
|
34
38
|
'virtual void DoSetPopupControl(wxComboPopup* popup)',
|
35
39
|
visibility: 'protected'
|
36
|
-
|
40
|
+
# optimize; no need for these virtuals here
|
41
|
+
spec.no_proxy 'wxRichTextStyleListBox::OnGetRowHeight',
|
42
|
+
'wxRichTextStyleListBox::OnGetRowsHeightHint'
|
37
43
|
end
|
38
44
|
|
39
45
|
end
|
@@ -78,7 +78,6 @@ module WXRuby3
|
|
78
78
|
"#{spec.class_name(citem)}::Maximize",
|
79
79
|
"#{spec.class_name(citem)}::Navigate",
|
80
80
|
"#{spec.class_name(citem)}::Refresh",
|
81
|
-
"#{spec.class_name(citem)}::Reparent",
|
82
81
|
"#{spec.class_name(citem)}::RequestUserAttention",
|
83
82
|
"#{spec.class_name(citem)}::Restore",
|
84
83
|
"#{spec.class_name(citem)}::SetIcon",
|
@@ -37,11 +37,13 @@ module WXRuby3
|
|
37
37
|
wxMicroSleep
|
38
38
|
wxMilliSleep
|
39
39
|
wxSleep
|
40
|
-
wxUsleep
|
41
40
|
wxNow
|
42
41
|
wxDecToHex
|
43
42
|
wxHexToDec
|
44
43
|
]
|
44
|
+
if Config.instance.wx_version_check('3.3.0') <= 0
|
45
|
+
spec.ignore 'wxUsleep'
|
46
|
+
end
|
45
47
|
# ignore these enum(erator)s
|
46
48
|
spec.ignore %w[
|
47
49
|
wxSignal
|
@@ -114,6 +114,16 @@ module WXRuby3
|
|
114
114
|
}
|
115
115
|
return wxVariant(arrs);
|
116
116
|
}
|
117
|
+
if ((RARRAY_LEN(rbval) > 0 && TYPE(rb_ary_entry(rbval, 0)) == T_FIXNUM))
|
118
|
+
{
|
119
|
+
wxArrayInt arri;
|
120
|
+
for (int i = 0; i < RARRAY_LEN(rbval); i++)
|
121
|
+
{
|
122
|
+
VALUE num = rb_ary_entry(rbval, i);
|
123
|
+
arri.Add(NUM2INT(num));
|
124
|
+
}
|
125
|
+
return WXVARIANT(arri);
|
126
|
+
}
|
117
127
|
if (RARRAY_LEN(rbval) == 0 ||
|
118
128
|
rb_obj_is_kind_of(rb_ary_entry(rbval, 0), rb_const_get(mWxCore, var_Variant_id())))
|
119
129
|
{
|
@@ -170,6 +180,12 @@ module WXRuby3
|
|
170
180
|
}
|
171
181
|
__HEREDOC
|
172
182
|
spec.add_extend_code 'wxVariant', <<~__HEREDOC
|
183
|
+
wxVariant(const wxArrayInt& val, const wxString &name=wxEmptyString)
|
184
|
+
{
|
185
|
+
wxVariant var(0L, name);
|
186
|
+
var << val;
|
187
|
+
return new wxVariant(var);
|
188
|
+
}
|
173
189
|
wxVariant(const wxFont& val, const wxString &name=wxEmptyString)
|
174
190
|
{
|
175
191
|
wxVariant var(0L, name);
|
@@ -188,6 +204,10 @@ module WXRuby3
|
|
188
204
|
var << val;
|
189
205
|
return new wxVariant(var);
|
190
206
|
}
|
207
|
+
wxArrayInt GetArrayInt()
|
208
|
+
{
|
209
|
+
wxArrayInt arri; arri << *self; return arri;
|
210
|
+
}
|
191
211
|
wxFont GetFont()
|
192
212
|
{
|
193
213
|
wxFont font; font << *self; return font;
|
@@ -292,6 +312,12 @@ module WXRuby3
|
|
292
312
|
$1 = (TYPE($input) == T_TRUE) || (TYPE($input) == T_FALSE);
|
293
313
|
__CODE
|
294
314
|
end
|
315
|
+
# override typecheck for wxArrayInt as we also have to consider
|
316
|
+
# wxVariantList and wxArrayString
|
317
|
+
spec.map 'const wxArrayInt&' do
|
318
|
+
map_typecheck precedence: 'INT32_ARRAY',
|
319
|
+
code: '$1 = ((TYPE($input) == T_ARRAY) && (RARRAY_LEN($input) > 0) && (TYPE(rb_ary_entry($input, 0)) == T_FIXNUM));'
|
320
|
+
end
|
295
321
|
# override typecheck for wxArrayString as we also have to consider
|
296
322
|
# wxVariantList
|
297
323
|
spec.map 'const wxArrayString&' do
|
@@ -506,6 +532,8 @@ module WXRuby3
|
|
506
532
|
{ (*self) = v; }
|
507
533
|
void assign(const wxArrayString& v)
|
508
534
|
{ (*self) = v; }
|
535
|
+
void assign(const wxArrayInt& v)
|
536
|
+
{ (*self) << v; }
|
509
537
|
|
510
538
|
VALUE to_i()
|
511
539
|
{
|
@@ -16,7 +16,11 @@ module WXRuby3
|
|
16
16
|
|
17
17
|
def setup
|
18
18
|
super
|
19
|
-
|
19
|
+
if Config.instance.wx_version_check('3.3.0') > 0
|
20
|
+
spec.override_inheritance_chain('wxVListBox', [{ 'wxVScrolledWindow' => 'wxVScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
|
21
|
+
else
|
22
|
+
spec.override_inheritance_chain('wxVListBox', [{ 'wxVScrolledWindow' => 'wxHScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
|
23
|
+
end
|
20
24
|
spec.make_abstract 'wxVListBox'
|
21
25
|
# provide base implementations for OnDrawItem and OnMeasureItem
|
22
26
|
spec.add_header_code <<~__HEREDOC
|
@@ -334,7 +334,8 @@ module WXRuby3
|
|
334
334
|
"#{spec.class_name(citem)}::EnableTouchEvents",
|
335
335
|
"#{spec.class_name(citem)}::WarpPointer",
|
336
336
|
"#{spec.class_name(citem)}::AdjustForLayoutDirection",
|
337
|
-
"#{spec.class_name(citem)}::IsTransparentBackgroundSupported"
|
337
|
+
"#{spec.class_name(citem)}::IsTransparentBackgroundSupported",
|
338
|
+
"#{spec.class_name(citem)}::Reparent")
|
338
339
|
if Config.instance.features_set?('USE_ACCESSIBILITY')
|
339
340
|
if Config.instance.wx_version_check('3.2.4') > 0
|
340
341
|
spec.no_proxy "#{spec.class_name(citem)}::CreateAccessible"
|
@@ -139,7 +139,9 @@ module WXRuby3
|
|
139
139
|
Director.Spec(pkg, 'wxScrolledWindow', director: Director::ScrolledT)
|
140
140
|
Director.Spec(pkg, 'wxScrolledCanvas', director: Director::ScrolledT)
|
141
141
|
Director.Spec(pkg, 'wxScrolledControl', director: Director::ScrolledT)
|
142
|
-
Director.Spec(pkg, '
|
142
|
+
Director.Spec(pkg, 'wxHScrolledWindow', director: Director::HVScrolled)
|
143
|
+
Director.Spec(pkg, 'wxVScrolledWindow', director: Director::HVScrolled)
|
144
|
+
Director.Spec(pkg, 'wxVScrolledCanvas', director: Director::HVScrolled)
|
143
145
|
Director.Spec(pkg, 'wxVListBox')
|
144
146
|
Director.Spec(pkg, 'wxFindReplaceData', requirements: %w[USE_FINDREPLDLG])
|
145
147
|
Director.Spec(pkg, 'wxFindReplaceDialog', director: Director::Dialog, requirements: %w[USE_FINDREPLDLG])
|
data/rakelib/lib/swig_runner.rb
CHANGED
@@ -418,14 +418,14 @@ module WXRuby3
|
|
418
418
|
# get the generated (class) items for which an alternate implementation has been registered
|
419
419
|
class_list = def_items.select { |itm| Extractor::ClassDef === itm && itm.name != class_implementation(itm.name) }
|
420
420
|
# create re match list for class names
|
421
|
-
cls_re_txt = class_list.collect { |clsdef| clsdef.name }.join('|')
|
421
|
+
cls_re_txt = class_list.collect { |clsdef| class_name(clsdef.name) }.join('|')
|
422
422
|
# updating any matching alloc functions in generated SWIG sourcecode
|
423
423
|
# create regexp for 'initialize' wrappers (due to overloads this could be more than one per class)
|
424
424
|
new_re = /_wrap_new_(#{cls_re_txt})\w*\(.*\)/
|
425
425
|
# check if any of the selected classes have a Director proxy enabled
|
426
426
|
if proxies_enabled = class_list.any? { |clsdef| has_proxy?(clsdef) }
|
427
427
|
# create re match list for classes with director proxy enabled
|
428
|
-
dir_cls_re_txt = class_list.select { |clsdef| has_proxy?(clsdef) }.collect { |cd| cd.name }.join('|')
|
428
|
+
dir_cls_re_txt = class_list.select { |clsdef| has_proxy?(clsdef) }.collect { |cd| class_name(cd.name) }.join('|')
|
429
429
|
# create regexp for Director constructors (may not exist if no proxies are enabled)
|
430
430
|
dir_ctor_re = /SwigDirector_\w+::SwigDirector_\w+\(.*\)\s*:\s*(#{dir_cls_re_txt})\(.*\)\s*,\s*Swig::Director.*{/
|
431
431
|
# create regexp for method wrappers other than 'initialize' wrappers
|