wxruby3 0.9.0.pre.rc.3 → 0.9.0

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 (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/mkrf_conf_srcgem.rb +4 -1
  4. data/ext/wxruby3/include/wxruby-Config.h +953 -0
  5. data/ext/wxruby3/include/wxruby-ScaledDC.h +4 -1
  6. data/ext/wxruby3/include/wxruby-runtime.h +10 -1
  7. data/ext/wxruby3/swig/RubyStockObjects.i +5 -3
  8. data/ext/wxruby3/swig/common.i +8 -3
  9. data/ext/wxruby3/swig/mark_free_impl.i +6 -4
  10. data/ext/wxruby3/swig/memory_management.i +5 -3
  11. data/ext/wxruby3/swig/typedefs.i +5 -3
  12. data/ext/wxruby3/swig/wx.i +5 -0
  13. data/ext/wxruby3/swig/wx.rc +4 -2
  14. data/lib/wx/accessors.rb +10 -2
  15. data/lib/wx/aui/auifloatframe.rb +20 -0
  16. data/lib/wx/aui/auimanager.rb +3 -0
  17. data/lib/wx/aui/auinotebook.rb +17 -0
  18. data/lib/wx/aui/require.rb +5 -1
  19. data/lib/wx/aui.rb +4 -1
  20. data/lib/wx/core/acceleratortable.rb +8 -0
  21. data/lib/wx/core/animation.rb +8 -0
  22. data/lib/wx/core/app.rb +8 -0
  23. data/lib/wx/core/array_ext.rb +7 -0
  24. data/lib/wx/core/art_locator.rb +7 -0
  25. data/lib/wx/core/artprovider.rb +9 -0
  26. data/lib/wx/core/bitmap.rb +16 -4
  27. data/lib/wx/core/bitmap_combobox.rb +7 -0
  28. data/lib/wx/core/brush.rb +7 -0
  29. data/lib/wx/core/busycursor.rb +9 -0
  30. data/lib/wx/core/choice.rb +7 -0
  31. data/lib/wx/core/choicedlg.rb +7 -0
  32. data/lib/wx/core/clientdc.rb +9 -0
  33. data/lib/wx/core/clipboard.rb +8 -0
  34. data/lib/wx/core/collapsible_pane.rb +8 -1
  35. data/lib/wx/core/colour.rb +8 -0
  36. data/lib/wx/core/combo_ctrl.rb +110 -0
  37. data/lib/wx/core/combobox.rb +7 -0
  38. data/lib/wx/core/config.rb +303 -0
  39. data/lib/wx/core/controlwithitems.rb +12 -1
  40. data/lib/wx/core/cursor.rb +14 -4
  41. data/lib/wx/core/data_object.rb +7 -0
  42. data/lib/wx/core/dataformat.rb +9 -0
  43. data/lib/wx/core/datetime.rb +14 -0
  44. data/lib/wx/core/dc.rb +7 -0
  45. data/lib/wx/core/dialog.rb +18 -1
  46. data/lib/wx/core/enum.rb +7 -0
  47. data/lib/wx/core/event.rb +7 -0
  48. data/lib/wx/core/event_blocker.rb +7 -0
  49. data/lib/wx/core/event_loop.rb +7 -0
  50. data/lib/wx/core/evthandler.rb +8 -0
  51. data/lib/wx/core/ext.rb +7 -0
  52. data/lib/wx/core/file_dialog.rb +23 -0
  53. data/lib/wx/core/find_replace_dialog.rb +7 -0
  54. data/lib/wx/core/functions.rb +8 -0
  55. data/lib/wx/core/gauge.rb +10 -1
  56. data/lib/wx/core/genericdirctrl.rb +9 -0
  57. data/lib/wx/core/hboxsizer.rb +16 -0
  58. data/lib/wx/core/helpcontroller.rb +8 -0
  59. data/lib/wx/core/helpcontrollerhelpprovider.rb +9 -0
  60. data/lib/wx/core/helpprovider.rb +10 -1
  61. data/lib/wx/core/icon.rb +17 -6
  62. data/lib/wx/core/id_helper.rb +7 -0
  63. data/lib/wx/core/image.rb +16 -4
  64. data/lib/wx/core/imagelist.rb +8 -1
  65. data/lib/wx/core/listbox.rb +7 -0
  66. data/lib/wx/core/listctrl.rb +9 -0
  67. data/lib/wx/core/locale.rb +8 -0
  68. data/lib/wx/core/log.rb +24 -0
  69. data/lib/wx/core/menu.rb +9 -0
  70. data/lib/wx/core/menu_bar.rb +7 -0
  71. data/lib/wx/core/menuitem.rb +9 -0
  72. data/lib/wx/core/notebook.rb +9 -0
  73. data/lib/wx/core/object.rb +9 -0
  74. data/lib/wx/core/paintdc.rb +7 -0
  75. data/lib/wx/core/pen.rb +7 -0
  76. data/lib/wx/core/pen_info.rb +7 -0
  77. data/lib/wx/core/platform_info.rb +7 -0
  78. data/lib/wx/core/point.rb +8 -0
  79. data/lib/wx/core/real_point.rb +8 -0
  80. data/lib/wx/core/rect.rb +9 -0
  81. data/lib/wx/core/region_iterator.rb +7 -0
  82. data/lib/wx/core/simplehelpprovider.rb +9 -0
  83. data/lib/wx/core/size.rb +8 -0
  84. data/lib/wx/core/sizer.rb +9 -0
  85. data/lib/wx/core/splash_screen.rb +22 -2
  86. data/lib/wx/core/text_entry.rb +7 -0
  87. data/lib/wx/core/textctrl.rb +86 -5
  88. data/lib/wx/core/timer.rb +9 -0
  89. data/lib/wx/core/toolbar.rb +9 -0
  90. data/lib/wx/core/toolbartool.rb +8 -0
  91. data/lib/wx/core/treectrl.rb +9 -0
  92. data/lib/wx/core/v_list_box.rb +7 -0
  93. data/lib/wx/core/validator.rb +7 -0
  94. data/lib/wx/core/variant.rb +7 -0
  95. data/lib/wx/core/vboxsizer.rb +16 -0
  96. data/lib/wx/core/window.rb +8 -0
  97. data/lib/wx/core/window_update_locker.rb +9 -0
  98. data/lib/wx/core/xmlresource.rb +8 -0
  99. data/lib/wx/core.rb +4 -1
  100. data/lib/wx/doc/app.rb +7 -1
  101. data/lib/wx/doc/array_ext.rb +6 -0
  102. data/lib/wx/doc/art_locator.rb +7 -0
  103. data/lib/wx/doc/aui/auimanager.rb +6 -0
  104. data/lib/wx/doc/aui/auinotebook.rb +6 -0
  105. data/lib/wx/doc/bitmap.rb +12 -4
  106. data/lib/wx/doc/brush.rb +6 -0
  107. data/lib/wx/doc/busy_info.rb +6 -0
  108. data/lib/wx/doc/client_dc.rb +6 -0
  109. data/lib/wx/doc/clipboard.rb +6 -0
  110. data/lib/wx/doc/colour_dialog.rb +6 -0
  111. data/lib/wx/doc/config.rb +190 -0
  112. data/lib/wx/doc/const.rb +7 -0
  113. data/lib/wx/doc/controlwithitems.rb +6 -0
  114. data/lib/wx/doc/core.rb +6 -0
  115. data/lib/wx/doc/cursor.rb +13 -5
  116. data/lib/wx/doc/data_object.rb +6 -0
  117. data/lib/wx/doc/datetime.rb +16 -0
  118. data/lib/wx/doc/dc.rb +6 -0
  119. data/lib/wx/doc/enum.rb +8 -1
  120. data/lib/wx/doc/event.rb +12 -0
  121. data/lib/wx/doc/event_blocker.rb +6 -0
  122. data/lib/wx/doc/event_loop.rb +6 -0
  123. data/lib/wx/doc/events.rb +6 -0
  124. data/lib/wx/doc/evthandler.rb +8 -0
  125. data/lib/wx/doc/extra/01_packages.md +52 -51
  126. data/lib/wx/doc/extra/05_event-handling.md +37 -12
  127. data/lib/wx/doc/extra/06_geometry.md +5 -5
  128. data/lib/wx/doc/extra/07_colour_and_font.md +2 -2
  129. data/lib/wx/doc/extra/09_exceptions.md +1 -1
  130. data/lib/wx/doc/extra/10_art.md +18 -12
  131. data/lib/wx/doc/extra/11_drawing_and_dc.md +4 -4
  132. data/lib/wx/doc/font.rb +6 -0
  133. data/lib/wx/doc/font_data.rb +16 -0
  134. data/lib/wx/doc/functions.rb +9 -1
  135. data/lib/wx/doc/gc_dc.rb +6 -0
  136. data/lib/wx/doc/gdi_common.rb +8 -1
  137. data/lib/wx/doc/graphics_context.rb +59 -39
  138. data/lib/wx/doc/grid/grid.rb +16 -1
  139. data/lib/wx/doc/hboxsizer.rb +33 -0
  140. data/lib/wx/doc/help_controller.rb +6 -0
  141. data/lib/wx/doc/html/html_help_controller.rb +6 -0
  142. data/lib/wx/doc/icon.rb +13 -5
  143. data/lib/wx/doc/id_helper.rb +6 -0
  144. data/lib/wx/doc/image.rb +12 -4
  145. data/lib/wx/doc/list_ctrl.rb +6 -0
  146. data/lib/wx/doc/log.rb +17 -0
  147. data/lib/wx/doc/memory_dc.rb +6 -0
  148. data/lib/wx/doc/mirror_dc.rb +6 -0
  149. data/lib/wx/doc/pen.rb +6 -0
  150. data/lib/wx/doc/pg/events.rb +6 -0
  151. data/lib/wx/doc/pg/pg_property.rb +17 -0
  152. data/lib/wx/doc/pg/pgeditor.rb +6 -0
  153. data/lib/wx/doc/pg/property_grid.rb +6 -0
  154. data/lib/wx/doc/pg/property_grid_interface.rb +6 -0
  155. data/lib/wx/doc/progress_dialog.rb +6 -0
  156. data/lib/wx/doc/prt/page_setup_dialog.rb +6 -0
  157. data/lib/wx/doc/prt/print_data.rb +6 -0
  158. data/lib/wx/doc/prt/print_dialog.rb +6 -0
  159. data/lib/wx/doc/prt/printer.rb +6 -0
  160. data/lib/wx/doc/prt/printer_dc.rb +6 -0
  161. data/lib/wx/doc/radio_box.rb +6 -0
  162. data/lib/wx/doc/rbn/ribbon_bar.rb +6 -0
  163. data/lib/wx/doc/rbn/ribbon_button_bar.rb +6 -0
  164. data/lib/wx/doc/rbn/ribbon_gallery.rb +6 -0
  165. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +6 -0
  166. data/lib/wx/doc/region_iterator.rb +6 -0
  167. data/lib/wx/doc/rtc/richtext_buffer.rb +28 -0
  168. data/lib/wx/doc/rtc/richtext_formatting_dialog.rb +68 -0
  169. data/lib/wx/doc/rtc/richtext_printing.rb +6 -0
  170. data/lib/wx/doc/rtc/richtext_style_sheet.rb +20 -0
  171. data/lib/wx/doc/scaled_dc.rb +6 -0
  172. data/lib/wx/doc/screen_dc.rb +6 -0
  173. data/lib/wx/doc/stock_objects.rb +6 -0
  174. data/lib/wx/doc/stream.rb +6 -0
  175. data/lib/wx/doc/svg_file_dc.rb +6 -0
  176. data/lib/wx/doc/system_settings.rb +6 -0
  177. data/lib/wx/doc/text_validator.rb +6 -0
  178. data/lib/wx/doc/textctrl.rb +89 -0
  179. data/lib/wx/doc/tree_event.rb +20 -0
  180. data/lib/wx/doc/treebook.rb +6 -0
  181. data/lib/wx/doc/v_list_box.rb +6 -0
  182. data/lib/wx/doc/variant.rb +6 -0
  183. data/lib/wx/doc/vboxsizer.rb +33 -0
  184. data/lib/wx/doc/window.rb +6 -0
  185. data/lib/wx/doc/window_disabler.rb +6 -0
  186. data/lib/wx/doc/xml_resource.rb +8 -0
  187. data/lib/wx/global_const.rb +4 -1
  188. data/lib/wx/grid/grid.rb +23 -3
  189. data/lib/wx/grid/keyword_defs.rb +8 -1
  190. data/lib/wx/grid/require.rb +4 -1
  191. data/lib/wx/grid.rb +4 -1
  192. data/lib/wx/helpers.rb +8 -1
  193. data/lib/wx/html/htmlhelpcontroller.rb +29 -3
  194. data/lib/wx/html/htmlwindow.rb +23 -12
  195. data/lib/wx/html/keyword_defs.rb +8 -1
  196. data/lib/wx/html/require.rb +4 -1
  197. data/lib/wx/html/simple_html_listbox.rb +3 -0
  198. data/lib/wx/html.rb +4 -1
  199. data/lib/wx/keyword_ctors.rb +22 -3
  200. data/lib/wx/keyword_defs.rb +55 -3
  201. data/lib/wx/pg/events.rb +4 -1
  202. data/lib/wx/pg/keyword_defs.rb +8 -1
  203. data/lib/wx/pg/pg_editor.rb +3 -0
  204. data/lib/wx/pg/pg_properties.rb +4 -1
  205. data/lib/wx/pg/pg_property.rb +18 -5
  206. data/lib/wx/pg/property_grid.rb +4 -1
  207. data/lib/wx/pg/property_grid_interface.rb +3 -0
  208. data/lib/wx/pg/require.rb +4 -1
  209. data/lib/wx/pg.rb +4 -1
  210. data/lib/wx/prt/keyword_defs.rb +8 -1
  211. data/lib/wx/prt/page_setup_dialog.rb +3 -0
  212. data/lib/wx/prt/previewframe.rb +5 -0
  213. data/lib/wx/prt/require.rb +4 -1
  214. data/lib/wx/prt.rb +4 -1
  215. data/lib/wx/rbn/events.rb +4 -1
  216. data/lib/wx/rbn/keyword_defs.rb +8 -1
  217. data/lib/wx/rbn/require.rb +5 -1
  218. data/lib/wx/rbn/ribbon_art_provider.rb +3 -1
  219. data/lib/wx/rbn/ribbon_bar.rb +3 -0
  220. data/lib/wx/rbn/ribbon_button_bar.rb +3 -0
  221. data/lib/wx/rbn/ribbon_control.rb +3 -0
  222. data/lib/wx/rbn/ribbon_gallery.rb +10 -0
  223. data/lib/wx/rbn/ribbon_page.rb +3 -0
  224. data/lib/wx/rbn/ribbon_panel.rb +3 -0
  225. data/lib/wx/rbn/ribbon_tool_bar.rb +3 -0
  226. data/lib/wx/rbn.rb +4 -1
  227. data/lib/wx/rtc/ext.rb +4 -1
  228. data/lib/wx/rtc/keyword_defs.rb +18 -7
  229. data/lib/wx/rtc/require.rb +8 -1
  230. data/lib/wx/rtc/richtext_buffer.rb +36 -0
  231. data/lib/wx/rtc/richtext_formatting_dialog.rb +88 -0
  232. data/lib/wx/rtc/richtext_style_organiser_dialog.rb +46 -0
  233. data/lib/wx/rtc/symbol_picker_dialog.rb +47 -0
  234. data/lib/wx/rtc.rb +5 -1
  235. data/lib/wx/stc/keyword_defs.rb +8 -1
  236. data/lib/wx/stc/require.rb +4 -1
  237. data/lib/wx/stc.rb +4 -1
  238. data/lib/wx/version.rb +5 -1
  239. data/lib/wx/wxruby/base.rb +4 -1
  240. data/lib/wx/wxruby/cmd/sampler.rb +4 -1
  241. data/lib/wx/wxruby/cmd/test.rb +4 -1
  242. data/lib/wx.rb +4 -1
  243. data/rakelib/build.rake +4 -1
  244. data/rakelib/build.rb +4 -1
  245. data/rakelib/config.rake +4 -1
  246. data/rakelib/configure.rb +4 -1
  247. data/rakelib/doc.rake +4 -1
  248. data/rakelib/doc.rb +5 -1
  249. data/rakelib/install.rake +4 -1
  250. data/rakelib/install.rb +4 -1
  251. data/rakelib/lib/config/cygwin.rb +4 -1
  252. data/rakelib/lib/config/linux.rb +4 -1
  253. data/rakelib/lib/config/macosx.rb +5 -2
  254. data/rakelib/lib/config/mingw.rb +4 -1
  255. data/rakelib/lib/config/netbsd.rb +4 -1
  256. data/rakelib/lib/config/unixish.rb +10 -7
  257. data/rakelib/lib/config.rb +7 -2
  258. data/rakelib/lib/core/include/enum.inc +4 -1
  259. data/rakelib/lib/core/include/funcall.inc +10 -64
  260. data/rakelib/lib/core/include/init.inc +3 -0
  261. data/rakelib/lib/core/mapping.rb +26 -46
  262. data/rakelib/lib/core/package.rb +17 -3
  263. data/rakelib/lib/core/parameter.rb +4 -1
  264. data/rakelib/lib/core/spec.rb +14 -8
  265. data/rakelib/lib/core/spec_helper.rb +32 -9
  266. data/rakelib/lib/director/about_dialog_info.rb +4 -1
  267. data/rakelib/lib/director/accelerator.rb +7 -2
  268. data/rakelib/lib/director/animation.rb +4 -1
  269. data/rakelib/lib/director/animation_ctrl.rb +4 -1
  270. data/rakelib/lib/director/any_button.rb +5 -2
  271. data/rakelib/lib/director/app.rb +16 -2
  272. data/rakelib/lib/director/app_traits.rb +71 -0
  273. data/rakelib/lib/director/art_provider.rb +4 -1
  274. data/rakelib/lib/director/aui_dock_art.rb +4 -1
  275. data/rakelib/lib/director/aui_floating_frame.rb +4 -1
  276. data/rakelib/lib/director/aui_manager.rb +12 -5
  277. data/rakelib/lib/director/aui_manager_event.rb +4 -1
  278. data/rakelib/lib/director/aui_mdi_child_frame.rb +25 -1
  279. data/rakelib/lib/director/aui_mdi_client_window.rb +4 -1
  280. data/rakelib/lib/director/aui_mdi_parent_frame.rb +4 -1
  281. data/rakelib/lib/director/aui_notebook.rb +12 -1
  282. data/rakelib/lib/director/aui_notebook_event.rb +4 -1
  283. data/rakelib/lib/director/aui_pane_info.rb +4 -1
  284. data/rakelib/lib/director/aui_tab_art.rb +52 -1
  285. data/rakelib/lib/director/aui_tab_ctrl.rb +14 -1
  286. data/rakelib/lib/director/aui_toolbar.rb +6 -3
  287. data/rakelib/lib/director/aui_toolbar_art.rb +52 -1
  288. data/rakelib/lib/director/aui_toolbar_event.rb +4 -1
  289. data/rakelib/lib/director/aui_toolbar_item.rb +4 -1
  290. data/rakelib/lib/director/banner_window.rb +26 -0
  291. data/rakelib/lib/director/bitmap.rb +11 -2
  292. data/rakelib/lib/director/bitmap_combobox.rb +5 -1
  293. data/rakelib/lib/director/book_ctrls.rb +13 -3
  294. data/rakelib/lib/director/brush.rb +4 -1
  295. data/rakelib/lib/director/busy_info.rb +4 -1
  296. data/rakelib/lib/director/button.rb +4 -1
  297. data/rakelib/lib/director/calendar_ctrl.rb +4 -1
  298. data/rakelib/lib/director/calendar_date_attr.rb +4 -1
  299. data/rakelib/lib/director/caret.rb +4 -1
  300. data/rakelib/lib/director/check_listbox.rb +4 -1
  301. data/rakelib/lib/director/choice.rb +4 -1
  302. data/rakelib/lib/director/clipboard.rb +4 -1
  303. data/rakelib/lib/director/collapsible_pane.rb +4 -1
  304. data/rakelib/lib/director/collapsible_pane_event.rb +4 -1
  305. data/rakelib/lib/director/colour.rb +9 -1
  306. data/rakelib/lib/director/colour_picker_ctrl.rb +4 -1
  307. data/rakelib/lib/director/combobox.rb +4 -1
  308. data/rakelib/lib/director/comboctrl.rb +94 -0
  309. data/rakelib/lib/director/config_base.rb +135 -0
  310. data/rakelib/lib/director/context_help_button.rb +4 -1
  311. data/rakelib/lib/director/control.rb +4 -1
  312. data/rakelib/lib/director/ctrl_with_items.rb +5 -1
  313. data/rakelib/lib/director/cursor.rb +6 -2
  314. data/rakelib/lib/director/data_format.rb +4 -1
  315. data/rakelib/lib/director/data_object.rb +4 -1
  316. data/rakelib/lib/director/data_object_simple_base.rb +4 -1
  317. data/rakelib/lib/director/date_event.rb +9 -2
  318. data/rakelib/lib/director/date_picker_ctrl.rb +4 -1
  319. data/rakelib/lib/director/dc.rb +19 -1
  320. data/rakelib/lib/director/defs.rb +4 -1
  321. data/rakelib/lib/director/derived_dc.rb +27 -20
  322. data/rakelib/lib/director/dialog.rb +24 -3
  323. data/rakelib/lib/director/dir_filterlist_ctrl.rb +4 -1
  324. data/rakelib/lib/director/dir_picker_ctrl.rb +4 -1
  325. data/rakelib/lib/director/drag_image.rb +9 -2
  326. data/rakelib/lib/director/dragdrop.rb +4 -1
  327. data/rakelib/lib/director/editable_listbox.rb +4 -1
  328. data/rakelib/lib/director/event.rb +11 -3
  329. data/rakelib/lib/director/event_blocker.rb +4 -1
  330. data/rakelib/lib/director/event_filter.rb +4 -1
  331. data/rakelib/lib/director/event_handler.rb +28 -11
  332. data/rakelib/lib/director/event_loop.rb +4 -1
  333. data/rakelib/lib/director/events.rb +5 -2
  334. data/rakelib/lib/director/file_dialog_custom_control.rb +28 -0
  335. data/rakelib/lib/director/file_dialog_customize_hook.rb +28 -0
  336. data/rakelib/lib/director/file_picker_ctrl.rb +4 -1
  337. data/rakelib/lib/director/file_system.rb +45 -0
  338. data/rakelib/lib/director/find_dialog_event.rb +4 -1
  339. data/rakelib/lib/director/find_replace_data.rb +4 -1
  340. data/rakelib/lib/director/font.rb +7 -3
  341. data/rakelib/lib/director/font_data.rb +9 -1
  342. data/rakelib/lib/director/font_picker_ctrl.rb +4 -1
  343. data/rakelib/lib/director/frame.rb +45 -33
  344. data/rakelib/lib/director/fs_file.rb +52 -1
  345. data/rakelib/lib/director/functions.rb +11 -5
  346. data/rakelib/lib/director/gdi_object.rb +4 -1
  347. data/rakelib/lib/director/gdicommon.rb +14 -9
  348. data/rakelib/lib/director/generic_dirctrl.rb +4 -1
  349. data/rakelib/lib/director/graphics_context.rb +113 -18
  350. data/rakelib/lib/director/graphics_object.rb +13 -2
  351. data/rakelib/lib/director/grid_cell_attr.rb +28 -4
  352. data/rakelib/lib/director/grid_cell_editor.rb +22 -5
  353. data/rakelib/lib/director/grid_cell_renderer.rb +16 -3
  354. data/rakelib/lib/director/grid_ctrl.rb +146 -5
  355. data/rakelib/lib/director/grid_range_select_event.rb +4 -1
  356. data/rakelib/lib/director/grid_table_base.rb +6 -1
  357. data/rakelib/lib/director/grid_table_message.rb +4 -1
  358. data/rakelib/lib/director/header_ctrl.rb +37 -0
  359. data/rakelib/lib/director/help_controller.rb +13 -6
  360. data/rakelib/lib/director/help_provider.rb +4 -1
  361. data/rakelib/lib/director/html_cell.rb +10 -3
  362. data/rakelib/lib/director/html_data_object.rb +4 -1
  363. data/rakelib/lib/director/html_easy_printing.rb +4 -1
  364. data/rakelib/lib/director/html_event.rb +4 -1
  365. data/rakelib/lib/director/html_help_data.rb +4 -1
  366. data/rakelib/lib/director/html_help_window.rb +30 -0
  367. data/rakelib/lib/director/html_listbox.rb +4 -1
  368. data/rakelib/lib/director/html_printout.rb +6 -1
  369. data/rakelib/lib/director/html_window.rb +10 -8
  370. data/rakelib/lib/director/hyperlink_ctrl.rb +32 -0
  371. data/rakelib/lib/director/hyperlink_event.rb +4 -1
  372. data/rakelib/lib/director/icon.rb +4 -1
  373. data/rakelib/lib/director/image.rb +26 -3
  374. data/rakelib/lib/director/image_list.rb +5 -1
  375. data/rakelib/lib/director/info_bar.rb +26 -0
  376. data/rakelib/lib/director/list_ctrl.rb +39 -7
  377. data/rakelib/lib/director/listbox.rb +4 -1
  378. data/rakelib/lib/director/locale.rb +7 -4
  379. data/rakelib/lib/director/log.rb +51 -6
  380. data/rakelib/lib/director/mdi_frame.rb +4 -1
  381. data/rakelib/lib/director/media_ctrl.rb +4 -1
  382. data/rakelib/lib/director/menu.rb +16 -3
  383. data/rakelib/lib/director/menu_bar.rb +13 -2
  384. data/rakelib/lib/director/menu_item.rb +6 -6
  385. data/rakelib/lib/director/mouse_state.rb +5 -2
  386. data/rakelib/lib/director/numeric_property_validator.rb +4 -1
  387. data/rakelib/lib/director/object.rb +5 -2
  388. data/rakelib/lib/director/page_setup_dialog.rb +4 -1
  389. data/rakelib/lib/director/palette.rb +54 -2
  390. data/rakelib/lib/director/panel.rb +4 -1
  391. data/rakelib/lib/director/pen.rb +5 -2
  392. data/rakelib/lib/director/pgarray_editor_dialog.rb +4 -1
  393. data/rakelib/lib/director/pgcell.rb +4 -1
  394. data/rakelib/lib/director/pgeditor.rb +4 -1
  395. data/rakelib/lib/director/pgmulti_button.rb +4 -1
  396. data/rakelib/lib/director/pgproperties.rb +4 -1
  397. data/rakelib/lib/director/pgproperty.rb +42 -3
  398. data/rakelib/lib/director/pgvalidation_info.rb +9 -1
  399. data/rakelib/lib/director/pickerbase.rb +4 -1
  400. data/rakelib/lib/director/platform_info.rb +9 -1
  401. data/rakelib/lib/director/popup_window.rb +14 -1
  402. data/rakelib/lib/director/preview_frame.rb +5 -2
  403. data/rakelib/lib/director/print_data.rb +4 -1
  404. data/rakelib/lib/director/print_dialog.rb +4 -1
  405. data/rakelib/lib/director/printer.rb +14 -6
  406. data/rakelib/lib/director/property_grid.rb +30 -1
  407. data/rakelib/lib/director/property_grid_event.rb +11 -1
  408. data/rakelib/lib/director/property_grid_interface.rb +20 -6
  409. data/rakelib/lib/director/property_grid_manager.rb +4 -1
  410. data/rakelib/lib/director/property_grid_page.rb +4 -1
  411. data/rakelib/lib/director/property_grid_page_state.rb +4 -1
  412. data/rakelib/lib/director/radio_box.rb +4 -1
  413. data/rakelib/lib/director/rearrange_list.rb +36 -0
  414. data/rakelib/lib/director/region.rb +5 -1
  415. data/rakelib/lib/director/region_iterator.rb +4 -1
  416. data/rakelib/lib/director/ribbon_art_provider.rb +9 -1
  417. data/rakelib/lib/director/ribbon_bar.rb +4 -1
  418. data/rakelib/lib/director/ribbon_bar_event.rb +4 -1
  419. data/rakelib/lib/director/ribbon_button_bar.rb +4 -1
  420. data/rakelib/lib/director/ribbon_button_bar_event.rb +4 -1
  421. data/rakelib/lib/director/ribbon_ctrl.rb +4 -1
  422. data/rakelib/lib/director/ribbon_gallery.rb +8 -3
  423. data/rakelib/lib/director/ribbon_gallery_event.rb +4 -1
  424. data/rakelib/lib/director/ribbon_page.rb +4 -1
  425. data/rakelib/lib/director/ribbon_panel.rb +4 -1
  426. data/rakelib/lib/director/ribbon_panel_event.rb +4 -1
  427. data/rakelib/lib/director/ribbon_tool_bar.rb +4 -1
  428. data/rakelib/lib/director/ribbon_tool_bar_event.rb +4 -1
  429. data/rakelib/lib/director/richtext_box.rb +61 -0
  430. data/rakelib/lib/director/richtext_buffer.rb +219 -22
  431. data/rakelib/lib/director/richtext_buffer_data_object.rb +4 -1
  432. data/rakelib/lib/director/richtext_composite_object.rb +174 -0
  433. data/rakelib/lib/director/richtext_ctrl.rb +157 -4
  434. data/rakelib/lib/director/richtext_event.rb +4 -1
  435. data/rakelib/lib/director/richtext_file_handler.rb +13 -1
  436. data/rakelib/lib/director/richtext_formatting_dialog.rb +44 -0
  437. data/rakelib/lib/director/richtext_header_footer_data.rb +4 -1
  438. data/rakelib/lib/director/richtext_image.rb +56 -0
  439. data/rakelib/lib/director/richtext_object.rb +272 -0
  440. data/rakelib/lib/director/richtext_paragraph_layout_box.rb +178 -0
  441. data/rakelib/lib/director/richtext_printing.rb +4 -1
  442. data/rakelib/lib/director/richtext_style_listbox.rb +37 -0
  443. data/rakelib/lib/director/richtext_style_organiser_dialog.rb +28 -0
  444. data/rakelib/lib/director/sash_layout_event.rb +4 -1
  445. data/rakelib/lib/director/sash_layout_window.rb +4 -1
  446. data/rakelib/lib/director/sash_window.rb +4 -1
  447. data/rakelib/lib/director/scroll_bar.rb +4 -1
  448. data/rakelib/lib/director/scrolled_t.rb +7 -4
  449. data/rakelib/lib/director/searchctrl.rb +4 -1
  450. data/rakelib/lib/director/sizer.rb +4 -1
  451. data/rakelib/lib/director/sizer_item.rb +9 -3
  452. data/rakelib/lib/director/slider.rb +4 -1
  453. data/rakelib/lib/director/splash_screen.rb +4 -1
  454. data/rakelib/lib/director/splitter_event.rb +4 -1
  455. data/rakelib/lib/director/splitter_window.rb +4 -1
  456. data/rakelib/lib/director/static_bitmap.rb +4 -1
  457. data/rakelib/lib/director/static_box.rb +5 -2
  458. data/rakelib/lib/director/status_bar.rb +5 -1
  459. data/rakelib/lib/director/styled_text_ctrl.rb +14 -2
  460. data/rakelib/lib/director/styled_text_event.rb +4 -1
  461. data/rakelib/lib/director/system_options.rb +4 -1
  462. data/rakelib/lib/director/system_settings.rb +4 -1
  463. data/rakelib/lib/director/task_bar_icon.rb +4 -1
  464. data/rakelib/lib/director/text_attr.rb +5 -2
  465. data/rakelib/lib/director/text_entry.rb +4 -1
  466. data/rakelib/lib/director/text_validator.rb +6 -1
  467. data/rakelib/lib/director/textctrl.rb +32 -3
  468. data/rakelib/lib/director/time_picker_ctrl.rb +4 -1
  469. data/rakelib/lib/director/timer.rb +4 -1
  470. data/rakelib/lib/director/tip_provider.rb +4 -1
  471. data/rakelib/lib/director/toggle_button.rb +4 -1
  472. data/rakelib/lib/director/tool_bar.rb +20 -1
  473. data/rakelib/lib/director/tool_tip.rb +5 -2
  474. data/rakelib/lib/director/top_level_window.rb +58 -51
  475. data/rakelib/lib/director/tree_ctrl.rb +5 -2
  476. data/rakelib/lib/director/tree_event.rb +28 -10
  477. data/rakelib/lib/director/uiaction_simulator.rb +4 -1
  478. data/rakelib/lib/director/utils.rb +9 -1
  479. data/rakelib/lib/director/validator.rb +4 -1
  480. data/rakelib/lib/director/variant.rb +5 -2
  481. data/rakelib/lib/director/vlistbox.rb +4 -1
  482. data/rakelib/lib/director/vscrolled_window.rb +4 -1
  483. data/rakelib/lib/director/window.rb +81 -82
  484. data/rakelib/lib/director/window_disabler.rb +4 -1
  485. data/rakelib/lib/director/with_images.rb +5 -2
  486. data/rakelib/lib/director/wizard_page.rb +4 -1
  487. data/rakelib/lib/director/xml_node.rb +4 -1
  488. data/rakelib/lib/director/xml_resource.rb +4 -1
  489. data/rakelib/lib/director.rb +27 -28
  490. data/rakelib/lib/ext/enum_chain.rb +4 -1
  491. data/rakelib/lib/extractor/class.rb +8 -6
  492. data/rakelib/lib/extractor/enum.rb +15 -2
  493. data/rakelib/lib/extractor/function.rb +12 -4
  494. data/rakelib/lib/extractor/module.rb +4 -1
  495. data/rakelib/lib/extractor/variable.rb +4 -1
  496. data/rakelib/lib/extractor.rb +7 -2
  497. data/rakelib/lib/generate/analyzer.rb +31 -21
  498. data/rakelib/lib/generate/base.rb +4 -1
  499. data/rakelib/lib/generate/doc/grid_cell_attr.yaml +21 -0
  500. data/rakelib/lib/generate/doc/grid_ctrl.yaml +25 -0
  501. data/rakelib/lib/generate/doc/html_cell.yaml +11 -0
  502. data/rakelib/lib/generate/doc/html_help_controller.yaml +23 -0
  503. data/rakelib/lib/generate/doc/html_help_window.yaml +21 -0
  504. data/rakelib/lib/generate/doc/html_window.yaml +47 -0
  505. data/rakelib/lib/generate/doc/pg_editor.yaml +11 -0
  506. data/rakelib/lib/generate/doc/pg_multi_button.yaml +78 -0
  507. data/rakelib/lib/generate/doc/pg_properties.yaml +244 -0
  508. data/rakelib/lib/generate/doc/pg_property.yaml +188 -0
  509. data/rakelib/lib/generate/doc/property_grid.yaml +23 -0
  510. data/rakelib/lib/generate/doc/property_grid_interface.yaml +30 -0
  511. data/rakelib/lib/generate/doc/property_grid_manager.yaml +40 -0
  512. data/rakelib/lib/generate/doc/rich_text_html_handler.yaml +11 -0
  513. data/rakelib/lib/generate/doc/styled_text_ctrl.yaml +18 -0
  514. data/rakelib/lib/generate/doc/symbol_picker_dialog.yaml +40 -0
  515. data/rakelib/lib/generate/doc.rb +19 -3
  516. data/rakelib/lib/generate/interface.rb +79 -110
  517. data/rakelib/lib/generate/rakedep.rb +4 -1
  518. data/rakelib/lib/specs/interfaces.rb +45 -20
  519. data/rakelib/lib/streams.rb +5 -1
  520. data/rakelib/lib/swig_runner.rb +34 -22
  521. data/rakelib/lib/typemap/array_int_selections.rb +4 -1
  522. data/rakelib/lib/typemap/common.rb +57 -2
  523. data/rakelib/lib/typemap/config.rb +55 -0
  524. data/rakelib/lib/typemap/data_format.rb +4 -1
  525. data/rakelib/lib/typemap/data_object_data.rb +4 -1
  526. data/rakelib/lib/typemap/datetime.rb +8 -1
  527. data/rakelib/lib/typemap/grid_client_data.rb +4 -1
  528. data/rakelib/lib/typemap/grid_coords.rb +37 -7
  529. data/rakelib/lib/typemap/html_cell.rb +4 -1
  530. data/rakelib/lib/typemap/io_streams.rb +4 -1
  531. data/rakelib/lib/typemap/pgcell.rb +4 -1
  532. data/rakelib/lib/typemap/pgeditor.rb +4 -1
  533. data/rakelib/lib/typemap/pgprop_arg.rb +4 -1
  534. data/rakelib/lib/typemap/pgproperty.rb +4 -1
  535. data/rakelib/lib/typemap/points_list.rb +4 -1
  536. data/rakelib/lib/typemap/richtext.rb +185 -11
  537. data/rakelib/lib/typemap/tree_itemid.rb +26 -1
  538. data/rakelib/lib/util/string.rb +4 -1
  539. data/rakelib/prepost.rake +4 -1
  540. data/rakelib/prepost.rb +4 -1
  541. data/rakelib/run.rake +4 -1
  542. data/samples/aui/aui.rb +8 -3
  543. data/samples/bigdemo/bigdemo.rb +9 -2
  544. data/samples/bigdemo/run.rb +9 -2
  545. data/samples/bigdemo/utils.rb +9 -1
  546. data/samples/calendar/calendar.rb +9 -4
  547. data/samples/caret/caret.rb +8 -3
  548. data/samples/controls/books.rb +8 -2
  549. data/samples/controls/controls.rb +33 -77
  550. data/samples/controls/get_item_sample.rb +8 -2
  551. data/samples/controls/htlbox.rb +10 -3
  552. data/samples/dialogs/dialogs.rb +9 -4
  553. data/samples/dialogs/wizard.rb +8 -3
  554. data/samples/dragdrop/dragdrop.rb +8 -3
  555. data/samples/drawing/bitmap.rb +8 -3
  556. data/samples/drawing/bitmap_image.rb +8 -3
  557. data/samples/drawing/graphics_drawing.rb +44 -33
  558. data/samples/drawing/image_prt.rb +8 -2
  559. data/samples/drawing/maths_images.rb +8 -3
  560. data/samples/drawing/rmagic_bitmap_image.rb +8 -3
  561. data/samples/etc/choice.rb +8 -3
  562. data/samples/etc/miniframe.rb +8 -3
  563. data/samples/etc/sash.rb +8 -3
  564. data/samples/etc/scrollwin.rb +8 -3
  565. data/samples/etc/system_settings.rb +8 -3
  566. data/samples/event/activation.rb +8 -3
  567. data/samples/event/event.rb +8 -3
  568. data/samples/event/threaded.rb +8 -3
  569. data/samples/event/update_ui_event.rb +8 -3
  570. data/samples/grid/grid.rb +9 -3
  571. data/samples/grid/gridtablebase.rb +8 -3
  572. data/samples/html/html.rb +8 -3
  573. data/samples/mdi/mdi.rb +8 -3
  574. data/samples/minimal/minimal.rb +8 -3
  575. data/samples/minimal/nothing.rb +8 -3
  576. data/samples/printing/printing.rb +8 -3
  577. data/samples/printing/printing2.rb +8 -2
  578. data/samples/propgrid/propgrid.rb +4 -1
  579. data/samples/propgrid/propgrid_minimal.rb +4 -2
  580. data/samples/propgrid/sample_props.rb +4 -1
  581. data/samples/ribbon/ribbon.rb +4 -1
  582. data/samples/sampler/editor.rb +4 -1
  583. data/samples/sampler/ext.rb +4 -1
  584. data/samples/sampler/sample.rb +13 -4
  585. data/samples/sampler/stc_editor.rb +4 -1
  586. data/samples/sampler/txt_editor.rb +4 -1
  587. data/samples/sampler.rb +11 -3
  588. data/samples/splash/splash.rb +4 -2
  589. data/samples/text/art/richtext/alignleft.xpm +24 -0
  590. data/samples/text/art/richtext/alignright.xpm +24 -0
  591. data/samples/text/art/richtext/bold.xpm +24 -0
  592. data/samples/text/art/richtext/centre.xpm +24 -0
  593. data/samples/text/art/richtext/copy.xpm +45 -0
  594. data/samples/text/art/richtext/cut.xpm +47 -0
  595. data/samples/text/art/richtext/font.xpm +25 -0
  596. data/samples/text/art/richtext/idea.xpm +47 -0
  597. data/samples/text/art/richtext/indentless.xpm +25 -0
  598. data/samples/text/art/richtext/indentmore.xpm +25 -0
  599. data/samples/text/art/richtext/italic.xpm +25 -0
  600. data/samples/text/art/richtext/open.xpm +58 -0
  601. data/samples/text/art/richtext/paste.xpm +47 -0
  602. data/samples/text/art/richtext/redo.xpm +59 -0
  603. data/samples/text/art/richtext/save.xpm +43 -0
  604. data/samples/text/art/richtext/smiley.xpm +42 -0
  605. data/samples/text/art/richtext/underline.xpm +25 -0
  606. data/samples/text/art/richtext/undo.xpm +59 -0
  607. data/samples/text/art/richtext/zebra.xpm +409 -0
  608. data/samples/text/rich_textctrl.rb +8 -3
  609. data/samples/text/richtext.rb +1824 -0
  610. data/samples/text/scintilla.rb +8 -3
  611. data/samples/text/textctrl.rb +21 -4
  612. data/samples/text/tn_richtext.png +0 -0
  613. data/samples/text/unicode.rb +9 -4
  614. data/samples/treectrl/treectrl.rb +10 -5
  615. data/samples/xrc/custom_xrc_sample.rb +8 -3
  616. data/samples/xrc/xrc_sample.rb +8 -3
  617. data/tests/art/test_art/bitmap/wxruby-128x128.png +0 -0
  618. data/tests/art/test_art/bitmap/wxruby-256x256.png +0 -0
  619. data/tests/art/test_art/bitmap/wxruby-64x64.png +0 -0
  620. data/tests/lib/item_container_tests.rb +3 -0
  621. data/tests/lib/text_entry_tests.rb +3 -0
  622. data/tests/lib/wxapp_runner.rb +3 -0
  623. data/tests/lib/wxframe_runner.rb +81 -3
  624. data/tests/test_app_event_filter.rb +3 -0
  625. data/tests/test_app_traits.rb +33 -0
  626. data/tests/test_art.rb +22 -0
  627. data/tests/test_art_provider.rb +3 -0
  628. data/tests/test_aui.rb +65 -0
  629. data/tests/test_basic.rb +5 -1
  630. data/tests/test_box_sizer.rb +5 -2
  631. data/tests/test_clipboard.rb +3 -0
  632. data/tests/test_config.rb +150 -0
  633. data/tests/test_dc.rb +3 -0
  634. data/tests/test_dialog.rb +3 -0
  635. data/tests/test_event_handling.rb +3 -0
  636. data/tests/test_events.rb +3 -0
  637. data/tests/test_ext_controls.rb +286 -3
  638. data/tests/test_file_dialog.rb +55 -0
  639. data/tests/test_font.rb +8 -5
  640. data/tests/test_gdi_object.rb +3 -0
  641. data/tests/test_geometry.rb +4 -0
  642. data/tests/test_grid_sizer.rb +7 -4
  643. data/tests/test_intl.rb +3 -0
  644. data/tests/test_item_data.rb +3 -0
  645. data/tests/test_list_ctrl.rb +4 -1
  646. data/tests/test_log.rb +63 -0
  647. data/tests/test_proof_check.rb +52 -0
  648. data/tests/test_richtext.rb +204 -0
  649. data/tests/test_std_controls.rb +45 -35
  650. data/tests/test_timer.rb +3 -0
  651. data/tests/test_variant.rb +3 -0
  652. data/tests/test_window.rb +10 -8
  653. data/tests/testapp.rb +4 -0
  654. data/tests/testapp_noframe.rb +4 -0
  655. metadata +89 -3
  656. data/rakelib/lib/director/html_help_frame.rb +0 -25
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require_relative './window'
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  require_relative './top_level_window'
@@ -16,57 +19,66 @@ module WXRuby3
16
19
  # only for wxFrame class itself
17
20
  case spec.module_name
18
21
  when 'wxFrame'
19
- spec.no_proxy %w[
20
- wxFrame::CreateStatusBar
21
- wxFrame::CreateToolBar
22
- wxFrame::SetMenuBar
23
- wxFrame::GetMenuBar
24
- wxFrame::SetStatusBar
25
- wxFrame::GetStatusBar
26
- wxFrame::SetToolBar
27
- wxFrame::GetToolBar]
28
22
  spec.ignore %w[
29
23
  wxFrame::OnCreateStatusBar wxFrame::OnCreateToolBar]
30
- spec.set_only_for(%w[__WXMSW__ wxUSE_TASKBARBUTTON], 'wxFrame::MSWGetTaskBarButton')
24
+ unless Config.instance.features_set?(*%w[__WXMSW__ wxUSE_TASKBARBUTTON])
25
+ spec.ignore('wxFrame::MSWGetTaskBarButton')
26
+ end
31
27
  # this reimplemented window base method need to be properly wrapped but
32
28
  # is missing from the XML docs
33
29
  spec.extend_interface('wxFrame', 'virtual void OnInternalIdle()')
34
30
  spec.disown 'wxMenuBar *'
35
- spec.map 'int n, int * widths' do
36
- map_in from: {type: 'Array<Integer>', index: 1},
37
- temp: 'int size, int i, std::unique_ptr<int[]> arr', code: <<~__CODE
31
+ # handled; can be suppressed
32
+ spec.suppress_warning(473,
33
+ 'wxFrame::CreateStatusBar',
34
+ 'wxFrame::CreateToolBar',
35
+ 'wxFrame::GetMenuBar',
36
+ 'wxFrame::GetStatusBar',
37
+ 'wxFrame::GetToolBar')
38
+ end
39
+ # for SetStatusWidths
40
+ spec.map 'int n, int * widths_field' do
41
+ map_in from: {type: 'Array<Integer>', index: 1},
42
+ temp: 'int size, std::unique_ptr<int[]> arr', code: <<~__CODE
38
43
  size = RARRAY_LEN($input);
39
44
  arr.reset(new int[size]);
40
- for(i = 0; i < size; i++)
45
+ for(int i = 0; i < size; i++)
41
46
  {
42
47
  arr.get()[i] = NUM2INT(rb_ary_entry($input,i));
43
48
  }
44
49
  $1 = size;
45
50
  $2 = arr.get();
46
51
  __CODE
47
- end
48
- # handled; can be suppressed
49
- spec.suppress_warning(473,
50
- 'wxFrame::CreateStatusBar',
51
- 'wxFrame::CreateToolBar',
52
- 'wxFrame::GetMenuBar',
53
- 'wxFrame::GetStatusBar',
54
- 'wxFrame::GetToolBar')
55
- else # 'wxMiniFrame', 'wxMDIFrame', 'wxAuiMDIParentFrame'
56
- spec.items.each do |cls|
52
+ map_directorin code: <<~__CODE
53
+ $input = rb_ary_new();
54
+ for (int i = 0; i < $1; i++)
55
+ {
56
+ rb_ary_push($input, INT2NUM($2[i]));
57
+ }
58
+ __CODE
59
+ end
60
+ end
61
+
62
+ def process(gendoc: false)
63
+ defmod = super
64
+ spec.items.each do |citem|
65
+ def_item = defmod.find_item(citem)
66
+ if Extractor::ClassDef === def_item && (citem == 'wxFrame' || spec.is_derived_from?(def_item, 'wxFrame'))
57
67
  spec.no_proxy %W[
58
- #{cls}::CreateStatusBar
59
- #{cls}::CreateToolBar
60
- #{cls}::SetMenuBar
61
- #{cls}::GetMenuBar
62
- #{cls}::SetStatusBar
63
- #{cls}::GetStatusBar
64
- #{cls}::SetToolBar
65
- #{cls}::GetToolBar
68
+ #{spec.class_name(citem)}::CreateStatusBar
69
+ #{spec.class_name(citem)}::CreateToolBar
70
+ #{spec.class_name(citem)}::SetMenuBar
71
+ #{spec.class_name(citem)}::GetMenuBar
72
+ #{spec.class_name(citem)}::SetStatusBar
73
+ #{spec.class_name(citem)}::GetStatusBar
74
+ #{spec.class_name(citem)}::SetToolBar
75
+ #{spec.class_name(citem)}::GetToolBar
66
76
  ]
67
77
  end
68
78
  end
79
+ defmod
69
80
  end
81
+
70
82
  end # class Frame
71
83
 
72
84
  end # class Director
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -10,6 +13,7 @@ module WXRuby3
10
13
  class FSFile < Director
11
14
 
12
15
  include Typemap::IOStreams
16
+ include Typemap::DateTime
13
17
 
14
18
  def setup
15
19
  super
@@ -31,6 +35,32 @@ module WXRuby3
31
35
  }
