wxruby3 1.6.1 → 1.7.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 (530) hide show
  1. checksums.yaml +4 -4
  2. data/CREDITS.md +32 -25
  3. data/INSTALL.md +19 -4
  4. data/README.md +5 -5
  5. data/assets/repo-social-preview.odg +0 -0
  6. data/assets/repo-social-preview.xcf +0 -0
  7. data/ext/wxruby3/include/wxRubyApp.h +58 -45
  8. data/ext/wxruby3/include/wxruby-runtime.h +78 -1
  9. data/ext/wxruby3/swig/common.i +2 -2
  10. data/ext/wxruby3/swig/custom/director.swg +2 -2
  11. data/ext/wxruby3/swig/custom/rubyprimtypes.swg +59 -15
  12. data/ext/wxruby3/swig/custom/rubyrun.swg +4 -0
  13. data/ext/wxruby3/swig/custom/rubytracking.swg +4 -0
  14. data/ext/wxruby3/swig/custom/swiglabels.swg +129 -0
  15. data/ext/wxruby3/swig/custom/swigrun.swg +15 -0
  16. data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +20 -0
  17. data/ext/wxruby3/swig/mark_free_impl.i +152 -88
  18. data/ext/wxruby3/swig/memory_management.i +1 -0
  19. data/ext/wxruby3/swig/wx.i +73 -44
  20. data/lib/wx/aui/events/evt_list.rb +148 -0
  21. data/lib/wx/aui/require.rb +0 -1
  22. data/lib/wx/core/calendar_ctrl.rb +15 -0
  23. data/lib/wx/core/clipboard.rb +9 -13
  24. data/lib/wx/core/config.rb +1 -1
  25. data/lib/wx/core/events/evt_list.rb +1458 -0
  26. data/lib/wx/core/font/encoding.rb +113 -0
  27. data/lib/wx/core/generic_validator.rb +83 -31
  28. data/lib/wx/core/tipwindow.rb +16 -0
  29. data/lib/wx/doc/aui/auitabctrl.rb +35 -0
  30. data/lib/wx/doc/config.rb +2 -2
  31. data/lib/wx/doc/functions.rb +1 -1
  32. data/lib/wx/doc/gen/about_dialog_info.rb +330 -0
  33. data/lib/wx/doc/gen/accelerator.rb +178 -0
  34. data/lib/wx/doc/gen/activity_indicator.rb +83 -0
  35. data/lib/wx/doc/gen/affine_matrix2d.rb +284 -0
  36. data/lib/wx/doc/gen/animation.rb +275 -0
  37. data/lib/wx/doc/gen/animation_ctrl.rb +300 -0
  38. data/lib/wx/doc/gen/any_button.rb +191 -0
  39. data/lib/wx/doc/gen/app.rb +463 -0
  40. data/lib/wx/doc/gen/app_traits.rb +396 -0
  41. data/lib/wx/doc/gen/art_provider.rb +605 -0
  42. data/lib/wx/doc/gen/aui/aui_dock_art.rb +455 -0
  43. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +54 -0
  44. data/lib/wx/doc/gen/aui/aui_manager.rb +847 -0
  45. data/lib/wx/doc/gen/aui/aui_manager_event.rb +131 -0
  46. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +180 -0
  47. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +59 -0
  48. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +130 -0
  49. data/lib/wx/doc/gen/aui/aui_notebook.rb +631 -0
  50. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +233 -0
  51. data/lib/wx/doc/gen/aui/aui_pane_info.rb +769 -0
  52. data/lib/wx/doc/gen/aui/aui_tab_art.rb +352 -0
  53. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +14 -0
  54. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +510 -0
  55. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +340 -0
  56. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +244 -0
  57. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +257 -0
  58. data/lib/wx/doc/gen/aui/event_list.rb +179 -0
  59. data/lib/wx/doc/gen/banner_window.rb +124 -0
  60. data/lib/wx/doc/gen/bitmap.rb +731 -0
  61. data/lib/wx/doc/gen/bitmap_button.rb +123 -0
  62. data/lib/wx/doc/gen/bitmap_combo_box.rb +221 -0
  63. data/lib/wx/doc/gen/book_ctrl_base.rb +273 -0
  64. data/lib/wx/doc/gen/book_ctrl_event.rb +66 -0
  65. data/lib/wx/doc/gen/box_sizer.rb +85 -0
  66. data/lib/wx/doc/gen/brush.rb +251 -0
  67. data/lib/wx/doc/gen/busy_info.rb +157 -0
  68. data/lib/wx/doc/gen/button.rb +182 -0
  69. data/lib/wx/doc/gen/calculate_layout_event.rb +62 -0
  70. data/lib/wx/doc/gen/calendar_ctrl.rb +505 -0
  71. data/lib/wx/doc/gen/calendar_date_attr.rb +138 -0
  72. data/lib/wx/doc/gen/calendar_event.rb +147 -0
  73. data/lib/wx/doc/gen/caret.rb +97 -0
  74. data/lib/wx/doc/gen/check_box.rb +175 -0
  75. data/lib/wx/doc/gen/check_list_box.rb +121 -0
  76. data/lib/wx/doc/gen/choice.rb +175 -0
  77. data/lib/wx/doc/gen/choicebook.rb +116 -0
  78. data/lib/wx/doc/gen/client_dc.rb +43 -0
  79. data/lib/wx/doc/gen/clipboard.rb +144 -0
  80. data/lib/wx/doc/gen/collapsible_pane.rb +138 -0
  81. data/lib/wx/doc/gen/collapsible_pane_event.rb +46 -0
  82. data/lib/wx/doc/gen/colour.rb +333 -0
  83. data/lib/wx/doc/gen/colour_dialog.rb +190 -0
  84. data/lib/wx/doc/gen/colour_picker_ctrl.rb +110 -0
  85. data/lib/wx/doc/gen/colour_picker_event.rb +77 -0
  86. data/lib/wx/doc/gen/combo_box.rb +292 -0
  87. data/lib/wx/doc/gen/combo_ctrl.rb +662 -0
  88. data/lib/wx/doc/gen/command_link_button.rb +134 -0
  89. data/lib/wx/doc/gen/config_base.rb +10 -0
  90. data/lib/wx/doc/gen/context_help_button.rb +109 -0
  91. data/lib/wx/doc/gen/control.rb +277 -0
  92. data/lib/wx/doc/gen/control_with_items.rb +253 -0
  93. data/lib/wx/doc/gen/core.rb +45 -0
  94. data/lib/wx/doc/gen/credential_entry_dialog.rb +137 -0
  95. data/lib/wx/doc/gen/cursor.rb +193 -0
  96. data/lib/wx/doc/gen/data_format.rb +85 -0
  97. data/lib/wx/doc/gen/data_object.rb +436 -0
  98. data/lib/wx/doc/gen/data_object_simple_base.rb +10 -0
  99. data/lib/wx/doc/gen/date_event.rb +49 -0
  100. data/lib/wx/doc/gen/date_picker_ctrl.rb +161 -0
  101. data/lib/wx/doc/gen/dc.rb +1631 -0
  102. data/lib/wx/doc/gen/dc_overlay.rb +102 -0
  103. data/lib/wx/doc/gen/defs.rb +2802 -0
  104. data/lib/wx/doc/gen/dial_up_event.rb +45 -0
  105. data/lib/wx/doc/gen/dial_up_manager.rb +149 -0
  106. data/lib/wx/doc/gen/dialog.rb +541 -0
  107. data/lib/wx/doc/gen/dir_dialog.rb +164 -0
  108. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +90 -0
  109. data/lib/wx/doc/gen/dir_picker_ctrl.rb +125 -0
  110. data/lib/wx/doc/gen/display.rb +238 -0
  111. data/lib/wx/doc/gen/drag_drop.rb +299 -0
  112. data/lib/wx/doc/gen/drag_image.rb +116 -0
  113. data/lib/wx/doc/gen/editable_list_box.rb +109 -0
  114. data/lib/wx/doc/gen/event.rb +990 -0
  115. data/lib/wx/doc/gen/event_blocker.rb +50 -0
  116. data/lib/wx/doc/gen/event_filter.rb +92 -0
  117. data/lib/wx/doc/gen/event_list.rb +1644 -0
  118. data/lib/wx/doc/gen/events.rb +2809 -0
  119. data/lib/wx/doc/gen/evt_handler.rb +229 -0
  120. data/lib/wx/doc/gen/ext_help_controller.rb +109 -0
  121. data/lib/wx/doc/gen/file_ctrl.rb +231 -0
  122. data/lib/wx/doc/gen/file_ctrl_event.rb +83 -0
  123. data/lib/wx/doc/gen/file_dialog.rb +353 -0
  124. data/lib/wx/doc/gen/file_dialog_custom_control.rb +165 -0
  125. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +158 -0
  126. data/lib/wx/doc/gen/file_dir_picker_event.rb +100 -0
  127. data/lib/wx/doc/gen/file_picker_ctrl.rb +132 -0
  128. data/lib/wx/doc/gen/file_system.rb +232 -0
  129. data/lib/wx/doc/gen/find_dialog_event.rb +126 -0
  130. data/lib/wx/doc/gen/find_replace_data.rb +60 -0
  131. data/lib/wx/doc/gen/find_replace_dialog.rb +58 -0
  132. data/lib/wx/doc/gen/flex_grid_sizer.rb +199 -0
  133. data/lib/wx/doc/gen/font.rb +1379 -0
  134. data/lib/wx/doc/gen/font_data.rb +151 -0
  135. data/lib/wx/doc/gen/font_dialog.rb +88 -0
  136. data/lib/wx/doc/gen/font_picker_ctrl.rb +143 -0
  137. data/lib/wx/doc/gen/font_picker_event.rb +65 -0
  138. data/lib/wx/doc/gen/frame.rb +352 -0
  139. data/lib/wx/doc/gen/fs_file.rb +337 -0
  140. data/lib/wx/doc/gen/functions.rb +10 -0
  141. data/lib/wx/doc/gen/gauge.rb +157 -0
  142. data/lib/wx/doc/gen/gb_sizer_item.rb +68 -0
  143. data/lib/wx/doc/gen/gcdc.rb +46 -0
  144. data/lib/wx/doc/gen/gdi_common.rb +1271 -0
  145. data/lib/wx/doc/gen/gdi_object.rb +31 -0
  146. data/lib/wx/doc/gen/generic_about_dialog.rb +140 -0
  147. data/lib/wx/doc/gen/generic_dir_ctrl.rb +223 -0
  148. data/lib/wx/doc/gen/geometry.rb +661 -0
  149. data/lib/wx/doc/gen/graphics_context.rb +1184 -0
  150. data/lib/wx/doc/gen/graphics_object.rb +750 -0
  151. data/lib/wx/doc/gen/grid/event_list.rb +191 -0
  152. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +40 -0
  153. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +280 -0
  154. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +35 -0
  155. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +37 -0
  156. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +49 -0
  157. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +35 -0
  158. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +46 -0
  159. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +38 -0
  160. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +45 -0
  161. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +40 -0
  162. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +197 -0
  163. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +39 -0
  164. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +44 -0
  165. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +45 -0
  166. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +79 -0
  167. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +46 -0
  168. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +35 -0
  169. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +108 -0
  170. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +35 -0
  171. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +49 -0
  172. data/lib/wx/doc/gen/grid/grid_ctrl.rb +3002 -0
  173. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +95 -0
  174. data/lib/wx/doc/gen/grid/grid_event.rb +129 -0
  175. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +104 -0
  176. data/lib/wx/doc/gen/grid/grid_size_event.rb +85 -0
  177. data/lib/wx/doc/gen/grid/grid_string_table.rb +142 -0
  178. data/lib/wx/doc/gen/grid/grid_table_base.rb +317 -0
  179. data/lib/wx/doc/gen/grid/grid_table_message.rb +81 -0
  180. data/lib/wx/doc/gen/grid_bag_sizer.rb +323 -0
  181. data/lib/wx/doc/gen/grid_sizer.rb +195 -0
  182. data/lib/wx/doc/gen/gui_event_loop.rb +159 -0
  183. data/lib/wx/doc/gen/h_scrolled_window.rb +562 -0
  184. data/lib/wx/doc/gen/header_ctrl.rb +880 -0
  185. data/lib/wx/doc/gen/header_ctrl_event.rb +133 -0
  186. data/lib/wx/doc/gen/help_controller.rb +195 -0
  187. data/lib/wx/doc/gen/help_provider.rb +98 -0
  188. data/lib/wx/doc/gen/html/event_list.rb +38 -0
  189. data/lib/wx/doc/gen/html/html_cell.rb +536 -0
  190. data/lib/wx/doc/gen/html/html_cell_event.rb +69 -0
  191. data/lib/wx/doc/gen/html/html_data_object.rb +42 -0
  192. data/lib/wx/doc/gen/html/html_easy_printing.rb +203 -0
  193. data/lib/wx/doc/gen/html/html_help_controller.rb +340 -0
  194. data/lib/wx/doc/gen/html/html_help_data.rb +159 -0
  195. data/lib/wx/doc/gen/html/html_help_window.rb +258 -0
  196. data/lib/wx/doc/gen/html/html_link_event.rb +41 -0
  197. data/lib/wx/doc/gen/html/html_list_box.rb +346 -0
  198. data/lib/wx/doc/gen/html/html_printout.rb +109 -0
  199. data/lib/wx/doc/gen/html/html_window.rb +461 -0
  200. data/lib/wx/doc/gen/hyperlink_ctrl.rb +311 -0
  201. data/lib/wx/doc/gen/hyperlink_event.rb +44 -0
  202. data/lib/wx/doc/gen/icon.rb +267 -0
  203. data/lib/wx/doc/gen/icon_location.rb +40 -0
  204. data/lib/wx/doc/gen/image.rb +1371 -0
  205. data/lib/wx/doc/gen/image_list.rb +168 -0
  206. data/lib/wx/doc/gen/info_bar.rb +195 -0
  207. data/lib/wx/doc/gen/keyboard_state.rb +140 -0
  208. data/lib/wx/doc/gen/list_box.rb +304 -0
  209. data/lib/wx/doc/gen/list_ctrl.rb +1774 -0
  210. data/lib/wx/doc/gen/list_event.rb +208 -0
  211. data/lib/wx/doc/gen/listbook.rb +116 -0
  212. data/lib/wx/doc/gen/locale.rb +4293 -0
  213. data/lib/wx/doc/gen/log.rb +603 -0
  214. data/lib/wx/doc/gen/mdi_client_window.rb +47 -0
  215. data/lib/wx/doc/gen/mdi_frame.rb +324 -0
  216. data/lib/wx/doc/gen/media_ctrl.rb +269 -0
  217. data/lib/wx/doc/gen/media_event.rb +117 -0
  218. data/lib/wx/doc/gen/memory_dc.rb +174 -0
  219. data/lib/wx/doc/gen/menu.rb +509 -0
  220. data/lib/wx/doc/gen/menu_bar.rb +287 -0
  221. data/lib/wx/doc/gen/menu_item.rb +362 -0
  222. data/lib/wx/doc/gen/message_dialog.rb +238 -0
  223. data/lib/wx/doc/gen/mini_frame.rb +108 -0
  224. data/lib/wx/doc/gen/mirror_dc.rb +22 -0
  225. data/lib/wx/doc/gen/mouse_state.rb +150 -0
  226. data/lib/wx/doc/gen/multi_choice_dialog.rb +80 -0
  227. data/lib/wx/doc/gen/non_owned_window.rb +49 -0
  228. data/lib/wx/doc/gen/notebook.rb +278 -0
  229. data/lib/wx/doc/gen/num_validator.rb +37 -0
  230. data/lib/wx/doc/gen/number_entry_dialog.rb +93 -0
  231. data/lib/wx/doc/gen/object.rb +59 -0
  232. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +395 -0
  233. data/lib/wx/doc/gen/paint_dc.rb +27 -0
  234. data/lib/wx/doc/gen/palette.rb +92 -0
  235. data/lib/wx/doc/gen/panel.rb +127 -0
  236. data/lib/wx/doc/gen/pen.rb +511 -0
  237. data/lib/wx/doc/gen/persistence_manager.rb +135 -0
  238. data/lib/wx/doc/gen/persistent_object.rb +52 -0
  239. data/lib/wx/doc/gen/persistent_window.rb +241 -0
  240. data/lib/wx/doc/gen/pg/event_list.rb +106 -0
  241. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +54 -0
  242. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +292 -0
  243. data/lib/wx/doc/gen/pg/pg_cell.rb +177 -0
  244. data/lib/wx/doc/gen/pg/pg_editor.rb +721 -0
  245. data/lib/wx/doc/gen/pg/pg_multi_button.rb +152 -0
  246. data/lib/wx/doc/gen/pg/pg_properties.rb +2829 -0
  247. data/lib/wx/doc/gen/pg/pg_property.rb +2078 -0
  248. data/lib/wx/doc/gen/pg/pg_validation_info.rb +344 -0
  249. data/lib/wx/doc/gen/pg/property_grid.rb +740 -0
  250. data/lib/wx/doc/gen/pg/property_grid_event.rb +184 -0
  251. data/lib/wx/doc/gen/pg/property_grid_interface.rb +1098 -0
  252. data/lib/wx/doc/gen/pg/property_grid_manager.rb +415 -0
  253. data/lib/wx/doc/gen/pg/property_grid_page.rb +354 -0
  254. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +165 -0
  255. data/lib/wx/doc/gen/picker_base.rb +152 -0
  256. data/lib/wx/doc/gen/platform_info.rb +622 -0
  257. data/lib/wx/doc/gen/popup_window.rb +107 -0
  258. data/lib/wx/doc/gen/progress_dialog.rb +100 -0
  259. data/lib/wx/doc/gen/property_sheet_dialog.rb +216 -0
  260. data/lib/wx/doc/gen/prt/event_list.rb +17 -0
  261. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +44 -0
  262. data/lib/wx/doc/gen/prt/post_script_dc.rb +30 -0
  263. data/lib/wx/doc/gen/prt/preview_frame.rb +78 -0
  264. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +151 -0
  265. data/lib/wx/doc/gen/prt/print_data.rb +804 -0
  266. data/lib/wx/doc/gen/prt/print_dialog.rb +55 -0
  267. data/lib/wx/doc/gen/prt/printer.rb +518 -0
  268. data/lib/wx/doc/gen/prt/printer_dc.rb +37 -0
  269. data/lib/wx/doc/gen/query_layout_info_event.rb +106 -0
  270. data/lib/wx/doc/gen/radio_box.rb +306 -0
  271. data/lib/wx/doc/gen/radio_button.rb +159 -0
  272. data/lib/wx/doc/gen/rbn/event_list.rb +136 -0
  273. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +1132 -0
  274. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +308 -0
  275. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +45 -0
  276. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +458 -0
  277. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +63 -0
  278. data/lib/wx/doc/gen/rbn/ribbon_control.rb +143 -0
  279. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +229 -0
  280. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +55 -0
  281. data/lib/wx/doc/gen/rbn/ribbon_page.rb +174 -0
  282. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +270 -0
  283. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +45 -0
  284. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +360 -0
  285. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +42 -0
  286. data/lib/wx/doc/gen/rearrange_ctrl.rb +78 -0
  287. data/lib/wx/doc/gen/rearrange_list.rb +123 -0
  288. data/lib/wx/doc/gen/region.rb +380 -0
  289. data/lib/wx/doc/gen/region_iterator.rb +76 -0
  290. data/lib/wx/doc/gen/rich_tool_tip.rb +154 -0
  291. data/lib/wx/doc/gen/rtc/event_list.rb +125 -0
  292. data/lib/wx/doc/gen/rtc/rich_text_box.rb +445 -0
  293. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +1188 -0
  294. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +41 -0
  295. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +538 -0
  296. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +2103 -0
  297. data/lib/wx/doc/gen/rtc/rich_text_event.rb +173 -0
  298. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +181 -0
  299. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +319 -0
  300. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +193 -0
  301. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +102 -0
  302. data/lib/wx/doc/gen/rtc/rich_text_image.rb +337 -0
  303. data/lib/wx/doc/gen/rtc/rich_text_object.rb +2922 -0
  304. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +1240 -0
  305. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +258 -0
  306. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +344 -0
  307. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +227 -0
  308. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +59 -0
  309. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +169 -0
  310. data/lib/wx/doc/gen/sash_event.rb +147 -0
  311. data/lib/wx/doc/gen/sash_layout_window.rb +232 -0
  312. data/lib/wx/doc/gen/sash_window.rb +171 -0
  313. data/lib/wx/doc/gen/scaled_dc.rb +10 -0
  314. data/lib/wx/doc/gen/screen_dc.rb +30 -0
  315. data/lib/wx/doc/gen/scroll_bar.rb +204 -0
  316. data/lib/wx/doc/gen/scrolled_canvas.rb +410 -0
  317. data/lib/wx/doc/gen/scrolled_control.rb +410 -0
  318. data/lib/wx/doc/gen/scrolled_window.rb +430 -0
  319. data/lib/wx/doc/gen/search_ctrl.rb +159 -0
  320. data/lib/wx/doc/gen/secret_store.rb +116 -0
  321. data/lib/wx/doc/gen/simplebook.rb +110 -0
  322. data/lib/wx/doc/gen/single_choice_dialog.rb +89 -0
  323. data/lib/wx/doc/gen/sizer.rb +945 -0
  324. data/lib/wx/doc/gen/sizer_item.rb +244 -0
  325. data/lib/wx/doc/gen/slider.rb +342 -0
  326. data/lib/wx/doc/gen/spin_button.rb +157 -0
  327. data/lib/wx/doc/gen/spin_ctrl.rb +231 -0
  328. data/lib/wx/doc/gen/spin_ctrl_double.rb +192 -0
  329. data/lib/wx/doc/gen/spin_double_event.rb +55 -0
  330. data/lib/wx/doc/gen/spin_event.rb +51 -0
  331. data/lib/wx/doc/gen/splash_screen.rb +113 -0
  332. data/lib/wx/doc/gen/splitter_event.rb +99 -0
  333. data/lib/wx/doc/gen/splitter_window.rb +498 -0
  334. data/lib/wx/doc/gen/static_bitmap.rb +256 -0
  335. data/lib/wx/doc/gen/static_box.rb +180 -0
  336. data/lib/wx/doc/gen/static_box_sizer.rb +85 -0
  337. data/lib/wx/doc/gen/static_line.rb +83 -0
  338. data/lib/wx/doc/gen/static_text.rb +127 -0
  339. data/lib/wx/doc/gen/status_bar.rb +290 -0
  340. data/lib/wx/doc/gen/stc/event_list.rb +221 -0
  341. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +4474 -0
  342. data/lib/wx/doc/gen/stc/styled_text_event.rb +8762 -0
  343. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +129 -0
  344. data/lib/wx/doc/gen/svg_file_dc.rb +164 -0
  345. data/lib/wx/doc/gen/system_options.rb +129 -0
  346. data/lib/wx/doc/gen/system_settings.rb +507 -0
  347. data/lib/wx/doc/gen/task_bar_icon.rb +127 -0
  348. data/lib/wx/doc/gen/task_bar_icon_event.rb +88 -0
  349. data/lib/wx/doc/gen/text_attr.rb +756 -0
  350. data/lib/wx/doc/gen/text_ctrl.rb +1033 -0
  351. data/lib/wx/doc/gen/text_entry.rb +441 -0
  352. data/lib/wx/doc/gen/text_entry_dialog.rb +220 -0
  353. data/lib/wx/doc/gen/text_validator.rb +245 -0
  354. data/lib/wx/doc/gen/time_picker_ctrl.rb +128 -0
  355. data/lib/wx/doc/gen/timer.rb +119 -0
  356. data/lib/wx/doc/gen/timer_event.rb +68 -0
  357. data/lib/wx/doc/gen/tip_provider.rb +63 -0
  358. data/lib/wx/doc/gen/tip_window.rb +51 -0
  359. data/lib/wx/doc/gen/toggle_button.rb +182 -0
  360. data/lib/wx/doc/gen/tool_bar.rb +890 -0
  361. data/lib/wx/doc/gen/tool_tip.rb +86 -0
  362. data/lib/wx/doc/gen/toolbook.rb +118 -0
  363. data/lib/wx/doc/gen/top_level_window.rb +497 -0
  364. data/lib/wx/doc/gen/tree_ctrl.rb +1052 -0
  365. data/lib/wx/doc/gen/tree_event.rb +127 -0
  366. data/lib/wx/doc/gen/treebook.rb +180 -0
  367. data/lib/wx/doc/gen/ui_action_simulator.rb +109 -0
  368. data/lib/wx/doc/gen/utils.rb +273 -0
  369. data/lib/wx/doc/gen/v_list_box.rb +272 -0
  370. data/lib/wx/doc/gen/v_scrolled_canvas.rb +195 -0
  371. data/lib/wx/doc/gen/v_scrolled_window.rb +191 -0
  372. data/lib/wx/doc/gen/validator.rb +68 -0
  373. data/lib/wx/doc/gen/variant.rb +294 -0
  374. data/lib/wx/doc/gen/window.rb +2917 -0
  375. data/lib/wx/doc/gen/window_dc.rb +38 -0
  376. data/lib/wx/doc/gen/window_disabler.rb +30 -0
  377. data/lib/wx/doc/gen/with_images.rb +84 -0
  378. data/lib/wx/doc/gen/wizard.rb +257 -0
  379. data/lib/wx/doc/gen/wizard_event.rb +113 -0
  380. data/lib/wx/doc/gen/wizard_page.rb +65 -0
  381. data/lib/wx/doc/gen/wizard_page_simple.rb +88 -0
  382. data/lib/wx/doc/gen/wrap_sizer.rb +79 -0
  383. data/lib/wx/doc/gen/xml_node.rb +316 -0
  384. data/lib/wx/doc/gen/xml_resource.rb +320 -0
  385. data/lib/wx/doc/generic_validator.rb +5 -0
  386. data/lib/wx/doc/tip_window.rb +18 -6
  387. data/lib/wx/grid/events/evt_list.rb +166 -0
  388. data/lib/wx/html/events/evt_list.rb +27 -0
  389. data/lib/wx/html/simple_html_listbox.rb +46 -33
  390. data/lib/wx/keyword_defs.rb +9 -0
  391. data/lib/wx/pg/events/evt_list.rb +73 -0
  392. data/lib/wx/pg/pg_property.rb +26 -0
  393. data/lib/wx/pg/property_grid_interface.rb +2 -2
  394. data/lib/wx/rbn/events/evt_list.rb +102 -0
  395. data/lib/wx/rtc/events/evt_list.rb +98 -0
  396. data/lib/wx/rtc/ext/rich_text_ctrl.rb +24 -0
  397. data/lib/wx/stc/events/evt_list.rb +178 -0
  398. data/lib/wx/version.rb +1 -1
  399. data/lib/wx/wxruby/cmd/setup.rb +6 -0
  400. data/rakelib/configure.rb +9 -0
  401. data/rakelib/gem.rake +3 -2
  402. data/rakelib/lib/config/linux.rb +1 -1
  403. data/rakelib/lib/config/macosx.rb +15 -1
  404. data/rakelib/lib/config/pkgman/linux.rb +7 -2
  405. data/rakelib/lib/config/unixish.rb +3 -3
  406. data/rakelib/lib/config.rb +16 -5
  407. data/rakelib/lib/core/include/swigdirector.inc +3 -3
  408. data/rakelib/lib/core/include/swigrubyerrors.inc +4 -8
  409. data/rakelib/lib/core/include/swigrubyrun.inc +20 -4
  410. data/rakelib/lib/core/include/swigrun.inc +189 -0
  411. data/rakelib/lib/core/package.rb +3 -1
  412. data/rakelib/lib/director/accelerator.rb +1 -1
  413. data/rakelib/lib/director/animation.rb +1 -0
  414. data/rakelib/lib/director/app_traits.rb +1 -1
  415. data/rakelib/lib/director/aui_manager.rb +21 -14
  416. data/rakelib/lib/director/aui_mdi_child_frame.rb +2 -0
  417. data/rakelib/lib/director/aui_mdi_parent_frame.rb +4 -0
  418. data/rakelib/lib/director/aui_notebook.rb +20 -3
  419. data/rakelib/lib/director/aui_tab_ctrl.rb +64 -106
  420. data/rakelib/lib/director/calendar_ctrl.rb +72 -14
  421. data/rakelib/lib/director/clipboard.rb +2 -0
  422. data/rakelib/lib/director/data_object.rb +15 -7
  423. data/rakelib/lib/director/date_picker_ctrl.rb +4 -1
  424. data/rakelib/lib/director/display.rb +81 -0
  425. data/rakelib/lib/director/event.rb +33 -16
  426. data/rakelib/lib/director/event_handler.rb +27 -2
  427. data/rakelib/lib/director/functions.rb +9 -0
  428. data/rakelib/lib/director/geometry.rb +5 -0
  429. data/rakelib/lib/director/grid_ctrl.rb +123 -28
  430. data/rakelib/lib/director/help_provider.rb +1 -1
  431. data/rakelib/lib/director/html_listbox.rb +16 -3
  432. data/rakelib/lib/director/hvscrolled.rb +7 -106
  433. data/rakelib/lib/director/image_list.rb +1 -0
  434. data/rakelib/lib/director/mdi_frame.rb +4 -0
  435. data/rakelib/lib/director/menu.rb +56 -15
  436. data/rakelib/lib/director/menu_bar.rb +62 -0
  437. data/rakelib/lib/director/menu_item.rb +7 -1
  438. data/rakelib/lib/director/num_validator.rb +27 -0
  439. data/rakelib/lib/director/numeric_property_validator.rb +9 -0
  440. data/rakelib/lib/director/popup_window.rb +2 -0
  441. data/rakelib/lib/director/preview_frame.rb +29 -6
  442. data/rakelib/lib/director/printer.rb +59 -5
  443. data/rakelib/lib/director/property_grid.rb +37 -18
  444. data/rakelib/lib/director/property_grid_interface.rb +10 -8
  445. data/rakelib/lib/director/property_grid_manager.rb +99 -39
  446. data/rakelib/lib/director/property_grid_page.rb +60 -0
  447. data/rakelib/lib/director/rich_tooltip.rb +22 -0
  448. data/rakelib/lib/director/richtext_ctrl.rb +5 -0
  449. data/rakelib/lib/director/richtext_object.rb +13 -4
  450. data/rakelib/lib/director/richtext_style_listbox.rb +4 -1
  451. data/rakelib/lib/director/scrolled_t.rb +3 -0
  452. data/rakelib/lib/director/searchctrl.rb +1 -0
  453. data/rakelib/lib/director/task_bar_icon.rb +14 -8
  454. data/rakelib/lib/director/text_validator.rb +9 -0
  455. data/rakelib/lib/director/tip_window.rb +117 -6
  456. data/rakelib/lib/director/tool_bar.rb +6 -0
  457. data/rakelib/lib/director/validator.rb +12 -0
  458. data/rakelib/lib/director/variant.rb +36 -20
  459. data/rakelib/lib/director/vlistbox.rb +25 -22
  460. data/rakelib/lib/director/window.rb +10 -1
  461. data/rakelib/lib/director/xml_resource.rb +6 -0
  462. data/rakelib/lib/generate/doc/aui_manager.yaml +1 -1
  463. data/rakelib/lib/generate/doc/rich_tool_tip.yaml +26 -0
  464. data/rakelib/lib/generate/doc.rb +12 -7
  465. data/rakelib/lib/generate/interface.rb +16 -1
  466. data/rakelib/lib/specs/interfaces.rb +3 -1
  467. data/rakelib/lib/swig_runner.rb +10 -10
  468. data/rakelib/lib/typemap/aui_tabctrl.rb +46 -0
  469. data/rakelib/lib/typemap/common.rb +3 -3
  470. data/rakelib/lib/typemap/print_page_range.rb +32 -8
  471. data/samples/art/wxruby-512x512.png +0 -0
  472. data/samples/calendar/calendar.rb +64 -1
  473. data/samples/dialogs/dialogs.rb +172 -0
  474. data/samples/dialogs/tip.xpm +157 -0
  475. data/samples/drawing/maths_images.rb +1 -1
  476. data/samples/event/event.rb +1 -1
  477. data/samples/printing/printing2.rb +1 -1
  478. data/samples/sampler.rb +26 -8
  479. data/samples/text/textctrl.rb +2 -2
  480. data/samples/treectrl/treectrl.rb +2 -2
  481. data/tests/lib/leaked_process_event_exception_test.rb +1 -1
  482. data/tests/lib/leaked_queued_event_exception_test.rb +1 -1
  483. data/tests/lib/wxapp_runner.rb +31 -41
  484. data/tests/lib/wxframe_runner.rb +23 -11
  485. data/tests/lib/wxrb_test.rb +58 -0
  486. data/tests/test_app_event_filter.rb +1 -1
  487. data/tests/test_app_exit_exception.rb +3 -3
  488. data/tests/test_app_init_exception.rb +3 -3
  489. data/tests/test_app_traits.rb +24 -21
  490. data/tests/test_art.rb +7 -7
  491. data/tests/test_art_provider.rb +1 -1
  492. data/tests/test_basic.rb +2 -2
  493. data/tests/test_book_controls.rb +1 -1
  494. data/tests/test_box_sizer.rb +1 -1
  495. data/tests/test_clipboard.rb +5 -5
  496. data/tests/test_combo_ctrl.rb +2 -2
  497. data/tests/test_config.rb +11 -1
  498. data/tests/test_dc.rb +1 -1
  499. data/tests/test_dialog.rb +1 -1
  500. data/tests/test_event_handling.rb +1 -1
  501. data/tests/test_events.rb +1 -1
  502. data/tests/test_exceptions.rb +2 -2
  503. data/tests/test_ext_controls.rb +10 -10
  504. data/tests/test_file_dialog.rb +1 -1
  505. data/tests/test_font.rb +1 -1
  506. data/tests/test_gdi_object.rb +1 -1
  507. data/tests/test_geometry.rb +2 -2
  508. data/tests/test_grid_sizer.rb +2 -2
  509. data/tests/test_intl.rb +1 -1
  510. data/tests/test_item_data.rb +12 -12
  511. data/tests/test_list_ctrl.rb +1 -1
  512. data/tests/test_log.rb +2 -2
  513. data/tests/test_media_ctrl.rb +1 -1
  514. data/tests/test_menu.rb +114 -43
  515. data/tests/test_proof_check.rb +1 -1
  516. data/tests/test_propgrid.rb +31 -31
  517. data/tests/test_richtext.rb +10 -24
  518. data/tests/test_secret_store.rb +1 -1
  519. data/tests/test_sizer.rb +1 -1
  520. data/tests/test_std_controls.rb +8 -8
  521. data/tests/test_styled_text_ctrl.rb +1 -1
  522. data/tests/test_timer.rb +1 -1
  523. data/tests/test_tree_ctrl.rb +1 -1
  524. data/tests/test_validators.rb +79 -36
  525. data/tests/test_variant.rb +1 -1
  526. data/tests/test_window.rb +11 -11
  527. data/tests/testapp.rb +2 -2
  528. data/tests/testapp_noframe.rb +2 -2
  529. metadata +400 -11
  530. data/lib/wx/aui/aui_tab_ctrl.rb +0 -18
