wxruby3 0.9.1 → 0.9.3

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 (472) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/INSTALL.md +35 -29
  4. data/README.md +24 -15
  5. data/ext/wxruby3/include/wxRubyApp.h +338 -0
  6. data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
  7. data/ext/wxruby3/include/wxruby-Config.h +6 -6
  8. data/ext/wxruby3/include/wxruby-Validator.h +39 -0
  9. data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
  10. data/ext/wxruby3/swig/common.i +1 -1
  11. data/ext/wxruby3/swig/custom/director.swg +8 -0
  12. data/ext/wxruby3/swig/mark_free_impl.i +0 -33
  13. data/lib/wx/aui/aui_tab_ctrl.rb +18 -0
  14. data/lib/wx/aui/auinotebook.rb +6 -2
  15. data/lib/wx/aui/require.rb +1 -0
  16. data/lib/wx/core/app.rb +2 -2
  17. data/lib/wx/core/bitmap_combobox.rb +17 -21
  18. data/lib/wx/core/collapsible_pane.rb +1 -1
  19. data/lib/wx/core/combobox.rb +13 -3
  20. data/lib/wx/core/controlwithitems.rb +40 -128
  21. data/lib/wx/core/enum.rb +17 -1
  22. data/lib/wx/core/event.rb +6 -1
  23. data/lib/wx/core/evthandler.rb +8 -2
  24. data/lib/wx/core/generic_validator.rb +312 -0
  25. data/lib/wx/core/listbox.rb +2 -2
  26. data/lib/wx/core/log.rb +1 -1
  27. data/lib/wx/core/menu.rb +10 -0
  28. data/lib/wx/core/notebook.rb +6 -2
  29. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  30. data/lib/wx/core/size.rb +4 -0
  31. data/lib/wx/core/sizer.rb +12 -2
  32. data/lib/wx/core/standard_paths.rb +22 -0
  33. data/lib/wx/core/task_bar_button.rb +19 -0
  34. data/lib/wx/core/text_entry.rb +4 -1
  35. data/lib/wx/core/textctrl.rb +11 -1
  36. data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
  37. data/lib/wx/core/validator.rb +70 -5
  38. data/lib/wx/core/window.rb +13 -7
  39. data/lib/wx/doc/app.rb +48 -38
  40. data/lib/wx/doc/art_locator.rb +48 -43
  41. data/lib/wx/doc/aui/auimanager.rb +16 -8
  42. data/lib/wx/doc/aui/auinotebook.rb +20 -5
  43. data/lib/wx/doc/clipboard.rb +11 -7
  44. data/lib/wx/doc/colour_dialog.rb +14 -10
  45. data/lib/wx/doc/comboctrl.rb +18 -0
  46. data/lib/wx/doc/controlwithitems.rb +34 -8
  47. data/lib/wx/doc/data_object.rb +2 -2
  48. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  49. data/lib/wx/doc/editable_listbox.rb +44 -0
  50. data/lib/wx/doc/enum.rb +15 -0
  51. data/lib/wx/doc/event.rb +12 -0
  52. data/lib/wx/doc/evthandler.rb +113 -108
  53. data/lib/wx/doc/extra/12_client_data.md +89 -0
  54. data/lib/wx/doc/extra/13_validators.md +139 -0
  55. data/lib/wx/doc/font.rb +1 -0
  56. data/lib/wx/doc/gc_dc.rb +6 -1
  57. data/lib/wx/doc/gdi_common.rb +4 -0
  58. data/lib/wx/doc/generic_validator.rb +95 -0
  59. data/lib/wx/doc/graphics_context.rb +1 -0
  60. data/lib/wx/doc/grid/grid.rb +22 -1
  61. data/lib/wx/doc/help_controller.rb +11 -7
  62. data/lib/wx/doc/html/html_help_controller.rb +12 -4
  63. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  64. data/lib/wx/doc/list_ctrl.rb +33 -29
  65. data/lib/wx/doc/menu.rb +20 -0
  66. data/lib/wx/doc/notebook.rb +21 -0
  67. data/lib/wx/doc/num_validator.rb +387 -0
  68. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  69. data/lib/wx/doc/pg/events.rb +13 -9
  70. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  71. data/lib/wx/doc/pg/pg_property.rb +18 -0
  72. data/lib/wx/doc/progress_dialog.rb +36 -32
  73. data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
  74. data/lib/wx/doc/prt/print_data.rb +13 -5
  75. data/lib/wx/doc/prt/print_dialog.rb +31 -23
  76. data/lib/wx/doc/prt/printer.rb +20 -12
  77. data/lib/wx/doc/radio_box.rb +19 -15
  78. data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
  79. data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
  80. data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
  81. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
  82. data/lib/wx/doc/region_iterator.rb +32 -28
  83. data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
  84. data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
  85. data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
  86. data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
  87. data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
  88. data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
  89. data/lib/wx/doc/sizer.rb +20 -0
  90. data/lib/wx/doc/static_bitmap.rb +25 -0
  91. data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
  92. data/lib/wx/doc/stream.rb +39 -35
  93. data/lib/wx/doc/system_settings.rb +30 -26
  94. data/lib/wx/doc/text_validator.rb +23 -9
  95. data/lib/wx/doc/textctrl.rb +16 -0
  96. data/lib/wx/doc/tree_ctrl.rb +95 -0
  97. data/lib/wx/doc/treebook.rb +9 -5
  98. data/lib/wx/doc/v_list_box.rb +9 -5
  99. data/lib/wx/doc/validator.rb +113 -0
  100. data/lib/wx/doc/variant.rb +164 -160
  101. data/lib/wx/doc/window.rb +87 -47
  102. data/lib/wx/doc/window_disabler.rb +10 -6
  103. data/lib/wx/grid/grid.rb +27 -4
  104. data/lib/wx/html/simple_html_listbox.rb +24 -91
  105. data/lib/wx/keyword_defs.rb +34 -2
  106. data/lib/wx/pg/pg_property.rb +22 -0
  107. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  108. data/lib/wx/rtc/require.rb +3 -0
  109. data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
  110. data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
  111. data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
  112. data/lib/wx/stc/require.rb +1 -0
  113. data/lib/wx/stc/styled_text_ctrl.rb +25 -0
  114. data/lib/wx/version.rb +1 -1
  115. data/rakelib/lib/config/linux.rb +0 -3
  116. data/rakelib/lib/config/macosx.rb +2 -2
  117. data/rakelib/lib/config/mingw.rb +13 -1
  118. data/rakelib/lib/config/unixish.rb +1 -1
  119. data/rakelib/lib/config.rb +14 -4
  120. data/rakelib/lib/core/include/client_data.inc +65 -0
  121. data/rakelib/lib/core/include/funcall.inc +1 -1
  122. data/rakelib/lib/core/package.rb +31 -9
  123. data/rakelib/lib/core/parameter.rb +1 -1
  124. data/rakelib/lib/core/spec.rb +6 -1
  125. data/rakelib/lib/core/spec_helper.rb +7 -1
  126. data/rakelib/lib/director/accelerator.rb +2 -3
  127. data/rakelib/lib/director/accessible.rb +47 -0
  128. data/rakelib/lib/director/app.rb +30 -319
  129. data/rakelib/lib/director/app_traits.rb +13 -13
  130. data/rakelib/lib/director/bitmap_combobox.rb +2 -2
  131. data/rakelib/lib/director/combobox.rb +22 -0
  132. data/rakelib/lib/director/comboctrl.rb +1 -55
  133. data/rakelib/lib/director/ctrl_with_items.rb +105 -26
  134. data/rakelib/lib/director/data_format.rb +1 -1
  135. data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
  136. data/rakelib/lib/director/derived_dc.rb +1 -1
  137. data/rakelib/lib/director/dialog.rb +1 -0
  138. data/rakelib/lib/director/drag_image.rb +2 -3
  139. data/rakelib/lib/director/editable_listbox.rb +30 -0
  140. data/rakelib/lib/director/event.rb +104 -14
  141. data/rakelib/lib/director/event_handler.rb +3 -2
  142. data/rakelib/lib/director/frame.rb +1 -3
  143. data/rakelib/lib/director/functions.rb +4 -2
  144. data/rakelib/lib/director/gdicommon.rb +8 -10
  145. data/rakelib/lib/director/generic_dirctrl.rb +17 -0
  146. data/rakelib/lib/director/graphics_context.rb +2 -4
  147. data/rakelib/lib/director/grid_cell_attr.rb +0 -2
  148. data/rakelib/lib/director/grid_cell_editor.rb +0 -2
  149. data/rakelib/lib/director/grid_cell_renderer.rb +0 -2
  150. data/rakelib/lib/director/grid_ctrl.rb +34 -3
  151. data/rakelib/lib/director/header_ctrl.rb +6 -1
  152. data/rakelib/lib/director/html_listbox.rb +96 -22
  153. data/rakelib/lib/director/icon.rb +5 -2
  154. data/rakelib/lib/director/list_ctrl.rb +5 -6
  155. data/rakelib/lib/director/locale.rb +1 -3
  156. data/rakelib/lib/director/log.rb +1 -4
  157. data/rakelib/lib/director/media_ctrl.rb +54 -0
  158. data/rakelib/lib/director/menu.rb +16 -1
  159. data/rakelib/lib/director/menu_item.rb +2 -2
  160. data/rakelib/lib/director/num_validator.rb +495 -0
  161. data/rakelib/lib/director/numeric_property_validator.rb +131 -6
  162. data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
  163. data/rakelib/lib/director/pgproperties.rb +1 -1
  164. data/rakelib/lib/director/pgproperty.rb +27 -30
  165. data/rakelib/lib/director/property_grid_interface.rb +5 -10
  166. data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
  167. data/rakelib/lib/director/ribbon_gallery.rb +3 -5
  168. data/rakelib/lib/director/richtext_composite_object.rb +25 -0
  169. data/rakelib/lib/director/richtext_ctrl.rb +14 -4
  170. data/rakelib/lib/director/richtext_formatting_dialog.rb +7 -5
  171. data/rakelib/lib/director/richtext_paragraph_layout_box.rb +9 -7
  172. data/rakelib/lib/director/sizer.rb +30 -4
  173. data/rakelib/lib/director/sizer_item.rb +13 -0
  174. data/rakelib/lib/director/static_bitmap.rb +28 -0
  175. data/rakelib/lib/director/static_box.rb +4 -5
  176. data/rakelib/lib/director/styled_text_ctrl.rb +12 -0
  177. data/rakelib/lib/director/task_bar_button.rb +30 -0
  178. data/rakelib/lib/director/task_bar_icon.rb +5 -13
  179. data/rakelib/lib/director/text_entry.rb +4 -0
  180. data/rakelib/lib/director/text_validator.rb +124 -13
  181. data/rakelib/lib/director/textctrl.rb +12 -1
  182. data/rakelib/lib/director/toggle_button.rb +1 -0
  183. data/rakelib/lib/director/tool_tip.rb +1 -1
  184. data/rakelib/lib/director/top_level_window.rb +4 -7
  185. data/rakelib/lib/director/tree_ctrl.rb +40 -6
  186. data/rakelib/lib/director/utils.rb +16 -2
  187. data/rakelib/lib/director/validator.rb +196 -21
  188. data/rakelib/lib/director/variant.rb +1 -1
  189. data/rakelib/lib/director/window.rb +40 -7
  190. data/rakelib/lib/director.rb +4 -4
  191. data/rakelib/lib/extractor/function.rb +8 -7
  192. data/rakelib/lib/extractor.rb +34 -5
  193. data/rakelib/lib/generate/analyzer.rb +9 -4
  194. data/rakelib/lib/generate/doc/busy_info.yaml +0 -2
  195. data/rakelib/lib/generate/doc/clipboard.yaml +0 -2
  196. data/rakelib/lib/generate/doc/cursor.yaml +0 -2
  197. data/rakelib/lib/generate/doc/panel.yaml +7 -0
  198. data/rakelib/lib/generate/doc.rb +85 -17
  199. data/rakelib/lib/specs/interfaces.rb +163 -160
  200. data/rakelib/lib/swig_runner.rb +55 -9
  201. data/rakelib/lib/typemap/client_data.rb +67 -0
  202. data/rakelib/lib/typemap/common.rb +33 -4
  203. data/rakelib/lib/typemap/datetime.rb +1 -1
  204. data/rakelib/lib/typemap/tree_itemid.rb +2 -2
  205. data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
  206. data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
  207. data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
  208. data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
  209. data/rakelib/yard/templates/default/tags/setup.rb +16 -0
  210. data/rakelib/yard/yard-custom-templates.rb +3 -0
  211. data/samples/aui/aui.rb +1237 -1233
  212. data/samples/calendar/calendar.rb +293 -289
  213. data/samples/controls/get_item_sample.rb +83 -79
  214. data/samples/controls/htlbox.rb +331 -327
  215. data/samples/dialogs/dialogs.rb +682 -694
  216. data/samples/dialogs/wizard.rb +52 -55
  217. data/samples/dragdrop/dragdrop.rb +146 -142
  218. data/samples/drawing/bitmap.rb +29 -26
  219. data/samples/drawing/bitmap_image.rb +84 -80
  220. data/samples/drawing/graphics_drawing.rb +209 -205
  221. data/samples/drawing/image_prt.rb +344 -340
  222. data/samples/drawing/maths_images.rb +18 -1
  223. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  224. data/samples/etc/caret.rb +306 -0
  225. data/samples/etc/miniframe.rb +65 -60
  226. data/samples/etc/sash.rb +109 -105
  227. data/samples/etc/scrollwin.rb +86 -80
  228. data/samples/etc/system_settings.rb +216 -209
  229. data/samples/event/activation.rb +72 -67
  230. data/samples/event/event.rb +160 -153
  231. data/samples/event/threaded.rb +8 -1
  232. data/samples/event/update_ui_event.rb +67 -60
  233. data/samples/grid/grid.rb +188 -181
  234. data/samples/grid/gridtablebase.rb +136 -129
  235. data/samples/html/html.rb +208 -204
  236. data/samples/mdi/mdi.rb +59 -54
  237. data/samples/minimal/minimal.rb +54 -51
  238. data/samples/minimal/nothing.rb +1 -0
  239. data/samples/printing/printing.rb +367 -377
  240. data/samples/printing/printing2.rb +203 -198
  241. data/samples/propgrid/propgrid.rb +2312 -2308
  242. data/samples/propgrid/propgrid_minimal.rb +57 -50
  243. data/samples/ribbon/ribbon.rb +780 -774
  244. data/samples/sampler/ext.rb +0 -33
  245. data/samples/sampler/sample.rb +4 -9
  246. data/samples/sampler.rb +1 -1
  247. data/samples/splash/splash.rb +118 -116
  248. data/samples/text/rich_textctrl.rb +207 -201
  249. data/samples/text/richtext.rb +1409 -1405
  250. data/samples/text/scintilla.rb +137 -128
  251. data/samples/text/textctrl.rb +89 -83
  252. data/samples/text/unicode.rb +175 -168
  253. data/samples/treectrl/treectrl.rb +1430 -1426
  254. data/samples/widgets/activityindicator.rb +95 -0
  255. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  256. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  257. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  258. data/samples/widgets/art/widgets/button.xpm +54 -0
  259. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  260. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  261. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  262. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  263. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  264. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  265. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  266. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  267. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  268. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  269. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  270. data/samples/widgets/art/widgets/header.xpm +54 -0
  271. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  272. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  273. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  274. data/samples/widgets/art/widgets/native.xpm +81 -0
  275. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  276. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  277. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  278. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  279. data/samples/widgets/art/widgets/slider.xpm +54 -0
  280. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  281. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  282. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  283. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  284. data/samples/widgets/art/widgets/text.xpm +54 -0
  285. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  286. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  287. data/samples/widgets/art/widgets/toucan.png +0 -0
  288. data/samples/widgets/bmpcombobox.rb +651 -0
  289. data/samples/widgets/button.rb +462 -0
  290. data/samples/widgets/checkbox.rb +211 -0
  291. data/samples/widgets/choice.rb +287 -0
  292. data/samples/widgets/clrpicker.rb +156 -0
  293. data/samples/widgets/combobox.rb +516 -0
  294. data/samples/widgets/datepick.rb +215 -0
  295. data/samples/widgets/dirctrl.rb +265 -0
  296. data/samples/widgets/dirpicker.rb +158 -0
  297. data/samples/widgets/editlbox.rb +122 -0
  298. data/samples/widgets/filectrl.rb +216 -0
  299. data/samples/widgets/filepicker.rb +214 -0
  300. data/samples/widgets/fontpicker.rb +135 -0
  301. data/samples/widgets/gauge.rb +311 -0
  302. data/samples/widgets/headerctrl.rb +236 -0
  303. data/samples/widgets/hyperlink.rb +203 -0
  304. data/samples/widgets/itemcontainer.rb +185 -0
  305. data/samples/widgets/listbox.rb +473 -0
  306. data/samples/widgets/notebook.rb +488 -0
  307. data/samples/widgets/odcombobox.rb +608 -0
  308. data/samples/widgets/radiobox.rb +328 -0
  309. data/samples/widgets/searchctrl.rb +159 -0
  310. data/samples/widgets/slider.rb +594 -0
  311. data/samples/widgets/spinbtn.rb +443 -0
  312. data/samples/widgets/statbmp.rb +130 -0
  313. data/samples/widgets/static.rb +436 -0
  314. data/samples/widgets/textctrl.rb +700 -0
  315. data/samples/widgets/timepick.rb +148 -0
  316. data/samples/widgets/tn_widgets.png +0 -0
  317. data/samples/widgets/toggle.rb +385 -0
  318. data/samples/widgets/widgets.rb +1233 -0
  319. data/samples/xrc/custom_xrc_sample.rb +47 -41
  320. data/samples/xrc/xrc_sample.rb +53 -47
  321. data/tests/media/beep_lo.wav +0 -0
  322. data/tests/test_event_handling.rb +52 -34
  323. data/tests/test_events.rb +7 -0
  324. data/tests/test_item_data.rb +24 -0
  325. data/tests/test_list_ctrl.rb +1 -1
  326. data/tests/test_media_ctrl.rb +38 -0
  327. data/tests/test_menu.rb +69 -0
  328. data/tests/test_pg.rb +27 -0
  329. data/tests/test_richtext.rb +45 -0
  330. data/tests/test_sizer.rb +59 -0
  331. data/tests/test_std_controls.rb +42 -1
  332. data/tests/test_styled_text_ctrl.rb +46 -0
  333. data/tests/test_tree_ctrl.rb +138 -0
  334. data/tests/test_validators.rb +805 -0
  335. data/tests/test_window.rb +12 -0
  336. data/tests/testapp_noframe.rb +1 -1
  337. metadata +121 -139
  338. data/lib/wx/core/choice.rb +0 -14
  339. data/lib/wx/core/combo_ctrl.rb +0 -110
  340. data/rakelib/lib/typemap/grid_client_data.rb +0 -58
  341. data/samples/bigdemo/About.rbw +0 -39
  342. data/samples/bigdemo/ColorPanel.rbw +0 -23
  343. data/samples/bigdemo/GridSimple.rbw +0 -78
  344. data/samples/bigdemo/MDIDemo.rbw +0 -57
  345. data/samples/bigdemo/PopupMenu.rbw +0 -146
  346. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  347. data/samples/bigdemo/Sizers.rbw +0 -541
  348. data/samples/bigdemo/bigdemo.rb +0 -817
  349. data/samples/bigdemo/demoTemplate.rbw +0 -33
  350. data/samples/bigdemo/helpfile.htb +0 -0
  351. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  352. data/samples/bigdemo/icons/Test 015.png +0 -0
  353. data/samples/bigdemo/icons/choice.bmp +0 -0
  354. data/samples/bigdemo/icons/combo.bmp +0 -0
  355. data/samples/bigdemo/icons/combo.xpm +0 -27
  356. data/samples/bigdemo/icons/copy.xpm +0 -25
  357. data/samples/bigdemo/icons/cut.xpm +0 -24
  358. data/samples/bigdemo/icons/gauge.bmp +0 -0
  359. data/samples/bigdemo/icons/gauge.xpm +0 -27
  360. data/samples/bigdemo/icons/help.xpm +0 -25
  361. data/samples/bigdemo/icons/list.bmp +0 -0
  362. data/samples/bigdemo/icons/list.xpm +0 -27
  363. data/samples/bigdemo/icons/mondrian.ico +0 -0
  364. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  365. data/samples/bigdemo/icons/new.xpm +0 -24
  366. data/samples/bigdemo/icons/ogl.ico +0 -0
  367. data/samples/bigdemo/icons/ogl.xpm +0 -45
  368. data/samples/bigdemo/icons/open.xpm +0 -26
  369. data/samples/bigdemo/icons/paste.bmp +0 -0
  370. data/samples/bigdemo/icons/paste.xpm +0 -38
  371. data/samples/bigdemo/icons/pointy.png +0 -0
  372. data/samples/bigdemo/icons/preview.xpm +0 -26
  373. data/samples/bigdemo/icons/print.xpm +0 -26
  374. data/samples/bigdemo/icons/radio.bmp +0 -0
  375. data/samples/bigdemo/icons/radio.xpm +0 -27
  376. data/samples/bigdemo/icons/robert.xpm +0 -415
  377. data/samples/bigdemo/icons/sashtest.ico +0 -0
  378. data/samples/bigdemo/icons/save.xpm +0 -25
  379. data/samples/bigdemo/icons/smiles.bmp +0 -0
  380. data/samples/bigdemo/icons/smiles.xpm +0 -39
  381. data/samples/bigdemo/icons/smiley.ico +0 -0
  382. data/samples/bigdemo/icons/smiley.xpm +0 -42
  383. data/samples/bigdemo/icons/stattext.xpm +0 -24
  384. data/samples/bigdemo/icons/test2.bmp +0 -0
  385. data/samples/bigdemo/icons/test2.png +0 -0
  386. data/samples/bigdemo/icons/test2.xpm +0 -79
  387. data/samples/bigdemo/icons/text.bmp +0 -0
  388. data/samples/bigdemo/icons/text.xpm +0 -27
  389. data/samples/bigdemo/icons/tog1.bmp +0 -0
  390. data/samples/bigdemo/icons/tog1.xpm +0 -38
  391. data/samples/bigdemo/icons/tog2.bmp +0 -0
  392. data/samples/bigdemo/icons/tog2.xpm +0 -38
  393. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  394. data/samples/bigdemo/icons/wxwin.ico +0 -0
  395. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  396. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  397. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  398. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  399. data/samples/bigdemo/run.rb +0 -98
  400. data/samples/bigdemo/tips.txt +0 -7
  401. data/samples/bigdemo/utils.rb +0 -20
  402. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  403. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  404. data/samples/bigdemo/wxButton.rbw +0 -64
  405. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  406. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  407. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  408. data/samples/bigdemo/wxChoice.rbw +0 -47
  409. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  410. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  411. data/samples/bigdemo/wxComboBox.rbw +0 -77
  412. data/samples/bigdemo/wxCursor.rbw +0 -136
  413. data/samples/bigdemo/wxDialog.rbw +0 -74
  414. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  415. data/samples/bigdemo/wxDragImage.rbw +0 -70
  416. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  417. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  418. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  419. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  420. data/samples/bigdemo/wxFrame.rbw +0 -53
  421. data/samples/bigdemo/wxGauge.rbw +0 -65
  422. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  423. data/samples/bigdemo/wxGrid.rbw +0 -66
  424. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  425. data/samples/bigdemo/wxListBox.rbw +0 -140
  426. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  427. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  428. data/samples/bigdemo/wxMenu.rbw +0 -247
  429. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  430. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  431. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  432. data/samples/bigdemo/wxNotebook.rbw +0 -136
  433. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  434. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  435. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  436. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  437. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  438. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  439. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  440. data/samples/bigdemo/wxSlider.rbw +0 -42
  441. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  442. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  443. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  444. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  445. data/samples/bigdemo/wxStaticText.rbw +0 -55
  446. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  447. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  448. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  449. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  450. data/samples/bigdemo/wxToolBar.rbw +0 -131
  451. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  452. data/samples/caret/caret.rb +0 -298
  453. data/samples/caret/mondrian.xpm +0 -44
  454. data/samples/controls/books.rb +0 -189
  455. data/samples/controls/choice.xpm +0 -27
  456. data/samples/controls/combo.xpm +0 -27
  457. data/samples/controls/controls.rb +0 -1099
  458. data/samples/controls/gauge.xpm +0 -27
  459. data/samples/controls/list.xpm +0 -27
  460. data/samples/controls/mondrian.ico +0 -0
  461. data/samples/controls/mondrian.xpm +0 -44
  462. data/samples/controls/radio.xpm +0 -27
  463. data/samples/controls/stattext.xpm +0 -24
  464. data/samples/controls/test2.bmp +0 -0
  465. data/samples/controls/text.xpm +0 -27
  466. data/samples/controls/tn_books.png +0 -0
  467. data/samples/controls/tn_controls.png +0 -0
  468. data/samples/etc/choice.rb +0 -87
  469. data/samples/etc/tn_choice.png +0 -0
  470. data/samples/text/mondrian.ico +0 -0
  471. data/samples/text/mondrian.xpm +0 -44
  472. /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -4,105 +4,38 @@