32
36
  __CODE
33
37
  end
38
+ spec.map 'wxFileOffset' => 'Integer' do
39
+ # we need these inline methods here as we do not want SWIG to preprocess the code
40
+ # as it will do in the type mapping code sections
41
+ add_header_code <<~__CODE
42
+ inline wxFileOffset __ruby2wxFileOffset(VALUE num)
43
+ {
44
+ #ifdef wxHAS_HUGE_FILES
45
+ return static_cast<wxFileOffset> (NUM2LL(num));
46
+ #else
47
+ return static_cast<wxFileOffset> (NUM2LONG(num));
48
+ #endif
49
+ }
50
+ inline VALUE __wxFileOffset2ruby(wxFileOffset offs)
51
+ {
52
+ #ifdef wxHAS_HUGE_FILES
53
+ return LL2NUM(offs);
54
+ #else
55
+ return LONG2NUM(offs);
56
+ #endif
57
+ }
58
+ __CODE
59
+
60
+ map_in code: '$1 = __ruby2wxFileOffset($input);'
61
+ map_out code: '$result = __wxFileOffset2ruby($1);'
62
+ map_typecheck code: '$1 = TYPE($input) == T_FIXNUM;'
63
+ end
34
64
  spec.new_object 'wxFSFile::DetachStream'
