wxruby3 1.6.0 → 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 (541) hide show
  1. checksums.yaml +4 -4
  2. data/CREDITS.md +32 -25
  3. data/INSTALL.md +21 -6
  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 +154 -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/core/variant.rb +6 -0
  30. data/lib/wx/doc/aui/auitabctrl.rb +35 -0
  31. data/lib/wx/doc/config.rb +2 -2
  32. data/lib/wx/doc/functions.rb +1 -1
  33. data/lib/wx/doc/gen/about_dialog_info.rb +330 -0
  34. data/lib/wx/doc/gen/accelerator.rb +178 -0
  35. data/lib/wx/doc/gen/activity_indicator.rb +83 -0
  36. data/lib/wx/doc/gen/affine_matrix2d.rb +284 -0
  37. data/lib/wx/doc/gen/animation.rb +275 -0
  38. data/lib/wx/doc/gen/animation_ctrl.rb +300 -0
  39. data/lib/wx/doc/gen/any_button.rb +191 -0
  40. data/lib/wx/doc/gen/app.rb +463 -0
  41. data/lib/wx/doc/gen/app_traits.rb +396 -0
  42. data/lib/wx/doc/gen/art_provider.rb +605 -0
  43. data/lib/wx/doc/gen/aui/aui_dock_art.rb +455 -0
  44. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +54 -0
  45. data/lib/wx/doc/gen/aui/aui_manager.rb +847 -0
  46. data/lib/wx/doc/gen/aui/aui_manager_event.rb +131 -0
  47. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +180 -0
  48. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +59 -0
  49. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +130 -0
  50. data/lib/wx/doc/gen/aui/aui_notebook.rb +631 -0
  51. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +233 -0
  52. data/lib/wx/doc/gen/aui/aui_pane_info.rb +769 -0
  53. data/lib/wx/doc/gen/aui/aui_tab_art.rb +352 -0
  54. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +14 -0
  55. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +510 -0
  56. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +340 -0
  57. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +244 -0
  58. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +257 -0
  59. data/lib/wx/doc/gen/aui/event_list.rb +179 -0
  60. data/lib/wx/doc/gen/banner_window.rb +124 -0
  61. data/lib/wx/doc/gen/bitmap.rb +731 -0
  62. data/lib/wx/doc/gen/bitmap_button.rb +123 -0
  63. data/lib/wx/doc/gen/bitmap_combo_box.rb +221 -0
  64. data/lib/wx/doc/gen/book_ctrl_base.rb +273 -0
  65. data/lib/wx/doc/gen/book_ctrl_event.rb +66 -0
  66. data/lib/wx/doc/gen/box_sizer.rb +85 -0
  67. data/lib/wx/doc/gen/brush.rb +251 -0
  68. data/lib/wx/doc/gen/busy_info.rb +157 -0
  69. data/lib/wx/doc/gen/button.rb +182 -0
  70. data/lib/wx/doc/gen/calculate_layout_event.rb +62 -0
  71. data/lib/wx/doc/gen/calendar_ctrl.rb +505 -0
  72. data/lib/wx/doc/gen/calendar_date_attr.rb +138 -0
  73. data/lib/wx/doc/gen/calendar_event.rb +147 -0
  74. data/lib/wx/doc/gen/caret.rb +97 -0
  75. data/lib/wx/doc/gen/check_box.rb +175 -0
  76. data/lib/wx/doc/gen/check_list_box.rb +121 -0
  77. data/lib/wx/doc/gen/choice.rb +175 -0
  78. data/lib/wx/doc/gen/choicebook.rb +116 -0
  79. data/lib/wx/doc/gen/client_dc.rb +43 -0
  80. data/lib/wx/doc/gen/clipboard.rb +144 -0
  81. data/lib/wx/doc/gen/collapsible_pane.rb +138 -0
  82. data/lib/wx/doc/gen/collapsible_pane_event.rb +46 -0
  83. data/lib/wx/doc/gen/colour.rb +333 -0
  84. data/lib/wx/doc/gen/colour_dialog.rb +190 -0
  85. data/lib/wx/doc/gen/colour_picker_ctrl.rb +110 -0
  86. data/lib/wx/doc/gen/colour_picker_event.rb +77 -0
  87. data/lib/wx/doc/gen/combo_box.rb +292 -0
  88. data/lib/wx/doc/gen/combo_ctrl.rb +662 -0
  89. data/lib/wx/doc/gen/command_link_button.rb +134 -0
  90. data/lib/wx/doc/gen/config_base.rb +10 -0
  91. data/lib/wx/doc/gen/context_help_button.rb +109 -0
  92. data/lib/wx/doc/gen/control.rb +277 -0
  93. data/lib/wx/doc/gen/control_with_items.rb +253 -0
  94. data/lib/wx/doc/gen/core.rb +45 -0
  95. data/lib/wx/doc/gen/credential_entry_dialog.rb +137 -0
  96. data/lib/wx/doc/gen/cursor.rb +193 -0
  97. data/lib/wx/doc/gen/data_format.rb +85 -0
  98. data/lib/wx/doc/gen/data_object.rb +436 -0
  99. data/lib/wx/doc/gen/data_object_simple_base.rb +10 -0
  100. data/lib/wx/doc/gen/date_event.rb +49 -0
  101. data/lib/wx/doc/gen/date_picker_ctrl.rb +161 -0
  102. data/lib/wx/doc/gen/dc.rb +1631 -0
  103. data/lib/wx/doc/gen/dc_overlay.rb +102 -0
  104. data/lib/wx/doc/gen/defs.rb +2802 -0
  105. data/lib/wx/doc/gen/dial_up_event.rb +45 -0
  106. data/lib/wx/doc/gen/dial_up_manager.rb +149 -0
  107. data/lib/wx/doc/gen/dialog.rb +541 -0
  108. data/lib/wx/doc/gen/dir_dialog.rb +164 -0
  109. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +90 -0
  110. data/lib/wx/doc/gen/dir_picker_ctrl.rb +125 -0
  111. data/lib/wx/doc/gen/display.rb +238 -0
  112. data/lib/wx/doc/gen/drag_drop.rb +299 -0
  113. data/lib/wx/doc/gen/drag_image.rb +116 -0
  114. data/lib/wx/doc/gen/editable_list_box.rb +109 -0
  115. data/lib/wx/doc/gen/event.rb +990 -0
  116. data/lib/wx/doc/gen/event_blocker.rb +50 -0
  117. data/lib/wx/doc/gen/event_filter.rb +92 -0
  118. data/lib/wx/doc/gen/event_list.rb +1644 -0
  119. data/lib/wx/doc/gen/events.rb +2809 -0
  120. data/lib/wx/doc/gen/evt_handler.rb +229 -0
  121. data/lib/wx/doc/gen/ext_help_controller.rb +109 -0
  122. data/lib/wx/doc/gen/file_ctrl.rb +231 -0
  123. data/lib/wx/doc/gen/file_ctrl_event.rb +83 -0
  124. data/lib/wx/doc/gen/file_dialog.rb +353 -0
  125. data/lib/wx/doc/gen/file_dialog_custom_control.rb +165 -0
  126. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +158 -0
  127. data/lib/wx/doc/gen/file_dir_picker_event.rb +100 -0
  128. data/lib/wx/doc/gen/file_picker_ctrl.rb +132 -0
  129. data/lib/wx/doc/gen/file_system.rb +232 -0
  130. data/lib/wx/doc/gen/find_dialog_event.rb +126 -0
  131. data/lib/wx/doc/gen/find_replace_data.rb +60 -0
  132. data/lib/wx/doc/gen/find_replace_dialog.rb +58 -0
  133. data/lib/wx/doc/gen/flex_grid_sizer.rb +199 -0
  134. data/lib/wx/doc/gen/font.rb +1379 -0
  135. data/lib/wx/doc/gen/font_data.rb +151 -0
  136. data/lib/wx/doc/gen/font_dialog.rb +88 -0
  137. data/lib/wx/doc/gen/font_picker_ctrl.rb +143 -0
  138. data/lib/wx/doc/gen/font_picker_event.rb +65 -0
  139. data/lib/wx/doc/gen/frame.rb +352 -0
  140. data/lib/wx/doc/gen/fs_file.rb +337 -0
  141. data/lib/wx/doc/gen/functions.rb +10 -0
  142. data/lib/wx/doc/gen/gauge.rb +157 -0
  143. data/lib/wx/doc/gen/gb_sizer_item.rb +68 -0
  144. data/lib/wx/doc/gen/gcdc.rb +46 -0
  145. data/lib/wx/doc/gen/gdi_common.rb +1271 -0
  146. data/lib/wx/doc/gen/gdi_object.rb +31 -0
  147. data/lib/wx/doc/gen/generic_about_dialog.rb +140 -0
  148. data/lib/wx/doc/gen/generic_dir_ctrl.rb +223 -0
  149. data/lib/wx/doc/gen/geometry.rb +661 -0
  150. data/lib/wx/doc/gen/graphics_context.rb +1184 -0
  151. data/lib/wx/doc/gen/graphics_object.rb +750 -0
  152. data/lib/wx/doc/gen/grid/event_list.rb +191 -0
  153. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +40 -0
  154. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +280 -0
  155. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +35 -0
  156. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +37 -0
  157. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +49 -0
  158. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +35 -0
  159. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +46 -0
  160. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +38 -0
  161. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +45 -0
  162. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +40 -0
  163. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +197 -0
  164. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +39 -0
  165. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +44 -0
  166. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +45 -0
  167. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +79 -0
  168. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +46 -0
  169. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +35 -0
  170. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +108 -0
  171. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +35 -0
  172. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +49 -0
  173. data/lib/wx/doc/gen/grid/grid_ctrl.rb +3002 -0
  174. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +95 -0
  175. data/lib/wx/doc/gen/grid/grid_event.rb +129 -0
  176. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +104 -0
  177. data/lib/wx/doc/gen/grid/grid_size_event.rb +85 -0
  178. data/lib/wx/doc/gen/grid/grid_string_table.rb +142 -0
  179. data/lib/wx/doc/gen/grid/grid_table_base.rb +317 -0
  180. data/lib/wx/doc/gen/grid/grid_table_message.rb +81 -0
  181. data/lib/wx/doc/gen/grid_bag_sizer.rb +323 -0
  182. data/lib/wx/doc/gen/grid_sizer.rb +195 -0
  183. data/lib/wx/doc/gen/gui_event_loop.rb +159 -0
  184. data/lib/wx/doc/gen/h_scrolled_window.rb +562 -0
  185. data/lib/wx/doc/gen/header_ctrl.rb +880 -0
  186. data/lib/wx/doc/gen/header_ctrl_event.rb +133 -0
  187. data/lib/wx/doc/gen/help_controller.rb +195 -0
  188. data/lib/wx/doc/gen/help_provider.rb +98 -0
  189. data/lib/wx/doc/gen/html/event_list.rb +38 -0
  190. data/lib/wx/doc/gen/html/html_cell.rb +536 -0
  191. data/lib/wx/doc/gen/html/html_cell_event.rb +69 -0
  192. data/lib/wx/doc/gen/html/html_data_object.rb +42 -0
  193. data/lib/wx/doc/gen/html/html_easy_printing.rb +203 -0
  194. data/lib/wx/doc/gen/html/html_help_controller.rb +340 -0
  195. data/lib/wx/doc/gen/html/html_help_data.rb +159 -0
  196. data/lib/wx/doc/gen/html/html_help_window.rb +258 -0
  197. data/lib/wx/doc/gen/html/html_link_event.rb +41 -0
  198. data/lib/wx/doc/gen/html/html_list_box.rb +346 -0
  199. data/lib/wx/doc/gen/html/html_printout.rb +109 -0
  200. data/lib/wx/doc/gen/html/html_window.rb +461 -0
  201. data/lib/wx/doc/gen/hyperlink_ctrl.rb +311 -0
  202. data/lib/wx/doc/gen/hyperlink_event.rb +44 -0
  203. data/lib/wx/doc/gen/icon.rb +267 -0
  204. data/lib/wx/doc/gen/icon_location.rb +40 -0
  205. data/lib/wx/doc/gen/image.rb +1371 -0
  206. data/lib/wx/doc/gen/image_list.rb +168 -0
  207. data/lib/wx/doc/gen/info_bar.rb +195 -0
  208. data/lib/wx/doc/gen/keyboard_state.rb +140 -0
  209. data/lib/wx/doc/gen/list_box.rb +304 -0
  210. data/lib/wx/doc/gen/list_ctrl.rb +1774 -0
  211. data/lib/wx/doc/gen/list_event.rb +208 -0
  212. data/lib/wx/doc/gen/listbook.rb +116 -0
  213. data/lib/wx/doc/gen/locale.rb +4293 -0
  214. data/lib/wx/doc/gen/log.rb +603 -0
  215. data/lib/wx/doc/gen/mdi_client_window.rb +47 -0
  216. data/lib/wx/doc/gen/mdi_frame.rb +324 -0
  217. data/lib/wx/doc/gen/media_ctrl.rb +269 -0
  218. data/lib/wx/doc/gen/media_event.rb +117 -0
  219. data/lib/wx/doc/gen/memory_dc.rb +174 -0
  220. data/lib/wx/doc/gen/menu.rb +509 -0
  221. data/lib/wx/doc/gen/menu_bar.rb +287 -0
  222. data/lib/wx/doc/gen/menu_item.rb +362 -0
  223. data/lib/wx/doc/gen/message_dialog.rb +238 -0
  224. data/lib/wx/doc/gen/mini_frame.rb +108 -0
  225. data/lib/wx/doc/gen/mirror_dc.rb +22 -0
  226. data/lib/wx/doc/gen/mouse_state.rb +150 -0
  227. data/lib/wx/doc/gen/multi_choice_dialog.rb +80 -0
  228. data/lib/wx/doc/gen/non_owned_window.rb +49 -0
  229. data/lib/wx/doc/gen/notebook.rb +278 -0
  230. data/lib/wx/doc/gen/num_validator.rb +37 -0
  231. data/lib/wx/doc/gen/number_entry_dialog.rb +93 -0
  232. data/lib/wx/doc/gen/object.rb +59 -0
  233. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +395 -0
  234. data/lib/wx/doc/gen/paint_dc.rb +27 -0
  235. data/lib/wx/doc/gen/palette.rb +92 -0
  236. data/lib/wx/doc/gen/panel.rb +127 -0
  237. data/lib/wx/doc/gen/pen.rb +511 -0
  238. data/lib/wx/doc/gen/persistence_manager.rb +135 -0
  239. data/lib/wx/doc/gen/persistent_object.rb +52 -0
  240. data/lib/wx/doc/gen/persistent_window.rb +241 -0
  241. data/lib/wx/doc/gen/pg/event_list.rb +106 -0
  242. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +54 -0
  243. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +292 -0
  244. data/lib/wx/doc/gen/pg/pg_cell.rb +177 -0
  245. data/lib/wx/doc/gen/pg/pg_editor.rb +721 -0
  246. data/lib/wx/doc/gen/pg/pg_multi_button.rb +152 -0
  247. data/lib/wx/doc/gen/pg/pg_properties.rb +2829 -0
  248. data/lib/wx/doc/gen/pg/pg_property.rb +2078 -0
  249. data/lib/wx/doc/gen/pg/pg_validation_info.rb +344 -0
  250. data/lib/wx/doc/gen/pg/property_grid.rb +740 -0
  251. data/lib/wx/doc/gen/pg/property_grid_event.rb +184 -0
  252. data/lib/wx/doc/gen/pg/property_grid_interface.rb +1098 -0
  253. data/lib/wx/doc/gen/pg/property_grid_manager.rb +415 -0
  254. data/lib/wx/doc/gen/pg/property_grid_page.rb +354 -0
  255. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +165 -0
  256. data/lib/wx/doc/gen/picker_base.rb +152 -0
  257. data/lib/wx/doc/gen/platform_info.rb +622 -0
  258. data/lib/wx/doc/gen/popup_window.rb +107 -0
  259. data/lib/wx/doc/gen/progress_dialog.rb +100 -0
  260. data/lib/wx/doc/gen/property_sheet_dialog.rb +216 -0
  261. data/lib/wx/doc/gen/prt/event_list.rb +17 -0
  262. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +44 -0
  263. data/lib/wx/doc/gen/prt/post_script_dc.rb +30 -0
  264. data/lib/wx/doc/gen/prt/preview_frame.rb +78 -0
  265. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +151 -0
  266. data/lib/wx/doc/gen/prt/print_data.rb +804 -0
  267. data/lib/wx/doc/gen/prt/print_dialog.rb +55 -0
  268. data/lib/wx/doc/gen/prt/printer.rb +518 -0
  269. data/lib/wx/doc/gen/prt/printer_dc.rb +37 -0
  270. data/lib/wx/doc/gen/query_layout_info_event.rb +106 -0
  271. data/lib/wx/doc/gen/radio_box.rb +306 -0
  272. data/lib/wx/doc/gen/radio_button.rb +159 -0
  273. data/lib/wx/doc/gen/rbn/event_list.rb +136 -0
  274. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +1132 -0
  275. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +308 -0
  276. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +45 -0
  277. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +458 -0
  278. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +63 -0
  279. data/lib/wx/doc/gen/rbn/ribbon_control.rb +143 -0
  280. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +229 -0
  281. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +55 -0
  282. data/lib/wx/doc/gen/rbn/ribbon_page.rb +174 -0
  283. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +270 -0
  284. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +45 -0
  285. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +360 -0
  286. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +42 -0
  287. data/lib/wx/doc/gen/rearrange_ctrl.rb +78 -0
  288. data/lib/wx/doc/gen/rearrange_list.rb +123 -0
  289. data/lib/wx/doc/gen/region.rb +380 -0
  290. data/lib/wx/doc/gen/region_iterator.rb +76 -0
  291. data/lib/wx/doc/gen/rich_tool_tip.rb +154 -0
  292. data/lib/wx/doc/gen/rtc/event_list.rb +125 -0
  293. data/lib/wx/doc/gen/rtc/rich_text_box.rb +445 -0
  294. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +1188 -0
  295. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +41 -0
  296. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +538 -0
  297. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +2103 -0
  298. data/lib/wx/doc/gen/rtc/rich_text_event.rb +173 -0
  299. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +181 -0
  300. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +319 -0
  301. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +193 -0
  302. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +102 -0
  303. data/lib/wx/doc/gen/rtc/rich_text_image.rb +337 -0
  304. data/lib/wx/doc/gen/rtc/rich_text_object.rb +2922 -0
  305. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +1240 -0
  306. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +258 -0
  307. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +344 -0
  308. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +227 -0
  309. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +59 -0
  310. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +169 -0
  311. data/lib/wx/doc/gen/sash_event.rb +147 -0
  312. data/lib/wx/doc/gen/sash_layout_window.rb +232 -0
  313. data/lib/wx/doc/gen/sash_window.rb +171 -0
  314. data/lib/wx/doc/gen/scaled_dc.rb +10 -0
  315. data/lib/wx/doc/gen/screen_dc.rb +30 -0
  316. data/lib/wx/doc/gen/scroll_bar.rb +204 -0
  317. data/lib/wx/doc/gen/scrolled_canvas.rb +410 -0
  318. data/lib/wx/doc/gen/scrolled_control.rb +410 -0
  319. data/lib/wx/doc/gen/scrolled_window.rb +430 -0
  320. data/lib/wx/doc/gen/search_ctrl.rb +159 -0
  321. data/lib/wx/doc/gen/secret_store.rb +116 -0
  322. data/lib/wx/doc/gen/simplebook.rb +110 -0
  323. data/lib/wx/doc/gen/single_choice_dialog.rb +89 -0
  324. data/lib/wx/doc/gen/sizer.rb +945 -0
  325. data/lib/wx/doc/gen/sizer_item.rb +244 -0
  326. data/lib/wx/doc/gen/slider.rb +342 -0
  327. data/lib/wx/doc/gen/spin_button.rb +157 -0
  328. data/lib/wx/doc/gen/spin_ctrl.rb +231 -0
  329. data/lib/wx/doc/gen/spin_ctrl_double.rb +192 -0
  330. data/lib/wx/doc/gen/spin_double_event.rb +55 -0
  331. data/lib/wx/doc/gen/spin_event.rb +51 -0
  332. data/lib/wx/doc/gen/splash_screen.rb +113 -0
  333. data/lib/wx/doc/gen/splitter_event.rb +99 -0
  334. data/lib/wx/doc/gen/splitter_window.rb +498 -0
  335. data/lib/wx/doc/gen/static_bitmap.rb +256 -0
  336. data/lib/wx/doc/gen/static_box.rb +180 -0
  337. data/lib/wx/doc/gen/static_box_sizer.rb +85 -0
  338. data/lib/wx/doc/gen/static_line.rb +83 -0
  339. data/lib/wx/doc/gen/static_text.rb +127 -0
  340. data/lib/wx/doc/gen/status_bar.rb +290 -0
  341. data/lib/wx/doc/gen/stc/event_list.rb +221 -0
  342. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +4474 -0
  343. data/lib/wx/doc/gen/stc/styled_text_event.rb +8762 -0
  344. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +129 -0
  345. data/lib/wx/doc/gen/svg_file_dc.rb +164 -0
  346. data/lib/wx/doc/gen/system_options.rb +129 -0
  347. data/lib/wx/doc/gen/system_settings.rb +507 -0
  348. data/lib/wx/doc/gen/task_bar_icon.rb +127 -0
  349. data/lib/wx/doc/gen/task_bar_icon_event.rb +88 -0
  350. data/lib/wx/doc/gen/text_attr.rb +756 -0
  351. data/lib/wx/doc/gen/text_ctrl.rb +1033 -0
  352. data/lib/wx/doc/gen/text_entry.rb +441 -0
  353. data/lib/wx/doc/gen/text_entry_dialog.rb +220 -0
  354. data/lib/wx/doc/gen/text_validator.rb +245 -0
  355. data/lib/wx/doc/gen/time_picker_ctrl.rb +128 -0
  356. data/lib/wx/doc/gen/timer.rb +119 -0
  357. data/lib/wx/doc/gen/timer_event.rb +68 -0
  358. data/lib/wx/doc/gen/tip_provider.rb +63 -0
  359. data/lib/wx/doc/gen/tip_window.rb +51 -0
  360. data/lib/wx/doc/gen/toggle_button.rb +182 -0
  361. data/lib/wx/doc/gen/tool_bar.rb +890 -0
  362. data/lib/wx/doc/gen/tool_tip.rb +86 -0
  363. data/lib/wx/doc/gen/toolbook.rb +118 -0
  364. data/lib/wx/doc/gen/top_level_window.rb +497 -0
  365. data/lib/wx/doc/gen/tree_ctrl.rb +1052 -0
  366. data/lib/wx/doc/gen/tree_event.rb +127 -0
  367. data/lib/wx/doc/gen/treebook.rb +180 -0
  368. data/lib/wx/doc/gen/ui_action_simulator.rb +109 -0
  369. data/lib/wx/doc/gen/utils.rb +273 -0
  370. data/lib/wx/doc/gen/v_list_box.rb +272 -0
  371. data/lib/wx/doc/gen/v_scrolled_canvas.rb +195 -0
  372. data/lib/wx/doc/gen/v_scrolled_window.rb +191 -0
  373. data/lib/wx/doc/gen/validator.rb +68 -0
  374. data/lib/wx/doc/gen/variant.rb +294 -0
  375. data/lib/wx/doc/gen/window.rb +2917 -0
  376. data/lib/wx/doc/gen/window_dc.rb +38 -0
  377. data/lib/wx/doc/gen/window_disabler.rb +30 -0
  378. data/lib/wx/doc/gen/with_images.rb +84 -0
  379. data/lib/wx/doc/gen/wizard.rb +257 -0
  380. data/lib/wx/doc/gen/wizard_event.rb +113 -0
  381. data/lib/wx/doc/gen/wizard_page.rb +65 -0
  382. data/lib/wx/doc/gen/wizard_page_simple.rb +88 -0
  383. data/lib/wx/doc/gen/wrap_sizer.rb +79 -0
  384. data/lib/wx/doc/gen/xml_node.rb +316 -0
  385. data/lib/wx/doc/gen/xml_resource.rb +320 -0
  386. data/lib/wx/doc/generic_validator.rb +5 -0
  387. data/lib/wx/doc/pg/pg_property.rb +5 -0
  388. data/lib/wx/doc/tip_window.rb +18 -6
  389. data/lib/wx/doc/variant.rb +30 -0
  390. data/lib/wx/grid/events/evt_list.rb +166 -0
  391. data/lib/wx/html/events/evt_list.rb +27 -0
  392. data/lib/wx/html/simple_html_listbox.rb +46 -33
  393. data/lib/wx/keyword_defs.rb +9 -0
  394. data/lib/wx/pg/events/evt_list.rb +73 -0
  395. data/lib/wx/pg/pg_property.rb +85 -52
  396. data/lib/wx/pg/property_grid_interface.rb +12 -2
  397. data/lib/wx/rbn/events/evt_list.rb +102 -0
  398. data/lib/wx/rtc/events/evt_list.rb +98 -0
  399. data/lib/wx/rtc/ext/rich_text_ctrl.rb +24 -0
  400. data/lib/wx/stc/events/evt_list.rb +178 -0
  401. data/lib/wx/version.rb +1 -1
  402. data/lib/wx/wxruby/cmd/setup.rb +6 -0
  403. data/rakelib/configure.rb +9 -0
  404. data/rakelib/gem.rake +84 -66
  405. data/rakelib/gem.rb +4 -20
  406. data/rakelib/lib/config/linux.rb +1 -1
  407. data/rakelib/lib/config/macosx.rb +15 -1
  408. data/rakelib/lib/config/pkgman/linux.rb +7 -2
  409. data/rakelib/lib/config/unixish.rb +3 -3
  410. data/rakelib/lib/config.rb +19 -8
  411. data/rakelib/lib/core/include/swigdirector.inc +3 -3
  412. data/rakelib/lib/core/include/swigrubyerrors.inc +4 -8
  413. data/rakelib/lib/core/include/swigrubyrun.inc +20 -4
  414. data/rakelib/lib/core/include/swigrun.inc +189 -0
  415. data/rakelib/lib/core/package.rb +3 -1
  416. data/rakelib/lib/core/spec.rb +1 -1
  417. data/rakelib/lib/director/accelerator.rb +1 -1
  418. data/rakelib/lib/director/animation.rb +1 -0
  419. data/rakelib/lib/director/app_traits.rb +1 -1
  420. data/rakelib/lib/director/aui_manager.rb +21 -14
  421. data/rakelib/lib/director/aui_mdi_child_frame.rb +2 -0
  422. data/rakelib/lib/director/aui_mdi_parent_frame.rb +4 -0
  423. data/rakelib/lib/director/aui_notebook.rb +20 -3
  424. data/rakelib/lib/director/aui_tab_ctrl.rb +64 -106
  425. data/rakelib/lib/director/bitmap_combobox.rb +4 -2
  426. data/rakelib/lib/director/calendar_ctrl.rb +72 -14
  427. data/rakelib/lib/director/clipboard.rb +2 -0
  428. data/rakelib/lib/director/data_object.rb +15 -7
  429. data/rakelib/lib/director/date_picker_ctrl.rb +4 -1
  430. data/rakelib/lib/director/display.rb +81 -0
  431. data/rakelib/lib/director/event.rb +33 -16
  432. data/rakelib/lib/director/event_handler.rb +27 -2
  433. data/rakelib/lib/director/functions.rb +9 -0
  434. data/rakelib/lib/director/geometry.rb +5 -0
  435. data/rakelib/lib/director/grid_ctrl.rb +123 -28
  436. data/rakelib/lib/director/help_provider.rb +1 -1
  437. data/rakelib/lib/director/html_listbox.rb +30 -4
  438. data/rakelib/lib/director/hvscrolled.rb +154 -0
  439. data/rakelib/lib/director/image_list.rb +1 -0
  440. data/rakelib/lib/director/mdi_frame.rb +4 -0
  441. data/rakelib/lib/director/menu.rb +56 -15
  442. data/rakelib/lib/director/menu_bar.rb +62 -0
  443. data/rakelib/lib/director/menu_item.rb +7 -1
  444. data/rakelib/lib/director/num_validator.rb +27 -0
  445. data/rakelib/lib/director/numeric_property_validator.rb +9 -0
  446. data/rakelib/lib/director/persistent_window.rb +16 -0
  447. data/rakelib/lib/director/pgproperty.rb +3 -2
  448. data/rakelib/lib/director/popup_window.rb +2 -0
  449. data/rakelib/lib/director/preview_frame.rb +29 -6
  450. data/rakelib/lib/director/printer.rb +59 -5
  451. data/rakelib/lib/director/property_grid.rb +37 -18
  452. data/rakelib/lib/director/property_grid_interface.rb +10 -8
  453. data/rakelib/lib/director/property_grid_manager.rb +99 -39
  454. data/rakelib/lib/director/property_grid_page.rb +60 -0
  455. data/rakelib/lib/director/rich_tooltip.rb +22 -0
  456. data/rakelib/lib/director/richtext_ctrl.rb +5 -0
  457. data/rakelib/lib/director/richtext_object.rb +13 -4
  458. data/rakelib/lib/director/richtext_style_listbox.rb +11 -2
  459. data/rakelib/lib/director/scrolled_t.rb +3 -0
  460. data/rakelib/lib/director/searchctrl.rb +1 -0
  461. data/rakelib/lib/director/task_bar_icon.rb +14 -8
  462. data/rakelib/lib/director/text_validator.rb +9 -0
  463. data/rakelib/lib/director/tip_window.rb +117 -6
  464. data/rakelib/lib/director/tool_bar.rb +6 -0
  465. data/rakelib/lib/director/top_level_window.rb +0 -1
  466. data/rakelib/lib/director/utils.rb +3 -1
  467. data/rakelib/lib/director/validator.rb +12 -0
  468. data/rakelib/lib/director/variant.rb +64 -20
  469. data/rakelib/lib/director/vlistbox.rb +29 -22
  470. data/rakelib/lib/director/window.rb +12 -2
  471. data/rakelib/lib/director/xml_resource.rb +6 -0
  472. data/rakelib/lib/generate/doc/aui_manager.yaml +1 -1
  473. data/rakelib/lib/generate/doc/rich_tool_tip.yaml +26 -0
  474. data/rakelib/lib/generate/doc.rb +12 -7
  475. data/rakelib/lib/generate/interface.rb +16 -1
  476. data/rakelib/lib/specs/interfaces.rb +6 -2
  477. data/rakelib/lib/swig_runner.rb +12 -12
  478. data/rakelib/lib/typemap/aui_tabctrl.rb +46 -0
  479. data/rakelib/lib/typemap/common.rb +3 -3
  480. data/rakelib/lib/typemap/print_page_range.rb +32 -8
  481. data/samples/art/wxruby-512x512.png +0 -0
  482. data/samples/calendar/calendar.rb +64 -1
  483. data/samples/dialogs/dialogs.rb +172 -0
  484. data/samples/dialogs/tip.xpm +157 -0
  485. data/samples/drawing/maths_images.rb +1 -1
  486. data/samples/event/event.rb +1 -1
  487. data/samples/printing/printing2.rb +1 -1
  488. data/samples/sampler.rb +26 -8
  489. data/samples/text/textctrl.rb +2 -2
  490. data/samples/treectrl/treectrl.rb +2 -2
  491. data/tests/lib/leaked_process_event_exception_test.rb +1 -1
  492. data/tests/lib/leaked_queued_event_exception_test.rb +1 -1
  493. data/tests/lib/wxapp_runner.rb +31 -41
  494. data/tests/lib/wxframe_runner.rb +23 -11
  495. data/tests/lib/wxrb_test.rb +58 -0
  496. data/tests/test_app_event_filter.rb +1 -1
  497. data/tests/test_app_exit_exception.rb +3 -3
  498. data/tests/test_app_init_exception.rb +3 -3
  499. data/tests/test_app_traits.rb +24 -21
  500. data/tests/test_art.rb +7 -7
  501. data/tests/test_art_provider.rb +1 -1
  502. data/tests/test_basic.rb +2 -2
  503. data/tests/test_book_controls.rb +1 -1
  504. data/tests/test_box_sizer.rb +1 -1
  505. data/tests/test_clipboard.rb +5 -5
  506. data/tests/test_combo_ctrl.rb +2 -2
  507. data/tests/test_config.rb +11 -1
  508. data/tests/test_dc.rb +1 -1
  509. data/tests/test_dialog.rb +1 -1
  510. data/tests/test_event_handling.rb +1 -1
  511. data/tests/test_events.rb +1 -1
  512. data/tests/test_exceptions.rb +2 -2
  513. data/tests/test_ext_controls.rb +10 -10
  514. data/tests/test_file_dialog.rb +1 -1
  515. data/tests/test_font.rb +1 -1
  516. data/tests/test_gdi_object.rb +1 -1
  517. data/tests/test_geometry.rb +2 -2
  518. data/tests/test_grid_sizer.rb +2 -2
  519. data/tests/test_intl.rb +1 -1
  520. data/tests/test_item_data.rb +12 -12
  521. data/tests/test_list_ctrl.rb +1 -1
  522. data/tests/test_log.rb +2 -2
  523. data/tests/test_media_ctrl.rb +1 -1
  524. data/tests/test_menu.rb +114 -43
  525. data/tests/test_proof_check.rb +1 -1
  526. data/tests/test_propgrid.rb +857 -0
  527. data/tests/test_richtext.rb +10 -24
  528. data/tests/test_secret_store.rb +1 -1
  529. data/tests/test_sizer.rb +1 -1
  530. data/tests/test_std_controls.rb +8 -8
  531. data/tests/test_styled_text_ctrl.rb +1 -1
  532. data/tests/test_timer.rb +1 -1
  533. data/tests/test_tree_ctrl.rb +1 -1
  534. data/tests/test_validators.rb +79 -36
  535. data/tests/test_variant.rb +1 -1
  536. data/tests/test_window.rb +11 -11
  537. data/tests/testapp.rb +2 -2
  538. data/tests/testapp_noframe.rb +2 -2
  539. metadata +402 -12
  540. data/lib/wx/aui/aui_tab_ctrl.rb +0 -18
  541. data/rakelib/lib/director/hvscrolled_window.rb +0 -140
