wxruby3 0.9.0 → 0.9.2
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/.yardopts +1 -0
- data/ext/wxruby3/include/wxRubyApp.h +338 -0
- data/ext/wxruby3/include/wxruby-Config.h +6 -6
- data/ext/wxruby3/include/wxruby-runtime.h +3 -0
- data/ext/wxruby3/swig/common.i +22 -0
- data/ext/wxruby3/swig/custom/director.swg +296 -0
- data/ext/wxruby3/swig/custom/rubyapi.swg +19 -0
- data/ext/wxruby3/swig/custom/rubyerrors.swg +45 -0
- data/ext/wxruby3/swig/custom/rubyhead.swg +192 -0
- data/ext/wxruby3/swig/custom/rubyrun.swg +187 -0
- data/ext/wxruby3/swig/custom/swigrun.swg +363 -0
- data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +173 -0
- data/ext/wxruby3/swig/wx.i +50 -30
- data/lib/wx/aui/aui_tab_ctrl.rb +18 -0
- data/lib/wx/aui/auinotebook.rb +6 -2
- data/lib/wx/aui/require.rb +1 -0
- data/lib/wx/core/app.rb +2 -2
- data/lib/wx/core/collapsible_pane.rb +1 -1
- data/lib/wx/core/const.rb +83 -0
- data/lib/wx/core/controlwithitems.rb +8 -6
- data/lib/wx/core/menu.rb +10 -0
- data/lib/wx/core/notebook.rb +6 -2
- data/lib/wx/core/sizer.rb +11 -0
- data/lib/wx/core/task_bar_button.rb +19 -0
- data/lib/wx/core/textctrl.rb +11 -1
- data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
- data/lib/wx/core/window.rb +10 -0
- data/lib/wx/doc/app.rb +48 -38
- data/lib/wx/doc/art_locator.rb +47 -43
- data/lib/wx/doc/aui/auimanager.rb +16 -8
- data/lib/wx/doc/aui/auinotebook.rb +20 -5
- data/lib/wx/doc/clipboard.rb +11 -7
- data/lib/wx/doc/colour_dialog.rb +14 -10
- data/lib/wx/doc/const.rb +66 -66
- data/lib/wx/doc/controlwithitems.rb +17 -7
- data/lib/wx/doc/data_object.rb +2 -2
- data/lib/wx/doc/event.rb +0 -6
- data/lib/wx/doc/evthandler.rb +113 -108
- data/lib/wx/doc/font.rb +1 -0
- data/lib/wx/doc/functions.rb +9 -9
- data/lib/wx/doc/gc_dc.rb +6 -1
- data/lib/wx/doc/graphics_context.rb +1 -0
- data/lib/wx/doc/grid/grid.rb +22 -1
- data/lib/wx/doc/help_controller.rb +11 -7
- data/lib/wx/doc/html/html_help_controller.rb +12 -4
- data/lib/wx/doc/list_ctrl.rb +33 -29
- data/lib/wx/doc/menu.rb +20 -0
- data/lib/wx/doc/notebook.rb +21 -0
- data/lib/wx/doc/pg/events.rb +13 -9
- data/lib/wx/doc/pg/pg_property.rb +18 -0
- data/lib/wx/doc/progress_dialog.rb +36 -32
- data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
- data/lib/wx/doc/prt/print_data.rb +13 -5
- data/lib/wx/doc/prt/print_dialog.rb +31 -23
- data/lib/wx/doc/prt/printer.rb +20 -12
- data/lib/wx/doc/radio_box.rb +19 -15
- data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
- data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
- data/lib/wx/doc/region_iterator.rb +32 -28
- data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
- data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
- data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
- data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
- data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
- data/lib/wx/doc/sizer.rb +20 -0
- data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
- data/lib/wx/doc/stream.rb +39 -35
- data/lib/wx/doc/system_settings.rb +30 -26
- data/lib/wx/doc/text_validator.rb +12 -8
- data/lib/wx/doc/textctrl.rb +16 -0
- data/lib/wx/doc/tree_ctrl.rb +95 -0
- data/lib/wx/doc/treebook.rb +9 -5
- data/lib/wx/doc/v_list_box.rb +9 -5
- data/lib/wx/doc/variant.rb +164 -160
- data/lib/wx/doc/window.rb +57 -42
- data/lib/wx/doc/window_disabler.rb +10 -6
- data/lib/wx/grid/grid.rb +27 -4
- data/lib/wx/keyword_defs.rb +43 -6
- data/lib/wx/pg/pg_property.rb +22 -0
- data/lib/wx/rtc/require.rb +3 -0
- data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
- data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
- data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
- data/lib/wx/stc/require.rb +1 -0
- data/lib/wx/stc/styled_text_ctrl.rb +25 -0
- data/lib/wx/version.rb +1 -1
- data/rakelib/lib/config/linux.rb +0 -3
- data/rakelib/lib/config/macosx.rb +1 -1
- data/rakelib/lib/config/mingw.rb +1 -1
- data/rakelib/lib/config/unixish.rb +1 -1
- data/rakelib/lib/config.rb +14 -4
- data/rakelib/lib/core/include/funcall.inc +33 -14
- data/rakelib/lib/core/include/swigdirector.inc +384 -0
- data/rakelib/lib/core/include/swigrubyerrors.inc +161 -0
- data/{ext/wxruby3/swig/custom/swig4/rubyrun.swg → rakelib/lib/core/include/swigrubyrun.inc} +245 -120
- data/rakelib/lib/core/include/swigrun.inc +700 -0
- data/rakelib/lib/core/package.rb +19 -9
- data/rakelib/lib/core/parameter.rb +3 -0
- data/rakelib/lib/core/spec.rb +6 -1
- data/rakelib/lib/director/accelerator.rb +3 -4
- data/rakelib/lib/director/accessible.rb +47 -0
- data/rakelib/lib/director/animation.rb +1 -1
- data/rakelib/lib/director/animation_ctrl.rb +20 -0
- data/rakelib/lib/director/app.rb +15 -304
- data/rakelib/lib/director/app_traits.rb +10 -12
- data/rakelib/lib/director/art_provider.rb +1 -1
- data/rakelib/lib/director/ctrl_with_items.rb +17 -5
- data/rakelib/lib/director/data_format.rb +1 -1
- data/rakelib/lib/director/data_object_simple_base.rb +1 -2
- data/rakelib/lib/director/derived_dc.rb +1 -1
- data/rakelib/lib/director/dialog.rb +6 -0
- data/rakelib/lib/director/dialup_event.rb +44 -0
- data/rakelib/lib/director/dialup_manager.rb +45 -0
- data/rakelib/lib/director/drag_image.rb +2 -3
- data/rakelib/lib/director/event.rb +22 -4
- data/rakelib/lib/director/file_ctrl.rb +35 -0
- data/rakelib/lib/director/file_ctrl_event.rb +26 -0
- data/rakelib/lib/director/frame.rb +1 -3
- data/rakelib/lib/director/gdicommon.rb +27 -11
- data/rakelib/lib/director/graphics_context.rb +2 -4
- data/rakelib/lib/director/grid_cell_editor.rb +6 -6
- data/rakelib/lib/director/grid_ctrl.rb +34 -3
- data/rakelib/lib/director/help_controller.rb +1 -1
- data/rakelib/lib/director/icon.rb +5 -2
- data/rakelib/lib/director/list_ctrl.rb +5 -6
- data/rakelib/lib/director/locale.rb +1 -3
- data/rakelib/lib/director/log.rb +1 -4
- data/rakelib/lib/director/media_ctrl.rb +54 -0
- data/rakelib/lib/director/menu.rb +16 -1
- data/rakelib/lib/director/menu_item.rb +2 -2
- data/rakelib/lib/director/pgarray_editor_dialog.rb +0 -6
- data/rakelib/lib/director/pgeditor.rb +2 -2
- data/rakelib/lib/director/pgproperties.rb +3 -3
- data/rakelib/lib/director/pgproperty.rb +24 -1
- data/rakelib/lib/director/property_grid_interface.rb +5 -10
- data/rakelib/lib/director/richtext_buffer.rb +1 -1
- data/rakelib/lib/director/richtext_composite_object.rb +25 -0
- data/rakelib/lib/director/richtext_ctrl.rb +15 -5
- data/rakelib/lib/director/richtext_formatting_dialog.rb +7 -5
- data/rakelib/lib/director/richtext_paragraph_layout_box.rb +9 -7
- data/rakelib/lib/director/sash_event.rb +42 -0
- data/rakelib/lib/director/sizer.rb +79 -1
- data/rakelib/lib/director/sizer_item.rb +22 -0
- data/rakelib/lib/director/static_box.rb +4 -5
- data/rakelib/lib/director/styled_text_ctrl.rb +12 -0
- data/rakelib/lib/director/task_bar_button.rb +30 -0
- data/rakelib/lib/director/task_bar_icon.rb +6 -14
- data/rakelib/lib/director/textctrl.rb +12 -1
- data/rakelib/lib/director/tool_tip.rb +1 -1
- data/rakelib/lib/director/top_level_window.rb +4 -5
- data/rakelib/lib/director/tree_ctrl.rb +24 -50
- data/rakelib/lib/director/variant.rb +1 -1
- data/rakelib/lib/director/window.rb +24 -5
- data/rakelib/lib/director.rb +4 -4
- data/rakelib/lib/extractor/function.rb +6 -6
- data/rakelib/lib/extractor.rb +34 -5
- data/rakelib/lib/generate/analyzer.rb +8 -3
- data/rakelib/lib/generate/doc/animation_ctrl.yaml +15 -0
- data/rakelib/lib/generate/doc/busy_info.yaml +0 -2
- data/rakelib/lib/generate/doc/clipboard.yaml +0 -2
- data/rakelib/lib/generate/doc/cursor.yaml +0 -2
- data/rakelib/lib/generate/doc/events.yaml +10 -4
- data/rakelib/lib/generate/doc/panel.yaml +7 -0
- data/rakelib/lib/generate/doc/static_box.yaml +8 -0
- data/rakelib/lib/generate/doc/xml_resource.yaml +3 -0
- data/rakelib/lib/generate/doc.rb +89 -16
- data/rakelib/lib/generate/interface.rb +4 -3
- data/rakelib/lib/specs/interfaces.rb +161 -156
- data/rakelib/lib/swig_runner.rb +4 -50
- data/rakelib/lib/typemap/common.rb +54 -10
- data/rakelib/lib/typemap/data_format.rb +1 -1
- data/rakelib/lib/typemap/data_object_data.rb +2 -2
- data/rakelib/lib/typemap/pgprop_arg.rb +7 -2
- data/rakelib/lib/typemap/points_list.rb +5 -7
- data/rakelib/lib/util/string.rb +10 -8
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
- data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
- data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
- data/rakelib/yard/templates/default/tags/setup.rb +16 -0
- data/rakelib/yard/yard-custom-templates.rb +3 -0
- data/samples/text/richtext.rb +0 -30
- data/samples/treectrl/treectrl.rb +1 -1
- data/tests/media/beep_lo.wav +0 -0
- data/tests/test_app_exit_exception.rb +36 -0
- data/tests/test_app_init_exception.rb +20 -0
- data/tests/test_book_controls.rb +29 -0
- data/tests/test_exceptions.rb +41 -0
- data/tests/test_list_ctrl.rb +1 -1
- data/tests/test_media_ctrl.rb +38 -0
- data/tests/test_menu.rb +69 -0
- data/tests/test_pg.rb +27 -0
- data/tests/test_richtext.rb +45 -0
- data/tests/test_sizer.rb +59 -0
- data/tests/test_std_controls.rb +78 -1
- data/tests/test_styled_text_ctrl.rb +46 -0
- data/tests/test_tree_ctrl.rb +138 -0
- data/tests/test_window.rb +12 -0
- data/tests/testapp_noframe.rb +1 -1
- metadata +54 -5
- data/ext/wxruby3/swig/custom/swig3/rubyrun.swg +0 -456
|
@@ -105,8 +105,7 @@ module WXRuby3
|
|
|
105
105
|
}
|
|
106
106
|
else
|
|
107
107
|
{
|
|
108
|
-
Swig::DirectorTypeMismatchException::raise(rb_eTypeError,
|
|
109
|
-
"get_data_here should return a string, or nil on failure");
|
|
108
|
+
Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", rb_eTypeError, "get_data_here should return a string, or nil on failure");
|
|
110
109
|
}
|
|
111
110
|
}
|
|
112
111
|
else
|
|
@@ -278,7 +278,7 @@ module WXRuby3
|
|
|
278
278
|
# like all DC this should best always be a temporary stack object
|
|
279
279
|
# we do not allow creation in Ruby but rather provide class
|
|
280
280
|
# methods for block execution on a temp dc
|
|
281
|
-
|
|
281
|
+
if Config.instance.features_set?('USE_PRINTING_ARCHITECTURE', Director.AnyOf(*%w[WXMSW WXOSX USE_GTKPRINT]))
|
|
282
282
|
spec.add_extend_code 'wxGCDC', <<~__HEREDOC
|
|
283
283
|
static VALUE draw_on(const wxPrinterDC& dc)
|
|
284
284
|
{
|
|
@@ -24,6 +24,7 @@ module WXRuby3
|
|
|
24
24
|
when 'wxDialog'
|
|
25
25
|
spec.items << 'wxDialogLayoutAdapter'
|
|
26
26
|
spec.gc_as_object 'wxDialogLayoutAdapter'
|
|
27
|
+
spec.suppress_warning(514, 'wxDialogLayoutAdapter')
|
|
27
28
|
spec.disown 'wxDialogLayoutAdapter* adapter'
|
|
28
29
|
spec.new_object 'wxDialog::SetLayoutAdapter'
|
|
29
30
|
spec.ignore('wxDialog::GetContentWindow',
|
|
@@ -87,6 +88,11 @@ module WXRuby3
|
|
|
87
88
|
end
|
|
88
89
|
spec.do_not_generate :functions
|
|
89
90
|
when 'wxPropertySheetDialog'
|
|
91
|
+
# need to adjust sizer arg name to apply disown specs
|
|
92
|
+
spec.ignore 'wxPropertySheetDialog::SetInnerSizer(wxSizer *)', ignore_doc: false
|
|
93
|
+
spec.extend_interface 'wxPropertySheetDialog',
|
|
94
|
+
'void SetInnerSizer(wxSizer *sizer_disown)'
|
|
95
|
+
spec.disown 'wxSizer *sizer_disown'
|
|
90
96
|
spec.ignore 'wxPropertySheetDialog::GetContentWindow'
|
|
91
97
|
# In Ruby a derived class with customized '#initialize' is far easier
|
|
92
98
|
spec.ignore 'wxPropertySheetDialog::CreateBookCtrl'
|
|
@@ -0,0 +1,44 @@
|
|
|
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 './event'
|
|
10
|
+
|
|
11
|
+
module WXRuby3
|
|
12
|
+
|
|
13
|
+
class Director
|
|
14
|
+
|
|
15
|
+
class DialUpEvent < Event
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
super
|
|
19
|
+
spec.disable_proxies
|
|
20
|
+
# missing from interface docs
|
|
21
|
+
spec.add_swig_code '%constant int EVT_DIALUP_CONNECTED = wxEVT_DIALUP_CONNECTED;'
|
|
22
|
+
spec.add_swig_code '%constant int EVT_DIALUP_DISCONNECTED = wxEVT_DIALUP_DISCONNECTED;'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def doc_generator
|
|
26
|
+
DialUpEventDocGenerator.new(self)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end # class DialupEvent
|
|
30
|
+
|
|
31
|
+
end # class Director
|
|
32
|
+
|
|
33
|
+
class DialUpEventDocGenerator < DocGenerator
|
|
34
|
+
|
|
35
|
+
protected def gen_constants_doc(fdoc)
|
|
36
|
+
super
|
|
37
|
+
xref_table = package.all_modules.reduce(DocGenerator.constants_db) { |db, mod| db[mod] }
|
|
38
|
+
gen_constant_doc(fdoc, 'EVT_DIALUP_CONNECTED', xref_table['EVT_DIALUP_CONNECTED'], 'connected event')
|
|
39
|
+
gen_constant_doc(fdoc, 'EVT_DIALUP_DISCONNECTED', xref_table['EVT_DIALUP_DISCONNECTED'], 'disconnected event')
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end # module WXRuby3
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
|
2
|
+
#
|
|
3
|
+
# This software is released under the MIT license.
|
|
4
|
+
|
|
5
|
+
###
|
|
6
|
+
# wxRuby3 Defs director
|
|
7
|
+
###
|
|
8
|
+
|
|
9
|
+
module WXRuby3
|
|
10
|
+
|
|
11
|
+
class Director
|
|
12
|
+
|
|
13
|
+
class DialUpManager < Director
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
super
|
|
17
|
+
spec.gc_as_untracked
|
|
18
|
+
spec.make_abstract 'wxDialUpManager'
|
|
19
|
+
spec.disable_proxies
|
|
20
|
+
spec.ignore 'wxDialUpManager::GetISPNames', ignore_doc: false
|
|
21
|
+
spec.add_extend_code 'wxDialUpManager', <<~__HEREDOC
|
|
22
|
+
VALUE get_isp_names() const
|
|
23
|
+
{
|
|
24
|
+
VALUE rb_isps = rb_ary_new();
|
|
25
|
+
wxArrayString isps;
|
|
26
|
+
size_t n_isps = $self->GetISPNames(isps);
|
|
27
|
+
for (size_t i=0; i<n_isps ;++i)
|
|
28
|
+
{
|
|
29
|
+
rb_ary_push(rb_isps, WXSTR_TO_RSTR(isps.Item(i)));
|
|
30
|
+
}
|
|
31
|
+
return rb_isps;
|
|
32
|
+
}
|
|
33
|
+
__HEREDOC
|
|
34
|
+
spec.map 'wxArrayString& names', swig: false do
|
|
35
|
+
map_in ignore: true, code: ''
|
|
36
|
+
map_out ignore: 'size_t'
|
|
37
|
+
map_argout as: 'Array<String>'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -15,9 +15,8 @@ module WXRuby3
|
|
|
15
15
|
include Typemap::TreeItemId
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
end
|
|
18
|
+
# If wxRuby ever supports WXUNIVERSAL this should change to #ignore_unless
|
|
19
|
+
spec.ignore('wxDragImage::DoDrawImage', 'wxDragImage::GetImageRect', 'wxDragImage::UpdateBackingFromWindow')
|
|
21
20
|
super
|
|
22
21
|
end
|
|
23
22
|
end # class DragImage
|
|
@@ -195,14 +195,12 @@ module WXRuby3
|
|
|
195
195
|
}
|
|
196
196
|
__HEREDOC
|
|
197
197
|
spec.ignore 'wxQueueEvent'
|
|
198
|
-
spec.
|
|
199
|
-
spec.
|
|
198
|
+
spec.ignore_unless('USE_HOTKEY', 'wxEVT_HOTKEY')
|
|
199
|
+
spec.ignore_unless('WXMSW', 'wxEVT_MOUSE_CAPTURE_CHANGED', 'wxEVT_MOUSE_CAPTURE_LOST', 'wxEVT_DISPLAY_CHANGED')
|
|
200
200
|
# make sure this event constant definition exists
|
|
201
201
|
spec.add_swig_code %Q{%constant wxEventType wxEVT_MENU_HIGHLIGHT_ALL = wxEVT_MENU_HIGHLIGHT;}
|
|
202
202
|
# add event type constant missing from interface defs
|
|
203
203
|
spec.add_swig_code %Q{%constant wxEventType wxEVT_NC_PAINT = wxEVT_NC_PAINT;}
|
|
204
|
-
# add undocumented global function
|
|
205
|
-
spec.add_swig_code 'wxWindow* wxFindFocusDescendant(wxWindow* ancestor);'
|
|
206
204
|
end
|
|
207
205
|
super
|
|
208
206
|
end
|
|
@@ -237,8 +235,28 @@ module WXRuby3
|
|
|
237
235
|
end
|
|
238
236
|
defmod
|
|
239
237
|
end
|
|
238
|
+
|
|
239
|
+
def doc_generator
|
|
240
|
+
if spec.module_name == 'wxEvent'
|
|
241
|
+
EventDocGenerator.new(self)
|
|
242
|
+
else
|
|
243
|
+
super
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
|
|
240
247
|
end # class Event
|
|
241
248
|
|
|
242
249
|
end # class Director
|
|
243
250
|
|
|
251
|
+
class EventDocGenerator < DocGenerator
|
|
252
|
+
|
|
253
|
+
protected def gen_constants_doc(fdoc)
|
|
254
|
+
super
|
|
255
|
+
xref_table = package.all_modules.reduce(DocGenerator.constants_db) { |db, mod| db[mod] }
|
|
256
|
+
gen_constant_doc(fdoc, 'EVT_MENU_HIGHLIGHT_ALL', xref_table['EVT_MENU_HIGHLIGHT'], '')
|
|
257
|
+
gen_constant_doc(fdoc, 'EVT_NC_PAINT', xref_table['EVT_NC_PAINT'], '')
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
end
|
|
261
|
+
|
|
244
262
|
end # module WXRuby3
|
|
@@ -0,0 +1,35 @@
|
|
|
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 FileCtrl < Window
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
super
|
|
19
|
+
# for GetFileNames and GetPaths
|
|
20
|
+
spec.map 'wxArrayString &filenames', 'wxArrayString &paths', as: 'Array<String>' do
|
|
21
|
+
map_in ignore: true, temp: 'wxArrayString tmp', code: '$1 = &tmp;'
|
|
22
|
+
map_argout code: <<~__HEREDOC
|
|
23
|
+
$result = rb_ary_new();
|
|
24
|
+
for (size_t i=0; i<tmp$argnum.Count() ;++i)
|
|
25
|
+
{
|
|
26
|
+
rb_ary_push($result, WXSTR_TO_RSTR(tmp$argnum.Item(i)));
|
|
27
|
+
}
|
|
28
|
+
__HEREDOC
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end # class FileCtrl
|
|
32
|
+
|
|
33
|
+
end # class Director
|
|
34
|
+
|
|
35
|
+
end # module WXRuby3
|
|
@@ -0,0 +1,26 @@
|
|
|
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 './event'
|
|
10
|
+
|
|
11
|
+
module WXRuby3
|
|
12
|
+
|
|
13
|
+
class Director
|
|
14
|
+
|
|
15
|
+
class FileCtrlEvent < Event
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
super
|
|
19
|
+
spec.disable_proxies
|
|
20
|
+
spec.do_not_generate(:variables, :defines, :enums, :functions) # with FileCtrl
|
|
21
|
+
end
|
|
22
|
+
end # class FileCtrlEvent
|
|
23
|
+
|
|
24
|
+
end # class Director
|
|
25
|
+
|
|
26
|
+
end # module WXRuby3
|
|
@@ -21,9 +21,7 @@ module WXRuby3
|
|
|
21
21
|
when 'wxFrame'
|
|
22
22
|
spec.ignore %w[
|
|
23
23
|
wxFrame::OnCreateStatusBar wxFrame::OnCreateToolBar]
|
|
24
|
-
|
|
25
|
-
spec.ignore('wxFrame::MSWGetTaskBarButton')
|
|
26
|
-
end
|
|
24
|
+
spec.ignore_unless(%w[WXMSW USE_TASKBARBUTTON], 'wxFrame::MSWGetTaskBarButton')
|
|
27
25
|
# this reimplemented window base method need to be properly wrapped but
|
|
28
26
|
# is missing from the XML docs
|
|
29
27
|
spec.extend_interface('wxFrame', 'virtual void OnInternalIdle()')
|
|
@@ -22,6 +22,24 @@ module WXRuby3
|
|
|
22
22
|
spec.ignore %w{
|
|
23
23
|
wxTheColourDatabase
|
|
24
24
|
}
|
|
25
|
+
if Config.instance.wx_version >= '3.3.0'
|
|
26
|
+
spec.ignore 'wxColourDatabase::GetAllNames', ignore_doc: false
|
|
27
|
+
spec.add_extend_code 'wxColourDatabase', <<~__HEREDOC
|
|
28
|
+
VALUE get_all_names() const
|
|
29
|
+
{
|
|
30
|
+
wxVector<wxString> nms = $self->GetAllNames();
|
|
31
|
+
VALUE rb_nms = rb_ary_new();
|
|
32
|
+
for (const wxString& nm : nms)
|
|
33
|
+
{
|
|
34
|
+
rb_ary_push(rb_nms, WXSTR_TO_RSTR(nm));
|
|
35
|
+
}
|
|
36
|
+
return rb_nms;
|
|
37
|
+
}
|
|
38
|
+
__HEREDOC
|
|
39
|
+
spec.map 'wxVector<wxString>' => 'Array<String>', swig: false do
|
|
40
|
+
map_out code: ''
|
|
41
|
+
end
|
|
42
|
+
end
|
|
25
43
|
spec.ignore [
|
|
26
44
|
'wxClientDisplayRect(int *,int *,int *,int *)',
|
|
27
45
|
'wxDisplaySize(int *,int *)',
|
|
@@ -38,7 +56,7 @@ module WXRuby3
|
|
|
38
56
|
if ( TYPE($input) == T_DATA )
|
|
39
57
|
{
|
|
40
58
|
void* argp$argnum;
|
|
41
|
-
SWIG_ConvertPtr($input, &argp$argnum, $1_descriptor,
|
|
59
|
+
SWIG_ConvertPtr($input, &argp$argnum, $1_descriptor, 0);
|
|
42
60
|
$1 = reinterpret_cast< $1_basetype * >(argp$argnum);
|
|
43
61
|
}
|
|
44
62
|
else
|
|
@@ -60,16 +78,14 @@ module WXRuby3
|
|
|
60
78
|
wxPoint::x wxPoint::y
|
|
61
79
|
wxRealPoint::x wxRealPoint::y
|
|
62
80
|
]
|
|
63
|
-
spec.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
end
|
|
72
|
-
spec.ignore('wxStockCursor.wxCURSOR_COPY_ARROW') unless Config.instance.features_set?('__WXOSX__')
|
|
81
|
+
spec.ignore_unless('WXGTK', 'wxStockCursor.wxCURSOR_DEFAULT')
|
|
82
|
+
spec.ignore_unless 'WXX11', %w{
|
|
83
|
+
wxStockCursor.wxCURSOR_CROSS_REVERSE
|
|
84
|
+
wxStockCursor.wxCURSOR_DOUBLE_ARROW
|
|
85
|
+
wxStockCursor.wxCURSOR_BASED_ARROW_UP
|
|
86
|
+
wxStockCursor.wxCURSOR_BASED_ARROW_DOWN
|
|
87
|
+
}
|
|
88
|
+
spec.ignore_unless('WXOSX', 'wxStockCursor.wxCURSOR_COPY_ARROW')
|
|
73
89
|
spec.add_extend_code 'wxRect', <<~__HEREDOC
|
|
74
90
|
wxRect add(const wxRect &rect) const {
|
|
75
91
|
return (*(const wxRect*)$self) + rect;
|
|
@@ -34,9 +34,7 @@ module WXRuby3
|
|
|
34
34
|
'wxGraphicsContext::DrawLines(size_t, const wxPoint2DDouble *, wxPolygonFillMode)',
|
|
35
35
|
'wxGraphicsContext::StrokeLines(size_t, const wxPoint2DDouble *)',
|
|
36
36
|
'wxGraphicsContext::StrokeLines (size_t, const wxPoint2DDouble *, const wxPoint2DDouble *)'
|
|
37
|
-
|
|
38
|
-
spec.ignore 'wxGraphicsContext::Create(const wxPrinterDC &)'
|
|
39
|
-
end
|
|
37
|
+
spec.ignore_unless(Config::AnyOf.new('WXMSW', 'WXOSX', 'USE_GTKPRINT'), 'wxGraphicsContext::Create(const wxPrinterDC &)')
|
|
40
38
|
spec.add_header_code <<~__HEREDOC
|
|
41
39
|
// special free funcs are needed to clean up Dashes array if it has been
|
|
42
40
|
// set; wxWidgets does not do this automatically so will leak if not
|
|
@@ -229,7 +227,7 @@ module WXRuby3
|
|
|
229
227
|
__CODE
|
|
230
228
|
end
|
|
231
229
|
# add convenience method providing efficient gc memory management
|
|
232
|
-
|
|
230
|
+
if Config.instance.features_set?('USE_PRINTING_ARCHITECTURE', Director.AnyOf(*%w[WXMSW WXOSX USE_GTKPRINT]))
|
|
233
231
|
spec.add_extend_code 'wxGraphicsContext', <<~__HEREDOC
|
|
234
232
|
static VALUE draw_on(const wxPrinterDC& dc)
|
|
235
233
|
{
|
|
@@ -182,12 +182,12 @@ module WXRuby3
|
|
|
182
182
|
static WxRuby_ID ga_mouse_id("mouse");
|
|
183
183
|
|
|
184
184
|
inline wxGridActivationResult
|
|
185
|
-
array_to_wxGridActivationResult(VALUE rbarr)
|
|
185
|
+
array_to_wxGridActivationResult(VALUE self, const char* method, VALUE rbarr)
|
|
186
186
|
{
|
|
187
187
|
if (rbarr == Qnil ||
|
|
188
188
|
!(TYPE(rbarr) == T_ARRAY || TYPE(rbarr) == T_SYMBOL))
|
|
189
189
|
{
|
|
190
|
-
Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
190
|
+
Swig::DirectorTypeMismatchException::raise(self, method, SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
191
191
|
"in output value of type 'wxGridActivationResult'");
|
|
192
192
|
}
|
|
193
193
|
if (TYPE(rbarr) == T_SYMBOL)
|
|
@@ -197,7 +197,7 @@ module WXRuby3
|
|
|
197
197
|
else if (SYM2ID(rbarr) == ga_show_editor_id())
|
|
198
198
|
return wxGridActivationResult::DoEdit();
|
|
199
199
|
else
|
|
200
|
-
Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
200
|
+
Swig::DirectorTypeMismatchException::raise(self, method, SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
201
201
|
"in output value of type 'wxGridActivationResult'");
|
|
202
202
|
}
|
|
203
203
|
else
|
|
@@ -206,7 +206,7 @@ module WXRuby3
|
|
|
206
206
|
VALUE rbStr = rb_ary_shift(rbarr); // could be nil
|
|
207
207
|
if (rbAction == Qnil || TYPE(rbAction) != T_SYMBOL)
|
|
208
208
|
{
|
|
209
|
-
Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
209
|
+
Swig::DirectorTypeMismatchException::raise(self, method, SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
210
210
|
"in output value of type 'wxGridActivationResult'");
|
|
211
211
|
}
|
|
212
212
|
else if (SYM2ID(rbAction) == ga_change_id() && rbStr != Qnil)
|
|
@@ -220,7 +220,7 @@ module WXRuby3
|
|
|
220
220
|
else if (SYM2ID(rbAction) == ga_show_editor_id())
|
|
221
221
|
return wxGridActivationResult::DoEdit();
|
|
222
222
|
else
|
|
223
|
-
Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
223
|
+
Swig::DirectorTypeMismatchException::raise(self, method, SWIG_ErrorType(SWIG_ArgError(SWIG_ERROR)),
|
|
224
224
|
"in output value of type 'wxGridActivationResult'");
|
|
225
225
|
}
|
|
226
226
|
}
|
|
@@ -366,7 +366,7 @@ module WXRuby3
|
|
|
366
366
|
obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(grid), SWIGTYPE_p_wxGrid, 0 );
|
|
367
367
|
obj3 = wxGridActivationSource_to_array(actSource);
|
|
368
368
|
result = rb_funcall(swig_get_self(), try_activate_id(), 4,obj0,obj1,obj2,obj3);
|
|
369
|
-
return array_to_wxGridActivationResult(result);
|
|
369
|
+
return array_to_wxGridActivationResult(swig_get_self(), "try_activate", result);
|
|
370
370
|
__METHOD__
|
|
371
371
|
elsif !helpers_added && line["SwigDirector_#{module_name}::SwigDirector_#{module_name}(VALUE self"]
|
|
372
372
|
# insert helper methods
|
|
@@ -87,10 +87,13 @@ module WXRuby3
|
|
|
87
87
|
__CODE
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
spec.ignore 'wxGrid::GetSelectedBlocks' # ignore
|
|
90
|
+
spec.ignore 'wxGrid::GetSelectedBlocks', ignore_doc: false # ignore
|
|
91
|
+
spec.map 'wxGridBlocks' => 'Array<Wx::GRID::GridBlockCoords>', swig: false do
|
|
92
|
+
map_out code: ''
|
|
93
|
+
end
|
|
91
94
|
# add rubified API (finish in pure Ruby)
|
|
92
95
|
spec.add_extend_code 'wxGrid', <<~__HEREDOC
|
|
93
|
-
VALUE
|
|
96
|
+
VALUE each_selected_block()
|
|
94
97
|
{
|
|
95
98
|
VALUE rc = Qnil;
|
|
96
99
|
if (rb_block_given_p())
|
|
@@ -103,6 +106,34 @@ module WXRuby3
|
|
|
103
106
|
}
|
|
104
107
|
return rc;
|
|
105
108
|
}
|
|
109
|
+
|
|
110
|
+
VALUE each_selected_row_block()
|
|
111
|
+
{
|
|
112
|
+
VALUE rc = Qnil;
|
|
113
|
+
if (rb_block_given_p())
|
|
114
|
+
{
|
|
115
|
+
wxGridBlockCoordsVector sel = $self->GetSelectedRowBlocks();
|
|
116
|
+
for (const wxGridBlockCoords& gbc : sel)
|
|
117
|
+
{
|
|
118
|
+
rc = rb_yield (SWIG_NewPointerObj(new wxGridBlockCoords(gbc), SWIGTYPE_p_wxGridBlockCoords, SWIG_POINTER_OWN));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return rc;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
VALUE each_selected_col_block()
|
|
125
|
+
{
|
|
126
|
+
VALUE rc = Qnil;
|
|
127
|
+
if (rb_block_given_p())
|
|
128
|
+
{
|
|
129
|
+
wxGridBlockCoordsVector sel = $self->GetSelectedColBlocks();
|
|
130
|
+
for (const wxGridBlockCoords& gbc : sel)
|
|
131
|
+
{
|
|
132
|
+
rc = rb_yield (SWIG_NewPointerObj(new wxGridBlockCoords(gbc), SWIGTYPE_p_wxGridBlockCoords, SWIG_POINTER_OWN));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return rc;
|
|
136
|
+
}
|
|
106
137
|
__HEREDOC
|
|
107
138
|
|
|
108
139
|
spec.ignore 'wxGrid::GetGridWindowOffset(const wxGridWindow *, int &, int &) const'
|
|
@@ -113,7 +144,7 @@ module WXRuby3
|
|
|
113
144
|
typedef wxGrid::TabBehaviour TabBehaviour;
|
|
114
145
|
__HEREDOC
|
|
115
146
|
|
|
116
|
-
spec.map 'wxGridBlockCoordsVector' => 'Array<Wx::GRID::GridBlockCoords' do
|
|
147
|
+
spec.map 'wxGridBlockCoordsVector' => 'Array<Wx::GRID::GridBlockCoords>' do
|
|
117
148
|
map_out code: <<~__CODE
|
|
118
149
|
$result = rb_ary_new();
|
|
119
150
|
for (const wxGridBlockCoords& gbc: $1)
|
|
@@ -16,7 +16,7 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
-
spec.items << 'wxHelpControllerBase'
|
|
19
|
+
spec.items << 'wxHelpControllerBase' << 'helpfrm.h'
|
|
20
20
|
spec.fold_bases(spec.module_name => 'wxHelpControllerBase')
|
|
21
21
|
spec.rename_for_ruby('Init' => "#{spec.module_name}::Initialize")
|
|
22
22
|
# ignore these (pure virtual) decls
|
|
@@ -25,9 +25,12 @@ module WXRuby3
|
|
|
25
25
|
spec.ignore('wxIcon::wxIcon(const char *const *)', 'wxIcon::wxIcon(const char[],int,int)')
|
|
26
26
|
# xml specs incorrectly list this method for MWS while it does not exist anymore
|
|
27
27
|
spec.ignore('wxIcon::ConvertToDisabled')
|
|
28
|
-
|
|
28
|
+
if Config.platform == :mingw
|
|
29
|
+
spec.ignore 'wxIconBundle::wxIconBundle(const wxString &, WXHINSTANCE)',
|
|
30
|
+
'wxIconBundle::AddIcon(const wxString&,WXHINSTANCE)',
|
|
31
|
+
'wxIcon::CreateFromHICON'
|
|
32
|
+
else
|
|
29
33
|
spec.override_inheritance_chain('wxIcon', %w[wxBitmap wxGDIObject wxObject])
|
|
30
|
-
spec.ignore 'wxIconBundle::wxIconBundle(const wxString &, WXHINSTANCE)'
|
|
31
34
|
end
|
|
32
35
|
super
|
|
33
36
|
end
|
|
@@ -55,12 +55,11 @@ module WXRuby3
|
|
|
55
55
|
(void)self->EditLabel(item);
|
|
56
56
|
}
|
|
57
57
|
__HEREDOC
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
end
|
|
58
|
+
spec.ignore_unless 'HAS_LISTCTRL_COLUMN_ORDER',
|
|
59
|
+
%w[wxListCtrl::GetColumnIndexFromOrder
|
|
60
|
+
wxListCtrl::GetColumnOrder
|
|
61
|
+
wxListCtrl::GetColumnsOrder
|
|
62
|
+
wxListCtrl::SetColumnsOrder]
|
|
64
63
|
# these are protected so ignored by default but we want them here
|
|
65
64
|
spec.regard %w[
|
|
66
65
|
wxListCtrl::OnGetItemAttr
|
|
@@ -28,9 +28,7 @@ module WXRuby3
|
|
|
28
28
|
wxLanguageInfo::DescriptionNative
|
|
29
29
|
wxLanguageInfo::LayoutDirection
|
|
30
30
|
]
|
|
31
|
-
|
|
32
|
-
spec.regard('wxLanguageInfo::WinLang', 'wxLanguageInfo::WinSublang')
|
|
33
|
-
end
|
|
31
|
+
spec.ignore_unless('WXMSW', 'wxLanguageInfo::WinLang', 'wxLanguageInfo::WinSublang')
|
|
34
32
|
end
|
|
35
33
|
end # class Locale
|
|
36
34
|
|
data/rakelib/lib/director/log.rb
CHANGED
|
@@ -14,16 +14,13 @@ module WXRuby3
|
|
|
14
14
|
|
|
15
15
|
def setup
|
|
16
16
|
spec.gc_as_object %w[wxLog wxLogChain wxLogInterposer wxLogWindow]
|
|
17
|
-
spec.items.concat(%w[wxLogBuffer wxLogChain wxLogGui wxLogStderr
|
|
17
|
+
spec.items.concat(%w[wxLogBuffer wxLogChain wxLogGui wxLogStderr wxLogTextCtrl wxLogInterposer wxLogWindow wxLogNull wxLogRecordInfo])
|
|
18
18
|
spec.no_proxy(%w[wxLogBuffer wxLogGui wxLogStderr wxLogTextCtrl wxLogWindow])
|
|
19
19
|
spec.force_proxy(%w[wxLogInterposer])
|
|
20
20
|
spec.ignore 'wxLog::SetFormatter'
|
|
21
21
|
spec.regard %w[wxLog::DoLogRecord wxLog::DoLogTextAtLevel wxLog::DoLogText]
|
|
22
22
|
spec.ignore 'wxLogBuffer::Flush'
|
|
23
23
|
spec.ignore 'wxLogGui::Flush'
|
|
24
|
-
if Config.instance.features_set?('wxUSE_STD_IOSTREAM')
|
|
25
|
-
spec.ignore 'wxLogStream'
|
|
26
|
-
end
|
|
27
24
|
# wxLogStderr
|
|
28
25
|
spec.ignore 'wxLogStderr::wxLogStderr'
|
|
29
26
|
spec.add_extend_code 'wxLogStderr', <<~__HEREDOC
|
|
@@ -16,6 +16,60 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
+
spec.map 'const wxURI&' => 'URI' do
|
|
20
|
+
add_header <<~__CODE
|
|
21
|
+
static VALUE wxRuby_GetRubyURIClass()
|
|
22
|
+
{
|
|
23
|
+
static VALUE rb_cURI = Qnil;
|
|
24
|
+
if (NIL_P(rb_cURI))
|
|
25
|
+
{
|
|
26
|
+
rb_require("uri");
|
|
27
|
+
rb_cURI = rb_const_get(rb_cObject, rb_intern("URI"));
|
|
28
|
+
}
|
|
29
|
+
return rb_cURI;
|
|
30
|
+
}
|
|
31
|
+
static WxRuby_ID to_s_id("to_s");
|
|
32
|
+
__CODE
|
|
33
|
+
map_in temp: 'wxURI tmp', code: <<~__CODE
|
|
34
|
+
if (rb_obj_is_kind_of($input, wxRuby_GetRubyURIClass()))
|
|
35
|
+
{
|
|
36
|
+
VALUE s = rb_funcall($input, to_s_id(), 0);
|
|
37
|
+
tmp = wxURI(RSTR_TO_WXSTR(s));
|
|
38
|
+
$1 = &tmp;
|
|
39
|
+
}
|
|
40
|
+
else
|
|
41
|
+
{
|
|
42
|
+
rb_raise(rb_eArgError, "expected URI for %d", $argnum-1);
|
|
43
|
+
}
|
|
44
|
+
__CODE
|
|
45
|
+
map_typecheck precedence: 'POINTER', code: '$1 = rb_obj_is_kind_of($input, wxRuby_GetRubyURIClass());'
|
|
46
|
+
end
|
|
47
|
+
spec.map 'wxFileOffset' => 'Integer' do
|
|
48
|
+
# we need these inline methods here as we do not want SWIG to preprocess the code
|
|
49
|
+
# as it will do in the type mapping code sections
|
|
50
|
+
add_header_code <<~__CODE
|
|
51
|
+
inline wxFileOffset __ruby2wxFileOffset(VALUE num)
|
|
52
|
+
{
|
|
53
|
+
#ifdef wxHAS_HUGE_FILES
|
|
54
|
+
return static_cast<wxFileOffset> (NUM2LL(num));
|
|
55
|
+
#else
|
|
56
|
+
return static_cast<wxFileOffset> (NUM2LONG(num));
|
|
57
|
+
#endif
|
|
58
|
+
}
|
|
59
|
+
inline VALUE __wxFileOffset2ruby(wxFileOffset offs)
|
|
60
|
+
{
|
|
61
|
+
#ifdef wxHAS_HUGE_FILES
|
|
62
|
+
return LL2NUM(offs);
|
|
63
|
+
#else
|
|
64
|
+
return LONG2NUM(offs);
|
|
65
|
+
#endif
|
|
66
|
+
}
|
|
67
|
+
__CODE
|
|
68
|
+
|
|
69
|
+
map_in code: '$1 = __ruby2wxFileOffset($input);'
|
|
70
|
+
map_out code: '$result = __wxFileOffset2ruby($1);'
|
|
71
|
+
map_typecheck code: '$1 = TYPE($input) == T_FIXNUM;'
|
|
72
|
+
end
|
|
19
73
|
spec.do_not_generate :variables, :enums, :defines, :functions
|
|
20
74
|
end
|
|
21
75
|
end # class MediaCtrl
|
|
@@ -85,6 +85,8 @@ module WXRuby3
|
|
|
85
85
|
spec.add_swig_code <<~__HEREDOC
|
|
86
86
|
%markfunc wxMenu "mark_wxMenu";
|
|
87
87
|
__HEREDOC
|
|
88
|
+
# ignore MSW specific method
|
|
89
|
+
spec.ignore 'wxMenu::MSWCommand'
|
|
88
90
|
# fix SWIG's problems with const& return value
|
|
89
91
|
spec.ignore('wxMenu::GetTitle', ignore_doc: false) # keep doc
|
|
90
92
|
spec.add_extend_code 'wxMenu', <<~__HEREDOC
|
|
@@ -92,7 +94,20 @@ module WXRuby3
|
|
|
92
94
|
wxString const& title = $self->GetTitle();
|
|
93
95
|
return &const_cast<wxString&> (title);
|
|
94
96
|
}
|
|
95
|
-
|
|
97
|
+
|
|
98
|
+
VALUE each_item()
|
|
99
|
+
{
|
|
100
|
+
VALUE rc = Qnil;
|
|
101
|
+
for (size_t i=0; i<$self->GetMenuItemCount(); ++i)
|
|
102
|
+
{
|
|
103
|
+
wxMenuItem *wx_menu_item = $self->FindItemByPosition(i);
|
|
104
|
+
VALUE rb_menu_item = SWIG_NewPointerObj(SWIG_as_voidptr(wx_menu_item),
|
|
105
|
+
SWIGTYPE_p_wxMenuItem, 0);
|
|
106
|
+
rc = rb_yield(rb_menu_item);
|
|
107
|
+
}
|
|
108
|
+
return rc;
|
|
109
|
+
}
|
|
110
|
+
__HEREDOC
|
|
96
111
|
super
|
|
97
112
|
end
|
|
98
113
|
end # class Menu
|
|
@@ -21,11 +21,11 @@ module WXRuby3
|
|
|
21
21
|
spec.ignore(%w[wxMenuItem::GetLabel wxMenuItem::GetName wxMenuItem::GetText wxMenuItem::SetText wxMenuItem::GetLabelFromText])
|
|
22
22
|
# ignore this as there is no implementation anymore
|
|
23
23
|
spec.ignore 'wxMenuItem::GetAccelFromString'
|
|
24
|
-
spec.
|
|
24
|
+
spec.ignore_unless('USE_ACCEL', 'wxMenuItem::GetAccel')
|
|
25
25
|
spec.no_proxy 'wxMenuItem::GetAccel'
|
|
26
26
|
spec.ignore 'wxMenuItem::GetBitmap(bool)' # not portable
|
|
27
27
|
if Config.instance.wx_version >= '3.3.0'
|
|
28
|
-
spec.
|
|
28
|
+
spec.ignore_unless('WXMSW', 'wxMenuItem::SetBackgroundColour','wxMenuItem::SetFont','wxMenuItem::SetTextColour')
|
|
29
29
|
end
|
|
30
30
|
super
|
|
31
31
|
end
|
|
@@ -53,12 +53,6 @@ module WXRuby3
|
|
|
53
53
|
spec.suppress_warning(473, 'wxPGArrayEditorDialog::GetTextCtrlValidator')
|
|
54
54
|
# make sure SWIG knows this type is an enum
|
|
55
55
|
spec.add_swig_code 'enum wxPGPropertyFlags;'
|
|
56
|
-
if Config.instance.wx_version >= '3.3.0'
|
|
57
|
-
# internal use only
|
|
58
|
-
spec.ignore 'wxPG_PROP_PASSWORD',
|
|
59
|
-
'wxPG_PROP_USE_CHECKBOX',
|
|
60
|
-
'wxPG_PROP_USE_DCC'
|
|
61
|
-
end
|
|
62
56
|
end
|
|
63
57
|
end # class PGArrayEditorDialog
|
|
64
58
|
|