wxruby3 0.9.0.pre.rc.2 → 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 (705) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +30 -8
  3. data/README.md +3 -3
  4. data/ext/mkrf_conf_srcgem.rb +4 -1
  5. data/ext/wxruby3/include/wxruby-Config.h +953 -0
  6. data/ext/wxruby3/include/wxruby-ScaledDC.h +4 -1
  7. data/ext/wxruby3/include/wxruby-runtime.h +10 -1
  8. data/ext/wxruby3/swig/RubyStockObjects.i +5 -3
  9. data/ext/wxruby3/swig/common.i +8 -3
  10. data/ext/wxruby3/swig/mark_free_impl.i +6 -4
  11. data/ext/wxruby3/swig/memory_management.i +5 -3
  12. data/ext/wxruby3/swig/typedefs.i +5 -3
  13. data/ext/wxruby3/swig/wx.i +7 -0
  14. data/ext/wxruby3/swig/wx.rc +4 -2
  15. data/lib/wx/accessors.rb +10 -2
  16. data/lib/wx/aui/auifloatframe.rb +20 -0
  17. data/lib/wx/aui/auimanager.rb +3 -0
  18. data/lib/wx/aui/auinotebook.rb +17 -0
  19. data/lib/wx/aui/require.rb +5 -1
  20. data/lib/wx/aui.rb +4 -1
  21. data/lib/wx/core/acceleratortable.rb +8 -0
  22. data/lib/wx/core/animation.rb +8 -0
  23. data/lib/wx/core/app.rb +8 -0
  24. data/lib/wx/core/array_ext.rb +7 -0
  25. data/lib/wx/core/art_locator.rb +7 -0
  26. data/lib/wx/core/artprovider.rb +9 -0
  27. data/lib/wx/core/bitmap.rb +16 -4
  28. data/lib/wx/core/bitmap_combobox.rb +7 -0
  29. data/lib/wx/core/brush.rb +7 -0
  30. data/lib/wx/core/busycursor.rb +9 -0
  31. data/lib/wx/core/choice.rb +7 -0
  32. data/lib/wx/core/choicedlg.rb +7 -0
  33. data/lib/wx/core/clientdc.rb +9 -0
  34. data/lib/wx/core/clipboard.rb +8 -0
  35. data/lib/wx/core/collapsible_pane.rb +8 -1
  36. data/lib/wx/core/colour.rb +8 -0
  37. data/lib/wx/core/combo_ctrl.rb +110 -0
  38. data/lib/wx/core/combobox.rb +7 -0
  39. data/lib/wx/core/config.rb +303 -0
  40. data/lib/wx/core/controlwithitems.rb +12 -1
  41. data/lib/wx/core/cursor.rb +14 -4
  42. data/lib/wx/core/data_object.rb +7 -0
  43. data/lib/wx/core/dataformat.rb +9 -0
  44. data/lib/wx/core/datetime.rb +14 -0
  45. data/lib/wx/core/dc.rb +7 -0
  46. data/lib/wx/core/dialog.rb +18 -1
  47. data/lib/wx/core/enum.rb +7 -0
  48. data/lib/wx/core/event.rb +7 -0
  49. data/lib/wx/core/event_blocker.rb +7 -0
  50. data/lib/wx/core/event_loop.rb +14 -0
  51. data/lib/wx/core/evthandler.rb +8 -0
  52. data/lib/wx/core/ext.rb +7 -0
  53. data/lib/wx/core/file_dialog.rb +23 -0
  54. data/lib/wx/core/find_replace_dialog.rb +7 -0
  55. data/lib/wx/core/functions.rb +8 -0
  56. data/lib/wx/core/gauge.rb +10 -1
  57. data/lib/wx/core/genericdirctrl.rb +9 -0
  58. data/lib/wx/core/hboxsizer.rb +16 -0
  59. data/lib/wx/core/helpcontroller.rb +8 -0
  60. data/lib/wx/core/helpcontrollerhelpprovider.rb +9 -0
  61. data/lib/wx/core/helpprovider.rb +10 -1
  62. data/lib/wx/core/icon.rb +17 -6
  63. data/lib/wx/core/id_helper.rb +7 -0
  64. data/lib/wx/core/image.rb +49 -4
  65. data/lib/wx/core/imagelist.rb +8 -1
  66. data/lib/wx/core/listbox.rb +7 -0
  67. data/lib/wx/core/listctrl.rb +26 -13
  68. data/lib/wx/core/locale.rb +8 -0
  69. data/lib/wx/core/log.rb +114 -0
  70. data/lib/wx/core/menu.rb +9 -0
  71. data/lib/wx/core/menu_bar.rb +7 -0
  72. data/lib/wx/core/menuitem.rb +9 -0
  73. data/lib/wx/core/notebook.rb +9 -0
  74. data/lib/wx/core/object.rb +9 -0
  75. data/lib/wx/core/paintdc.rb +7 -0
  76. data/lib/wx/core/pen.rb +7 -0
  77. data/lib/wx/core/pen_info.rb +7 -0
  78. data/lib/wx/core/platform_info.rb +7 -0
  79. data/lib/wx/core/point.rb +8 -0
  80. data/lib/wx/core/real_point.rb +8 -0
  81. data/lib/wx/core/rect.rb +9 -0
  82. data/lib/wx/core/region_iterator.rb +7 -0
  83. data/lib/wx/core/simplehelpprovider.rb +9 -0
  84. data/lib/wx/core/size.rb +8 -0
  85. data/lib/wx/core/sizer.rb +9 -0
  86. data/lib/wx/core/splash_screen.rb +22 -2
  87. data/lib/wx/core/text_entry.rb +7 -0
  88. data/lib/wx/core/textctrl.rb +86 -5
  89. data/lib/wx/core/timer.rb +9 -0
  90. data/lib/wx/core/toolbar.rb +9 -0
  91. data/lib/wx/core/toolbartool.rb +8 -0
  92. data/lib/wx/core/treectrl.rb +9 -0
  93. data/lib/wx/core/v_list_box.rb +7 -0
  94. data/lib/wx/core/validator.rb +7 -0
  95. data/lib/wx/core/variant.rb +7 -0
  96. data/lib/wx/core/vboxsizer.rb +16 -0
  97. data/lib/wx/core/window.rb +8 -0
  98. data/lib/wx/core/window_update_locker.rb +9 -0
  99. data/lib/wx/core/xmlresource.rb +8 -0
  100. data/lib/wx/core.rb +4 -1
  101. data/lib/wx/doc/app.rb +7 -1
  102. data/lib/wx/doc/array_ext.rb +6 -0
  103. data/lib/wx/doc/art_locator.rb +7 -0
  104. data/lib/wx/doc/aui/auimanager.rb +6 -0
  105. data/lib/wx/doc/aui/auinotebook.rb +6 -0
  106. data/lib/wx/doc/bitmap.rb +19 -15
  107. data/lib/wx/doc/brush.rb +6 -0
  108. data/lib/wx/doc/busy_info.rb +6 -0
  109. data/lib/wx/doc/client_dc.rb +6 -0
  110. data/lib/wx/doc/clipboard.rb +6 -0
  111. data/lib/wx/doc/colour_dialog.rb +6 -0
  112. data/lib/wx/doc/config.rb +190 -0
  113. data/lib/wx/doc/const.rb +7 -0
  114. data/lib/wx/doc/controlwithitems.rb +6 -0
  115. data/lib/wx/doc/core.rb +6 -0
  116. data/lib/wx/doc/cursor.rb +13 -5
  117. data/lib/wx/doc/data_object.rb +6 -0
  118. data/lib/wx/doc/datetime.rb +16 -0
  119. data/lib/wx/doc/dc.rb +6 -0
  120. data/lib/wx/doc/enum.rb +8 -1
  121. data/lib/wx/doc/event.rb +12 -0
  122. data/lib/wx/doc/event_blocker.rb +6 -0
  123. data/lib/wx/doc/event_loop.rb +13 -0
  124. data/lib/wx/doc/events.rb +6 -0
  125. data/lib/wx/doc/evthandler.rb +8 -0
  126. data/lib/wx/doc/extra/00_starting.md +6 -6
  127. data/lib/wx/doc/extra/01_packages.md +52 -51
  128. data/lib/wx/doc/extra/02_lifecycles.md +9 -8
  129. data/lib/wx/doc/extra/05_event-handling.md +37 -12
  130. data/lib/wx/doc/extra/06_geometry.md +5 -5
  131. data/lib/wx/doc/extra/07_colour_and_font.md +2 -2
  132. data/lib/wx/doc/extra/09_exceptions.md +2 -2
  133. data/lib/wx/doc/extra/10_art.md +18 -12
  134. data/lib/wx/doc/extra/11_drawing_and_dc.md +8 -8
  135. data/lib/wx/doc/font.rb +7 -1
  136. data/lib/wx/doc/font_data.rb +16 -0
  137. data/lib/wx/doc/functions.rb +60 -24
  138. data/lib/wx/doc/gc_dc.rb +7 -1
  139. data/lib/wx/doc/gdi_common.rb +8 -1
  140. data/lib/wx/doc/graphics_context.rb +59 -39
  141. data/lib/wx/doc/grid/grid.rb +16 -1
  142. data/lib/wx/doc/hboxsizer.rb +33 -0
  143. data/lib/wx/doc/help_controller.rb +6 -0
  144. data/lib/wx/doc/html/html_help_controller.rb +6 -0
  145. data/lib/wx/doc/icon.rb +13 -5
  146. data/lib/wx/doc/id_helper.rb +6 -0
  147. data/lib/wx/doc/image.rb +50 -12
  148. data/lib/wx/doc/list_ctrl.rb +38 -0
  149. data/lib/wx/doc/log.rb +45 -0
  150. data/lib/wx/doc/memory_dc.rb +6 -0
  151. data/lib/wx/doc/mirror_dc.rb +6 -0
  152. data/lib/wx/doc/pen.rb +6 -0
  153. data/lib/wx/doc/pg/events.rb +6 -0
  154. data/lib/wx/doc/pg/pg_property.rb +17 -0
  155. data/lib/wx/doc/pg/pgeditor.rb +6 -0
  156. data/lib/wx/doc/pg/property_grid.rb +6 -0
  157. data/lib/wx/doc/pg/property_grid_interface.rb +6 -0
  158. data/lib/wx/doc/progress_dialog.rb +6 -0
  159. data/lib/wx/doc/prt/page_setup_dialog.rb +6 -0
  160. data/lib/wx/doc/prt/print_data.rb +6 -0
  161. data/lib/wx/doc/prt/print_dialog.rb +6 -0
  162. data/lib/wx/doc/prt/printer.rb +6 -0
  163. data/lib/wx/doc/prt/printer_dc.rb +8 -2
  164. data/lib/wx/doc/radio_box.rb +6 -0
  165. data/lib/wx/doc/rbn/ribbon_bar.rb +6 -0
  166. data/lib/wx/doc/rbn/ribbon_button_bar.rb +6 -0
  167. data/lib/wx/doc/rbn/ribbon_gallery.rb +6 -0
  168. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +6 -0
  169. data/lib/wx/doc/region_iterator.rb +6 -0
  170. data/lib/wx/doc/rtc/richtext_buffer.rb +28 -0
  171. data/lib/wx/doc/rtc/richtext_formatting_dialog.rb +68 -0
  172. data/lib/wx/doc/rtc/richtext_printing.rb +6 -0
  173. data/lib/wx/doc/rtc/richtext_style_sheet.rb +20 -0
  174. data/lib/wx/doc/scaled_dc.rb +7 -1
  175. data/lib/wx/doc/screen_dc.rb +6 -0
  176. data/lib/wx/doc/stock_objects.rb +6 -0
  177. data/lib/wx/doc/stream.rb +6 -0
  178. data/lib/wx/doc/svg_file_dc.rb +6 -0
  179. data/lib/wx/doc/system_settings.rb +6 -0
  180. data/lib/wx/doc/text_validator.rb +18 -0
  181. data/lib/wx/doc/textctrl.rb +89 -0
  182. data/lib/wx/doc/tree_event.rb +20 -0
  183. data/lib/wx/doc/treebook.rb +6 -0
  184. data/lib/wx/doc/v_list_box.rb +6 -0
  185. data/lib/wx/doc/variant.rb +6 -0
  186. data/lib/wx/doc/vboxsizer.rb +33 -0
  187. data/lib/wx/doc/window.rb +6 -0
  188. data/lib/wx/doc/window_disabler.rb +6 -0
  189. data/lib/wx/doc/xml_resource.rb +8 -0
  190. data/lib/wx/global_const.rb +4 -1
  191. data/lib/wx/grid/grid.rb +23 -3
  192. data/lib/wx/grid/keyword_defs.rb +8 -1
  193. data/lib/wx/grid/require.rb +4 -1
  194. data/lib/wx/grid.rb +4 -1
  195. data/lib/wx/helpers.rb +8 -1
  196. data/lib/wx/html/htmlhelpcontroller.rb +29 -3
  197. data/lib/wx/html/htmlwindow.rb +23 -12
  198. data/lib/wx/html/keyword_defs.rb +8 -1
  199. data/lib/wx/html/require.rb +4 -1
  200. data/lib/wx/html/simple_html_listbox.rb +3 -0
  201. data/lib/wx/html.rb +4 -1
  202. data/lib/wx/keyword_ctors.rb +22 -3
  203. data/lib/wx/keyword_defs.rb +55 -3
  204. data/lib/wx/pg/events.rb +4 -1
  205. data/lib/wx/pg/keyword_defs.rb +8 -1
  206. data/lib/wx/pg/pg_editor.rb +3 -0
  207. data/lib/wx/pg/pg_properties.rb +4 -1
  208. data/lib/wx/pg/pg_property.rb +18 -5
  209. data/lib/wx/pg/property_grid.rb +4 -1
  210. data/lib/wx/pg/property_grid_interface.rb +3 -0
  211. data/lib/wx/pg/require.rb +4 -1
  212. data/lib/wx/pg.rb +4 -1
  213. data/lib/wx/prt/keyword_defs.rb +8 -1
  214. data/lib/wx/prt/page_setup_dialog.rb +3 -0
  215. data/lib/wx/prt/previewframe.rb +5 -0
  216. data/lib/wx/prt/require.rb +4 -1
  217. data/lib/wx/prt.rb +4 -1
  218. data/lib/wx/rbn/events.rb +4 -1
  219. data/lib/wx/rbn/keyword_defs.rb +8 -1
  220. data/lib/wx/rbn/require.rb +5 -1
  221. data/lib/wx/rbn/ribbon_art_provider.rb +3 -1
  222. data/lib/wx/rbn/ribbon_bar.rb +3 -0
  223. data/lib/wx/rbn/ribbon_button_bar.rb +3 -0
  224. data/lib/wx/rbn/ribbon_control.rb +3 -0
  225. data/lib/wx/rbn/ribbon_gallery.rb +10 -0
  226. data/lib/wx/rbn/ribbon_page.rb +3 -0
  227. data/lib/wx/rbn/ribbon_panel.rb +3 -0
  228. data/lib/wx/rbn/ribbon_tool_bar.rb +3 -0
  229. data/lib/wx/rbn.rb +4 -1
  230. data/lib/wx/rtc/ext.rb +4 -1
  231. data/lib/wx/rtc/keyword_defs.rb +18 -7
  232. data/lib/wx/rtc/require.rb +8 -1
  233. data/lib/wx/rtc/richtext_buffer.rb +36 -0
  234. data/lib/wx/rtc/richtext_formatting_dialog.rb +88 -0
  235. data/lib/wx/rtc/richtext_style_organiser_dialog.rb +46 -0
  236. data/lib/wx/rtc/symbol_picker_dialog.rb +47 -0
  237. data/lib/wx/rtc.rb +5 -1
  238. data/lib/wx/stc/keyword_defs.rb +8 -1
  239. data/lib/wx/stc/require.rb +4 -1
  240. data/lib/wx/stc.rb +4 -1
  241. data/lib/wx/version.rb +5 -1
  242. data/lib/wx/wxruby/base.rb +4 -1
  243. data/lib/wx/wxruby/cmd/sampler.rb +4 -1
  244. data/lib/wx/wxruby/cmd/test.rb +4 -1
  245. data/lib/wx.rb +4 -1
  246. data/rakelib/build.rake +4 -1
  247. data/rakelib/build.rb +4 -1
  248. data/rakelib/config.rake +4 -1
  249. data/rakelib/configure.rb +4 -1
  250. data/rakelib/doc.rake +4 -1
  251. data/rakelib/doc.rb +5 -1
  252. data/rakelib/install.rake +4 -1
  253. data/rakelib/install.rb +4 -1
  254. data/rakelib/lib/config/cygwin.rb +4 -1
  255. data/rakelib/lib/config/linux.rb +4 -1
  256. data/rakelib/lib/config/macosx.rb +5 -2
  257. data/rakelib/lib/config/mingw.rb +4 -1
  258. data/rakelib/lib/config/netbsd.rb +4 -1
  259. data/rakelib/lib/config/unixish.rb +10 -7
  260. data/rakelib/lib/config.rb +7 -2
  261. data/rakelib/lib/core/include/enum.inc +4 -1
  262. data/rakelib/lib/core/include/funcall.inc +10 -64
  263. data/rakelib/lib/core/include/init.inc +3 -0
  264. data/rakelib/lib/core/mapping.rb +40 -55
  265. data/rakelib/lib/core/package.rb +20 -3
  266. data/rakelib/lib/core/parameter.rb +4 -1
  267. data/rakelib/lib/core/spec.rb +35 -18
  268. data/rakelib/lib/core/spec_helper.rb +38 -9
  269. data/rakelib/lib/director/about_dialog_info.rb +4 -1
  270. data/rakelib/lib/director/accelerator.rb +7 -2
  271. data/rakelib/lib/director/animation.rb +4 -1
  272. data/rakelib/lib/director/animation_ctrl.rb +4 -1
  273. data/rakelib/lib/director/any_button.rb +5 -2
  274. data/rakelib/lib/director/app.rb +16 -2
  275. data/rakelib/lib/director/app_traits.rb +71 -0
  276. data/rakelib/lib/director/art_provider.rb +4 -1
  277. data/rakelib/lib/director/aui_dock_art.rb +4 -1
  278. data/rakelib/lib/director/aui_floating_frame.rb +4 -1
  279. data/rakelib/lib/director/aui_manager.rb +12 -5
  280. data/rakelib/lib/director/aui_manager_event.rb +4 -1
  281. data/rakelib/lib/director/aui_mdi_child_frame.rb +25 -1
  282. data/rakelib/lib/director/aui_mdi_client_window.rb +4 -1
  283. data/rakelib/lib/director/aui_mdi_parent_frame.rb +4 -1
  284. data/rakelib/lib/director/aui_notebook.rb +12 -1
  285. data/rakelib/lib/director/aui_notebook_event.rb +4 -1
  286. data/rakelib/lib/director/aui_pane_info.rb +4 -1
  287. data/rakelib/lib/director/aui_tab_art.rb +52 -1
  288. data/rakelib/lib/director/aui_tab_ctrl.rb +14 -1
  289. data/rakelib/lib/director/aui_toolbar.rb +6 -3
  290. data/rakelib/lib/director/aui_toolbar_art.rb +52 -1
  291. data/rakelib/lib/director/aui_toolbar_event.rb +4 -1
  292. data/rakelib/lib/director/aui_toolbar_item.rb +4 -1
  293. data/rakelib/lib/director/banner_window.rb +26 -0
  294. data/rakelib/lib/director/bitmap.rb +11 -2
  295. data/rakelib/lib/director/bitmap_combobox.rb +5 -1
  296. data/rakelib/lib/director/book_ctrls.rb +13 -3
  297. data/rakelib/lib/director/brush.rb +4 -1
  298. data/rakelib/lib/director/busy_info.rb +4 -1
  299. data/rakelib/lib/director/button.rb +4 -1
  300. data/rakelib/lib/director/calendar_ctrl.rb +4 -1
  301. data/rakelib/lib/director/calendar_date_attr.rb +4 -1
  302. data/rakelib/lib/director/caret.rb +4 -1
  303. data/rakelib/lib/director/check_listbox.rb +4 -1
  304. data/rakelib/lib/director/choice.rb +4 -1
  305. data/rakelib/lib/director/clipboard.rb +4 -1
  306. data/rakelib/lib/director/collapsible_pane.rb +4 -1
  307. data/rakelib/lib/director/collapsible_pane_event.rb +4 -1
  308. data/rakelib/lib/director/colour.rb +9 -1
  309. data/rakelib/lib/director/colour_picker_ctrl.rb +4 -1
  310. data/rakelib/lib/director/combobox.rb +4 -1
  311. data/rakelib/lib/director/comboctrl.rb +94 -0
  312. data/rakelib/lib/director/config_base.rb +135 -0
  313. data/rakelib/lib/director/context_help_button.rb +4 -1
  314. data/rakelib/lib/director/control.rb +4 -1
  315. data/rakelib/lib/director/ctrl_with_items.rb +5 -1
  316. data/rakelib/lib/director/cursor.rb +6 -2
  317. data/rakelib/lib/director/data_format.rb +4 -1
  318. data/rakelib/lib/director/data_object.rb +4 -1
  319. data/rakelib/lib/director/data_object_simple_base.rb +4 -1
  320. data/rakelib/lib/director/date_event.rb +9 -2
  321. data/rakelib/lib/director/date_picker_ctrl.rb +4 -1
  322. data/rakelib/lib/director/dc.rb +19 -1
  323. data/rakelib/lib/director/defs.rb +4 -1
  324. data/rakelib/lib/director/derived_dc.rb +27 -20
  325. data/rakelib/lib/director/dialog.rb +49 -3
  326. data/rakelib/lib/director/dir_filterlist_ctrl.rb +4 -1
  327. data/rakelib/lib/director/dir_picker_ctrl.rb +4 -1
  328. data/rakelib/lib/director/drag_image.rb +9 -2
  329. data/rakelib/lib/director/dragdrop.rb +4 -1
  330. data/rakelib/lib/director/editable_listbox.rb +4 -1
  331. data/rakelib/lib/director/event.rb +11 -3
  332. data/rakelib/lib/director/event_blocker.rb +4 -1
  333. data/rakelib/lib/director/event_filter.rb +4 -1
  334. data/rakelib/lib/director/event_handler.rb +28 -11
  335. data/rakelib/lib/director/event_loop.rb +29 -0
  336. data/rakelib/lib/director/events.rb +5 -2
  337. data/rakelib/lib/director/file_dialog_custom_control.rb +28 -0
  338. data/rakelib/lib/director/file_dialog_customize_hook.rb +28 -0
  339. data/rakelib/lib/director/file_picker_ctrl.rb +4 -1
  340. data/rakelib/lib/director/file_system.rb +45 -0
  341. data/rakelib/lib/director/find_dialog_event.rb +4 -1
  342. data/rakelib/lib/director/find_replace_data.rb +4 -1
  343. data/rakelib/lib/director/font.rb +7 -3
  344. data/rakelib/lib/director/font_data.rb +9 -1
  345. data/rakelib/lib/director/font_picker_ctrl.rb +4 -1
  346. data/rakelib/lib/director/frame.rb +45 -33
  347. data/rakelib/lib/director/fs_file.rb +52 -1
  348. data/rakelib/lib/director/functions.rb +51 -49
  349. data/rakelib/lib/director/gdi_object.rb +4 -1
  350. data/rakelib/lib/director/gdicommon.rb +14 -9
  351. data/rakelib/lib/director/generic_dirctrl.rb +4 -1
  352. data/rakelib/lib/director/graphics_context.rb +113 -18
  353. data/rakelib/lib/director/graphics_object.rb +13 -2
  354. data/rakelib/lib/director/grid_cell_attr.rb +28 -4
  355. data/rakelib/lib/director/grid_cell_editor.rb +22 -5
  356. data/rakelib/lib/director/grid_cell_renderer.rb +16 -3
  357. data/rakelib/lib/director/grid_ctrl.rb +146 -5
  358. data/rakelib/lib/director/grid_range_select_event.rb +4 -1
  359. data/rakelib/lib/director/grid_table_base.rb +6 -1
  360. data/rakelib/lib/director/grid_table_message.rb +4 -1
  361. data/rakelib/lib/director/header_ctrl.rb +37 -0
  362. data/rakelib/lib/director/help_controller.rb +13 -6
  363. data/rakelib/lib/director/help_provider.rb +4 -1
  364. data/rakelib/lib/director/html_cell.rb +10 -3
  365. data/rakelib/lib/director/html_data_object.rb +4 -1
  366. data/rakelib/lib/director/html_easy_printing.rb +4 -1
  367. data/rakelib/lib/director/html_event.rb +4 -1
  368. data/rakelib/lib/director/html_help_data.rb +4 -1
  369. data/rakelib/lib/director/html_help_window.rb +30 -0
  370. data/rakelib/lib/director/html_listbox.rb +4 -1
  371. data/rakelib/lib/director/html_printout.rb +6 -1
  372. data/rakelib/lib/director/html_window.rb +10 -8
  373. data/rakelib/lib/director/hyperlink_ctrl.rb +32 -0
  374. data/rakelib/lib/director/hyperlink_event.rb +4 -1
  375. data/rakelib/lib/director/icon.rb +4 -1
  376. data/rakelib/lib/director/image.rb +58 -3
  377. data/rakelib/lib/director/image_list.rb +5 -1
  378. data/rakelib/lib/director/info_bar.rb +26 -0
  379. data/rakelib/lib/director/list_ctrl.rb +42 -9
  380. data/rakelib/lib/director/listbox.rb +4 -1
  381. data/rakelib/lib/director/locale.rb +7 -4
  382. data/rakelib/lib/director/log.rb +111 -6
  383. data/rakelib/lib/director/mdi_frame.rb +4 -1
  384. data/rakelib/lib/director/media_ctrl.rb +4 -1
  385. data/rakelib/lib/director/menu.rb +16 -3
  386. data/rakelib/lib/director/menu_bar.rb +13 -2
  387. data/rakelib/lib/director/menu_item.rb +6 -6
  388. data/rakelib/lib/director/mouse_state.rb +5 -2
  389. data/rakelib/lib/director/numeric_property_validator.rb +4 -1
  390. data/rakelib/lib/director/object.rb +5 -2
  391. data/rakelib/lib/director/page_setup_dialog.rb +4 -1
  392. data/rakelib/lib/director/palette.rb +54 -2
  393. data/rakelib/lib/director/panel.rb +4 -1
  394. data/rakelib/lib/director/pen.rb +5 -2
  395. data/rakelib/lib/director/pgarray_editor_dialog.rb +4 -1
  396. data/rakelib/lib/director/pgcell.rb +4 -1
  397. data/rakelib/lib/director/pgeditor.rb +4 -1
  398. data/rakelib/lib/director/pgmulti_button.rb +4 -1
  399. data/rakelib/lib/director/pgproperties.rb +4 -1
  400. data/rakelib/lib/director/pgproperty.rb +42 -3
  401. data/rakelib/lib/director/pgvalidation_info.rb +9 -1
  402. data/rakelib/lib/director/pickerbase.rb +4 -1
  403. data/rakelib/lib/director/platform_info.rb +9 -1
  404. data/rakelib/lib/director/popup_window.rb +14 -1
  405. data/rakelib/lib/director/preview_frame.rb +5 -2
  406. data/rakelib/lib/director/print_data.rb +4 -1
  407. data/rakelib/lib/director/print_dialog.rb +4 -1
  408. data/rakelib/lib/director/printer.rb +14 -6
  409. data/rakelib/lib/director/property_grid.rb +30 -1
  410. data/rakelib/lib/director/property_grid_event.rb +11 -1
  411. data/rakelib/lib/director/property_grid_interface.rb +20 -6
  412. data/rakelib/lib/director/property_grid_manager.rb +4 -1
  413. data/rakelib/lib/director/property_grid_page.rb +4 -1
  414. data/rakelib/lib/director/property_grid_page_state.rb +4 -1
  415. data/rakelib/lib/director/radio_box.rb +4 -1
  416. data/rakelib/lib/director/rearrange_list.rb +36 -0
  417. data/rakelib/lib/director/region.rb +5 -1
  418. data/rakelib/lib/director/region_iterator.rb +4 -1
  419. data/rakelib/lib/director/ribbon_art_provider.rb +9 -1
  420. data/rakelib/lib/director/ribbon_bar.rb +4 -1
  421. data/rakelib/lib/director/ribbon_bar_event.rb +4 -1
  422. data/rakelib/lib/director/ribbon_button_bar.rb +4 -1
  423. data/rakelib/lib/director/ribbon_button_bar_event.rb +4 -1
  424. data/rakelib/lib/director/ribbon_ctrl.rb +4 -1
  425. data/rakelib/lib/director/ribbon_gallery.rb +8 -3
  426. data/rakelib/lib/director/ribbon_gallery_event.rb +4 -1
  427. data/rakelib/lib/director/ribbon_page.rb +4 -1
  428. data/rakelib/lib/director/ribbon_panel.rb +4 -1
  429. data/rakelib/lib/director/ribbon_panel_event.rb +4 -1
  430. data/rakelib/lib/director/ribbon_tool_bar.rb +4 -1
  431. data/rakelib/lib/director/ribbon_tool_bar_event.rb +4 -1
  432. data/rakelib/lib/director/richtext_box.rb +61 -0
  433. data/rakelib/lib/director/richtext_buffer.rb +219 -22
  434. data/rakelib/lib/director/richtext_buffer_data_object.rb +4 -1
  435. data/rakelib/lib/director/richtext_composite_object.rb +174 -0
  436. data/rakelib/lib/director/richtext_ctrl.rb +157 -4
  437. data/rakelib/lib/director/richtext_event.rb +4 -1
  438. data/rakelib/lib/director/richtext_file_handler.rb +13 -1
  439. data/rakelib/lib/director/richtext_formatting_dialog.rb +44 -0
  440. data/rakelib/lib/director/richtext_header_footer_data.rb +4 -1
  441. data/rakelib/lib/director/richtext_image.rb +56 -0
  442. data/rakelib/lib/director/richtext_object.rb +272 -0
  443. data/rakelib/lib/director/richtext_paragraph_layout_box.rb +178 -0
  444. data/rakelib/lib/director/richtext_printing.rb +4 -1
  445. data/rakelib/lib/director/richtext_style_listbox.rb +37 -0
  446. data/rakelib/lib/director/richtext_style_organiser_dialog.rb +28 -0
  447. data/rakelib/lib/director/sash_layout_event.rb +4 -1
  448. data/rakelib/lib/director/sash_layout_window.rb +4 -1
  449. data/rakelib/lib/director/sash_window.rb +4 -1
  450. data/rakelib/lib/director/scroll_bar.rb +4 -1
  451. data/rakelib/lib/director/scrolled_t.rb +7 -4
  452. data/rakelib/lib/director/searchctrl.rb +4 -1
  453. data/rakelib/lib/director/sizer.rb +4 -1
  454. data/rakelib/lib/director/sizer_item.rb +9 -3
  455. data/rakelib/lib/director/slider.rb +4 -1
  456. data/rakelib/lib/director/splash_screen.rb +4 -1
  457. data/rakelib/lib/director/splitter_event.rb +4 -1
  458. data/rakelib/lib/director/splitter_window.rb +4 -1
  459. data/rakelib/lib/director/static_bitmap.rb +4 -1
  460. data/rakelib/lib/director/static_box.rb +5 -2
  461. data/rakelib/lib/director/status_bar.rb +5 -1
  462. data/rakelib/lib/director/styled_text_ctrl.rb +14 -2
  463. data/rakelib/lib/director/styled_text_event.rb +4 -1
  464. data/rakelib/lib/director/system_options.rb +4 -1
  465. data/rakelib/lib/director/system_settings.rb +4 -1
  466. data/rakelib/lib/director/task_bar_icon.rb +4 -1
  467. data/rakelib/lib/director/text_attr.rb +5 -2
  468. data/rakelib/lib/director/text_entry.rb +29 -1
  469. data/rakelib/lib/director/text_validator.rb +14 -3
  470. data/rakelib/lib/director/textctrl.rb +32 -3
  471. data/rakelib/lib/director/time_picker_ctrl.rb +4 -1
  472. data/rakelib/lib/director/timer.rb +4 -1
  473. data/rakelib/lib/director/tip_provider.rb +4 -1
  474. data/rakelib/lib/director/toggle_button.rb +4 -1
  475. data/rakelib/lib/director/tool_bar.rb +20 -1
  476. data/rakelib/lib/director/tool_tip.rb +5 -2
  477. data/rakelib/lib/director/top_level_window.rb +58 -51
  478. data/rakelib/lib/director/tree_ctrl.rb +5 -2
  479. data/rakelib/lib/director/tree_event.rb +28 -10
  480. data/rakelib/lib/director/uiaction_simulator.rb +4 -1
  481. data/rakelib/lib/director/utils.rb +9 -1
  482. data/rakelib/lib/director/validator.rb +4 -1
  483. data/rakelib/lib/director/variant.rb +22 -6
  484. data/rakelib/lib/director/vlistbox.rb +4 -1
  485. data/rakelib/lib/director/vscrolled_window.rb +4 -1
  486. data/rakelib/lib/director/window.rb +81 -82
  487. data/rakelib/lib/director/window_disabler.rb +4 -1
  488. data/rakelib/lib/director/with_images.rb +5 -2
  489. data/rakelib/lib/director/wizard_page.rb +4 -1
  490. data/rakelib/lib/director/xml_node.rb +4 -1
  491. data/rakelib/lib/director/xml_resource.rb +4 -1
  492. data/rakelib/lib/director.rb +27 -28
  493. data/rakelib/lib/ext/enum_chain.rb +4 -1
  494. data/rakelib/lib/extractor/class.rb +8 -6
  495. data/rakelib/lib/extractor/enum.rb +15 -2
  496. data/rakelib/lib/extractor/function.rb +17 -9
  497. data/rakelib/lib/extractor/module.rb +4 -1
  498. data/rakelib/lib/extractor/variable.rb +10 -7
  499. data/rakelib/lib/extractor.rb +7 -2
  500. data/rakelib/lib/generate/analyzer.rb +31 -21
  501. data/rakelib/lib/generate/base.rb +4 -1
  502. data/rakelib/lib/generate/doc/aui_manager.yaml +21 -0
  503. data/rakelib/lib/generate/doc/font.yaml +29 -0
  504. data/rakelib/lib/generate/doc/frame.yaml +23 -0
  505. data/rakelib/lib/generate/doc/fs_file.yaml +11 -0
  506. data/rakelib/lib/generate/doc/gdi_common.yaml +36 -0
  507. data/rakelib/lib/generate/doc/graphics_context.yaml +34 -0
  508. data/rakelib/lib/generate/doc/grid_cell_attr.yaml +21 -0
  509. data/rakelib/lib/generate/doc/grid_ctrl.yaml +25 -0
  510. data/rakelib/lib/generate/doc/gui_event_loop.yaml +12 -0
  511. data/rakelib/lib/generate/doc/help_controller.yaml +24 -0
  512. data/rakelib/lib/generate/doc/html_cell.yaml +11 -0
  513. data/rakelib/lib/generate/doc/html_help_controller.yaml +23 -0
  514. data/rakelib/lib/generate/doc/html_help_window.yaml +21 -0
  515. data/rakelib/lib/generate/doc/html_window.yaml +47 -0
  516. data/rakelib/lib/generate/doc/icon.yaml +11 -0
  517. data/rakelib/lib/generate/doc/image.yaml +87 -0
  518. data/rakelib/lib/generate/doc/keyboard_state.yaml +19 -0
  519. data/rakelib/lib/generate/doc/list_ctrl.yaml +77 -0
  520. data/rakelib/lib/generate/doc/locale.yaml +12 -0
  521. data/rakelib/lib/generate/doc/log.yaml +86 -0
  522. data/rakelib/lib/generate/doc/mdi_frame.yaml +12 -0
  523. data/rakelib/lib/generate/doc/memory_dc.yaml +42 -0
  524. data/rakelib/lib/generate/doc/menu.yaml +17 -0
  525. data/rakelib/lib/generate/doc/menu_item.yaml +43 -0
  526. data/rakelib/lib/generate/doc/message_dialog.yaml +36 -0
  527. data/rakelib/lib/generate/doc/non_owned_window.yaml +14 -0
  528. data/rakelib/lib/generate/doc/notebook.yaml +18 -0
  529. data/rakelib/lib/generate/doc/pen.yaml +11 -0
  530. data/rakelib/lib/generate/doc/pg_editor.yaml +11 -0
  531. data/rakelib/lib/generate/doc/pg_multi_button.yaml +78 -0
  532. data/rakelib/lib/generate/doc/pg_properties.yaml +244 -0
  533. data/rakelib/lib/generate/doc/pg_property.yaml +188 -0
  534. data/rakelib/lib/generate/doc/picker_base.yaml +19 -0
  535. data/rakelib/lib/generate/doc/platform_info.yaml +15 -0
  536. data/rakelib/lib/generate/doc/property_grid.yaml +23 -0
  537. data/rakelib/lib/generate/doc/property_grid_interface.yaml +30 -0
  538. data/rakelib/lib/generate/doc/property_grid_manager.yaml +40 -0
  539. data/rakelib/lib/generate/doc/property_sheet_dialog.yaml +26 -0
  540. data/rakelib/lib/generate/doc/rich_text_html_handler.yaml +11 -0
  541. data/rakelib/lib/generate/doc/scroll_bar.yaml +11 -0
  542. data/rakelib/lib/generate/doc/scrolled_canvas.yaml +37 -0
  543. data/rakelib/lib/generate/doc/scrolled_control.yaml +37 -0
  544. data/rakelib/lib/generate/doc/scrolled_window.yaml +37 -0
  545. data/rakelib/lib/generate/doc/sizer.yaml +69 -0
  546. data/rakelib/lib/generate/doc/splash_screen.yaml +18 -0
  547. data/rakelib/lib/generate/doc/static_box.yaml +52 -0
  548. data/rakelib/lib/generate/doc/static_box_sizer.yaml +22 -0
  549. data/rakelib/lib/generate/doc/styled_text_ctrl.yaml +18 -0
  550. data/rakelib/lib/generate/doc/svg_file_dc.yaml +11 -0
  551. data/rakelib/lib/generate/doc/symbol_picker_dialog.yaml +40 -0
  552. data/rakelib/lib/generate/doc/text_ctrl.yaml +19 -0
  553. data/rakelib/lib/generate/doc/text_entry.yaml +42 -0
  554. data/rakelib/lib/generate/doc/text_entry_dialog.yaml +17 -0
  555. data/rakelib/lib/generate/doc/timer_event.yaml +28 -0
  556. data/rakelib/lib/generate/doc/tool_bar.yaml +35 -0
  557. data/rakelib/lib/generate/doc/top_level_window.yaml +23 -0
  558. data/rakelib/lib/generate/doc/validator.yaml +12 -0
  559. data/rakelib/lib/generate/doc/variant.yaml +29 -0
  560. data/rakelib/lib/generate/doc/window.yaml +249 -0
  561. data/rakelib/lib/generate/doc/wizard_page_simple.yaml +14 -0
  562. data/rakelib/lib/generate/doc/xml_node.yaml +7 -0
  563. data/rakelib/lib/generate/doc/xml_resource.yaml +27 -0
  564. data/rakelib/lib/generate/doc.rb +54 -4
  565. data/rakelib/lib/generate/interface.rb +79 -110
  566. data/rakelib/lib/generate/rakedep.rb +4 -1
  567. data/rakelib/lib/specs/interfaces.rb +46 -20
  568. data/rakelib/lib/streams.rb +5 -1
  569. data/rakelib/lib/swig_runner.rb +71 -22
  570. data/rakelib/lib/typemap/array_int_selections.rb +4 -1
  571. data/rakelib/lib/typemap/common.rb +57 -2
  572. data/rakelib/lib/typemap/config.rb +55 -0
  573. data/rakelib/lib/typemap/data_format.rb +4 -1
  574. data/rakelib/lib/typemap/data_object_data.rb +4 -1
  575. data/rakelib/lib/typemap/datetime.rb +8 -1
  576. data/rakelib/lib/typemap/grid_client_data.rb +4 -1
  577. data/rakelib/lib/typemap/grid_coords.rb +37 -7
  578. data/rakelib/lib/typemap/html_cell.rb +4 -1
  579. data/rakelib/lib/typemap/io_streams.rb +4 -1
  580. data/rakelib/lib/typemap/pgcell.rb +4 -1
  581. data/rakelib/lib/typemap/pgeditor.rb +4 -1
  582. data/rakelib/lib/typemap/pgprop_arg.rb +4 -1
  583. data/rakelib/lib/typemap/pgproperty.rb +4 -1
  584. data/rakelib/lib/typemap/points_list.rb +4 -1
  585. data/rakelib/lib/typemap/richtext.rb +185 -11
  586. data/rakelib/lib/typemap/tree_itemid.rb +26 -1
  587. data/rakelib/lib/util/string.rb +4 -1
  588. data/rakelib/prepost.rake +4 -1
  589. data/rakelib/prepost.rb +4 -1
  590. data/rakelib/run.rake +4 -1
  591. data/samples/aui/aui.rb +8 -3
  592. data/samples/bigdemo/bigdemo.rb +9 -2
  593. data/samples/bigdemo/run.rb +9 -2
  594. data/samples/bigdemo/utils.rb +9 -1
  595. data/samples/calendar/calendar.rb +9 -4
  596. data/samples/caret/caret.rb +8 -3
  597. data/samples/controls/books.rb +8 -2
  598. data/samples/controls/controls.rb +33 -77
  599. data/samples/controls/get_item_sample.rb +8 -2
  600. data/samples/controls/htlbox.rb +10 -3
  601. data/samples/dialogs/dialogs.rb +9 -4
  602. data/samples/dialogs/wizard.rb +8 -3
  603. data/samples/dragdrop/dragdrop.rb +8 -3
  604. data/samples/drawing/bitmap.rb +8 -3
  605. data/samples/drawing/bitmap_image.rb +8 -3
  606. data/samples/drawing/graphics_drawing.rb +44 -33
  607. data/samples/drawing/image_prt.rb +8 -2
  608. data/samples/drawing/maths_images.rb +8 -3
  609. data/samples/drawing/rmagic_bitmap_image.rb +8 -3
  610. data/samples/etc/choice.rb +8 -3
  611. data/samples/etc/miniframe.rb +8 -3
  612. data/samples/etc/sash.rb +8 -3
  613. data/samples/etc/scrollwin.rb +8 -3
  614. data/samples/etc/system_settings.rb +8 -3
  615. data/samples/event/activation.rb +8 -3
  616. data/samples/event/event.rb +8 -3
  617. data/samples/event/threaded.rb +8 -3
  618. data/samples/event/update_ui_event.rb +8 -3
  619. data/samples/grid/grid.rb +9 -3
  620. data/samples/grid/gridtablebase.rb +8 -3
  621. data/samples/html/html.rb +8 -3
  622. data/samples/mdi/mdi.rb +8 -3
  623. data/samples/minimal/minimal.rb +8 -3
  624. data/samples/minimal/nothing.rb +8 -3
  625. data/samples/printing/printing.rb +8 -3
  626. data/samples/printing/printing2.rb +8 -2
  627. data/samples/propgrid/propgrid.rb +4 -1
  628. data/samples/propgrid/propgrid_minimal.rb +4 -2
  629. data/samples/propgrid/sample_props.rb +4 -1
  630. data/samples/ribbon/ribbon.rb +4 -1
  631. data/samples/sampler/editor.rb +4 -1
  632. data/samples/sampler/ext.rb +4 -1
  633. data/samples/sampler/sample.rb +13 -4
  634. data/samples/sampler/stc_editor.rb +4 -1
  635. data/samples/sampler/txt_editor.rb +4 -1
  636. data/samples/sampler.rb +11 -3
  637. data/samples/splash/splash.rb +4 -2
  638. data/samples/text/art/richtext/alignleft.xpm +24 -0
  639. data/samples/text/art/richtext/alignright.xpm +24 -0
  640. data/samples/text/art/richtext/bold.xpm +24 -0
  641. data/samples/text/art/richtext/centre.xpm +24 -0
  642. data/samples/text/art/richtext/copy.xpm +45 -0
  643. data/samples/text/art/richtext/cut.xpm +47 -0
  644. data/samples/text/art/richtext/font.xpm +25 -0
  645. data/samples/text/art/richtext/idea.xpm +47 -0
  646. data/samples/text/art/richtext/indentless.xpm +25 -0
  647. data/samples/text/art/richtext/indentmore.xpm +25 -0
  648. data/samples/text/art/richtext/italic.xpm +25 -0
  649. data/samples/text/art/richtext/open.xpm +58 -0
  650. data/samples/text/art/richtext/paste.xpm +47 -0
  651. data/samples/text/art/richtext/redo.xpm +59 -0
  652. data/samples/text/art/richtext/save.xpm +43 -0
  653. data/samples/text/art/richtext/smiley.xpm +42 -0
  654. data/samples/text/art/richtext/underline.xpm +25 -0
  655. data/samples/text/art/richtext/undo.xpm +59 -0
  656. data/samples/text/art/richtext/zebra.xpm +409 -0
  657. data/samples/text/rich_textctrl.rb +8 -3
  658. data/samples/text/richtext.rb +1824 -0
  659. data/samples/text/scintilla.rb +8 -3
  660. data/samples/text/textctrl.rb +21 -4
  661. data/samples/text/tn_richtext.png +0 -0
  662. data/samples/text/unicode.rb +9 -4
  663. data/samples/treectrl/treectrl.rb +10 -5
  664. data/samples/xrc/custom_xrc_sample.rb +8 -3
  665. data/samples/xrc/xrc_sample.rb +8 -3
  666. data/tests/art/test_art/bitmap/wxruby-128x128.png +0 -0
  667. data/tests/art/test_art/bitmap/wxruby-256x256.png +0 -0
  668. data/tests/art/test_art/bitmap/wxruby-64x64.png +0 -0
  669. data/tests/lib/item_container_tests.rb +3 -0
  670. data/tests/lib/text_entry_tests.rb +3 -0
  671. data/tests/lib/wxapp_runner.rb +3 -0
  672. data/tests/lib/wxframe_runner.rb +81 -3
  673. data/tests/test_app_event_filter.rb +3 -0
  674. data/tests/test_app_traits.rb +33 -0
  675. data/tests/test_art.rb +31 -0
  676. data/tests/test_art_provider.rb +3 -0
  677. data/tests/test_aui.rb +65 -0
  678. data/tests/test_basic.rb +5 -1
  679. data/tests/test_box_sizer.rb +164 -0
  680. data/tests/test_clipboard.rb +3 -0
  681. data/tests/test_config.rb +150 -0
  682. data/tests/test_dc.rb +3 -0
  683. data/tests/test_dialog.rb +3 -0
  684. data/tests/test_event_handling.rb +3 -0
  685. data/tests/test_events.rb +3 -0
  686. data/tests/test_ext_controls.rb +286 -3
  687. data/tests/test_file_dialog.rb +55 -0
  688. data/tests/test_font.rb +8 -5
  689. data/tests/test_gdi_object.rb +3 -0
  690. data/tests/test_geometry.rb +4 -0
  691. data/tests/test_grid_sizer.rb +151 -0
  692. data/tests/test_intl.rb +3 -0
  693. data/tests/test_item_data.rb +3 -0
  694. data/tests/test_list_ctrl.rb +56 -0
  695. data/tests/test_log.rb +226 -0
  696. data/tests/test_proof_check.rb +52 -0
  697. data/tests/test_richtext.rb +204 -0
  698. data/tests/test_std_controls.rb +99 -31
  699. data/tests/test_timer.rb +98 -0
  700. data/tests/test_variant.rb +3 -0
  701. data/tests/test_window.rb +10 -8
  702. data/tests/testapp.rb +4 -0
  703. data/tests/testapp_noframe.rb +4 -0
  704. metadata +146 -3
  705. 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
  module WXRuby3
