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
@@ -0,0 +1,192 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 wxWidgets interface director
7
+ ###
8
+
9
+ require_relative './window'
10
+
11
+ module WXRuby3
12
+
13
+ class Director
14
+
15
+ class OwnerDrawnComboBox < Window
16
+
17
+ include Typemap::ClientData
18
+
19
+ def setup
20
+ super
21
+ spec.items << 'wxItemContainer'
22
+ # override inheritance chain
23
+ spec.override_inheritance_chain('wxOwnerDrawnComboBox', %w[wxComboCtrl wxControl wxWindow wxEvtHandler wxObject])
24
+ spec.fold_bases('wxOwnerDrawnComboBox' => %w[wxItemContainer])
25
+ spec.regard %w[
26
+ wxOwnerDrawnComboBox::OnDrawBackground
27
+ wxOwnerDrawnComboBox::OnDrawItem
28
+ wxOwnerDrawnComboBox::OnMeasureItem
29
+ wxOwnerDrawnComboBox::OnMeasureItemWidth
30
+ ]
31
+ # unuseful overloads
32
+ spec.ignore 'wxOwnerDrawnComboBox::wxOwnerDrawnComboBox(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)',
33
+ 'wxOwnerDrawnComboBox::Create(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)'
34
+ spec.ignore('wxItemContainer::Append(const wxString &, void *)',
35
+ 'wxItemContainer::Append(const std::vector< wxString > &)',
36
+ 'wxItemContainer::Append(const wxArrayString &, void **)',
37
+ 'wxItemContainer::Append(unsigned int, const wxString *)',
38
+ 'wxItemContainer::Append(unsigned int, const wxString *, void **)',
39
+ 'wxItemContainer::Append(unsigned int, const wxString *, wxClientData **)',
40
+ 'wxItemContainer::Insert(const wxString &, unsigned int, void *)',
41
+ 'wxItemContainer::Insert(const std::vector< wxString > &)',
42
+ 'wxItemContainer::Insert(const wxArrayString &, unsigned int, void **)',
43
+ 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int)',
44
+ 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, void **)',
45
+ 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, wxClientData **)',
46
+ 'wxItemContainer::Set(const std::vector< wxString > &)',
47
+ 'wxItemContainer::Set(const wxArrayString &, void **)',
48
+ 'wxItemContainer::Set(unsigned int, const wxString *)',
49
+ 'wxItemContainer::Set(unsigned int, const wxString *, void **)',
50
+ 'wxItemContainer::Set(unsigned int, const wxString *, wxClientData **)',
51
+ 'wxItemContainer::GetClientData',
52
+ 'wxItemContainer::SetClientData',
53
+ 'wxItemContainer::HasClientUntypedData',
54
+ 'wxItemContainer::Clear')
55
+ # ignore these but keep docs; will add custom versions below
56
+ spec.ignore([
57
+ 'wxItemContainer::DetachClientObject',
58
+ 'wxItemContainer::Append(const wxArrayString &, wxClientData **)',
59
+ 'wxItemContainer::Insert(const wxArrayString &, unsigned int, wxClientData **)',
60
+ 'wxItemContainer::Set(const wxArrayString &, wxClientData **)'], ignore_doc: false)
61
+ # ambiguous
62
+ spec.ignore 'wxOwnerDrawnComboBox::IsEmpty', ignore_doc: false
63
+ # missing from docs; needed to override TextEntry version
64
+ spec.extend_interface 'wxOwnerDrawnComboBox', 'void Clear()'
65
+ # missing from docs; required so proxy calls correct override
66
+ spec.extend_interface 'wxOwnerDrawnComboBox',
67
+ 'virtual void DoSetPopupControl(wxComboPopup* popup)',
68
+ visibility: 'protected'
69
+ # missing from docs; implementations of wxItemContainerImmutable methods
70
+ spec.extend_interface 'wxOwnerDrawnComboBox',
71
+ 'unsigned int GetCount() const',
72
+ 'wxString GetString(unsigned int n) const',
73
+ 'void SetString(unsigned int n, const wxString& s)',
74
+ 'int FindString(const wxString& s, bool bCase = false) const',
75
+ 'void Select(int n)',
76
+ 'wxArrayString GetStrings() const'
77
+ # for doc only
78
+ spec.map 'void** clientData' => 'Array', swig: false do
79
+ map_in code: ''
80
+ end
81
+ # Replace the old Wx definitions of these methods adding
82
+ # proper checks on the data arrays.
83
+ # Also add an item enumerator.
84
+ spec.add_extend_code 'wxOwnerDrawnComboBox', <<~__HEREDOC
85
+ wxString GetListStringSelection()
86
+ {
87
+ return $self->wxItemContainerImmutable::GetStringSelection();
88
+ }
89
+
90
+ bool SetListStringSelection(const wxString& string)
91
+ {
92
+ return $self->wxItemContainerImmutable::SetStringSelection(string);
93
+ }
94
+
95
+ void SetListSelection(int n)
96
+ {
97
+ $self->SetSelection(n);
98
+ }
99
+
100
+ int GetListSelection()
101
+ {
102
+ return $self->GetSelection();
103
+ }
104
+
105
+ VALUE DetachClientObject(unsigned int n)
106
+ {
107
+ VALUE rc = Qnil;
108
+ wxClientData *wxcd = $self->DetachClientObject(n);
109
+ wxRubyClientData *rbcd = wxcd ? dynamic_cast<wxRubyClientData*> (wxcd) : nullptr;
110
+ if (rbcd)
111
+ {
112
+ rc = rbcd->GetData();
113
+ delete rbcd;
114
+ }
115
+ return rc;
116
+ }
117
+
118
+ int Append(const wxArrayString &items, VALUE rb_clientData)
119
+ {
120
+ if (TYPE(rb_clientData) != T_ARRAY ||
121
+ static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
122
+ {
123
+ rb_raise(rb_eArgError,
124
+ TYPE(rb_clientData) == T_ARRAY ?
125
+ "expected Array for client_data" :
126
+ "client_data Array needs to be equal in size to items Array");
127
+ }
128
+
129
+ std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
130
+ for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
131
+ {
132
+ cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
133
+ }
134
+ return $self->Append(items, cd_arr.get());
135
+ }
136
+
137
+ int Insert(const wxArrayString &items, unsigned int pos, VALUE rb_clientData)
138
+ {
139
+ if (TYPE(rb_clientData) != T_ARRAY ||
140
+ static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
141
+ {
142
+ rb_raise(rb_eArgError,
143
+ TYPE(rb_clientData) == T_ARRAY ?
144
+ "expected Array for client_data" :
145
+ "client_data Array needs to be equal in size to items Array");
146
+ }
147
+
148
+ std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
149
+ for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
150
+ {
151
+ cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
152
+ }
153
+ return $self->Insert(items, pos, cd_arr.get());
154
+ }
155
+
156
+ void Set(const wxArrayString &items, VALUE rb_clientData)
157
+ {
158
+ if (TYPE(rb_clientData) != T_ARRAY ||
159
+ static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
160
+ {
161
+ rb_raise(rb_eArgError,
162
+ TYPE(rb_clientData) == T_ARRAY ?
163
+ "expected Array for client_data" :
164
+ "client_data Array needs to be equal in size to items Array");
165
+ }
166
+
167
+ std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
168
+ for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
169
+ {
170
+ cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
171
+ }
172
+ $self->Set(items, cd_arr.get());
173
+ }
174
+
175
+ VALUE each_string()
176
+ {
177
+ VALUE rc = Qnil;
178
+ for (unsigned int i=0; i<$self->GetCount() ;++i)
179
+ {
180
+ VALUE rb_s = WXSTR_TO_RSTR($self->GetString(i));
181
+ rc = rb_yield(rb_s);
182
+ }
183
+ return rc;
184
+ }
185
+ __HEREDOC
186
+ end
187
+
188
+ end # class OwnerDrawnComboBox
189
+
190
+ end # class Director
191
+
192
+ end # module WXRuby3
@@ -141,7 +141,7 @@ module WXRuby3
141
141
  spec.map_apply 'int * OUTPUT' => 'int* pIndex'
142
142
  end
143
143
  # for UIntProperty and IntProperty
144
- if Config.instance.features_set?('wxUSE_LONGLONG')
144
+ if Config.instance.features_set?('USE_LONGLONG')
145
145
  # wxLongLong mapping to be considered before considering 'long' (see typecheck precedence)
146
146
  spec.map 'const wxLongLong&' => 'Integer' do
147
147
  map_in temp: 'wxLongLong tmp', code: <<~__CODE
@@ -18,6 +18,8 @@ module WXRuby3
18
18
 
19
19
  include Typemap::PGCell
20
20
 
21
+ include Typemap::ClientData
22
+
21
23
  def setup
22
24
  super
23
25
  if spec.module_name == 'wxPGProperty'
@@ -54,7 +56,30 @@ module WXRuby3
54
56
  {
55
57
  return (*self)[idx];
56
58
  }
57
- __HEREDOC
59
+
60
+ VALUE each_label()
61
+ {
62
+ VALUE rc = Qnil;
63
+ for (unsigned int i=0; i<$self->GetCount() ;++i)
64
+ {
65
+ VALUE rb_lbl = WXSTR_TO_RSTR($self->GetLabel(i));
66
+ rc = rb_yield(rb_lbl);
67
+ }
68
+ return rc;
69
+ }
70
+
71
+ VALUE each_entry()
72
+ {
73
+ VALUE rc = Qnil;
74
+ for (unsigned int i=0; i<$self->GetCount() ;++i)
75
+ {
76
+ wxPGChoiceEntry *entry = &($self->Item(i));
77
+ VALUE rb_entry = SWIG_NewPointerObj(SWIG_as_voidptr(entry), SWIGTYPE_p_wxPGChoiceEntry, 0);
78
+ rc = rb_yield(rb_entry);
79
+ }
80
+ return rc;
81
+ }
82
+ __HEREDOC
58
83
  # for GetIndicesForStrings
59
84
  spec.map 'wxArrayString *unmatched' => 'Array,nil' do
60
85
 
@@ -90,7 +115,7 @@ module WXRuby3
90
115
  # obsolete
91
116
  spec.ignore %w[wxPGProperty::AddChild wxPGProperty::GetValueString]
92
117
  # not of use in Ruby
93
- spec.ignore(%w[wxPGProperty::GetClientObject wxPGProperty::SetClientObject])
118
+ spec.ignore(%w[wxPGProperty::GetClientData wxPGProperty::SetClientData])
94
119
  # only keep the const version
95
120
  spec.ignore 'wxPGProperty::GetCell'
96
121
  spec.regard 'wxPGProperty::GetCell(unsigned int) const'
@@ -123,32 +148,6 @@ module WXRuby3
123
148
  spec.suppress_warning(473,
124
149
  'wxPGProperty::DoGetEditorClass',
125
150
  'wxPGProperty::DoGetValidator')
126
- spec.add_header_code <<~__HEREDOC
127
- extern void GC_mark_wxPGProperty(void* ptr)
128
- {
129
- #ifdef __WXRB_DEBUG__
130
- if (wxRuby_TraceLevel()>1)
131
- {
132
- std::wcout << "> GC_mark_wxPGProperty : " << ptr;
133
- if (ptr) std::wcout << " (" << ((wxPGProperty*)ptr)->GetName() << ')';
134
- std::wcout << std::endl;
135
- }
136
- #endif
137
- if (ptr)
138
- {
139
- VALUE object = (VALUE)((wxPGProperty*)ptr)->GetClientData();
140
- if (object && !NIL_P(object))
141
- {
142
- #ifdef __WXRB_DEBUG__
143
- if (wxRuby_TraceLevel()>2)
144
- std::wcout << "*** marking property data " << ptr << std::endl;
145
- #endif
146
- rb_gc_mark(object);
147
- }
148
- }
149
- }
150
- __HEREDOC
151
- spec.add_swig_code '%markfunc wxPGProperty "GC_mark_wxPGProperty";'
152
151
  spec.ignore 'wxPGProperty::m_clientData' # not wanted for wxRuby
153
152
  # take protected members into account
154
153
  spec.regard 'wxPGProperty::wxPGProperty',
@@ -214,7 +213,6 @@ module WXRuby3
214
213
  }
215
214
  __CODE
216
215
  else
217
- spec.add_header_code 'extern void GC_mark_wxPGProperty(void* ptr);'
218
216
  spec.items.each do |itm|
219
217
  unless itm == 'wxColourPropertyValue'
220
218
  # add protected member methods and var to complement base class
@@ -227,7 +225,6 @@ module WXRuby3
227
225
  'wxVariant m_value',
228
226
  visibility: 'protected'
229
227
  spec.rename_for_ruby 'value_' => "#{itm}::m_value"
230
- spec.add_swig_code %Q{%markfunc #{itm} "GC_mark_wxPGProperty";}
231
228
  spec.new_object %Q{#{itm}::GetEditorDialog}
232
229
  spec.suppress_warning(473, "#{itm}::GetEditorDialog")
233
230
  end
@@ -39,16 +39,11 @@ module WXRuby3
39
39
  spec.extend_interface 'wxPropertyGridInterface',
40
40
  'void SetPropertyValues(const wxVariant &list, const wxPGPropArgCls& defaultCategory = 0)'
41
41
  # optionals
42
- unless Config.instance.features_set?('wxUSE_LONGLONG')
43
- spec.ignore 'wxPropertyGridInterface::GetPropertyValueAsLongLong',
44
- 'wxPropertyGridInterface::GetPropertyValueAsULongLong'
45
- end
46
- unless Config.instance.features_set?('wxUSE_DATETIME')
47
- spec.ignore 'wxPropertyGridInterface::GetPropertyValueAsDateTime'
48
- end
49
- unless Config.instance.features_set?('wxUSE_VALIDATORS')
50
- spec.ignore 'wxPropertyGridInterface::GetPropertyValidator'
51
- end
42
+ spec.ignore_unless 'USE_LONGLONG',
43
+ 'wxPropertyGridInterface::GetPropertyValueAsLongLong',
44
+ 'wxPropertyGridInterface::GetPropertyValueAsULongLong'
45
+ spec.ignore_unless 'USE_DATETIME', 'wxPropertyGridInterface::GetPropertyValueAsDateTime'
46
+ spec.ignore_unless 'USE_VALIDATORS', 'wxPropertyGridInterface::GetPropertyValidator'
52
47
  # fix incorrect XML documentation
53
48
  spec.ignore 'wxPropertyGridInterface::SetPropertyImage', ignore_doc: false # ignore non-const BitmapBundle arg decl
54
49
  # and add correct decl
@@ -14,13 +14,13 @@ module WXRuby3
14
14
 
15
15
  class RibbonButtonBar < Window
16
16
 
17
+ include Typemap::ClientData
18
+
17
19
  def setup
18
20
  super
19
21
  # exclude these; far better done in pure Ruby
20
22
  spec.ignore 'wxRibbonButtonBar::SetItemClientData',
21
- 'wxRibbonButtonBar::GetItemClientData', ignore_doc: false
22
- spec.ignore 'wxRibbonButtonBar::SetItemClientObject',
23
- 'wxRibbonButtonBar::GetItemClientObject'
23
+ 'wxRibbonButtonBar::GetItemClientData'
24
24
  # not needed because of type mapping
25
25
  spec.ignore 'wxRibbonButtonBar::GetItemId',
26
26
  'wxRibbonButtonBar::GetItemById'
@@ -14,15 +14,13 @@ module WXRuby3
14
14
 
15
15
  class RibbonGallery < Window
16
16
 
17
+ include Typemap::ClientData
18
+
17
19
  def setup
18
20
  super
19
- # exclude these; far better done in pure Ruby
20
- spec.ignore 'wxRibbonGallery::SetItemClientObject',
21
- 'wxRibbonGallery::GetItemClientObject',
22
- 'wxRibbonGallery::Append(const wxBitmap &, int, wxClientData *)'
23
21
  spec.ignore 'wxRibbonGallery::SetItemClientData',
24
22
  'wxRibbonGallery::GetItemClientData',
25
- 'wxRibbonGallery::Append(const wxBitmap &, int, void *)', ignore_doc: false
23
+ 'wxRibbonGallery::Append(const wxBitmap &, int, void *)'
26
24
  spec.map 'wxRibbonGalleryItem*' => 'Integer' do
27
25
  map_out code: '$result = ULL2NUM(reinterpret_cast<uintptr_t> ($1));'
28
26
  map_directorout code: '$result = reinterpret_cast<wxRibbonGalleryItem*> ((uintptr_t)NUM2ULL($1));'
@@ -45,6 +45,17 @@ module WXRuby3
45
45
  }
46
46
  return rc;
47
47
  }
48
+
49
+ VALUE each_child()
50
+ {
51
+ VALUE rc = Qnil;
52
+ for (size_t i=0; i<$self->GetChildCount() ;++i)
53
+ {
54
+ wxRichTextObject *rto = $self->GetChild(i);
55
+ rc = rb_yield(wxRuby_RichTextObject2Ruby(rto, 0));
56
+ }
57
+ return rc;
58
+ }
48
59
  __HEREDOC
49
60
 
50
61
  spec.new_object 'wxRichTextLine::Clone'
@@ -161,6 +172,20 @@ module WXRuby3
161
172
  }
162
173
  $self->MoveFromList(wx_lst);
163
174
  }