4
4
 
5
5
  class Wx::HTML::SimpleHtmlListBox
6
6
 
7
- # Make this a Ruby enumerable so find, find_all, map etc are available
8
- include Enumerable
9
-
10
- # Passes each valid item index into the passed block
11
- def each
12
- get_count.times { | i | yield i }
13
- end
14
-
15
- # We need to cache client data in Ruby variables as we cannot access items
16
- # during the GC mark phase as for some platforms (WXMSW at least) that would
17
- # involve calling methods that would break in that phase.
18
-
19
- def client_data_store
20
- @client_data ||= []
21
- end
22
- private :client_data_store
23
-
24
- wx_set_client_data = instance_method :set_client_data
25
- define_method :set_client_data do |item, data|
26
- item = item.to_i
27
- wx_set_client_data.bind(self).call(item, data)
28
- client_data_store[item] = data
29
- end
30
-
31
- def get_client_data(item)
32
- client_data_store[item.to_i]
33
- end
34
-
35
- wx_append = instance_method :append
36
- define_method :append do |item, data=nil|
37
- if data
38
- if ::Array === item
39
- if !(::Array === data)
40
- ::Kernel.raise ::TypeError.new("Expected Array for argument 3")
41
- elsif data.size != item.size
42
- ::Kernel.raise ::ArgumentError.new("item and data array must be equal size")
43
- end
44
- offs = get_count
45
- wx_append.bind(self).call(item)
46
- item.size.times { |ix| set_client_data(offs+ix, data[ix]) }
47
- else
48
- wx_append.bind(self).call(item, data)
49
- client_data_store[get_count-1] = data
50
- end
7
+ # make sure to honor the inherited common overloads
8
+ wx_get_client_object = instance_method :get_client_object
9
+ define_method :get_client_object do |*args|
10
+ if args.empty?
11
+ super()
51
12
  else