35
65
  # ignore troublesome methods
36
66
  spec.ignore 'wxInputStream::Read(void *, size_t)',
@@ -346,6 +376,27 @@ module WXRuby3
346
376
  spec.add_init_code 'wxRuby_AppendMarker(wxRuby_markRbStreams);'
347
377
  end
348
378
 
379
+ def process(gendoc: false)
380
+ defmod = super
381
+ # wxSeekMode is documented in a separate module with a lot of defs we do not want
382
+ # so let's manually insert it's definition here
383
+ seek_mode_enum = Extractor::EnumDef.new(name: 'wxSeekMode',
384
+ brief_doc: 'Parameter indicating how file offset should be interpreted.')
385
+ seek_mode_enum.items << Extractor::EnumValueDef.new(enum: seek_mode_enum, name: 'wxFromStart', brief_doc: 'Seek from the file beginning.')
386
+ seek_mode_enum.items << Extractor::EnumValueDef.new(enum: seek_mode_enum, name: 'wxFromCurrent', brief_doc: 'Seek from the current position.')
387
+ seek_mode_enum.items << Extractor::EnumValueDef.new(enum: seek_mode_enum, name: 'wxFromEnd', brief_doc: 'Seek from end of the file.')
388
+ defmod.items << seek_mode_enum
389
+ # same for this
390
+ stream_error_enum = Extractor::EnumDef.new(name: 'wxStreamError',
391
+ brief_doc: 'IO stream error codes.')
392
+ stream_error_enum.items << Extractor::EnumValueDef.new(enum: stream_error_enum, name: 'wxSTREAM_NO_ERROR', brief_doc: 'No error occurred.')
393
+ stream_error_enum.items << Extractor::EnumValueDef.new(enum: stream_error_enum, name: 'wxSTREAM_EOF', brief_doc: 'EOF reached.')
394
+ stream_error_enum.items << Extractor::EnumValueDef.new(enum: stream_error_enum, name: 'wxSTREAM_WRITE_ERROR', brief_doc: 'generic write error on the last write call.')
395
+ stream_error_enum.items << Extractor::EnumValueDef.new(enum: stream_error_enum, name: 'wxSTREAM_READ_ERROR', brief_doc: 'generic read error on the last read call.')
396
+ defmod.items << stream_error_enum
397
+ defmod
398
+ end
399
+
349
400
  end # class FSFile