@@ -16,6 +16,7 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  super
19
+ spec.gc_as_object # not a typical window
19
20
  spec.no_proxy('wxMenuBar::FindItem',
20
21
  'wxMenuBar::Remove',
21
22
  'wxMenuBar::Replace')
@@ -23,6 +24,8 @@ module WXRuby3
23
24
  'wxMenuBar::GetLabelTop',
24
25
  'wxMenuBar::SetLabelTop',
25
26
  'wxMenuBar::Refresh')
27
+ spec.disown 'wxMenu *'
28
+ spec.new_object 'wxMenuBar::Remove', 'wxMenuBar::Replace'
26
29
  # for FindItem
27
30
  spec.map 'wxMenu **' => 'Wx::Menu' do
28
31
  map_in ignore: true, temp: 'wxMenu *tmp', code: '$1 = &tmp;'
@@ -31,6 +34,65 @@ module WXRuby3
31
34
  $result = SWIG_Ruby_AppendOutput($result, SWIG_NewPointerObj(ptr, SWIGTYPE_p_wxMenu, 0));
32
35
  __CODE
33
36
  end
37
+ spec.add_header_code <<~__HEREDOC
38
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkMenubar, "GC_MARK_MENUBAR")
39
+
40
+ // forward decl
41
+ SWIGINTERN void free_wxMenuBar(void *self);
42
+
43
+ // Mark Function for unattached menu bars
44
+ // Need to protect Menu and MenuItems which are included in the MenuBar
45
+ static void GC_mark_wxMenuBar(void *ptr)
46
+ {
47
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 2)
48
+ WXRUBY_TRACE("> GC_mark_wxMenuBar : " << ptr)
49
+ WXRUBY_TRACE_END
50
+
51
+ VALUE rb_menu_bar = SWIG_RubyInstanceFor(ptr);
52
+ if (!RB_NIL_P(rb_menu_bar))
53
+ {
54
+ // as long as the dfree function is still the managed free function the menubar has not been attached to a window
55
+ // but it may hay have already had menus and/or menuitems added which need to be marked
56
+ if (RDATA(rb_menu_bar)->dfree == free_wxMenuBar)
57
+ {
58
+ // Menu bars are also a subclass of wxWindow, so must do all the marking
59
+ // of sizers and carets associated with that class
60
+ GC_mark_wxWindow(ptr);
61
+
62
+ wxMenuBar* wx_menu_bar = static_cast<wxMenuBar*> (ptr);
63
+
64
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 3)
65
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : marking " << wx_menu_bar->GetMenuCount() << " menus")
66
+ WXRUBY_TRACE_END
67
+
68
+ // Mark each menu in the menubar in turn
69
+ for ( size_t i = 0; i < wx_menu_bar->GetMenuCount(); i++ )
70
+ {
71
+ GC_mark_attached_wxMenu(wx_menu_bar->GetMenu(i));
72
+ }
73
+ }
74
+ else // otherwise the menu bar has been attached to a frame and may already have been deleted (or not)
75
+ { // marking in this case will be left to the frame
76
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 3)
77
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : skipping attached menu bar")
78
+ WXRUBY_TRACE_END
79
+ }
80
+ }
81
+ else
82
+ {
83
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 3)
84
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : skipping untracked menu bar (should not have happened)")
85
+ WXRUBY_TRACE_END
86
+ }
87
+
88
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 2)
89
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : " << ptr)
90
+ WXRUBY_TRACE_END
91
+ }
92
+ __HEREDOC
93
+ spec.add_swig_code <<~__HEREDOC
94
+ %markfunc wxMenu "GC_mark_wxMenuBar";
95
+ __HEREDOC
34
96
  end