175
+
176
+ VALUE each_line()
177
+ {
178
+ VALUE rc = Qnil;
179
+ const wxRichTextLineVector &lines = $self->GetLines();
180
+ int lnr = 0;
181
+ for (const wxRichTextLine* line : lines)
182
+ {
183
+ VALUE rb_ln = SWIG_NewPointerObj(SWIG_as_voidptr(const_cast<wxRichTextLine*> (line)), SWIGTYPE_p_wxRichTextLine, 0);
184
+ rc = rb_yield(rb_ln);
185
+ ++lnr;
186
+ }
187
+ return rc;
188
+ }
164
189
  __CODE
165
190
 
166
191
  spec.do_not_generate(:typedefs, :variables, :enums, :defines, :functions)
@@ -15,7 +15,7 @@ module WXRuby3
15
15
  class RichTextCtrl < Window
16
16
 
17
17
  include Typemap::RichText
18
- if Config.instance.features_set?('wxUSE_DATETIME')
18
+ if Config.instance.features_set?('USE_DATETIME')
19
19
  include Typemap::DateTime
20
20
  end
21
21
 
@@ -117,9 +117,7 @@ module WXRuby3
117
117
  wxRichTextCtrl::ProcessMouseMovement
118
118
  wxRichTextCtrl::ProcessBackKey
