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,62 @@
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 ToolBar < Window
13
+
14
+ def setup
15
+ spec.items << 'wxToolBarToolBase'
16
+ super
17
+ # This class is an 'opaque handle' so these methods don't actually
18
+ # work to change the state; therefore hide them.
19
+ spec.ignore %w[
20
+ wxToolBarToolBase::Enable
21
+ wxToolBarToolBase::Toggle
22
+ wxToolBarToolBase::SetToggle
23
+ wxToolBarToolBase::SetShortHelp
24
+ wxToolBarToolBase::SetLongHelp
25
+ wxToolBarToolBase::SetNormalBitmap
26
+ wxToolBarToolBase::SetDisabledBitmap
27
+ wxToolBarToolBase::SetLabel
28
+ wxToolBarToolBase::SetClientData
29
+ wxToolBarToolBase::Detach
30
+ wxToolBarToolBase::Attach
31
+ ]
32
+ spec.no_proxy 'wxToolBarToolBase'
33
+ # more sensible name to use
34
+ spec.rename_for_ruby('ToolBarTool' => 'wxToolBarToolBase')
35
+ # Ensure that the C++ wxToolBar(Base) implementation of UpdateWindowUI
36
+ # is called internally, so that UpdateUIEvents are also sent to each
37
+ # button within the toolbar. This means update_window_ui can't be
38
+ # overridden for this class in Ruby, but unlikely a real problem.
39
+ spec.no_proxy 'wxToolBar::UpdateWindowUI'
40
+ # problematic (and probably not very useful to overload)
41
+ spec.no_proxy %w[
42
+ wxToolBar::AddControl
43
+ wxToolBar::AddSeparator
44
+ wxToolBar::FindControl
45
+ wxToolBar::FindToolForPosition
46
+ wxToolBar::GetToolClientData
47
+ wxToolBar::InsertControl
48
+ wxToolBar::InsertSeparator
49
+ wxToolBar::RemoveTool
50
+ wxToolBar::CreateTool
51
+ ]
52
+ # These don't work as you would think...
53
+ spec.ignore [
54
+ 'wxToolBar::AddTool(wxToolBarToolBase *)',
55
+ 'wxToolBar::InsertTool(size_t,wxToolBarToolBase *)'
56
+ ]
57
+ end
58
+ end # class Object
59
+
60
+ end # class Director
61
+
62
+ 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 ToolTip < Director
11
+
12
+ def setup
13
+ spec.set_only_for('__WXMSW__', 'wxToolTip::SetMaxWidth')
14
+ super
15
+ end
16
+ end # class ToolTip
17
+
18
+ end # class Director
19
+
20
+ end # module WXRuby3
@@ -0,0 +1,105 @@
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 TopLevelWindow < Window
13
+
14
+ def setup
15
+ super
16
+ # for all wxTopLevelWindow (derived) classes
17
+ spec.items.each do |itm|
18
+ spec.no_proxy("#{itm}::ClearBackground",
19
+ "#{itm}::Enable",
20
+ "#{itm}::EnableCloseButton",
21
+ "#{itm}::EndModal",
22
+ "#{itm}::GetHelpTextAtPoint",
23
+ "#{itm}::GetMaxSize",
24
+ "#{itm}::GetMinSize",
25
+ "#{itm}::GetTitle",
26
+ "#{itm}::Iconize",
27
+ "#{itm}::IsActive",
28
+ "#{itm}::IsFullScreen",
29
+ "#{itm}::IsMaximzed",
30
+ "#{itm}::IsAlwaysMaximzed",
31
+ "#{itm}::IsModal",
32
+ #"#{itm}::IsTopLevel",
33
+ "#{itm}::IsVisible",
34
+ "#{itm}::Maximize",
35
+ "#{itm}::Navigate",
36
+ "#{itm}::Refresh",
37
+ "#{itm}::Reparent",
38
+ "#{itm}::RequestUserAttention",
39
+ "#{itm}::Restore",
40
+ "#{itm}::SetIcon",
41
+ "#{itm}::SetIcons",
42
+ #"#{itm}::SetMaxSize",
43
+ #"#{itm}::SetMinSize",
44
+ "#{itm}::SetShape",
45
+ "#{itm}::SetSize",
46
+ "#{itm}::SetSize",
47
+ #"#{itm}::SetSizeHints",
48
+ #"#{itm}::SetSizeHints",
49
+ "#{itm}::SetTitle",
50
+ #"#{itm}::SetTransparent",
51
+ #"#{itm}::Show",
52
+ "#{itm}::ShowFullScreen",
53
+ "#{itm}::ShowModal",
54
+ "#{itm}::Update",
55
+ "#{itm}::UpdateWindow",
56
+ "#{itm}::Validate")
57
+ end
58
+
59
+ if spec.module_name == 'wxTopLevelWindow'
60
+ # add these to the generated interface to be parsed by SWIG
61
+ # the wxWidgets docs are flawed in this respect that several reimplemented
62
+ # virtual methods are not documented at the reimplementing class as such
63
+ # that would cause them missing from the interface which would cause a problem
64
+ # for a SWIG director redirecting to the Ruby class as the SWIG wrappers
65
+ # redirect explicitly to the implementation at the same class level as the wrapper
66
+ # for upcalls
67
+ spec.extend_interface('wxTopLevelWindow',
68
+ 'virtual bool Destroy() override',
69
+ #'virtual bool IsTopLevel() override',
70
+ 'virtual void SetLayoutDirection(wxLayoutDirection dir) override',
71
+ 'virtual bool Show(bool show = true) override',
72
+ 'virtual void Raise() override',
73
+ 'virtual void Refresh(bool eraseBackground = true, wxRect const *rect = NULL) override')
74
+ spec.add_wrapper_code <<~__HEREDOC
75
+ extern VALUE wxRuby_GetTopLevelWindowClass() {
76
+ return SwigClassWxTopLevelWindow.klass;
77
+ }
78
+ __HEREDOC
79
+ spec.ignore %w{
80
+ wxTopLevelWindow::SaveGeometry
81
+ wxTopLevelWindow::RestoreToGeometry
82
+ wxTopLevelWindow::GeometrySerializer
83
+ }
84
+ spec.set_only_for '__WXUNIVERSAL__', %w{
85
+ wxTopLevelWindow::IsUsingNativeDecorations
86
+ wxTopLevelWindow::UseNativeDecorations
87
+ wxTopLevelWindow::UseNativeDecorationsByDefault
88
+ }
89
+ spec.set_only_for '__WXMSW__',
90
+ 'wxTopLevelWindow::MSWGetSystemMenu'
91
+ spec.set_only_for '__WXOSX__',
92
+ 'wxTopLevelWindow::OSXSetModified',
93
+ 'wxTopLevelWindow::OSXIsModified'
94
+ spec.swig_import 'swig/classes/include/wxDefs.h'
95
+ # incorrectly documented here
96
+ spec.override_events 'wxTopLevelWindow',
97
+ { 'EVT_FULLSCREEN' => ['EVT_FULLSCREEN', 0, 'wxFullScreenEvent'],
98
+ 'EVT_MAXIMIZE' => ['EVT_MAXIMIZE', 0, 'wxMaximizeEvent'] }
99
+ end
100
+ end
101
+ end # class Frame
102
+
103
+ end # class Director
104
+
105
+ end # module WXRuby3
@@ -0,0 +1,411 @@
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 TreeCtrl < Window
13
+
14
+ include Typemap::TreeItemId
15
+
16
+ def setup
17
+ spec.post_processors << :fixtreectrl
18
+ spec.items.replace %w[wxTreeCtrl treebase.h]
19
+ spec.override_inheritance_chain('wxTreeCtrl', %w[wxControl wxWindow wxEvtHandler wxObject])
20
+ # mixin WithImages
21
+ spec.include_mixin 'wxTreeCtrl', 'Wx::WithImages'
22
+ spec.ignore('operator!=', 'operator==')
23
+ spec.include 'wx/dirctrl.h'
24
+ # These only differ from SetXXXList in the way memory ownership is
25
+ # transferred. So only support the version that won't leak on wxRuby.
26
+ spec.ignore %w[
27
+ wxTreeCtrl::AssignButtonsImageList
28
+ wxTreeCtrl::AssignStateImageList
29
+ wxTreeCtrl::GetFirstChild
30
+ wxTreeCtrl::GetNextChild
31
+ ]
32
+ # these are potentially involved in GC mark phase so
33
+ # we can't have them redirecting to Ruby calls
34
+ spec.no_proxy %w[
35
+ wxTreeCtrl::GetRootItem
36
+ wxTreeCtrl::ItemHasChildren
37
+ wxTreeCtrl::GetFirstVisibleItem
38
+ wxTreeCtrl::GetItemParent
39
+ wxTreeCtrl::GetPrevSibling
40
+ wxTreeCtrl::GetNextSibling
41
+ wxTreeCtrl::GetItemData
42
+ wxTreeCtrl::IsVisible
43
+ wxTreeCtrl::GetBoundingRect
44
+ ]
45
+ # as the above can't be proxied it doesn not really make
46
+ # sense to allow these
47
+ spec.no_proxy %w[
48
+ wxTreeCtrl::SetItemData
49
+ wxTreeCtrl::GetNextVisible
50
+ wxTreeCtrl::GetPrevVisible
51
+ wxTreeCtrl::GetLastChild
52
+ wxTreeCtrl::SetItemHasChildren
53
+ wxTreeCtrl::AddRoot
54
+ wxTreeCtrl::GetFocusedItem
55
+ wxTreeCtrl::GetSelection
56
+ ]
57
+ if Config.instance.features_set?('wxHAS_LAST_VISIBLE')
58
+ spec.no_proxy 'wxTreeCtrl::GetLastVisible'
59
+ end
60
+ # simply a nuisance to support
61
+ spec.no_proxy %w[
62
+ wxTreeCtrl::GetEditControl
63
+ wxTreeCtrl::EndEditLabel
64
+ ]
65
+ # for now, ignore this version as the added customization features
66
+ # do not work as yet and may cause us more trouble than it's worth
67
+ spec.ignore 'wxTreeCtrl::EditLabel'
68
+ # add simplified non-virtual version
69
+ spec.add_extend_code 'wxTreeCtrl', <<~__HEREDOC
70
+ void EditLabel(const wxTreeItemId &item)
71
+ {
72
+ // route to original method
73
+ (void)self->EditLabel(item);
74
+ }
75
+ __HEREDOC
76
+ if [:wxMSW, :wxQT].include?(Config.instance.wx_port)
77
+ spec.ignore('wxTreeCtrl::SetButtonsImageList')
78
+ spec.ignore('wxTreeCtrl::GetButtonsImageList')
79
+ end
80
+ # these reimplemented window base methods need to be properly wrapped but
81
+ # are missing from the XML docs
82
+ spec.extend_interface('wxTreeCtrl',
83
+ 'virtual bool SetBackgroundColour(const wxColour& colour)',
84
+ 'virtual bool SetForegroundColour(const wxColour& colour)',
85
+ 'virtual void Refresh(bool eraseBackground = true, const wxRect *rect = NULL)',
86
+ 'virtual bool SetFont( const wxFont &font )',
87
+ 'virtual void SetWindowStyleFlag(long styles)',
88
+ 'virtual void OnInternalIdle()')
89
+ # see below
90
+ spec.ignore 'wxTreeCtrl::InsertItem(const wxTreeItemId &,size_t,const wxString &,int,int,wxTreeItemData *)'
91
+ # Dealt with below
92
+ spec.ignore 'wxTreeCtrl::GetSelections'
93
+ # Typemap to return the flags in hit_test
94
+ spec.map_apply 'int *OUTPUT' => 'int& flags'
95
+
96
+ # ITEM DATA fixes - This is done so the API user never sees a
97
+ # TreeItemData object - where in Wx C++ such an object
98
+ # would be passed or returned by a method, any Ruby object may be used.
99
+ spec.add_header_code <<~__HEREDOC
100
+ class wxRbTreeItemData : public wxTreeItemData {
101
+ public:
102
+ wxRbTreeItemData(VALUE obj = Qnil) { m_obj = obj; }
103
+ VALUE GetRubyObject() { return m_obj; }
104
+ void SetRubyObject(VALUE obj) { m_obj = obj; }
105
+ protected:
106
+ VALUE m_obj;
107
+ };
108
+ __HEREDOC
109
+ # typemaps for setting and getting ruby objects as itemdata.
110
+ spec.map 'wxTreeItemData*' => 'Object' do
111
+ map_in code: '$1 = new wxRbTreeItemData($input);'
112
+ map_directorin code: <<~__CODE
113
+ wxRbTreeItemData* ruby_item_data = (wxRbTreeItemData *)$1;
114
+ $input = ruby_item_data->GetRubyObject();
115
+ __CODE
116
+ map_out code: <<~__CODE
117
+ if ( $1 == NULL )
118
+ {
119
+ $result = Qnil;
120
+ }
121
+ else
122
+ {
123
+ wxRbTreeItemData* ruby_item_data = (wxRbTreeItemData *)$1;
124
+ $result = ruby_item_data->GetRubyObject();
125
+ }
126
+ __CODE
127
+ end
128
+ # End item data fixes
129
+
130
+ # GC handling for item data objects. These are static because it avoids
131
+ # having to wrap a complete subclass
132
+ spec.add_header_code <<~__HEREDOC
133
+ extern VALUE mWxTreeItemId;
134
+ extern VALUE _wxRuby_Wrap_wxTreeItemId(const wxTreeItemId& id);
135
+ extern wxTreeItemId _wxRuby_Unwrap_wxTreeItemId(VALUE id);
136
+
137
+ // general recursion over a treectrl, starting from a base_id
138
+ // the function rec_func will be called in turn for each tree item,
139
+ // rec_func should be a funtion that receives a treectrl pointer and an ItemId
140
+ static void RecurseOverTreeIds(wxTreeCtrl *tree_ctrl, const wxTreeItemId& base_id, void(*rec_func)(void *, const wxTreeItemId&) )
141
+ {
142
+ if (!base_id.IsOk())
143
+ return;
144
+ rec_func(tree_ctrl, base_id);
145
+ // recurse through children
146
+ if (tree_ctrl->ItemHasChildren(base_id))
147
+ {
148
+ wxTreeItemIdValue cookie;
149
+ wxTreeItemId child = tree_ctrl->GetFirstChild(base_id, cookie);
150
+ while (child.IsOk())
151
+ {
152
+ RecurseOverTreeIds(tree_ctrl, child, *rec_func);
153
+ child = tree_ctrl->GetNextChild(base_id, cookie);
154
+ }
155
+ }
156
+ }
157
+
158
+ // Only really useful for HIDDEN_ROOT style; manually detect the first
159
+ // root-like item.
160
+ static wxTreeItemId FindFirstRoot(wxTreeCtrl *tree_ctrl) {
161
+ wxTreeItemId base_id = tree_ctrl->GetFirstVisibleItem();
162
+ if (base_id.IsOk())
163
+ {
164
+ wxTreeItemId prev_id = tree_ctrl->GetItemParent(base_id);
165
+ wxTreeItemId root_id = tree_ctrl->GetRootItem();
166
+ while ( prev_id.IsOk() && prev_id != root_id )
167
+ {
168
+ base_id = prev_id;
169
+ prev_id = tree_ctrl->GetItemParent(base_id);
170
+ }
171
+ prev_id = tree_ctrl->GetPrevSibling(base_id);
172
+ while ( prev_id.IsOk() )
173
+ {
174
+ base_id = prev_id;
175
+ prev_id = tree_ctrl->GetPrevSibling(base_id);
176
+ }
177
+ }
178
+ return base_id;
179
+ }
180
+
181
+ // Safe version of recursion from base across all contained items that
182
+ // works whether or not the TreeCtrl has the TR_HIDE_ROOT
183
+ // style. Required to ensure that marking of item data is done
184
+ // correctly for hidden-root treectrls.
185
+ static void RecurseFromRoot(wxTreeCtrl *tree_ctrl,
186
+ void(*rec_func)(void *, const wxTreeItemId&) )
187
+ {
188
+ // straightforward
189
+ if ((tree_ctrl->GetWindowStyle() & wxTR_HIDE_ROOT) != wxTR_HIDE_ROOT)
190
+ {
191
+ RecurseOverTreeIds(tree_ctrl, tree_ctrl->GetRootItem(), *rec_func);
192
+ return;
193
+ }
194
+ else // Find the top-left most item, then recurse over it and siblings
195
+ {
196
+ wxTreeItemId base_id = FindFirstRoot(tree_ctrl);
197
+ // now do recursion
198
+ RecurseOverTreeIds(tree_ctrl, base_id, *rec_func);
199
+ while ((base_id = tree_ctrl->GetNextSibling(base_id)).IsOk())
200
+ RecurseOverTreeIds(tree_ctrl, base_id, *rec_func);
201
+ return;
202
+ }
203
+ }
204
+
205
+ // Recursively-called function to implement of TreeCtrl#traverse
206
+ static void DoTreeCtrlYielding(void *ptr, const wxTreeItemId& item_id)
207
+ {
208
+ // wrap and give to ruby
209
+ rb_yield(_wxRuby_Wrap_wxTreeItemId(item_id));
210
+ }
211
+
212
+ // Recursively-called function to do GC marking of itemdata for every
213
+ // tree item
214
+ static void DoGCMarkItemData(void *ptr, const wxTreeItemId& item_id)
215
+ {
216
+ wxTreeCtrl* tree_ctrl = (wxTreeCtrl*) ptr;
217
+ // check if there's item data, and mark it
218
+ wxRbTreeItemData* ruby_item_data = (wxRbTreeItemData *)tree_ctrl->GetItemData(item_id);
219
+ if (ruby_item_data != NULL)
220
+ {
221
+ VALUE ruby_obj = ruby_item_data->GetRubyObject();
222
+ rb_gc_mark(ruby_obj);
223
+ }
224
+ }
225
+
226
+ // SWIG's entry point function for GC mark
227
+ static void GC_mark_wxTreeCtrl(void *ptr)
228
+ {
229
+ if ( GC_IsWindowDeleted(ptr) )
230
+ return;
231
+
232
+ // Do standard marking routines as for all wxWindows
233
+ GC_mark_wxWindow(ptr);
234
+
235
+ wxTreeCtrl* tree_ctrl = (wxTreeCtrl*) ptr;
236
+
237
+ wxImageList* img_list;
238
+ // First check if there's ImageLists and mark if found
239
+ img_list = tree_ctrl->GetImageList();
240
+ if ( img_list ) rb_gc_mark(SWIG_RubyInstanceFor(img_list));
241
+ #if !defined(__WXMSW__) && !defined(__WXQT__)
242
+ img_list = tree_ctrl->GetButtonsImageList();
243
+ if ( img_list ) rb_gc_mark(SWIG_RubyInstanceFor(img_list));
244
+ #endif
245
+ img_list = tree_ctrl->GetStateImageList();
246
+ if ( img_list ) rb_gc_mark(SWIG_RubyInstanceFor(img_list));
247
+
248
+ // Stop here if it's a TreeCtrl belonging to a GenericDirCtrl, as
249
+ // the item data aren't ruby objects
250
+ wxWindow* parent = tree_ctrl->GetParent();
251
+ if ( parent->IsKindOf( CLASSINFO(wxGenericDirCtrl) ) )
252
+ return;
253
+
254
+ // Otherwise proceed and GC mark the item data objects associated
255
+ // with the TreeCtrl
256
+ RecurseFromRoot(tree_ctrl, &DoGCMarkItemData);
257
+ }
258
+ __HEREDOC
259
+ spec.add_swig_code '%markfunc wxTreeCtrl "GC_mark_wxTreeCtrl";'
260
+
261
+ spec.add_extend_code 'wxTreeCtrl', <<~__HEREDOC
262
+ // The C++ interface uses a "cookie" to enable iteration over the
263
+ // children. This is not very rubyish.
264
+ // Change signature so it only accepts a root TreeItemId and returns
265
+ // an array of the child TreeItemId and the cookie, as Ruby Fixnums.
266
+ VALUE get_first_child(const wxTreeItemId& item)
267
+ {
268
+ void* cookie = 0;
269
+ wxTreeItemId ret_item = self->GetFirstChild(item, cookie);
270
+ VALUE array = rb_ary_new();
271
+
272
+ rb_ary_push(array, _wxRuby_Wrap_wxTreeItemId(ret_item));
273
+ rb_ary_push(array,LL2NUM((int64_t)cookie));
274
+
275
+ return array;
276
+ }
277
+
278
+ // Change signature so it accepts a TreeItemId and Ruby cookie value
279
+ // and returns an array of the next child TreeItemId and the cookie
280
+ // as Ruby Fixnums.
281
+ VALUE get_next_child(const wxTreeItemId& item, long long rbcookie)
282
+ {
283
+ void* cookie = (void*)rbcookie;
284
+ wxTreeItemId ret_item = self->GetNextChild(item, cookie);
285
+
286
+ VALUE array = rb_ary_new();
287
+
288
+ rb_ary_push(array, _wxRuby_Wrap_wxTreeItemId(ret_item));
289
+ rb_ary_push(array,LL2NUM((long long)cookie));
290
+
291
+ return array;
292
+ }
293
+
294
+ // Return an array of root items; mainly useful for TR_HIDE_ROOT
295
+ // style where there are multiple root-like items, and GetItemRoot
296
+ // doesn't work properly
297
+ VALUE get_root_items()
298
+ {
299
+ VALUE rb_tree_ids = rb_ary_new();
300
+ if ( self->GetWindowStyle() & wxTR_HIDE_ROOT )
301
+ {
302
+ wxTreeItemId base_id = FindFirstRoot(self);
303
+
304
+ // now do recursion
305
+ while (base_id.IsOk())
306
+ {
307
+ rb_ary_push(rb_tree_ids, _wxRuby_Wrap_wxTreeItemId(base_id));
308
+ base_id = self->GetNextSibling(base_id);
309
+ }
310
+ }
311
+ // Standard single-root TreeCtrl
312
+ else
313
+ {
314
+ rb_ary_push(rb_tree_ids, _wxRuby_Wrap_wxTreeItemId(self->GetRootItem()));
315
+ }
316
+ return rb_tree_ids;
317
+ }
318
+
319
+ // Just return a simple array in ruby
320
+ VALUE get_selections()
321
+ {
322
+ VALUE rb_tree_ids = rb_ary_new();
323
+ wxArrayTreeItemIds tree_ids = wxArrayTreeItemIds();
324
+ size_t sel_count = self->GetSelections(tree_ids);
325
+ for ( size_t i = 0; i < sel_count; i++ )
326
+ {
327
+ rb_ary_push(rb_tree_ids, _wxRuby_Wrap_wxTreeItemId(tree_ids.Item(i)));
328
+ }
329
+ return rb_tree_ids;
330
+ }
331
+
332
+ // Changed this version of insert_item to insert_item_before so SWIG
333
+ // does not get confused between the 2 method signatures
334
+ // This behaviour matches that used by wxPython.
335
+ wxTreeItemId insert_item_before(const wxTreeItemId& parent,
336
+ size_t index,
337
+ const wxString& text,
338
+ int image = -1, int selectedImage = -1,
339
+ wxTreeItemData *data = NULL)
340
+ {
341
+ return self->InsertItem(parent,index,text,image,selectedImage,data);
342
+ }
343
+
344
+ // Loop over the items in the TreeCtrl, starting from the item
345
+ // identified by start_id, passing the id of each item into the
346
+ // passed ruby block. Starts from root and covers all if no arg.
347
+ VALUE traverse( VALUE start_id = Qnil )
348
+ {
349
+ if ( start_id == Qnil )
350
+ RecurseFromRoot(self, &DoTreeCtrlYielding);
351
+ else
352
+ {
353
+ wxTreeItemId base_id = _wxRuby_Unwrap_wxTreeItemId(start_id);
354
+ if (!base_id.IsOk())
355
+ rb_raise(rb_eArgError, "Invalid tree identifier");
356
+ else
357
+ RecurseOverTreeIds(self, base_id, &DoTreeCtrlYielding);
358
+ }
359
+ return Qnil;
360
+ }
361
+ __HEREDOC
362
+ super
363
+ end
364
+ end # class TreeCtrl
365
+
366
+ end # class Director
367
+
368
+ module SwigRunner
369
+ class Processor
370
+
371
+ # special post-processor for TreeCtrl
372
+ class Fixtreectrl < Processor
373
+
374
+ def run
375
+ director_found = false
376
+ update_source do |line|
377
+ # Ugly: special fixes for TreeCtrl - these macros and extra funcs
378
+ # are needed to allow user-defined sorting to work
379
+ # default ctor needed for Swig::Director
380
+ if line["Director(VALUE self) : swig_self(self), swig_disown_flag(false)"]
381
+ line = " Director() { } // added by fixmodule.rb \n" + line
382
+ end
383
+ if line["SwigDirector_wxTreeCtrl::SwigDirector_wxTreeCtrl(VALUE self)"]
384
+ line = "IMPLEMENT_DYNAMIC_CLASS(SwigDirector_wxTreeCtrl, wxTreeCtrl);\n" + line
385
+ director_found = true
386
+ end
387
+
388
+ line
389
+ end
390
+ if director_found
391
+ # We also need to tweak the header file
392
+ update_header do |line|
393
+ if line.strip == 'public:'
394
+ line << "\nSwigDirector_wxTreeCtrl() {};"
395
+ elsif /\A};/ =~ line
396
+ line = <<~__HEREDOC
397
+ private:
398
+ DECLARE_DYNAMIC_CLASS(SwigDirector_wxTreeCtrl);
399
+ };
400
+ __HEREDOC
401
+ end
402
+ line
403
+ end
404
+ end
405
+ end
406
+ end # class Fixtreectrl
407
+
408
+ end
409
+ end
410
+
411
+ end # module WXRuby3
@@ -0,0 +1,78 @@
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 TreeEvent < Event
13
+
14
+ include Typemap::TreeItemId
15
+
16
+ def setup
17
+ super
18
+ # create a lightweight, but typesafe, wrapper for wxEventId
19
+ spec.add_init_code <<~__HEREDOC
20
+ // define TreeItemId wrapper class
21
+ mWxTreeItemId = rb_define_class_under(mWxCore, "TreeItemId", rb_cObject);
22
+ rb_undef_alloc_func(mWxTreeItemId);
23
+ rb_define_method(mWxTreeItemId, "is_ok", VALUEFUNC(_wxRuby_wxTreeItemId_IsOk), 0);
24
+ rb_define_method(mWxTreeItemId, "ok?", VALUEFUNC(_wxRuby_wxTreeItemId_IsOk), 0);
25
+ __HEREDOC
26
+
27
+ spec.add_header_code <<~__HEREDOC
28
+ VALUE mWxTreeItemId;
29
+ VALUE _wxRuby_Wrap_wxTreeItemId(const wxTreeItemId& id);
30
+ wxTreeItemId _wxRuby_Unwrap_wxTreeItemId(VALUE id);
31
+ __HEREDOC
32
+
33
+ spec.add_wrapper_code <<~__HEREDOC
34
+ // wxTreeItemId wrapper class definition and helper functions
35
+ static size_t __wxTreeEventId_size(const void* data)
36
+ {
37
+ return 0;
38
+ }
39
+
40
+ #include <ruby/version.h>
41
+
42
+ static const rb_data_type_t __wxTreeEventId_type = {
43
+ "TreeEventId",
44
+ #if RUBY_API_VERSION_MAJOR >= 3
45
+ { NULL, NULL, __wxTreeEventId_size, 0, 0},
46
+ #else
47
+ { NULL, NULL, __wxTreeEventId_size, 0},
48
+ #endif
49
+ NULL, NULL, RUBY_TYPED_FREE_IMMEDIATELY
50
+ };
51
+
52
+ VALUE _wxRuby_Wrap_wxTreeItemId(const wxTreeItemId& id)
53
+ {
54
+ void* data = id.GetID();
55
+ VALUE ret = TypedData_Wrap_Struct(mWxTreeItemId, &__wxTreeEventId_type, data);
56
+ return ret;
57
+ }
58
+
59
+ wxTreeItemId _wxRuby_Unwrap_wxTreeItemId(VALUE id)
60
+ {
61
+ void *data = 0;
62
+ TypedData_Get_Struct(id, void, &__wxTreeEventId_type, data);
63
+ return wxTreeItemId(data);
64
+ }
65
+
66
+ VALUE _wxRuby_wxTreeItemId_IsOk(VALUE self)
67
+ {
68
+ void *data = 0;
69
+ TypedData_Get_Struct(self, void, &__wxTreeEventId_type, data);
70
+ return wxTreeItemId(data).IsOk() ? Qtrue : Qfalse;
71
+ }
72
+ __HEREDOC
73
+ end
74
+ end # class TreeEvent
75
+
76
+ end # class Director
77
+
78
+ end # module WXRuby3