@@ -71,6 +71,66 @@ module WXRuby3
71
71
  map_in ignore: true, code: '$1= true;'
72
72
  end
73
73
  spec.suppress_warning(473, 'wxPropertyGridPage::DoInsert')
74
+ # customize mark function
75
+ spec.add_header_code <<~__HEREDOC
76
+ WXRUBY_TRACE_GUARD(WxRubyTraceGCMarkPropGridPage, "GC_MARK_PROPGRID_PAGE")
77
+
78
+ extern void WXRuby_GC_mark_wxPropertyGridPage(wxPropertyGridPage* wx_pgp)
79
+ {
80
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPropGridPage, 2)
81
+ WXRUBY_TRACE("> WXRuby_GC_mark_wxPropertyGridPage : " << wx_pgp)
82
+ WXRUBY_TRACE_END
83
+
84
+ #ifdef __WXRB_DEBUG__
85
+ long l = 0, n = 0;
86
+ #endif
87
+ VALUE rb_root_prop = SWIG_RubyInstanceFor(wx_pgp->GetRoot());
88
+ if (!NIL_P(rb_root_prop))
89
+ {
90
+ rb_gc_mark(rb_root_prop);
91
+ #ifdef __WXRB_DEBUG__
92
+ ++n;
93
+ #endif
94
+ }
95
+ // mark all properties
96
+ wxPGVIterator it =
97
+ wx_pgp->GetVIterator(wxPG_ITERATOR_FLAGS_ALL | wxPG_IT_CHILDREN(wxPG_ITERATOR_FLAGS_ALL));
98
+ // iterate all
99
+ for ( ; !it.AtEnd(); it.Next() )
100
+ {
101
+ #ifdef __WXRB_DEBUG__
102
+ ++l;
103
+ #endif
104
+ wxPGProperty* wx_p = it.GetProperty();
105
+ VALUE rb_prop = SWIG_RubyInstanceFor(wx_p);
106
+ if (!RB_NIL_P(rb_prop))
107
+ {
108
+ rb_gc_mark(rb_prop);
109
+ #ifdef __WXRB_DEBUG__
110
+ ++n;
111
+ #endif
112
+ }
113
+ }
114
+
115
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPropGridPage, 2)
116
+ WXRUBY_TRACE("< WXRuby_GC_mark_wxPropertyGridPage: iterated " << l << " properties; marked " << n)
117
+ WXRUBY_TRACE_END
118
+ }
119
+
120
+ static void GC_mark_wxPropertyGridPage(void* ptr)
121
+ {
122
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPropGridPage, 2)
123
+ WXRUBY_TRACE("> GC_mark_wxPropertyGridPage : " << ptr)
124
+ WXRUBY_TRACE_END
125
+
126
+ WXRuby_GC_mark_wxPropertyGridPage((wxPropertyGridPage*) ptr);
127
+
128
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPropGridPage, 2)
129
+ WXRUBY_TRACE("< GC_mark_wxPropertyGridPage : " << ptr)
130
+ WXRUBY_TRACE_END
131
+ }
132
+ __HEREDOC
133
+ spec.add_swig_code '%markfunc wxPropertyGridPage "GC_mark_wxPropertyGridPage";'
74
134
  end