52
- wx_append.bind(self).call(item)
53
- # no changes to data store
13
+ wx_get_client_object.bind(self).call(*args)
54
14
  end
55
15
  end
56
-
57
- wx_insert = instance_method :insert
58
- define_method :insert do |item, pos, data=nil|
59
- if data
60
- if ::Array === item
61
- if !(::Array === data)
62
- ::Kernel.raise ::TypeError.new("Expected Array for argument 3")
63
- elsif data.size != item.size
64
- ::Kernel.raise ::ArgumentError.new("item and data array must be equal size")
65
- end
66
- wx_insert.bind(self).call(item, pos)
67
- client_data_store.insert(pos, *::Array.new(item.size))
68
- item.size.times { |ix| set_client_data(pos+ix, data[ix]) }
69
- else
70
- wx_insert.bind(self).call(item, pos, data)
71
- client_data_store.insert(pos, data)
72
- end
16
+ wx_set_client_object = instance_method :set_client_object
17
+ define_method :set_client_object do |*args|
18
+ if args.size < 2
19
+ super(*args)
73
20
  else
74
- wx_insert.bind(self).call(item, pos)
75
- if ::Array === item
76
- client_data_store.insert(pos, *::Array.new(item.size))
77
- else
78
- client_data_store.insert(pos, nil)
79
- end
21
+ wx_set_client_object.bind(self).call(*args)
80
22
  end