@@ -25,8 +28,9 @@ module WXRuby3
25
28
  'wxFont::SetDefaultEncoding'
26
29
  spec.rename_for_ruby 'create' => 'wxFont::New'
27
30
  spec.ignore [ 'wxFont::SetNativeFontInfo(const wxNativeFontInfo &)', 'wxFont::GetNativeFontInfo', 'wxFont::operator!=' ]
28
- spec.ignore 'wxFont::wxFont(const wxNativeFontInfo &)'
29
- if Config.instance.wx_port == :wxQT
31
+ spec.ignore 'wxFont::wxFont(const wxNativeFontInfo &)',
32
+ 'wxFont::New(const wxNativeFontInfo &)'
33
+ if Config.instance.wx_port == :wxqt
30
34
  # not implemented
31
35
  spec.ignore 'wxFont::AddPrivateFont'
32
36
  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
@@ -15,6 +18,11 @@ module WXRuby3
15
18
  # add copy ctor missing from XML docs
16
19
  spec.extend_interface 'wxFontData',
17
20
  'wxFontData(const wxFontData & other)'
21
+ spec.add_swig_code <<~__HEREDOC
22
+ %constant int wxFONTRESTRICT_NONE = wxFONTRESTRICT_NONE;
23
+ %constant int wxFONTRESTRICT_SCALABLE = wxFONTRESTRICT_SCALABLE;
24
+ %constant int wxFONTRESTRICT_FIXEDPITCH = wxFONTRESTRICT_FIXEDPITCH;
25
+ __HEREDOC
18
26
  end