350
401
 
351
402
  end # class Director
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -59,10 +62,12 @@ module WXRuby3
59
62
  if (!NIL_P(rb_comp) && TYPE(rb_comp) == T_STRING) component = StringValuePtr(rb_comp);
60
63
  }
61
64
 
62
- VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
63
- va_list list;
64
- va_start(list, argv); // just a dummy to satisfy wxLogger::LogV
65
- wxLogger(lvl, filename, line, func, component).LogV(RSTR_TO_WXSTR(log_msg), list);
65
+ if ( lvl == wxLOG_FatalError ||
66
+ wxLog::IsLevelEnabled(lvl, wxASCII_STR(component)) )
67
+ {
68
+ VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
69
+ wxLogger(lvl, filename, line, func, component).Log(RSTR_TO_WXSTR(log_msg));
70
+ }
66
71
  }
67
72
 
68
73
  // Log a Wx message with the given level to the current Wx log output
@@ -192,6 +197,7 @@ module WXRuby3
192
197
  }
193
198
  __CODE
194
199
  end
200
+ spec.map_apply 'int *OUTPUT' => ['int *indexDefaultExtension']
195
201
  # hardcoded interface declarations
196
202
  spec.add_interface_code <<~__HEREDOC
197
203
  bool wxSafeYield(wxWindow* win = NULL, bool onlyIfNeeded = false);
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -57,14 +60,16 @@ module WXRuby3
57
60
  wxPoint::x wxPoint::y