119
119
  ]
120
- unless Config.instance.features_set?('wxUSE_DATETIME')
121
- spec.ignore %w[wxRichTextCtrl::GetDragStartTime wxRichTextCtrl::SetDragStartTime]
122
- end
120
+ spec.ignore_unless 'USE_DATETIME', %w[wxRichTextCtrl::GetDragStartTime wxRichTextCtrl::SetDragStartTime]
123
121
  spec.add_header_code 'extern VALUE wxRuby_RichTextObject2Ruby(const wxRichTextObject *wx_rto, int own);'
124
122
  spec.swig_import('swig/classes/include/wxTextAttr.h',
125
123
  'swig/classes/include/wxRichTextObject.h',
@@ -208,6 +206,18 @@ module WXRuby3
208
206
  __CODE
209
207
 
210
208
  end
209
+ spec.add_extend_code 'wxRichTextCtrl', <<~__HEREDOC
210
+ VALUE each_line()
211
+ {
212
+ VALUE rc = Qnil;
213
+ for (int i=0; i<$self->GetNumberOfLines() ;++i)
214
+ {
215
+ VALUE rb_ln = WXSTR_TO_RSTR($self->GetLineText(i));
216
+ rc = rb_yield(rb_ln);
217
+ }
218
+ return rc;
219
+ }
220
+ __HEREDOC
211
221
  end
212
222
  end # class RichTextCtrl
213
223
 
@@ -27,11 +27,13 @@ module WXRuby3
27
27
  wxRichTextFormattingDialog::SetStyle
28
28
  wxRichTextFormattingDialog::SetStyleDefinition
29
29
  ]
