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,833 @@
1
+ ###
2
+ # wxRuby3 wxWidgets interface generation templates
3
+ # Copyright (c) M.J.N. Corino, The Netherlands
4
+ ###
5
+
6
+ require 'set'
7
+
8
+ require_relative './base'
9
+ require_relative './analyzer'
10
+
11
+ module WXRuby3
12
+
13
+ class DocGenerator < Generator
14
+
15
+ class << self
16
+
17
+ private
18
+
19
+ def get_constants_db
20
+ script = <<~__SCRIPT
21
+ require 'json'
22
+ WX_GLOBAL_CONSTANTS=false
23
+ require 'wx'
24
+ def handle_module(mod, table)
25
+ mod.constants.each do |c|
26
+ a_const = mod.const_get(c)
27
+ if ::Module === a_const || ::Class === a_const # Package submodule or Class (possibly Enum)
28
+ handle_module(a_const, table[c.to_s] = {})
29
+ elsif Wx::Enum === a_const
30
+ table[c.to_s] = { type: a_const.class.name.split('::').last, value: "\#{a_const.class}.new(\#{a_const.to_i})" }
31
+ elsif !(::Hash === a_const || ::Array === a_const)
32
+ table[c.to_s] = { type: a_const.class.name.split('::').last, value: a_const } unless c == :THE_APP
33
+ end
34
+ end
35
+ end
36
+ Wx::App.run do
37
+ table = { 'Wx' => {}}
38
+ handle_module(Wx, table['Wx'])
39
+ STDOUT.puts JSON.dump(table)
40
+ end
41
+ __SCRIPT
42
+ STDERR.puts "* executing constants collection script:\n#{script}" if Director.trace?
43
+ begin
44
+ tmpfile = Tempfile.new('script')
45
+ ftmp_name = tmpfile.path.dup
46
+ tmpfile << script
47
+ tmpfile.close(false)
48
+ result = if Director.trace?
49
+ Config.instance.run(ftmp_name, capture: :out)
50
+ else
51
+ Config.instance.run(ftmp_name, capture: :no_err)
52
+ end
53
+ STDERR.puts "* got constants collection output:\n#{result}" if Director.trace?
54
+ db = JSON.load(result)
55
+ File.open('constants.json', "w") { |f| f << JSON.pretty_generate(db) } if Director.verbose?
56
+ return db
57
+ ensure
58
+ File.unlink(ftmp_name)
59
+ end
60
+ end
61
+
62
+ def get_constants_xref_db(const_tbl = nil, mods = [])
63
+ xref_tbl = {}
64
+ (const_tbl || constants_db).each_pair do |constnm, constspec|
65
+ unless constspec.has_key?('type')
66
+ xref_tbl[constnm] = { 'mod' => mods.join('::'), 'table' => constspec }
67
+ xref_tbl.merge!(get_constants_xref_db(constspec, mods + [constnm]))
68
+ else
69
+ xref_tbl[constnm] = constspec.merge({'mod' => mods.join('::') })
70
+ end
71
+ end
72
+ File.open('constants_xrefs.json', "w") { |f| f << JSON.pretty_generate(xref_tbl) } if Director.verbose?
73
+ xref_tbl
74
+ end
75
+
76
+ public
77
+
78
+ def constants_db
79
+ @constants_db ||= get_constants_db
80
+ end
81
+
82
+ def constants_xref_db
83
+ @constants_xref_db ||= get_constants_xref_db
84
+ end
85
+
86
+ end
87
+
88
+ class XMLTransformer
89
+
90
+ include DirectorSpecsHelper
91
+
92
+ private
93
+
94
+ def event_section(f = true)
95
+ @event_section = !!f
96
+ end
97
+
98
+ def event_section?
99
+ !!@event_section
100
+ end
101
+
102
+ def event_list(f = true)
103
+ @event_list = !!f
104
+ end
105
+
106
+ def event_list?
107
+ !!@event_list
108
+ end
109
+
110
+ def no_ref(&block)
111
+ was_no_ref = @no_ref
112
+ @no_ref = true
113
+ begin
114
+ return block.call
115
+ ensure
116
+ @no_ref = was_no_ref
117
+ end
118
+ end
119
+
120
+ def no_ref?
121
+ !!@no_ref
122
+ end
123
+
124
+ def no_idents(&block)
125
+ was_no_idents = @no_idents
126
+ @no_idents = true
127
+ begin
128
+ return block.call
129
+ ensure
130
+ @no_idents = was_no_idents
131
+ end
132
+ end
133
+
134
+ def no_idents?
135
+ !!@no_idents
136
+ end
137
+
138
+ def _ident_to_ref(idstr)
139
+ idstr.sub(/(.*)(\(.*\))?/) { |_| "{#{$1}}#{$2}" }
140
+ end
141
+
142
+ def text_to_doc(node)
143
+ text = node.text
144
+ # handle left-over doxygen tags
145
+ text.gsub!(/@(end)?code/, '')
146
+ text.gsub!('@subsection', '==')
147
+ text.gsub!('@remarks', '')
148
+ text.gsub!(/@see.*\n/, '')
149
+ text.gsub!('@ref', '')
150
+ unless no_ref?
151
+ # auto create references for any ids explicitly declared such
152
+ text.gsub!(/\W?(wx\w+(::\w+)?(\(.*\))?)/) do |s|
153
+ if $1 == 'wxWidgets'
154
+ s
155
+ else
156
+ if s==$1
157
+ doc_id, known_id = _ident_str_to_doc($1)
158
+ known_id ? _ident_to_ref(doc_id) : doc_id
159
+ else
160
+ doc_id, known_id = _ident_str_to_doc($1)
161
+ "#{s[0]}#{known_id ? _ident_to_ref(doc_id) : doc_id}"
162
+ end
163
+ end
164
+ end
165
+ end
166
+ if event_section?
167
+ case text
168
+ when /Event macros for events emitted by this class:/
169
+ event_list(true)
170
+ 'Event handler methods for events emitted by this class:'
171
+ when /Event macros:/
172
+ event_list(true)
173
+ 'Event handler methods:'
174
+ else
175
+ text
176
+ end
177
+ else
178
+ text
179
+ end
180
+ end
181
+
182
+ def computeroutput_to_doc(node)
183
+ if event_section?
184
+ node_to_doc(node)
185
+ elsif /\A[\w:\.]+\Z/ =~ node.text # only a single word/identifier?
186
+ node_to_doc(node)
187
+ else
188
+ no_ref do
189
+ "<code>#{node_to_doc(node)}</code>"
190
+ end
191
+ end
192
+ end
193
+
194
+ def bold_to_doc(node)
195
+ "<b>#{node_to_doc(node)}</b>"
196
+ end
197
+
198
+ def sp_to_doc(node)
199
+ " #{node_to_doc(node)}"
200
+ end
201
+
202
+ def nonbreakablespace_to_doc(node)
203
+ sp_to_doc(node)
204
+ end
205
+
206
+ def linebreak_to_doc(node)
207
+ "#{node_to_doc(node)}\n"
208
+ end
209
+
210
+ def programlisting_to_doc(node)
211
+ no_idents do
212
+ "\n\n #{node_to_doc(node).split("\n").join("\n ")}\n"
213
+ end
214
+ end
215
+
216
+ def simplesect_to_doc(node)
217
+ case node['kind']
218
+ when 'since' # get rid of 'Since' notes
219
+ ''
220
+ when 'see'
221
+ no_ref do
222
+ @see_list.concat node_to_doc(node).split(',')
223
+ end
224
+ ''
225
+ else
226
+ node_to_doc(node)
227
+ end
228
+ end
229
+
230
+ def _arglist_to_doc(args)
231
+ args.split(',').collect do |a|
232
+ a = a.gsub(/const\s+/, '')
233
+ a.tr!('*&[]', '')
234
+ a.split(' ').last
235
+ end.join(',').strip
236
+ end
237
+ private :_arglist_to_doc
238
+
239
+ def _is_method?(itmname, clsnm=nil)
240
+ spec = clsnm ? Director::Spec.class_index[clsnm] : self
241
+ if spec
242
+ if clsnm
243
+ if clsdef = spec.def_item(clsnm)
244
+ if itmdef = clsdef.find_item(itmname)
245
+ return Extractor::FunctionDef === itmdef
246
+ end
247
+ end
248
+ else
249
+ if itmdef = spec.def_item(itmname)
250
+ return Extractor::FunctionDef === itmdef
251
+ end
252
+ end
253
+ end
254
+ false
255
+ end
256
+ private :_is_method?
257
+
258
+ def _is_static_method?(clsnm, mtdname)
259
+ if clsspec = Director::Spec.class_index[clsnm]
260
+ if clsdef = clsspec.def_item(clsnm)
261
+ if mtdef = clsdef.find_item(mtdname)
262
+ return Extractor::MethodDef === mtdef && mtdef.is_static
263
+ end
264
+ end
265
+ end
266
+ false
267
+ end
268
+ private :_is_static_method?
269
+
270
+ def _ident_str_to_doc(s, ref_scope = nil)
271
+ return s if no_idents?
272
+ nmlist = s.split('::')
273
+ nm_str = nmlist.shift.to_s
274
+ constnm = rb_wx_name(nm_str)
275
+ if nmlist.empty? # unscoped id?
276
+ if /(\w+)\s*\(([^\)]*)\)/ =~ nm_str # method with arglist?
277
+ fn = $1
278
+ args = _arglist_to_doc($2)
279
+ mtdsig = args.empty? ? "#{rb_method_name(fn)}" : "#{rb_method_name(fn)}(#{args})"
280
+ if ref_scope
281
+ sep = _is_static_method?(ref_scope, fn) ? '.' : '#'
282
+ constnm = rb_wx_name(ref_scope)
283
+ if DocGenerator.constants_xref_db.has_key?(constnm)
284
+ ["#{DocGenerator.constants_xref_db[constnm]['mod']}::#{constnm}#{sep}#{mtdsig}", true]
285
+ else
286
+ "Wx::#{constnm}#{sep}#{mtdsig}"
287
+ end
288
+ else
289
+ [mtdsig, true]
290
+ end
291
+ else # constant or method name only
292
+ if DocGenerator.constants_xref_db.has_key?(constnm)
293
+ ["#{DocGenerator.constants_xref_db[constnm]['mod']}::#{constnm}", true]
294
+ elsif DocGenerator.constants_xref_db.has_key?(rb_constant_name(nm_str))
295
+ ["Wx::#{rb_constant_name(nm_str)}", true]
296
+ elsif !_is_method?(nm_str, ref_scope)
297
+ ["Wx::#{constnm}", true]
298
+ else
299
+ mtdnm = rb_method_name(nm_str)
300
+ if ref_scope
301
+ sep = _is_static_method?(ref_scope, nm_str) ? '.' : '#'
302
+ constnm = rb_wx_name(ref_scope)
303
+ if DocGenerator.constants_xref_db.has_key?(constnm)
304
+ ["#{DocGenerator.constants_xref_db[constnm]['mod']}::#{constnm}#{sep}#{mtdnm}", true]
305
+ else
306
+ "Wx::#{constnm}#{sep}#{mtdnm}"
307
+ end
308
+ else
309
+ [mtdnm, true]
310
+ end
311
+ end
312
+ end
313
+ else # scoped id
314
+ itmnm = nmlist.shift.to_s
315
+ mtd = nil
316
+ args = nil
317
+ known = true
318
+ if /(\w+)\s*\(([^\)]*)\)/ =~ itmnm
319
+ mtd = $1
320
+ args = _arglist_to_doc($2)
321
+ end
322
+ if DocGenerator.constants_xref_db.has_key?(constnm)
323
+ constnm = "#{DocGenerator.constants_xref_db[constnm]['mod']}::#{constnm}"
324
+ elsif DocGenerator.constants_xref_db.has_key?(rb_constant_name(nm_str))
325
+ cnm = rb_constant_name(nm_str)
326
+ constnm = "#{DocGenerator.constants_xref_db[cnm]['mod']}::#{cnm}"
327
+ elsif nm_str.start_with?('wx')
328
+ known = false
329
+ constnm = "Wx::#{constnm}"
330
+ end
331
+ if mtd.nil?
332
+ if DocGenerator.constants_xref_db.has_key?(rb_wx_name(itmnm)) || !_is_method?(itmnm, nm_str)
333
+ ["#{constnm}::#{rb_wx_name(itmnm)}", known]
334
+ else
335
+ sep = _is_static_method?(nm_str, itmnm) ? '.' : '#'
336
+ ["#{constnm}#{sep}#{rb_method_name(itmnm)}", known]
337
+ end
338
+ elsif nm_str == mtd # ctor?
339
+ [args.empty? ? "#{constnm}\#initialize" : "#{constnm}\#initialize(#{args})", known]
340
+ else
341
+ sep = _is_static_method?(nm_str, mtd) ? '.' : '#'
342
+ [args.empty? ? "#{constnm}#{sep}#{rb_method_name(mtd)}" : "#{constnm}#{sep}#{rb_method_name(mtd)}(#{args})", known]
343
+ end
344
+ end
345
+ end
346
+ private :_ident_str_to_doc
347
+
348
+ # transform all cross references
349
+ def ref_to_doc(node)
350
+ return node.text if no_idents?
351
+ if @classdef
352
+ ref = @classdef.crossref_table[node['refid']]
353
+ end
354
+ ref ||= {}
355
+ return node.text if /\s/ =~ node.text # no crossref transforming if text contains whitespace; return plain text
356
+ if no_ref?
357
+ doc_id, _ = _ident_str_to_doc(node.text, ref[:scope])
358
+ doc_id
359
+ else
360
+ doc_id, id_known = _ident_str_to_doc(node.text, ref[:scope])
361
+ id_known ? _ident_to_ref(doc_id) : doc_id
362
+ end
363
+ end
364
+
365
+ # transform all titles
366
+ def title_to_doc(node)
367
+ "== #{node.text}\n"
368
+ end
369
+
370
+ def heading_to_doc(node)
371
+ lvl = 1+(node['level'] || '1').to_i
372
+ txt = node_to_doc(node)
373
+ event_section(/Events emitted by this class|Events using this class/i =~ txt)
374
+ "#{'=' * lvl} #{txt}"
375
+ end
376
+
377
+ # transform all itemizedlist
378
+ def itemizedlist_to_doc(node)
379
+ doc = node_to_doc(node)
380
+ if event_list?
381
+ # event emitter block ended
382
+ event_list(false)
383
+ event_section(false)
384
+ end
385
+ doc
386
+ end
387
+
388
+ # transform all listitem
389
+ def listitem_to_doc(node)
390
+ itm_text = node_to_doc(node)
391
+ # fix possible unwanted leading spaces resulting in verbatim blocks
392
+ itm_text = itm_text.split("\n").collect {|s|s.lstrip}.join("\n") if itm_text.index("\n")
393
+ "- #{itm_text}"
394
+ end
395
+
396
+ def node_to_doc(xmlnode)
397
+ xmlnode.children.inject('') do |docstr, node|
398
+ docstr << self.__send__("#{node.name}_to_doc", node)
399
+ end
400
+ end
401
+
402
+ def get_event_override(evt)
403
+ if ifspec.event_overrides.has_key?(@classdef.name)
404
+ return ifspec.event_overrides[@classdef.name][evt] || ifspec.event_overrides[@classdef.name][evt.upcase]
405
+ end
406
+ nil
407
+ end
408
+ private :get_event_override
409
+
410
+ def para_to_doc(node)
411
+ para = node_to_doc(node)
412
+ # loose specific notes paragraphs
413
+ case para
414
+ when /\A\s*wxPerl Note:/, # wxPerl note
415
+ /\A\s*Library:/ # Library note
416
+ ''
417
+ else
418
+ if event_section?
419
+ case para
420
+ when /The following event handler macros redirect.*(\{.*})/
421
+ event_ref = $1
422
+ "The following event-handler methods redirect the events to member method or handler blocks for #{event_ref} events."
423
+ when /\AEVT_[A-Z]+/
424
+ if event_list? && /\A(EVT_[_A-Z]+)\((.*,)\s+\w+\):(.*)/ =~ para
425
+ evthnd_name = $1.downcase
426
+ if override_spec = get_event_override(evthnd_name)
427
+ evthnd_name, evt_type, evt_arity, evt_klass = override_spec
428
+ idarg = case evt_arity
429
+ when 0
430
+ ''
431
+ when 1
432
+ 'id, '
433
+ when 2
434
+ 'first_id, last_id, '
435
+ end
436
+ arglist = "#{idarg}meth = nil, &block"
437
+ else
438
+ arglist = "#{$2} meth = nil, &block"
439
+ end
440
+ docstr = $3.lstrip
441
+ package.event_docs[evthnd_name] = [arglist, docstr.dup] # register for eventlist doc gen
442
+ "{Wx::EvtHandler\##{evthnd_name}}(#{arglist}): #{docstr}"
443
+ elsif event_list? && /\A(EVT_[_A-Z]+)(\*)?\(\w+\):(.*)/ =~ para
444
+ wildcard = ($2 == '*')
445
+ evthnd_name = $1.downcase
446
+ arglist = "meth = nil, &block"
447
+ docstr = $3.lstrip
448
+ package.event_docs[wildcard ? /\A#{evthnd_name}/ : evthnd_name] = [arglist, docstr.dup] # register for eventlist doc gen
449
+ if wildcard
450
+ "{Wx::EvtHandler}#{evthnd_name}*(#{arglist}): #{docstr}"
451
+ else
452
+ "{Wx::EvtHandler\##{evthnd_name}}(#{arglist}): #{docstr}"
453
+ end
454
+ else
455
+ para
456
+ end
457
+ else
458
+ para
459
+ end
460
+ else
461
+ para
462
+ end
463
+ end
464
+ end
465
+
466
+ def method_missing(mtd, *args, &block)
467
+ if /\A\w+_to_doc\Z/ =~ mtd.to_s && args.size==1
468
+ node_to_doc(*args)
469
+ else
470
+ super
471
+ end
472
+ end
473
+
474
+ public
475
+
476
+ def initialize(director)
477
+ @director = director
478
+ @classdef = nil
479
+ @see_list = []
480
+ end
481
+
482
+ attr_reader :director
483
+
484
+ def for_class(clsdef, &block)
485
+ prevcls = @classdef
486
+ @classdef = clsdef
487
+ begin
488
+ block.call
489
+ ensure
490
+ @classdef = prevcls
491
+ end
492
+ end
493
+
494
+ def to_doc(xmlnode_or_set)
495
+ return '' unless xmlnode_or_set
496
+ @see_list.clear
497
+ doc = if Nokogiri::XML::NodeSet === xmlnode_or_set
498
+ xmlnode_or_set.inject('') { |s, n| s << node_to_doc(n) }
499
+ else
500
+ node_to_doc(xmlnode_or_set)
501
+ end
502
+ event_section(false)
503
+ doc.strip!
504
+ # reduce triple(or more) newlines to max 2
505
+ doc << "\n" # always end with a NL without following whitespace
506
+ doc.gsub!(/\n *\n *\n+/, "\n\n")
507
+ # add crossref tags
508
+ @see_list.each { |s| doc << "@see #{s}\n" }
509
+ doc
510
+ end
511
+
512
+ end
513
+
514
+ def run
515
+ # run an analysis comparing inherited generated methods with this class's own generated methods
516
+ InterfaceAnalyzer.check_interface_methods(@director, doc_gen: true)
517
+
518
+ @xml_trans = DocGenerator::XMLTransformer.new(@director)
519
+ Stream.transaction do
520
+ fdoc = CodeStream.new(File.join(package.ruby_doc_path, underscore(name)+'.rb'))
521
+ fdoc << <<~__HEREDOC
522
+ # :stopdoc:
523
+ # This file is automatically generated by the WXRuby3 documentation
524
+ # generator. Do not alter this file.
525
+ # :startdoc:
526
+ __HEREDOC
527
+ # at least 2 newlines to make Yard skip/forget the header comment
528
+ fdoc.puts
529
+ fdoc.puts
530
+ fdoc.puts "module #{package.fullname}"
531
+ fdoc.puts
532
+ fdoc.indent do
533
+ gen_constants_doc(fdoc)
534
+ gen_functions_doc(fdoc) unless no_gen?(:functions)
535
+ gen_class_doc(fdoc) unless no_gen?(:classes)
536
+ end
537
+ fdoc.puts
538
+ fdoc.puts 'end'
539
+ end
540
+ end
541
+
542
+ protected
543
+
544
+ def get_constant_doc(const)
545
+ @xml_trans.to_doc(const.brief_doc)
546
+ end
547
+
548
+ def gen_constant_value(val)
549
+ if ::String === val && /\A(#<(.*)>|[\w:]+\.new\(.*\))\Z/ =~ val
550
+ if $2
551
+ valstr = $2
552
+ if /\Awx/ =~ valstr
553
+ valstr.sub(/\Awx/, '')
554
+ else
555
+ 'nil'
556
+ end
557
+ else
558
+ $1
559
+ end
560
+ else
561
+ val.inspect
562
+ end
563
+ end
564
+
565
+ def gen_constant_doc(fdoc, name, spec, doc)
566
+ fdoc.doc.puts doc
567
+ fdoc.puts "#{name} = #{gen_constant_value(spec['value'])}"
568
+ fdoc.puts
569
+ end
570
+
571
+ def get_enum_doc(enumdef)
572
+ doc = @xml_trans.to_doc(enumdef.brief_doc)
573
+ doc << "\n" if enumdef.detailed_doc
574
+ doc << @xml_trans.to_doc(enumdef.detailed_doc) if enumdef.detailed_doc
575
+ doc
576
+ end
577
+
578
+ def gen_enum_doc(fdoc, enumname, enumdef, enum_table)
579
+ fdoc.doc.puts get_enum_doc(enumdef)
580
+ fdoc.puts "class #{enumname} < Wx::Enum"
581
+ fdoc.puts
582
+ fdoc.indent do
583
+ enumdef.items.each do |e|
584
+ const_name = rb_wx_name(e.name)
585
+ if enum_table.has_key?(const_name)
586
+ gen_constant_doc(fdoc, const_name, enum_table[const_name], get_constant_doc(e))
587
+ end
588
+ end
589
+ end
590
+ fdoc.puts "end # #{enumname}"
591
+ fdoc.puts
592
+ end
593
+
594
+ def gen_constants_doc(fdoc)
595
+ xref_table = package.all_modules.reduce(DocGenerator.constants_db) { |db, mod| db[mod] }
596
+ def_items.select {|itm| !itm.docs_ignored }.each do |item|
597
+ case item
598
+ when Extractor::GlobalVarDef
599
+ unless no_gen?(:variables)
600
+ const_name = rb_constant_name(item.name)
601
+ if xref_table.has_key?(const_name)
602
+ gen_constant_doc(fdoc, const_name, xref_table[const_name], get_constant_doc(item))
603
+ end
604
+ end
605
+ when Extractor::EnumDef
606
+ unless no_gen?(:enums)
607
+ if item.is_type
608
+ enum_name = rb_wx_name(item.name)
609
+ if xref_table.has_key?(enum_name)
610
+ gen_enum_doc(fdoc, enum_name, item, xref_table[enum_name] || {})
611
+ end
612
+ else
613
+ item.items.each do |e|
614
+ const_name = rb_constant_name(e.name)
615
+ if xref_table.has_key?(const_name)
616
+ gen_constant_doc(fdoc, const_name, xref_table[const_name], get_constant_doc(e))
617
+ end
618
+ end
619
+ end
620
+ end
621
+ when Extractor::DefineDef
622
+ unless no_gen?(:defines)
623
+ if !item.is_macro? && item.value && !item.value.empty?
624
+ const_name = rb_constant_name(item.name)
625
+ if xref_table.has_key?(const_name)
626
+ gen_constant_doc(fdoc, const_name, xref_table[const_name], get_constant_doc(item))
627
+ end
628
+ end
629
+ end
630
+ end
631
+ end
632
+ end
633
+
634
+ def get_function_doc(func)
635
+ func.rb_doc(@xml_trans, type_maps)
636
+ end
637
+
638
+ def gen_functions_doc(fdoc)
639
+ def_items.select {|itm| !itm.docs_ignored }.each do |item|
640
+ if Extractor::FunctionDef === item && !item.docs_ignored
641
+ get_method_doc(item).each_pair do |name, docs|
642
+ if docs.size>1 # method with overloads?
643
+ docs.each do |params, ovl_doc|
644
+ fdoc.doc.puts "@overload #{name}(#{params})"
645
+ fdoc.doc.indent { fdoc.doc.puts ovl_doc }
646
+ end
647
+ fdoc.puts "def #{name}(*args) end"
648
+ else
649
+ params, doc = docs.shift
650
+ fdoc.doc.puts doc
651
+ if params.empty?
652
+ fdoc.puts "def #{name}; end"
653
+ else
654
+ fdoc.puts "def #{name}(#{params}) end"
655
+ end
656
+ end
657
+ fdoc.puts
658
+ end
659
+ end
660
+ end
661
+ end
662
+
663
+ def get_class_doc(cls)
664
+ doc = @xml_trans.to_doc(cls.brief_doc)
665
+ doc << @xml_trans.to_doc(cls.detailed_doc) if cls.detailed_doc
666
+ doc
667
+ end
668
+
669
+ def get_method_doc(mtd)
670
+ mtd.rb_doc(@xml_trans, type_maps)
671
+ end
672
+
673
+ def get_method_head(clsdef, mtdef)
674
+ if mtdef.class_name == clsdef.name
675
+ # get method head item
676
+ clsdef.items.find { |m| Extractor::MethodDef === m && m.name == mtdef.name }
677
+ else
678
+ # check folded bases
679
+ base = folded_bases(clsdef.name).find { |bc| bc == mtdef.class_name }
680
+ base = def_classes.find { |c| base == c.name }
681
+ base ? base.items.find { |m| Extractor::MethodDef === m && m.name == mtdef.name } : nil
682
+ end
683
+ end
684
+
685
+ def gen_class_doc_members(fdoc, clsdef, cls_members, alias_methods)
686
+ # generate method and member variable documentation
687
+ mtd_done = ::Set.new
688
+ cls_members.each do |cm|
689
+ case cm
690
+ when Extractor::MethodDef
691
+ # overloads are flattened out by the Analyzer keeping only the non-ignored items
692
+ # but for doc gen we need the head item (and only that, so keep track and skip the rest)
693
+ unless cm.is_dtor || mtd_done.include?(cm.name)
694
+ # get method head item
695
+ mtd_head = get_method_head(clsdef, cm)
696
+ get_method_doc(mtd_head).each_pair do |name, docs|
697
+ if docs.size>1 # method with overloads?
698
+ docs.each do |params, ovl_doc|
699
+ fdoc.doc.puts "@overload #{name}(#{params})"
700
+ fdoc.doc.indent { fdoc.doc.puts ovl_doc }
701
+ end
702
+ fdoc.puts "def #{name}(*args) end"
703
+ else
704
+ params, doc = docs.shift
705
+ fdoc.doc.puts doc
706
+ if params.empty?
707
+ fdoc.puts "def #{name}; end"
708
+ else
709
+ fdoc.puts "def #{name}(#{params}) end"
710
+ end
711
+ end
712
+ # check for SWIG generated aliases
713
+ if alias_methods.has_key?(cm.name)
714
+ fdoc.puts "alias_method :#{alias_methods[cm.name]}, :#{name}"
715
+ else
716
+ # check for aliases that will be available from WxRubyStyleAccessors at runtime
717
+ # and document these as well
718
+ alias_name = case name
719
+ when /\Aget_(\w+)/
720
+ $1
721
+ when /\Aset_(\w+)/
722
+ if mtd_head.all.any? { |ovl| ovl.parameter_count > 0 && ovl.required_param_count < 2 }
723
+ "#{$1}="
724
+ else
725
+ nil
726
+ end
727
+ when /\Ais_(\w+)/
728
+ "#{$1}?"
729
+ when /\A(has_|can_)/
730
+ "#{name}?"
731
+ else
732
+ nil
733
+ end
734
+ # only consider alias if no other method matching alias_name exists as WxRubyStyleAccessors
735
+ # aliases rely on method_missing being called
736
+ if alias_name &&
737
+ !cls_members.any? { |m| Extractor::MethodDef === m && !m.ignored && m.rb_decl_name == alias_name }
738
+ fdoc.puts "alias_method :#{alias_name}, :#{name}"
739
+ end
740
+ end
741
+ fdoc.puts
742
+ end
743
+ mtd_done << cm.name
744
+ end
745
+ when Extractor::MemberVarDef
746
+ rd_doc, rd_decl, wr_doc, wr_decl = cm.rb_doc(@xml_trans, type_maps)
747
+ rd_doc.each { |s| fdoc.doc.puts s }
748
+ fdoc.puts rd_decl
749
+ if wr_doc
750
+ wr_doc.each { |s| fdoc.doc.puts s }
751
+ fdoc.puts wr_decl
752
+ end
753
+ fdoc.puts
754
+ end
755
+ end
756
+ end
757
+
758
+ def gen_class_doc(fdoc)
759
+ const_table = package.all_modules.reduce(DocGenerator.constants_db) { |db, mod| db[mod] }
760
+ def_items.select {|itm| !itm.docs_ignored && Extractor::ClassDef === itm && !is_folded_base?(itm.name) }.each do |item|
761
+ if !item.is_template? || template_as_class?(item.name)
762
+ @xml_trans.for_class(item) do
763
+ intf_class_name = if (item.is_template? && template_as_class?(item.name))
764
+ template_class_name(item.name)
765
+ else
766
+ item.name
767
+ end
768
+ clsnm = rb_wx_name(intf_class_name)
769
+ xref_table = const_table[clsnm] || {}
770
+ fdoc.doc.puts get_class_doc(item)
771
+ if is_mixin?(item)
772
+ fdoc.doc.puts "\n@note In wxRuby this is a mixin module instead of a (base) class."
773
+ fdoc.puts "module #{clsnm}"
774
+ else
775
+ basecls = ifspec.classdef_name(base_class(item, doc: true))
776
+ fdoc.puts "class #{clsnm} < #{basecls ? basecls.sub(/\Awx/, '') : '::Object'}"
777
+ end
778
+ fdoc.puts
779
+
780
+ # mixin includes
781
+ if included_mixins.has_key?(item.name)
782
+ included_mixins[item.name].each { |mod| fdoc.iputs "include #{mod}" }
783
+ fdoc.puts
784
+ end
785
+
786
+ # collect possible aliases
787
+ alias_methods = item.aliases
788
+ folded_bases(item.name).each do |basename|
789
+ alias_methods = def_item(basename).aliases.merge(alias_methods)
790
+ end
791
+
792
+ fdoc.indent do
793
+ cls_members = InterfaceAnalyzer.class_interface_members_public(intf_class_name)
794
+ # generate documentation for any enums
795
+ cls_members.each do |member|
796
+ case member
797
+ when Extractor::EnumDef
798
+ unless member.is_type
799
+ member.items.each do |e|
800
+ const_name = rb_constant_name(e.name)
801
+ if xref_table.has_key?(const_name)
802
+ gen_constant_doc(fdoc, const_name, xref_table[const_name], get_constant_doc(e))
803
+ end
804
+ end
805
+ else
806
+ enum_name = rb_wx_name(member.name)
807
+ if xref_table.has_key?(enum_name)
808
+ gen_enum_doc(fdoc, enum_name, member, xref_table[enum_name] || {})
809
+ end
810
+ end
811
+ end
812
+ end if xref_table
813
+ # generate method and member var documentation
814
+ gen_class_doc_members(fdoc, item, cls_members, alias_methods)
815
+
816
+ cls_members = InterfaceAnalyzer.class_interface_members_protected(intf_class_name)
817
+ unless cls_members.empty?
818
+ fdoc.puts
819
+ fdoc.puts 'protected'
820
+ fdoc.puts
821
+ gen_class_doc_members(fdoc, item, cls_members, alias_methods)
822
+ end
823
+ end
824
+ fdoc.puts "end # #{clsnm}"
825
+ fdoc.puts
826
+ end
827
+ end
828
+ end
829
+ end
830
+
831
+ end
832
+
833
+ end