35
97
  end # class MenuBar
36
98
 
@@ -17,12 +17,18 @@ module WXRuby3
17
17
  # (which seems acceptable as there is no use for menu items otherwise)
18
18
  # if not the C++ item will never be deleted before the process terminates
19
19
  # (but this goes for all object marked for GC_NEVER).
20
+ # this keeps things MUCH simpler while adding a (slight?) risk of minor
21
+ # (non-destructive) memory leaks
20
22
  spec.gc_never
23
+ spec.disable_proxies # no reason to derive
21
24
  spec.ignore(%w[wxMenuItem::GetLabel wxMenuItem::GetName wxMenuItem::GetText wxMenuItem::SetText wxMenuItem::GetLabelFromText])
25
+ # Replace for more specific param naming
26
+ spec.ignore 'wxMenuItem::SetSubMenu(wxMenu *)', ignore_doc: false
27
+ spec.extend_interface 'wxMenuItem', 'void SetSubMenu(wxMenu *sub_menu)'
28
+ spec.disown 'wxMenu *sub_menu'
22
29
  # ignore this as there is no implementation anymore
23
30
  spec.ignore 'wxMenuItem::GetAccelFromString'
24
31
  spec.ignore_unless('USE_ACCEL', 'wxMenuItem::GetAccel')