19
27
  end # class FontData
20
28
 
@@ -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
@@ -30,93 +33,91 @@ module WXRuby3
30
33
  // sprintf in ruby, then pass the composed message directly to the
31
34
  // log. This also avoids format string attacks.
32
35
 
36
+ static WxRuby_ID __filename_id("filename");
37
+ static WxRuby_ID __line_id("line");
38
+ static WxRuby_ID __func_id("func");
39
+ static WxRuby_ID __comp_id("component");
40
+
41
+ static const char* __wxruby_component = "wxapp";
42
+
43
+ // As the wxw logger will only make synchronous use of the filename, func and component pointers while
44
+ // processing the log entry and never store them we simply gather pointers but no copies
45
+ static void do_log(wxLogLevel lvl, int argc, VALUE *argv, ...)
46
+ {
47
+ const char* filename = nullptr;
48
+ int line = 0;
49
+ const char* func = nullptr;
50
+ const char* component = __wxruby_component;
51
+
52
+ if (argc>1 && TYPE(argv[argc-1]) == T_HASH)
53
+ {
54
+ VALUE rb_hash = argv[--argc];
55
+ VALUE rb_fnm = rb_hash_aref(rb_hash, ID2SYM(__filename_id.get_id()));
56
+ if (!NIL_P(rb_fnm) && TYPE(rb_fnm) == T_STRING) filename = StringValuePtr(rb_fnm);
57
+ VALUE rb_ln = rb_hash_aref(rb_hash, ID2SYM(__line_id.get_id()));
58
+ if (!NIL_P(rb_ln) && TYPE(rb_ln) == T_FIXNUM) line = NUM2INT(rb_ln);
59
+ VALUE rb_func = rb_hash_aref(rb_hash, ID2SYM(__func_id.get_id()));
60
+ if (!NIL_P(rb_func) && TYPE(rb_func) == T_STRING) func = StringValuePtr(rb_func);
61
+ VALUE rb_comp = rb_hash_aref(rb_hash, ID2SYM(__comp_id.get_id()));
62
+ if (!NIL_P(rb_comp) && TYPE(rb_comp) == T_STRING) component = StringValuePtr(rb_comp);
63
+ }
64
+
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
+ }
71
+ }
72
+
33
73
  // Log a Wx message with the given level to the current Wx log output