30
- # add undocumented methods
31
- spec.extend_interface 'wxRichTextFormattingDialog',
32
- 'wxRichTextObject* GetObject() const',
33
- 'void SetObject(wxRichTextObject* obj)',
34
- 'virtual bool ApplyStyle(wxRichTextCtrl* ctrl, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO)'
30
+ if Config.instance.wx_version < '3.3.0'
31
+ # add undocumented methods
32
+ spec.extend_interface 'wxRichTextFormattingDialog',
33
+ 'wxRichTextObject* GetObject() const',
34
+ 'void SetObject(wxRichTextObject* obj)',
35
+ 'virtual bool ApplyStyle(wxRichTextCtrl* ctrl, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO)'
36
+ end
35
37
  spec.add_header_code 'extern VALUE wxRuby_RichTextObject2Ruby(const wxRichTextObject *wx_rto, int own);'
36
38
  spec.disown 'wxRichTextFormattingDialogFactory *factory'
37
39
  spec.suppress_warning(473, 'wxRichTextFormattingDialogFactory::CreatePage')
@@ -83,13 +83,15 @@ module WXRuby3
83
83
  return rb_rtsd;
84
84
  }
85
85
  __HEREDOC
86
- # add undocumented convenience method
87
- spec.extend_interface 'wxRichTextListStyleDefinition',
88
- 'void SetAttributes(int i, int leftIndent, int leftSubIndent, int bulletStyle, const wxString& bulletSymbol = wxEmptyString)'
89
- # undocumented methods
90
- spec.extend_interface 'wxRichTextStyleSheet',
91
- 'wxRichTextStyleSheet(const wxRichTextStyleSheet& sheet)',
92
- 'void Copy(const wxRichTextStyleSheet& sheet)'
86
+ if Config.instance.wx_version < '3.3.0'
87
+ # add undocumented convenience method
88
+ spec.extend_interface 'wxRichTextListStyleDefinition',
89
+ 'void SetAttributes(int i, int leftIndent, int leftSubIndent, int bulletStyle, const wxString& bulletSymbol = wxEmptyString)'
90
+ # undocumented methods
91
+ spec.extend_interface 'wxRichTextStyleSheet',
92
+ 'wxRichTextStyleSheet(const wxRichTextStyleSheet& sheet)',
93
+ 'void Copy(const wxRichTextStyleSheet& sheet)'
94
+ end
93
95
  # redefine these since we need to be able to selectively specify 'disown'