25
- spec.no_proxy 'wxMenuItem::GetAccel'
26
32
  spec.ignore 'wxMenuItem::GetBitmap(bool)' # not portable
27
33
  if Config.instance.wx_version_check('3.2.4') > 0
28
34
  spec.ignore_unless('WXMSW', 'wxMenuItem::SetBackgroundColour','wxMenuItem::SetFont','wxMenuItem::SetTextColour')
@@ -54,7 +54,16 @@ module WXRuby3
54
54
  {}
55
55
  virtual ~WXIntegerValidator()
56
56
  {
57
+ // All Validators are EvtHandlers, so prevent any pending events being
58
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
59
+ this->SetEvtHandlerEnabled(false);
57
60
  wxRuby_ReleaseEvtHandlerProcs(this);
61
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
62
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
63
+ {
64
+ SWIG_RubyUnlinkObjects(this);
65
+ SWIG_RubyRemoveTracking(this);
66
+ }
58
67
  }
59
68
 
60
69
  virtual wxObject* Clone() const override
@@ -163,7 +172,16 @@ module WXRuby3
163
172
  {}
164
173
  virtual ~WXUnsignedValidator()
165
174
  {
175
+ // All Validators are EvtHandlers, so prevent any pending events being
176
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
177
+ this->SetEvtHandlerEnabled(false);
166
178
  wxRuby_ReleaseEvtHandlerProcs(this);
179
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
180
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
181
+ {
182
+ SWIG_RubyUnlinkObjects(this);
183
+ SWIG_RubyRemoveTracking(this);
184
+ }
167
185
  }