81
23
  end
24
+ # redefine aliases
25
+ alias :client_object :get_client_object
26
+ alias :client_object= :set_client_object
82
27
 
83
- wx_set = instance_method :set
84
- define_method :set do |items, data=nil|
85
- if data
86
- if !(::Array === data)
87
- ::Kernel.raise ::TypeError.new("Expected Array for argument 2")
88
- elsif data.size != items.size
89
- ::Kernel.raise ::ArgumentError.new("items and data array must be equal size")
90
- end
91
- end
92
- wx_set.bind(self).call(items)
93
- client_data_store.clear
94
- items.each_with_index { |item, ix| set_client_data(item, data[ix]) }
95
- end
28
+ alias :get_client_data :get_client_object
29
+ alias :set_client_data :set_client_object
96
30
 
97
- wx_clear = instance_method :clear
98
- define_method :clear do
99
- wx_clear.bind(self).call
100
- client_data_store.clear
31
+ # Overload to provide Enumerator without block
32
+ wx_each_string = instance_method :each_string
33
+ define_method :each_string do |&block|
34
+ if block
35
+ wx_each_string.bind(self).call(&block)
36
+ else
37
+ ::Enumerator.new { |y| wx_each_string.bind(self).call { |ln| y << ln } }
38
+ end
101
39
  end