94
96
  spec.ignore 'wxRichTextStyleSheet::AddCharacterStyle',
95
97
  'wxRichTextStyleSheet::AddListStyle',
@@ -12,12 +12,19 @@ module WXRuby3
12
12
 
13
13
  class Sizer < Director
14
14
 
15
+ include Typemap::ClientData
16
+
15
17
  def setup
16
- # Any nested sizers passed to Add() in are owned by C++, not GC'd by Ruby
18
+ # Any nested sizers passed to Add() in are owned by C++, not GC-ed by Ruby
17
19
  case spec.module_name
18
20
  when 'wxSizer'
19
21
  spec.items << 'wxSizerFlags'
20
22
  spec.gc_as_untracked('wxSizerFlags')
23
+ if Config.instance.wx_version < '3.3.0'
24
+ # missing from docs
25
+ spec.extend_interface 'wxSizerFlags',
26
+ 'wxSizerFlags& HorzBorder()'
27
+ end
21
28
  spec.make_abstract('wxSizer')
22
29
  spec.ignore %w[wxSizer::IsShown wxSizer::SetVirtualSizeHints]
23
30
  # cannot use these with wxRuby
@@ -45,7 +52,7 @@ module WXRuby3
45
52
  spec.ignore 'wxSizer::Detach(wxSizer*)',