58
61
  wxRealPoint::x wxRealPoint::y
59
62
  ]
60
- spec.set_only_for '__WXGTK__', 'wxStockCursor.wxCURSOR_DEFAULT'
61
- spec.set_only_for '__X__', %w{
62
- wxStockCursor.wxCURSOR_CROSS_REVERSE
63
- wxStockCursor.wxCURSOR_DOUBLE_ARROW
64
- wxStockCursor.wxCURSOR_BASED_ARROW_UP
65
- wxStockCursor.wxCURSOR_BASED_ARROW_DOWN
66
- }
67
- spec.set_only_for '__WXMAC__', 'wxStockCursor.wxCURSOR_COPY_ARROW'
63
+ spec.ignore('wxStockCursor.wxCURSOR_DEFAULT') unless Config.instance.features_set?('__WXGTK__')
64
+ unless Config.instance.features_set?('__X__')
65
+ spec.ignore %w{
66
+ wxStockCursor.wxCURSOR_CROSS_REVERSE
67
+ wxStockCursor.wxCURSOR_DOUBLE_ARROW
68
+ wxStockCursor.wxCURSOR_BASED_ARROW_UP
69
+ wxStockCursor.wxCURSOR_BASED_ARROW_DOWN
70
+ }
71
+ end
72
+ spec.ignore('wxStockCursor.wxCURSOR_COPY_ARROW') unless Config.instance.features_set?('__WXOSX__')
68
73
  spec.add_extend_code 'wxRect', <<~__HEREDOC
