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,742 @@
1
+ ###
2
+ # wxRuby3 SWIG interface definition Generator class
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ require 'monitor'
7
+
8
+ require_relative './base'
9
+ require_relative './analyzer'
10
+
11
+ module WXRuby3
12
+
13
+ class InterfaceGenerator < Generator
14
+
15
+ def initialize(dir)
16
+ super
17
+ # select all typemaps that have an ignored out map
18
+ @typemaps_with_ignored_out = type_maps.select { |tm| tm.ignores_output? }
19
+ end
20
+
21
+ def gen_swig_header(fout)
22
+ fout << <<~__HEREDOC
23
+ /**
24
+ * This file is automatically generated by the WXRuby3 interface generator.
25
+ * Do not alter this file.
26
+ */
27
+
28
+ %include "../common.i"
29
+
30
+ %module(directors="1") #{module_name}
31
+ __HEREDOC
32
+ end
33
+
34
+ def gen_swig_gc_types(fout)
35
+ def_items.each do |item|
36
+ if Extractor::ClassDef === item
37
+ unless is_folded_base?(item.name)
38
+ fout.puts "#{gc_type(item)}(#{class_name(item)});"
39
+ end
40
+ item.innerclasses.each do |inner|
41
+ fout.puts "#{gc_type(inner)}(#{class_name(inner)});"
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ def gen_mixin_code(fout, name)
48
+ rb_name = rb_wx_name(name)
49
+ fout.puts
50
+ fout << <<~__HEREDOC
51
+ typedef #{name}* (*wx_#{underscore(rb_name)}_convert_fn)(void*);
52
+ // Mapping of swig_class* to wx_#{underscore(rb_name)}_convert_fn
53
+ WX_DECLARE_VOIDPTR_HASH_MAP(wx_#{underscore(rb_name)}_convert_fn,
54
+ WXRB#{rb_name}MixinConvertHash);
55
+ static WXRB#{rb_name}MixinConvertHash #{rb_name}_Mixin_Cast_Map;
56
+
57
+ WXRB_EXPORT_FLAG void wxRuby_Register_#{rb_name}_Include(swig_class* cls_info,
58
+ wx_#{underscore(rb_name)}_convert_fn converter)
59
+ {
60
+ #{rb_name}_Mixin_Cast_Map[cls_info] = converter;
61
+ }
62
+
63
+ WXRB_EXPORT_FLAG int wxRuby_ConvertTo#{rb_name}(VALUE obj, void** ptr)
64
+ {
65
+ if (NIL_P(obj))
66
+ {
67
+ return SWIG_ERROR;
68
+ }
69
+
70
+ if (TYPE(obj) != T_DATA)
71
+ {
72
+ VALUE msg = rb_inspect(obj);
73
+ rb_raise(rb_eArgError,
74
+ "Expected a #{rb_name} but got %s",
75
+ StringValuePtr(msg));
76
+ }
77
+
78
+ WXRB#{rb_name}MixinConvertHash::iterator it;
79
+ for( it = #{rb_name}_Mixin_Cast_Map.begin(); it != #{rb_name}_Mixin_Cast_Map.end(); ++it )
80
+ {
81
+ swig_class* cls_info = static_cast<swig_class*> (it->first);
82
+ if (rb_obj_is_kind_of(obj, cls_info->klass))
83
+ {
84
+ void *vptr = 0;
85
+ /* Grab the pointer */
86
+ Data_Get_Struct(obj, void, vptr);
87
+ wx_#{underscore(rb_name)}_convert_fn fn_cvt = it->second;
88
+ *ptr = (*fn_cvt)(vptr);
89
+ return SWIG_OK;
90
+ }
91
+ }
92
+ return SWIG_ERROR;
93
+ }
94
+ __HEREDOC
95
+ end
96
+
97
+ def gen_mixin_convert_code(fout, cls, mod)
98
+ rb_mod_name = mod.split('::').last
99
+ decl_flag = (mod.start_with?(package.fullname) ? 'WXRB_EXPORT_FLAG' : 'WXRB_IMPORT_FLAG') # same package (dll) or import?
100
+ fout.puts
101
+ fout << <<~__HEREDOC
102
+ // Mixin converter for wx#{rb_mod_name} included in #{cls}
103
+ typedef wx#{rb_mod_name}* (*wx_#{underscore(rb_mod_name)}_convert_fn)(void*);
104
+ #{decl_flag} void wxRuby_Register_#{rb_mod_name}_Include(swig_class* cls_info,
105
+ wx_#{underscore(rb_mod_name)}_convert_fn converter);
106
+ static wx#{rb_mod_name}* wxRuby_ConvertTo_#{rb_mod_name}(void* ptr)
107
+ {
108
+ return ((wx#{rb_mod_name}*) static_cast<#{cls}*> (ptr));
109
+ }
110
+ __HEREDOC
111
+ end
112
+
113
+ def gen_swig_begin_code(fout)
114
+ unless disowns.empty?
115
+ fout.puts
116
+ disowns.each do |dis|
117
+ if ::Hash === dis
118
+ decl, flag = dis.first
119
+ fout.puts "%apply SWIGTYPE *#{flag ? 'DISOWN' : ''} { #{decl} };"
120
+ else
121
+ fout.puts "%apply SWIGTYPE *DISOWN { #{dis} };"
122
+ end
123
+ end
124
+ end
125
+ unless new_objects.empty?
126
+ fout.puts
127
+ new_objects.each do |decl|
128
+ fout.puts "%newobject #{decl};"
129
+ end
130
+ end
131
+ unless includes.empty? && header_code.empty? && mixins.empty? && included_mixins.empty?
132
+ fout.puts
133
+ fout.puts "%header %{"
134
+ includes.each do |inc|
135
+ fout.puts "#include \"#{inc}\"" unless inc.index('wx.h')
136
+ end
137
+ unless header_code.empty?
138
+ fout.puts
139
+ fout.puts header_code
140
+ end
141
+ unless mixins.empty?
142
+ mixins.each { |name| gen_mixin_code(fout, name) }
143
+ end
144
+ unless included_mixins.empty?
145
+ included_mixins.each_pair {|cls, mods| mods.each { |mod| gen_mixin_convert_code(fout, cls, mod) } }
146
+ end
147
+ fout.puts "%}"
148
+ end
149
+ if begin_code && !begin_code.empty?
150
+ fout.puts
151
+ fout.puts "%begin %{"
152
+ fout.puts begin_code
153
+ fout.puts "%}"
154
+ end
155
+ end
156
+
157
+ def gen_swig_runtime_code(fout)
158
+ if disabled_proxies
159
+ def_classes.each do |cls|
160
+ if !cls.ignored && !cls.is_template?
161
+ unless is_folded_base?(cls.name)
162
+ fout.puts "%feature(\"nodirector\") #{class_name(cls)};"
163
+ end
164
+ end
165
+ end
166
+ else
167
+ def_classes.each do |cls|
168
+ unless cls.ignored || cls.is_template? || has_virtuals?(cls) || forced_proxy?(cls.name)
169
+ fout.puts "%feature(\"nodirector\") #{class_name(cls)};"
170
+ end
171
+ if forced_proxy?(cls.name) && !cls.ignored && !cls.is_template?
172
+ fout.puts "%feature(\"notabstract\") #{class_name(cls)};"
173
+ end
174
+ end
175
+ end
176
+ unless no_proxies.empty?
177
+ fout.puts
178
+ no_proxies.each do |name|
179
+ fout.puts "%feature(\"nodirector\") #{name};"
180
+ end
181
+ end
182
+ unless renames.empty?
183
+ fout.puts
184
+ renames.each_pair do |to, from|
185
+ from.each { |org| fout.puts "%rename(\"#{to}\") #{org};" }
186
+ end
187
+ end
188
+ fout.puts
189
+ fout.puts "%runtime %{"
190
+ fout.puts "extern VALUE #{package.module_variable}; // The global package module"
191
+ fout.puts 'WXRUBY_EXPORT VALUE wxRuby_Core(); // returns the core package module'
192
+ if runtime_code && !runtime_code.empty?
193
+ fout.puts runtime_code
194
+ end
195
+ fout.puts "%}"
196
+ end
197
+
198
+ def gen_swig_code(fout)
199
+ fout.puts
200
+ fout.puts type_maps.to_swig
201
+ if swig_code && !swig_code.empty?
202
+ fout.puts
203
+ fout.puts swig_code
204
+ end
205
+ unless included_mixins.empty?
206
+ fout.puts
207
+ included_mixins.each_pair do |cls, module_names|
208
+ module_names.each { |m| fout.puts %Q{%mixin #{cls} "#{m}";} }
209
+ end
210
+ end
211
+ end
212
+
213
+ def gen_swig_wrapper_code(fout)
214
+ if wrapper_code && !wrapper_code.empty?
215
+ fout.puts
216
+ fout.puts "%wrapper %{"
217
+ fout.puts wrapper_code
218
+ fout.puts "%}"
219
+ end
220
+ end
221
+
222
+ def gen_swig_init_code(fout)
223
+ unless init_code.empty? && included_mixins.empty?
224
+ fout.puts
225
+ fout.puts "%init %{"
226
+ unless init_code.empty?
227
+ fout.puts
228
+ fout.puts init_code
229
+ end
230
+ unless included_mixins.empty?
231
+ fout.puts
232
+ included_mixins.each_pair do |cls, module_names|
233
+ module_names.each do |modname|
234
+ m = modname.split('::').last
235
+ fout.puts %Q{wxRuby_Register_#{m}_Include(&SwigClassWx#{rb_wx_name(cls)}, wxRuby_ConvertTo_#{m});}
236
+ end
237
+ end
238
+ end
239
+ fout.puts "%}"
240
+ end
241
+ end
242
+
243
+ def gen_swig_extensions(fout)
244
+ def_items.each do |item|
245
+ if Extractor::ClassDef === item && !item.ignored && !is_folded_base?(item.name)
246
+ extension = extend_code(class_name(item.name))
247
+ unless extension.empty?
248
+ fout.puts "\n%extend #{class_name(item.name)} {"
249
+ fout.puts extension
250
+ fout.puts '};'
251
+ end
252
+ end
253
+ end
254
+ end
255
+
256
+ def gen_swig_interface_code(fout)
257
+ unless ifspec.contracts.empty?
258
+ fout.puts
259
+ ifspec.contracts.each_pair do |fn, contract|
260
+ fout.puts <<~__CODE
261
+ %contract #{fn} {
262
+ require:
263
+ #{contract};
264
+ }
265
+ __CODE
266
+ end
267
+ end
268
+
269
+ generated_imports = ::Set.new
270
+
271
+ unless swig_imports[:prepend].empty?
272
+ fout.puts
273
+ swig_imports[:prepend].each do |inc|
274
+ fout.puts %Q{%import "#{inc}"}
275
+ generated_imports << inc
276
+ end
277
+ end
278
+
279
+ spacer = false
280
+ def_items.each do |item|
281
+ if Extractor::ClassDef === item && !item.ignored && !is_folded_base?(item.name)
282
+ base_module_list(item).reverse.each do |base_mod|
283
+ unless module_name == base_mod || def_item(base_mod)
284
+ import_fnm = File.join(WXRuby3::Config.instance.interface_dir, "#{base_mod}.h")
285
+ unless generated_imports.include?(import_fnm)
286
+ fout.puts unless spacer
287
+ spacer = true
288
+ fout.puts %Q{%import "#{import_fnm}"}
289
+ generated_imports << import_fnm
290
+ end
291
+ end
292
+ end
293
+ end
294
+ end
295
+
296
+ unless swig_imports[:append].empty?
297
+ fout.puts
298
+ swig_imports[:append].each do |inc|
299
+ unless generated_imports.include?(inc)
300
+ fout.puts %Q{%import "#{inc}"}
301
+ generated_imports << inc
302
+ end
303
+ end
304
+ end
305
+
306
+ unless swig_includes.empty?
307
+ fout.puts
308
+ swig_includes.each do |inc|
309
+ fout.puts %Q{%include "#{inc}"}
310
+ end
311
+ end
312
+
313
+ fout.puts
314
+ fout.puts interface_code
315
+ end
316
+
317
+ def gen_swig_interface_file
318
+ gen_swig_interface_specs(CodeStream.new(interface_file))
319
+ end
320
+
321
+ def gen_interface_classes(fout)
322
+ def_items.each do |item|
323
+ if Extractor::ClassDef === item && !item.ignored && (!item.is_template? || template_as_class?(item.name))
324
+ unless is_folded_base?(item.name)
325
+ gen_interface_class(fout, item)
326
+ end
327
+ end
328
+ end
329
+ end
330
+
331
+ def gen_interface_class(fout, classdef)
332
+ requires_purevirtual = has_proxy?(classdef)
333
+
334
+ intf_class_name = if (classdef.is_template? && template_as_class?(classdef.name))
335
+ template_class_name(classdef.name)
336
+ else
337
+ classdef.name
338
+ end
339
+
340
+ fout.puts ''
341
+ basecls = base_class(classdef)
342
+ if basecls
343
+ fout.puts "class #{basecls};"
344
+ fout.puts
345
+ end
346
+
347
+ # collect possible aliases
348
+ alias_methods = classdef.aliases
349
+ folded_bases(classdef.name).each do |basename|
350
+ alias_methods = def_item(basename).aliases.merge(alias_methods)
351
+ end
352
+ # don't worry about aliases for methods that are not actually generated
353
+ # unmatched '%alias' directives are silently ignored.
354
+ unless alias_methods.empty?
355
+ alias_methods.each_pair do |mtd_name, alias_name|
356
+ fout.puts %Q{%alias #{class_name(classdef)}::#{mtd_name} "#{alias_name}";}
357
+ end
358
+ fout.puts
359
+ end
360
+
361
+ is_struct = classdef.kind == 'struct'
362
+ fout.puts "#{classdef.kind} #{class_name(classdef)}#{basecls ? ' : public '+basecls : ''}"
363
+ fout.puts '{'
364
+
365
+ unless is_struct
366
+ fout.puts 'public:'
367
+ end
368
+ if (abstract_class = is_abstract?(classdef))
369
+ fout.puts " virtual ~#{class_name(classdef)}() =0;"
370
+ end
371
+
372
+ InterfaceAnalyzer.class_interface_members_public(intf_class_name).each do |member|
373
+ gen_interface_class_member(fout, intf_class_name, classdef, member, requires_purevirtual)
374
+ end
375
+
376
+ need_protected = classdef.regards_protected_members? ||
377
+ !interface_extensions(classdef, 'protected').empty? ||
378
+ folded_bases(classdef.name).any? { |base| def_item(base).regards_protected_members? }
379
+ unless is_struct || !need_protected
380
+ fout.puts
381
+ fout.puts ' protected:'
382
+
383
+ InterfaceAnalyzer.class_interface_members_protected(intf_class_name).each do |member|
384
+ gen_interface_class_member(fout, intf_class_name, classdef, member, requires_purevirtual)
385
+ end
386
+ end
387
+
388
+ fout.puts '};'
389
+ end
390
+
391
+ def gen_interface_class_member(fout, class_name, classdef, member, requires_purevirtual)
392
+ case member
393
+ when Extractor::ClassDef
394
+ fout.indent { gen_inner_class(fout, member) }
395
+ when Extractor::MethodDef
396
+ if member.is_ctor
397
+ gen_only_for(fout, member) do
398
+ fout.puts " #{class_name(classdef)}#{member.args_string};"
399
+ end
400
+ elsif member.is_dtor
401
+ unless is_abstract?(classdef)
402
+ dtor_sig = "~#{class_name(classdef)}()"
403
+ fout.puts " #{member.is_virtual ? 'virtual ' : ''}#{dtor_sig};"
404
+ end
405
+ elsif !InterfaceAnalyzer.class_interface_method_ignored?(class_name, member)
406
+ gen_interface_class_method(fout, member, requires_purevirtual)
407
+ end
408
+ when Extractor::EnumDef
409
+ gen_interface_enum(fout, member, classdef)
410
+ when Extractor::MemberVarDef
411
+ gen_only_for(fout, member) do
412
+ fout.puts " // from #{member.definition}"
413
+ fout.puts ' %immutable;' if member.no_setter
414
+ fout.puts " #{member.is_static ? 'static ' : ''}#{member.type} #{member.name};"
415
+ fout.puts ' %mutable;' if member.no_setter
416
+ end
417
+ when ::String
418
+ fout.indent do
419
+ fout.puts '// custom wxRuby extension'
420
+ fout.puts "#{member};"
421
+ end
422
+ end
423
+ end
424
+
425
+ def gen_inner_class(fout, classdef)
426
+ fout.puts ''
427
+ basecls = base_class(classdef)
428
+ if basecls
429
+ fout.puts "class #{basecls};"
430
+ fout.puts ''
431
+ end
432
+ is_struct = classdef.kind == 'struct'
433
+ fout.puts "#{classdef.kind} #{classdef.name}#{basecls ? ' : public '+basecls : ''}"
434
+ fout.puts '{'
435
+
436
+ unless is_struct
437
+ fout.puts 'public:'
438
+ end
439
+
440
+ classdef.items.each do |member|
441
+ case member
442
+ when Extractor::MethodDef
443
+ if member.is_ctor
444
+ if member.protection == 'public'
445
+ if !member.ignored && !member.deprecated
446
+ gen_only_for(fout, member) do
447
+ fout.puts " #{classdef.name}#{member.args_string};"
448
+ end
449
+ end
450
+ member.overloads.each do |ovl|
451
+ if ovl.protection == 'public' && !ovl.ignored && !ovl.deprecated
452
+ gen_only_for(fout, ovl) do
453
+ fout.puts " #{classdef.name}#{ovl.args_string};"
454
+ end
455
+ end
456
+ end
457
+ end
458
+ elsif member.is_dtor
459
+ if member.protection == 'public' && !member.ignored
460
+ ctor_sig = "~#{classdef.name}()"
461
+ fout.puts " #{member.is_virtual ? 'virtual ' : ''}#{ctor_sig};"
462
+ end
463
+ elsif member.protection == 'public'
464
+ gen_interface_class_method(fout, member) if !member.ignored && !member.deprecated && !member.is_template?
465
+ member.overloads.each do |ovl|
466
+ if ovl.protection == 'public' && !ovl.ignored && !ovl.deprecated && !ovl.is_template?
467
+ gen_interface_class_method(fout, member)
468
+ end
469
+ end
470
+ end
471
+ when Extractor::EnumDef
472
+ if member.protection == 'public' && !member.ignored && !member.deprecated && member.items.any? {|e| !e.ignored }
473
+ gen_interface_enum(fout, member, classdef)
474
+ end
475
+ when Extractor::MemberVarDef
476
+ if member.protection == 'public' && !member.ignored && !member.deprecated
477
+ gen_only_for(fout, member) do
478
+ fout.puts " // from #{member.definition}"
479
+ fout.puts ' %immutable;' if member.no_setter
480
+ fout.puts " #{member.is_static ? 'static ' : ''}#{member.type} #{member.name};"
481
+ fout.puts ' %mutable;' if member.no_setter
482
+ end
483
+ end
484
+ end
485
+ end
486
+
487
+ fout.puts '};'
488
+ end
489
+
490
+ def gen_interface_class_method(fout, methoddef, requires_purevirtual=false)
491
+ mtd_type = methoddef.type
492
+ no_output = false
493
+ # check if this method matches a type map with ignored out defs
494
+ if type_map = @typemaps_with_ignored_out.detect { |tm| tm.matches?(methoddef) }
495
+ mtd_type = Typemap.rb_void_type(mtd_type) if (no_output = type_map.ignored_output.include?(mtd_type))
496
+ end
497
+ # generate method declaration
498
+ gen_only_for(fout, methoddef) do
499
+ fout.puts " // from #{methoddef.definition}"
500
+ fout.puts %Q[ %feature("numoutputs", "0") #{methoddef.name};] if no_output
501
+ mdecl = methoddef.is_static ? 'static ' : ''
502
+ mdecl << 'virtual ' if methoddef.is_virtual
503
+ purespec = (requires_purevirtual && methoddef.is_pure_virtual) ? ' =0' : ''
504
+ fout.puts " #{mdecl}#{mtd_type} #{methoddef.name}#{methoddef.args_string}#{purespec};"
505
+ end
506
+ end
507
+
508
+ def gen_interface_enum(fout, member, classdef)
509
+ gen_only_for(fout, member) do
510
+ fout.puts " // from #{classdef.name}::#{member.name}"
511
+ fout.puts " enum #{member.is_anonymous ? '' : member.name} {"
512
+ enum_size = member.items.size
513
+ member.items.each_with_index do |e, i|
514
+ gen_only_for(fout, e) do
515
+ fout.puts " #{e.name}#{(i+1)<enum_size ? ',' : ''}"
516
+ end unless e.ignored
517
+ end
518
+ fout.puts " };"
519
+ end
520
+ end
521
+
522
+ def gen_typedefs(fout)
523
+ typedefs = def_items.select {|item| Extractor::TypedefDef === item && !item.ignored }
524
+ typedefs.each do |item|
525
+ fout.puts
526
+ gen_only_for(fout, item) do
527
+ fout.puts "#{item.definition};"
528
+ end
529
+ end
530
+ fout.puts '' unless typedefs.empty?
531
+ end
532
+
533
+ def gen_variables(fout)
534
+ vars = def_items.select {|item| Extractor::GlobalVarDef === item && !item.ignored }
535
+ vars.each do |item|
536
+ fout.puts
537
+ gen_only_for(fout, item) do
538
+ wx_pfx = item.name.start_with?('wx') ? 'wx' : ''
539
+ const_name = underscore!(rb_wx_name(item.name))
540
+ const_type = item.type
541
+ const_type += '*' if const_type.index('char') && item.args_string == '[]'
542
+ const_type.sub!(/constexpr\s+/, '') # remove any 'constexpr ' type modifiers
543
+ fout.puts "%constant #{const_type} #{wx_pfx}#{const_name.upcase} = #{item.name.rstrip};"
544
+ end
545
+ end
546
+ fout.puts '' unless vars.empty?
547
+ end
548
+
549
+ def gen_enums(fout)
550
+ def_items.each do |item|
551
+ if Extractor::EnumDef === item && !item.ignored && !item.items.all? {|e| e.ignored }
552
+ fout.puts
553
+ fout.puts "// from enum #{item.is_anonymous ? '' : item.name}"
554
+ fout.puts "enum #{item.name};" unless item.is_anonymous
555
+ item.items.each do |e|
556
+ unless e.ignored
557
+ gen_only_for(fout, e) do
558
+ fout.puts "%constant int #{e.name} = #{e.fqn};"
559
+ end
560
+ end
561
+ end
562
+ end
563
+ end
564
+ end
565
+
566
+ def init_rb_ext_file
567
+ frbext = CodeStream.new(interface_ext_file)
568
+ frbext << <<~__HEREDOC
569
+ # ----------------------------------------------------------------------------
570
+ # This file is automatically generated by the WXRuby3 code
571
+ # generator. Do not alter this file.
572
+ # ----------------------------------------------------------------------------
573
+
574
+ __HEREDOC
575
+ package.all_modules.each_with_index do |mod, index|
576
+ frbext.iputs "module #{mod}", index
577
+ end
578
+ frbext.puts
579
+ frbext
580
+ end
581
+
582
+ def gen_defines(fout)
583
+ frbext = nil
584
+ defines = def_items.select {|item|
585
+ Extractor::DefineDef === item && !item.ignored && !item.is_macro? && item.value && !item.value.empty?
586
+ }
587
+ defines.each do |item|
588
+ gen_only_for(fout, item) do
589
+ if item.value =~ /\A\d/
590
+ fout.puts
591
+ fout.puts "#define #{item.name} #{item.value}"
592
+ elsif item.value.start_with?('"')
593
+ fout.puts
594
+ fout.puts "%constant char* #{item.name} = #{item.value};"
595
+ elsif item.value =~ /(wxString|wxS)\((".*")\)/
596
+ fout.puts
597
+ fout.puts "%constant char* #{item.name} = #{$2};"
598
+ elsif item.value =~ /wx(Size|Point)(\(.*\))/
599
+ frbext = init_rb_ext_file unless frbext
600
+ frbext.indent { frbext.puts "#{rb_wx_name(item.name)} = Wx::#{$1}.new#{$2}" }
601
+ frbext.puts
602
+ elsif item.value =~ /wx(Colour|Font)(\(.*\))/
603
+ frbext = init_rb_ext_file unless frbext
604
+ frbext.indent do
605
+ frbext.puts "Wx.add_delayed_constant(self, :#{rb_wx_name(item.name)}) { Wx::#{$1}.new#{$2} }"
606
+ end
607
+ frbext.puts
608
+ elsif item.value =~ /wxSystemSettings::(\w+)\((.*)\)/
609
+ frbext = init_rb_ext_file unless frbext
610
+ args = $2.split(',').collect {|a| rb_constant_value(a) }.join(', ')
611
+ frbext.indent do
612
+ frbext.puts "Wx.add_delayed_constant(self, :#{rb_wx_name(item.name)}) { Wx::SystemSettings.#{rb_method_name($1)}(#{args}) }"
613
+ end
614
+ frbext.puts
615
+ else
616
+ fout.puts
617
+ fout.puts "%constant int #{item.name} = #{item.value};"
618
+ end
619
+ end
620
+ end
621
+ if frbext
622
+ max_indent = package.all_modules.size-1
623
+ package.all_modules.each_with_index { |mod_, index| frbext.iputs 'end', max_indent-index }
624
+ end
625
+ fout.puts '' unless defines.empty?
626
+ end
627
+
628
+ def gen_functions(fout)
629
+ functions = def_items.select {|item| Extractor::FunctionDef === item && !item.is_template? }
630
+ functions.each do |item|
631
+ active_overloads = item.all.select { |ovl| !ovl.ignored && !ovl.deprecated }
632
+ active_overloads.each do |ovl|
633
+ fout.puts
634
+ fn_type = ovl.type
635
+ no_output = false
636
+ # check if this method matches a type map with ignored out defs
637
+ if type_map = @typemaps_with_ignored_out.detect { |tm| tm.matches?(ovl) }
638
+ fn_type = Typemap.rb_void_type(fn_type) if (no_output = type_map.ignored.include?(fn_type))
639
+ end
640
+ gen_only_for(fout, ovl) do
641
+ fout.puts %Q[ %feature("numoutputs", "0") #{ovl.name};] if no_output
642
+ fout.puts "#{fn_type} #{ovl.name}#{ovl.args_string};"
643
+ end
644
+ end
645
+ end
646
+ fout.puts '' unless functions.empty?
647
+ end
648
+
649
+ def gen_only_for(fout, item, &block)
650
+ if item.only_for
651
+ if ::Array === item.only_for
652
+ fout.puts "#if #{item.only_for.collect { |s| "defined(#{s})" }.join(' || ')}"
653
+ else
654
+ fout.puts "#ifdef #{item.only_for}"
655
+ end
656
+ end
657
+ block.call
658
+ fout.puts "#endif" if item.only_for
659
+ end
660
+
661
+ def gen_swig_interface_specs(fout)
662
+ gen_swig_header(fout)
663
+
664
+ gen_swig_gc_types(fout)
665
+
666
+ gen_swig_begin_code(fout)
667
+
668
+ gen_swig_runtime_code(fout)
669
+
670
+ gen_swig_code(fout)
671
+
672
+ gen_swig_init_code(fout)
673
+
674
+ gen_swig_extensions(fout)
675
+
676
+ gen_swig_interface_code(fout)
677
+
678
+ gen_swig_wrapper_code(fout)
679
+ end
680
+
681
+ def gen_interface_include
682
+ gen_interface_include_code(
683
+ CodeStream.new(interface_include_file))
684
+ end
685
+
686
+ def gen_interface_include_header(fout)
687
+ fout << <<~HEREDOC
688
+ /**
689
+ * This file is automatically generated by the WXRuby3 interface generator.
690
+ * Do not alter this file.
691
+ */
692
+
693
+ #ifndef __#{module_name.upcase}_H_INCLUDED__
694
+ #define __#{module_name.upcase}_H_INCLUDED__
695
+ HEREDOC
696
+ unless warn_filters.empty?
697
+ fout.puts
698
+ warn_filters.each_pair do |warn, decls|
699
+ decls.each { |decl| fout.puts "%warnfilter(#{warn}) #{decl};" }
700
+ end
701
+ end
702
+ end
703
+
704
+ def gen_interface_include_footer(fout)
705
+ fout << "\n#endif /* __#{module_name.upcase}_H_INCLUDED__ */"
706
+ end
707
+
708
+ def gen_interface_include_code(fout)
709
+ gen_interface_include_header(fout)
710
+
711
+ gen_typedefs(fout) unless no_gen?(:typedefs)
712
+
713
+ gen_interface_classes(fout) unless no_gen?(:classes)
714
+
715
+ gen_variables(fout) unless no_gen?(:variables)
716
+
717
+ gen_enums(fout) unless no_gen?(:enums)
718
+
719
+ gen_defines(fout) unless no_gen?(:defines)
720
+
721
+ gen_functions(fout) unless no_gen?(:functions)
722
+
723
+ gen_interface_include_footer(fout)
724
+ end
725
+
726
+ def run
727
+ STDERR.puts "* generating #{interface_file}" if Director.verbose?
728
+
729
+ # run an analysis comparing inherited generated methods with this class's own generated methods
730
+ InterfaceAnalyzer.check_interface_methods(@director)
731
+
732
+ Stream.transaction do
733
+ gen_interface_include if has_interface_include?
734
+
735
+ # make sure to keep this last for the parallel builds synchronize on the *.i files
736
+ gen_swig_interface_file
737
+ end
738
+ end
739
+
740
+ end # class ClassGenerator
741
+
742
+ end # module WXRuby3