wxruby3 0.9.0.pre.beta.8

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.
Files changed (754) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +13 -0
  3. data/CREDITS.md +52 -0
  4. data/LICENSE +21 -0
  5. data/README.md +139 -0
  6. data/bin/wxruby +9 -0
  7. data/ext/mkrf_conf_srcgem.rb +64 -0
  8. data/ext/wxruby3/include/wxruby-runtime.h +104 -0
  9. data/ext/wxruby3/swig/RubyStockObjects.i +62 -0
  10. data/ext/wxruby3/swig/common.i +110 -0
  11. data/ext/wxruby3/swig/custom/rubyprimtypes.swg +225 -0
  12. data/ext/wxruby3/swig/custom/rubytracking.swg +60 -0
  13. data/ext/wxruby3/swig/custom/swig3/rubyrun.swg +456 -0
  14. data/ext/wxruby3/swig/custom/swig4/rubyrun.swg +459 -0
  15. data/ext/wxruby3/swig/mark_free_impl.i +377 -0
  16. data/ext/wxruby3/swig/memory_management.i +142 -0
  17. data/ext/wxruby3/swig/typedefs.i +27 -0
  18. data/ext/wxruby3/swig/wx.i +282 -0
  19. data/ext/wxruby3/swig/wx.rc +19 -0
  20. data/ext/wxruby3/wxruby.ico +0 -0
  21. data/lib/wx/accessors.rb +63 -0
  22. data/lib/wx/aui/auimanager.rb +17 -0
  23. data/lib/wx/aui/auinotebook.rb +9 -0
  24. data/lib/wx/aui/require.rb +9 -0
  25. data/lib/wx/aui.rb +14 -0
  26. data/lib/wx/core/acceleratortable.rb +28 -0
  27. data/lib/wx/core/animation.rb +18 -0
  28. data/lib/wx/core/app.rb +89 -0
  29. data/lib/wx/core/artprovider.rb +31 -0
  30. data/lib/wx/core/bitmap.rb +59 -0
  31. data/lib/wx/core/busycursor.rb +12 -0
  32. data/lib/wx/core/choice.rb +4 -0
  33. data/lib/wx/core/choicedlg.rb +54 -0
  34. data/lib/wx/core/clientdc.rb +13 -0
  35. data/lib/wx/core/clipboard.rb +56 -0
  36. data/lib/wx/core/collapsible_pane.rb +12 -0
  37. data/lib/wx/core/colour.rb +34 -0
  38. data/lib/wx/core/combobox.rb +4 -0
  39. data/lib/wx/core/controlwithitems.rb +10 -0
  40. data/lib/wx/core/data_object.rb +10 -0
  41. data/lib/wx/core/dataformat.rb +26 -0
  42. data/lib/wx/core/dc.rb +68 -0
  43. data/lib/wx/core/dialog.rb +50 -0
  44. data/lib/wx/core/enum.rb +28 -0
  45. data/lib/wx/core/event.rb +16 -0
  46. data/lib/wx/core/evthandler.rb +253 -0
  47. data/lib/wx/core/ext.rb +58 -0
  48. data/lib/wx/core/font.rb +22 -0
  49. data/lib/wx/core/functions.rb +44 -0
  50. data/lib/wx/core/gauge.rb +12 -0
  51. data/lib/wx/core/genericdirctrl.rb +36 -0
  52. data/lib/wx/core/hboxsizer.rb +6 -0
  53. data/lib/wx/core/helpcontroller.rb +5 -0
  54. data/lib/wx/core/helpcontrollerhelpprovider.rb +24 -0
  55. data/lib/wx/core/helpprovider.rb +15 -0
  56. data/lib/wx/core/icon.rb +40 -0
  57. data/lib/wx/core/image.rb +68 -0
  58. data/lib/wx/core/imagelist.rb +3 -0
  59. data/lib/wx/core/listbox.rb +4 -0
  60. data/lib/wx/core/listctrl.rb +33 -0
  61. data/lib/wx/core/locale.rb +73 -0
  62. data/lib/wx/core/log.rb +20 -0
  63. data/lib/wx/core/menu.rb +78 -0
  64. data/lib/wx/core/menu_bar.rb +20 -0
  65. data/lib/wx/core/menuitem.rb +7 -0
  66. data/lib/wx/core/notebook.rb +9 -0
  67. data/lib/wx/core/object.rb +14 -0
  68. data/lib/wx/core/pen_info.rb +11 -0
  69. data/lib/wx/core/platform_info.rb +13 -0
  70. data/lib/wx/core/point.rb +92 -0
  71. data/lib/wx/core/real_point.rb +92 -0
  72. data/lib/wx/core/rect.rb +57 -0
  73. data/lib/wx/core/simplehelpprovider.rb +38 -0
  74. data/lib/wx/core/size.rb +86 -0
  75. data/lib/wx/core/sizer.rb +43 -0
  76. data/lib/wx/core/splash_screen.rb +44 -0
  77. data/lib/wx/core/textctrl.rb +8 -0
  78. data/lib/wx/core/timer.rb +104 -0
  79. data/lib/wx/core/toolbar.rb +37 -0
  80. data/lib/wx/core/toolbartool.rb +4 -0
  81. data/lib/wx/core/treectrl.rb +46 -0
  82. data/lib/wx/core/validator.rb +8 -0
  83. data/lib/wx/core/variant.rb +62 -0
  84. data/lib/wx/core/vboxsizer.rb +6 -0
  85. data/lib/wx/core/window.rb +95 -0
  86. data/lib/wx/core/window_update_locker.rb +12 -0
  87. data/lib/wx/core/xmlresource.rb +56 -0
  88. data/lib/wx/core.rb +61 -0
  89. data/lib/wx/doc/aui/auimanager.rb +12 -0
  90. data/lib/wx/doc/aui/auinotebook.rb +9 -0
  91. data/lib/wx/doc/colour_dialog.rb +15 -0
  92. data/lib/wx/doc/core.rb +11 -0
  93. data/lib/wx/doc/dc.rb +49 -0
  94. data/lib/wx/doc/enum.rb +88 -0
  95. data/lib/wx/doc/evthandler.rb +87 -0
  96. data/lib/wx/doc/extra/00_starting.md +154 -0
  97. data/lib/wx/doc/extra/01_packages.md +179 -0
  98. data/lib/wx/doc/extra/02_lifecycles.md +116 -0
  99. data/lib/wx/doc/extra/03_dialogs.md +57 -0
  100. data/lib/wx/doc/extra/04_enums.md +143 -0
  101. data/lib/wx/doc/extra/05_event-handling.md +166 -0
  102. data/lib/wx/doc/extra/06_geometry.md +56 -0
  103. data/lib/wx/doc/extra/07_colour_and_font.md +52 -0
  104. data/lib/wx/doc/extra/08_extensions.md +144 -0
  105. data/lib/wx/doc/extra/09_exceptions.md +54 -0
  106. data/lib/wx/doc/functions.rb +221 -0
  107. data/lib/wx/doc/gdi_common.rb +181 -0
  108. data/lib/wx/doc/grid/grid.rb +20 -0
  109. data/lib/wx/doc/help_controller.rb +14 -0
  110. data/lib/wx/doc/html/html_help_controller.rb +8 -0
  111. data/lib/wx/doc/pg/events.rb +15 -0
  112. data/lib/wx/doc/pg/pg_property.rb +8 -0
  113. data/lib/wx/doc/pg/pgeditor.rb +21 -0
  114. data/lib/wx/doc/pg/property_grid.rb +48 -0
  115. data/lib/wx/doc/pg/property_grid_interface.rb +64 -0
  116. data/lib/wx/doc/prt/page_setup_dialog.rb +15 -0
  117. data/lib/wx/doc/prt/print_data.rb +9 -0
  118. data/lib/wx/doc/prt/print_dialog.rb +26 -0
  119. data/lib/wx/doc/prt/printer.rb +15 -0
  120. data/lib/wx/doc/rbn/ribbon_bar.rb +9 -0
  121. data/lib/wx/doc/rbn/ribbon_button_bar.rb +9 -0
  122. data/lib/wx/doc/rbn/ribbon_gallery.rb +9 -0
  123. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +9 -0
  124. data/lib/wx/doc/rtc/richtext_printing.rb +14 -0
  125. data/lib/wx/doc/screen_dc.rb +10 -0
  126. data/lib/wx/doc/stock_objects.rb +98 -0
  127. data/lib/wx/doc/stream.rb +38 -0
  128. data/lib/wx/doc/system_settings.rb +29 -0
  129. data/lib/wx/doc/treebook.rb +9 -0
  130. data/lib/wx/doc/variant.rb +163 -0
  131. data/lib/wx/doc/xml_resource.rb +19 -0
  132. data/lib/wx/global_const.rb +84 -0
  133. data/lib/wx/grid/grid.rb +7 -0
  134. data/lib/wx/grid/keyword_defs.rb +10 -0
  135. data/lib/wx/grid/require.rb +9 -0
  136. data/lib/wx/grid.rb +14 -0
  137. data/lib/wx/helpers.rb +65 -0
  138. data/lib/wx/html/htmlhelpcontroller.rb +6 -0
  139. data/lib/wx/html/htmlwindow.rb +19 -0
  140. data/lib/wx/html/keyword_defs.rb +22 -0
  141. data/lib/wx/html/require.rb +10 -0
  142. data/lib/wx/html.rb +15 -0
  143. data/lib/wx/keyword_ctors.rb +226 -0
  144. data/lib/wx/keyword_defs.rb +487 -0
  145. data/lib/wx/pg/events.rb +14 -0
  146. data/lib/wx/pg/keyword_defs.rb +15 -0
  147. data/lib/wx/pg/pg_editor.rb +13 -0
  148. data/lib/wx/pg/pg_properties.rb +24 -0
  149. data/lib/wx/pg/pg_property.rb +27 -0
  150. data/lib/wx/pg/property_grid.rb +71 -0
  151. data/lib/wx/pg/property_grid_interface.rb +46 -0
  152. data/lib/wx/pg/require.rb +12 -0
  153. data/lib/wx/pg.rb +14 -0
  154. data/lib/wx/prt/keyword_defs.rb +8 -0
  155. data/lib/wx/prt/page_setup_dialog.rb +15 -0
  156. data/lib/wx/prt/previewframe.rb +13 -0
  157. data/lib/wx/prt/require.rb +8 -0
  158. data/lib/wx/prt.rb +14 -0
  159. data/lib/wx/rbn/events.rb +4 -0
  160. data/lib/wx/rbn/keyword_defs.rb +43 -0
  161. data/lib/wx/rbn/require.rb +12 -0
  162. data/lib/wx/rbn/ribbon_art_provider.rb +10 -0
  163. data/lib/wx/rbn/ribbon_bar.rb +12 -0
  164. data/lib/wx/rbn/ribbon_button_bar.rb +26 -0
  165. data/lib/wx/rbn/ribbon_control.rb +25 -0
  166. data/lib/wx/rbn/ribbon_gallery.rb +26 -0
  167. data/lib/wx/rbn/ribbon_page.rb +15 -0
  168. data/lib/wx/rbn/ribbon_panel.rb +15 -0
  169. data/lib/wx/rbn/ribbon_tool_bar.rb +26 -0
  170. data/lib/wx/rbn.rb +14 -0
  171. data/lib/wx/rtc/ext.rb +15 -0
  172. data/lib/wx/rtc/keyword_defs.rb +17 -0
  173. data/lib/wx/rtc/require.rb +8 -0
  174. data/lib/wx/rtc.rb +15 -0
  175. data/lib/wx/stc/keyword_defs.rb +8 -0
  176. data/lib/wx/stc/require.rb +7 -0
  177. data/lib/wx/stc.rb +14 -0
  178. data/lib/wx/version.rb +3 -0
  179. data/lib/wx/wxruby/base.rb +87 -0
  180. data/lib/wx/wxruby/cmd/sampler.rb +68 -0
  181. data/lib/wx/wxruby/cmd/test.rb +27 -0
  182. data/lib/wx.rb +14 -0
  183. data/rakelib/build.rake +62 -0
  184. data/rakelib/build.rb +141 -0
  185. data/rakelib/config.rake +48 -0
  186. data/rakelib/configure.rb +131 -0
  187. data/rakelib/doc.rake +21 -0
  188. data/rakelib/doc.rb +35 -0
  189. data/rakelib/install.rake +30 -0
  190. data/rakelib/install.rb +220 -0
  191. data/rakelib/lib/config/cygwin.rb +6 -0
  192. data/rakelib/lib/config/linux.rb +78 -0
  193. data/rakelib/lib/config/macosx.rb +6 -0
  194. data/rakelib/lib/config/mingw.rb +133 -0
  195. data/rakelib/lib/config/netbsd.rb +6 -0
  196. data/rakelib/lib/config/unixish.rb +187 -0
  197. data/rakelib/lib/config.rb +673 -0
  198. data/rakelib/lib/core/include/enum.inc +306 -0
  199. data/rakelib/lib/core/include/funcall.inc +277 -0
  200. data/rakelib/lib/core/include/init.inc +95 -0
  201. data/rakelib/lib/core/mapping.rb +1116 -0
  202. data/rakelib/lib/core/package.rb +634 -0
  203. data/rakelib/lib/core/parameter.rb +222 -0
  204. data/rakelib/lib/core/spec.rb +468 -0
  205. data/rakelib/lib/core/spec_helper.rb +405 -0
  206. data/rakelib/lib/director/about_dialog_info.rb +24 -0
  207. data/rakelib/lib/director/accelerator.rb +88 -0
  208. data/rakelib/lib/director/animation.rb +84 -0
  209. data/rakelib/lib/director/animation_ctrl.rb +24 -0
  210. data/rakelib/lib/director/any_button.rb +34 -0
  211. data/rakelib/lib/director/app.rb +420 -0
  212. data/rakelib/lib/director/art_provider.rb +124 -0
  213. data/rakelib/lib/director/aui_dock_art.rb +23 -0
  214. data/rakelib/lib/director/aui_floating_frame.rb +26 -0
  215. data/rakelib/lib/director/aui_manager.rb +114 -0
  216. data/rakelib/lib/director/aui_manager_event.rb +22 -0
  217. data/rakelib/lib/director/aui_mdi_child_frame.rb +50 -0
  218. data/rakelib/lib/director/aui_mdi_client_window.rb +23 -0
  219. data/rakelib/lib/director/aui_mdi_parent_frame.rb +26 -0
  220. data/rakelib/lib/director/aui_notebook.rb +77 -0
  221. data/rakelib/lib/director/aui_notebook_event.rb +23 -0
  222. data/rakelib/lib/director/aui_pane_info.rb +102 -0
  223. data/rakelib/lib/director/aui_tab_art.rb +47 -0
  224. data/rakelib/lib/director/aui_tab_ctrl.rb +121 -0
  225. data/rakelib/lib/director/aui_toolbar.rb +22 -0
  226. data/rakelib/lib/director/aui_toolbar_art.rb +24 -0
  227. data/rakelib/lib/director/aui_toolbar_event.rb +23 -0
  228. data/rakelib/lib/director/aui_toolbar_item.rb +21 -0
  229. data/rakelib/lib/director/bitmap.rb +87 -0
  230. data/rakelib/lib/director/book_ctrls.rb +104 -0
  231. data/rakelib/lib/director/brush.rb +28 -0
  232. data/rakelib/lib/director/busy_info.rb +71 -0
  233. data/rakelib/lib/director/button.rb +22 -0
  234. data/rakelib/lib/director/calendar_ctrl.rb +98 -0
  235. data/rakelib/lib/director/calendar_date_attr.rb +22 -0
  236. data/rakelib/lib/director/caret.rb +31 -0
  237. data/rakelib/lib/director/check_listbox.rb +33 -0
  238. data/rakelib/lib/director/choice.rb +32 -0
  239. data/rakelib/lib/director/clipboard.rb +37 -0
  240. data/rakelib/lib/director/collapsible_pane.rb +22 -0
  241. data/rakelib/lib/director/collapsible_pane_event.rb +22 -0
  242. data/rakelib/lib/director/colour.rb +64 -0
  243. data/rakelib/lib/director/colour_picker_ctrl.rb +22 -0
  244. data/rakelib/lib/director/combobox.rb +37 -0
  245. data/rakelib/lib/director/control.rb +22 -0
  246. data/rakelib/lib/director/ctrl_with_items.rb +68 -0
  247. data/rakelib/lib/director/cursor.rb +28 -0
  248. data/rakelib/lib/director/data_format.rb +31 -0
  249. data/rakelib/lib/director/data_object.rb +64 -0
  250. data/rakelib/lib/director/date_event.rb +141 -0
  251. data/rakelib/lib/director/date_picker_ctrl.rb +39 -0
  252. data/rakelib/lib/director/dc.rb +52 -0
  253. data/rakelib/lib/director/defs.rb +139 -0
  254. data/rakelib/lib/director/derived_dc.rb +64 -0
  255. data/rakelib/lib/director/dialog.rb +214 -0
  256. data/rakelib/lib/director/dir_filterlist_ctrl.rb +29 -0
  257. data/rakelib/lib/director/dir_picker_ctrl.rb +22 -0
  258. data/rakelib/lib/director/drag_image.rb +20 -0
  259. data/rakelib/lib/director/dragdrop.rb +61 -0
  260. data/rakelib/lib/director/editable_listbox.rb +21 -0
  261. data/rakelib/lib/director/event.rb +171 -0
  262. data/rakelib/lib/director/event_handler.rb +410 -0
  263. data/rakelib/lib/director/events.rb +39 -0
  264. data/rakelib/lib/director/file_picker_ctrl.rb +22 -0
  265. data/rakelib/lib/director/find_dialog_event.rb +22 -0
  266. data/rakelib/lib/director/find_replace_data.rb +20 -0
  267. data/rakelib/lib/director/font.rb +138 -0
  268. data/rakelib/lib/director/font_data.rb +22 -0
  269. data/rakelib/lib/director/font_picker_ctrl.rb +22 -0
  270. data/rakelib/lib/director/frame.rb +74 -0
  271. data/rakelib/lib/director/fs_file.rb +353 -0
  272. data/rakelib/lib/director/functions.rb +284 -0
  273. data/rakelib/lib/director/gdi_object.rb +21 -0
  274. data/rakelib/lib/director/gdicommon.rb +94 -0
  275. data/rakelib/lib/director/generic_dirctrl.rb +24 -0
  276. data/rakelib/lib/director/graphics_context.rb +143 -0
  277. data/rakelib/lib/director/graphics_object.rb +69 -0
  278. data/rakelib/lib/director/grid_cell_attr.rb +53 -0
  279. data/rakelib/lib/director/grid_cell_editor.rb +434 -0
  280. data/rakelib/lib/director/grid_cell_renderer.rb +132 -0
  281. data/rakelib/lib/director/grid_ctrl.rb +390 -0
  282. data/rakelib/lib/director/grid_range_select_event.rb +23 -0
  283. data/rakelib/lib/director/grid_table_base.rb +63 -0
  284. data/rakelib/lib/director/grid_table_message.rb +20 -0
  285. data/rakelib/lib/director/help_controller.rb +75 -0
  286. data/rakelib/lib/director/help_provider.rb +103 -0
  287. data/rakelib/lib/director/html_cell.rb +36 -0
  288. data/rakelib/lib/director/html_easy_printing.rb +45 -0
  289. data/rakelib/lib/director/html_event.rb +24 -0
  290. data/rakelib/lib/director/html_help_data.rb +43 -0
  291. data/rakelib/lib/director/html_help_frame.rb +25 -0
  292. data/rakelib/lib/director/html_listbox.rb +54 -0
  293. data/rakelib/lib/director/html_printout.rb +47 -0
  294. data/rakelib/lib/director/html_window.rb +114 -0
  295. data/rakelib/lib/director/icon.rb +33 -0
  296. data/rakelib/lib/director/image.rb +111 -0
  297. data/rakelib/lib/director/image_list.rb +21 -0
  298. data/rakelib/lib/director/list_ctrl.rb +197 -0
  299. data/rakelib/lib/director/listbox.rb +32 -0
  300. data/rakelib/lib/director/locale.rb +35 -0
  301. data/rakelib/lib/director/log.rb +32 -0
  302. data/rakelib/lib/director/mdi_frame.rb +36 -0
  303. data/rakelib/lib/director/media_ctrl.rb +22 -0
  304. data/rakelib/lib/director/menu.rb +92 -0
  305. data/rakelib/lib/director/menu_bar.rb +28 -0
  306. data/rakelib/lib/director/menu_item.rb +36 -0
  307. data/rakelib/lib/director/mouse_state.rb +21 -0
  308. data/rakelib/lib/director/numeric_property_validator.rb +38 -0
  309. data/rakelib/lib/director/object.rb +32 -0
  310. data/rakelib/lib/director/page_setup_dialog.rb +30 -0
  311. data/rakelib/lib/director/palette.rb +25 -0
  312. data/rakelib/lib/director/panel.rb +22 -0
  313. data/rakelib/lib/director/pen.rb +174 -0
  314. data/rakelib/lib/director/pgarray_editor_dialog.rb +64 -0
  315. data/rakelib/lib/director/pgcell.rb +68 -0
  316. data/rakelib/lib/director/pgeditor.rb +154 -0
  317. data/rakelib/lib/director/pgmulti_button.rb +22 -0
  318. data/rakelib/lib/director/pgproperties.rb +216 -0
  319. data/rakelib/lib/director/pgproperty.rb +207 -0
  320. data/rakelib/lib/director/pgvalidation_info.rb +24 -0
  321. data/rakelib/lib/director/pickerbase.rb +22 -0
  322. data/rakelib/lib/director/platform_info.rb +49 -0
  323. data/rakelib/lib/director/popup_window.rb +23 -0
  324. data/rakelib/lib/director/preview_frame.rb +39 -0
  325. data/rakelib/lib/director/print_data.rb +33 -0
  326. data/rakelib/lib/director/print_dialog.rb +36 -0
  327. data/rakelib/lib/director/printer.rb +61 -0
  328. data/rakelib/lib/director/property_grid.rb +174 -0
  329. data/rakelib/lib/director/property_grid_event.rb +23 -0
  330. data/rakelib/lib/director/property_grid_interface.rb +227 -0
  331. data/rakelib/lib/director/property_grid_manager.rb +90 -0
  332. data/rakelib/lib/director/property_grid_page.rb +76 -0
  333. data/rakelib/lib/director/property_grid_page_state.rb +32 -0
  334. data/rakelib/lib/director/radio_box.rb +39 -0
  335. data/rakelib/lib/director/region.rb +25 -0
  336. data/rakelib/lib/director/ribbon_art_provider.rb +154 -0
  337. data/rakelib/lib/director/ribbon_bar.rb +24 -0
  338. data/rakelib/lib/director/ribbon_bar_event.rb +22 -0
  339. data/rakelib/lib/director/ribbon_button_bar.rb +37 -0
  340. data/rakelib/lib/director/ribbon_button_bar_event.rb +40 -0
  341. data/rakelib/lib/director/ribbon_ctrl.rb +28 -0
  342. data/rakelib/lib/director/ribbon_gallery.rb +33 -0
  343. data/rakelib/lib/director/ribbon_gallery_event.rb +27 -0
  344. data/rakelib/lib/director/ribbon_page.rb +21 -0
  345. data/rakelib/lib/director/ribbon_panel.rb +22 -0
  346. data/rakelib/lib/director/ribbon_panel_event.rb +22 -0
  347. data/rakelib/lib/director/ribbon_tool_bar.rb +146 -0
  348. data/rakelib/lib/director/ribbon_tool_bar_event.rb +22 -0
  349. data/rakelib/lib/director/richtext_buffer.rb +46 -0
  350. data/rakelib/lib/director/richtext_ctrl.rb +63 -0
  351. data/rakelib/lib/director/richtext_event.rb +25 -0
  352. data/rakelib/lib/director/richtext_file_handler.rb +42 -0
  353. data/rakelib/lib/director/richtext_header_footer_data.rb +21 -0
  354. data/rakelib/lib/director/richtext_printing.rb +44 -0
  355. data/rakelib/lib/director/sash_layout_event.rb +22 -0
  356. data/rakelib/lib/director/sash_layout_window.rb +23 -0
  357. data/rakelib/lib/director/sash_window.rb +23 -0
  358. data/rakelib/lib/director/scrolled_t.rb +67 -0
  359. data/rakelib/lib/director/sizer.rb +67 -0
  360. data/rakelib/lib/director/sizer_item.rb +35 -0
  361. data/rakelib/lib/director/splash_screen.rb +24 -0
  362. data/rakelib/lib/director/splitter_event.rb +28 -0
  363. data/rakelib/lib/director/splitter_window.rb +25 -0
  364. data/rakelib/lib/director/static_bitmap.rb +24 -0
  365. data/rakelib/lib/director/static_box.rb +26 -0
  366. data/rakelib/lib/director/status_bar.rb +86 -0
  367. data/rakelib/lib/director/styled_text_ctrl.rb +82 -0
  368. data/rakelib/lib/director/styled_text_event.rb +25 -0
  369. data/rakelib/lib/director/system_options.rb +22 -0
  370. data/rakelib/lib/director/system_settings.rb +47 -0
  371. data/rakelib/lib/director/task_bar_icon.rb +77 -0
  372. data/rakelib/lib/director/text_attr.rb +22 -0
  373. data/rakelib/lib/director/text_entry.rb +26 -0
  374. data/rakelib/lib/director/text_validator.rb +47 -0
  375. data/rakelib/lib/director/textctrl.rb +80 -0
  376. data/rakelib/lib/director/time_picker_ctrl.rb +24 -0
  377. data/rakelib/lib/director/timer.rb +37 -0
  378. data/rakelib/lib/director/tip_provider.rb +44 -0
  379. data/rakelib/lib/director/toggle_button.rb +22 -0
  380. data/rakelib/lib/director/tool_bar.rb +62 -0
  381. data/rakelib/lib/director/tool_tip.rb +20 -0
  382. data/rakelib/lib/director/top_level_window.rb +105 -0
  383. data/rakelib/lib/director/tree_ctrl.rb +411 -0
  384. data/rakelib/lib/director/tree_event.rb +78 -0
  385. data/rakelib/lib/director/utils.rb +55 -0
  386. data/rakelib/lib/director/validator.rb +44 -0
  387. data/rakelib/lib/director/variant.rb +549 -0
  388. data/rakelib/lib/director/vlistbox.rb +46 -0
  389. data/rakelib/lib/director/vscrolled_window.rb +59 -0
  390. data/rakelib/lib/director/window.rb +296 -0
  391. data/rakelib/lib/director/window_disabler.rb +44 -0
  392. data/rakelib/lib/director/with_images.rb +65 -0
  393. data/rakelib/lib/director/wizard_page.rb +35 -0
  394. data/rakelib/lib/director/xml_node.rb +48 -0
  395. data/rakelib/lib/director/xml_resource.rb +141 -0
  396. data/rakelib/lib/director.rb +487 -0
  397. data/rakelib/lib/ext/enum_chain.rb +22 -0
  398. data/rakelib/lib/extractor/class.rb +384 -0
  399. data/rakelib/lib/extractor/enum.rb +94 -0
  400. data/rakelib/lib/extractor/function.rb +377 -0
  401. data/rakelib/lib/extractor/module.rb +140 -0
  402. data/rakelib/lib/extractor/variable.rb +145 -0
  403. data/rakelib/lib/extractor.rb +438 -0
  404. data/rakelib/lib/generate/analyzer.rb +593 -0
  405. data/rakelib/lib/generate/base.rb +37 -0
  406. data/rakelib/lib/generate/doc.rb +833 -0
  407. data/rakelib/lib/generate/interface.rb +742 -0
  408. data/rakelib/lib/generate/rakedep.rb +130 -0
  409. data/rakelib/lib/specs/interfaces.rb +324 -0
  410. data/rakelib/lib/streams.rb +206 -0
  411. data/rakelib/lib/swig_runner.rb +682 -0
  412. data/rakelib/lib/typemap/array_int_selections.rb +57 -0
  413. data/rakelib/lib/typemap/common.rb +613 -0
  414. data/rakelib/lib/typemap/data_format.rb +76 -0
  415. data/rakelib/lib/typemap/data_object_data.rb +99 -0
  416. data/rakelib/lib/typemap/datetime.rb +64 -0
  417. data/rakelib/lib/typemap/grid_client_data.rb +55 -0
  418. data/rakelib/lib/typemap/grid_coords.rb +65 -0
  419. data/rakelib/lib/typemap/html_cell.rb +57 -0
  420. data/rakelib/lib/typemap/io_streams.rb +162 -0
  421. data/rakelib/lib/typemap/pgcell.rb +35 -0
  422. data/rakelib/lib/typemap/pgeditor.rb +35 -0
  423. data/rakelib/lib/typemap/pgprop_arg.rb +74 -0
  424. data/rakelib/lib/typemap/pgproperty.rb +35 -0
  425. data/rakelib/lib/typemap/points_list.rb +124 -0
  426. data/rakelib/lib/typemap/richtext.rb +67 -0
  427. data/rakelib/lib/typemap/tree_itemid.rb +49 -0
  428. data/rakelib/lib/util/string.rb +141 -0
  429. data/rakelib/prepost.rake +91 -0
  430. data/rakelib/prepost.rb +26 -0
  431. data/rakelib/run.rake +49 -0
  432. data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +7 -0
  433. data/rakelib/yard/templates/default/layout/html/setup.rb +5 -0
  434. data/rakelib/yard/yard/relative_markdown_links/version.rb +8 -0
  435. data/rakelib/yard/yard/relative_markdown_links.rb +39 -0
  436. data/rakelib/yard/yard-custom-templates.rb +2 -0
  437. data/rakelib/yard/yard-relative_markdown_links.rb +4 -0
  438. data/samples/art/wxruby-128x128.png +0 -0
  439. data/samples/art/wxruby-256x256.png +0 -0
  440. data/samples/art/wxruby-64x64.png +0 -0
  441. data/samples/art/wxruby.ico +0 -0
  442. data/samples/art/wxruby.png +0 -0
  443. data/samples/aui/aui.rb +1321 -0
  444. data/samples/aui/tn_aui.png +0 -0
  445. data/samples/bigdemo/About.rbw +39 -0
  446. data/samples/bigdemo/ColorPanel.rbw +23 -0
  447. data/samples/bigdemo/GridSimple.rbw +78 -0
  448. data/samples/bigdemo/MDIDemo.rbw +57 -0
  449. data/samples/bigdemo/PopupMenu.rbw +146 -0
  450. data/samples/bigdemo/ShapedWindow.rbw +128 -0
  451. data/samples/bigdemo/Sizers.rbw +541 -0
  452. data/samples/bigdemo/bigdemo.rb +810 -0
  453. data/samples/bigdemo/demoTemplate.rbw +33 -0
  454. data/samples/bigdemo/helpfile.htb +0 -0
  455. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  456. data/samples/bigdemo/icons/Test 015.png +0 -0
  457. data/samples/bigdemo/icons/choice.bmp +0 -0
  458. data/samples/bigdemo/icons/choice.xpm +27 -0
  459. data/samples/bigdemo/icons/combo.bmp +0 -0
  460. data/samples/bigdemo/icons/combo.xpm +27 -0
  461. data/samples/bigdemo/icons/copy.xpm +25 -0
  462. data/samples/bigdemo/icons/cut.xpm +24 -0
  463. data/samples/bigdemo/icons/gauge.bmp +0 -0
  464. data/samples/bigdemo/icons/gauge.xpm +27 -0
  465. data/samples/bigdemo/icons/help.xpm +25 -0
  466. data/samples/bigdemo/icons/list.bmp +0 -0
  467. data/samples/bigdemo/icons/list.xpm +27 -0
  468. data/samples/bigdemo/icons/mondrian.ico +0 -0
  469. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  470. data/samples/bigdemo/icons/new.xpm +24 -0
  471. data/samples/bigdemo/icons/ogl.ico +0 -0
  472. data/samples/bigdemo/icons/ogl.xpm +45 -0
  473. data/samples/bigdemo/icons/open.xpm +26 -0
  474. data/samples/bigdemo/icons/paste.bmp +0 -0
  475. data/samples/bigdemo/icons/paste.xpm +38 -0
  476. data/samples/bigdemo/icons/pointy.png +0 -0
  477. data/samples/bigdemo/icons/preview.xpm +26 -0
  478. data/samples/bigdemo/icons/print.xpm +26 -0
  479. data/samples/bigdemo/icons/radio.bmp +0 -0
  480. data/samples/bigdemo/icons/radio.xpm +27 -0
  481. data/samples/bigdemo/icons/robert.xpm +415 -0
  482. data/samples/bigdemo/icons/sashtest.ico +0 -0
  483. data/samples/bigdemo/icons/save.xpm +25 -0
  484. data/samples/bigdemo/icons/smiles.bmp +0 -0
  485. data/samples/bigdemo/icons/smiles.xpm +39 -0
  486. data/samples/bigdemo/icons/smiley.ico +0 -0
  487. data/samples/bigdemo/icons/smiley.xpm +42 -0
  488. data/samples/bigdemo/icons/stattext.xpm +24 -0
  489. data/samples/bigdemo/icons/test2.bmp +0 -0
  490. data/samples/bigdemo/icons/test2.png +0 -0
  491. data/samples/bigdemo/icons/test2.xpm +79 -0
  492. data/samples/bigdemo/icons/text.bmp +0 -0
  493. data/samples/bigdemo/icons/text.xpm +27 -0
  494. data/samples/bigdemo/icons/tog1.bmp +0 -0
  495. data/samples/bigdemo/icons/tog1.xpm +38 -0
  496. data/samples/bigdemo/icons/tog2.bmp +0 -0
  497. data/samples/bigdemo/icons/tog2.xpm +38 -0
  498. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  499. data/samples/bigdemo/icons/wxwin.ico +0 -0
  500. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  501. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  502. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  503. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  504. data/samples/bigdemo/run.rb +91 -0
  505. data/samples/bigdemo/tips.txt +7 -0
  506. data/samples/bigdemo/utils.rb +12 -0
  507. data/samples/bigdemo/wxArtProvider.rbw +281 -0
  508. data/samples/bigdemo/wxBitmapButton.rbw +65 -0
  509. data/samples/bigdemo/wxButton.rbw +64 -0
  510. data/samples/bigdemo/wxCalendarCtrl.rbw +59 -0
  511. data/samples/bigdemo/wxCheckBox.rbw +50 -0
  512. data/samples/bigdemo/wxCheckListBox.rbw +65 -0
  513. data/samples/bigdemo/wxChoice.rbw +47 -0
  514. data/samples/bigdemo/wxChoicebook.rbw +78 -0
  515. data/samples/bigdemo/wxColourDialog.rbw +33 -0
  516. data/samples/bigdemo/wxComboBox.rbw +77 -0
  517. data/samples/bigdemo/wxCursor.rbw +136 -0
  518. data/samples/bigdemo/wxDialog.rbw +74 -0
  519. data/samples/bigdemo/wxDirDialog.rbw +29 -0
  520. data/samples/bigdemo/wxDragImage.rbw +70 -0
  521. data/samples/bigdemo/wxFileDialog.rbw +37 -0
  522. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
  523. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
  524. data/samples/bigdemo/wxFontDialog.rbw +200 -0
  525. data/samples/bigdemo/wxFrame.rbw +53 -0
  526. data/samples/bigdemo/wxGauge.rbw +65 -0
  527. data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
  528. data/samples/bigdemo/wxGrid.rbw +66 -0
  529. data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
  530. data/samples/bigdemo/wxListBox.rbw +140 -0
  531. data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -0
  532. data/samples/bigdemo/wxMDIWindows.rbw +50 -0
  533. data/samples/bigdemo/wxMenu.rbw +247 -0
  534. data/samples/bigdemo/wxMessageDialog.rbw +27 -0
  535. data/samples/bigdemo/wxMiniFrame.rbw +70 -0
  536. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +29 -0
  537. data/samples/bigdemo/wxNotebook.rbw +136 -0
  538. data/samples/bigdemo/wxProgressDialog.rbw +43 -0
  539. data/samples/bigdemo/wxRadioBox.rbw +72 -0
  540. data/samples/bigdemo/wxRadioButton.rbw +125 -0
  541. data/samples/bigdemo/wxSashWindow.rbw +141 -0
  542. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
  543. data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
  544. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
  545. data/samples/bigdemo/wxSlider.rbw +42 -0
  546. data/samples/bigdemo/wxSpinButton.rbw +50 -0
  547. data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
  548. data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
  549. data/samples/bigdemo/wxStaticBitmap.rbw +47 -0
  550. data/samples/bigdemo/wxStaticText.rbw +55 -0
  551. data/samples/bigdemo/wxStatusBar.rbw +126 -0
  552. data/samples/bigdemo/wxTextCtrl.rbw +149 -0
  553. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
  554. data/samples/bigdemo/wxToggleButton.rbw +49 -0
  555. data/samples/bigdemo/wxToolBar.rbw +131 -0
  556. data/samples/bigdemo/wxTreeCtrl.rbw +191 -0
  557. data/samples/calendar/calendar.rb +363 -0
  558. data/samples/calendar/tn_calendar.png +0 -0
  559. data/samples/caret/caret.rb +293 -0
  560. data/samples/caret/mondrian.xpm +44 -0
  561. data/samples/caret/tn_caret.png +0 -0
  562. data/samples/controls/books.rb +183 -0
  563. data/samples/controls/choice.xpm +27 -0
  564. data/samples/controls/combo.xpm +27 -0
  565. data/samples/controls/controls.rb +1143 -0
  566. data/samples/controls/gauge.xpm +27 -0
  567. data/samples/controls/get_item_sample.rb +117 -0
  568. data/samples/controls/list.xpm +27 -0
  569. data/samples/controls/mondrian.ico +0 -0
  570. data/samples/controls/mondrian.xpm +44 -0
  571. data/samples/controls/radio.xpm +27 -0
  572. data/samples/controls/stattext.xpm +24 -0
  573. data/samples/controls/test2.bmp +0 -0
  574. data/samples/controls/text.xpm +27 -0
  575. data/samples/controls/tn_books.png +0 -0
  576. data/samples/controls/tn_controls.png +0 -0
  577. data/samples/controls/tn_get_item_sample.png +0 -0
  578. data/samples/dialogs/dialogs.rb +879 -0
  579. data/samples/dialogs/tips.txt +18 -0
  580. data/samples/dialogs/tn_dialogs.png +0 -0
  581. data/samples/dialogs/tn_wizard.png +0 -0
  582. data/samples/dialogs/wizard.rb +89 -0
  583. data/samples/dragdrop/dragdrop.rb +200 -0
  584. data/samples/dragdrop/tn_dragdrop.png +0 -0
  585. data/samples/drawing/SVGlogo24.xpm +310 -0
  586. data/samples/drawing/bitmap.rb +76 -0
  587. data/samples/drawing/bitmap_image.rb +131 -0
  588. data/samples/drawing/graphics_drawing.rb +257 -0
  589. data/samples/drawing/maths_images.rb +327 -0
  590. data/samples/drawing/rmagic_bitmap_image.rb +139 -0
  591. data/samples/drawing/ruby-logo.jpg +0 -0
  592. data/samples/drawing/svgtest.rb +373 -0
  593. data/samples/drawing/tn_bitmap.png +0 -0
  594. data/samples/drawing/tn_bitmap_image.png +0 -0
  595. data/samples/drawing/tn_graphics_drawing.png +0 -0
  596. data/samples/drawing/tn_maths_images.png +0 -0
  597. data/samples/drawing/tn_rmagic_bitmap_image.png +0 -0
  598. data/samples/drawing/tn_svgtest.png +0 -0
  599. data/samples/etc/choice.rb +82 -0
  600. data/samples/etc/miniframe.rb +92 -0
  601. data/samples/etc/sash.rb +140 -0
  602. data/samples/etc/scrollwin.rb +120 -0
  603. data/samples/etc/system_settings.rb +263 -0
  604. data/samples/etc/tn_choice.png +0 -0
  605. data/samples/etc/tn_miniframe.png +0 -0
  606. data/samples/etc/tn_sash.png +0 -0
  607. data/samples/etc/tn_scrollwin.png +0 -0
  608. data/samples/etc/tn_system_settings.png +0 -0
  609. data/samples/event/activation.rb +129 -0
  610. data/samples/event/event.rb +220 -0
  611. data/samples/event/threaded.rb +141 -0
  612. data/samples/event/tn_activation.png +0 -0
  613. data/samples/event/tn_event.png +0 -0
  614. data/samples/event/tn_threaded.png +0 -0
  615. data/samples/event/tn_update_ui_event.png +0 -0
  616. data/samples/event/update_ui_event.rb +91 -0
  617. data/samples/grid/grid.rb +224 -0
  618. data/samples/grid/gridtablebase.rb +178 -0
  619. data/samples/grid/tn_grid.png +0 -0
  620. data/samples/grid/tn_gridtablebase.png +0 -0
  621. data/samples/html/8859_2.htm +14 -0
  622. data/samples/html/cp1250.htm +19 -0
  623. data/samples/html/foo.png +0 -0
  624. data/samples/html/html.rb +278 -0
  625. data/samples/html/i18n.gif +0 -0
  626. data/samples/html/imagemap.htm +20 -0
  627. data/samples/html/imagemap.png +0 -0
  628. data/samples/html/listtest.htm +28 -0
  629. data/samples/html/pic.png +0 -0
  630. data/samples/html/pic2.bmp +0 -0
  631. data/samples/html/regres.htm +20 -0
  632. data/samples/html/subsup.html +42 -0
  633. data/samples/html/tables.htm +255 -0
  634. data/samples/html/test.htm +375 -0
  635. data/samples/html/tn_html.png +0 -0
  636. data/samples/mdi/mdi.rb +118 -0
  637. data/samples/mdi/tn_mdi.png +0 -0
  638. data/samples/minimal/minimal.rb +95 -0
  639. data/samples/minimal/mondrian.ico +0 -0
  640. data/samples/minimal/mondrian.png +0 -0
  641. data/samples/minimal/nothing.rb +38 -0
  642. data/samples/minimal/tn_minimal.png +0 -0
  643. data/samples/minimal/tn_nothing.png +0 -0
  644. data/samples/printing/mondrian.ico +0 -0
  645. data/samples/printing/mondrian.xpm +44 -0
  646. data/samples/printing/printing.rb +499 -0
  647. data/samples/printing/printing2.rb +251 -0
  648. data/samples/printing/sample-text.txt +213 -0
  649. data/samples/printing/tn_printing.png +0 -0
  650. data/samples/printing/tn_printing2.png +0 -0
  651. data/samples/propgrid/propgrid.rb +2711 -0
  652. data/samples/propgrid/propgrid_minimal.rb +107 -0
  653. data/samples/propgrid/sample_props.rb +434 -0
  654. data/samples/propgrid/tn_propgrid.png +0 -0
  655. data/samples/propgrid/tn_propgrid_minimal.png +0 -0
  656. data/samples/ribbon/align_center.xpm +21 -0
  657. data/samples/ribbon/align_left.xpm +21 -0
  658. data/samples/ribbon/align_right.xpm +21 -0
  659. data/samples/ribbon/aui_style.xpm +53 -0
  660. data/samples/ribbon/auto_crop_selection.xpm +55 -0
  661. data/samples/ribbon/auto_crop_selection_small.xpm +33 -0
  662. data/samples/ribbon/circle.xpm +38 -0
  663. data/samples/ribbon/circle_small.xpm +22 -0
  664. data/samples/ribbon/colours.xpm +25 -0
  665. data/samples/ribbon/cross.xpm +38 -0
  666. data/samples/ribbon/empty.xpm +23 -0
  667. data/samples/ribbon/expand_selection_h.xpm +46 -0
  668. data/samples/ribbon/expand_selection_v.xpm +46 -0
  669. data/samples/ribbon/eye.xpm +26 -0
  670. data/samples/ribbon/hexagon.xpm +38 -0
  671. data/samples/ribbon/msw_style.xpm +65 -0
  672. data/samples/ribbon/position_left.xpm +22 -0
  673. data/samples/ribbon/position_top.xpm +22 -0
  674. data/samples/ribbon/ribbon.rb +900 -0
  675. data/samples/ribbon/ribbon.xpm +54 -0
  676. data/samples/ribbon/selection_panel.xpm +23 -0
  677. data/samples/ribbon/square.xpm +38 -0
  678. data/samples/ribbon/tn_ribbon.png +0 -0
  679. data/samples/ribbon/triangle.xpm +38 -0
  680. data/samples/sample.xpm +475 -0
  681. data/samples/sampler/back.xpm +21 -0
  682. data/samples/sampler/copy.xpm +44 -0
  683. data/samples/sampler/cut.xpm +46 -0
  684. data/samples/sampler/editor.rb +560 -0
  685. data/samples/sampler/ext.rb +51 -0
  686. data/samples/sampler/filesave.xpm +42 -0
  687. data/samples/sampler/find.xpm +62 -0
  688. data/samples/sampler/findrepl.xpm +63 -0
  689. data/samples/sampler/forward.xpm +21 -0
  690. data/samples/sampler/paste.xpm +46 -0
  691. data/samples/sampler/play.xpm +24 -0
  692. data/samples/sampler/redo.xpm +58 -0
  693. data/samples/sampler/sample.rb +347 -0
  694. data/samples/sampler/stc_editor.rb +321 -0
  695. data/samples/sampler/txt_editor.rb +130 -0
  696. data/samples/sampler/undo.xpm +58 -0
  697. data/samples/sampler.rb +394 -0
  698. data/samples/splash/mobile.xpm +1835 -0
  699. data/samples/splash/splash.png +0 -0
  700. data/samples/splash/splash.rb +164 -0
  701. data/samples/splash/tn_splash.png +0 -0
  702. data/samples/text/document-open.png +0 -0
  703. data/samples/text/document-save.png +0 -0
  704. data/samples/text/edit-copy.png +0 -0
  705. data/samples/text/edit-cut.png +0 -0
  706. data/samples/text/edit-paste.png +0 -0
  707. data/samples/text/edit-redo.png +0 -0
  708. data/samples/text/edit-undo.png +0 -0
  709. data/samples/text/format-text-bold.png +0 -0
  710. data/samples/text/format-text-italic.png +0 -0
  711. data/samples/text/format-text-underline.png +0 -0
  712. data/samples/text/mondrian.ico +0 -0
  713. data/samples/text/mondrian.xpm +44 -0
  714. data/samples/text/preferences-desktop-font.png +0 -0
  715. data/samples/text/rich_textctrl.rb +326 -0
  716. data/samples/text/scintilla.rb +179 -0
  717. data/samples/text/textctrl.rb +124 -0
  718. data/samples/text/tn_rich_textctrl.png +0 -0
  719. data/samples/text/tn_scintilla.png +0 -0
  720. data/samples/text/tn_textctrl.png +0 -0
  721. data/samples/text/tn_unicode.png +0 -0
  722. data/samples/text/unicode.rb +238 -0
  723. data/samples/text/utf8.txt +15 -0
  724. data/samples/treectrl/checked.xpm +54 -0
  725. data/samples/treectrl/icon1.xpm +79 -0
  726. data/samples/treectrl/icon2.xpm +53 -0
  727. data/samples/treectrl/icon3.xpm +79 -0
  728. data/samples/treectrl/icon4.xpm +43 -0
  729. data/samples/treectrl/icon5.xpm +79 -0
  730. data/samples/treectrl/state1.xpm +145 -0
  731. data/samples/treectrl/state2.xpm +144 -0
  732. data/samples/treectrl/state3.xpm +142 -0
  733. data/samples/treectrl/state4.xpm +145 -0
  734. data/samples/treectrl/state5.xpm +85 -0
  735. data/samples/treectrl/tn_treectrl.png +0 -0
  736. data/samples/treectrl/treectrl.rb +1720 -0
  737. data/samples/treectrl/unchecked.xpm +30 -0
  738. data/samples/xrc/custom_dialog.xrc +46 -0
  739. data/samples/xrc/custom_xrc_sample.rb +84 -0
  740. data/samples/xrc/samples.xrc +46 -0
  741. data/samples/xrc/tn_xrc_sample.png +0 -0
  742. data/samples/xrc/xrc_sample.rb +86 -0
  743. data/tests/test_basic.rb +20 -0
  744. data/tests/test_clipboard.rb +241 -0
  745. data/tests/test_dialog.rb +28 -0
  746. data/tests/test_event_handling.rb +103 -0
  747. data/tests/test_events.rb +45 -0
  748. data/tests/test_geometry.rb +141 -0
  749. data/tests/test_intl.rb +107 -0
  750. data/tests/test_item_data.rb +120 -0
  751. data/tests/test_variant.rb +151 -0
  752. data/tests/testapp.rb +40 -0
  753. data/tests/testapp_noframe.rb +28 -0
  754. metadata +874 -0
