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
@@ -19,6 +19,57 @@ module WXRuby3
19
19
  def setup
20
20
  super
21
21
  spec.override_inheritance_chain('wxPropertyGridManager', %w[wxPanel wxWindow wxEvtHandler wxObject])
22
+ # need a custom implementation to handle cleaning up tracked objects
23
+ spec.add_header_code <<~__HEREDOC
24
+ WXRUBY_EXPORT void GC_SetWindowDeleted(void *ptr);
25
+
26
+ class WXRubyPropertyGridManager : public wxPropertyGridManager
27
+ {
28
+ public:
29
+ WXRubyPropertyGridManager() : wxPropertyGridManager() {}
30
+ WXRubyPropertyGridManager( wxWindow *parent, wxWindowID id = wxID_ANY,
31
+ const wxPoint& pos = wxDefaultPosition,
32
+ const wxSize& size = wxDefaultSize,
33
+ long style = wxPGMAN_DEFAULT_STYLE,
34
+ const wxString& name = wxASCII_STR(wxPropertyGridManagerNameStr) )
35
+ : wxPropertyGridManager(parent, id, pos, size, style, name) {}
36
+
37
+ virtual ~WXRubyPropertyGridManager()
38
+ {
39
+ // as the grid will not be deleted by calling Destroy() but
40
+ // rather by deleting directly handle GC cleanup here
41
+ GC_SetWindowDeleted(m_pPropGrid);
42
+ // also cleanup all page and property instances that will
43
+ // be deleted by wxPropertyGridManager
44
+ for( wxPropertyGridPage* page : m_arrPages )
45
+ {
46
+ // clean up tracking of all tracked properties
47
+ wxPGProperty* wx_p = page->GetRoot();
48
+ if (!NIL_P(SWIG_RubyInstanceFor(wx_p)))
49
+ {
50
+ SWIG_RubyUnlinkObjects(wx_p);
51
+ SWIG_RubyRemoveTracking(wx_p);
52
+ }
53
+ wxPGVIterator it =
54
+ page->GetVIterator(wxPG_ITERATOR_FLAGS_ALL | wxPG_IT_CHILDREN(wxPG_ITERATOR_FLAGS_ALL));
55
+ // iterate all
56
+ for ( ; !it.AtEnd(); it.Next() )
57
+ {
58
+ wx_p = it.GetProperty();
59
+ if (!RB_NIL_P(SWIG_RubyInstanceFor(wx_p)))
60
+ {
61
+ SWIG_RubyUnlinkObjects(wx_p);
62
+ SWIG_RubyRemoveTracking(wx_p);
63
+ }
64
+ }
65
+ // Disassociate the C++ and Ruby pages (if any association)
66
+ SWIG_RubyUnlinkObjects(page);
67
+ SWIG_RubyRemoveTracking(page);
68
+ }
69
+ }
70
+ };
71
+ __HEREDOC
72
+ spec.use_class_implementation 'wxPropertyGridManager', 'WXRubyPropertyGridManager'
22
73
  spec.add_swig_code 'typedef const wxPGPropArgCls& wxPGPropArg;'
23
74
  # mixin PropertyGridInterface
24
75
  spec.include_mixin 'wxPropertyGridManager', 'Wx::PG::PropertyGridInterface'
@@ -29,12 +80,28 @@ module WXRuby3
29
80
  spec.ignore 'wxPropertyGridManager::GetVIterator'
30
81
  # customize mark function
31
82
  spec.add_header_code <<~__HEREDOC
83
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkPropGridMgr, "GC_MARK_PROPGRID_MGR")
84
+
85
+ static bool __wxr_In_GC_mark_wxPropertyGridManager = false;
86
+
87
+ extern void WXRuby_Set_In_GC_mark_wxPropertyGridManager(bool f)
88
+ {
89
+ __wxr_In_GC_mark_wxPropertyGridManager = f;
90
+ }
91
+
92
+ extern bool WXRuby_Is_In_GC_mark_wxPropertyGridManager()
93
+ {
94
+ return __wxr_In_GC_mark_wxPropertyGridManager;
95
+ }
96
+
97
+ extern void WXRuby_GC_mark_wxPropertyGridPage(wxPropertyGridPage* wx_pgp);
98
+
32
99
  static void GC_mark_wxPropertyGridManager(void* ptr)
33
100
  {
34
- #ifdef __WXRB_DEBUG__
35
- if (wxRuby_TraceLevel()>1)
36
- std::wcout << "> GC_mark_wxPropertyGridManager : " << ptr << std::endl;
37
- #endif
101
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGridMgr, 2)
102
+ WXRUBY_TRACE("> GC_mark_wxPropertyGridManager : " << ptr)
103
+ WXRUBY_TRACE_END
104
+
38
105
  if ( GC_IsWindowDeleted(ptr) )
