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
|
@@ -51,7 +51,7 @@ module WXRuby3
|
|
|
51
51
|
int res = SWIG_ConvertPtr(rb_ary_entry($input, 0), &ptr, SWIGTYPE_p_wxWindow, 0 | 0);
|
|
52
52
|
if (!SWIG_IsOK(res))
|
|
53
53
|
{
|
|
54
|
-
Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(res)), "in primary output value of type 'wxWindow *'");
|
|
54
|
+
Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", SWIG_ErrorType(SWIG_ArgError(res)), "in primary output value of type 'wxWindow *'");
|
|
55
55
|
}
|
|
56
56
|
$result = wxPGWindowList(static_cast<wxWindow*>(ptr));
|
|
57
57
|
if (RARRAY_LEN($input) > 1)
|
|
@@ -59,7 +59,7 @@ module WXRuby3
|
|
|
59
59
|
res = SWIG_ConvertPtr(rb_ary_entry($input, 1), &ptr, SWIGTYPE_p_wxWindow, 0 | 0);
|
|
60
60
|
if (!SWIG_IsOK(res))
|
|
61
61
|
{
|
|
62
|
-
Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(res)), "in secundary output value of type 'wxWindow *'");
|
|
62
|
+
Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", SWIG_ErrorType(SWIG_ArgError(res)), "in secundary output value of type 'wxWindow *'");
|
|
63
63
|
}
|
|
64
64
|
$result.SetSecondary(static_cast<wxWindow*>(ptr));
|
|
65
65
|
}
|
|
@@ -141,7 +141,7 @@ module WXRuby3
|
|
|
141
141
|
spec.map_apply 'int * OUTPUT' => 'int* pIndex'
|
|
142
142
|
end
|
|
143
143
|
# for UIntProperty and IntProperty
|
|
144
|
-
if Config.instance.features_set?('
|
|
144
|
+
if Config.instance.features_set?('USE_LONGLONG')
|
|
145
145
|
# wxLongLong mapping to be considered before considering 'long' (see typecheck precedence)
|
|
146
146
|
spec.map 'const wxLongLong&' => 'Integer' do
|
|
147
147
|
map_in temp: 'wxLongLong tmp', code: <<~__CODE
|
|
@@ -174,7 +174,7 @@ module WXRuby3
|
|
|
174
174
|
void* argp$argnum = NULL;
|
|
175
175
|
if ( TYPE($input) == T_DATA )
|
|
176
176
|
{
|
|
177
|
-
if (SWIG_IsOK(SWIG_ConvertPtr($input, &argp$argnum, $1_descriptor,
|
|
177
|
+
if (SWIG_IsOK(SWIG_ConvertPtr($input, &argp$argnum, $1_descriptor, 0)) && argp$argnum)
|
|
178
178
|
{
|
|
179
179
|
$1 = reinterpret_cast< $1_basetype * >(argp$argnum);
|
|
180
180
|
}
|
|
@@ -200,7 +200,7 @@ module WXRuby3
|
|
|
200
200
|
}
|
|
201
201
|
else
|
|
202
202
|
{
|
|
203
|
-
Swig::DirectorTypeMismatchException::raise(rb_eTypeError,
|
|
203
|
+
Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", rb_eTypeError,
|
|
204
204
|
"on_custom_string_edit should return a string, or nil");
|
|
205
205
|
}
|
|
206
206
|
}
|
|
@@ -54,7 +54,30 @@ module WXRuby3
|
|
|
54
54
|
{
|
|
55
55
|
return (*self)[idx];
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
|
|
58
|
+
VALUE each_label()
|
|
59
|
+
{
|
|
60
|
+
VALUE rc = Qnil;
|
|
61
|
+
for (unsigned int i=0; i<$self->GetCount() ;++i)
|
|
62
|
+
{
|
|
63
|
+
VALUE rb_lbl = WXSTR_TO_RSTR($self->GetLabel(i));
|
|
64
|
+
rc = rb_yield(rb_lbl);
|
|
65
|
+
}
|
|
66
|
+
return rc;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
VALUE each_entry()
|
|
70
|
+
{
|
|
71
|
+
VALUE rc = Qnil;
|
|
72
|
+
for (unsigned int i=0; i<$self->GetCount() ;++i)
|
|
73
|
+
{
|
|
74
|
+
wxPGChoiceEntry *entry = &($self->Item(i));
|
|
75
|
+
VALUE rb_entry = SWIG_NewPointerObj(SWIG_as_voidptr(entry), SWIGTYPE_p_wxPGChoiceEntry, 0);
|
|
76
|
+
rc = rb_yield(rb_entry);
|
|
77
|
+
}
|
|
78
|
+
return rc;
|
|
79
|
+
}
|
|
80
|
+
__HEREDOC
|
|
58
81
|
# for GetIndicesForStrings
|
|
59
82
|
spec.map 'wxArrayString *unmatched' => 'Array,nil' do
|
|
60
83
|
|
|
@@ -39,16 +39,11 @@ module WXRuby3
|
|
|
39
39
|
spec.extend_interface 'wxPropertyGridInterface',
|
|
40
40
|
'void SetPropertyValues(const wxVariant &list, const wxPGPropArgCls& defaultCategory = 0)'
|
|
41
41
|
# optionals
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
spec.ignore 'wxPropertyGridInterface::GetPropertyValueAsDateTime'
|
|
48
|
-
end
|
|
49
|
-
unless Config.instance.features_set?('wxUSE_VALIDATORS')
|
|
50
|
-
spec.ignore 'wxPropertyGridInterface::GetPropertyValidator'
|
|
51
|
-
end
|
|
42
|
+
spec.ignore_unless 'USE_LONGLONG',
|
|
43
|
+
'wxPropertyGridInterface::GetPropertyValueAsLongLong',
|
|
44
|
+
'wxPropertyGridInterface::GetPropertyValueAsULongLong'
|
|
45
|
+
spec.ignore_unless 'USE_DATETIME', 'wxPropertyGridInterface::GetPropertyValueAsDateTime'
|
|
46
|
+
spec.ignore_unless 'USE_VALIDATORS', 'wxPropertyGridInterface::GetPropertyValidator'
|
|
52
47
|
# fix incorrect XML documentation
|
|
53
48
|
spec.ignore 'wxPropertyGridInterface::SetPropertyImage', ignore_doc: false # ignore non-const BitmapBundle arg decl
|
|
54
49
|
# and add correct decl
|
|
@@ -224,7 +224,7 @@ module WXRuby3
|
|
|
224
224
|
int res = SWIG_ConvertPtr(rb_ary_entry(rb_int_arr, i), &ptr,SWIGTYPE_p_wxRichTextAttr, 0);
|
|
225
225
|
if (!SWIG_IsOK(res))
|
|
226
226
|
{
|
|
227
|
-
Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(res)), "in output value of type '""Wx::RTC::RichTextAttr""'");
|
|
227
|
+
Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", SWIG_ErrorType(SWIG_ArgError(res)), "in output value of type '""Wx::RTC::RichTextAttr""'");
|
|
228
228
|
}
|
|
229
229
|
wxRichTextAttr* wx_att = static_cast< wxRichTextAttr* >(ptr);
|
|
230
230
|
$1.Add(*wx_att);
|
|
@@ -45,6 +45,17 @@ module WXRuby3
|
|
|
45
45
|
}
|
|
46
46
|
return rc;
|
|
47
47
|
}
|
|
48
|
+
|
|
49
|
+
VALUE each_child()
|
|
50
|
+
{
|
|
51
|
+
VALUE rc = Qnil;
|
|
52
|
+
for (size_t i=0; i<$self->GetChildCount() ;++i)
|
|
53
|
+
{
|
|
54
|
+
wxRichTextObject *rto = $self->GetChild(i);
|
|
55
|
+
rc = rb_yield(wxRuby_RichTextObject2Ruby(rto, 0));
|
|
56
|
+
}
|
|
57
|
+
return rc;
|
|
58
|
+
}
|
|
48
59
|
__HEREDOC
|
|
49
60
|
|
|
50
61
|
spec.new_object 'wxRichTextLine::Clone'
|
|
@@ -161,6 +172,20 @@ module WXRuby3
|
|
|
161
172
|
}
|
|
162
173
|
$self->MoveFromList(wx_lst);
|
|
163
174
|
}
|
|
175
|
+
|
|
176
|
+
VALUE each_line()
|
|
177
|
+
{
|
|
178
|
+
VALUE rc = Qnil;
|
|
179
|
+
const wxRichTextLineVector &lines = $self->GetLines();
|
|
180
|
+
int lnr = 0;
|
|
181
|
+
for (const wxRichTextLine* line : lines)
|
|
182
|
+
{
|
|
183
|
+
VALUE rb_ln = SWIG_NewPointerObj(SWIG_as_voidptr(const_cast<wxRichTextLine*> (line)), SWIGTYPE_p_wxRichTextLine, 0);
|
|
184
|
+
rc = rb_yield(rb_ln);
|
|
185
|
+
++lnr;
|
|
186
|
+
}
|
|
187
|
+
return rc;
|
|
188
|
+
}
|
|
164
189
|
__CODE
|
|
165
190
|
|
|
166
191
|
spec.do_not_generate(:typedefs, :variables, :enums, :defines, :functions)
|
|
@@ -15,7 +15,7 @@ module WXRuby3
|
|
|
15
15
|
class RichTextCtrl < Window
|
|
16
16
|
|
|
17
17
|
include Typemap::RichText
|
|
18
|
-
if Config.instance.features_set?('
|
|
18
|
+
if Config.instance.features_set?('USE_DATETIME')
|
|
19
19
|
include Typemap::DateTime
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -117,9 +117,7 @@ module WXRuby3
|
|
|
117
117
|
wxRichTextCtrl::ProcessMouseMovement
|
|
118
118
|
wxRichTextCtrl::ProcessBackKey
|
|
119
119
|
]
|
|
120
|
-
|
|
121
|
-
spec.ignore %w[wxRichTextCtrl::GetDragStartTime wxRichTextCtrl::SetDragStartTime]
|
|
122
|
-
end
|
|
120
|
+
spec.ignore_unless 'USE_DATETIME', %w[wxRichTextCtrl::GetDragStartTime wxRichTextCtrl::SetDragStartTime]
|
|
123
121
|
spec.add_header_code 'extern VALUE wxRuby_RichTextObject2Ruby(const wxRichTextObject *wx_rto, int own);'
|
|
124
122
|
spec.swig_import('swig/classes/include/wxTextAttr.h',
|
|
125
123
|
'swig/classes/include/wxRichTextObject.h',
|
|
@@ -153,7 +151,7 @@ module WXRuby3
|
|
|
153
151
|
}
|
|
154
152
|
else
|
|
155
153
|
{
|
|
156
|
-
Swig::DirectorTypeMismatchException::raise(rb_eTypeError,
|
|
154
|
+
Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", rb_eTypeError,
|
|
157
155
|
"expected an Integer, or nil on failure");
|
|
158
156
|
}
|
|
159
157
|
}
|
|
@@ -208,6 +206,18 @@ module WXRuby3
|
|
|
208
206
|
__CODE
|
|
209
207
|
|
|
210
208
|
end
|
|
209
|
+
spec.add_extend_code 'wxRichTextCtrl', <<~__HEREDOC
|
|
210
|
+
VALUE each_line()
|
|
211
|
+
{
|
|
212
|
+
VALUE rc = Qnil;
|
|
213
|
+
for (int i=0; i<$self->GetNumberOfLines() ;++i)
|
|
214
|
+
{
|
|
215
|
+
VALUE rb_ln = WXSTR_TO_RSTR($self->GetLineText(i));
|
|
216
|
+
rc = rb_yield(rb_ln);
|
|
217
|
+
}
|
|
218
|
+
return rc;
|
|
219
|
+
}
|
|
220
|
+
__HEREDOC
|
|
211
221
|
end
|
|
212
222
|
end # class RichTextCtrl
|
|
213
223
|
|
|
@@ -27,11 +27,13 @@ module WXRuby3
|
|
|
27
27
|
wxRichTextFormattingDialog::SetStyle
|
|
28
28
|
wxRichTextFormattingDialog::SetStyleDefinition
|
|
29
29
|
]
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
if Config.instance.wx_version < '3.3.0'
|
|
31
|
+
# add undocumented methods
|
|
32
|
+
spec.extend_interface 'wxRichTextFormattingDialog',
|
|
33
|
+
'wxRichTextObject* GetObject() const',
|
|
34
|
+
'void SetObject(wxRichTextObject* obj)',
|
|
35
|
+
'virtual bool ApplyStyle(wxRichTextCtrl* ctrl, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO)'
|
|
36
|
+
end
|
|
35
37
|
spec.add_header_code 'extern VALUE wxRuby_RichTextObject2Ruby(const wxRichTextObject *wx_rto, int own);'
|
|
36
38
|
spec.disown 'wxRichTextFormattingDialogFactory *factory'
|
|
37
39
|
spec.suppress_warning(473, 'wxRichTextFormattingDialogFactory::CreatePage')
|
|
@@ -83,13 +83,15 @@ module WXRuby3
|
|
|
83
83
|
return rb_rtsd;
|
|
84
84
|
}
|
|
85
85
|
__HEREDOC
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
if Config.instance.wx_version < '3.3.0'
|
|
87
|
+
# add undocumented convenience method
|
|
88
|
+
spec.extend_interface 'wxRichTextListStyleDefinition',
|
|
89
|
+
'void SetAttributes(int i, int leftIndent, int leftSubIndent, int bulletStyle, const wxString& bulletSymbol = wxEmptyString)'
|
|
90
|
+
# undocumented methods
|
|
91
|
+
spec.extend_interface 'wxRichTextStyleSheet',
|
|
92
|
+
'wxRichTextStyleSheet(const wxRichTextStyleSheet& sheet)',
|
|
93
|
+
'void Copy(const wxRichTextStyleSheet& sheet)'
|
|
94
|
+
end
|
|
93
95
|
# redefine these since we need to be able to selectively specify 'disown'
|
|
94
96
|
spec.ignore 'wxRichTextStyleSheet::AddCharacterStyle',
|
|
95
97
|
'wxRichTextStyleSheet::AddListStyle',
|
|
@@ -0,0 +1,42 @@
|
|
|
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 SashEvent < Event
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
super
|
|
19
|
+
spec.disable_proxies
|
|
20
|
+
# missing from interface docs
|
|
21
|
+
spec.add_swig_code '%constant int EVT_SASH_DRAGGED_RANGE = wxEVT_SASH_DRAGGED;'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def doc_generator
|
|
25
|
+
SashEventDocGenerator.new(self)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end # class SashEvent
|
|
29
|
+
|
|
30
|
+
end # class Director
|
|
31
|
+
|
|
32
|
+
class SashEventDocGenerator < DocGenerator
|
|
33
|
+
|
|
34
|
+
protected def gen_constants_doc(fdoc)
|
|
35
|
+
super
|
|
36
|
+
xref_table = package.all_modules.reduce(DocGenerator.constants_db) { |db, mod| db[mod] }
|
|
37
|
+
gen_constant_doc(fdoc, 'EVT_SASH_DRAGGED_RANGE', xref_table['EVT_SASH_DRAGGED'], '')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end # module WXRuby3
|
|
@@ -14,7 +14,6 @@ module WXRuby3
|
|
|
14
14
|
|
|
15
15
|
def setup
|
|
16
16
|
# Any nested sizers passed to Add() in are owned by C++, not GC'd by Ruby
|
|
17
|
-
spec.disown 'wxSizer* sizer'
|
|
18
17
|
case spec.module_name
|
|
19
18
|
when 'wxSizer'
|
|
20
19
|
spec.items << 'wxSizerFlags'
|
|
@@ -26,6 +25,79 @@ module WXRuby3
|
|
|
26
25
|
'wxSizer::Insert(size_t, wxSizerItem *)',
|
|
27
26
|
'wxSizer::Prepend(wxSizerItem *)'
|
|
28
27
|
spec.ignore 'wxSizer::Remove(wxWindow *)' # long time deprecated
|
|
28
|
+
# need to adjust sizer arg name to apply disown specs
|
|
29
|
+
spec.ignore 'wxSizer::Add(wxSizer *, const wxSizerFlags &)',
|
|
30
|
+
'wxSizer::Add(wxSizer *, int, int, int, wxObject *)',
|
|
31
|
+
'wxSizer::Insert(size_t, wxSizer *, const wxSizerFlags &)',
|
|
32
|
+
'wxSizer::Insert(size_t, wxSizer *, int, int, int, wxObject *)',
|
|
33
|
+
'wxSizer::Prepend(wxSizer *, const wxSizerFlags &)',
|
|
34
|
+
'wxSizer::Prepend(wxSizer *, int, int, int, wxObject *)',
|
|
35
|
+
ignore_doc: false
|
|
36
|
+
spec.extend_interface 'wxSizer',
|
|
37
|
+
'wxSizerItem* Add(wxSizer *sizer_disown, const wxSizerFlags &flags)',
|
|
38
|
+
'wxSizerItem* Add(wxSizer *sizer_disown, int proportion=0, int flag=0, int border=0, wxObject *userData=NULL)',
|
|
39
|
+
'wxSizerItem* Insert(size_t index, wxSizer *sizer_disown, const wxSizerFlags &flags)',
|
|
40
|
+
'wxSizerItem* Insert(size_t index, wxSizer *sizer_disown, int proportion=0, int flag=0, int border=0, wxObject *userData=NULL)',
|
|
41
|
+
'wxSizerItem* Prepend(wxSizer *sizer_disown, const wxSizerFlags &flags)',
|
|
42
|
+
'wxSizerItem* Prepend(wxSizer *sizer_disown, int proportion=0, int flag=0, int border=0, wxObject *userData=NULL)'
|
|
43
|
+
spec.disown 'wxSizer* sizer_disown'
|
|
44
|
+
# needs custom impl to transfer ownership of detached items
|
|
45
|
+
spec.ignore 'wxSizer::Detach(wxSizer*)',
|
|
46
|
+
'wxSizer::Detach(int)', ignore_doc: false
|
|
47
|
+
spec.add_extend_code 'wxSizer', <<~__HEREDOC
|
|
48
|
+
bool detach(wxSizer* szr)
|
|
49
|
+
{
|
|
50
|
+
if ($self->Detach(szr))
|
|
51
|
+
{
|
|
52
|
+
VALUE rb_szr = SWIG_RubyInstanceFor(szr);
|
|
53
|
+
if (rb_szr && !NIL_P(rb_szr))
|
|
54
|
+
{
|
|
55
|
+
// transfer ownership to Ruby
|
|
56
|
+
RDATA(rb_szr)->dfree = GcSizerFreeFunc;
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
bool detach(int itm_nr)
|
|
64
|
+
{
|
|
65
|
+
wxSizerItem* itm = $self->GetItem(itm_nr);
|
|
66
|
+
if (itm)
|
|
67
|
+
{
|
|
68
|
+
VALUE rb_szr = Qnil;
|
|
69
|
+
if (itm->IsSizer())
|
|
70
|
+
{
|
|
71
|
+
rb_szr = SWIG_RubyInstanceFor(itm->GetSizer());
|
|
72
|
+
}
|
|
73
|
+
if ($self->Detach(itm_nr))
|
|
74
|
+
{
|
|
75
|
+
if (rb_szr && !NIL_P(rb_szr))
|
|
76
|
+
{
|
|
77
|
+
// transfer ownership to Ruby
|
|
78
|
+
RDATA(rb_szr)->dfree = GcSizerFreeFunc;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
VALUE each_child()
|
|
87
|
+
{
|
|
88
|
+
const wxSizerItemList& child_list = self->GetChildren();
|
|
89
|
+
VALUE rc = Qnil;
|
|
90
|
+
wxSizerItemList::compatibility_iterator node = child_list.GetFirst();
|
|
91
|
+
while (node)
|
|
92
|
+
{
|
|
93
|
+
wxSizerItem *wx_si = node->GetData();
|
|
94
|
+
VALUE rb_si = SWIG_NewPointerObj(wx_si, SWIGTYPE_p_wxSizerItem, 0);
|
|
95
|
+
rc = rb_yield(rb_si);
|
|
96
|
+
node = node->GetNext();
|
|
97
|
+
}
|
|
98
|
+
return rc;
|
|
99
|
+
}
|
|
100
|
+
__HEREDOC
|
|
29
101
|
# Typemap for GetChildren - convert to array of Sizer items
|
|
30
102
|
spec.map 'wxSizerItemList&' => 'Array<Wx::SizerItem>' do
|
|
31
103
|
map_out code: <<~__CODE
|
|
@@ -50,6 +122,12 @@ module WXRuby3
|
|
|
50
122
|
spec.gc_as_untracked 'wxGBSpan', 'wxGBPosition'
|
|
51
123
|
# cannot use this with wxRuby
|
|
52
124
|
spec.ignore 'wxGridBagSizer::Add(wxGBSizerItem *)'
|
|
125
|
+
# need to adjust sizer arg name to apply disown specs
|
|
126
|
+
spec.ignore 'wxGridBagSizer::Add(wxSizer *, const wxGBPosition &, const wxGBSpan &, int, int, wxObject *)',
|
|
127
|
+
ignore_doc: false
|
|
128
|
+
spec.extend_interface 'wxGridBagSizer',
|
|
129
|
+
'wxSizerItem *Add(wxSizer *sizer_disown, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)'
|
|
130
|
+
spec.disown 'wxSizer* sizer_disown'
|
|
53
131
|
end
|
|
54
132
|
# no real use for allowing these to be overloaded but a whole lot of grieve
|
|
55
133
|
# if we do allow it
|
|
@@ -22,6 +22,28 @@ module WXRuby3
|
|
|
22
22
|
# ignore constructors
|
|
23
23
|
spec.ignore 'wxSizerItem::wxSizerItem'
|
|
24
24
|
spec.ignore(%w[wxSizerItem::SetSizer wxSizerItem::SetSpacer wxSizerItem::SetWindow])
|
|
25
|
+
# need to adjust sizer arg name to apply disown specs
|
|
26
|
+
spec.ignore 'wxSizerItem::AssignSizer(wxSizer *)', ignore_doc: false
|
|
27
|
+
spec.extend_interface 'wxSizerItem',
|
|
28
|
+
'void AssignSizer(wxSizer *sizer_disown)'
|
|
29
|
+
spec.disown 'wxSizer *sizer_disown'
|
|
30
|
+
# needs custom impl to properly transfer ownership to Ruby
|
|
31
|
+
spec.ignore 'wxSizerItem::DetachSizer', ignore_doc: false
|
|
32
|
+
spec.add_extend_code 'wxSizerItem', <<~__HEREDOC
|
|
33
|
+
void detach_sizer()
|
|
34
|
+
{
|
|
35
|
+
if ($self->IsSizer())
|
|
36
|
+
{
|
|
37
|
+
VALUE rb_szr = SWIG_RubyInstanceFor($self->GetSizer());
|
|
38
|
+
if (rb_szr && !NIL_P(rb_szr))
|
|
39
|
+
{
|
|
40
|
+
// transfer ownership to Ruby
|
|
41
|
+
RDATA(rb_szr)->dfree = GcSizerFreeFunc;
|
|
42
|
+
}
|
|
43
|
+
$self->DetachSizer();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
__HEREDOC
|
|
25
47
|
when 'wxGBSizerItem'
|
|
26
48
|
spec.make_abstract 'wxGBSizerItem'
|
|
27
49
|
# ignore constructors
|
|
@@ -16,11 +16,10 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
end
|
|
19
|
+
# missing from implementation currently for WXOSX (and WXQT)
|
|
20
|
+
spec.ignore_unless(Config::AnyOf.new(*%w[WXMSW WXGTK]),
|
|
21
|
+
'wxStaticBox::wxStaticBox(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)',
|
|
22
|
+
'wxStaticBox::Create(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)')
|
|
24
23
|
end
|
|
25
24
|
end # class StaticBox
|
|
26
25
|
|
|
@@ -87,6 +87,18 @@ module WXRuby3
|
|
|
87
87
|
# TODO : these will need some sort of stream solution to be useful
|
|
88
88
|
spec.ignore 'wxStyledTextCtrl::GetCharacterPointer',
|
|
89
89
|
'wxStyledTextCtrl::GetRangePointer'
|
|
90
|
+
spec.add_extend_code 'wxStyledTextCtrl', <<~__HEREDOC
|
|
91
|
+
VALUE each_line()
|
|
92
|
+
{
|
|
93
|
+
VALUE rc = Qnil;
|
|
94
|
+
for (int i=0; i<$self->GetNumberOfLines() ;++i)
|
|
95
|
+
{
|
|
96
|
+
VALUE rb_ln = WXSTR_TO_RSTR($self->GetLineText(i));
|
|
97
|
+
rc = rb_yield(rb_ln);
|
|
98
|
+
}
|
|
99
|
+
return rc;
|
|
100
|
+
}
|
|
101
|
+
__HEREDOC
|
|
90
102
|
spec.do_not_generate(:variables, :enums, :defines, :functions)
|
|
91
103
|
end
|
|
92
104
|
end # class StyledTextCtrl
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
module WXRuby3
|
|
10
|
+
|
|
11
|
+
class Director
|
|
12
|
+
|
|
13
|
+
class TaskBarButton < Director
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
super
|
|
17
|
+
spec.items << 'wxThumbBarButton'
|
|
18
|
+
spec.no_proxy 'wxTaskBarButton'
|
|
19
|
+
spec.gc_as_untracked 'wxTaskBarButton', 'wxThumbBarButton'
|
|
20
|
+
spec.disown 'wxThumbBarButton *button'
|
|
21
|
+
# superfluous and causing trouble for disown policy (re-implemented in pure Ruby)
|
|
22
|
+
spec.ignore 'wxTaskBarButton::RemoveThumbBarButton(wxThumbBarButton*)', ignore_doc: false
|
|
23
|
+
spec.new_object 'wxTaskBarButton::RemoveThumbBarButton(int)'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -16,7 +16,7 @@ module WXRuby3
|
|
|
16
16
|
|
|
17
17
|
def setup
|
|
18
18
|
super
|
|
19
|
-
spec.
|
|
19
|
+
spec.gc_as_object
|
|
20
20
|
# need a custom implementation to handle event handler proc cleanup
|
|
21
21
|
spec.add_header_code <<~__HEREDOC
|
|
22
22
|
class WXRubyTaskBarIcon : public wxTaskBarIcon
|
|
@@ -26,9 +26,11 @@ module WXRuby3
|
|
|
26
26
|
virtual ~WXRubyTaskBarIcon()
|
|
27
27
|
{
|
|
28
28
|
wxRuby_ReleaseEvtHandlerProcs(this);
|
|
29
|
-
|
|
29
|
+
SWIG_RubyUnlinkObjects(this);
|
|
30
|
+
SWIG_RubyRemoveTracking(this);
|
|
31
|
+
}
|
|
30
32
|
};
|
|
31
|
-
|
|
33
|
+
__HEREDOC
|
|
32
34
|
spec.use_class_implementation 'wxTaskBarIcon', 'WXRubyTaskBarIcon'
|
|
33
35
|
# this one is protected so ignored by default but we want it here
|
|
34
36
|
# (we do not want GetPopupMenu available for override in Ruby)
|
|
@@ -54,23 +56,13 @@ module WXRuby3
|
|
|
54
56
|
int swig_res = SWIG_ConvertPtr(result, &ptr, $1_descriptor, 0 | SWIG_POINTER_DISOWN);
|
|
55
57
|
if (!SWIG_IsOK(swig_res))
|
|
56
58
|
{
|
|
57
|
-
Swig::DirectorTypeMismatchException::raise(rb_eTypeError,
|
|
59
|
+
Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", rb_eTypeError,
|
|
58
60
|
"create_popup_menu must return a Wx::Menu, or nil");
|
|
59
61
|
}
|
|
60
62
|
$result = reinterpret_cast < wxMenu * > (ptr);
|
|
61
63
|
}
|
|
62
64
|
__CODE
|
|
63
65
|
end
|
|
64
|
-
spec.add_extend_code 'wxTaskBarIcon', <<~__HEREDOC
|
|
65
|
-
// Explicitly dispose of a TaskBarIcon; needed for clean exits on
|
|
66
|
-
// Windows.
|
|
67
|
-
VALUE destroy()
|
|
68
|
-
{
|
|
69
|
-
delete $self;
|
|
70
|
-
return Qnil;
|
|
71
|
-
}
|
|
72
|
-
__HEREDOC
|
|
73
|
-
# already generated with TaskBarIconEvent
|
|
74
66
|
spec.do_not_generate :variables, :enums, :defines, :functions
|
|
75
67
|
end
|
|
76
68
|
end # class TaskBarIcon
|
|
@@ -32,7 +32,7 @@ module WXRuby3
|
|
|
32
32
|
# we will not wrap it but create a simplified interface when USE_SPELLCHECK is enabled which
|
|
33
33
|
# we will complement in pure Ruby to provide Wx::TextProofOptions class
|
|
34
34
|
spec.ignore('wxTextCtrl::EnableProofCheck', 'wxTextCtrl::GetProofCheckOptions')
|
|
35
|
-
if Config.instance.features_set?('
|
|
35
|
+
if Config.instance.features_set?('USE_SPELLCHECK')
|
|
36
36
|
spec.add_extend_code 'wxTextCtrl', <<~__HEREDOC
|
|
37
37
|
VALUE DoEnableProofCheck(bool spelling, bool grammar, const wxString& language)
|
|
38
38
|
{
|
|
@@ -99,6 +99,17 @@ module WXRuby3
|
|
|
99
99
|
else if(TYPE(value)==T_FLOAT)
|
|
100
100
|
*self << (double)(RFLOAT_VALUE(value));
|
|
101
101
|
}
|
|
102
|
+
|
|
103
|
+
VALUE each_line()
|
|
104
|
+
{
|
|
105
|
+
VALUE rc = Qnil;
|
|
106
|
+
for (int i=0; i<$self->GetNumberOfLines() ;++i)
|
|
107
|
+
{
|
|
108
|
+
VALUE rb_ln = WXSTR_TO_RSTR($self->GetLineText(i));
|
|
109
|
+
rc = rb_yield(rb_ln);
|
|
110
|
+
}
|
|
111
|
+
return rc;
|
|
112
|
+
}
|
|
102
113
|
__HEREDOC
|
|
103
114
|
spec.swig_import 'swig/classes/include/wxTextAttr.h'
|
|
104
115
|
end
|
|
@@ -41,15 +41,14 @@ module WXRuby3
|
|
|
41
41
|
wxTopLevelWindow::RestoreToGeometry
|
|
42
42
|
wxTopLevelWindow::GeometrySerializer
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
# #ignore_unless if wxRuby one day supports 'WXUNIVERSAL'
|
|
45
|
+
spec.ignore %w{
|
|
46
46
|
wxTopLevelWindow::IsUsingNativeDecorations
|
|
47
47
|
wxTopLevelWindow::UseNativeDecorations
|
|
48
48
|
wxTopLevelWindow::UseNativeDecorationsByDefault
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
spec.
|
|
52
|
-
spec.ignore('wxTopLevelWindow::OSXSetModified','wxTopLevelWindow::OSXIsModified') unless Config.instance.features_set?('__WXOSX__')
|
|
50
|
+
spec.ignore_unless('WXMSW', 'wxTopLevelWindow::MSWGetSystemMenu')
|
|
51
|
+
spec.ignore_unless('WXOSX', 'wxTopLevelWindow::OSXSetModified','wxTopLevelWindow::OSXIsModified')
|
|
53
52
|
spec.swig_import 'swig/classes/include/wxDefs.h'
|
|
54
53
|
# incorrectly documented here
|
|
55
54
|
spec.override_events 'wxTopLevelWindow',
|