102
40
 
103
- wx_delete = instance_method :delete
104
- define_method :delete do |item|
105
- wx_delete.bind(self).call(item.to_i)
106
- client_data_store.slice!(item.to_i)
107
- end
108
41
  end
@@ -290,7 +290,12 @@ end
290
290
  # A button which stays pressed when clicked by user.
291
291
  Wx::define_keyword_ctors(Wx::ToggleButton) do
292
292
  wx_ctor_params :id, :label, :pos, :size, :style
293
- wx_ctor_params :validator, :name => 'checkBox'
293
+ wx_ctor_params :validator, :name => 'toggleButton'
294
+ end
295
+
296
+ Wx::define_keyword_ctors(Wx::BitmapToggleButton) do
297
+ wx_ctor_params :id, :label, :pos, :size, :style
298
+ wx_ctor_params :validator, :name => 'bitmapToggleButton'
294
299
  end
295
300
 
296
301
  # Control showing an entire calendar month
@@ -320,6 +325,12 @@ Wx::define_keyword_ctors(Wx::CheckListBox) do
320
325
  wx_ctor_params :validator, :name => 'listBox'
321
326
  end
322
327
 
328
+ # wxEditableListBox - an editable listbox is composite control that lets the user easily enter, delete and reorder a list of strings.
329
+ Wx::define_keyword_ctors(Wx::EditableListBox) do
330
+ wx_ctor_params :id, :label, :pos, :size, :style => Wx::EL_DEFAULT_STYLE
331
+ wx_ctor_params :name => 'editableListBox'
332
+ end
333
+
323
334
  # wxChoice Choice control (a combobox without the editable area)
324
335
  Wx::define_keyword_ctors(Wx::Choice) do
325
336
  wx_ctor_params :id, :pos, :size, :choices, :style
@@ -349,6 +360,14 @@ Wx::define_keyword_ctors(Wx::ComboCtrl) do
349
360
  wx_ctor_params :validator, :name => 'comboCtrl'
350
361
  end
351
362
 
363
+ # wxOwnerDrawnComboBox
364
+ Wx::define_keyword_ctors(Wx::OwnerDrawnComboBox) do
365
+ wx_ctor_params :id, :value => ''
366
+ wx_ctor_params :pos, :size, :choices => []
367
+ wx_ctor_params :style
368
+ wx_ctor_params :validator, :name => 'ownerDrawnComboBox'
369
+ end
370
+
352
371
  # wxGauge A control to represent a varying quantity, such as time
353
372
  # remaining
354
373
  Wx::define_keyword_ctors(Wx::Gauge) do
@@ -421,9 +440,16 @@ Wx::define_keyword_ctors(Wx::StaticBitmap) do
421
440
  wx_ctor_params :id
422
441
  # autoconvert Bitmaps to BitmapBundles for downward compatibility