@@ -0,0 +1,682 @@
1
+ ###
2
+ # wxRuby3 SWIG code generation runner
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ require 'fileutils'
7
+
8
+ require_relative './streams'
9
+ require_relative './util/string'
10
+ require_relative './core/spec_helper'
11
+
12
+ module WXRuby3
13
+
14
+ module SwigRunner
15
+
16
+ SWIG_MINIMUM_VERSION = '3.0.12'
17
+
18
+ class << self
19
+
20
+ include FileUtils
21
+ include Util::StringUtil
22
+
23
+ def swig_major
24
+ check_swig unless swig_state
25
+ (@swig_version || '').split('.').first.to_i
26
+ end
27
+
28
+ private
29
+
30
+ def config
31
+ Config.instance
32
+ end
33
+
34
+ def swig_state
35
+ !!@swig_state
36
+ end
37
+
38
+ def swig_version
39
+ check_swig unless swig_state
40
+ @swig_version
41
+ end
42
+
43
+
44
+ def check_swig
45
+ begin
46
+ @swig_version = `#{WXRuby3::Config.get_config('swig')} -version`[/\d+\.\d+\.\d+/]
47
+ rescue Exception
48
+ STDERR.puts "ERROR: Could not run SWIG (#{WXRuby3::Config.get_config('swig')})"
49
+ exit(1)
50
+ end
51
+
52
+ # Very old versions put --version on STDERR, not STDOUT
53
+ unless @swig_version
54
+ STDERR.puts "Could not get version info from SWIG; " +
55
+ "is a very old version installed?.\n"
56
+ exit(1)
57
+ end
58
+
59
+ if @swig_version < SWIG_MINIMUM_VERSION
60
+ STDERR.puts "SWIG version #{@swig_version} is installed, " +
61
+ "minimum version required is #{SWIG_MINIMUM_VERSION}.\n"
62
+ exit(1)
63
+ end
64
+
65
+ @swig_state = true
66
+ end
67
+
68
+ def run_swig(source, target)
69
+ check_swig unless swig_state
70
+ inc_paths = "-I#{config.wxruby_dir} -I#{config.swig_dir}/custom"
71
+ inc_paths << " -I#{config.swig_dir}/custom/swig#{swig_major}"
72
+ sh "#{config.get_config('swig')} #{config.wx_cppflags.join(' ')} " +
73
+ "#{config.extra_cppflags.join(' ')} #{config.verbose_flag} #{inc_paths} " +
74
+ #"-w401 -w801 -w515 -c++ -ruby " +
75
+ "-w801 -c++ -ruby " +
76
+ "-o #{target} #{source}"
77
+ end
78
+
79
+ end
80
+
81
+ def self.process(director)
82
+ target = Target.new(director.spec.interface_file)
83
+ # run SWIG to generate the C++ wrapper code
84
+ run_swig(director.spec.interface_file, target.source_path)
85
+ # run the post processors to update the generated C++ code
86
+ director.spec.post_processors.each { |pp| Processor.run(pp, director, target) }
87
+ # commit the post processed code
88
+ target.commit
89
+ end
90
+
91
+ class Target
92
+ def initialize(interface_path)
93
+ @target = File.join(config.src_path, '.generate', File.basename(interface_path, '.i'))
94
+ @source_path = @target+'.cpp'
95
+ @header_path = @target+'.h'
96
+ # remove any stale files
97
+ FileUtils.rm_f(@source_path) if File.exist?(@source_path)
98
+ FileUtils.rm_f(@header_path) if File.exist?(@header_path)
99
+ @source = nil
100
+ @header = nil
101
+ end
102
+
103
+ attr_reader :source_path, :header_path
104
+
105
+ def config
106
+ Config.instance
107
+ end
108
+ private :config
109
+
110
+ def source
111
+ unless @source
112
+ @source = File.readlines(source_path, chomp: true)
113
+ end
114
+ @source
115
+ end
116
+
117
+ def header
118
+ unless @header
119
+ @header = File.readlines(header_path, chomp: true)
120
+ end
121
+ @header
122
+ end
123
+
124
+ def commit
125
+ # update the generated C++ code with the post processed code
126
+ Stream.transaction do
127
+ if @source
128
+ out = CodeStream.new(source_path)
129
+ out.puts(@source)
130
+ end
131
+ if @header
132
+ out = CodeStream.new(header_path)
133
+ out.puts(@header)
134
+ end
135
+ end
136
+ # relocate the finalized C++ code
137
+ final_tgt_src = File.join(config.src_path, File.basename(source_path))
138
+ final_tgt_h = File.join(config.src_path, File.basename(header_path))
139
+ (FileUtils.rm_f(final_tgt_src) if File.exist?(final_tgt_src)) rescue nil
140
+ (FileUtils.rm_f(final_tgt_h) if File.exist?(final_tgt_h)) rescue nil
141
+ FileUtils.mv(header_path, final_tgt_h)
142
+ FileUtils.mv(source_path, final_tgt_src)
143
+ end
144
+
145
+ def to_s
146
+ @target
147
+ end
148
+ end
149
+
150
+ class Processor
151
+
152
+ include DirectorSpecsHelper
153
+
154
+ def initialize(director, target)
155
+ @director = director
156
+ @target = target
157
+ end
158
+
159
+ attr_reader :director
160
+
161
+ protected
162
+
163
+ def collect_result(o)
164
+ [o].flatten.compact.collect { |s| s.split("\n") }
165
+ end
166
+
167
+ def update_lines(lines, at_begin: nil, at_end: nil, &block)
168
+ result = []
169
+ result << collect_result(::Proc === at_begin ? at_begin.call : at_begin.to_s) if at_begin
170
+ lines.each { |line| result << collect_result(block.call(line)) }
171
+ result << collect_result(::Proc === at_end ? at_end.call : at_end.to_s) if at_end
172
+ result.flatten! # flatten final results
173
+ result
174
+ end
175
+
176
+ def update_source(at_begin: nil, at_end: nil, &block)
177
+ result = update_lines(@target.source, at_begin: at_begin, at_end: at_end, &block)
178
+ @target.source.replace(result)
179
+ end
180
+
181
+ def update_header(at_begin: nil, at_end: nil, &block)
182
+ result = update_lines(@target.header, at_begin: at_begin, at_end: at_end, &block)
183
+ @target.header.replace(result)
184
+ end
185
+
186
+ public
187
+
188
+ def run
189
+ raise NotImplementedError
190
+ end
191
+
192
+ def to_s
193
+ "#{self.class.name}<#{@director.module_name}@#{@director.package.name}>"
194
+ end
195
+
196
+ def inspect
197
+ to_s
198
+ end
199
+
200
+ class << self
201
+ include Util::StringUtil
202
+ end
203
+
204
+ def self.run(pid, director, target)
205
+ puts "Processor.#{pid}: #{target}"
206
+ const_get(camelize(pid.to_s)).new(director, target).run
207
+ end
208
+
209
+ class Rename < Processor
210
+ def run
211
+ update_source do |line|
212
+ case line
213
+ # defined method names
214
+ when /(rb_define_method|rb_define_module_function|rb_define_protected_method).*("[_a-zA-Z0-9]*")/
215
+ name = $2
216
+ unless name == '"THE_APP"'
217
+ line[name] = '"%s"' % rb_method_name(name[1..-2])
218
+ end
219
+ # director called method names
220
+ when /rb_funcall\(swig_get_self.*rb_intern.*("[_a-zA-Z0-9]*")/
221
+ name = $1
222
+ line['rb_funcall'] = 'wxRuby_Funcall'
223
+ line[name] = '"%s"' % rb_method_name(name[1..-2])
224
+ # defined alias methods (original method name)
225
+ when /rb_define_alias\s*\(.*"[_a-zA-Z0-9]+[=\?]?".*("[_a-zA-Z0-9]*")/
226
+ name = $1
227
+ line[name] = '"%s"' % rb_method_name(name[1..-2])
228
+ # defined class names
229
+ when /rb_define_class_under.*("[_a-zA-Z0-9]*")/
230
+ name = $1
231
+ line[name] = '"%s"' % rb_class_name(name[1..-2])
232
+ # defined constant names
233
+ when /rb_define_const\s*\([^,]+,\s*("[_a-zA-Z0-9]*")/
234
+ name = $1
235
+ line[name] = '"%s"' % rb_wx_name(name[1..-2])
236
+ # defined class/global methods
237
+ when /rb_define_singleton_method.*("[_a-zA-Z0-9]*")/
238
+ name = $1
239
+ no_wx_name = name[1..-2].sub(/\Awx_?/i, '')
240
+ if no_wx_name == no_wx_name.upcase
241
+ line[name] = '"%s"' % rb_wx_name(name[1..-2])
242
+ else
243
+ line[name] = '"%s"' % rb_method_name(name[1..-2])
244
+ end
245
+ end
246
+ line
247
+ end
248
+ end
249
+ end # class Rename
250
+
251
+ class Fixmodule < Processor
252
+
253
+ def collect_enumerators
254
+ enumerators = {}
255
+ def_items.each do |item|
256
+ case item
257
+ when Extractor::EnumDef
258
+ item.items.each { |e| enumerators[rb_wx_name(e.name)] = rb_wx_name(item.name) } if item.is_type
259
+ when Extractor::ClassDef
260
+ item.items.select { |itm| Extractor::EnumDef === itm }.each do |enum|
261
+ enum.items.each { |e| enumerators[rb_wx_name(e.name)] = rb_wx_name(enum.name) } if enum.is_type
262
+ end
263
+ end
264
+ end
265
+ enumerators
266
+ end
267
+ private :collect_enumerators
268
+
269
+ def run
270
+ enum_table = collect_enumerators
271
+
272
+ core_name = name
273
+ core_name = 'ruby3' if /\Awx\Z/i =~ core_name
274
+
275
+ skip_entire_method = false
276
+ brace_level = 0
277
+
278
+ fix_enum = false
279
+ enum_name = nil
280
+
281
+ found_init = false
282
+
283
+ update_source do |line|
284
+ if !found_init
285
+ # all following fixes are applicable only before we reached the
286
+ # Init_ function
287
+
288
+ # comment out swig_up because it is defined global in every module
289
+ if (line.index("bool Swig::Director::swig_up"))
290
+ line = "//" + line
291
+ end
292
+
293
+ if line =~ /char\* type_name = (RSTRING\(value\)->ptr|RSTRING_PTR\(value\));/
294
+ line = ""
295
+ end
296
+ # Patch submitted for SWIG 1.3.30
297
+ if (line.index("if (strcmp(type->name, type_name) == 0) {"))
298
+ line = " if ( value != Qnil && rb_obj_is_kind_of(obj, sklass->klass) ) {"
299
+ end
300
+ #TODO 1.3.30
301
+ # end
302
+
303
+ # Fix the class names used to determine derived/non-derived in 'initialize' ('new')
304
+ # wrappers
305
+ if line =~ /const\s+char\s+\*classname\s+SWIGUNUSED\s+=\s+"Wx#{core_name}::wx(\w+)";/
306
+ line.sub!(/\"Wx#{core_name}::wx#{$1}/, "\"#{package.fullname}::#{$1}")
307
+ end
308
+
309
+ # remove the UnknownExceptionHandler::handler method
310
+ if line.index('void UnknownExceptionHandler::handler()')
311
+ skip_entire_method = true
312
+ end
313
+
314
+ if (skip_entire_method)
315
+ line = "//#{line}"
316
+ if (line.index('{'))
317
+ brace_level += 1
318
+ end
319
+ if (line.index('}'))
320
+ brace_level -= 1
321
+ end
322
+ if (brace_level == 0)
323
+ skip_entire_method = false
324
+ end
325
+ end
326
+
327
+ # at the top of our Init_ function, make sure we only initialize
328
+ # ourselves once
329
+ if /void\s+Init_(wx|Wx)#{core_name}\(/ =~ line
330
+ line += "static bool initialized;\n"
331
+ line += "if(initialized) return;\n"
332
+ line += "initialized = true;\n"
333
+ found_init = true # switch to init fixes
334
+ end
335
+
336
+ else
337
+ # all following fixes are part of the Init_ function and so
338
+ # only need to be checked after that function has been started
339
+
340
+ # Instead of defining a new module, set the container module equal
341
+ # to the package module.
342
+ if line['rb_define_module("Wx']
343
+ line = " mWx#{core_name} = #{package.module_variable}; // fixmodule.rb"
344
+ found_define_module = true
345
+ # elsif line['rb_define_module("Defs']
346
+ # line = " m#{core_name} = m#{MAIN_MODULE}; // fixmodule.rb"
347
+ # found_define_module = true
348
+ end
349
+
350
+ # As a class is initialised, store a global mapping from it to the
351
+ # correct SWIGTYPE; see wx.i
352
+ if line =~ /SWIG_TypeClientData\((SWIGTYPE_p_\w+),\s+
353
+ \(void\s\*\)\s+&(\w+)\)/x
354
+
355
+ line << "\n wxRuby_SetSwigTypeForClass(#{$2}.klass, #{$1});"
356
+ end
357
+
358
+ # TODO : can we improve this?
359
+ # Fix for Event.i - because it is implemented with a custom Ruby
360
+ # subclass, need to make this subclass SWIG info available under
361
+ # the normal name "SWIGTYPE_p_wxEvent" as it's referenced by many
362
+ # other classes.
363
+ if core_name == 'Event' or core_name == 'CommandEvent'
364
+ if line[/SWIG_TypeClientData\(SWIGTYPE_p_wxRuby(Command)?Event/]
365
+ line = line +
366
+ " // Inserted by fixmodule.rb\n" +
367
+ line.sub(/SWIGTYPE_p_wxRuby(Command)?Event/,
368
+ "SWIGTYPE_p_wx\\1Event")
369
+ end
370
+ end
371
+
372
+ # check for known enumerator constants
373
+ if (md = /rb_define_const\s*\(([^,]+),\s*"([_a-zA-Z0-9]*)"(.*)/.match(line)) # constant definition?
374
+ if !fix_enum # not fixing one yet
375
+ # have we reached the first of a known enum?
376
+ if enum_table.has_key?(md[2])
377
+ fix_enum = true
378
+ enum_name = enum_table[md[2]]
379
+ line = [
380
+ '',
381
+ # create new enum class
382
+ " VALUE cWx#{enum_name} = wxRuby_CreateEnumClass(\"#{enum_name}\"); // Inserted by fixmodule.rb",
383
+ # add enum class constant to current module
384
+ " rb_define_const(#{md[1]}, \"#{enum_name}\", cWx#{enum_name}); // Inserted by fixmodule.rb",
385
+ # create enumerator value const under new enum class
386
+ " wxRuby_AddEnumValue(cWx#{enum_name}, \"#{md[2]}\"#{md[3]} // Updated by fixmodule.rb"
387
+ ].join("\n")
388
+ end
389
+ else
390
+ # still an enumerator?
391
+ if enum_table.has_key?(md[2])
392
+ # of the same enum?
393
+ if enum_table[md[2]] == enum_name
394
+ # create enumerator value const under new enum class
395
+ line = " wxRuby_AddEnumValue(cWx#{enum_name}, \"#{md[2]}\"#{md[3]} // Updated by fixmodule.rb"
396
+ else # we found the start of another enum
397
+ enum_name = enum_table[md[2]]
398
+ line = [
399
+ '',
400
+ # create new enum class
401
+ " VALUE cWx#{enum_name} = wxRuby_CreateEnumClass(\"#{enum_name}\"); // Inserted by fixmodule.rb",
402
+ # add enum class constant to current module
403
+ " rb_define_const(#{md[1]}, \"#{enum_name}\", cWx#{enum_name}); // Inserted by fixmodule.rb",
404
+ # create enumerator value const under new enum class
405
+ " wxRuby_AddEnumValue(cWx#{enum_name}, \"#{md[2]}\"#{md[3]} // Updated by fixmodule.rb"
406
+ ].join("\n")
407
+ end
408
+ else # end of enum def
409
+ enum_name = nil
410
+ fix_enum = false
411
+ end
412
+ end
413
+ elsif fix_enum
414
+ enum_name = nil
415
+ fix_enum = false
416
+ end
417
+ end
418
+
419
+ line
420
+ end
421
+ end
422
+
423
+ end # class Fixmodule
424
+
425
+ # replaces SWIG generated class names used as Director base (if any) and for Ruby 'new' (initialize) function
426
+ class FixClassImplementation < Processor
427
+ def run
428
+ # get the generated (class) items for which an alternate implementation has been registered
429
+ class_list = def_items.select { |itm| Extractor::ClassDef === itm && itm.name != class_implementation(itm.name) }
430
+ # create re match list for class names
431
+ cls_re_txt = class_list.collect { |clsdef| clsdef.name }.join('|')
432
+ # updating any matching alloc functions in generated SWIG sourcecode
433
+ # create regexp for 'initialize' wrappers (due to overloads this could be more than one per class)
434
+ new_re = /_wrap_new_(#{cls_re_txt})\w*\(.*\)/
435
+ # check if any of the selected classes have a Director proxy enabled
436
+ if proxies_enabled = class_list.any? { |clsdef| has_proxy?(clsdef) }
437
+ # create re match list for classes with director proxy enabled
438
+ dir_cls_re_txt = class_list.select { |clsdef| has_proxy?(clsdef) }.collect { |cd| cd.name }.join('|')
439
+ # create regexp for Director constructors (may not exist if no proxies are enabled)
440
+ dir_ctor_re = /SwigDirector_\w+::SwigDirector_\w+\(.*\)\s*:\s*(#{dir_cls_re_txt})\(.*\)\s*,\s*Swig::Director.*{/
441
+ end
442
+ found_new = false
443
+ cpp_class = nil
444
+ cpp_new_re = nil
445
+ update_source do |line|
446
+ if found_new # inside 'initialize' wrapper?
447
+ if cpp_new_re =~ line # at C++ allocation of class instance?
448
+ # replace with the registered implementation class
449
+ line.sub!(/new\s+#{cpp_class}\(/, "new #{class_implementation(cpp_class)}(")
450
+ found_new = false # only 1 line will match per wrapper function so stop matching
451
+ elsif /\A}/ =~ line # end of wrapper function?
452
+ # stop matching (in case of overloads there will be one matching wrapper function
453
+ # that does no actual allocation but just acts as a front for the overload wrappers)
454
+ found_new = false
455
+ end
456
+ elsif new_re =~ line # are we at an 'initialize' wrapper?
457
+ found_new = true
458
+ cpp_class = $1
459
+ cpp_new_re = /new\s+#{cpp_class}\(.*\)/ # regexp for C++ new expression for this specific class
460
+ elsif proxies_enabled && dir_ctor_re =~ line # at director ctor?
461
+ # replace base class name by implementation name
462
+ cpp_class = $1
463
+ line.sub!(/:\s*#{cpp_class}\(/, ": #{class_implementation(cpp_class)}(")
464
+ end
465
+ line
466
+ end
467
+ # check if any of the selected classes have a Director proxy enabled
468
+ if proxies_enabled
469
+ # if so, we also need to update the header code (Director class declaration)
470
+ # create regexp for 'initialize' wrappers (due to overloads this could be more than one per class)
471
+ dir_re = /class\s+SwigDirector_\w+\s*:\s*public\s+(#{dir_cls_re_txt})\s*,\s*public\s+Swig::Director\s*{/
472
+ update_header do |line|
473
+ if dir_re =~ line # at Director class declaration?
474
+ # replace base class name by implementation name
475
+ cpp_class = $1
476
+ line.sub!(/public\s+#{cpp_class}/, "public #{class_implementation(cpp_class)}")
477
+ end
478
+ line
479
+ end
480
+ end
481
+ end
482
+ end
483
+
484
+ # Updates SWIG generated wrapper code for Mixin modules.
485
+ class FixInterfaceMixin < Processor
486
+
487
+ def run
488
+ # get the generated (class) items which have been defined to be mixins
489
+ class_list = def_items.select { |itm| Extractor::ClassDef === itm && is_mixin?(itm) }
490
+ # create re match list for class names
491
+ cls_re_txt = class_list.collect { |clsdef| rb_wx_name(clsdef.name) }.join('|')
492
+ skip_method = false
493
+ skip_conversion = false
494
+ update_source do |line|
495
+ if skip_method
496
+ skip_method = false if /\A}\s*\Z/ =~ line # end of function?
497
+ line = nil # remove line in output
498
+ else
499
+ # transform conversion of 'self' in wrapper functions
500
+ if /\A(\s*)res1\s*=\s*SWIG_ConvertPtr\(self,\s*&(\w+),\s*SWIGTYPE_p_wx(#{cls_re_txt})/ =~ line
501
+ line = "#{$1}res1 = wxRuby_ConvertTo#{$3}(self, &#{$2});"
502
+ elsif /\A(\s*)int\s+(\w+)\s*=\s*SWIG_ConvertPtr\(argv\[0\],\s*&(\w+),\s*SWIGTYPE_p_wx(#{cls_re_txt})/ =~ line
503
+ line = "#{$1}int #{$2} = wxRuby_ConvertTo#{$4}(argv[0], &#{$3});"
504
+ # remove unwanted function definitions
505
+ elsif /\Afree_wx(#{cls_re_txt})/ =~ line
506
+ line = "free_wx#{$1}() {}"
507
+ skip_method = true
508
+ # replace the class creation by a module creation
509
+ elsif /\A(\s*SwigClassWx(#{cls_re_txt}).klass\s*=\s*)rb_define_class_under\(\s*(\w+)\s*,\s*\"(\w+)\"/ =~ line
510
+ line = %Q{#{$1}rb_define_module_under(#{$3}, "#{$4}");}
511
+ # remove the alloc undef line
512
+ elsif /\A\s*rb_undef_alloc_func\s*\(SwigClassWx(#{cls_re_txt}).klass/ =~ line
513
+ line = nil
514
+ # as well as the lifecycle method setups
515
+ elsif /\A\s*SwigClassWx(#{cls_re_txt})\.(mark|destroy|trackObjects)\s*=/ =~ line
516
+ line = nil
517
+ end
518
+ end
519
+ line
520
+ end
521
+ end
522
+ end
523
+
524
+ # Provides public access overrides in director proxies for non-virtual protected members
525
+ # and updates wrapper methods to call public accessors in case of derived classes
526
+ class FixProtectedAccess < Processor
527
+
528
+ # collect the definitions of protected members that need public overrides for each class in the module
529
+ def collect_methods
530
+ cls_list = def_classes.select { |c| !c.ignored && (!c.is_template? || template_as_class?(c.name)) && !is_folded_base?(c.name) }
531
+ cls_list.inject({}) do |hash, clsdef|
532
+ intf_class_name = if (clsdef.is_template? && template_as_class?(clsdef.name))
533
+ template_class_name(clsdef.name)
534
+ else
535
+ clsdef.name
536
+ end
537
+ InterfaceAnalyzer.check_for_interface(intf_class_name, package)
538
+ mtds = InterfaceAnalyzer.class_interface_members_public(intf_class_name).collect do |member|
539
+ member = if ::String === member
540
+ InterfaceAnalyzer.class_interface_extension_methods(intf_class_name)[member.tr("\n", '')]
541
+ elsif Extractor::MethodDef === member || Extractor::MemberVarDef
542
+ member
543
+ else
544
+ nil
545
+ end
546
+ if member && needs_public_override?(clsdef, member)
547
+ member
548
+ else
549
+ nil
550
+ end
551
+ end.compact
552
+ hash[rb_wx_name(class_name(clsdef))] = mtds unless mtds.empty?
553
+ hash
554
+ end
555
+ end
556
+
557
+ def run
558
+ member_map = collect_methods rescue $!
559
+ return if member_map.empty?
560
+
561
+ # create re match list for class names
562
+ cls_re_txt = member_map.keys.join('|')
563
+ cls_re = /class\s*SwigDirector_wx(#{cls_re_txt})\s*:/
564
+ at_director = false
565
+ class_nm = nil
566
+
567
+ # update the SWIG generated director proxy class with the public overrides (inlines)
568
+ update_header do |line|
569
+ if at_director
570
+ # find end of class declaration
571
+ if /\A};/ =~ line
572
+ at_director = false
573
+ # prepend inline public accessors for protected members
574
+ decls = member_map[class_nm].collect do |mdef|
575
+ if Extractor::MethodDef === mdef
576
+ [
577
+ " #{mdef.type} #{mdef.name}_Public#{mdef.args_string} {",
578
+ " #{mdef.type == 'void' ? '' : 'return '}#{mdef.name}(#{mdef.parameters.collect {|p| p.name }.join(',')});",
579
+ ' }'
580
+ ]
581
+ else
582
+ [
583
+ " #{mdef.type} & #{mdef.name}_Public() {",
584
+ " return #{mdef.name};",
585
+ ' }'
586
+ ]
587
+ end
588
+ end.flatten
589
+ line = (decls << line)
590
+ end
591
+ # find start of director class
592
+ elsif cls_re =~ line
593
+ at_director = true
594
+ class_nm = $1
595
+ end
596
+ line
597
+ end
598
+
599
+ wrapper_re = /_wrap_wx(#{cls_re_txt})_(\w+)\(.*\)\s*{/
600
+ mtd_call_re = nil
601
+ at_wrapper = false
602
+ at_setter = false
603
+ matched_wrapper = false
604
+ mtd_nm = nil
605
+ mdef = nil
606
+
607
+ # update the SWIG generated wrapper code to use the public overrrides and declare the wrapper methods
608
+ # as protected
609
+ update_source do |line|
610
+ if at_wrapper
611
+ if /\A}/ =~ line
612
+ at_wrapper = false
613
+ matched_wrapper = false
614
+ elsif matched_wrapper && mtd_call_re =~ line
615
+ prefix = $1
616
+ line = [
617
+ "#{prefix}fpa_dir = dynamic_cast<Swig::Director *>(arg1);",
618
+ "#{prefix}fpa_upcall = (fpa_dir && (fpa_dir->swig_get_self() == self));",
619
+ "#{prefix}if (fpa_upcall)"
620
+ ]
621
+ if Extractor::MethodDef === mdef
622
+ dir_instance = if mdef.is_const
623
+ "dynamic_cast<const SwigDirector_wx#{class_nm}*> ((const Swig::Director*)fpa_dir)"
624
+ else
625
+ "dynamic_cast<SwigDirector_wx#{class_nm}*> (fpa_dir)"
626
+ end
627
+ if mdef.type == 'void'
628
+ line << "#{prefix} #{dir_instance}->#{mtd_nm}_Public#{$2};"
629
+ else
630
+ line << "#{prefix} result = (#{mdef.type})#{dir_instance}->#{mtd_nm}_Public#{$2};"
631
+ end
632
+ elsif at_setter
633
+ assignment = $2
634
+ dir_instance = "dynamic_cast<SwigDirector_wx#{class_nm}*> (fpa_dir)"
635
+ line << "#{prefix} #{dir_instance}->#{mdef.name}_Public()#{assignment};"
636
+ at_setter = false
637
+ else
638
+ dir_instance = "dynamic_cast<SwigDirector_wx#{class_nm}*> (fpa_dir)"
639
+ line << "#{prefix} result = #{dir_instance}->#{mdef.name}_Public();"
640
+ end
641
+ line.concat [
642
+ "#{prefix}else",
643
+ "#{prefix} rb_raise(rb_eRuntimeError, \"Invalid access attempt for protected method.\");"
644
+ ]
645
+ matched_wrapper = false
646
+ end
647
+ # find start of a wrapper method
648
+ elsif wrapper_re =~ line
649
+ class_nm = $1
650
+ mtd_nm = $2
651
+ at_wrapper = true
652
+ if (mdef = member_map[class_nm].detect { |m| Extractor::MethodDef === m && (m.rb_name || m.name) == mtd_nm })
653
+ matched_wrapper = true
654
+ mtd_call_re = /(\s*)\S.*arg1\)?->#{mtd_nm}(\(.*\));/
655
+ line = [line, ' bool fpa_upcall = false;', ' Swig::Director *fpa_dir = 0;']
656
+ elsif (mdef = member_map[class_nm].detect { |m| Extractor::MemberVarDef === m && "#{m.rb_name || m.name}_get" == mtd_nm })
657
+ matched_wrapper = true
658
+ mtd_call_re = /(\s*)\S.*arg1\)?->#{mdef.name}\)?;/
659
+ line = [line, ' bool fpa_upcall = false;', ' Swig::Director *fpa_dir = 0;']
660
+ elsif (mdef = member_map[class_nm].detect { |m| Extractor::MemberVarDef === m && "#{m.rb_name || m.name}_set" == mtd_nm })
661
+ matched_wrapper = true
662
+ at_setter = true;
663
+ mtd_call_re = /(\s*)\S.*arg1\)?->#{mdef.name}(\s*=\s*.*);/
664
+ line = [line, ' bool fpa_upcall = false;', ' Swig::Director *fpa_dir = 0;']
665
+ end
666
+ elsif /rb_define_method\(SwigClassWx(#{cls_re_txt}).klass\s*,\s*"(\w+)(=)?"\s*,\s*VALUEFUNC/ =~ line
667
+ class_nm = $1
668
+ mtdnm = $2
669
+ if member_map[class_nm].any? { |m| mtdnm == rb_method_name(m.rb_name || m.name) }
670
+ line.sub!('rb_define_method', 'rb_define_protected_method')
671
+ end
672
+ end
673
+ line
674
+ end
675
+ end
676
+ end
677
+
678
+ end # class Processor
679
+
680
+ end # module SwigRunner
681
+
682
+ end # module WXRuby3