46
53
  'wxSizer::Detach(int)', ignore_doc: false
47
54
  spec.add_extend_code 'wxSizer', <<~__HEREDOC
48
- bool detach(wxSizer* szr)
55
+ bool Detach(wxSizer* szr)
49
56
  {
50
57
  if ($self->Detach(szr))
51
58
  {
@@ -60,7 +67,7 @@ module WXRuby3
60
67
  return false;
61
68
  }
62
69
 
63
- bool detach(int itm_nr)
70
+ bool Detach(int itm_nr)
64
71
  {
65
72
  wxSizerItem* itm = $self->GetItem(itm_nr);
66
73
  if (itm)
@@ -82,6 +89,21 @@ module WXRuby3
82
89
  }
83
90
  return false;
84
91
  }
92
+
93
+ VALUE each_child()
94
+ {
95
+ const wxSizerItemList& child_list = self->GetChildren();
96
+ VALUE rc = Qnil;
97
+ wxSizerItemList::compatibility_iterator node = child_list.GetFirst();
98
+ while (node)
99
+ {
100
+ wxSizerItem *wx_si = node->GetData();
101
+ VALUE rb_si = SWIG_NewPointerObj(wx_si, SWIGTYPE_p_wxSizerItem, 0);
102
+ rc = rb_yield(rb_si);
103
+ node = node->GetNext();
104
+ }
105
+ return rc;
106
+ }
85
107
  __HEREDOC