423
442
  wx_ctor_params :label
424
- wx_ctor_params :pos, :size, :style, :name => Wx::StaticBitmapNameStr
443
+ wx_ctor_params :pos, :size, :style, :name => Wx::STATIC_BITMAP_NAME_STR
425
444
  end
426
445
 
446
+ # wxGenericStaticBitmap A control to display a bitmap
447
+ Wx::define_keyword_ctors(Wx::GenericStaticBitmap) do
448
+ wx_ctor_params :id
449
+ # autoconvert Bitmaps to BitmapBundles for downward compatibility
450
+ wx_ctor_params :label
451
+ wx_ctor_params :pos, :size, :style, :name => Wx::STATIC_BITMAP_NAME_STR
452
+ end
427
453
 
428
454
  # wxRadioBox A group of radio buttons
429
455
  Wx::define_keyword_ctors(Wx::RadioBox) do
@@ -582,3 +608,9 @@ Wx::define_keyword_ctors(Wx::RearrangeCtrl) do
582
608
  wx_ctor_params :id, :pos, :size, :order, :items, :style
583
609
  wx_ctor_params :validator, :name => 'rearrangeCtrl'
584
610
  end
611
+
612
+ Wx::define_keyword_ctors(Wx::HeaderCtrlSimple) do
613
+ wx_ctor_params :winid => Wx::ID_ANY
614
+ wx_ctor_params :pos, :size, :style => Wx::HD_DEFAULT_STYLE
615
+ wx_ctor_params :name => 'headerCtrlSimple'
616
+ end
@@ -37,4 +37,26 @@ module Wx::PG
37
37
  alias :attributes= :set_attributes
38
38
  end
39
39
 
40
+ class PGChoices
41
+
42
+ wx_each_label = instance_method :each_label
43
+ define_method :each_label do
44
+ if block_given?
45
+ wx_each_label.bind(self).call
46
+ else
47
+ ::Enumerator.new { |y| wx_each_label.bind(self).call { |lbl| y << lbl } }
48
+ end
49
+ end
50
+
51
+ wx_each_entry = instance_method :each_entry
52
+ define_method :each_entry do
53
+ if block_given?
54
+ wx_each_entry.bind(self).call
55
+ else
56
+ ::Enumerator.new { |y| wx_each_entry.bind(self).call { |entry| y << entry } }
57
+ end
58
+ end
59
+
60
+ end
61
+
40
62
  end
@@ -4,27 +4,6 @@
4
4
 
5
5
  class Wx::RBN::RibbonGallery
6
6
 
7
- def item_client_data_store
8
- @item_client_data ||= {}
9
- end
10
- private :item_client_data_store
11
-
12
- def set_item_client_data(item, data)
13
- item_client_data_store[item] = data
14
- end
15
-
16
- def get_item_client_data(item)
17
- item_client_data_store[item]
18
- end
19
- alias :item_client_data :get_item_client_data
20
-
21
- wx_append = instance_method :append
22
- define_method :append do |bmp, item_id, data=nil|
23
- item = wx_append.bind(self).call(bmp, item_id)
24
- set_item_client_data(item, data) if item && data
25
- item
26
- end
27
-
28
7
  def items
29
8
  if block_given?
30
9
  count.times { |i| yield item(i) }
@@ -7,7 +7,10 @@
7
7
  require_relative './ext'
8
8
  require_relative './events/evt_list'
9
9
  require_relative './keyword_defs'
10
+ require_relative './rich_text_ctrl'
10
11
  require_relative './richtext_buffer'
12
+ require_relative './rich_text_composite_object'
13
+ require_relative './rich_text_paragraph'
11
14
  require_relative './richtext_formatting_dialog'
12
15
  require_relative './symbol_picker_dialog'
13
16
  require_relative './richtext_style_organiser_dialog'
@@ -0,0 +1,25 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ module RTC
8
+
9
+ class RichTextCompositeObject
10
+
11
+ # Overload to provide Enumerator without block
12
+ wx_each_child = instance_method :each_child
13
+ define_method :each_child do |&block|
14
+ if block
15
+ wx_each_child.bind(self).call(&block)
16
+ else
17
+ ::Enumerator.new { |y| wx_each_child.bind(self).call { |rto| y << rto } }
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ module RTC
8
+
9
+ class RichTextCtrl
10
+
11
+ # Overload to provide Enumerator without block
12
+ wx_each_line = instance_method :each_line
13
+ define_method :each_line do |&block|
14
+ if block
15
+ wx_each_line.bind(self).call(&block)
16
+ else
17
+ ::Enumerator.new { |y| wx_each_line.bind(self).call { |ln| y << ln } }
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ module RTC
8
+
9
+ class RichTextParagraph
10
+
11
+ # Overload to provide Enumerator without block
12
+ wx_each_line = instance_method :each_line
13
+ define_method :each_line do |&block|
14
+ if block
15
+ wx_each_line.bind(self).call(&block)
16
+ else
17
+ ::Enumerator.new { |y| wx_each_line.bind(self).call { |ln| y << ln } }
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -6,5 +6,6 @@
6
6
 
7
7
  require_relative './events/evt_list'
8
8
  require_relative './keyword_defs'
9
+ require_relative './styled_text_ctrl'
9
10
 
10
11
  Wx::Dialog.setup_dialog_functors(Wx::STC)
@@ -0,0 +1,25 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ module STC
8
+
9
+ class StyledTextCtrl
10
+
11
+ # Overload to provide Enumerator without block
12
+ wx_each_line = instance_method :each_line
13
+ define_method :each_line do |&block|
14
+ if block
15
+ wx_each_line.bind(self).call(&block)
16
+ else
17
+ ::Enumerator.new { |y| wx_each_line.bind(self).call { |ln| y << ln } }
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
data/lib/wx/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # This software is released under the MIT license.
4
4
 
5
5
  module Wx
6
- WXRUBY_VERSION = '0.9.1'
6
+ WXRUBY_VERSION = '0.9.3'
7
7
  end
@@ -65,9 +65,6 @@ module WXRuby3
65
65
  # create a .so binary
66
66
  @extra_ldflags << '-shared'
67
67
 
68
- # This class is not available on linux ports (wxGTK/wxQT/wxX11/wxMotif)
69
- exclude_module('wxPrinterDC')
70
-
71
68
  unless @wx_path.empty?
72
69
  libdirs = @wx_libs.select {|s| s.start_with?('-L')}.collect {|s| s.sub(/^-L/,'')}
73
70
  @exec_env['LD_LIBRARY_PATH'] = "#{ENV['LD_LIBRARY_PATH']}:#{dest_dir}:#{libdirs.join(':')}"