168
186
 
169
187
  virtual wxObject* Clone() const override
@@ -272,7 +290,16 @@ module WXRuby3
272
290
  {}
273
291
  virtual ~WXFloatValidator()
274
292
  {
293
+ // All Validators are EvtHandlers, so prevent any pending events being
294
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
295
+ this->SetEvtHandlerEnabled(false);
275
296
  wxRuby_ReleaseEvtHandlerProcs(this);
297
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
298
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
299
+ {
300
+ SWIG_RubyUnlinkObjects(this);
301
+ SWIG_RubyRemoveTracking(this);
302
+ }
276
303
  }
277
304
 
278
305
  virtual wxObject* Clone() const override
@@ -34,7 +34,16 @@ module WXRuby3
34
34
  }
35
35
  virtual ~WXRubyNumericPropertyValidator()
36
36
  {
37
+ // All Validators are EvtHandlers, so prevent any pending events being
38
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
39
+ this->SetEvtHandlerEnabled(false);
37
40
  wxRuby_ReleaseEvtHandlerProcs(this);
41
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
42
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
43
+ {
44
+ SWIG_RubyUnlinkObjects(this);
45
+ SWIG_RubyRemoveTracking(this);
46
+ }
38
47
  }
39
48
 
40
49
  virtual wxObject* Clone() const override