86
108
  # Typemap for GetChildren - convert to array of Sizer items
87
109
  spec.map 'wxSizerItemList&' => 'Array<Wx::SizerItem>' do
@@ -109,9 +131,13 @@ module WXRuby3
109
131
  spec.ignore 'wxGridBagSizer::Add(wxGBSizerItem *)'
110
132
  # need to adjust sizer arg name to apply disown specs
111
133
  spec.ignore 'wxGridBagSizer::Add(wxSizer *, const wxGBPosition &, const wxGBSpan &, int, int, wxObject *)',
134
+ 'wxGridBagSizer::Add(wxWindow *, const wxGBPosition &, const wxGBSpan &, int, int, wxObject *)',
135
+ 'wxGridBagSizer::Add(int, int, const wxGBPosition &, const wxGBSpan &, int, int, wxObject *)',
112
136
  ignore_doc: false
113
137
  spec.extend_interface 'wxGridBagSizer',
114
- 'wxSizerItem *Add(wxSizer *sizer_disown, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)'
138
+ 'wxSizerItem * Add(wxSizer *sizer_disown, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)',
139
+ 'wxSizerItem * Add(wxWindow *window, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)',
140
+ 'wxSizerItem * Add(int width, int height, const wxGBPosition &pos, const wxGBSpan &span=wxDefaultSpan, int flag=0, int border=0, wxObject *userData=NULL)'
115
141
  spec.disown 'wxSizer* sizer_disown'
116
142
  end
117
143
  # no real use for allowing these to be overloaded but a whole lot of grieve
@@ -12,15 +12,27 @@ module WXRuby3
12
12
 
13
13
  class SizerItem < Director
14
14
 
15
+ include Typemap::ClientData
16
+
15
17
  def setup
16
18
  spec.disable_proxies
17
19
  # do not allow creating SizerItems in Ruby; this has limited benefits and
18
20
  # memory management of sizer items is a nightmare
19
21
  case spec.module_name
20
22
  when 'wxSizerItem'
