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,171 @@
1
+ ###
2
+ # wxRuby3 wxWidgets interface director
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ module WXRuby3
7
+
8
+ class Director
9
+
10
+ class Event < Director
11
+
12
+ def setup
13
+ if spec.module_name == 'wxEvent'
14
+ spec.items << 'wxCommandEvent'
15
+ # To allow instance variables to be attached to custom subclasses of
16
+ # Wx::Event written in Ruby in a GC-safe, thread-safe way, wrap a
17
+ # custom C++ subclass of wxEvent as Ruby's Wx::Event.
18
+ #
19
+ # Note that this subclass only applies to Event objects created on the
20
+ # Ruby side - for the large majority of normal event handling, objects
21
+ # are created C++ side then given a shallow, transient wrapper for
22
+ # their use in Ruby - see wxRuby_WrapWxEventInRuby in swig/wx.i.
23
+ #
24
+ # make Ruby director and wrappers use custom implementation
25
+ spec.use_class_implementation('wxEvent', 'wxRubyEvent')
26
+ spec.extend_interface('wxEvent', 'wxEvent(wxEventType commandType = wxEVT_NULL, int id = 0, int prop_level = wxEVENT_PROPAGATE_NONE)')
27
+ spec.extend_interface('wxEvent', 'virtual wxEvent* Clone() const')
28
+ spec.ignore %w[wxEvent::Clone wxEvent::GetEventUserData]
29
+ spec.ignore 'wxEvent::wxEvent(int,wxEventType)'
30
+ spec.no_proxy 'wxEvent::Clone'
31
+ spec.add_header_code <<~__HEREDOC
32
+ // Custom subclass implementation. Provide a constructor, destructor and
33
+ // clone functions to allow proper linking to a Ruby object.
34
+ class WXRUBY_EXPORT wxRubyEvent : public wxEvent
35
+ {
36
+ public:
37
+ wxRubyEvent(wxEventType commandType = wxEVT_NULL,
38
+ int id = 0,
39
+ int prop_level = wxEVENT_PROPAGATE_NONE) :
40
+ wxEvent(id, commandType) { m_propagationLevel = prop_level; }
41
+ wxRubyEvent(const wxRubyEvent& ev) :
42
+ wxEvent(ev) { }
43
+
44
+ // When the C++ side event is destroyed, unlink from the Ruby object
45
+ // and remove that object from the tracking hash so it can be
46
+ // collected by GC.
47
+ virtual ~wxRubyEvent() {
48
+ SWIG_RubyUnlinkObjects((void*)this);
49
+ wxRuby_RemoveTracking((void*)this);
50
+ }
51
+
52
+ // Will be called when add_pending_event is used to queue an event
53
+ // (often when using Threads), because a clone is queued. So copy the
54
+ // Wx C++ event, create a shallow (dup) of the Ruby event object, and
55
+ // add to the tracking hash so that it is GC-protected
56
+ virtual wxEvent* Clone() const {
57
+ wxRubyEvent* wx_ev = new wxRubyEvent( *this );
58
+
59
+ VALUE r_obj = SWIG_RubyInstanceFor((void *)this);
60
+ VALUE r_obj_dup = rb_obj_clone(r_obj);
61
+
62
+ DATA_PTR(r_obj_dup) = wx_ev;
63
+ wxRuby_AddTracking( (void*)wx_ev, r_obj_dup );
64
+ return wx_ev;
65
+ }
66
+ };
67
+ __HEREDOC
68
+ spec.add_extend_code 'wxEvent', <<~__HEREDOC
69
+ // This class method provides a guaranteed-unique event id that can be
70
+ // used for custom event types.
71
+ static VALUE new_user_event_type()
72
+ {
73
+ // make sure to get an id offset from the user events base so we can use that to
74
+ // to check for user defined events
75
+ static int s_lastUsedUserEventType = wxEVT_USER_FIRST;
76
+
77
+ int event_type_id = ++s_lastUsedUserEventType;
78
+ return INT2NUM(event_type_id);
79
+ }
80
+ __HEREDOC
81
+ # make Ruby director and wrappers use custom implementation
82
+ spec.use_class_implementation('wxCommandEvent', 'wxRubyCommandEvent')
83
+ spec.ignore %w{
84
+ wxCommandEvent::GetClientObject
85
+ wxCommandEvent::SetClientObject
86
+ wxCommandEvent::GetExtraLong
87
+ }
88
+ spec.extend_interface('wxCommandEvent', 'virtual wxCommandEvent* Clone() const')
89
+ spec.no_proxy 'wxCommandEvent::Clone'
90
+ spec.add_header_code <<~__HEREDOC
91
+ // Cf wxEvent - has to be written as a C+++ subclass to ensure correct
92
+ // GC/thread protection of Ruby instance variables when user-written
93
+ // event classes are queued.
94
+ //
95
+ //
96
+ // FIXME : intermittent errors with CommandEvent losing the tracked
97
+ // object before handling - though the same code works fine with Wx::Event
98
+ class WXRUBY_EXPORT wxRubyCommandEvent : public wxCommandEvent
99
+ {
100
+ public:
101
+ wxRubyCommandEvent(wxEventType commandType = wxEVT_NULL,
102
+ int id = 0) :
103
+ wxCommandEvent(commandType, id) { }
104
+ wxRubyCommandEvent(const wxRubyCommandEvent& cev) :
105
+ wxCommandEvent(cev) { }
106
+
107
+ // When the C++ side event is destroyed, unlink from the Ruby object
108
+ // and remove that object from the tracking hash so it can be
109
+ // collected by GC.
110
+ virtual ~wxRubyCommandEvent() {
111
+ SWIG_RubyUnlinkObjects((void*)this);
112
+ wxRuby_RemoveTracking((void*)this);
113
+ }
114
+
115
+ // Will be called when add_pending_event is used to queue an event
116
+ // (often when using Threads), because a clone is queued. So copy the
117
+ // Wx C++ event, create a shallow (dup) of the Ruby event object, and
118
+ // add to the tracking hash so that it is GC-protected
119
+ virtual wxCommandEvent* Clone() const {
120
+ wxRubyCommandEvent* wx_ev = new wxRubyCommandEvent(*this);
121
+
122
+ VALUE r_obj = SWIG_RubyInstanceFor((void *)this);
123
+ VALUE r_obj_dup = rb_obj_clone(r_obj);
124
+
125
+ DATA_PTR(r_obj_dup) = wx_ev;
126
+ wxRuby_AddTracking( (void*)wx_ev, r_obj_dup );
127
+ return wx_ev;
128
+ }
129
+ };
130
+ __HEREDOC
131
+ spec.add_wrapper_code <<~__HEREDOC
132
+ extern VALUE wxRuby_GetDefaultEventClass () {
133
+ return SwigClassWxEvent.klass;
134
+ }
135
+ __HEREDOC
136
+ spec.ignore 'wxQueueEvent'
137
+ spec.set_only_for 'wxUSE_HOTKEY', 'wxEVT_HOTKEY'
138
+ # make sure this event constant definition exists
139
+ spec.add_swig_code %Q{%constant wxEventType wxEVT_MENU_HIGHLIGHT_ALL = wxEVT_MENU_HIGHLIGHT;}
140
+ # add event type constant missing from interface defs
141
+ spec.add_swig_code %Q{%constant wxEventType wxEVT_NC_PAINT = wxEVT_NC_PAINT;}
142
+ end
143
+ super
144
+ end
145
+
146
+ def process(gendoc: false)
147
+ defmod = super
148
+ spec.items.each do |citem|
149
+ unless citem == 'wxEvent'
150
+ def_item = defmod.find_item(citem)
151
+ if Extractor::ClassDef === def_item
152
+ if def_item.hierarchy.has_key?('wxEvent')
153
+ spec.override_inheritance_chain(citem, {'wxEvent' => 'wxEvent'}, 'wxObject')
154
+ elsif def_item.hierarchy.has_key?('wxCommandEvent')
155
+ spec.override_inheritance_chain(citem, {'wxCommandEvent' => 'wxEvent'}, 'wxEvent', 'wxObject')
156
+ elsif def_item.hierarchy.has_key?('wxGestureEvent')
157
+ spec.override_inheritance_chain(citem, {'wxGestureEvent' => 'wxEvents'}, 'wxEvent', 'wxObject')
158
+ elsif def_item.hierarchy.has_key?('wxNotifyEvent')
159
+ spec.override_inheritance_chain(citem, {'wxNotifyEvent' => 'wxEvents'}, {'wxCommandEvent' => 'wxEvent'}, 'wxEvent', 'wxObject')
160
+ end
161
+ spec.make_abstract(citem) if citem == 'wxPaintEvent' # doc flaw
162
+ end
163
+ end
164
+ end
165
+ defmod
166
+ end
167
+ end # class Event
168
+
169
+ end # class Director
170
+
171
+ end # module WXRuby3
@@ -0,0 +1,410 @@
1
+ ###
2
+ # wxRuby3 wxWidgets interface director
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ module WXRuby3
7
+
8
+ class Director
9
+
10
+ class EvtHandler < Director
11
+
12
+ def setup
13
+ super
14
+ # update generated code for all event handlers
15
+ spec.post_processors << :update_evthandler
16
+ if spec.module_name == 'wxEvtHandler'
17
+ # fully ignore
18
+ spec.ignore(
19
+ 'wxEvtHandler::Connect',
20
+ 'wxEvtHandler::Disconnect')
21
+ spec.ignore(%w[wxEVT_HOTKEY])
22
+ spec.ignore(%w[wxEvtHandler::SetClientData wxEvtHandler::GetClientData
23
+ wxEvtHandler::SetClientObject wxEvtHandler::GetClientObject])
24
+ # Do not see much point in allowing/supporting this to be overridden when we
25
+ # have TryBefore and TryAfter to handle this much cleaner
26
+ spec.no_proxy 'wxEvtHandler::ProcessEvent'
27
+ spec.regard('wxEvtHandler::ProcessEvent', regard_doc: false) # we provide customized docs
28
+ # make SWIG aware of these
29
+ spec.regard 'wxEvtHandler::TryBefore', 'wxEvtHandler::TryAfter'
30
+ # Special type mapping for wxEvtHandler::QueueEvent which assumes ownership of the C++ event.
31
+ # We need to create a shallow copy of the Ruby event instance (copying it's Ruby members if any),
32
+ # pass linkage of the C++ event to the copy and remove it from the original (input) Ruby
33
+ # instance (so it can not delete/or reference it anymore); also start tracking the copy
34
+ # (which effectively removes the tracking for the original).
35
+ # Queued (pending) events are cleaned up (deleted) by wxWidgets after (failing) handling
36
+ # which will automatically unlink and un-track them releasing the Ruby instance to be GC-ed.
37
+ spec.map 'wxEvent *event' => 'Wx::Event' do
38
+ map_in code: <<~__CODE
39
+ // get the wrapped wxEvent*
40
+ wxEvent *wx_ev = (wxEvent*)DATA_PTR($input);
41
+ // check if this a user defined event
42
+ if ( wx_ev->GetEventType() > wxEVT_USER_FIRST )
43
+ {
44
+ // we need to preserve the Ruby state
45
+ // create a shallow copy of the Ruby object
46
+ VALUE r_evt_copy = rb_obj_clone($input);
47
+ // pass the wxEvent* over to the copy
48
+ DATA_PTR(r_evt_copy) = wx_ev;
49
+ // unlink the input
50
+ DATA_PTR($input) = 0;
51
+ // track the copy (this overwrites the record for the
52
+ // original, effectively untracking it)
53
+ wxRuby_AddTracking( (void*)wx_ev, r_evt_copy);
54
+ }
55
+ else
56
+ {
57
+ // std wx event; no need to preserve the Ruby state
58
+ // simply untrack and unlink the input
59
+ wxRuby_RemoveTracking( (void*)wx_ev);
60
+ DATA_PTR($input) = 0;
61
+ // and just pass on the C++ event
62
+ }
63
+ // Queue the C++ event
64
+ $1 = wx_ev;
65
+ __CODE
66
+ end
67
+ spec.add_runtime_code <<~__HEREDOC
68
+ static swig_class wxRuby_GetSwigClassWxEvtHandler();
69
+ WXRUBY_EXPORT VALUE wxRuby_GetEventTypeClassMap();
70
+
71
+ class wxRbCallback;
72
+ static void wxRuby_ReleaseEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb);
73
+
74
+ // Class which stores the ruby proc associated with an event handler. We
75
+ // also cache the "call" symbol as this improves speed for event
76
+ // handlers which are called many times (eg evt_motion)
77
+ class wxRbCallback : public wxObject
78
+ {
79
+ public:
80
+ wxRbCallback(VALUE func, void* evh)
81
+ : m_func(func), m_evh(evh) {}
82
+ wxRbCallback(const wxRbCallback &other)
83
+ : wxObject(), m_func(other.m_func), m_evh(other.m_evh) {}
84
+ ~wxRbCallback()
85
+ { wxRuby_ReleaseEvtHandlerProc(m_evh, this); }
86
+
87
+ // This method handles all events on the WxWidgets/C++ side. It link
88
+ // inspects the event and based on the event's type wraps it in the
89
+ // appropriate class (the mapping can be found in
90
+ // lib/wx/classes/evthandler.rb). This wrapped event is then passed
91
+ // into the ruby proc for handling on the ruby side
92
+ void EventThunker(wxEvent &event)
93
+ {
94
+ static WxRuby_ID call_id("call");
95
+
96
+ #ifdef __WXRB_DEBUG__
97
+ VALUE rb_event = wxRuby_WrapWxEventInRuby(0, &event);
98
+ #else
99
+ VALUE rb_event = wxRuby_WrapWxEventInRuby(&event);
100
+ #endif
101
+ wxRbCallback *cb = (wxRbCallback *)event.m_callbackUserData;
102
+ bool ex_caught = false;
103
+ VALUE rc = wxRuby_Funcall(ex_caught, cb->m_func, call_id(), 1, rb_event);
104
+ if (ex_caught)
105
+ {
106
+ #ifdef __WXRB_DEBUG__
107
+ if (!rb_obj_is_kind_of(rc, rb_eSystemExit) && wxRuby_TraceLevel()>0)
108
+ {
109
+ wxRuby_PrintException(rc);
110
+ }
111
+ #endif
112
+ wxRuby_ExitMainLoop(rc);
113
+ }
114
+ }
115
+
116
+ VALUE m_func;
117
+ void* m_evh;
118
+ };
119
+
120
+ // Internally, all event handlers are anonymous ruby Proc objects,
121
+ // created by EvtHandler#connect. These need to be preserved from Ruby's
122
+ // GC until the EvtHandler object itself is destroyed. So we keep a hash
123
+ // which maps C++ pointer addresses of EvtHandlers to lists of
124
+ // the callback objects created to handle their events.
125
+ typedef wxVector<wxRbCallback*> EvtHandlerProcList;
126
+ typedef EvtHandlerProcList* EvtHandlerProcListPtr;
127
+ WX_DECLARE_VOIDPTR_HASH_MAP(EvtHandlerProcListPtr, PtrToEvtHandlerProcs);
128
+ PtrToEvtHandlerProcs Evt_Handler_Handlers;
129
+
130
+ // Add a proc to the list of protected handler for an EvtHandler object
131
+ void wxRuby_ProtectEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb)
132
+ {
133
+ if (Evt_Handler_Handlers.count(evt_handler) == 0)
134
+ Evt_Handler_Handlers[evt_handler] = new EvtHandlerProcList();
135
+ Evt_Handler_Handlers[evt_handler]->push_back(proc_cb);
136
+ }
137
+
138
+ static void wxRuby_ReleaseEvtHandlerProc(void* evt_handler, wxRbCallback* proc_cb)
139
+ {
140
+ if (Evt_Handler_Handlers.count(evt_handler) != 0)
141
+ {
142
+ EvtHandlerProcList *ehpl = Evt_Handler_Handlers[evt_handler];
143
+ for (EvtHandlerProcList::iterator itproc = ehpl->begin();
144
+ itproc != ehpl->end();
145
+ itproc++)
146
+ {
147
+ if (proc_cb == (*itproc))
148
+ {
149
+ ehpl->erase(itproc);
150
+ return;
151
+ }
152
+ }
153
+ }
154
+ }
155
+
156
+ // Called by App's mark function; protect all currently needed procs
157
+ void wxRuby_MarkProtectedEvtHandlerProcs()
158
+ {
159
+ PtrToEvtHandlerProcs::iterator it;
160
+ for( it = Evt_Handler_Handlers.begin();
161
+ it != Evt_Handler_Handlers.end();
162
+ ++it )
163
+ {
164
+ for (EvtHandlerProcList::iterator itproc = it->second->begin();
165
+ itproc != it->second->end();
166
+ itproc++)
167
+ {
168
+ rb_gc_mark((*itproc)->m_func);
169
+ }
170
+ }
171
+ }
172
+
173
+ // Called when a Window (or other event handler) is destroyed; allows handler procs associated
174
+ // with this object to be garbage collected at next run. See
175
+ // swig/mark_free_impl.i
176
+ WXRUBY_EXPORT void wxRuby_ReleaseEvtHandlerProcs(void* evt_handler)
177
+ {
178
+ if (Evt_Handler_Handlers.count(evt_handler) != 0)
179
+ {
180
+ delete Evt_Handler_Handlers[evt_handler];
181
+ Evt_Handler_Handlers.erase(evt_handler);
182
+ }
183
+ }
184
+
185
+ static WxRuby_ID __wxrb_method_id("method");
186
+ static WxRuby_ID __wxrb_try_before_id("try_before");
187
+ static WxRuby_ID __wxrb_try_after_id("try_after");
188
+ static WxRuby_ID __wxrb_source_location_id("source_location");
189
+
190
+ WXRUBY_EXPORT bool wxRuby_IsNativeMethod(VALUE object, ID method_id)
191
+ {
192
+ return Qnil == rb_funcall(rb_funcall(object, __wxrb_method_id(), 1, ID2SYM(method_id)),
193
+ __wxrb_source_location_id(),
194
+ 0);
195
+ }
196
+ __HEREDOC
197
+ spec.add_header_code <<~__HEREDOC
198
+ class RbAsyncProcCallEvent : public wxAsyncMethodCallEvent
199
+ {
200
+ public:
201
+ RbAsyncProcCallEvent(wxObject* evtObj, VALUE call)
202
+ : wxAsyncMethodCallEvent(evtObj)
203
+ , m_rb_call(call)
204
+ {}
205
+
206
+ RbAsyncProcCallEvent(const RbAsyncProcCallEvent& other)
207
+ : wxAsyncMethodCallEvent(other)
208
+ , m_rb_call(other.m_rb_call)
209
+ {}
210
+
211
+ virtual ~RbAsyncProcCallEvent()
212
+ {
213
+ wxRuby_RemoveTracking((void*)this);
214
+ }
215
+
216
+ virtual wxEvent *Clone() const wxOVERRIDE
217
+ {
218
+ return new RbAsyncProcCallEvent(*this);
219
+ }
220
+
221
+ virtual void Execute() wxOVERRIDE
222
+ {
223
+ static WxRuby_ID call_id("call");
224
+
225
+ bool ex_caught = false;
226
+ VALUE rc;
227
+ if (TYPE(m_rb_call) == T_ARRAY)
228
+ {
229
+ VALUE proc = rb_ary_entry(m_rb_call, 0);
230
+ VALUE args = rb_ary_subseq(m_rb_call, 1, RARRAY_LEN(m_rb_call)-1);
231
+ rc = wxRuby_Funcall(ex_caught, proc, call_id(), args);
232
+ }
233
+ else
234
+ {
235
+ rc = wxRuby_Funcall(ex_caught, m_rb_call, call_id(), (int)0);
236
+ }
237
+ if (ex_caught)
238
+ {
239
+ #ifdef __WXRB_DEBUG__
240
+ if (!rb_obj_is_kind_of(rc, rb_eSystemExit) && wxRuby_TraceLevel()>0)
241
+ {
242
+ wxRuby_PrintException(rc);
243
+ }
244
+ #endif
245
+ wxRuby_ExitMainLoop(rc);
246
+ }
247
+ }
248
+
249
+ private:
250
+ VALUE m_rb_call;
251
+ };
252
+ __HEREDOC
253
+ spec.add_extend_code 'wxEvtHandler', <<~__HEREDOC
254
+ // This provides the public Ruby 'connect' method
255
+ VALUE connect(int firstId, int lastId, wxEventType eventType, VALUE proc)
256
+ {
257
+ wxRbCallback* userData = new wxRbCallback(proc, (void *)$self);
258
+ wxRuby_ProtectEvtHandlerProc((void *)$self, userData);
259
+
260
+ wxObjectEventFunction function =
261
+ (wxObjectEventFunction )&wxRbCallback::EventThunker;
262
+ $self->Connect(firstId, lastId, eventType, function, userData);
263
+ return Qtrue;
264
+ }
265
+
266
+ // Implementation of disconnect, accepting either an EVT_XXX constant
267
+ // or a symbol name of an event handler method
268
+ VALUE disconnect(int firstId,
269
+ int lastId = wxID_ANY,
270
+ VALUE evtSpecifier = Qnil)
271
+ {
272
+ static WxRuby_ID event_type_for_name_id("event_type_for_name");
273
+
274
+ wxEventType event_type;
275
+
276
+ if ( TYPE(evtSpecifier) == T_FIXNUM ) // simply an Integer id
277
+ event_type = NUM2INT(evtSpecifier);
278
+ else if ( TYPE(evtSpecifier) == T_NIL ) // Not defined = any type
279
+ event_type = wxEVT_NULL;
280
+ else if ( TYPE(evtSpecifier) == T_SYMBOL ) // Symbol handler method
281
+ {
282
+ VALUE rb_evt_type = rb_funcall(wxRuby_GetSwigClassWxEvtHandler().klass,
283
+ event_type_for_name_id(),
284
+ 1, evtSpecifier);
285
+ if ( rb_evt_type != Qnil )
286
+ event_type = NUM2INT( rb_evt_type );
287
+ else
288
+ {
289
+ VALUE msg = rb_inspect(evtSpecifier);
290
+ rb_raise(rb_eTypeError, "Unknown event handler %s",
291
+ StringValuePtr(msg));
292
+ }
293
+ }
294
+ else
295
+ rb_raise(rb_eTypeError, "Invalid specifier for event type");
296
+
297
+ if ( $self->Disconnect(firstId, lastId, event_type))
298
+ return Qtrue;
299
+ else
300
+ return Qfalse;
301
+ }
302
+
303
+ void call_after(VALUE call)
304
+ {
305
+ // valid call object?
306
+ VALUE proc;
307
+ if (TYPE(call) == T_ARRAY &&
308
+ (rb_obj_is_kind_of(proc = rb_ary_entry(call, 0), rb_cProc)
309
+ ||
310
+ rb_obj_is_kind_of(proc, rb_cMethod)))
311
+ {
312
+ // create C++ event
313
+ RbAsyncProcCallEvent * evt = new RbAsyncProcCallEvent(self, call);
314
+ // track it and the call object
315
+ wxRuby_AddTracking( (void*)evt, call);
316
+ // queue it
317
+ self->QueueEvent(evt);
318
+ }
319
+ }
320
+ __HEREDOC
321
+ spec.add_wrapper_code <<~__HEREDOC
322
+ static swig_class wxRuby_GetSwigClassWxEvtHandler() {
323
+ return SwigClassWxEvtHandler;
324
+ }
325
+
326
+ WXRUBY_EXPORT VALUE wxRuby_GetEventTypeClassMap() {
327
+ VALUE map_name = rb_str_new2("EVENT_TYPE_CLASS_MAP");
328
+ return rb_const_get(wxRuby_GetSwigClassWxEvtHandler().klass, rb_to_id(map_name));
329
+ }
330
+ __HEREDOC
331
+ spec.do_not_generate :typedefs, :variables, :enums, :defines, :functions
332
+ else
333
+ spec.items.each do |itm|
334
+ # Avoid adding unneeded directors
335
+ spec.no_proxy("#{spec.class_name(itm)}::ProcessEvent") unless /\.h\Z/ =~ itm
336
+ end
337
+ spec.add_header_code <<~__HEREDOC
338
+ static WxRuby_ID __wxrb_try_before_id("try_before");
339
+ static WxRuby_ID __wxrb_try_after_id("try_after");
340
+ __HEREDOC
341
+ end
342
+ end
343
+ end # class EvtHandler
344
+
345
+ end # class Director
346
+
347
+ module SwigRunner
348
+ class Processor
349
+
350
+ # Special post-processor for EvtHandler and derivatives.
351
+ # This provides both an optimization and extra safe guarding for the
352
+ # event processing path in wxRuby.
353
+ # The processor inserts code in the 'TryXXX' methods of the director class which check
354
+ # for existence of any Ruby implementation of these methods ('try_before' or 'try_after')
355
+ # in the absence of which a direct call to the wxWidget implementation is made. If there
356
+ # does exist a Ruby ('override') implementation the method continues and calls the Ruby
357
+ # method implementation.
358
+ # The original wxWidget implementations are available in Ruby as 'wx_try_before' and
359
+ # 'wx_try_after' and can be called from the 'overrides'.
360
+ # Additionally the inserted code first off checks if the event handler is actually (still)
361
+ # able to handle events by calling wxRuby_FindTracking() since in wxRuby it is in rare occasions
362
+ # possible the event handler instance gets garbage collected AFTER the event processing
363
+ # path has started in which case the C++ and Ruby object are unlinked and any attempts to
364
+ # access the (originally) associated Ruby object will have bad results (this is especially
365
+ # true for dialogs which are not cleaned up by wxWidgets but rather garbage collected by Ruby).
366
+ class UpdateEvthandler < Processor
367
+
368
+ def run
369
+ at_director_method = false
370
+ director_method_id = nil
371
+ director_wx_class = nil
372
+ director_method_line = 0
373
+
374
+ prev_line = nil
375
+
376
+ update_source(at_end: ->(){ prev_line }) do |line|
377
+ if at_director_method
378
+ director_method_line += 1 # update line counter
379
+ if director_method_line == 4 && line.strip.empty? # are we at the right spot?
380
+ code = <<~__CODE # insert the code update
381
+ // added by wxRuby3 Processor.update_evthandler
382
+ // if Ruby object not registered anymore or no Ruby defined method override
383
+ // reroute directly to C++ method
384
+ if (Qnil == wxRuby_FindTracking(this) || wxRuby_IsNativeMethod(swig_get_self(), __wxrb_try_#{director_method_id.downcase}_id()))
385
+ {
386
+ return this->#{director_wx_class}::Try#{director_method_id}(event);
387
+ }
388
+ __CODE
389
+ line << "\n " << code.split("\n").join("\n ")
390
+ at_director_method = false # end of update
391
+ end
392
+ elsif /bool\s+SwigDirector_(\w+)::Try(Before|After)\(.*\)\s+{/ =~ line
393
+ director_wx_class = $1 == 'App' ? 'wxApp' : $1
394
+ director_method_id = $2 # After or Before method?
395
+ at_director_method = true # we're at a director method to be updated
396
+ director_method_line = 0 # keep track of the method lines
397
+ end
398
+
399
+ result = prev_line
400
+ prev_line = line
401
+ result
402
+ end
403
+ end
404
+
405
+ end # class UpdateEvthandler
406
+
407
+ end
408
+ end
409
+
410
+ end # module WXRuby3
@@ -0,0 +1,39 @@
1
+ ###
2
+ # wxRuby3 wxWidgets interface director
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ require_relative './event'
7
+
8
+ module WXRuby3
9
+
10
+ class Director
11
+
12
+ class Events < Event
13
+
14
+ def setup
15
+ super
16
+ spec.items.replace(%w[
17
+ wxIdleEvent wxNotifyEvent wxScrollEvent wxScrollWinEvent wxMouseEvent wxMouseState
18
+ wxSetCursorEvent wxGestureEvent wxPanGestureEvent wxZoomGestureEvent wxRotateGestureEvent
19
+ wxTwoFingerTapEvent wxLongPressEvent wxPressAndTapEvent wxKeyEvent wxKeyboardState
20
+ wxSizeEvent wxMoveEvent wxPaintEvent wxEraseEvent wxFocusEvent wxActivateEvent
21
+ wxInitDialogEvent wxMenuEvent wxCloseEvent wxShowEvent wxIconizeEvent wxMaximizeEvent
22
+ wxFullScreenEvent wxJoystickEvent wxDropFilesEvent wxUpdateUIEvent wxSysColourChangedEvent
23
+ wxMouseCaptureChangedEvent wxMouseCaptureLostEvent wxDisplayChangedEvent wxDPIChangedEvent
24
+ wxPaletteChangedEvent wxQueryNewPaletteEvent wxNavigationKeyEvent wxWindowCreateEvent
25
+ wxWindowDestroyEvent wxHelpEvent wxClipboardTextEvent wxContextMenuEvent wxChildFocusEvent
26
+ ])
27
+ spec.fold_bases('wxMouseEvent' => 'wxMouseState', 'wxKeyEvent' => 'wxKeyboardState')
28
+ spec.set_only_for 'WXWIN_COMPATIBILITY_2_8', 'wxShowEvent::GetShow', 'wxIconizeEvent::Iconized'
29
+ spec.ignore 'wxKeyEvent::GetPosition(wxCoord *,wxCoord *) const'
30
+ spec.ignore 'wxMouseState::GetPosition(int *,int *)'
31
+ spec.ignore 'wxShowEvent::GetShow', 'wxIconizeEvent::Iconized'
32
+ spec.do_not_generate(:variables, :defines, :enums, :functions)
33
+ end
34
+
35
+ end # class Events
36
+
37
+ end # class Director
38
+
39
+ end # module WXRuby3
@@ -0,0 +1,22 @@
1
+ ###
2
+ # wxRuby3 wxWidgets interface director
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ require_relative './window'
7
+
8
+ module WXRuby3
9
+
10
+ class Director
11
+
12
+ class FilePickerCtrl < Window
13
+
14
+ def setup
15
+ super
16
+ spec.do_not_generate(:variables, :defines, :enums, :functions) # with FileDirPickerEvent
17
+ end
18
+ end # class FilePickerCtrl
19
+
20
+ end # class Director
21
+
22
+ end # module WXRuby3
@@ -0,0 +1,22 @@
1
+ ###
2
+ # wxRuby3 wxWidgets interface director
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ require_relative './event'
7
+
8
+ module WXRuby3
9
+
10
+ class Director
11
+
12
+ class FindDialogEvent < Director::Event
13
+
14
+ def setup
15
+ super
16
+ end
17
+
18
+ end # class FindDialogEvent
19
+
20
+ end # class Director
21
+
22
+ end # module WXRuby3
@@ -0,0 +1,20 @@
1
+ ###
2
+ # wxRuby3 wxWidgets interface director
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ module WXRuby3
7
+
8
+ class Director
9
+
10
+ class FindReplaceData < Director
11
+
12
+ def setup
13
+ super
14
+ spec.do_not_generate(:variables, :enums)
15
+ end
16
+ end # class FindReplaceData
17
+
18
+ end # class Director
19
+
20
+ end # module WXRuby3