@@ -18,6 +18,10 @@ module WXRuby3
18
18
  # only after 3.2.4 properly available
19
19
  spec.items << 'wxPersistentComboBox'
20
20
  end
21
+ if Config.instance.wx_version_check('3.3.0') > 0
22
+ # only after 3.3.0 available
23
+ spec.items << 'wxPersistentCheckBox' << 'wxPersistentRadioButton'
24
+ end
21
25
  super
22
26
  spec.gc_as_marked
23
27
  spec.use_template_as_class('wxPersistentWindow', 'wxPersistentWindowBase')
@@ -64,6 +68,18 @@ module WXRuby3
64
68
  spec.extend_interface 'wxPersistentComboBox',
65
69
  'virtual wxString GetKind() const override'
66
70
  end
71
+ if Config.instance.wx_version_check('3.3.0') > 0
72
+ # wxPersistentCheckBox
73
+ spec.override_inheritance_chain('wxPersistentCheckBox', [{ 'wxPersistentWindowBase' => 'wxPersistentWindow' }, 'wxPersistentObject'])
74
+ # add method override missing from docs
75
+ spec.extend_interface 'wxPersistentCheckBox',
76
+ 'virtual wxString GetKind() const override'
77
+ # wxPersistentRadioButton
78
+ spec.override_inheritance_chain('wxPersistentRadioButton', [{ 'wxPersistentWindowBase' => 'wxPersistentWindow' }, 'wxPersistentObject'])
79
+ # add method override missing from docs
80
+ spec.extend_interface 'wxPersistentRadioButton',
81
+ 'virtual wxString GetKind() const override'
82
+ end
67
83
  end
68
84
 
69
85
  end
@@ -121,8 +121,9 @@ module WXRuby3
121
121
  spec.ignore 'wxPGProperty::GetCellRenderer'
122
122
  # obsolete
123
123
  if Config.instance.wx_version_check('3.3.0') < 0
124
- spec.ignore %w[wxPGProperty::AddChild wxPGProperty::GetValueString]
125
- else
124
+ spec.ignore 'wxPGProperty::GetValueString'
125
+ end
126
+ if Config.instance.wx_version_check('3.3.0') <= 0
126
127
  spec.ignore 'wxPGProperty::AddChild'
127
128
  end
128
129
  # not of use in Ruby
@@ -35,6 +35,8 @@ module WXRuby3
35
35
  # for upcalls
36
36
  spec.extend_interface('wxPopupWindow',
37
37
  'virtual bool Show(bool show = true) override')
38
+ spec.extend_interface('wxPopupTransientWindow',
39
+ 'virtual bool Destroy() override')
38
40
  # For ProcessLeftDown
39
41
  spec.map 'wxMouseEvent &' => 'Wx::MouseEvent' do
40
42
  map_directorin code: <<~__CODE