75
135
  end # class PropertyGridPage
76
136
 
@@ -0,0 +1,22 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 wxWidgets interface director
7
+ ###
8
+
9
+ module WXRuby3
10
+
11
+ class Director
12
+
13
+ class RichToolTip < Director
14
+
15
+ def setup
16
+ super
17
+ end
18
+ end # class RichToolTip
19
+
20
+ end # class Director
21
+
22
+ end # module WXRuby3
@@ -101,9 +101,14 @@ module WXRuby3
101
101
  wxRichTextCtrl::KeyboardNavigate
102
102
  wxRichTextCtrl::PositionToXY
103
103
  wxRichTextCtrl::XYToPosition
104
+ wxRichTextCtrl::PrepareContextMenu
104
105
  ]
105
106
  # this method contains worrisome code and is unclearly documented so I doubt it's usefulness
106
107
  spec.ignore 'wxRichTextCtrl::FindContainerAtPoint'
108
+ # redefine for GC specs
109
+ spec.ignore 'wxRichTextCtrl::SetContextMenu', ignore_doc: false
110
+ spec.extend_interface 'wxRichTextCtrl', 'void SetContextMenu(wxMenu *new_context_menu)'
111
+ spec.disown 'wxMenu *new_context_menu'
107
112
  # do not think having these proxied is going to bring much for wxRuby and suppressing them
