wxruby3 0.9.0.pre.rc.1 → 0.9.0.pre.rc.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +73 -22
- data/README.md +40 -8
- data/assets/hello_button-macos.png +0 -0
- data/assets/hello_button-msw.png +0 -0
- data/assets/hello_button_clicked-macos.png +0 -0
- data/assets/hello_button_clicked-msw.png +0 -0
- data/assets/hello_button_clicked_combi.png +0 -0
- data/assets/hello_world-macos.png +0 -0
- data/assets/hello_world-msw.png +0 -0
- data/assets/hello_world_combi.png +0 -0
- data/ext/wxruby3/swig/wx.i +2 -0
- data/lib/wx/core/brush.rb +6 -0
- data/lib/wx/core/event_loop.rb +7 -0
- data/lib/wx/core/evthandler.rb +12 -2
- data/lib/wx/core/font.rb +22 -14
- data/lib/wx/core/helpprovider.rb +2 -2
- data/lib/wx/core/image.rb +33 -0
- data/lib/wx/core/listctrl.rb +17 -13
- data/lib/wx/core/log.rb +90 -0
- data/lib/wx/core/menu.rb +5 -0
- data/lib/wx/core/pen.rb +6 -0
- data/lib/wx/core/window.rb +28 -1
- data/lib/wx/doc/app.rb +40 -0
- data/lib/wx/doc/bitmap.rb +11 -15
- data/lib/wx/doc/brush.rb +17 -0
- data/lib/wx/doc/event_loop.rb +7 -0
- data/lib/wx/doc/extra/00_starting.md +6 -6
- data/lib/wx/doc/extra/02_lifecycles.md +9 -8
- data/lib/wx/doc/extra/09_exceptions.md +1 -1
- data/lib/wx/doc/extra/11_drawing_and_dc.md +4 -4
- data/lib/wx/doc/font.rb +27 -0
- data/lib/wx/doc/functions.rb +51 -23
- data/lib/wx/doc/gc_dc.rb +1 -1
- data/lib/wx/doc/image.rb +42 -12
- data/lib/wx/doc/list_ctrl.rb +32 -0
- data/lib/wx/doc/log.rb +28 -0
- data/lib/wx/doc/pen.rb +17 -0
- data/lib/wx/doc/prt/printer_dc.rb +2 -2
- data/lib/wx/doc/radio_box.rb +20 -0
- data/lib/wx/doc/scaled_dc.rb +1 -1
- data/lib/wx/doc/text_validator.rb +12 -0
- data/lib/wx/doc/window.rb +27 -0
- data/lib/wx/keyword_defs.rb +77 -76
- data/lib/wx/prt/keyword_defs.rb +5 -1
- data/lib/wx/version.rb +1 -1
- data/rakelib/install.rb +17 -6
- data/rakelib/lib/config/linux.rb +4 -2
- data/rakelib/lib/config/macosx.rb +120 -1
- data/rakelib/lib/config/mingw.rb +6 -1
- data/rakelib/lib/config/unixish.rb +26 -11
- data/rakelib/lib/config.rb +15 -6
- data/rakelib/lib/core/mapping.rb +15 -10
- data/rakelib/lib/core/package.rb +4 -1
- data/rakelib/lib/core/spec.rb +23 -12
- data/rakelib/lib/core/spec_helper.rb +6 -0
- data/rakelib/lib/director/app.rb +30 -1
- data/rakelib/lib/director/aui_toolbar.rb +41 -0
- data/rakelib/lib/director/brush.rb +10 -1
- data/rakelib/lib/director/combobox.rb +1 -1
- data/rakelib/lib/director/context_help_button.rb +23 -0
- data/rakelib/lib/director/dialog.rb +33 -2
- data/rakelib/lib/director/event_loop.rb +26 -0
- data/rakelib/lib/director/font.rb +12 -3
- data/rakelib/lib/director/functions.rb +44 -48
- data/rakelib/lib/director/help_provider.rb +8 -10
- data/rakelib/lib/director/hyperlink_event.rb +22 -0
- data/rakelib/lib/director/image.rb +32 -0
- data/rakelib/lib/director/list_ctrl.rb +3 -2
- data/rakelib/lib/director/log.rb +64 -4
- data/rakelib/lib/director/menu.rb +0 -3
- data/rakelib/lib/director/menu_bar.rb +3 -0
- data/rakelib/lib/director/pen.rb +10 -1
- data/rakelib/lib/director/popup_window.rb +18 -0
- data/rakelib/lib/director/radio_box.rb +15 -4
- data/rakelib/lib/director/searchctrl.rb +2 -1
- data/rakelib/lib/director/static_box.rb +1 -1
- data/rakelib/lib/director/styled_text_ctrl.rb +1 -1
- data/rakelib/lib/director/text_entry.rb +30 -0
- data/rakelib/lib/director/text_validator.rb +8 -2
- data/rakelib/lib/director/textctrl.rb +1 -1
- data/rakelib/lib/director/variant.rb +17 -4
- data/rakelib/lib/director/window.rb +37 -1
- data/rakelib/lib/extractor/function.rb +7 -7
- data/rakelib/lib/extractor/variable.rb +6 -6
- data/rakelib/lib/generate/doc/aui_manager.yaml +21 -0
- data/rakelib/lib/generate/doc/context_help_button.yaml +16 -0
- data/rakelib/lib/generate/doc/event_blocker.yaml +27 -0
- data/rakelib/lib/generate/doc/event_filter.yaml +47 -0
- data/rakelib/lib/generate/doc/file_dialog.yaml +68 -0
- data/rakelib/lib/generate/doc/font.yaml +29 -0
- data/rakelib/lib/generate/doc/frame.yaml +23 -0
- data/rakelib/lib/generate/doc/fs_file.yaml +11 -0
- data/rakelib/lib/generate/doc/gdi_common.yaml +36 -0
- data/rakelib/lib/generate/doc/graphics_context.yaml +34 -0
- data/rakelib/lib/generate/doc/gui_event_loop.yaml +12 -0
- data/rakelib/lib/generate/doc/help_controller.yaml +24 -0
- data/rakelib/lib/generate/doc/icon.yaml +11 -0
- data/rakelib/lib/generate/doc/image.yaml +87 -0
- data/rakelib/lib/generate/doc/keyboard_state.yaml +19 -0
- data/rakelib/lib/generate/doc/list_ctrl.yaml +77 -0
- data/rakelib/lib/generate/doc/locale.yaml +12 -0
- data/rakelib/lib/generate/doc/log.yaml +86 -0
- data/rakelib/lib/generate/doc/mdi_frame.yaml +12 -0
- data/rakelib/lib/generate/doc/memory_dc.yaml +42 -0
- data/rakelib/lib/generate/doc/menu.yaml +17 -0
- data/rakelib/lib/generate/doc/menu_item.yaml +43 -0
- data/rakelib/lib/generate/doc/message_dialog.yaml +36 -0
- data/rakelib/lib/generate/doc/non_owned_window.yaml +14 -0
- data/rakelib/lib/generate/doc/notebook.yaml +18 -0
- data/rakelib/lib/generate/doc/pen.yaml +11 -0
- data/rakelib/lib/generate/doc/picker_base.yaml +19 -0
- data/rakelib/lib/generate/doc/platform_info.yaml +15 -0
- data/rakelib/lib/generate/doc/property_sheet_dialog.yaml +26 -0
- data/rakelib/lib/generate/doc/scroll_bar.yaml +11 -0
- data/rakelib/lib/generate/doc/scrolled_canvas.yaml +37 -0
- data/rakelib/lib/generate/doc/scrolled_control.yaml +37 -0
- data/rakelib/lib/generate/doc/scrolled_window.yaml +37 -0
- data/rakelib/lib/generate/doc/sizer.yaml +69 -0
- data/rakelib/lib/generate/doc/splash_screen.yaml +18 -0
- data/rakelib/lib/generate/doc/static_box.yaml +52 -0
- data/rakelib/lib/generate/doc/static_box_sizer.yaml +22 -0
- data/rakelib/lib/generate/doc/svg_file_dc.yaml +11 -0
- data/rakelib/lib/generate/doc/text_ctrl.yaml +19 -0
- data/rakelib/lib/generate/doc/text_entry.yaml +42 -0
- data/rakelib/lib/generate/doc/text_entry_dialog.yaml +17 -0
- data/rakelib/lib/generate/doc/timer_event.yaml +28 -0
- data/rakelib/lib/generate/doc/tool_bar.yaml +35 -0
- data/rakelib/lib/generate/doc/top_level_window.yaml +23 -0
- data/rakelib/lib/generate/doc/validator.yaml +12 -0
- data/rakelib/lib/generate/doc/variant.yaml +29 -0
- data/rakelib/lib/generate/doc/window.yaml +249 -0
- data/rakelib/lib/generate/doc/wizard_page_simple.yaml +14 -0
- data/rakelib/lib/generate/doc/xml_node.yaml +7 -0
- data/rakelib/lib/generate/doc/xml_resource.yaml +27 -0
- data/rakelib/lib/generate/doc.rb +36 -2
- data/rakelib/lib/generate/interface.rb +11 -10
- data/rakelib/lib/specs/interfaces.rb +5 -1
- data/rakelib/lib/swig_runner.rb +37 -0
- data/samples/aui/aui.rb +432 -363
- data/samples/propgrid/propgrid.rb +3 -0
- data/samples/sampler/editor.rb +33 -25
- data/samples/sampler/sample.rb +2 -2
- data/samples/sampler/stc_editor.rb +4 -2
- data/tests/lib/item_container_tests.rb +82 -0
- data/tests/lib/text_entry_tests.rb +80 -0
- data/tests/lib/wxapp_runner.rb +12 -0
- data/tests/lib/wxframe_runner.rb +89 -4
- data/tests/test_art.rb +9 -0
- data/tests/test_box_sizer.rb +161 -0
- data/tests/test_ext_controls.rb +28 -0
- data/tests/test_font.rb +239 -0
- data/tests/test_grid_sizer.rb +148 -0
- data/tests/test_intl.rb +5 -1
- data/tests/test_list_ctrl.rb +53 -0
- data/tests/test_log.rb +163 -0
- data/tests/test_std_controls.rb +321 -37
- data/tests/test_timer.rb +95 -0
- data/tests/test_window.rb +340 -0
- metadata +85 -2
@@ -99,18 +99,19 @@ module WXRuby3
|
|
99
99
|
__HEREDOC
|
100
100
|
end
|
101
101
|
|
102
|
-
def gen_mixin_convert_code(fout, cls, mod)
|
102
|
+
def gen_mixin_convert_code(fout, cls, mod, ctype)
|
103
103
|
rb_mod_name = mod.split('::').last
|
104
|
+
ctype ||= "wx#{rb_mod_name}"
|
104
105
|
decl_flag = (mod.start_with?(package.fullname) ? 'WXRB_EXPORT_FLAG' : 'WXRB_IMPORT_FLAG') # same package (dll) or import?
|
105
106
|
fout.puts
|
106
107
|
fout << <<~__HEREDOC
|
107
|
-
// Mixin converter for
|
108
|
-
typedef
|
108
|
+
// Mixin converter for #{ctype} (#{mod}) included in #{cls}
|
109
|
+
typedef #{ctype}* (*wx_#{underscore(rb_mod_name)}_convert_fn)(void*);
|
109
110
|
#{decl_flag} void wxRuby_Register_#{rb_mod_name}_Include(swig_class* cls_info,
|
110
111
|
wx_#{underscore(rb_mod_name)}_convert_fn converter);
|
111
|
-
static
|
112
|
+
static #{ctype}* wxRuby_ConvertTo_#{rb_mod_name}(void* ptr)
|
112
113
|
{
|
113
|
-
return ((
|
114
|
+
return ((#{ctype}*) static_cast<#{cls}*> (ptr));
|
114
115
|
}
|
115
116
|
__HEREDOC
|
116
117
|
end
|
@@ -147,7 +148,7 @@ module WXRuby3
|
|
147
148
|
mixins.each { |name| gen_mixin_code(fout, name) }
|
148
149
|
end
|
149
150
|
unless included_mixins.empty?
|
150
|
-
included_mixins.each_pair {|cls, mods| mods.
|
151
|
+
included_mixins.each_pair {|cls, mods| mods.each_pair { |mod, ctype| gen_mixin_convert_code(fout, cls, mod, ctype) } }
|
151
152
|
end
|
152
153
|
fout.puts "%}"
|
153
154
|
end
|
@@ -215,8 +216,8 @@ module WXRuby3
|
|
215
216
|
end
|
216
217
|
unless included_mixins.empty?
|
217
218
|
fout.puts
|
218
|
-
included_mixins.each_pair do |cls,
|
219
|
-
|
219
|
+
included_mixins.each_pair do |cls, modules|
|
220
|
+
modules.keys.each { |m| fout.puts %Q{%mixin #{cls} "#{m}";} }
|
220
221
|
end
|
221
222
|
end
|
222
223
|
end
|
@@ -240,8 +241,8 @@ module WXRuby3
|
|
240
241
|
end
|
241
242
|
unless included_mixins.empty?
|
242
243
|
fout.puts
|
243
|
-
included_mixins.each_pair do |cls,
|
244
|
-
|
244
|
+
included_mixins.each_pair do |cls, modules|
|
245
|
+
modules.keys.each do |modname|
|
245
246
|
m = modname.split('::').last
|
246
247
|
fout.puts %Q{wxRuby_Register_#{m}_Include(&SwigClassWx#{rb_wx_name(cls)}, wxRuby_ConvertTo_#{m});}
|
247
248
|
end
|
@@ -17,6 +17,7 @@ module WXRuby3
|
|
17
17
|
Director.Spec(pkg, 'wxEvtHandler')
|
18
18
|
Director.Spec(pkg, 'wxEvents')
|
19
19
|
Director.Spec(pkg, 'wxEventFilter')
|
20
|
+
Director.Spec(pkg, 'wxGUIEventLoop')
|
20
21
|
Director.Spec(pkg, 'wxApp')
|
21
22
|
Director.Spec(pkg, 'wxDC')
|
22
23
|
Director.Spec(pkg, 'wxWindowDC', director: Director::DerivedDC)
|
@@ -177,7 +178,7 @@ module WXRuby3
|
|
177
178
|
Director.Spec(pkg, 'wxDataObjectSimpleBase', requirements: %w[wxUSE_CLIPBOARD])
|
178
179
|
Director.Spec(pkg, 'wxClipboard', requirements: %w[wxUSE_CLIPBOARD])
|
179
180
|
Director.Spec(pkg, 'wxDragDrop', requirements: %w[wxUSE_DRAG_AND_DROP])
|
180
|
-
Director.Spec(pkg, 'wxContextHelpButton',
|
181
|
+
Director.Spec(pkg, 'wxContextHelpButton', requirements: %w[wxUSE_HELP])
|
181
182
|
Director.Spec(pkg, 'wxHelpProvider', requirements: %w[wxUSE_HELP])
|
182
183
|
Director.Spec(pkg, 'wxHelpController', requirements: %w[wxUSE_HELP])
|
183
184
|
Director.Spec(pkg, 'wxExtHelpController', director: Director::HelpController, requirements: %w[wxUSE_HELP])
|
@@ -200,6 +201,9 @@ module WXRuby3
|
|
200
201
|
Director.Spec(pkg, 'wxPlatformInfo')
|
201
202
|
Director.Spec(pkg, 'wxSplashScreen', requirements: %w[wxUSE_SPLASH])
|
202
203
|
Director.Spec(pkg, 'wxUIActionSimulator', requirements: %w[wxUSE_UIACTIONSIMULATOR])
|
204
|
+
Director.Spec(pkg, 'wxActivityIndicator', director: Director::Window, requirements: %w[wxUSE_ACTIVITYINDICATOR])
|
205
|
+
Director.Spec(pkg, 'wxHyperlinkCtrl', director: Director::Window, requirements: %w[wxUSE_HYPERLINKCTRL])
|
206
|
+
Director.Spec(pkg, 'wxHyperlinkEvent', requirements: %w[wxUSE_HYPERLINKCTRL])
|
203
207
|
}
|
204
208
|
|
205
209
|
Director.Package('Wx::PRT', 'wxUSE_PRINTING_ARCHITECTURE') do |pkg|
|
data/rakelib/lib/swig_runner.rb
CHANGED
@@ -481,6 +481,43 @@ module WXRuby3
|
|
481
481
|
end
|
482
482
|
end
|
483
483
|
|
484
|
+
# Updates SWIG generated wrapper code for disowned allocation modules.
|
485
|
+
class FixDisownedAlloc < Processor
|
486
|
+
|
487
|
+
def run
|
488
|
+
# get the generated (class) items which have been defined to need disowned allocation
|
489
|
+
class_list = def_items.select { |itm| Extractor::ClassDef === itm && allocate_disowned?(itm) }
|
490
|
+
# setup a table with the required tracking methods for each class
|
491
|
+
track_table = class_list.inject({}) do |tbl, clsdef|
|
492
|
+
tbl[clsdef.name] = (gc_type(clsdef) == :GC_MANAGE_AS_UNTRACKED) ? '0' : 'SWIG_RubyRemoveTracking'
|
493
|
+
tbl
|
494
|
+
end
|
495
|
+
# create re match list for class names
|
496
|
+
cls_re_txt = class_list.collect { |clsdef| clsdef.name }.join('|')
|
497
|
+
# updating any matching alloc functions in generated SWIG sourcecode
|
498
|
+
# create regexp for 'initialize' wrappers (due to overloads this could be more than one per class)
|
499
|
+
alloc_re = /_wrap_(#{cls_re_txt})_allocate\(int\s+argc.*\)/
|
500
|
+
found_alloc = false
|
501
|
+
cpp_class = nil
|
502
|
+
update_source do |line|
|
503
|
+
if found_alloc # inside 'xxx_allocate' wrapper?
|
504
|
+
if line =~ /\A(\s*)return\s+vresult;/
|
505
|
+
# insert an override for the free method to disown the new instance
|
506
|
+
line = "#{$1}RDATA(vresult)->dfree = #{track_table[cpp_class]};\n#{line}"
|
507
|
+
elsif /\A}/ =~ line # end of wrapper function?
|
508
|
+
# stop matching
|
509
|
+
found_alloc = false
|
510
|
+
end
|
511
|
+
elsif alloc_re =~ line # are we at an 'xxx_allocate' wrapper?
|
512
|
+
found_alloc = true
|
513
|
+
cpp_class = $1
|
514
|
+
end
|
515
|
+
line
|
516
|
+
end
|
517
|
+
end
|
518
|
+
|
519
|
+
end
|
520
|
+
|
484
521
|
# Updates SWIG generated wrapper code for Mixin modules.
|
485
522
|
class FixInterfaceMixin < Processor
|
486
523
|
|