@@ -31,7 +31,8 @@ module WXRuby3
31
31
  const wxString& name = wxASCII_STR(wxFrameNameStr))
32
32
  : wxPreviewFrame(preview, parent, title, pos, size, style, name)
33
33
  {}
34
- virtual ~WxRubyPreviewFrame() {}
34
+ virtual ~WxRubyPreviewFrame()
35
+ {}
35
36
 
36
37
  const wxPrintPreview* get_print_preview() const
37
38
  {
@@ -39,20 +40,42 @@ module WXRuby3
39
40
  }
40
41
  };
41
42
 
43
+ WXRUBY_TRACE_GUARD(WxRubyTraceGCMarkPreviewFrame, "GC_MARK_PRINT_PREVIEW_FRAME")
44
+
45
+ void WxRuby_mark_wxPrintPreview(void* ptr);
46
+
42
47
  static void GC_mark_wxPreviewFrame(void *ptr)
43
48
  {
49
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPreviewFrame, 2)
50
+ WXRUBY_TRACE("> GC_mark_wxPreviewFrame : " << ptr)
51
+ WXRUBY_TRACE_END
52
+
44
53
  if ( GC_IsWindowDeleted(ptr) )
45
54
  return;
46
55
 
47
- // Do standard marking routines as for all wxWindows
48
- GC_mark_wxWindow(ptr);
56
+ // Do standard marking routines as for all wxFrames
57
+ GC_mark_wxFrame(ptr);
49
58
 
50
59
  WxRubyPreviewFrame* preview_frame = dynamic_cast<WxRubyPreviewFrame*>((wxPreviewFrame*)ptr);
51
60
  if (preview_frame)
52
61
  {
53
- const void* ptr = (const void*)preview_frame->get_print_preview();
54
- rb_gc_mark(SWIG_RubyInstanceFor(const_cast<void*> (ptr)));
62
+ const wxPrintPreview* wx_prtprev = preview_frame->get_print_preview();
63
+ VALUE rb_prtprev = SWIG_RubyInstanceFor(const_cast<void*> ((const void*)wx_prtprev));
64
+
65
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPreviewFrame, 3)
66
+ WXRUBY_TRACE("| GC_mark_wxPreviewFrame : marking print preview " << wx_prtprev << " -> " << rb_prtprev);
67
+ WXRUBY_TRACE_END
68
+
69
+ // mark the Ruby wrapper instance
70
+ // this will skip marking the members as any preview attached to a preview frame is disowned
71
+ rb_gc_mark(rb_prtprev);
72
+ // so, force marking the preview members
73
+ WxRuby_mark_wxPrintPreview(const_cast<void*> ((const void*)wx_prtprev));
55
74
  }
75
+
76
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPreviewFrame, 2)
77
+ WXRUBY_TRACE("< GC_mark_wxPreviewFrame : " << ptr)
78
+ WXRUBY_TRACE_END
56
79
  }
57
80
  __HEREDOC
58
81
  spec.use_class_implementation 'wxPreviewFrame', 'WxRubyPreviewFrame'
@@ -62,7 +85,7 @@ module WXRuby3
62
85
  # in all cases will be the actual base being used.
63
86
  spec.ignore 'wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase *, wxWindow *,const wxString &,const wxPoint &,const wxSize &,long,const wxString &)', ignore_doc: false
64
87
  spec.extend_interface('wxPreviewFrame',
65
- 'wxPreviewFrame(wxPrintPreview *preview, wxWindow *parent, const wxString &title="Print Preview", const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE, const wxString &name=wxFrameNameStr)')
88
+ 'wxPreviewFrame(wxPrintPreview *preview, wxWindow *parent, const wxString &title="Print Preview", const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT, const wxString &name=wxFrameNameStr)')
66
89
  # non-functional map for doc gen
67
90
  spec.map 'wxPrintPreviewBase *' => 'Wx::PrintPreview', swig: false do
68
91
  map_in
@@ -31,16 +31,70 @@ module WXRuby3
31
31
  spec.new_object 'wxPrinter::GetPrintDialogData'
32
32
  spec.disown 'wxPrintout *' # Printout-s passed to PrintPreview will be managed by wxWidgets
33
33
  spec.add_header_code <<~__HEREDOC
34
- static void GC_mark_wxPrintPreview(void *ptr)
35
- {
34
+ WXRUBY_TRACE_GUARD(WxRubyTraceGCMarkPrintPreview, "GC_MARK_PRINT_PREVIEW")
35
+
36
+ // forward decl
37
+ SWIGINTERN void free_wxPrintPreview(void *self);
38
+
39
+ // this is the actual print preview marker which is called for Ruby owned instances from the
40
+ // Ruby standard marker and by the container preview frame for disowned instances
41
+ void WxRuby_mark_wxPrintPreview(void* ptr)
42
+ {
43
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
44
+ WXRUBY_TRACE("> WxRuby_mark_wxPrintPreview : " << ptr)
45
+ WXRUBY_TRACE_END
46
+
36
47
  if (ptr)
37
48
  {
38
49
  wxPrintPreview* print_preview = (wxPrintPreview*)ptr;
39
50
  wxPrintout* printout = print_preview->GetPrintout();
40
- rb_gc_mark( SWIG_RubyInstanceFor(printout) );
41
- wxPrintout* printout_for_printing = print_preview->GetPrintoutForPrinting();
42
- rb_gc_mark( SWIG_RubyInstanceFor(printout_for_printing) );
51
+ VALUE rb_prtout = SWIG_RubyInstanceFor(printout);
52
+
53
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 3)
54
+ WXRUBY_TRACE("| WxRuby_mark_wxPrintPreview : marking preview printout " << printout << " -> " << rb_prtout);
55
+ WXRUBY_TRACE_END
56
+
57
+ rb_gc_mark(rb_prtout);
58
+
59
+ printout = print_preview->GetPrintoutForPrinting();
60
+ rb_prtout = SWIG_RubyInstanceFor(printout);
61
+
62
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 3)
63
+ WXRUBY_TRACE("| WxRuby_mark_wxPrintPreview : marking printing printout " << printout << " -> " << rb_prtout);
64
+ WXRUBY_TRACE_END
65
+
66
+ rb_gc_mark(rb_prtout);
43
67
  }
68
+
69
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
70
+ WXRUBY_TRACE("< WxRuby_mark_wxPrintPreview : " << ptr)
71
+ WXRUBY_TRACE_END
72
+ }
73
+
74
+ // this is the Ruby standard marker called by the Ruby GC mark phase
75
+ // for Ruby instances visible to Ruby
76
+ static void GC_mark_wxPrintPreview(void *ptr)
77
+ {
78
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
79
+ WXRUBY_TRACE("> GC_mark_wxPrintPreview : " << ptr)
80
+ WXRUBY_TRACE_END
81
+
82
+ VALUE rb_pp = SWIG_RubyInstanceFor(ptr);
83
+ // if this is still an instance 'owned' by Ruby
84
+ if (!RB_NIL_P(rb_pp) && RDATA(rb_pp)->dfree==free_wxPrintPreview)
85
+ {
86
+ WxRuby_mark_wxPrintPreview(ptr);
87
+ }
88
+ else
89
+ {
90
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 3)
91
+ WXRUBY_TRACE("| GC_mark_wxPrintPreview : skip marking disowned instance")
92
+ WXRUBY_TRACE_END
93
+ }
94
+
95
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
96
+ WXRUBY_TRACE("< GC_mark_wxPrintPreview : " << ptr)
97
+ WXRUBY_TRACE_END
44
98
  }
45
99
  __HEREDOC
46
100
  spec.add_swig_code '%markfunc wxPrintPreview "GC_mark_wxPrintPreview";'