23
+ spec.gc_as_untracked 'wxSizerItem'
21
24
  spec.make_abstract 'wxSizerItem'
22
25
  # ignore constructors
23
26
  spec.ignore 'wxSizerItem::wxSizerItem'
27
+ # needs more discriminating return type for type map
28
+ spec.ignore 'wxSizerItem::GetUserData', ignore_doc: false
29
+ spec.add_header_code 'typedef wxObject* WxUserDataObject;'
30
+ spec.extend_interface 'wxSizerItem',
31
+ 'WxUserDataObject GetUserData() const'
32
+ # for doc gen only
33
+ spec.map 'wxObject*' => 'Object', swig: false do
34
+ map_out code: ''
35
+ end
24
36
  spec.ignore(%w[wxSizerItem::SetSizer wxSizerItem::SetSpacer wxSizerItem::SetWindow])
25
37
  # need to adjust sizer arg name to apply disown specs
26
38
  spec.ignore 'wxSizerItem::AssignSizer(wxSizer *)', ignore_doc: false
@@ -45,6 +57,7 @@ module WXRuby3
45
57
  }
46
58
  __HEREDOC
47
59
  when 'wxGBSizerItem'
60
+ spec.gc_as_untracked 'wxGBSizerItem'
48
61
  spec.make_abstract 'wxGBSizerItem'
49
62
  # ignore constructors
50
63
  spec.ignore 'wxGBSizerItem::wxGBSizerItem',
@@ -20,6 +20,34 @@ module WXRuby3
20
20
  __HEREDOC
21
21
  super
22
22
  end
23
+
24
+ def process(gendoc: false)
25
+ defmod = super
26
+ spec.include 'wx/generic/statbmpg.h'
27
+ def_statbmp = defmod.find_item('wxStaticBitmap')
28
+ # create a definition for 'wxGenericStaticBitmap' which is not documented
29
+ def_genstatbmp = def_statbmp.dup
30
+ def_genstatbmp.name = 'wxGenericStaticBitmap'
31
+ def_genstatbmp.brief_doc = nil
32
+ def_genstatbmp.detailed_doc = nil
33
+ def_genstatbmp.items = def_genstatbmp.items.collect { |itm| itm.dup }
34
+ def_genstatbmp.items.each do |itm|
35
+ if itm.is_a?(Extractor::MethodDef)
36
+ itm.overloads = itm.overloads.collect { |ovl| ovl.dup }
37
+ itm.all.each do |ovl|
38
+ ovl.name = 'wxGenericStaticBitmap' if ovl.is_ctor
39
+ ovl.class_name = 'wxGenericStaticBitmap'
40
+ ovl.update_attributes(klass: def_genstatbmp)
41
+ end
42
+ end
43
+ end
44
+ def_genstatbmp.items.delete_if { |itm| itm.is_a?(Extractor::EnumDef) && itm.name == 'ScaleMode' }
45
+ spec.add_swig_code %Q{typedef wxStaticBitmap::ScaleMode ScaleMode; }
46
+ spec.add_header_code %Q{typedef wxStaticBitmap::ScaleMode ScaleMode; }
47
+ defmod.items << def_genstatbmp
48
+ defmod
49
+ end
50
+
23
51
  end # class StaticBitmap
24
52
 
25
53
  end # class Director
@@ -16,11 +16,10 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  super
19
- if Config.instance.wx_port == :wxqt || Config.platform == :macosx
20
- # missing from implementation currently
21
- spec.ignore 'wxStaticBox::wxStaticBox(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)',
22
- 'wxStaticBox::Create(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)'
23
- end
19
+ # missing from implementation currently for WXOSX (and WXQT)
20
+ spec.ignore_unless(Config::AnyOf.new(*%w[WXMSW WXGTK]),
21
+ 'wxStaticBox::wxStaticBox(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)',
22
+ 'wxStaticBox::Create(wxWindow *, wxWindowID, wxWindow *, const wxPoint &, const wxSize &, long, const wxString &)')
24
23
  end
25
24
  end # class StaticBox
26
25