69
74
  wxRect add(const wxRect &rect) const {
70
75
  return (*(const wxRect*)$self) + rect;
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -11,21 +14,97 @@ module WXRuby3
11
14
 
12
15
  def setup
13
16
  super
17
+ spec.items << 'wxGraphicsGradientStop' << 'wxGraphicsGradientStops' << 'wxGraphicsPenInfo'
14
18
  spec.disable_proxies
15
19
  # do not track GraphicContext objects as that causes problems probably for similar
16
20
  # reasons as for DC objects
17
21
  spec.gc_as_untracked
22
+ # doc error
23
+ spec.ignore 'wxGraphicsGradientStop::wxGraphicsGradientStop'
24
+ spec.extend_interface 'wxGraphicsGradientStop',
25
+ 'wxGraphicsGradientStop(wxColour col=wxTransparentColour, float pos=0.0)'
18
26
  # ignore all these; wxRuby only supports the ::draw_on methods
19
27
  spec.ignore 'wxGraphicsContext::CreateFromNative',
20
28
  'wxGraphicsContext::CreateFromNativeWindow',
21
29
  'wxGraphicsContext::CreateFromNativeHDC',
22
30
  'wxGraphicsContext::CreateFromUnknownDC',
23
31
  'wxGraphicsContext::GetNativeContext',
24
- 'wxGraphicsContext::Create'
32
+ 'wxGraphicsContext::Create',
33
+ 'wxGraphicsContext::CreateMatrix(const wxAffineMatrix2DBase &) const',
34
+ 'wxGraphicsContext::DrawLines(size_t, const wxPoint2DDouble *, wxPolygonFillMode)',
35
+ 'wxGraphicsContext::StrokeLines(size_t, const wxPoint2DDouble *)',
36
+ 'wxGraphicsContext::StrokeLines (size_t, const wxPoint2DDouble *, const wxPoint2DDouble *)'
37
+ if Config.platform == :linux
38
+ spec.ignore 'wxGraphicsContext::Create(const wxPrinterDC &)'
39
+ end
40
+ spec.add_header_code <<~__HEREDOC
41
+ // special free funcs are needed to clean up Dashes array if it has been
42
+ // set; wxWidgets does not do this automatically so will leak if not
43
+ // dealt with.
44
+ void GC_free_wxGraphicsPenInfo(wxGraphicsPenInfo *pen_info)
45
+ {
46
+ SWIG_RubyRemoveTracking(pen_info);
47
+ if (pen_info)
48
+ {
49
+ wxDash *dashes;
50
+ int dash_count = pen_info->GetDashes(&dashes);
51
+ if ( dash_count )
52
+ delete dashes;
53
+ }
54
+ delete pen_info;
55
+ }
56
+ __HEREDOC
57
+ # dealt with below - these require special handling because of the use
58
+ # of wxDash array, which cannot be freed until the peninfo is disposed of
59
+ # or until a new dash pattern is specified.
60
+ spec.ignore(%w[wxGraphicsPenInfo::GetDashes wxGraphicsPenInfo::Dashes], ignore_doc: false)
61
+ spec.ignore 'wxGraphicsPenInfo::GetDash'
62
+ spec.add_extend_code 'wxGraphicsPenInfo', <<~__HEREDOC
63
+ // Returns a ruby array with the dash lengths
64
+ VALUE get_dashes()
65
+ {
66
+ VALUE rb_dashes = rb_ary_new();
67
+ wxDash* dashes;
68
+ int dash_count = $self->GetDashes(&dashes);
69
+ for ( int i = 0; i < dash_count; i++ )
70
+ {
71
+ rb_ary_push(rb_dashes, INT2NUM(dashes[i]));
72
+ }
73
+ return rb_dashes;
74
+ }
75
+
76
+ // Sets the dashes to have the lengths defined in the ruby array of ints
77
+ void dashes(VALUE rb_dashes)
78
+ {
79
+ // Check right parameter type
80
+ if ( TYPE(rb_dashes) != T_ARRAY )
81
+ rb_raise(rb_eTypeError,
82
+ "Wrong argument type for set_dashes, should be Array");
83
+
84
+ // Get old value in case it needs to be deallocated to avoid leaking
85
+ wxDash* old_dashes;
86
+ int old_dashes_count = $self->GetDashes(&old_dashes);
87
+
88
+ // Create a C++ wxDash array to hold the new dashes, and populate
89
+ int new_dash_count = RARRAY_LEN(rb_dashes);
90
+ wxDash* new_dashes = new wxDash[ new_dash_count ];
91
+ for ( int i = 0; i < new_dash_count; i++ )
92
+ {
93
+ new_dashes[i] = NUM2INT(rb_ary_entry(rb_dashes, i));
94
+ }
95
+ $self->Dashes(new_dash_count, new_dashes);
96
+
97
+ // Clean up the old if it existed
98
+ if ( old_dashes_count )
99
+ delete old_dashes;
100
+ }
101
+ __HEREDOC
25
102
  # type mappings
26
- # Typemap to fix GraphicsContext#get_text_extent
103
+ # Typemap to fix GraphicsContext#get_text_extent and get_dpi and get_clip_box
27
104
  spec.map_apply 'double *OUTPUT' => [ 'wxDouble* width', 'wxDouble* height',
28
- 'wxDouble* descent', 'wxDouble* externalLeading' ]
105
+ 'wxDouble* descent', 'wxDouble* externalLeading',
106
+ 'wxDouble *dpiX', 'wxDouble *dpiY',
107
+ 'wxDouble *x', 'wxDouble *y', 'wxDouble *w', 'wxDouble *h']
29
108
  spec.map 'wxDouble* width, wxDouble* height, wxDouble* descent, wxDouble* externalLeading' do