39
106
  {
40
107
  return;
@@ -42,46 +109,39 @@ module WXRuby3
42
109
  // Do standard marking routines as for all wxWindows
43
110
  GC_mark_wxWindow(ptr);
44
111
 
45
- wxPropertyGridManager* wx_pg = (wxPropertyGridManager*) ptr;
112
+ WXRuby_Set_In_GC_mark_wxPropertyGridManager(true);
113
+
114
+ wxPropertyGridManager* wx_pgm = (wxPropertyGridManager*) ptr;
46
115
 
47
- // mark all properties of all pages
48
- #ifdef __WXRB_DEBUG__
49
- long l = 0;
50
- #endif
51
- for (size_t i=0; i < wx_pg->GetPageCount() ;++i)
116
+ // mark the property grid
117
+ wxPropertyGrid* wx_pg = wx_pgm->GetGrid();
118
+ VALUE rb_pg = SWIG_RubyInstanceFor(wx_pg);
119
+ if (!NIL_P(rb_pg))
52
120
  {
53
- wxPGVIterator it =
54
- wx_pg->GetPage(i)->GetVIterator(wxPG_ITERATOR_FLAGS_ALL | wxPG_IT_CHILDREN(wxPG_ITERATOR_FLAGS_ALL));
55
- // iterate all
56
- for ( ; !it.AtEnd(); it.Next() )
121
+ rb_gc_mark(rb_pg);
122
+ }
123
+
124
+ // mark all properties of all pages
125
+ for (size_t i=0; i < wx_pgm->GetPageCount() ;++i)
126
+ {
127
+ wxPropertyGridPage* wx_pgp = wx_pgm->GetPage(i);
128
+ // check if this page is wrapped in Ruby
129
+ VALUE rb_pgp = SWIG_RubyInstanceFor(wx_pgp);
130
+ if (NIL_P(rb_pgp)) // if not just iterate and mark it's properties
57
131
  {
58
- #ifdef __WXRB_DEBUG__
59
- ++l;
60
- #endif
61
- wxPGProperty* p = it.GetProperty();
62
- VALUE rb_p = SWIG_RubyInstanceFor(p);
63
- if (NIL_P(rb_p))
64
- {
65
- VALUE object = (VALUE) p->GetClientData();
66
- if ( object && !NIL_P(object))
67
- {
68
- #ifdef __WXRB_DEBUG__
69
- if (wxRuby_TraceLevel()>2)
70
- std::wcout << "*** marking property data " << p << ":" << p->GetName() << std::endl;
71
- #endif
72
- rb_gc_mark(object);
73
- }
74
- }
75
- else
76
- {
77
- rb_gc_mark(rb_p);
78
- }
132
+ WXRuby_GC_mark_wxPropertyGridPage(wx_pgp);
133
+ }
134
+ else // but a tracked Ruby page instance we can simply mark and it will mark it's properties itself
135
+ {
136
+ rb_gc_mark(rb_pgp);
79
137
  }
80
138
  }
81
- #ifdef __WXRB_DEBUG__
82
- if (wxRuby_TraceLevel()>1)
83
- std::wcout << "*** iterated " << l << " properties" << std::endl;
84
- #endif
139
+
140
+ WXRuby_Set_In_GC_mark_wxPropertyGridManager(false);
141
+
142
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGridMgr, 2)
143
+ WXRUBY_TRACE(" GC_mark_wxPropertyGridManager : " << ptr)
144
+ WXRUBY_TRACE_END
85
145
  }
86
146
  __HEREDOC
87
147
  spec.add_swig_code '%markfunc wxPropertyGridManager "GC_mark_wxPropertyGridManager";'
@@ -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,16 @@ 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
- spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', { 'wxVScrolledWindow' => 'wxHVScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
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
29
+ spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', 'wxVScrolledWindow', 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
30
+ else
31
+ spec.override_inheritance_chain('wxRichTextStyleListBox', ['wxHtmlListBox', 'wxVListBox', { 'wxVScrolledWindow' => 'wxHScrolledWindow' }, 'wxPanel', 'wxWindow', 'wxEvtHandler', 'wxObject'])
32
+ end
26
33
  spec.override_inheritance_chain('wxRichTextStyleComboCtrl',
27
34
  %w[wxComboCtrl
28
35
  wxControl
@@ -33,7 +40,9 @@ module WXRuby3
33
40
  spec.extend_interface 'wxRichTextStyleComboCtrl',
34
41
  'virtual void DoSetPopupControl(wxComboPopup* popup)',
35
42
  visibility: 'protected'
36
- spec.no_proxy 'wxVListBox::OnGetRowHeight'
43
+ # optimize; no need for these virtuals here
44
+ spec.no_proxy 'wxRichTextStyleListBox::OnGetRowHeight',
45
+ 'wxRichTextStyleListBox::OnGetRowsHeightHint'
37
46
  end
38
47
 
39
48
  end
@@ -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
 
@@ -78,7 +78,6 @@ module WXRuby3
78
78
  "#{spec.class_name(citem)}::Maximize",
79
79
  "#{spec.class_name(citem)}::Navigate",
80
80
  "#{spec.class_name(citem)}::Refresh",
81
- "#{spec.class_name(citem)}::Reparent",
82
81
  "#{spec.class_name(citem)}::RequestUserAttention",
83
82
  "#{spec.class_name(citem)}::Restore",
84
83
  "#{spec.class_name(citem)}::SetIcon",
@@ -37,11 +37,13 @@ module WXRuby3
37
37
  wxMicroSleep
38
38
  wxMilliSleep
39
39
  wxSleep
40
- wxUsleep
41
40
  wxNow
42
41
  wxDecToHex
43
42
  wxHexToDec
44
43
  ]
44
+ if Config.instance.wx_version_check('3.3.0') <= 0
45
+ spec.ignore 'wxUsleep'
46
+ end
45
47
  # ignore these enum(erator)s
46
48
  spec.ignore %w[
47
49
  wxSignal
@@ -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)'