34
74
  static VALUE log_generic(int argc, VALUE *argv, VALUE self)
35
75
  {
36
- if ( wxLog::IsEnabled() )
37
- {
38
- wxLogLevel lvl = static_cast<wxLogLevel> (NUM2INT(argv[0]));
39
- VALUE log_msg = argc==2 ? argv[1] : rb_f_sprintf(argc-1, &argv[1]);
40
- wxLog::OnLog( lvl,
41
- wxString(StringValuePtr(log_msg), wxConvUTF8),
42
- time(NULL) );
43
- }
76
+ wxLogLevel lvl = static_cast<wxLogLevel> (NUM2INT(argv[0]));
77
+ do_log(lvl, argc-1, &argv[1]);
44
78
  return Qnil;
45
79
  }
46
80
 
47
81
  // Log a Wx low prio Message to the current Wx log output
48
82
  static VALUE log_info(int argc, VALUE *argv, VALUE self)
49
83
  {
50
- if ( wxLog::IsEnabled() )
51
- {
52
- VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
53
- wxLog::OnLog( wxLOG_Info,
54
- wxString(StringValuePtr(log_msg), wxConvUTF8),
55
- time(NULL) );
56
- }
84
+ do_log(wxLOG_Info, argc, argv);
57
85
  return Qnil;
58
86
  }