@@ -74,12 +74,16 @@ module WXRuby3
74
74
  spec.include_mixin 'wxPropertyGrid', 'Wx::PG::PropertyGridInterface'
75
75
  # customize mark function
76
76
  spec.add_header_code <<~__HEREDOC
77
+ extern bool WXRuby_Is_In_GC_mark_wxPropertyGridManager();
78
+
79
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkPropGrid, "GC_MARK_PROPGRID_GRID")
80
+
77
81
  static void GC_mark_wxPropertyGrid(void* ptr)
78
82
  {
79
- #ifdef __WXRB_DEBUG__
80
- if (wxRuby_TraceLevel()>1)
81
- std::wcout << "> GC_mark_wxPropertyGrid : " << ptr << std::endl;
82
- #endif
83
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGrid, 2)
84
+ WXRUBY_TRACE("> GC_mark_wxPropertyGrid : " << ptr)
85
+ WXRUBY_TRACE_END
86
+
83
87
  if ( GC_IsWindowDeleted(ptr) )
84
88
  {
85
89
  return;
@@ -87,38 +91,53 @@ module WXRuby3
87
91
  // Do standard marking routines as for all wxWindows
88
92
  GC_mark_wxWindow(ptr);
89
93
 
94
+ // no need to mark properties if called from GC_mark_wxPropertyGridManager
95
+ // as that will mark properties through the property grid pages
96
+ if (WXRuby_Is_In_GC_mark_wxPropertyGridManager())
97
+ return;
98
+
99
+ #ifdef __WXRB_DEBUG__
100
+ long l = 0, n = 0;
101
+ #endif
90
102
  wxPropertyGrid* wx_pg = (wxPropertyGrid*) ptr;
91
103
 
104
+ VALUE rb_root_prop = SWIG_RubyInstanceFor(wx_pg->GetRoot());
105
+ if (!NIL_P(rb_root_prop))
106
+ {
107
+ rb_gc_mark(rb_root_prop);
108
+ #ifdef __WXRB_DEBUG__
109
+ ++n;
110
+ #endif
111
+ }
92
112
  // mark all properties
93
113
  wxPGVIterator it =
94
114
  wx_pg->GetVIterator(wxPG_ITERATOR_FLAGS_ALL | wxPG_IT_CHILDREN(wxPG_ITERATOR_FLAGS_ALL));
95
115
  // iterate all
96
116
  for ( ; !it.AtEnd(); it.Next() )
97
117
  {
98
- wxPGProperty* p = it.GetProperty();
99
- VALUE rb_p = SWIG_RubyInstanceFor(p);
100
- if (NIL_P(rb_p))
101
- {
102
- VALUE object = (VALUE) p->GetClientData();
103
- if ( object && !NIL_P(object))
104
- {
105
118
  #ifdef __WXRB_DEBUG__
106
- if (wxRuby_TraceLevel()>2)
107
- std::wcout << "*** marking property data " << p << ":" << p->GetName() << std::endl;
119
+ ++l;
108
120
  #endif
109
- rb_gc_mark(object);
110
- }
111
- }
112
- else
121
+ wxPGProperty* wx_p = it.GetProperty();
122
+ VALUE rb_prop = SWIG_RubyInstanceFor(wx_p);
123
+ if (!RB_NIL_P(rb_prop))
113
124
  {
114
- rb_gc_mark(rb_p);
125
+ rb_gc_mark(rb_prop);
126
+ #ifdef __WXRB_DEBUG__
127
+ ++n;
128
+ #endif
115
129
  }
116
130
  }
131
+
132
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGrid, 2)
133
+ WXRUBY_TRACE("< GC_mark_wxPropertyGrid : iterated " << l << " properties; marked " << n )
134
+ WXRUBY_TRACE_END
117
135
  }
118
136
  __HEREDOC
119
137
  spec.add_swig_code '%markfunc wxPropertyGrid "GC_mark_wxPropertyGrid";'
120
138
  # missing from XML docs
121
139
  spec.extend_interface 'wxPropertyGrid',
140
+ 'virtual bool Destroy()',
122
141
  'wxPoint GetGoodEditorDialogPosition(wxPGProperty* p, const wxSize& sz)',
123
142
  'wxWindow* GetPrimaryEditor() const',
124
143
  'wxWindow* GetEditorControlSecondary() const',
@@ -45,10 +45,12 @@ module WXRuby3
45
45
  end
46
46
  spec.ignore_unless 'USE_DATETIME', 'wxPropertyGridInterface::GetPropertyValueAsDateTime'
47
47
  spec.ignore_unless 'USE_VALIDATORS', 'wxPropertyGridInterface::GetPropertyValidator'
48
- # fix incorrect XML documentation
49
- spec.ignore 'wxPropertyGridInterface::SetPropertyImage', ignore_doc: false # ignore non-const BitmapBundle arg decl
50
- # and add correct decl
51
- spec.extend_interface 'wxPropertyGridInterface', 'void SetPropertyImage(wxPGPropArg id, const wxBitmapBundle &bmp)'
48
+ if Config.instance.wx_version_check('3.3.1') <= 0
49
+ # fix incorrect XML documentation
50
+ spec.ignore 'wxPropertyGridInterface::SetPropertyImage', ignore_doc: false # ignore non-const BitmapBundle arg decl
51
+ # and add correct decl
52
+ spec.extend_interface 'wxPropertyGridInterface', 'void SetPropertyImage(wxPGPropArg id, const wxBitmapBundle &bmp)'
53
+ end
52
54
  # don't expose property grid iterators; add a more Ruby-like extension
53
55
  spec.ignore 'wxPropertyGridInterface::GetIterator', 'wxPropertyGridInterface::GetVIterator'
54
56
  # add basic property enumerator; will wrap this in pure Ruby still for improved argument handling
@@ -63,7 +65,7 @@ module WXRuby3
63
65
  while (!prop_it.AtEnd())
64
66
  {
65
67
  wxPGProperty* pp = prop_it.GetProperty();
66
- VALUE rb_prop = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
68
+ VALUE rb_prop = wxRuby_WrapWxPGPropertyInRuby(pp);
67
69
  rc = rb_yield(rb_prop);
68
70
  prop_it.Next();
69
71
  }
@@ -101,7 +103,7 @@ module WXRuby3
101
103
  while (!prop_it.AtEnd())
102
104
  {
103
105
  wxPGProperty* pp = prop_it.GetProperty();
104
- VALUE rb_prop = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
106
+ VALUE rb_prop = wxRuby_WrapWxPGPropertyInRuby(pp);
105
107
  rc = rb_yield(rb_prop);
106
108
  reverse ? prop_it.Prev() : prop_it.Next();
107
109
  }
@@ -137,7 +139,7 @@ module WXRuby3
137
139
  for (size_t i = 0; i < $1->GetCount(); i++)
138
140
  {
139
141
  wxPGProperty* pp = $1->Item(i);
140
- VALUE rb_pp = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
142
+ VALUE rb_pp = wxRuby_WrapWxPGPropertyInRuby(pp);
141
143
  rb_ary_push($result, rb_pp);
142
144
  }
143
145
  __CODE
@@ -149,7 +151,7 @@ module WXRuby3
149
151
  for (size_t i = 0; i < $1->GetCount(); i++)
150
152
  {
151
153
  wxPGProperty* pp = $1->Item(i);
152
- VALUE rb_pp = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
154
+ VALUE rb_pp = wxRuby_WrapWxPGPropertyInRuby(pp);
153
155
  rb_ary_push($result, rb_pp);
154
156
  }
155
157
  __CODE