108
113
  # prevents code bloat
109
114
  spec.no_proxy %w[
@@ -48,17 +48,26 @@ module WXRuby3
48
48
  'wxRichTextSelection',
49
49
  'wxRichTextProperties'
50
50
  spec.add_header_code <<~__HEREDOC
51
+ WXRUBY_TRACE_GUARD(WxRubyTraceFreeRichTextObject, "GC_FREE_RTOBJECT")
52
+
51
53
  extern void GC_RichTextObjectFreeFunc(void* ptr)
52
54
  {
55
+ WXRUBY_TRACE_IF(WxRubyTraceFreeRichTextObject, 2)
56
+ WXRUBY_TRACE("> GC_RichTextObjectFreeFunc : " << ptr)
57
+ WXRUBY_TRACE_END
58
+
53
59
  SWIG_RubyRemoveTracking(ptr);
54
60
  if (ptr)
55
61
  {
56
- #ifdef __WXRB_DEBUG__
57
- if (wxRuby_TraceLevel()>1)
58
- std::wcout << "GC_RichTextObjectFreeFunc(" << ptr << ")" << std::endl;
59
- #endif
62
+ WXRUBY_TRACE_IF(WxRubyTraceFreeRichTextObject, 3)
63
+ WXRUBY_TRACE("| GC_RichTextObjectFreeFunc : dereferencing")
64
+ WXRUBY_TRACE_END
60
65
  ((wxRichTextObject*)ptr)->Dereference();
61
66
  }
67
+
68
+ WXRUBY_TRACE_IF(WxRubyTraceFreeRichTextObject, 2)
69
+ WXRUBY_TRACE("< GC_RichTextObjectFreeFunc : " << ptr)
70
+ WXRUBY_TRACE_END
62
71
  }
63
72
  __HEREDOC
64
73
  spec.make_abstract 'wxRichTextObject'
@@ -20,9 +20,12 @@ module WXRuby3
20
20
  def setup
21
21
  super
22
22
  spec.items << 'wxRichTextStyleListCtrl' << 'wxRichTextStyleComboCtrl'
23
+ spec.gc_as_window('wxRichTextStyleListBox')
23
24
  spec.include 'wx/odcombo.h'
24
25
  spec.add_header_code 'extern VALUE wxRuby_RichTextStyleDefinition2Ruby(const wxRichTextStyleDefinition *wx_rtsd, int own);'
25
- if Config.instance.wx_version_check('3.3.0') > 0
26
+ if Config.instance.wx_version_check('3.3.1') > 0
27
+ spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', 'wxVScrolledCanvas', 'wxWindow', 'wxEvtHandler', 'wxObject'])
28
+ elsif Config.instance.wx_version_check('3.3.0') > 0
26
29
  spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', 'wxVScrolledWindow', 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
27
30
  else
28
31
  spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', { 'wxVScrolledWindow' => 'wxHScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
@@ -61,6 +61,9 @@ module WXRuby3
61
61
  end
62
62
  spec.ignore 'wxScrolled::OnDraw'
63
63
  spec.ignore 'wxScrolled::GetViewStart(int *,int *)'
64
+ if Config.instance.wx_version_check('3.3.2') >= 0
65
+ spec.ignore 'wxScrolled::GetViewStartPixels(int *,int *) const'
66
+ end
64
67
  spec.map_apply 'int * OUTPUT' => 'int *'
65
68
  end
66
69
 
@@ -20,6 +20,7 @@ module WXRuby3
20
20
  spec.include_mixin 'wxSearchCtrl', { 'Wx::TextEntry' => 'wxTextEntryBase' }
21
21
  spec.suppress_warning(473, 'wxSearchCtrl::GetMenu')
22
22
  spec.override_inheritance_chain('wxSearchCtrl', %w[wxControl wxWindow wxEvtHandler wxObject])
23
+ spec.disown 'wxMenu *'
23
24
  end
24
25
  end # class SearchCtrl
25
26
 
@@ -35,25 +35,31 @@ module WXRuby3
35
35
  # this one is protected so ignored by default but we want it here
36
36
  # (we do not want GetPopupMenu available for override in Ruby)
37
37
  spec.regard %w[wxTaskBarIcon::CreatePopupMenu]
38
- # This is used for CreatePopupMenu, a virtual method which is
39
- # overridden in user subclasses of TaskBarIcon to create the menu over
40
- # the icon.
41
- #
42
- # The Wx::Menu needs to be protected from GC so the typemap stores the
38
+ if Config.instance.wx_version_check('3.1.5') >= 0
39
+ spec.regard %w[wxTaskBarIcon::GetPopupMenu]
40
+ end
41
+ # This is used for CreatePopupMenu and possibly GetPopupMenu, virtual methods which can be
42
+ # overridden in user subclasses of TaskBarIcon to provide the menu over the icon.
43
+ # In the case of GetPopupMenu the menu will be used but not deleted so it can be stored in
44
+ # a member variable and reused.
45
+ # In the case of CreatePopupMenu the menu is disowned and deleted of use. The Wx::Menu Ruby
46
+ # instance than needs to be protected from GC so the typemap stores the
43
47
  # object returned by the ruby method in an instance variable so it's
44
48
  # marked. It also handles the special case where +nil+ is returned, to
45
49
  # signal to Wx that no menu is to be shown.
46
50
  spec.map 'wxMenu *' do
47
51
  map_directorout code: <<~__CODE
48
- rb_iv_set(swig_get_self(), "@__popmenu__", $1);
52
+ static const std::string create_popup_menu("CreatePopupMenu");
53
+ bool disown = (std::string("$symname") == create_popup_menu);
54
+ if (disown) rb_iv_set(swig_get_self(), "@__popmenu__", $1);
49
55
  if (NIL_P($1))
50
56
  {
51
- $result = NULL;
57
+ $result = nullptr;
52
58
  }
53
59
  else
54
60
  {
55
61
  void * ptr;
56
- int swig_res = SWIG_ConvertPtr(result, &ptr, $1_descriptor, 0 | SWIG_POINTER_DISOWN);
62
+ int swig_res = SWIG_ConvertPtr(result, &ptr, $1_descriptor, disown ? SWIG_POINTER_DISOWN : 0);
57
63
  if (!SWIG_IsOK(swig_res))
58
64
  {
59
65
  Swig::DirectorTypeMismatchException::raise(swig_get_self(), "$symname", rb_eTypeError,
@@ -32,7 +32,16 @@ module WXRuby3
32
32
  }
33
33
  virtual ~WXRubyTextValidator()
34
34
  {
35
+ // All Validators are EvtHandlers, so prevent any pending events being
36
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
37
+ this->SetEvtHandlerEnabled(false);
35
38
  wxRuby_ReleaseEvtHandlerProcs(this);
39
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
40
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
41
+ {
42
+ SWIG_RubyUnlinkObjects(this);
43
+ SWIG_RubyRemoveTracking(this);
44
+ }
36
45
  }
37
46
 
38
47
  virtual wxObject* Clone() const override
@@ -19,12 +19,123 @@ module WXRuby3
19
19
  spec.disable_proxies
20
20
  spec.ignore 'wxTipWindow::SetTipWindowPtr'
21
21
  spec.ignore 'wxTipWindow::wxTipWindow'
22
- spec.add_extend_code 'wxTipWindow', <<~__HEREDOC
23
- wxTipWindow(wxWindow* parent, const wxString& text, wxCoord maxLength = 100)
24
- {
25
- return new wxTipWindow(parent, text, maxLength);
26
- }
27
- __HEREDOC
22
+ if Config.instance.wx_version_check('3.3.2') >= 0
23
+ spec.ignore 'wxTipWindow::Create'
24
+ # need to re-implement this
25
+ spec.ignore 'wxTipWindow::New', ignore_doc: false
26
+ # Rubified version
27
+ spec.add_extend_code 'wxTipWindow', <<~__HEREDOC
28
+ static VALUE New(wxWindow* parent, const wxString& text, wxCoord maxLength = 100, wxRect* rectBounds = nullptr)
29
+ {
30
+ wxTipWindow::Ref tipRef = wxTipWindow::New(parent, text, maxLength, rectBounds);
31
+
32
+ return SWIG_NewPointerObj((new wxTipWindow::Ref(std::move(tipRef))), SWIGTYPE_p_wxTipWindow__Ref, SWIG_POINTER_OWN | 0 );
33
+ }
34
+ __HEREDOC
35
+ # add Ruby-style methods
36
+ spec.add_extend_code 'wxTipWindow::Ref', <<~__HEREDOC
37
+ VALUE is_ok()
38
+ {
39
+ return *$self ? Qtrue : Qfalse;
40
+ }
41
+
42
+ wxTipWindow* get_tip_window()
43
+ {
44
+ return $self->Ref::operator->();
45
+ }
46
+ __HEREDOC
47
+ # and aliases
48
+ spec.add_swig_code '%alias wxTipWindow::Ref::is_ok "ok?";'
49
+ spec.add_swig_code '%alias wxTipWindow::Ref::get_tip_window "tip_window";'
50
+ spec.rename_for_ruby 'TipWindow_Ref' => 'wxTipWindow::Ref'
51
+ spec.rename_for_ruby 'new_tip' => 'wxTipWindow::New'
52
+ else
53
+ spec.make_abstract 'wxTipWindow'
54
+ # provide custom wxRuby reference class
55
+ spec.add_header_code <<~__HEREDOC
56
+ class WXTipWindow_Ref
57
+ {
58
+ public:
59
+ WXTipWindow_Ref() {}
60
+ WXTipWindow_Ref& operator=(WXTipWindow_Ref&& o)
61
+ {
62
+ if (_ptr != o._ptr)
63
+ {
64
+ if (_ptr)
65
+ {
66
+ _ptr->SetTipWindowPtr(nullptr);
67
+ }
68
+
69
+ _ptr = o._ptr;
70
+ if (_ptr)
71
+ {
72
+ o._ptr = nullptr;
73
+ _ptr->SetTipWindowPtr(&_ptr);
74
+ }
75
+ }
76
+ return *this;
77
+ }
78
+
79
+ bool is_ok()
80
+ {
81
+ return _ptr ? true : false;
82
+ }
83
+
84
+ wxTipWindow* get_tip_window()
85
+ {
86
+ return _ptr;
87
+ }
88
+
89
+ wxTipWindow* _ptr = {};
90
+ };
91
+ __HEREDOC
92
+ spec.add_swig_code <<~__HEREDOC
93
+ %alias WXTipWindow_Ref::is_ok "ok?";
94
+ %alias WXTipWindow_Ref::get_tip_window "tip_window";
95
+
96
+ class WXTipWindow_Ref
97
+ {
98
+ private:
99
+ WXTipWindow_Ref();
100
+
101
+ public:
102
+ bool is_ok();
103
+
104
+ wxTipWindow* get_tip_window();
105
+ };
106
+ __HEREDOC
107
+ # add constructor method
108
+ spec.add_extend_code 'wxTipWindow', <<~__HEREDOC
109
+ static VALUE New_Tip(wxWindow* parent, const wxString& text, wxCoord maxLength = 100, wxRect* rectBounds = nullptr)
110
+ {
111
+ std::unique_ptr<WXTipWindow_Ref> retval(new WXTipWindow_Ref);
112
+ std::unique_ptr<wxTipWindow> temp(new wxTipWindow(parent, text, maxLength, &retval->_ptr, rectBounds));
113
+ retval->_ptr = temp.release();
114
+
115
+ return SWIG_NewPointerObj(retval.release(), SWIGTYPE_p_WXTipWindow_Ref, SWIG_POINTER_OWN | 0 );
116
+ }
117
+ __HEREDOC
118
+ end
119
+ end
120
+
121
+ def doc_generator
122
+ TipWindowDocGenerator.new(self)
123
+ end
124
+
125
+ end
126
+
127
+ class TipWindowDocGenerator < DocGenerator
128
+
129
+ def gen_class_doc_members(fdoc, clsdef, cls_members, alias_methods)
130
+ super
131
+ fdoc.doc.puts 'Constructs a new TipWindow object which is immediately shown.'
132
+ fdoc.doc.puts 'Returns a {Wx::TipWindow::Ref}.'
133
+ fdoc.doc.puts '@param parent [Wx::Window] parent window (not nil).'
134
+ fdoc.doc.puts '@param text [String] The text to show, may contain the new line characters.'
135
+ fdoc.doc.puts '@param maxLength [Integer] The length of each line, in pixels. Set to a very large value to avoid wrapping lines.'
136
+ fdoc.doc.puts '@param rectBounds [Wx::Rect] If given, passed to {Wx::TipWindow#set_bounding_rect}, please see its documentation for the description of this parameter.'
137
+ fdoc.doc.puts '@return [Wx::TipWindow::Ref] weak tip window reference'
138
+ fdoc.puts 'def self.new_tip(parent, text, maxLength = 100, rectBounds = nil) end'
28
139
  end
29
140
 
30
141
  end
@@ -33,6 +33,8 @@ module WXRuby3
33
33
  wxToolBarToolBase::Attach
34
34
  ]
35
35
  spec.no_proxy 'wxToolBarToolBase'
36
+ # for SetDropdownMenu
37
+ spec.disown 'wxMenu *'
36
38
  # more sensible name to use
37
39
  spec.rename_for_ruby('ToolBarTool' => 'wxToolBarToolBase')
38
40
  spec.map 'wxToolBarBase *' => 'Wx::ToolBar' do
@@ -73,6 +75,10 @@ module WXRuby3
73
75
  'wxToolBar::AddTool(wxToolBarToolBase *)',
74
76
  'wxToolBar::InsertTool(size_t,wxToolBarToolBase *)'
75
77
  ]
78
+ if Config.instance.features_set?('WXOSX')
79
+ spec.extend_interface('wxToolBar',
80
+ 'virtual bool Destroy() override')
81
+ end
76
82
  end
77
83
  end # class Object
78
84
 
@@ -37,7 +37,16 @@ module WXRuby3
37
37
  {}
38
38
  wxRubyValidator::~wxRubyValidator ()
39
39
  {
40
+ // All Validators are EvtHandlers, so prevent any pending events being
41
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
42
+ this->SetEvtHandlerEnabled(false);
40
43
  wxRuby_ReleaseEvtHandlerProcs(this);
44
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
45
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
46
+ {
47
+ SWIG_RubyUnlinkObjects(this);
48
+ SWIG_RubyRemoveTracking(this);
49
+ }
41
50
  }
42
51
 
43
52
  wxObject* wxRubyValidator::Clone() const
@@ -147,6 +156,9 @@ module WXRuby3
147
156
  spec.add_swig_code '%markfunc wxValidator "GC_mark_wxValidator";'
148
157
  # will be provided as a pure Ruby method
149
158
  spec.ignore 'wxValidator::Clone', ignore_doc: false
159
+ # ignore default ctor docs
160
+ spec.ignore 'wxValidator::wxValidator'
161
+ spec.regard 'wxValidator::wxValidator', regard_doc: false # only use interface spec, not docs
150
162
  # add wxRuby specifics
151
163
  spec.extend_interface 'wxValidator',
152
164
  'wxValidator(const wxValidator& other)'
@@ -384,48 +384,64 @@ module WXRuby3
384
384
  # provide a custom wxVariantData implementation for Ruby VALUE
385
385
  # and some interface extensions to use that from Ruby
386
386
  spec.add_header_code <<~__HEREDOC
387
+ WXRUBY_TRACE_GUARD(WxRubyTraceGCMarkVariant, "GC_MARK_VARIANT")
388
+ WXRUBY_TRACE_GUARD(WxRubyTraceGCTrackVariant, "GC_TRACK_VARIANT")
389
+
387
390
  class WXRBValueVariantData;
388
391
  // Mapping of WXRBValueVariantData* to Ruby VALUE
389
392
  WX_DECLARE_VOIDPTR_HASH_MAP(VALUE,
390
393
  WXRBVariantDataToRbValueHash);
391
394
  static WXRBVariantDataToRbValueHash Variant_Value_Map;
392
395
 
393
- static void wxRuby_markRbValueVariants()
396
+ static void GC_mark_RbValueVariants()
394
397
  {
398
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
399
+ WXRUBY_TRACE("> GC_mark_RbValueVariants")
400
+ WXRUBY_TRACE_END
401
+
395
402
  WXRBVariantDataToRbValueHash::iterator it;
396
403
  for( it = Variant_Value_Map.begin(); it != Variant_Value_Map.end(); ++it )
397
404
  {
398
405
  VALUE obj = it->second;
399
- #ifdef __WXRB_DEBUG__
400
- if (wxRuby_TraceLevel()>1)
401
- {
402
- void *c_ptr = (TYPE(obj) == T_DATA ? DATA_PTR(obj) : 0);
403
- std::wcout << "**** wxRuby_markRbValueVariants : " << it->first << "|" << (void*)c_ptr << std::endl;
404
- }
405
- #endif
406
+
407
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
408
+ WXRUBY_TRACE_WITH(void *c_ptr = (TYPE(obj) == T_DATA ? DATA_PTR(obj) : 0))
409
+ WXRUBY_TRACE("| GC_mark_RbValueVariants : " << it->first << "|" << (void*)c_ptr)
410
+ WXRUBY_TRACE_END
411
+
406
412
  rb_gc_mark(obj);
407
413
  }
414
+
415
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
416
+ WXRUBY_TRACE("< GC_mark_RbValueVariants")
417
+ WXRUBY_TRACE_END
408
418
  }
409
419
 
410
420
  static void wxRuby_RegisterValueVariantData(void* ptr, VALUE rbval)
411
421
  {
412
- #ifdef __WXRB_DEBUG__
413
- if (wxRuby_TraceLevel()>1)
414
- {
415
- void *c_ptr = (TYPE(rbval) == T_DATA ? DATA_PTR(rbval) : 0);
416
- std::wcout << "**** wxRuby_RegisterValueVariantData : " << ptr << "|" << (void*)c_ptr << std::endl;
417
- }
418
- #endif
422
+ WXRUBY_TRACE_IF(WxRubyTraceGCTrackVariant, 2)
423
+ WXRUBY_TRACE_WITH(void *c_ptr = (TYPE(rbval) == T_DATA ? DATA_PTR(rbval) : 0))
424
+ WXRUBY_TRACE("> wxRuby_RegisterValueVariantData : " << ptr << "|" << (void*)c_ptr)
425
+ WXRUBY_TRACE_END
426
+
419
427
  Variant_Value_Map[ptr] = rbval;
428
+
429
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
430
+ WXRUBY_TRACE("< wxRuby_RegisterValueVariantData")
431
+ WXRUBY_TRACE_END
420
432
  }
421
433
 
422
434
  static void wxRuby_UnregisterValueVariantData(void* ptr)
423
435
  {
424
- #ifdef __WXRB_DEBUG__
425
- if (wxRuby_TraceLevel()>1)
426
- std::wcout << "**** wxRuby_UnregisterValueVariantData : " << ptr << std::endl;
427
- #endif
436
+ WXRUBY_TRACE_IF(WxRubyTraceGCTrackVariant, 2)
437
+ WXRUBY_TRACE("> wxRuby_UnregisterValueVariantData : " << ptr)
438
+ WXRUBY_TRACE_END
439
+
428
440
  Variant_Value_Map.erase(ptr);
441
+
442
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkVariant, 2)
443
+ WXRUBY_TRACE("< wxRuby_UnregisterValueVariantData")
444
+ WXRUBY_TRACE_END
429
445
  }