30
109
  map_directorargout code: <<~__CODE
31
110
  if ( (TYPE(result) == T_ARRAY) && (RARRAY_LEN(result) >= 2) )
@@ -137,7 +216,37 @@ module WXRuby3
137
216
  }
138
217
  __CODE
139
218
  end
219
+ # for GetPartialTextExtents
220
+ spec.map 'wxArrayDouble &widths' => 'Array<Float>' do
221
+ map_in ignore: true, temp: 'wxArrayDouble tmp', code: '$1 = &tmp;'
222
+
223
+ map_argout code: <<~__CODE
224
+ $result = rb_ary_new();
225
+ for (size_t i = 0; i < $1->GetCount(); i++)
226
+ {
227
+ rb_ary_push($result,DBL2NUM( $1->Item(i) ) );
228
+ }
229
+ __CODE
230
+ end
140
231
  # add convenience method providing efficient gc memory management
232
+ unless Config.platform == :linux
233
+ spec.add_extend_code 'wxGraphicsContext', <<~__HEREDOC
234
+ static VALUE draw_on(const wxPrinterDC& dc)
235
+ {
236
+ VALUE rc = Qnil;
237
+ if (rb_block_given_p())
238
+ {
239
+ wxGraphicsContext* p_gc = wxGraphicsContext::Create(dc);
240
+ VALUE rb_gc = SWIG_NewPointerObj(SWIG_as_voidptr(p_gc), SWIGTYPE_p_wxGraphicsContext, 1);
241
+ rc = rb_yield(rb_gc);
242
+ SWIG_RubyRemoveTracking((void *)p_gc);
243
+ DATA_PTR(rb_gc) = NULL;
244
+ delete p_gc;
245
+ }
246
+ return rc;
247
+ }
248
+ __HEREDOC
249
+ end
141
250
  spec.add_extend_code 'wxGraphicsContext', <<~__HEREDOC
142
251
  static VALUE draw_on(wxWindow* win)
143
252
  {
@@ -181,20 +290,6 @@ module WXRuby3
181
290
  }
182
291
  return rc;
183
292
  }
184
- static VALUE draw_on(const wxPrinterDC& dc)
185
- {
186
- VALUE rc = Qnil;
187
- if (rb_block_given_p())
188
- {
189
- wxGraphicsContext* p_gc = wxGraphicsContext::Create(dc);
190
- VALUE rb_gc = SWIG_NewPointerObj(SWIG_as_voidptr(p_gc), SWIGTYPE_p_wxGraphicsContext, 1);
191
- rc = rb_yield(rb_gc);
192
- SWIG_RubyRemoveTracking((void *)p_gc);
193
- DATA_PTR(rb_gc) = NULL;
194
- delete p_gc;
195
- }
196
- return rc;
197
- }
198
293
  static VALUE draw_on(wxImage& img)