@@ -65,7 +65,7 @@ module WXRuby3
65
65
  end
66
66
  end
67
67
  # some weird thing with this; at least sometimes '--libs all' will not output media library even if feature active
68
- if features_set?('wxUSE_MEDIACTRL')
68
+ if features_set?('USE_MEDIACTRL')
69
69
  lib_list = wx_config("--libs media").split(' ')
70
70
  until lib_list.empty?
71
71
  s = lib_list.shift
@@ -107,7 +107,7 @@ module WXRuby3
107
107
  @ld.sub!(/-o\s*\Z/, '')
108
108
 
109
109
  @extra_cflags.concat %w[-Wno-unused-function -Wno-conversion-null -Wno-sometimes-uninitialized
110
- -Wno-overloaded-virtual -Wno-deprecated-copy -Wno-format-security]
110
+ -Wno-overloaded-virtual -Wno-deprecated-copy]
111
111
  @extra_cflags << ' -Wno-deprecated-declarations' unless @no_deprecated
112
112
 
113
113
  # create a .dylib binary
@@ -35,7 +35,7 @@ module WXRuby3
35
35
  end
36
36
 
37
37
  def debug_command(*args)
38
- args.unshift(FileUtils::RUBY)
38
+ args.unshift(nix_path(FileUtils::RUBY))
39
39
  args.unshift('--args')
40
40
  args.unshift('gdb')
41
41
  args.join(' ')
@@ -53,6 +53,18 @@ module WXRuby3
53
53
  "{#{dll_ext},dll}"
54
54
  end
55
55
 
56
+ def do_link(pkg)
57
+ # have to use option file for objects to link on windows because command line gets too long
58
+ ftmp = Tempfile.new('object')
59
+ ftmp.puts pkg.all_obj_files.collect { |o| File.join('..', o) }.join(' ')
60
+ ftmp.close # close but do not unlink
61
+ objs = "@#{ftmp.path}"
62
+ depsh = pkg.dep_libnames.collect { |dl| "#{dl}.#{dll_ext}" }.join(' ')
63
+ sh "cd lib && #{WXRuby3.config.ld} #{WXRuby3.config.ldflags(pkg.lib_target)} #{objs} #{depsh} " +
64
+ "#{WXRuby3.config.libs} #{WXRuby3.config.link_output_flag}#{pkg.lib_target}"
65
+ ftmp.unlink # cleanup
66
+ end
67
+
56
68
  private
57
69
 
58
70
  def wx_make
@@ -136,7 +136,7 @@ module WXRuby3
136
136
  wx_libset = ::Set.new
137
137
  wx_libset.merge wx_config("--libs all").split(' ')
138
138
  # some weird thing with this; at least sometimes '--libs all' will not output media library even if feature active
139
- if features_set?('wxUSE_MEDIACTRL')
139
+ if features_set?('USE_MEDIACTRL')
140
140
  wx_libset.merge wx_config("--libs media").split(' ')
141
141
  end
142
142
  wx_libset.collect { |s| s.dup }
@@ -589,7 +589,7 @@ module WXRuby3
589
589
  private :any_feature_set?
590
590
 
591
591
  def features_set?(*featureset)
592
- featureset.all? do |feature|
592
+ featureset.flatten.all? do |feature|
593
593
  if AnyOf === feature
594
594
  any_feature_set?(*feature.features)
595
595
  else
@@ -615,9 +615,19 @@ module WXRuby3
615
615
  def _retrieve_features(wxwidgets_setup_h)
616
616
  features = {}
617
617
 
618
- File.read(wxwidgets_setup_h).scan(/^\s*#define\s+(wx\w+|__\w+__)\s+([01])/) do | define |
619
- features[$1] = $2.to_i.zero? ? false : true
620
- end if is_configured? && wxwidgets_setup_h
618
+ if is_configured? && wxwidgets_setup_h
619
+ File.read(wxwidgets_setup_h).scan(/^\s*#define\s+(wx\w+|__\w+__)\s+([01])/) do | define |
620
+ feat_val = $2.to_i.zero? ? false : true
621
+ feat_id = $1.sub(/\Awx/i, '').gsub(/\A__|__\Z/, '')
622
+ features[feat_id] = feat_val
623
+ end
624
+ # make sure correct platform defines are included as well which will not be the case always
625
+ # (for example __WXMSW__ and __WXOSX__ are not in setup.h)
626
+ features['WXMSW'] = true if features['GNUWIN32']
627
+ features['WXOSX'] = true if features['DARWIN']
628
+ # prior to wxWidgets 3.3 this feature was not set for wxGTK builds
629
+ features['WXGTK'] = true if features['LINUX'] && !features['WXGTK'] && wx_port == :wxgtk
630
+ end
621
631
 
622
632
  features
623
633
  end
@@ -0,0 +1,65 @@
1
+ // Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ //
3
+ // This software is released under the MIT license.
4
+
5
+ #ifndef WXRUBY_EXPORT
6
+ #define WXRUBY_EXPORT WXRB_EXPORT_FLAG
7
+ #endif
8
+
9
+ #include "wxruby-ClientData.h"
10
+
11
+ #include <set>
12
+
13
+ static std::set<wxRubyClientData*> __s_WxRubyClientDataSet;
14
+ static std::set<wxRubyUserData*> __s_WxRubyUserDataSet;
15
+
16
+ WXRB_EXPORT_FLAG void wxRuby_RegisterClientData(wxRubyClientData* pcd)
17
+ {
18
+ __s_WxRubyClientDataSet.insert(pcd);
19
+ }
20
+
21
+ WXRB_EXPORT_FLAG void wxRuby_RegisterUserData(wxRubyUserData* pud)
22
+ {
23
+ __s_WxRubyUserDataSet.insert(pud);
24
+ }
25
+
26
+ static ID client_data_unlinked_id()
27
+ {
28
+ static ID __s_client_data_unlinked_id {};
29
+ if (__s_client_data_unlinked_id == ID())
30
+ {
31
+ __s_client_data_unlinked_id = rb_intern("client_data_unlinked");
32
+ }
33
+ return __s_client_data_unlinked_id;
34
+ }
35
+
36
+ WXRB_EXPORT_FLAG void wxRuby_UnregisterClientData(wxRubyClientData* pcd)
37
+ {
38
+ VALUE rbcd = pcd->GetData();
39
+ __s_WxRubyClientDataSet.erase(pcd);
40
+ if (!NIL_P(rbcd) && rb_respond_to(rbcd, client_data_unlinked_id()))
41
+ {
42
+ wxRuby_Funcall(rbcd, client_data_unlinked_id(), 0);
43
+ }
44
+ }
45
+
46
+ WXRB_EXPORT_FLAG void wxRuby_UnregisterUserData(wxRubyUserData* pud)
47
+ {
48
+ VALUE rbud = pud->GetData();
49
+ __s_WxRubyUserDataSet.erase(pud);
50
+ if (!NIL_P(rbud) && rb_respond_to(rbud, client_data_unlinked_id()))
51
+ {
52
+ wxRuby_Funcall(rbud, client_data_unlinked_id(), 0);
53
+ }
54
+ }
55
+
56
+ static void wxRuby_GC_mark_ClientData()
57
+ {
58
+ for (wxRubyClientData* pcd : __s_WxRubyClientDataSet)
59
+ rb_gc_mark(pcd->GetData());
60
+ for (wxRubyUserData* pud : __s_WxRubyUserDataSet)
61
+ rb_gc_mark(pud->GetData());
62
+ }
63
+
64
+ typedef void (*WXRBMarkFunction)();
65
+ WXRUBY_EXPORT void wxRuby_AppendMarker(WXRBMarkFunction marker);
@@ -16,7 +16,7 @@ VALUE rb_get_backtrace(VALUE);
16
16
 
17
17
  namespace Swig
18
18
  {
19
- class DirectorRubyException : public DirectorException
19
+ class WXRB_EXPORT_FLAG DirectorRubyException : public DirectorException
20
20
  {
21
21
  public:
22
22
  DirectorRubyException(VALUE error, VALUE rcvr, ID fn_id)
@@ -105,7 +105,7 @@ module WXRuby3
105
105
  end
106
106
 
107
107
  def included_directors
108
- directors.select { |dir| !Config.instance.excluded_module?(dir.spec) }
108
+ directors.select { |dir| Package.full_docs? || !Config.instance.excluded_module?(dir.spec) }
109
109
  end
110
110
 
111
111
  def director_for_class(class_name)
@@ -248,7 +248,7 @@ module WXRuby3
248
248
  end
249
249
 
250
250
  # next initialize all modules with classes depending (bases AND mixins) on classes in any modules already
251
- # selected until there are no more modules left or none that are left depend on any selected ones
251
+ # selecteduntil there are no more modules left or none that are left depend on any selected ones
252
252
  while dir_inx = inc_dirs.find_index { |dir| !dir.spec.initialize_at_end && is_dir_with_fulfilled_deps?(dir, cls_set) }
253
253
  dir = inc_dirs[dir_inx]
254
254
  modreg = Spec.module_registry[dir.spec.module_name]
@@ -327,6 +327,7 @@ module WXRuby3
327
327
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'swigdirector.inc'))
328
328
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'funcall.inc'))
329
329
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'enum.inc'))
330
+ fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'client_data.inc'))
330
331
  fsrc << File.read(File.join(File.dirname(__FILE__), 'include', 'init.inc'))