430
446
 
431
447
  class WXRUBY_EXPORT WXRBValueVariantData : public wxVariantData
@@ -486,7 +502,7 @@ module WXRuby3
486
502
  return variant;
487
503
  }
488
504
  __HEREDOC
489
- spec.add_init_code 'wxRuby_AppendMarker(wxRuby_markRbValueVariants);'
505
+ spec.add_init_code 'wxRuby_AppendMarker(GC_mark_RbValueVariants);'
490
506
  # ignore GetType (not doc)
491
507
  spec.ignore 'wxVariant::GetType', ignore_doc: false
492
508
  # replace with custom implementation
@@ -16,34 +16,37 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  super
19
- if Config.instance.wx_version_check('3.3.0') > 0
19
+ spec.gc_as_window
20
+ if Config.instance.wx_version_check('3.3.1') > 0
21
+ spec.override_inheritance_chain('wxVListBox', [{ 'wxVScrolledCanvas' => 'wxVScrolledCanvas' }, 'wxWindow', 'wxEvtHandler', 'wxObject'])
22
+ elsif Config.instance.wx_version_check('3.3.0') > 0
20
23
  spec.override_inheritance_chain('wxVListBox', [{ 'wxVScrolledWindow' => 'wxVScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
21
24
  else
22
25
  spec.override_inheritance_chain('wxVListBox', [{ 'wxVScrolledWindow' => 'wxHScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
23
26
  end
24
27
  spec.make_abstract 'wxVListBox'
25
28
  # provide base implementations for OnDrawItem and OnMeasureItem
26
- spec.add_header_code <<~__HEREDOC
27
- // Custom subclass implementation.
28
- class wxRubyVListBox : public wxVListBox
29
- {
30
- public:
31
- wxRubyVListBox()
32
- : wxVListBox () {}
33
- wxRubyVListBox(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxVListBoxNameStr)
34
- : wxVListBox(parent, id, pos, size, style, name) {}
35
- protected:
36
- virtual void OnDrawItem(wxDC&, const wxRect&, size_t) const
37
- {
38
- }
39
- virtual wxCoord OnMeasureItem(size_t) const
40
- {
41
- return {};
42
- }
43
- };
44
- __HEREDOC
45
- # make Ruby director and wrappers use custom implementation
46
- spec.use_class_implementation('wxVListBox', 'wxRubyVListBox')
29
+ # spec.add_header_code <<~__HEREDOC
30
+ # // Custom subclass implementation.
31
+ # class wxRubyVListBox : public wxVListBox
32
+ # {
33
+ # public:
34
+ # wxRubyVListBox()
35
+ # : wxVListBox () {}
36
+ # wxRubyVListBox(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxVListBoxNameStr)
37
+ # : wxVListBox(parent, id, pos, size, style, name) {}
38
+ # protected:
39
+ # virtual void OnDrawItem(wxDC&, const wxRect&, size_t) const
40
+ # {
41
+ # }
42
+ # virtual wxCoord OnMeasureItem(size_t) const
43
+ # {
44
+ # return {};
45
+ # }
46
+ # };
47
+ # __HEREDOC
48
+ # # make Ruby director and wrappers use custom implementation
49
+ # spec.use_class_implementation('wxVListBox', 'wxRubyVListBox')
47
50
  # make sure protected methods are included
48
51
  spec.regard 'wxVListBox::OnDrawItem',
49
52
  'wxVListBox::OnMeasureItem',
@@ -127,7 +127,7 @@ module WXRuby3
127
127
  spec.ignore 'wxWindow::EnableTouchEvents'
128
128
  end
129
129
  if Config.instance.wx_version_check('3.3.0') >= 0
130
- spec.ignore_unless('WXMSW', 'wxWindow::MSWDisableComposited')
130
+ spec.ignore_unless('WXMSW', 'wxWindow::MSWDisableComposited') if Config.instance.wx_version_check('3.3.1') <= 0
131
131
  spec.ignore('wxWindow::GTKGetWin32Handle')
132
132
  end
133
133
  if Config.instance.features_set?('USE_ACCESSIBILITY')
@@ -236,6 +236,10 @@ module WXRuby3
236
236
  spec.override_events 'wxWindow', 'EVT_ACTIVATE' => ['EVT_ACTIVATE', 0, 'wxActivateEvent']
237
237
  when 'wxNonOwnedWindow'
238
238
  spec.no_proxy('wxNonOwnedWindow')
239
+ if Config.instance.features_set?('WXOSX')
240
+ spec.extend_interface('wxNonOwnedWindow',
241
+ 'virtual bool Destroy() override')
242
+ end
239
243
  when 'wxControl'
240
244
  # add these to the generated interface to be parsed by SWIG
241
245
  # the wxWidgets docs are flawed in this respect that several reimplemented
@@ -288,6 +292,7 @@ module WXRuby3
288
292
  "#{spec.class_name(citem)}::GetScrollRange",
289
293
  "#{spec.class_name(citem)}::GetScrollThumb",
290
294
  "#{spec.class_name(citem)}::GetTextExtent",
295
+ "#{spec.class_name(citem)}::GetDPI",
291
296
  "#{spec.class_name(citem)}::HasCapture",
292
297
  "#{spec.class_name(citem)}::HasMultiplePages",
293
298
  "#{spec.class_name(citem)}::IsDoubleBuffered",
@@ -305,6 +310,9 @@ module WXRuby3
305
310
  "#{spec.class_name(citem)}::SetBackgroundColour",
306
311
  "#{spec.class_name(citem)}::SetBackgroundStyle",
307
312
  "#{spec.class_name(citem)}::HasTransparentBackground",
313
+ "#{spec.class_name(citem)}::CanSetTransparent",
314
+ "#{spec.class_name(citem)}::SetTransparent",
315
+ "#{spec.class_name(citem)}::GetThemeEnabled",
308
316
  "#{spec.class_name(citem)}::SetCursor",
309
317
  "#{spec.class_name(citem)}::SetFocus",
310
318
  "#{spec.class_name(citem)}::SetFocusFromKbd",
@@ -329,6 +337,7 @@ module WXRuby3
329
337
  "#{spec.class_name(citem)}::GetDefaultAttributes",
330
338
  "#{spec.class_name(citem)}::GetWindowStyleFlag",
331
339
  "#{spec.class_name(citem)}::GetDropTarget",
340
+ "#{spec.class_name(citem)}::SetDropTarget",
332
341
  "#{spec.class_name(citem)}::GetValidator",
333
342
  "#{spec.class_name(citem)}::IsTopLevel",
334
343
  "#{spec.class_name(citem)}::EnableTouchEvents",
@@ -18,6 +18,12 @@ module WXRuby3
18
18
  spec.ignore %w[wxXmlResource::AddHandler wxXmlResource::ClearHandlers wxXmlResource::InsertHandler]
19
19
  # not really added value; will add alternative allowing more flexibility (see below)
20
20
  spec.ignore 'wxXmlResource::LoadDocument(wxXmlDocument *, const wxString &)'
21
+ # unwanted in Ruby
22
+ spec.ignore 'wxXmlResource::LoadObject',
23
+ 'wxXmlResource::LoadObjectRecursively'
24
+ # unattached loaders return owned objects
25
+ spec.new_object 'wxXmlResource::LoadMenu(const wxString &)',
26
+ 'wxXmlResource::LoadMenuBar(const wxString &)'
21
27
  # For these three methods, there are two variants in wxWidgets. One loads an
22
28
  # XRC from scratch and returns an instance of a core Wx class
23
29
  # (Wx::Dialog, Wx::Frame, or Wx::Panel). The other loads a layout into
@@ -25,4 +25,4 @@
25
25
  :para:
26
26
  - :pattern: !ruby/regexp /The overridden version may return true but modify.*appending them./
27
27
  :replace: |
28
- The overridden version may return a 2-element array with an AuiTabCtrl and tab index instead to change where the page should be inserted, e.g. by returning a tab index of 0 to insert the new pages at the beginning instead of appending them.
28
+ The overridden version may return a 2-element array with an {Wx::AUI::AuiTabCtrl} and tab index instead to change where the page should be inserted, e.g. by returning a tab index of 0 to insert the new pages at the beginning instead of appending them.