59
87
 
60
88
  // Log a Wx verbose Message to the current Wx log output
61
89
  static VALUE log_verbose(int argc, VALUE *argv, VALUE self)
62
90
  {
63
- if ( wxLog::IsEnabled() && wxLog::GetVerbose () )
64
- {
65
- VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
66
- wxLog::OnLog( wxLOG_Info,
67
- wxString(StringValuePtr(log_msg), wxConvUTF8),
68
- time(NULL) );
69
- }
91
+ if (wxLog::GetVerbose ())
92
+ do_log(wxLOG_Info, argc, argv);
70
93
  return Qnil;
71
94
  }
72
95
 
73
96
  // Log a Wx Message to the current Wx log output
74
97
  static VALUE log_message(int argc, VALUE *argv, VALUE self)
75
98
  {
76
- if ( wxLog::IsEnabled() )
77
- {
78
- VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
79
- wxLog::OnLog( wxLOG_Message,
80
- wxString(StringValuePtr(log_msg), wxConvUTF8),
81
- time(NULL) );
82
- }
99
+ do_log(wxLOG_Message, argc, argv);
83
100
  return Qnil;
84
101
  }
85
102
 
86
103
  // Log a Wx Warning message to the current Wx log output
87
104
  static VALUE log_warning(int argc, VALUE *argv, VALUE self)