331
332
  fsrc.puts
332
333
  end
@@ -359,9 +360,11 @@ module WXRuby3
359
360
  # generate constant definitions for feature defines from setup.h
360
361
  fsrc.puts %Q{VALUE mWxSetup = rb_define_module_under(#{module_variable}, "Setup");}
361
362
  Config.instance.features.each do |feature, val|
362
- const_name = rb_wx_name(feature).gsub(/\A__|__\Z/, '')
363
- fsrc.puts %Q{rb_define_const(mWxSetup, "#{const_name}", Q#{val});}
363
+ fsrc.puts %Q{rb_define_const(mWxSetup, "#{feature}", Q#{val});}
364
364
  end
365
+ fsrc.puts
366
+ # install wxRubyClientData marker
367
+ fsrc.puts %Q{wxRuby_AppendMarker(wxRuby_GC_mark_ClientData);}
365
368
  else
366
369
  fsrc.puts %Q{#{module_variable} = rb_define_module_under(wxRuby_Core(), "#{name}");}
367
370
  # record package submodule in main module's list
@@ -409,7 +412,11 @@ module WXRuby3
409
412
  item.event_types.each do |evt_hnd, evt_type, evt_arity, evt_klass, _|
410
413
  evh_name = evt_hnd.downcase
411
414
  unless evts_handled.include?(evh_name)
412
- evt_klass ||= item.name
415
+ evt_klass ||= if item.event
416
+ item.name
417
+ else
418
+ raise "Don't know Event class for #{evh_name} event type (from #{item.name})"
419
+ end
413
420
  fout.puts ' '+<<~__HEREDOC.split("\n").join("\n ")
414
421
  self.register_event_type EventType[
415
422
  '#{evh_name}', #{evt_arity},
@@ -422,6 +429,13 @@ module WXRuby3
422
429
  end
423
430
  end
424
431
 
432
+ class << self
433
+ # need to share these over all packages since events may be defined in multiple
434
+ def generated_events
435
+ @generated_events ||= ::Set.new
436
+ end
437
+ end
438
+
425
439
  def generate_event_list
426
440
  # determine Ruby library events root for package
427
441
  rbevt_root = File.join(ruby_classes_path, 'events')
@@ -437,7 +451,7 @@ module WXRuby3
437
451
 
438
452
  class Wx::EvtHandler
439
453
  __HEREDOC
440
- evts_handled = ::Set.new
454
+ evts_handled = self.class.generated_events
441
455
  # first iterate all event classes
442
456
  command_event = nil # special case
443
457
  included_directors.each do |dir|
@@ -523,10 +537,12 @@ module WXRuby3
523
537
  # ----------------------------------------------------------------------------
524
538
 
525
539
 
526
- class Wx::EvtHandler
540
+ module Wx
527
541
 
528
- __HEREDOC
529
- fdoc.indent do
542
+ class EvtHandler
543
+
544
+ __HEREDOC
545
+ fdoc.indent(2) do
530
546
  fdoc.doc.puts "@!group #{name} Event handler methods"
531
547
  fdoc.puts
532
548
  evts_handled = ::Set.new
@@ -557,6 +573,8 @@ module WXRuby3
557
573
  fdoc.doc.puts '@!endgroup'
558
574
  end
559
575
  fdoc.puts
576
+ fdoc.puts ' end'
577
+ fdoc.puts
560
578
  fdoc.puts 'end'
561
579
  end
562
580
  end
@@ -634,6 +652,10 @@ module WXRuby3
634
652
  end
635
653
  private :generate_core_doc
636
654
 
655
+ def self.full_docs?
656
+ !!ENV['WXRUBY_FULLDOCS']
657
+ end
658
+
637
659
  def generate_docs
638
660
  # make sure all modules have been extracted from xml
639
661
  included_directors.each {|dir| dir.extract_interface(false, gendoc: true) }