wxruby3 1.3.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +16 -12
- data/README.md +4 -3
- data/ext/wxruby3/include/wxRubyApp.h +9 -9
- data/ext/wxruby3/swig/mark_free_impl.i +47 -11
- data/ext/wxruby3/swig/wx.i +30 -12
- data/lib/wx/aui/auifloatframe.rb +1 -1
- data/lib/wx/aui/auimanager.rb +5 -16
- data/lib/wx/aui/auinotebook.rb +1 -1
- data/lib/wx/aui/require.rb +0 -2
- data/lib/wx/core/acceleratortable.rb +1 -1
- data/lib/wx/core/animation.rb +2 -2
- data/lib/wx/core/app.rb +1 -1
- data/lib/wx/core/artprovider.rb +4 -4
- data/lib/wx/core/bitmap.rb +1 -1
- data/lib/wx/core/bitmap_combobox.rb +2 -2
- data/lib/wx/core/clientdc.rb +1 -1
- data/lib/wx/core/clipboard.rb +4 -4
- data/lib/wx/core/colour.rb +1 -1
- data/lib/wx/core/combobox.rb +1 -1
- data/lib/wx/core/config.rb +7 -7
- data/lib/wx/core/controlwithitems.rb +3 -3
- data/lib/wx/core/data_object.rb +4 -4
- data/lib/wx/core/dataformat.rb +9 -3
- data/lib/wx/core/dialog.rb +3 -2
- data/lib/wx/core/event.rb +3 -3
- data/lib/wx/core/evthandler.rb +317 -289
- data/lib/wx/core/file_dialog.rb +1 -1
- data/lib/wx/core/find_replace_dialog.rb +2 -2
- data/lib/wx/core/functions.rb +1 -1
- data/lib/wx/core/genericdirctrl.rb +1 -1
- data/lib/wx/core/geometry.rb +2 -2
- data/lib/wx/core/graphics_pen_info.rb +1 -1
- data/lib/wx/core/helpprovider.rb +1 -1
- data/lib/wx/core/icon.rb +1 -1
- data/lib/wx/core/image.rb +2 -2
- data/lib/wx/core/imagelist.rb +1 -1
- data/lib/wx/core/locale.rb +5 -5
- data/lib/wx/core/log.rb +8 -8
- data/lib/wx/core/menu.rb +3 -3
- data/lib/wx/core/module_ext.rb +16 -0
- data/lib/wx/core/owner_drawn_combobox.rb +3 -3
- data/lib/wx/core/pen_info.rb +1 -1
- data/lib/wx/core/persistence_manager.rb +2 -2
- data/lib/wx/core/rect.rb +1 -1
- data/lib/wx/core/secret_store.rb +1 -1
- data/lib/wx/core/simplehelpprovider.rb +1 -1
- data/lib/wx/core/sizer.rb +8 -8
- data/lib/wx/core/splash_screen.rb +1 -1
- data/lib/wx/core/standard_paths.rb +1 -1
- data/lib/wx/core/task_bar_button.rb +1 -1
- data/lib/wx/core/text_entry.rb +1 -1
- data/lib/wx/core/textctrl.rb +2 -2
- data/lib/wx/core/timer.rb +2 -2
- data/lib/wx/core/tree_ctrl.rb +1 -1
- data/lib/wx/core/v_list_box.rb +1 -1
- data/lib/wx/core/validator.rb +2 -2
- data/lib/wx/core/variant.rb +2 -2
- data/lib/wx/core/window.rb +48 -2
- data/lib/wx/core/xmlresource.rb +4 -4
- data/lib/wx/core.rb +2 -0
- data/lib/wx/doc/evthandler.rb +1 -0
- data/lib/wx/doc/tip_window.rb +22 -0
- data/lib/wx/grid/grid.rb +3 -3
- data/lib/wx/grid/require.rb +0 -2
- data/lib/wx/html/htmlhelpcontroller.rb +1 -1
- data/lib/wx/html/htmlwindow.rb +1 -1
- data/lib/wx/html/require.rb +0 -2
- data/lib/wx/html/simple_html_listbox.rb +3 -3
- data/lib/wx/keyword_ctors.rb +14 -7
- data/lib/wx/keyword_defs.rb +7 -7
- data/lib/wx/pg/pg_properties.rb +1 -1
- data/lib/wx/pg/pg_property.rb +3 -3
- data/lib/wx/pg/property_grid.rb +2 -2
- data/lib/wx/pg/property_grid_interface.rb +2 -2
- data/lib/wx/pg/require.rb +0 -2
- data/lib/wx/prt/previewframe.rb +1 -1
- data/lib/wx/prt/require.rb +0 -2
- data/lib/wx/rbn/ribbon_control.rb +1 -1
- data/lib/wx/rbn/ribbon_page.rb +1 -1
- data/lib/wx/rbn/ribbon_panel.rb +1 -1
- data/lib/wx/rtc/require.rb +0 -2
- data/lib/wx/rtc/rich_text_composite_object.rb +1 -1
- data/lib/wx/rtc/rich_text_ctrl.rb +1 -1
- data/lib/wx/rtc/rich_text_paragraph.rb +1 -1
- data/lib/wx/rtc/richtext_buffer.rb +3 -3
- data/lib/wx/rtc/richtext_formatting_dialog.rb +2 -2
- data/lib/wx/rtc/richtext_style_organiser_dialog.rb +1 -1
- data/lib/wx/rtc/symbol_picker_dialog.rb +1 -1
- data/lib/wx/stc/require.rb +0 -2
- data/lib/wx/stc/styled_text_ctrl.rb +1 -1
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/base.rb +8 -2
- data/lib/wx/wxruby/cmd/setup.rb +61 -37
- data/rakelib/gem.rb +8 -4
- data/rakelib/lib/config/mingw.rb +1 -1
- data/rakelib/lib/director/about_dialog_info.rb +1 -0
- data/rakelib/lib/director/aui_manager.rb +63 -57
- data/rakelib/lib/director/aui_notebook.rb +7 -0
- data/rakelib/lib/director/colour.rb +1 -1
- data/rakelib/lib/director/data_format.rb +1 -1
- data/rakelib/lib/director/event.rb +1 -0
- data/rakelib/lib/director/event_handler.rb +82 -46
- data/rakelib/lib/director/functions.rb +0 -3
- data/rakelib/lib/director/list_ctrl.rb +14 -10
- data/rakelib/lib/director/locale.rb +2 -0
- data/rakelib/lib/director/num_validator.rb +7 -0
- data/rakelib/lib/director/tip_window.rb +34 -0
- data/rakelib/lib/director/window.rb +9 -1
- data/rakelib/lib/director.rb +0 -1
- data/rakelib/lib/generate/doc/evt_handler.yaml +31 -12
- data/rakelib/lib/specs/interfaces.rb +1 -0
- data/tests/test_combo_ctrl.rb +1 -0
- data/tests/test_event_handling.rb +158 -31
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db9a443c40a2d1cd6ea3d993fe894ad61d1ce737c2a871877ef88ca06d39a629
|
4
|
+
data.tar.gz: 43cd46e0283fb6c6706362caa9c6c098bc2cff55216e1d98509c04912afdcf6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67d5f62560609aa87f68563a8a51304e87242ca9a084d74ce7f4b2bb65e8765a0d349530c04716d5e34a22e0d62a61e1a2f127fc4a6ebc05f0b4b1591357fd66
|
7
|
+
data.tar.gz: bafef4ef1d2f06912ccb0c0dad7d86ed236b6c81862c0309e05fad54de634448d18d78f78bef43d70d1952abaeb38fafb86c7624f015597e6ed5aa46e3dbc602
|
data/INSTALL.md
CHANGED
@@ -14,13 +14,13 @@ The default gem installation command
|
|
14
14
|
gem install wxruby3
|
15
15
|
```
|
16
16
|
|
17
|
-
and the setup command
|
17
|
+
and the setup command (only needed for installations without matching prebuilt binary package)
|
18
18
|
|
19
19
|
```shell
|
20
20
|
wxruby setup
|
21
21
|
```
|
22
22
|
|
23
|
-
|
23
|
+
should always result in a successfully installed wxRuby3 version.
|
24
24
|
|
25
25
|
> **NOTE**<br>
|
26
26
|
> Currently installing the wxRuby3 gem for the system supplied Ruby on MacOSX systems does not work.<br>
|
@@ -71,16 +71,15 @@ The standard release artifacts at [Github](https://github.com/mcorino/wxRuby3/re
|
|
71
71
|
packages for all supported OS platforms which are automatically built and uploaded for every release.<br>
|
72
72
|
The following tables lists the packages provided by the current wxRuby3 release process:
|
73
73
|
|
74
|
-
| OS | Distributions
|
75
|
-
|
76
|
-
| Linux | OpenSuSE Leap (latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
77
|
-
| Linux | Fedora (latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
78
|
-
| Linux | Debian (latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
79
|
-
| Linux | Ubuntu (latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
80
|
-
| Windows | NA
|
81
|
-
| OSX | MacOSX
|
82
|
-
| OSX | MacOSX
|
83
|
-
| OSX | MacOSX 14 | ARM64 | Latest stable Ruby |
|
74
|
+
| OS | Distributions | Architectures | Rubies |
|
75
|
+
|---------|----------------------------------------|-------------------------|----------------------------------------------------|
|
76
|
+
| Linux | OpenSuSE Leap (at least latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
77
|
+
| Linux | Fedora (at least latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
78
|
+
| Linux | Debian (at least latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
79
|
+
| Linux | Ubuntu (at least latest stable) | x86_64 <b>and</b> ARM64 | Distro provided Ruby <b>and</b> Latest stable Ruby |
|
80
|
+
| Windows | NA | x86_64 | Latest stable Ruby |
|
81
|
+
| OSX | MacOSX 13 | x86_64 <b>and</b> ARM64 | Latest stable Ruby |
|
82
|
+
| OSX | MacOSX 14 | ARM64 | Latest stable Ruby |
|
84
83
|
|
85
84
|
### User created packages
|
86
85
|
|
@@ -300,6 +299,11 @@ The initial message shown (between lines starting with '---' ) is indicative of
|
|
300
299
|
on options passed to the setup command.<br>
|
301
300
|
Building the wxRuby3 native extensions and generating reference documentation will always happen.
|
302
301
|
|
302
|
+
Depending on your configuration the `setup` command will take quite a while. On a recent, modern PC with multicore
|
303
|
+
high-end CPU and plenty of memory doing a full source build (both wxWidgets and wxRuby3 libraries) typically takes
|
304
|
+
10-15 minutes. For PC's with older CPU's this could however take up to a full hour (of which the larger part is take
|
305
|
+
up by building the wxWidgets libraries).
|
306
|
+
|
303
307
|
#### Disable prompting for automatic install
|
304
308
|
|
305
309
|
To prevent having the setup procedure asking consent the setup procedure can be started with the `--autoinstall` option
|
data/README.md
CHANGED
@@ -17,8 +17,8 @@ Reviving wxRuby
|
|
17
17
|
|
18
18
|
wxRuby3 is a cross-platform GUI library for Ruby, based on the mature [wxWidgets](https://wxwidgets.org)
|
19
19
|
GUI toolkit for C++. It uses native widgets wherever possible, providing
|
20
|
-
the correct look, feel and behaviour to GUI applications on Windows,
|
21
|
-
|
20
|
+
the correct look, feel and behaviour to GUI applications on Windows, macOS
|
21
|
+
and Linux/GTK. wxRuby aims to provide a comprehensive solution to
|
22
22
|
developing professional-standard desktop applications in Ruby.
|
23
23
|
|
24
24
|
## Usage examples
|
@@ -136,7 +136,8 @@ wxruby setup
|
|
136
136
|
This last command is a fully automated setup procedure provided by the wxRuby3 **CLI** installed with the gem. This
|
137
137
|
procedure (by default) will analyze your system and install (after asking your consent) any missing software
|
138
138
|
requirements and build the wxRuby3 extension libraries (including a embedded copy of wxWidgets if necessary). It may
|
139
|
-
take quite a while depending on your system
|
139
|
+
take quite a while depending on your system (around 10-15 minutes on a modern PC but could be significantly longer
|
140
|
+
on 'older' PC's) but you can mostly sit back and relax.
|
140
141
|
|
141
142
|
> **NOTE**<br>
|
142
143
|
> A source based installation requires the availability of the Ruby development headers. User installed Rubies in most cases
|
@@ -68,15 +68,15 @@ public:
|
|
68
68
|
else if (rb_obj_is_kind_of(rb_obj, wxRuby_GetDefaultEventClass()) )
|
69
69
|
rb_gc_mark(rb_obj);
|
70
70
|
}
|
71
|
-
else if (TYPE(rb_obj) == T_ARRAY )
|
72
|
-
{
|
73
|
-
VALUE proc = rb_ary_entry(rb_obj, 0);
|
74
|
-
if (rb_obj_is_kind_of(proc, rb_cProc) || rb_obj_is_kind_of(proc, rb_cMethod))
|
75
|
-
{
|
76
|
-
// keep the async call alive
|
77
|
-
rb_gc_mark(rb_obj);
|
78
|
-
}
|
79
|
-
}
|
71
|
+
// else if (TYPE(rb_obj) == T_ARRAY )
|
72
|
+
// {
|
73
|
+
// VALUE proc = rb_ary_entry(rb_obj, 0);
|
74
|
+
// if (rb_obj_is_kind_of(proc, rb_cProc) || rb_obj_is_kind_of(proc, rb_cMethod))
|
75
|
+
// {
|
76
|
+
// // keep the async call alive
|
77
|
+
// rb_gc_mark(rb_obj);
|
78
|
+
// }
|
79
|
+
// }
|
80
80
|
}
|
81
81
|
|
82
82
|
// Implements GC protection across wxRuby. Always called because
|
@@ -50,6 +50,21 @@ WXRUBY_EXPORT void GC_SetWindowDeleted(void *ptr)
|
|
50
50
|
// garbage collected at next phase
|
51
51
|
wxRuby_ReleaseEvtHandlerProcs(ptr);
|
52
52
|
|
53
|
+
// wxWidgets requires any pushed event handlers to be popped before
|
54
|
+
// the window gets destroyed. Handle this automatically in wxRuby3.
|
55
|
+
wxWindowBase* wxwin = (wxWindowBase*)ptr;
|
56
|
+
wxEvtHandler* wxevh = wxwin->GetEventHandler();
|
57
|
+
while (wxevh && wxevh != wxwin)
|
58
|
+
{
|
59
|
+
wxEvtHandler* wxevh_next = wxevh->GetNextHandler();
|
60
|
+
VALUE rb_evh = SWIG_RubyInstanceFor(wxevh);
|
61
|
+
// only remove tracked Ruby instantiated handlers since others are
|
62
|
+
// handlers internally set by wxWidgets C++ code and will be removed there
|
63
|
+
if (!NIL_P(rb_evh))
|
64
|
+
wxwin->RemoveEventHandler(wxevh); // remove and forget
|
65
|
+
wxevh = wxevh_next;
|
66
|
+
}
|
67
|
+
|
53
68
|
// Wx calls this by standard after the window destroy event is
|
54
69
|
// handled, but we need to call it before while the object link is
|
55
70
|
// still around
|
@@ -219,10 +234,27 @@ WXRUBY_EXPORT void GC_mark_wxWindow(void *ptr)
|
|
219
234
|
std::wcout << "* GC_mark_wxWindow - found sizer" << std::endl;
|
220
235
|
#endif
|
221
236
|
VALUE rb_sizer = SWIG_RubyInstanceFor(wx_sizer);
|
222
|
-
|
237
|
+
if ( rb_sizer != Qnil )
|
223
238
|
GC_mark_SizerBelongingToWindow(wx_sizer, rb_sizer);
|
224
239
|
}
|
225
240
|
|
241
|
+
// mark any pushed event handlers
|
242
|
+
#ifdef __WXRB_DEBUG__
|
243
|
+
if (wxRuby_TraceLevel()>2)
|
244
|
+
std::wcout << "* GC_mark_wxWindow - getting event handler" << std::endl;
|
245
|
+
#endif
|
246
|
+
wxEvtHandler* evh = wx_win->GetEventHandler();
|
247
|
+
while (evh && evh != wx_win)
|
248
|
+
{
|
249
|
+
#ifdef __WXRB_DEBUG__
|
250
|
+
if (wxRuby_TraceLevel()>2)
|
251
|
+
std::wcout << "* GC_mark_wxWindow - marking event handler" << std::endl;
|
252
|
+
#endif
|
253
|
+
VALUE rb_evh = SWIG_RubyInstanceFor(evh);
|
254
|
+
rb_gc_mark(rb_evh);
|
255
|
+
evh = evh->GetNextHandler();
|
256
|
+
}
|
257
|
+
|
226
258
|
#ifdef __WXRB_DEBUG__
|
227
259
|
if (wxRuby_TraceLevel()>2)
|
228
260
|
std::wcout << "* GC_mark_wxWindow - getting caret" << std::endl;
|
@@ -235,22 +267,26 @@ WXRUBY_EXPORT void GC_mark_wxWindow(void *ptr)
|
|
235
267
|
std::wcout << "* GC_mark_wxWindow - found caret" << std::endl;
|
236
268
|
#endif
|
237
269
|
VALUE rb_caret = SWIG_RubyInstanceFor(wx_caret);
|
238
|
-
|
270
|
+
rb_gc_mark(rb_caret);
|
239
271
|
}
|
240
272
|
|
241
|
-
|
242
|
-
if (
|
243
|
-
std::wcout << "* GC_mark_wxWindow - getting droptarget" << std::endl;
|
244
|
-
#endif
|
245
|
-
wxDropTarget* wx_droptarget = wx_win->GetDropTarget();
|
246
|
-
if ( wx_droptarget )
|
273
|
+
// be careful; getting drop target may require fully created window (default ctors do not call Create())
|
274
|
+
if (wx_win->GetId() != wxID_ANY) // any fully created window has an Id != wxID_ANY
|
247
275
|
{
|
248
276
|
#ifdef __WXRB_DEBUG__
|
249
277
|
if (wxRuby_TraceLevel()>2)
|
250
|
-
std::wcout << "* GC_mark_wxWindow -
|
278
|
+
std::wcout << "* GC_mark_wxWindow - getting droptarget" << std::endl;
|
251
279
|
#endif
|
252
|
-
|
253
|
-
|
280
|
+
wxDropTarget* wx_droptarget = wx_win->GetDropTarget();
|
281
|
+
if ( wx_droptarget )
|
282
|
+
{
|
283
|
+
#ifdef __WXRB_DEBUG__
|
284
|
+
if (wxRuby_TraceLevel()>2)
|
285
|
+
std::wcout << "* GC_mark_wxWindow - found droptarget" << std::endl;
|
286
|
+
#endif
|
287
|
+
VALUE rb_droptarget = SWIG_RubyInstanceFor(wx_droptarget);
|
288
|
+
rb_gc_mark(rb_droptarget);
|
289
|
+
}
|
254
290
|
}
|
255
291
|
|
256
292
|
#ifdef __WXRB_DEBUG__
|
data/ext/wxruby3/swig/wx.i
CHANGED
@@ -222,6 +222,7 @@ WXRUBY_EXPORT VALUE wxRuby_WrapWxObjectInRuby(wxObject *wx_obj)
|
|
222
222
|
// generated on the C++ side.
|
223
223
|
// Cached reference to EvtHandler evt_type_id -> ruby_event_class map
|
224
224
|
static VALUE Evt_Type_Map = NULL;
|
225
|
+
static VALUE WxRuby_cAsyncProcCallEvent = Qnil;
|
225
226
|
|
226
227
|
#ifdef __WXRB_DEBUG__
|
227
228
|
WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(void* rcvr, wxEvent *wx_event)
|
@@ -240,17 +241,31 @@ WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(wxEvent *wx_event)
|
|
240
241
|
std::wcout << "* wxRuby_WrapWxEventInRuby(rcvr=" << rcvr << ", " << wx_event << ":{" << wx_event->GetEventType() << "@" << wx_event->GetEventObject() << "})" << std::endl;
|
241
242
|
#endif
|
242
243
|
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
// Check we have a valid class; warn and map to default Wx::Event if not
|
249
|
-
if ( NIL_P(rb_event_class) )
|
244
|
+
VALUE rb_event_type_id = INT2NUM(wx_event->GetEventType());
|
245
|
+
VALUE rb_event_class = Qnil;
|
246
|
+
// wxEVT_ASYNC_METHOD_CALL is a special case which has no Ruby class mapping registered
|
247
|
+
if (wx_event->GetEventType() == wxEVT_ASYNC_METHOD_CALL)
|
250
248
|
{
|
251
|
-
|
252
|
-
|
253
|
-
|
249
|
+
if (WxRuby_cAsyncProcCallEvent == Qnil)
|
250
|
+
{
|
251
|
+
WxRuby_cAsyncProcCallEvent = rb_eval_string("Wx::AsyncProcCallEvent");
|
252
|
+
}
|
253
|
+
rb_event_class = WxRuby_cAsyncProcCallEvent;
|
254
|
+
}
|
255
|
+
else
|
256
|
+
{
|
257
|
+
// Then, look up the event type in this hash (MUCH faster than calling
|
258
|
+
// EvtHandler.evt_class_for_type method)
|
259
|
+
rb_event_type_id = INT2NUM( wx_event->GetEventType());
|
260
|
+
rb_event_class = rb_hash_aref(Evt_Type_Map, rb_event_type_id);
|
261
|
+
|
262
|
+
// Check we have a valid class; warn and map to default Wx::Event if not
|
263
|
+
if (NIL_P(rb_event_class))
|
264
|
+
{
|
265
|
+
rb_event_class = wxRuby_GetDefaultEventClass ();
|
266
|
+
wxString class_name( wx_event->GetClassInfo()->GetClassName() );
|
267
|
+
rb_warning("Unmapped event type %i (%s)", wx_event->GetEventType(), (const char *)class_name.mb_str());
|
268
|
+
}
|
254
269
|
}
|
255
270
|
|
256
271
|
// Now, see if we have a tracked instance of this object already
|
@@ -264,7 +279,7 @@ WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(wxEvent *wx_event)
|
|
264
279
|
// really the right thing, and not some stale reference.
|
265
280
|
if ( rb_event != Qnil )
|
266
281
|
{
|
267
|
-
if (
|
282
|
+
if (rb_obj_is_kind_of(rb_event, rb_event_class))
|
268
283
|
return rb_event; // OK
|
269
284
|
else
|
270
285
|
SWIG_RubyRemoveTracking((void *)wx_event); // Remove stale ref
|
@@ -275,7 +290,10 @@ WXRUBY_EXPORT VALUE wxRuby_WrapWxEventInRuby(wxEvent *wx_event)
|
|
275
290
|
rb_event = Data_Wrap_Struct(rb_event_class, 0, 0, 0);
|
276
291
|
DATA_PTR(rb_event) = wx_event;
|
277
292
|
// do not forget to mark the instance with the mangled swig type name
|
278
|
-
|
293
|
+
// (as there is no swig_type for the Wx::AsyncProcCallEvent class use it's base Wx::Event)
|
294
|
+
swig_type_info* type = wx_event->GetEventType() == wxEVT_ASYNC_METHOD_CALL ?
|
295
|
+
wxRuby_GetSwigTypeForClass(wxRuby_GetDefaultEventClass()) :
|
296
|
+
wxRuby_GetSwigTypeForClass(rb_event_class);
|
279
297
|
rb_iv_set(rb_event, "@__swigtype__", rb_str_new2(type->name));
|
280
298
|
|
281
299
|
#if __WXRB_DEBUG__
|
data/lib/wx/aui/auifloatframe.rb
CHANGED
@@ -11,7 +11,7 @@ class Wx::AUI::AuiFloatingFrame
|
|
11
11
|
# that designates the event skipped.
|
12
12
|
if Wx::WXWIDGETS_VERSION < '3.3'
|
13
13
|
wx_initialize = instance_method :initialize
|
14
|
-
|
14
|
+
wx_redefine_method :initialize do |*args|
|
15
15
|
wx_initialize.bind(self).call(*args)
|
16
16
|
evt_window_destroy { |evt| evt.skip }
|
17
17
|
end
|
data/lib/wx/aui/auimanager.rb
CHANGED
@@ -8,7 +8,7 @@ module Wx
|
|
8
8
|
class AuiManager
|
9
9
|
|
10
10
|
wx_each_pane = instance_method(:each_pane)
|
11
|
-
|
11
|
+
wx_redefine_method(:each_pane) do |&block|
|
12
12
|
if block
|
13
13
|
wx_each_pane.bind(self).call(&block)
|
14
14
|
else
|
@@ -33,28 +33,17 @@ module Wx
|
|
33
33
|
|
34
34
|
if WXWIDGETS_VERSION >= '3.3.0'
|
35
35
|
|
36
|
-
class
|
36
|
+
class AuiTabLayoutInfo < AuiDockLayoutInfo
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
if block
|
41
|
-
wx_each_pane.bind(self).call(&block)
|
42
|
-
else
|
43
|
-
::Enumerator.new { |y| wx_each_pane.bind(self).call { |p| y << p } }
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def get_panes
|
48
|
-
each_pane.to_a
|
49
|
-
end
|
50
|
-
alias :panes :get_panes
|
38
|
+
alias :pages :get_pages
|
39
|
+
alias :pages= :set_pages
|
51
40
|
|
52
41
|
end
|
53
42
|
|
54
43
|
class AuiDeserializer
|
55
44
|
|
56
45
|
wx_initialize = instance_method(:initialize)
|
57
|
-
|
46
|
+
wx_redefine_method(:initialize) do |manager|
|
58
47
|
wx_initialize.bind(self).call(manager)
|
59
48
|
@manager = manager # prevent GC for lifetime of deserializer
|
60
49
|
end
|
data/lib/wx/aui/auinotebook.rb
CHANGED
@@ -11,7 +11,7 @@ class Wx::AUI::AuiNotebook
|
|
11
11
|
# that designates the event skipped.
|
12
12
|
if Wx::WXWIDGETS_VERSION < '3.3'
|
13
13
|
wx_initialize = instance_method :initialize
|
14
|
-
|
14
|
+
wx_redefine_method :initialize do |*args|
|
15
15
|
wx_initialize.bind(self).call(*args)
|
16
16
|
evt_window_destroy { |evt| evt.skip }
|
17
17
|
end
|
data/lib/wx/aui/require.rb
CHANGED
@@ -16,7 +16,7 @@ class Wx::AcceleratorTable
|
|
16
16
|
# and allow entries to be specified in terser form [mod, key, id]
|
17
17
|
# rather than full AcceleratorEntry.new call.
|
18
18
|
wx_init = self.instance_method(:initialize)
|
19
|
-
|
19
|
+
wx_redefine_method(:initialize) do | *args |
|
20
20
|
# Test for old-style arg passing in a single array
|
21
21
|
if args.length == 1 and args.first.kind_of?(Array) and
|
22
22
|
args.first.all? { | e | e.kind_of?(Wx::AcceleratorEntry) }
|
data/lib/wx/core/animation.rb
CHANGED
@@ -13,7 +13,7 @@ module Wx
|
|
13
13
|
# non-existent file is given to the constructor; otherwise, wx Widgets
|
14
14
|
# just carries on with an empty bitmap, which may cause faults later
|
15
15
|
wx_init = self.instance_method(:initialize)
|
16
|
-
|
16
|
+
wx_redefine_method(:initialize) do | *args |
|
17
17
|
if args[0].kind_of? String
|
18
18
|
if not File.exist?( File.expand_path(args[0]) )
|
19
19
|
Kernel.raise( ArgumentError,
|
@@ -33,7 +33,7 @@ module Wx
|
|
33
33
|
|
34
34
|
# Redefine this method to accept either a single animation or an animation bundle
|
35
35
|
wx_set_animation = self.instance_method(:set_animation)
|
36
|
-
|
36
|
+
wx_redefine_method(:set_animation) do | arg |
|
37
37
|
if Wx::Animation === arg
|
38
38
|
arg = Wx::AnimationBundle.new(arg)
|
39
39
|
end
|
data/lib/wx/core/app.rb
CHANGED
@@ -95,7 +95,7 @@ class Wx::App
|
|
95
95
|
# WxRuby. Such messages usually indicate that the API is being used
|
96
96
|
# incorrectly; the file/line reference points to the place in the
|
97
97
|
# WxWidgets source code where the assertion was made.
|
98
|
-
|
98
|
+
wx_redefine_method :on_assert_failure do |file, line, func, condition, message|
|
99
99
|
warn %Q{Wx WARNING: ASSERT #{condition} fired with "#{message}" at (#{func}@#{file}:#{line})}
|
100
100
|
end
|
101
101
|
|
data/lib/wx/core/artprovider.rb
CHANGED
@@ -14,25 +14,25 @@ class Wx::ArtProvider
|
|
14
14
|
|
15
15
|
class << self
|
16
16
|
wx_push_back = instance_method(:push_back)
|
17
|
-
|
17
|
+
wx_redefine_method(:push_back) do | art_prov |
|
18
18
|
wx_push_back.bind(self).call(art_prov)
|
19
19
|
@__art_provs.push(art_prov)
|
20
20
|
end
|
21
21
|
|
22
22
|
wx_pop = instance_method(:pop)
|
23
|
-
|
23
|
+
wx_redefine_method(:pop) do
|
24
24
|
wx_pop.bind(self).call
|
25
25
|
@__art_provs.pop
|
26
26
|
end
|
27
27
|
|
28
28
|
wx_push = instance_method(:push)
|
29
|
-
|
29
|
+
wx_redefine_method(:push) do | art_prov |
|
30
30
|
wx_push.bind(self).call(art_prov)
|
31
31
|
@__art_provs.unshift(art_prov)
|
32
32
|
end
|
33
33
|
|
34
34
|
wx_delete = instance_method(:delete)
|
35
|
-
|
35
|
+
wx_redefine_method(:delete) do | art_prov |
|
36
36
|
wx_delete.bind(self).call(art_prov)
|
37
37
|
@__art_provs.delete(art_prov)
|
38
38
|
end
|
data/lib/wx/core/bitmap.rb
CHANGED
@@ -78,7 +78,7 @@ module Wx
|
|
78
78
|
# later. Also, be helpful and try to guess the bitmap type from the
|
79
79
|
# filename if it's not specified
|
80
80
|
wx_init = self.instance_method(:initialize)
|
81
|
-
|
81
|
+
wx_redefine_method(:initialize) do | *args |
|
82
82
|
# If creating from a file, check it exists
|
83
83
|
if args[0].kind_of? String
|
84
84
|
if not File.exist?( File.expand_path(args[0]) )
|
@@ -11,7 +11,7 @@ module Wx
|
|
11
11
|
class BitmapComboBox < Wx::ComboBox
|
12
12
|
|
13
13
|
wx_append = instance_method :append
|
14
|
-
|
14
|
+
wx_redefine_method :append do |item, *rest| #bitmap=Wx::NULL_BITMAP, data=nil|
|
15
15
|
if ::Array === item
|
16
16
|
super(item, *rest)
|
17
17
|
elsif rest.empty? || Wx::Bitmap === rest.first
|
@@ -22,7 +22,7 @@ module Wx
|
|
22
22
|
end
|
23
23
|
|
24
24
|
wx_insert = instance_method :insert
|
25
|
-
|
25
|
+
wx_redefine_method :insert do |item, *rest| # bitmap, pos, data=nil|
|
26
26
|
if ::Array === item
|
27
27
|
super(item, *rest)
|
28
28
|
elsif rest.empty? || Wx::Bitmap === rest.first
|
data/lib/wx/core/clientdc.rb
CHANGED
@@ -14,7 +14,7 @@ class Wx::ClientDC
|
|
14
14
|
# always be used via Window#paint, which takes a block receiving the
|
15
15
|
# DC. This ensures that the DC is cleaned up at the correct time,
|
16
16
|
# avoiding errors and segfaults on exit.
|
17
|
-
|
17
|
+
wx_redefine_method(:initialize) do | *args |
|
18
18
|
Kernel.raise RuntimeError,
|
19
19
|
"Do not instantiate ClientDC directly; use Window#paint",
|
20
20
|
caller[1..-1]
|
data/lib/wx/core/clipboard.rb
CHANGED
@@ -29,7 +29,7 @@ class Wx::Clipboard
|
|
29
29
|
Kernel.raise "Could not open clipboard"
|
30
30
|
end
|
31
31
|
yield clip
|
32
|
-
|
32
|
+
ensure
|
33
33
|
clip.close if clip
|
34
34
|
end
|
35
35
|
end
|
@@ -41,19 +41,19 @@ class Wx::Clipboard
|
|
41
41
|
# These methods affect the clipboard contents; each time, update the
|
42
42
|
# record with the changed data contents
|
43
43
|
wx_add_data = instance_method(:add_data)
|
44
|
-
|
44
|
+
wx_redefine_method(:add_data) do | the_data |
|
45
45
|
@@__clip_data << the_data
|
46
46
|
wx_add_data.bind(self).call(the_data)
|
47
47
|
end
|
48
48
|
|
49
49
|
wx_clear = instance_method(:clear)
|
50
|
-
|
50
|
+
wx_redefine_method(:clear) do
|
51
51
|
wx_clear.bind(self).call
|
52
52
|
@@__clip_data.clear
|
53
53
|
end
|
54
54
|
|
55
55
|
wx_set_data = instance_method(:set_data)
|
56
|
-
|
56
|
+
wx_redefine_method(:set_data) do | the_data |
|
57
57
|
@@__clip_data = [ the_data ]
|
58
58
|
wx_set_data.bind(self).call(the_data)
|
59
59
|
end
|
data/lib/wx/core/colour.rb
CHANGED
@@ -17,7 +17,7 @@ module Wx
|
|
17
17
|
# invalid colour value is given. This might be an unknown colour
|
18
18
|
# string (eg 'dark blue') or out-of-bounds integer values (<0 or >255)
|
19
19
|
wx_init = self.instance_method(:initialize)
|
20
|
-
|
20
|
+
wx_redefine_method(:initialize) do | *args |
|
21
21
|
begin
|
22
22
|
wx_init.bind(self).call(*args)
|
23
23
|
# Invalid integer values raise SWIG 'no matching func'
|
data/lib/wx/core/combobox.rb
CHANGED
@@ -15,7 +15,7 @@ module Wx
|
|
15
15
|
# redefine #clear method to take care of client data and to call the proper #clear_items method
|
16
16
|
# (not the #clear method inherited from the TextEntry mixin)
|
17
17
|
wx_clear = instance_method :clear_items
|
18
|
-
|
18
|
+
wx_redefine_method :clear do
|
19
19
|
wx_clear.bind(self).call
|
20
20
|
end
|
21
21
|
|
data/lib/wx/core/config.rb
CHANGED
@@ -42,7 +42,7 @@ module Wx
|
|
42
42
|
|
43
43
|
# add protection against exceptions raised in blocks
|
44
44
|
wx_for_path = instance_method :for_path
|
45
|
-
|
45
|
+
wx_redefine_method :for_path do |path, &block|
|
46
46
|
if block
|
47
47
|
ex = nil
|
48
48
|
rc = wx_for_path.bind(self).call(path) do |cfg, key|
|
@@ -64,7 +64,7 @@ module Wx
|
|
64
64
|
# add Enumerator support
|
65
65
|
|
66
66
|
wx_each_entry = instance_method :each_entry
|
67
|
-
|
67
|
+
wx_redefine_method :each_entry do |&block|
|
68
68
|
if block_given?
|
69
69
|
wx_each_entry.bind(self).call { |k| block.call(k, read(k)) }
|
70
70
|
else
|
@@ -73,7 +73,7 @@ module Wx
|
|
73
73
|
end
|
74
74
|
|
75
75
|
wx_each_group = instance_method :each_group
|
76
|
-
|
76
|
+
wx_redefine_method :each_group do |&block|
|
77
77
|
if block_given?
|
78
78
|
wx_each_group.bind(self).call { |k| block.call(k, Group.new(self, self.path.dup.push(k))) }
|
79
79
|
else
|
@@ -83,20 +83,20 @@ module Wx
|
|
83
83
|
|
84
84
|
# make this return a path array
|
85
85
|
wx_path = instance_method :path
|
86
|
-
|
86
|
+
wx_redefine_method :path do
|
87
87
|
wx_path.bind(self).call.split(ConfigBase::SEPARATOR)
|
88
88
|
end
|
89
89
|
|
90
90
|
# protect against attempts to rename complete paths
|
91
91
|
wx_rename = instance_method :rename
|
92
|
-
|
92
|
+
wx_redefine_method :rename do |old_key, new_key|
|
93
93
|
raise ArgumentError, 'No paths allowed' if old_key.index(ConfigBase::SEPARATOR) || new_key.index(ConfigBase::SEPARATOR)
|
94
94
|
wx_rename.bind(self).call(old_key, new_key)
|
95
95
|
end
|
96
96
|
|
97
97
|
# fix recursive number_of_xxx methods as wxRegConfig does not support this currently
|
98
98
|
wx_number_of_entries = instance_method :number_of_entries
|
99
|
-
|
99
|
+
wx_redefine_method :number_of_entries do |recurse=false|
|
100
100
|
if recurse
|
101
101
|
each_group.inject(wx_number_of_entries.bind(self).call) { |c, (_, g)| c + g.number_of_entries(true) }
|
102
102
|
else
|
@@ -105,7 +105,7 @@ module Wx
|
|
105
105
|
end
|
106
106
|
|
107
107
|
wx_number_of_groups = instance_method :number_of_groups
|
108
|
-
|
108
|
+
wx_redefine_method :number_of_groups do |recurse=false|
|
109
109
|
if recurse
|
110
110
|
each_group.inject(wx_number_of_groups.bind(self).call) { |c, (_, g)| c + g.number_of_groups(true) }
|
111
111
|
else
|
@@ -15,7 +15,7 @@ module Wx
|
|
15
15
|
|
16
16
|
# make sure to honor the inherited common overloads
|
17
17
|
wx_get_client_object = instance_method :get_client_object
|
18
|
-
|
18
|
+
wx_redefine_method :get_client_object do |*args|
|
19
19
|
if args.empty?
|
20
20
|
super()
|
21
21
|
else
|
@@ -23,7 +23,7 @@ module Wx
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
wx_set_client_object = instance_method :set_client_object
|
26
|
-
|
26
|
+
wx_redefine_method :set_client_object do |*args|
|
27
27
|
if args.size < 2
|
28
28
|
super(*args)
|
29
29
|
else
|
@@ -45,7 +45,7 @@ module Wx
|
|
45
45
|
|
46
46
|
# Overload to provide Enumerator without block
|
47
47
|
wx_each_string = instance_method :each_string
|
48
|
-
|
48
|
+
wx_redefine_method :each_string do |&block|
|
49
49
|
if block
|
50
50
|
wx_each_string.bind(self).call(&block)
|
51
51
|
else
|
data/lib/wx/core/data_object.rb
CHANGED
@@ -25,17 +25,17 @@ module Wx
|
|
25
25
|
# using pure Ruby
|
26
26
|
|
27
27
|
wx_get_data_size = instance_method :get_data_size
|
28
|
-
|
28
|
+
wx_redefine_method :get_data_size do |format = nil|
|
29
29
|
wx_get_data_size.bind(self).call(format || self.get_format)
|
30
30
|
end
|
31
31
|
|
32
32
|
wx_get_data_here = instance_method :get_data_here
|
33
|
-
|
33
|
+
wx_redefine_method :get_data_here do |format = nil|
|
34
34
|
wx_get_data_here.bind(self).call(format || self.get_format)
|
35
35
|
end
|
36
36
|
|
37
37
|
wx_set_data = instance_method :set_data
|
38
|
-
|
38
|
+
wx_redefine_method :set_data do |*args|
|
39
39
|
if args.size>1
|
40
40
|
format, buf = args
|
41
41
|
else
|
@@ -66,7 +66,7 @@ module Wx
|
|
66
66
|
self._set_data(buf)
|
67
67
|
end
|
68
68
|
|
69
|
-
|
69
|
+
wx_redefine_method :_get_data_size do
|
70
70
|
(_get_data || '').bytesize
|
71
71
|
end
|
72
72
|
protected :_get_data_size
|
data/lib/wx/core/dataformat.rb
CHANGED
@@ -11,10 +11,16 @@
|
|
11
11
|
|
12
12
|
class Wx::DataFormat
|
13
13
|
def ==(other)
|
14
|
-
if
|
15
|
-
self.get_type == other
|
14
|
+
if other.is_a?(Wx::DataFormatId)
|
15
|
+
self.get_type == other
|
16
|
+
elsif other.is_a?(self.class)
|
17
|
+
if self.get_type > Wx::DataFormatId::DF_INVALID
|
18
|
+
self.get_type == other.get_type
|
19
|
+
else
|
20
|
+
self.id == other.id
|
21
|
+
end
|
16
22
|
else
|
17
|
-
|
23
|
+
false
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|