199
294
  {
200
295
  VALUE rc = Qnil;
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -18,7 +21,14 @@ module WXRuby3
18
21
  spec.ignore 'wxGraphicsMatrix::IsEqual(const wxGraphicsMatrix &)'
19
22
  spec.ignore 'wxGraphicsMatrix::GetNativeMatrix'
20
23
  spec.ignore 'wxGraphicsBitmap::GetNativeBitmap'
21
- spec.ignore 'wxGraphicsPath::GetNativePath', 'wxGraphicsPath::UnGetNativePath'
24
+ spec.ignore 'wxGraphicsPath::GetNativePath',
25
+ 'wxGraphicsPath::UnGetNativePath',
26
+ 'wxGraphicsPath::AddCurveToPoint(const wxPoint2DDouble &, const wxPoint2DDouble &, const wxPoint2DDouble &)',
27
+ 'wxGraphicsPath::AddLineToPoint(const wxPoint2DDouble &)',
28
+ 'wxGraphicsPath::Contains(const wxPoint2DDouble &, wxPolygonFillMode) const',
29
+ 'wxGraphicsPath::GetCurrentPoint',
30
+ 'wxGraphicsPath::MoveToPoint(const wxPoint2DDouble &)',
31
+ 'wxGraphicsPath::AddArc(const wxPoint2DDouble &, wxDouble, wxDouble, wxDouble, bool)'
22
32
  # Deal with GraphicsMatrix#get method
23
33
  spec.map_apply 'double *OUTPUT' => [ 'wxDouble *a', 'wxDouble *b',
24
34
  'wxDouble *c', 'wxDouble *d',
@@ -40,6 +50,7 @@ module WXRuby3
40
50
  end
41
51
  spec.ignore 'wxGraphicsPath::GetBox() const',
42
52
  'wxGraphicsPath::GetCurrentPoint() const'
53
+ spec.map_apply 'double * OUTPUT' => 'wxDouble *'
43
54
  if Config.platform == :mingw
44
55
  # it seems for WXMSW there is a problem cleaning up GraphicsObjects in GC after
45
56
  # the wxApp has ended (probably because some other wxWidgets cleanup already
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -16,7 +19,24 @@ module WXRuby3
16
19
  # exposing the mixin wxClientDataContainer/wxSharedClientDataContainer has no real upside
17
20
  # for wxRuby; far easier to just use member variables in derived classes
18
21
  spec.override_inheritance_chain('wxGridCellAttr', [])
19
- spec.gc_as_untracked_refcounted('wxGridCellAttr')
22
+ spec.gc_as_untracked('wxGridCellAttr')
23
+ # use custom free func to be able to account for more complex inheritance
24
+ spec.add_header_code <<~__HEREDOC
25
+ static void GC_free_GridCellAttr(void *ptr)
26
+ {
27
+ wxGridCellAttr* gc_attr = (wxGridCellAttr*)ptr;
28
+ if (ptr)
29
+ gc_attr->DecRef();
30
+ }
31
+ __HEREDOC
32
+ spec.add_swig_code '%feature("freefunc") wxGridCellAttr "GC_free_GridCellAttr";'
33
+ # these do not provide usable refcount handling and would be unsafe for GC
34
+ # are actually more for internal Grid use than anything else anyway
35
+ spec.ignore 'wxGridCellAttr::wxGridCellAttr(wxGridCellAttr *)',
36
+ 'wxGridCellAttr::SetDefAttr',
37
+ 'wxGridCellAttr::MergeWith'
38
+ # replace with true default ctor
39
+ spec.extend_interface('wxGridCellAttr', 'wxGridCellAttr()')
20
40
  spec.ignore %w[wxGridCellAttr::IncRef wxGridCellAttr::DecRef]
21
41
  spec.ignore('wxGridCellAttr::GetEditorPtr',
22
42
  'wxGridCellAttr::GetRendererPtr')
@@ -39,9 +59,13 @@ module WXRuby3
39
59
  map_check code: 'wxRuby_RegisterGridCellRenderer($1, argv[$argnum-2]);'
40
60
  end
41
61
  # argout type mappings
42
- spec.map_apply 'int* OUTPUT' => ['int *hAlign', 'int *vAlign', 'int *num_rows', 'int *num_cols']
62
+ spec.map_apply 'int* OUTPUT' => ['int *num_rows', 'int *num_cols']
63
+ spec.map 'int *hAlign', 'int *vAlign', as: 'Integer' do
64
+ map_in ignore: true, temp: 'int tmp', code: 'tmp = wxALIGN_INVALID; $1 = &tmp;'
65
+ map_argout code: '$result = SWIG_Ruby_AppendOutput($result, INT2NUM(*$1));'
66
+ end
43
67
  # for docs only
44
- spec.map ['int *hAlign', 'int *vAlign', 'int *num_rows', 'int *num_cols'] => 'Integer', swig: false do
68
+ spec.map 'int *num_rows', 'int *num_cols', as: 'Integer', swig: false do
45
69
  map_in ignore: true
46
70
  map_argout
47
71
  end
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -13,7 +16,10 @@ module WXRuby3
13
16
 
14
17
  def setup
15
18
  super
16
- spec.gc_as_untracked_refcounted
19
+ spec.gc_as_untracked
20
+ # use custom free func to be able to account for more complex inheritance
21
+ spec.add_header_code 'extern void GC_free_GridCellEditor(void *ptr);'
22
+ spec.add_swig_code '%feature("freefunc") wxGridCellEditor "GC_free_GridCellEditor";'
17
23
  if spec.module_name == 'wxGridCellEditor'
18
24
  spec.post_processors << :fix_gridcelleditor
19
25
  # exposing the mixin wxClientDataContainer/wxSharedClientDataContainer has no real upside
@@ -101,7 +107,14 @@ module WXRuby3
101
107
  wxRuby_RegisterGridCellEditor(const_cast<wxGridCellEditor*> (wx_gce), rb_gce);
102
108
  return rb_gce;
103
109
  }
104
- __CODE
110
+
111
+ extern void GC_free_GridCellEditor(void *ptr)
112
+ {
113
+ wxGridCellEditor* gc_edt = (wxGridCellEditor*)ptr;
114
+ if (ptr)
115
+ gc_edt->DecRef();
116
+ }
117
+ __CODE
105
118
  elsif spec.module_name == 'wxGridCellActivatableEditor'
106
119
  spec.post_processors << :fix_gridcelleditor
107
120
  spec.override_inheritance_chain('wxGridCellActivatableEditor', %w[wxGridCellEditor])
@@ -126,6 +139,10 @@ module WXRuby3
126
139
  case spec.module_name
127
140
  when 'wxGridCellEnumEditor'
128
141
  spec.override_inheritance_chain(spec.module_name, %w[wxGridCellChoiceEditor wxGridCellEditor])
142
+ when 'wxGridCellChoiceEditor'
143
+ # unnecessary overload
144
+ spec.ignore 'wxGridCellChoiceEditor::wxGridCellChoiceEditor(size_t, const wxString [], bool)'
145
+ spec.override_inheritance_chain(spec.module_name, %w[wxGridCellEditor])
129
146
  when 'wxGridCellAutoWrapStringEditor', 'wxGridCellFloatEditor', 'wxGridCellNumberEditor'
130
147
  spec.override_inheritance_chain(spec.module_name, %w[wxGridCellTextEditor wxGridCellEditor])
131
148
  else
@@ -335,7 +352,7 @@ module WXRuby3
335
352
  elsif line["wxGridActivationResult SwigDirector_#{module_name}::TryActivate("]
336
353
  skip_lines = true
337
354
  # append new method implementation
338
- line << <<~__METHOD__
355
+ line << "\n" << <<~__METHOD__
339
356
  static WxRuby_ID try_activate_id("try_activate");
340
357
 
341
358
  VALUE obj0 = Qnil ;
@@ -358,7 +375,7 @@ module WXRuby3
358
375
  elsif line["_wrap_#{module_name}_TryActivate(int argc, VALUE *argv, VALUE self) {"]
359
376
  skip_lines = true
360
377
  # append new method implementation
361
- line << <<~__METHOD__
378
+ line << "\n" << <<~__METHOD__
362
379
  #{module_name} *arg1 = (#{module_name} *) 0 ;
363
380
  int arg2 ;
364
381
  int arg3 ;
@@ -1,6 +1,9 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
1
5
  ###
2
6
  # wxRuby3 wxWidgets interface director
3
- # Copyright (c) M.J.N. Corino, The Netherlands
4
7
  ###
5
8
 
6
9
  module WXRuby3
@@ -13,7 +16,10 @@ module WXRuby3
13
16
 
14
17
  def setup
15
18
  super
16
- spec.gc_as_untracked_refcounted
19
+ spec.gc_as_untracked
20
+ # use custom free func to be able to account for more complex inheritance
21
+ spec.add_header_code 'extern void GC_free_GridCellRenderer(void *ptr);'
22
+ spec.add_swig_code '%feature("freefunc") wxGridCellRenderer "GC_free_GridCellRenderer";'
17
23
  if spec.module_name == 'wxGridCellRenderer'
18
24
  # exposing the mixin wxClientDataContainer/wxSharedClientDataContainer has no real upside
19
25
  # for wxRuby; far easier to just use member variables in derived classes
@@ -97,7 +103,14 @@ module WXRuby3
97
103
  wxRuby_RegisterGridCellRenderer(const_cast<wxGridCellRenderer*> (wx_gcr), rb_gcr);
98
104
  return rb_gcr;
99
105
  }
100
- __CODE
106
+
107
+ extern void GC_free_GridCellRenderer(void *ptr)
108
+ {
109
+ wxGridCellRenderer* gc_rdr = (wxGridCellRenderer*)ptr;
110
+ if (ptr)
111
+ gc_rdr->DecRef();
112
+ }
113
+ __CODE
101
114
  else
102
115
  case spec.module_name
103
116
  when 'wxGridCellStringRenderer'