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,154 @@
1
+ <!--
2
+ # @markup markdown
3
+ # @title 0. Overview of wxRuby
4
+ -->
5
+
6
+ # 0. Overview of wxRuby
7
+
8
+ ## What is wxRuby?
9
+
10
+ wxRuby3 is a cross-platform GUI library for Ruby, based on the popular [wxWidgets](https://wxwidgets.org)
11
+ cross platform GUI toolkit for C++. It uses native widgets wherever possible, providing
12
+ the correct look, feel and behaviour to GUI applications on Windows, OS
13
+ X and Linux/GTK. wxRuby aims to provide a comprehensive solution to
14
+ developing professional-standard desktop applications in Ruby.
15
+
16
+ Like Ruby and wxWidgets, wxRuby is Open Source, which means that it is free for anyone to use and the source code
17
+ is available for anyone to look at and use in any way they like. Also, anyone can contribute (tested) fixes, additions
18
+ and enhancements to the project.
19
+
20
+ Like wxWidgets wxRuby is a cross platform toolkit. This means that the same program will run on multiple platforms
21
+ without modification. Currently Supported platforms are Microsoft Windows and Linux or other
22
+ unix-like systems with GTK2 or GTK3 libraries. As wxWidgets also has stable releases for Mac OSX and Linux QT platforms
23
+ it should not be to hard to support these. Contributions to achieve this are appreciated.
24
+
25
+ Since the programming language is Ruby, wxRuby programs are simple and easy to write and understand. To accomplish the
26
+ full Ruby experience wxRuby has not ported the wxWidgets API 1 on 1 to Ruby but has made an effort to make the wxRuby
27
+ API typically Ruby-ish. This means all method signatures (names, arguments) have been transformed to conform to common
28
+ Ruby naming rules as well as other Ruby programming practices. Also does wxRuby introduce iterators in favor of getters
29
+ returning arrays or lists.
30
+ Check out the samples and the documentation for details.
31
+
32
+ ## What is wxRuby3?
33
+
34
+ The wxRuby3 project is a new, rebooted, implementation of wxRuby (as compared to wxRuby2 and earlier versions) with the
35
+ clear intent to make this implementation better maintainable and extensible.
36
+
37
+ To this end wxRuby3 adopted much of the approach of the wxPython Phoenix project in that the wxRuby API is generated
38
+ from the wxWidgets XML interface definitions. Unlike the Phoenix project however, wxRuby does not use a home-grown
39
+ interface code generator but rather still relies on SWIG for that (with Ruby tooling to configure and post-process).
40
+ The wxRuby generation process more or less conforms to:
41
+
42
+ 1. build wxWidgets interface XML
43
+ 2. parse interface XML
44
+ 3. generate SWIG interface definitions
45
+ 4. generate Ruby extension code with SWIG
46
+ 5. post-process Ruby extension code
47
+
48
+ As the wxRuby tooling is already parsing the full wxWidgets interface specs (from which wxWidgets generates it's own
49
+ reference documentation) it also uses the parsed information to generate matching reference documentation for the
50
+ wxRuby API. This documentation is not (yet) perfect but should go a long way in helping people using wxRuby to build
51
+ GUI applications.
52
+
53
+ The wxRuby3 API is largely compatible with the earlier wxRuby incarnations but not 100% mostly due to more
54
+ modularization and more explicit typing of (especially) enums. Also wxRuby3 exclusively targets a lot more modern
55
+ versions of wxWidgets (>= 3.2) and Ruby (>= 2.5) so there are some shifts from that as well. All in all though,
56
+ people that once took a stab at looking at wxRuby(2) should not have much problems getting up to speed again.
57
+
58
+ ## Quick start
59
+
60
+ To create an application with wxRuby you need to require the wxRuby libraries:
61
+
62
+ ```ruby
63
+ require 'wx'
64
+ ```
65
+
66
+ Next would be the application code and a main entry point. With wxRuby (as with wxWidgets) the entry
67
+ point is mostly just a simple call to start the applications event loop (as we're talking about event
68
+ based GUI applications here).
69
+ In wxRuby the Wx::App class provides some typically Ruby-style magic to make this as easy as possible.
70
+
71
+ Using this the simplest Hello World application could be:
72
+
73
+ ```ruby
74
+ require 'wx'
75
+ Wx::App.run { puts 'Hello world!' }
76
+ ```
77
+
78
+ As you can there is no obligation to create an instance of the Wx::App class in wxRuby for
79
+ (admittedly extremely) simple applications. Calling the #run class method with a block will suffice.<br>
80
+ The class method will create an instance of the generic Wx::App class under the hood and use the
81
+ provided block as the #on_init callback. As the code inside the block returns a false-type value (#puts
82
+ returns `nil`) the application will terminate immediately after writing "Hello world!" to standard
83
+ output (actually not even starting the event loop at all).
84
+
85
+ Of course this is not truly a GUI application so let's elaborate a little to make the GUI element
86
+ more real.
87
+
88
+ ```ruby
89
+ require 'wx'
90
+ Wx::App.run { Wx::Frame.new(nil, title: 'Hello World!').show }
91
+ ```
92
+
93
+ Executing this will create a generic Frame instance in the on_init callback of the application
94
+ and show the frame. As #show returns a true-type when successful the event loop will actually be
95
+ started and keep the application running until the frame is closed.
96
+
97
+ ## The application class
98
+
99
+ For more complex applications the approach demonstrated above will quickly become insufficient. In those cases
100
+ creating a specialized derived App class is the better option.
101
+ This provides the possibility (as with all Ruby classes) to override the constructor (#initialize) for
102
+ custom initialization, attribute definitions and create customized #on_init and/or #on_exit methods like
103
+ this:
104
+
105
+ ```ruby
106
+ require 'wx'
107
+
108
+ class MyApp < Wx::App
109
+ def initialize
110
+ super
111
+ @frame = nil
112
+ end
113
+ attr_reader :frame
114
+
115
+ def on_init
116
+ @frame = Wx::Frame.new(nil, title: 'Hello World!')
117
+ @frame.show
118
+ end
119
+
120
+ def on_exit
121
+ puts 'Exiting.'
122
+ end
123
+ end
124
+ ```
125
+
126
+ When creating #on_init/#on_exit methods it is important to understand that those would not be overrides (as is the case
127
+ with wxWidgets itself). The base Wx::App class actually does not define these methods so it's also not needed (even not possible)
128
+ to call `super` in the implementation. The wxRuby application class implementation will call the wxWidget OnInit base implementation
129
+ itself and after successful completion check for the existence of an #on_init method (which could also be 'automagicallly'
130
+ created from a block passed to #run) and call that if available or terminate the application if not. For the
131
+ exit sequence to executions are similar but reversed (first a possible #on_exit method and than the wxWidgets base OnExit).
132
+
133
+ What remains though is that for a derived application class it is still not necessary to explicitly create a class instance.
134
+ Simply calling the #run class method will suffice.
135
+
136
+ ```ruby
137
+ MyApp.run
138
+ ```
139
+
140
+ The current application instance (as long as the application is active) can always be retrieved by
141
+ calling `Wx.get_app`.
142
+
143
+ ## wxRuby modules
144
+
145
+ The toplevel module of the wxRuby library is the `Wx` module and when using `require 'wx'` to load the wxRuby library
146
+ **all** constants and classes are loaded and can be accessed from that scope like `Wx::Frame` or `Wx::RichTextCtrl`
147
+ like previous versions of wxRuby supported.
148
+
149
+ With the current wxRuby library however a more modular approach has been used similar to wxWidgets itself which
150
+ distributes implementations over various sub-modules. These sub-modules can be loaded separately to provide more control.
151
+ The core module still provides the toplevel `Wx` namespace and all classes and constants declared in that namespace.
152
+ All other modules add to that (and **all** require the core module).
153
+
154
+ See [here](packages.md) for more details on wxRuby sub-modules.
@@ -0,0 +1,179 @@
1
+ <!--
2
+ # @markup markdown
3
+ # @title 1. wxRuby Modules
4
+ -->
5
+
6
+ # 1. wxRuby Modules
7
+
8
+ ## Introduction
9
+
10
+ Previous wxRuby implementations provided a single toplevel module approach for the wxRuby API with a single loading
11
+ option. Including `require 'wx'` in any application would load the entire wxRuby library and make all classes, module
12
+ methods and constants available under the `Wx` toplevel module.
13
+
14
+ The wxRuby3 project however implements a more modular approach similar to wxWidgets itself which distributes
15
+ implementations over various sub-modules. These sub-modules can be loaded separately to provide more control.
16
+ The core module still provides the toplevel `Wx` namespace and all classes and constants declared in that namespace.
17
+ All other modules add to that (and **all** require the core module).
18
+
19
+ ## Loading and Naming scopes
20
+
21
+ The *old* **all-in-one** approach in still supported with the wxRuby3 project. Using
22
+
23
+ ```ruby
24
+ require 'wx'
25
+ ```
26
+
27
+ will load all wxRuby API modules and make all classes and constants available from the `Wx` toplevel module. This
28
+ *global* naming scope approach does **not** extend to class or module methods (including dialog *functors*; see
29
+ [here](03_dialogs.md) for more information).
30
+
31
+ The *new* sub-module approach however allows for loading only part(s) of the wxRuby library like:
32
+
33
+ ```ruby
34
+ require 'wx/core' # load wxRuby core Wx module
35
+ require 'wx/grid' # load wxRuby Wx::GRID module - provides Grid control
36
+ require 'wx/rtc' # load wxRuby Wx::RTC module - provides RichText control
37
+ ```
38
+
39
+ However, when loading the library like this scoping rules change by default. Specifically the constants and classes
40
+ from the loaded sub-modules will **not** be accessible from the `Wx` scope anymore (like `Wx::Grid`) but must instead be
41
+ explicitly scoped from the sub-module (like `Wx::GRID::Grid`).
42
+
43
+ It is possible to revert the 'global scope' resolution behaviour by setting the toplevel constant `WX_GLOBAL_CONSTANTS` to
44
+ `true` before the require statements like:
45
+
46
+ ```ruby
47
+ WX_GLOBAL_CONSTANTS=true
48
+ require 'wx/core' # load wxRuby core Wx module
49
+ require 'wx/grid' # load wxRuby Wx::GRID module - provides Grid control
50
+ require 'wx/rtc' # load wxRuby Wx::RTC module - provides RichText control
51
+ ```
52
+
53
+ ## Modules
54
+
55
+ Currently the following modules have been implemented.
56
+
57
+ ### Core
58
+
59
+ The core wxRuby package providing the toplevel `Wx` module.
60
+ This package includes basic classes like:
61
+
62
+ - `Wx::Object`
63
+ - `Wx::EvtHandler`
64
+ - `Wx::Event`
65
+ - `Wx::CommandEvent`
66
+ - `Wx::App`
67
+ - `Wx::Window`
68
+ - `Wx::NonOwnedWindow`
69
+ - `Wx::ToplevelWindow`
70
+ - `Wx::Frame`
71
+ - `Wx::Dialog`
72
+
73
+ as well as most common window classes, control/widget classes, event classes, constant and enum definitions
74
+ and global functions not part of any of the other packages.
75
+
76
+ ### AUI - Advanced User Interface controls and related classes
77
+
78
+ The wxRuby AUI package providing the `Wx::AUI` module.
79
+ This package includes all classes, constants and enum definitions that are considered part of the
80
+ wxWidgets AUI framework like:
81
+
82
+ - `Wx::AUI::AuiManager`
83
+ - `Wx::AUI::AuiMDIParentFrame`
84
+ - `Wx::AUI::AuiMDIChildFrame`
85
+ - `Wx::AUI::AuiMDIClientWindow`
86
+ - etc
87
+
88
+ ### GRID - Grid control and related classes
89
+
90
+ The wxRuby GRID package providing the `Wx::GRID` module.
91
+ This package includes all classes, constants and enum definitions that are associated with the
92
+ wxWidgets wxGrid control like:
93
+
94
+ - `Wx::GRID::Grid`
95
+ - `Wx::GRID::GridTableBase`
96
+ - `Wx::GRID::GridCellEditor`
97
+ - `Wx::GRID::GridCellRenderer`
98
+ - `Wx::GRID::GridEvent`
99
+ - etc
100
+
101
+ ### HTML - Html framework classes
102
+
103
+ The wxRuby HTML package providing the `Wx::HTML` module.
104
+ This package includes all classes, constants and enum definitions that are considered part of the
105
+ wxWidgets Html framework like:
106
+
107
+ - `Wx::HTML::HtmlWindow`
108
+ - `Wx::HTML::HtmlHelpWindow`
109
+ - `Wx::HTML::HtmlHelpFrame`
110
+ - `Wx::HTML::HtmlHelpController`
111
+ - etc
112
+
113
+ ### PG - PropertyGrid control and related classes
114
+
115
+ The wxRuby PG package providing the `Wx::PG` module.
116
+ This package includes all classes, constants and enum definitions that are associated with the
117
+ wxWidgets wxPropertyGrid control like:
118
+
119
+ - `Wx::PG::PropertyGrid`
120
+ - `Wx::PG::PropertyGridManager`
121
+ - `Wx::PG::PGCell`
122
+ - `Wx::PG::PGProperty`
123
+ - `Wx::PG::PropertyGridEvent`
124
+ - etc
125
+
126
+ ### PRT - Printing framework classes
127
+
128
+ The wxRuby PRT package providing the `Wx::PRT` module.
129
+ This package includes all classes, constants and enum definitions that are considered part of the
130
+ wxWidgets Printing framework like:
131
+
132
+ - `Wx::PRT::PreviewFrame`
133
+ - `Wx::PRT::Printer`
134
+ - `Wx::PRT::PrinterDC`
135
+ - `Wx::PRT::PrintDialog`
136
+ - etc
137
+
138
+ ### RBN - Ribbon framework classes
139
+
140
+ The wxRuby RBN package providing the `Wx::RBN` module.
141
+ This package includes all classes, constants and enum definitions that are considered part of the
142
+ wxWidgets Ribbon framework like:
143
+
144
+ - `Wx::RBN::RibbonControl`
145
+ - `Wx::RBN::RibbonGallery`
146
+ - `Wx::RBN::RibbonPanel`
147
+ - `Wx::RBN::RibbonPage`
148
+ - `Wx::RBN::RibbonBar`
149
+ - etc
150
+
151
+ ### RTC - RichText control and related classes
152
+
153
+ The wxRuby RTC package providing the `Wx::RTC` module.
154
+ This package includes all classes, constants and enum definitions that are associated with the
155
+ wxWidgets wxRichTextCtrl control like:
156
+
157
+ - `Wx::RTC::RichTextCtrl`
158
+ - `Wx::RTC::RichTextEvent`
159
+ - `Wx::RTC::RichTextBuffer`
160
+ - etc
161
+
162
+ ### STC - StyledText control and related classes
163
+
164
+ The wxRuby STC package providing the `Wx::STC` module.
165
+ This package includes all classes, constants and enum definitions that are associated with the
166
+ wxWidgets wxStyledTextCtrl control (Scintilla integration) like:
167
+
168
+ - `Wx::STC::StyledTextCtrl`
169
+ - `Wx::STC::StyledTextEvent`
170
+
171
+ ## Feature dependencies
172
+
173
+ Availability of wxRuby packages is controlled by the wxWidget feature switches. The default build options will
174
+ include all platform supported features but in case of building wxRuby for customized wxWidgets builds the wxRuby3
175
+ build procedures will take the wxWidgets settings into account.
176
+
177
+ If for instance wxWidgets was built without Html support (using the configure `--disable-html` switch) the wxRuby
178
+ HTML package will not be available as well.
179
+ This behavior is controlled by the `wxUSE_xxx` macros that wxRuby extracts from the wxWidgets `wx/setup.h` file.
@@ -0,0 +1,116 @@
1
+ <!--
2
+ # @markup markdown
3
+ # @title 2. wxRuby Life Cycles
4
+ -->
5
+
6
+ # 2. wxRuby Life Cycles
7
+
8
+ ## Introduction
9
+
10
+ Managing the life cycles of native objects in Ruby extension libraries is tricky business because of the disparity
11
+ between common C++ dynamic memory management and the GC management scheme of the Ruby language and this certainly applies
12
+ to an event based environment like the wxRuby extension for wxWidgets.
13
+ That said, the wxRuby library should provide you with a fairly worry-free API in that respect.
14
+
15
+ The wxRuby extension manages to provide water-tight GC management for just about all mapped wxWidget objects.
16
+
17
+ There are just a few, fairly specific, things to take notice of.
18
+
19
+ ## Application instance
20
+
21
+ Any wxWidgets application typically creates a single application instance and the same goes for wxRuby applications.
22
+ We already saw [here](00_starting.md) how to start a wxRuby application. Important to note is that any reference to the
23
+ (global) application instance will ever only be valid as long as the application is still active.<br>
24
+ In essence this means the reference is valid from the moment the constructor (`#initialize`) is called to the moment
25
+ any available `#on_exit` method has finished.
26
+
27
+ There are some caveats to that however.
28
+
29
+ 1. Although the application instance is valid in the constructor, the wxWidgets
30
+ framework will only be fully initialized the moment the `#on_init` method starts. This means that all kinds of methods
31
+ requiring initialized GUI resources (like window creation) will fail if called before that moment.
32
+
33
+ 2. The global application instance returned by `Wx.get_app` will only be set from the moment the `#on_init` method
34
+ starts to the moment the `#on_exit` method finishes. Outside that timespan the method will return `nil`.
35
+
36
+ Also be careful with storing your own application instance variables. Code like
37
+
38
+ ```ruby
39
+ class MyApp < Wx::App
40
+ def initialize
41
+ super
42
+ # ...
43
+ end
44
+ def on_init
45
+ # ...
46
+ end
47
+ end
48
+ $app = MyApp.new
49
+ $app.run
50
+ ```
51
+
52
+ is entirely valid but for the fact that you **should** remember that after the `#run` method returns the `$app` variable
53
+ does **not** reference a valid application instance anymore. Calling methods on that instance may result in unexpected
54
+ behavior.<br>
55
+ It is actually easier and safer to rewrite this code as:
56
+
57
+ ```ruby
58
+ class MyApp < Wx::App
59
+ def initialize
60
+ super
61
+ # ...
62
+ end
63
+ def on_init
64
+ # ...
65
+ end
66
+ end
67
+ MyApp.run # or MyApp.new.run
68
+ ```
69
+
70
+ This way there is no reference to accidentally use after `#run` returns and `Wx.get_app` will return `nil` after that
71
+ moment.
72
+
73
+ ## Framework (re-)initialization
74
+
75
+ As mentioned above the wxWidgets GUI framework resources will only be fully initialized after the `#on_init` method
76
+ starts. Likewise the framework resources will be de-initialized (deleted) after `#on_exit` method ends which means that
77
+ your application should not attempt to access any of these resources (windows, fonts, colours etc.) after that moment.
78
+
79
+ Also, largely because of the way the wxWidgets framework is designed but also because of that way this meshes with Ruby
80
+ GC, there is no safe way to re-initialize the framework after an application instance ends it run. This means you
81
+ **cannot** safely attempt to start another application instance after a previous (first) one has ended.
82
+
83
+ ## Windows
84
+
85
+ Window instances (and it's derivatives) are fully managed by the wxWidget framework and cannot (are not) managed by
86
+ Ruby GC handling. This means on the one hand that a window instances life time is not controlled by any reference
87
+ a Ruby variable may hold and on the other hand that the Ruby object linked to that native window object is kept alive
88
+ (marked in GC) as long as the window instance is alive.<br>
89
+ Generally speaking window lifetimes are dependent on the (toplevel) window (or it's parent) being closed. In case of a
90
+ toplevel window this result in automatic destruction of the window and all it's child windows (controls). There are
91
+ however exceptions to this where explicit calling of a window's `#destroy` method is required to prevent memory leaks
92
+ (when a window is not a child window but also not a toplevel window for example or in case of dialogs; see
93
+ [here](03_dialogs.md)). Please check out the wxWidgets documentation for more detailed information.
94
+
95
+ This has several consequences you need to be aware of.
96
+
97
+ First of, in cases where you keep a reference to any window (control) instance in a local or instance variable in Ruby
98
+ (which is fairly common practice) you need to be aware that the reference is only valid as long as the window has not
99
+ been destroyed. In most cases this will not be an issue as most references are kept as instance variables of parent
100
+ windows for child windows where the instance variables will only ever be used as long the parent window is alive itself.
101
+ In other circumstances you should take care to track the lifetime of the window that is referenced.
102
+
103
+ Secondly, as already indicated above not all window instances will be automatically destroyed. It is for example fairly
104
+ common in more complex applications to create and show other windows as response to events triggered in the toplevel
105
+ window. These windows will not (and should not) be automatically designated as toplevel window but they are also not
106
+ owned (i.e. not child windows). Closing these windows will not automatically destroy them (which is a good thing as
107
+ these are often re-shown after renewed events from the toplevel window) and will also not be automatically destroyed
108
+ when any parent window is destroyed. This means they pose a threat for potential memory leaks.<br>
109
+ In case it concerns a fairly simple application which creates one or two of these sub-windows and needs to keep these
110
+ around for most or all of the lifetime of the application this is not really an issue as the window will be cleaned up
111
+ at application exit eventually. If however it concerns a more complex application which potentially could create a large
112
+ number of these sub windows (probably each only used for limited purposes) it would be advisable to track instances and
113
+ destroy these on a regular basis when not used (closed) possibly re-creating them as needed.
114
+
115
+ Dialogs are special cases of toplevel windows which are not automatically destroyed when closed. The wxRuby library
116
+ therefor provides special support to ease handling the destruction of these. See [here](03_dialogs.md) for more details.
@@ -0,0 +1,57 @@
1
+ <!--
2
+ # @markup markdown
3
+ # @title 3. wxRuby Dialogs
4
+ -->
5
+
6
+ # 3. wxRuby Dialogs
7
+
8
+ Dialogs are a special class of window which are never automatically destroyed in wxWidgets.
9
+ In C++ this does not cause a lot of management overhead for application programmers because of the possibility of
10
+ static declaration of dialogs instances where the statically declared object is automatically destructed as execution
11
+ leaves the declaration scope.<br>
12
+ This kind of construct does not exist in Ruby where everything is dynamically allocated and garbage collection normally
13
+ takes care of releasing objects that have gone *'out of scope'*.
14
+
15
+ Like any non-owned, non-toplevel windows as discussed [here](02_lifecycles.md) this means dialogs should be explicitly
16
+ destroyed in program code as appropriate like:
17
+
18
+ ```ruby
19
+ dlg = Wx::MessageDialog.new(parent, 'Select Yes or No', "Confirmation", Wx::YES_NO)
20
+ if dlg.show_modal == Wx::ID_YES
21
+ # do something
22
+ end
23
+ dlg.destroy
24
+ ```
25
+
26
+ Although this is sometimes useful (for example in cases where a dialog is repeatedly used), most of the time this makes
27
+ for somewhat bothersome programming.
28
+
29
+ Luckily wxRuby has a solution for this.
30
+
31
+ For all dialog classes (which includes Wx::Dialog and all it's derivatives, including user defined) the library defines
32
+ a module function which is identically named to the dialog class in the same scope as where the dialog class has been
33
+ first defined. This is similar to the module functions Ruby itself defines for the basic object classes like `Integer`,
34
+ `String`, `Array`, `Hash` and such for the `Kernel` module.<br>
35
+ These dialog *functors* accept the same arguments as the dialog class's constructor with the addition of a block. The
36
+ *functor* will call the class constructor and pass the created dialog instance as argument to the block. After returning
37
+ from the block the dialog instance will automatically be destroyed. So, using this approach we could write the previous
38
+ example like:
39
+
40
+ ```ruby
41
+ Wx.MessageDialog(parent, 'Select Yes or No', "Confirmation", Wx::YES_NO) do |dlg|
42
+ if dlg.show_modal == Wx::ID_YES
43
+ # do something
44
+ end
45
+ end
46
+ ```
47
+
48
+ Even better, if the only purpose is to show the dialog until closed without caring for the result we can leave out the
49
+ block. In that case the *functor* will simply create the dialog instance, call `#show_modal` on it and destroy the
50
+ instance after returning from `#show_modal` like:
51
+
52
+ ```ruby
53
+ Wx.MessageDialog(parent, 'Hello world!', 'Information', Wx::OK)
54
+ ```
55
+
56
+ Regular dialog constructors are still usable for situations where the dialog instance should have a
57
+ prolonged lifetime or where different modeless behavior is required.
@@ -0,0 +1,143 @@
1
+ <!--
2
+ # @markup markdown
3
+ # @title 4. wxRuby Enum values
4
+ -->
5
+
6
+ # 4. wxRuby Enum values
7
+
8
+ The wxWidget library liberally mixes integer constants and enum values for things like IDs, style flags
9
+ and option flags and such without much consistency.<br>
10
+ In previous wxRuby versions these were all mapped to integer constants which had 2 distinct disadvantages.
11
+
12
+ - **loss of scoping**<br>
13
+ Integer constants for enum values would all be declared in the enclosing scope for the enum declaration loosing
14
+ the naming scope which originally existed in C++ (excepting anonymous enums).
15
+
16
+ - **loss of type-safety**<br>
17
+ Constants for enum values with identical integer values are indistinguishable from each other.
18
+
19
+ The wxRuby3 project attempts to provide a solution to that by introducing the `Wx::Enum` class which
20
+ is used as a base class for mapping all (named) wxWidget enums to Ruby.
21
+ The reference documentation for the `Wx::Enum` class can be found [here](https://mcorino.github.io/wxRuby3/Wx/Enum.html).
22
+
23
+ Any named wxWidget enum is mapped to a similarly named (Rubified C++ name) derived Enum class with each enum value
24
+ defined as a constant of the enum class referencing an instance of the enum class with the corresponding
25
+ integer value like for example the 'wxSystemFont' enum which is defined in wxRuby as:
26
+
27
+ ```ruby
28
+ module Wx
29
+ class SystemFont < Wx::Enum
30
+
31
+ # Original equipment manufacturer dependent fixed-pitch font.
32
+ #
33
+ SYS_OEM_FIXED_FONT = Wx::SystemFont.new(10)
34
+
35
+ # Windows fixed-pitch (monospaced) font.
36
+ #
37
+ SYS_ANSI_FIXED_FONT = Wx::SystemFont.new(11)
38
+
39
+ # Windows variable-pitch (proportional) font.
40
+ #
41
+ SYS_ANSI_VAR_FONT = Wx::SystemFont.new(12)
42
+
43
+ # System font.
44
+ #
45
+ SYS_SYSTEM_FONT = Wx::SystemFont.new(13)
46
+
47
+ # Device-dependent font.
48
+ #
49
+ SYS_DEVICE_DEFAULT_FONT = Wx::SystemFont.new(14)
50
+
51
+ # Default font for user interface objects such as menus and dialog boxes.
52
+ #
53
+ SYS_DEFAULT_GUI_FONT = Wx::SystemFont.new(17)
54
+
55
+ end # SystemFont
56
+ end
57
+ ```
58
+
59
+ or the 'wxBorder' enum which is defined in wxRuby as:
60
+
61
+ ```ruby
62
+ module Wx
63
+ # Border flags for {Wx::Window}.
64
+ class Border < Wx::Enum
65
+
66
+ # This is different from {Wx::Border::BORDER_NONE} as by default the controls do have a border.
67
+ #
68
+ BORDER_DEFAULT = Wx::Border.new(0)
69
+
70
+ #
71
+ #
72
+ BORDER_NONE = Wx::Border.new(2097152)
73
+
74
+ #
75
+ #
76
+ BORDER_STATIC = Wx::Border.new(16777216)
77
+
78
+ #
79
+ #
80
+ BORDER_SIMPLE = Wx::Border.new(33554432)
81
+
82
+ #
83
+ #
84
+ BORDER_RAISED = Wx::Border.new(67108864)
85
+
86
+ #
87
+ #
88
+ BORDER_SUNKEN = Wx::Border.new(134217728)
89
+
90
+ #
91
+ #
92
+ BORDER_DOUBLE = Wx::Border.new(268435456)
93
+
94
+ #
95
+ #
96
+ BORDER_THEME = Wx::Border.new(268435456)
97
+
98
+ #
99
+ #
100
+ BORDER_MASK = Wx::Border.new(522190848)
101
+
102
+ end # Border
103
+ end
104
+ ```
105
+
106
+ Enum instances are interchangeable with integer constants in wxRuby with respect to arithmetic or logical
107
+ operations. This make it possible to use enum values to construct integer bitflag arguments like:
108
+
109
+ ```ruby
110
+ Wx::TextCtrl.new(pane, Wx::ID_ANY, sample_desc.description, style: Wx::TE_MULTILINE|Wx::TE_READONLY|Wx::BORDER_NONE)
111
+ ```
112
+
113
+ where `Wx::ID_ANY` is a `Wx::StandardID` enum instance passed to provide an integer argument value, `Wx::TE_MULTILINE`
114
+ and `Wx::TE_READONLY` are simple integer constants and `Wx::BORDER_NONE` is a `Wx::Border` enum instance.
115
+
116
+ In other cases however enum values can provide just the right kind of type safety where explicit enum values are
117
+ expected like for example with:
118
+
119
+ ```ruby
120
+ Wx::Font.new(36, Wx::FONTFAMILY_SWISS, Wx::FONTSTYLE_NORMAL, Wx::FONTWEIGHT_NORMAL)
121
+ ```
122
+
123
+ where the `Wx::Font` constructor definition is:
124
+
125
+ > initialize(pointSize, family, style, weight, underline = false, faceName = `Wx::EMPTY_STRING`, encoding = `Wx::FONTENCODING_DEFAULT`) ⇒ `Wx::Font`
126
+
127
+ with the following parameter specification:
128
+
129
+ > - pointSize (`Integer`)
130
+ > - family (`Wx::FontFamily`)
131
+ > - style (`Wx::FontStyle`)
132
+ > - weight (`Wx::FontWeight`)
133
+ > - underline (`true`, `false`) (defaults to: `false`)
134
+ > - faceName (`String`) (defaults to: `Wx::EMPTY_STRING`)
135
+ > - encoding (`Wx::FontEncoding`) (defaults to: `Wx::FONTENCODING_DEFAULT`)
136
+
137
+ In this case the constructor explicitly expects specific enum value types for *family*, *style* and *weigth* and
138
+ providing the integer literal value `74` instead of `Wx::FONTFAMILY_SWISS` (or any other constant representing the same
139
+ integer value) will not work (raises an exception) although the integer values for the two are equal.
140
+
141
+ As you have probably noticed it is not required to use the full naming for an enum instance constant (like
142
+ `Wx::FontFamily::FONTFAMILY_SWISS`). All enum value constants are accessible from the naming scope where the enum class
143
+ to which they belong has been declared.