88
105
  {
89
- if ( wxLog::IsEnabled() )
90
- {
91
- VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
92
- wxLog::OnLog( wxLOG_Warning,
93
- wxString(StringValuePtr(log_msg), wxConvUTF8),
94
- time(NULL) );
95
- }
106
+ do_log(wxLOG_Warning, argc, argv);
96
107
  return Qnil;
97
108
  }
98
109
 
99
110
  // Log an error message to the current output
100
111
  static VALUE log_error(int argc, VALUE *argv, VALUE self)
101
112
  {
102
- if ( wxLog::IsEnabled() )
103
- {
104
- VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
105
- wxLog::OnLog( wxLOG_Error,
106
- wxString(StringValuePtr(log_msg), wxConvUTF8),
107
- time(NULL) );
108
- }
113
+ do_log(wxLOG_Error, argc, argv);
109
114
  return Qnil;
110
115
  }
111
116
 
112
117
  // Log a debug message
113
118
  static VALUE log_debug(int argc, VALUE *argv, VALUE self)
114
119
  {
115
- if (wxLog::IsLevelEnabled(wxLOG_Debug, wxASCII_STR(wxLOG_COMPONENT)))
116
- {
117
- VALUE log_msg = argc==1 ? argv[0] : rb_f_sprintf(argc, argv);
118
- wxLogDebug(wxString(StringValuePtr(log_msg), wxConvUTF8));
119
- }
120
+ do_log(wxLOG_Debug, argc, argv);
120
121
  return Qnil;
121
122
  }
122
123
 
@@ -196,6 +197,7 @@ module WXRuby3
196
197
  }
197
198
  __CODE
198
199
  end
200
+ spec.map_apply 'int *OUTPUT' => ['int *indexDefaultExtension']
199
201
  # hardcoded interface declarations
200
202
  spec.add_interface_code <<~__HEREDOC
201
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