wxruby3 0.9.2-x64-mingw-ucrt → 0.9.4-x64-mingw-ucrt

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 (668) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +35 -29
  3. data/README.md +24 -15
  4. data/ext/wxbase32u_gcc_custom.dll +0 -0
  5. data/ext/wxbase32u_net_gcc_custom.dll +0 -0
  6. data/ext/wxbase32u_xml_gcc_custom.dll +0 -0
  7. data/ext/wxmsw32u_aui_gcc_custom.dll +0 -0
  8. data/ext/wxmsw32u_core_gcc_custom.dll +0 -0
  9. data/ext/wxmsw32u_gl_gcc_custom.dll +0 -0
  10. data/ext/wxmsw32u_html_gcc_custom.dll +0 -0
  11. data/ext/wxmsw32u_media_gcc_custom.dll +0 -0
  12. data/ext/wxmsw32u_propgrid_gcc_custom.dll +0 -0
  13. data/ext/wxmsw32u_qa_gcc_custom.dll +0 -0
  14. data/ext/wxmsw32u_ribbon_gcc_custom.dll +0 -0
  15. data/ext/wxmsw32u_richtext_gcc_custom.dll +0 -0
  16. data/ext/wxmsw32u_stc_gcc_custom.dll +0 -0
  17. data/ext/wxmsw32u_webview_gcc_custom.dll +0 -0
  18. data/ext/wxmsw32u_xrc_gcc_custom.dll +0 -0
  19. data/lib/wx/core/bitmap_combobox.rb +17 -21
  20. data/lib/wx/core/book_ctrl_base.rb +16 -0
  21. data/lib/wx/core/combobox.rb +13 -3
  22. data/lib/wx/core/config.rb +454 -83
  23. data/lib/wx/core/controlwithitems.rb +40 -130
  24. data/lib/wx/core/enum.rb +17 -1
  25. data/lib/wx/core/event.rb +6 -1
  26. data/lib/wx/core/events/evt_list.rb +5 -4
  27. data/lib/wx/core/evthandler.rb +8 -2
  28. data/lib/wx/core/generic_validator.rb +312 -0
  29. data/lib/wx/core/listbox.rb +2 -2
  30. data/lib/wx/core/log.rb +1 -1
  31. data/lib/wx/core/notebook.rb +10 -8
  32. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  33. data/lib/wx/core/peristent_object.rb +15 -0
  34. data/lib/wx/core/persistence_manager.rb +39 -0
  35. data/lib/wx/core/persistent_window.rb +16 -0
  36. data/lib/wx/core/size.rb +4 -0
  37. data/lib/wx/core/sizer.rb +1 -2
  38. data/lib/wx/core/standard_paths.rb +22 -0
  39. data/lib/wx/core/text_entry.rb +4 -1
  40. data/lib/wx/core/top_level_window.rb +16 -0
  41. data/lib/wx/core/treebook.rb +18 -0
  42. data/lib/wx/core/validator.rb +70 -5
  43. data/lib/wx/core/window.rb +3 -7
  44. data/lib/wx/core.rb +4 -0
  45. data/lib/wx/doc/art_locator.rb +1 -0
  46. data/lib/wx/doc/book_ctrl_base.rb +19 -0
  47. data/lib/wx/doc/comboctrl.rb +18 -0
  48. data/lib/wx/doc/config.rb +101 -41
  49. data/lib/wx/doc/controlwithitems.rb +16 -0
  50. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  51. data/lib/wx/doc/editable_listbox.rb +44 -0
  52. data/lib/wx/doc/enum.rb +15 -0
  53. data/lib/wx/doc/event.rb +12 -0
  54. data/lib/wx/doc/extra/12_client_data.md +89 -0
  55. data/lib/wx/doc/extra/13_validators.md +139 -0
  56. data/lib/wx/doc/extra/14_config.md +101 -0
  57. data/lib/wx/doc/extra/15_persistence.md +148 -0
  58. data/lib/wx/doc/gdi_common.rb +4 -0
  59. data/lib/wx/doc/gen/about_dialog_info.rb +25 -0
  60. data/lib/wx/doc/gen/accelerator.rb +7 -1
  61. data/lib/wx/doc/gen/accessible.rb +13 -0
  62. data/lib/wx/doc/gen/activity_indicator.rb +7 -0
  63. data/lib/wx/doc/gen/animation.rb +12 -0
  64. data/lib/wx/doc/gen/animation_ctrl.rb +10 -0
  65. data/lib/wx/doc/gen/any_button.rb +17 -1
  66. data/lib/wx/doc/gen/app.rb +35 -1
  67. data/lib/wx/doc/gen/app_traits.rb +38 -5
  68. data/lib/wx/doc/gen/art_provider.rb +14 -0
  69. data/lib/wx/doc/gen/aui/aui_dock_art.rb +12 -0
  70. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +1 -0
  71. data/lib/wx/doc/gen/aui/aui_manager.rb +24 -1
  72. data/lib/wx/doc/gen/aui/aui_manager_event.rb +9 -1
  73. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +3 -0
  74. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +2 -0
  75. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +3 -1
  76. data/lib/wx/doc/gen/aui/aui_notebook.rb +20 -2
  77. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +2 -1
  78. data/lib/wx/doc/gen/aui/aui_pane_info.rb +30 -1
  79. data/lib/wx/doc/gen/aui/aui_tab_art.rb +6 -0
  80. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +1 -0
  81. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +11 -0
  82. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +2 -0
  83. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +2 -1
  84. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +4 -0
  85. data/lib/wx/doc/gen/banner_window.rb +7 -0
  86. data/lib/wx/doc/gen/bitmap.rb +64 -3
  87. data/lib/wx/doc/gen/bitmap_button.rb +6 -1
  88. data/lib/wx/doc/gen/bitmap_combo_box.rb +9 -3
  89. data/lib/wx/doc/gen/book_ctrl_base.rb +17 -2
  90. data/lib/wx/doc/gen/book_ctrl_event.rb +3 -1
  91. data/lib/wx/doc/gen/box_sizer.rb +5 -0
  92. data/lib/wx/doc/gen/brush.rb +16 -1
  93. data/lib/wx/doc/gen/busy_info.rb +8 -0
  94. data/lib/wx/doc/gen/button.rb +11 -3
  95. data/lib/wx/doc/gen/calculate_layout_event.rb +4 -0
  96. data/lib/wx/doc/gen/calendar_ctrl.rb +22 -0
  97. data/lib/wx/doc/gen/calendar_date_attr.rb +1 -0
  98. data/lib/wx/doc/gen/calendar_event.rb +3 -1
  99. data/lib/wx/doc/gen/caret.rb +3 -0
  100. data/lib/wx/doc/gen/check_box.rb +10 -0
  101. data/lib/wx/doc/gen/check_list_box.rb +3 -0
  102. data/lib/wx/doc/gen/choice.rb +14 -2
  103. data/lib/wx/doc/gen/choicebook.rb +1 -0
  104. data/lib/wx/doc/gen/client_dc.rb +1 -0
  105. data/lib/wx/doc/gen/clipboard.rb +9 -0
  106. data/lib/wx/doc/gen/collapsible_pane.rb +3 -0
  107. data/lib/wx/doc/gen/collapsible_pane_event.rb +1 -0
  108. data/lib/wx/doc/gen/colour.rb +20 -0
  109. data/lib/wx/doc/gen/colour_dialog.rb +10 -0
  110. data/lib/wx/doc/gen/colour_picker_ctrl.rb +4 -0
  111. data/lib/wx/doc/gen/colour_picker_event.rb +1 -0
  112. data/lib/wx/doc/gen/combo_box.rb +20 -1
  113. data/lib/wx/doc/gen/combo_ctrl.rb +54 -295
  114. data/lib/wx/doc/gen/command_link_button.rb +8 -0
  115. data/lib/wx/doc/gen/context_help_button.rb +7 -1
  116. data/lib/wx/doc/gen/control.rb +12 -0
  117. data/lib/wx/doc/gen/control_with_items.rb +45 -9
  118. data/lib/wx/doc/gen/core.rb +2 -2
  119. data/lib/wx/doc/gen/cursor.rb +4 -0
  120. data/lib/wx/doc/gen/data_format.rb +1 -0
  121. data/lib/wx/doc/gen/data_object.rb +27 -5
  122. data/lib/wx/doc/gen/date_event.rb +2 -1
  123. data/lib/wx/doc/gen/date_picker_ctrl.rb +7 -1
  124. data/lib/wx/doc/gen/dc.rb +87 -3
  125. data/lib/wx/doc/gen/dial_up_event.rb +2 -0
  126. data/lib/wx/doc/gen/dial_up_manager.rb +12 -0
  127. data/lib/wx/doc/gen/dialog.rb +42 -3
  128. data/lib/wx/doc/gen/dir_dialog.rb +6 -1
  129. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +1 -0
  130. data/lib/wx/doc/gen/dir_picker_ctrl.rb +5 -0
  131. data/lib/wx/doc/gen/drag_drop.rb +20 -0
  132. data/lib/wx/doc/gen/drag_image.rb +7 -0
  133. data/lib/wx/doc/gen/editable_list_box.rb +5 -3
  134. data/lib/wx/doc/gen/event.rb +26 -11
  135. data/lib/wx/doc/gen/event_blocker.rb +2 -1
  136. data/lib/wx/doc/gen/event_filter.rb +3 -2
  137. data/lib/wx/doc/gen/event_list.rb +4 -4
  138. data/lib/wx/doc/gen/events.rb +165 -26
  139. data/lib/wx/doc/gen/evt_handler.rb +40 -2
  140. data/lib/wx/doc/gen/ext_help_controller.rb +9 -0
  141. data/lib/wx/doc/gen/file_ctrl.rb +11 -2
  142. data/lib/wx/doc/gen/file_ctrl_event.rb +5 -1
  143. data/lib/wx/doc/gen/file_dialog.rb +13 -0
  144. data/lib/wx/doc/gen/file_dialog_custom_control.rb +12 -0
  145. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +11 -2
  146. data/lib/wx/doc/gen/file_dir_picker_event.rb +2 -1
  147. data/lib/wx/doc/gen/file_picker_ctrl.rb +4 -0
  148. data/lib/wx/doc/gen/file_system.rb +17 -1
  149. data/lib/wx/doc/gen/find_dialog_event.rb +2 -1
  150. data/lib/wx/doc/gen/find_replace_data.rb +1 -0
  151. data/lib/wx/doc/gen/find_replace_dialog.rb +3 -0
  152. data/lib/wx/doc/gen/flex_grid_sizer.rb +13 -0
  153. data/lib/wx/doc/gen/font.rb +75 -3
  154. data/lib/wx/doc/gen/font_data.rb +14 -0
  155. data/lib/wx/doc/gen/font_dialog.rb +6 -0
  156. data/lib/wx/doc/gen/font_picker_ctrl.rb +8 -0
  157. data/lib/wx/doc/gen/font_picker_event.rb +1 -0
  158. data/lib/wx/doc/gen/frame.rb +24 -7
  159. data/lib/wx/doc/gen/fs_file.rb +22 -0
  160. data/lib/wx/doc/gen/gauge.rb +8 -0
  161. data/lib/wx/doc/gen/gb_sizer_item.rb +5 -0
  162. data/lib/wx/doc/gen/gcdc.rb +2 -0
  163. data/lib/wx/doc/gen/gdi_common.rb +50 -8
  164. data/lib/wx/doc/gen/gdi_object.rb +1 -0
  165. data/lib/wx/doc/gen/generic_dir_ctrl.rb +7 -0
  166. data/lib/wx/doc/gen/graphics_context.rb +36 -7
  167. data/lib/wx/doc/gen/graphics_object.rb +24 -0
  168. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +2 -2
  169. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +14 -4
  170. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +1 -2
  171. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +1 -2
  172. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +2 -2
  173. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +1 -2
  174. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +2 -2
  175. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +1 -2
  176. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +1 -2
  177. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +1 -2
  178. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +9 -2
  179. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +1 -2
  180. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +1 -2
  181. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +1 -2
  182. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +2 -2
  183. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +2 -2
  184. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +1 -2
  185. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +6 -2
  186. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +1 -2
  187. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +1 -2
  188. data/lib/wx/doc/gen/grid/grid_ctrl.rb +229 -7
  189. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +4 -1
  190. data/lib/wx/doc/gen/grid/grid_event.rb +4 -1
  191. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +2 -1
  192. data/lib/wx/doc/gen/grid/grid_size_event.rb +2 -1
  193. data/lib/wx/doc/gen/grid/grid_string_table.rb +7 -0
  194. data/lib/wx/doc/gen/grid/grid_table_base.rb +27 -1
  195. data/lib/wx/doc/gen/grid/grid_table_message.rb +1 -0
  196. data/lib/wx/doc/gen/grid_bag_sizer.rb +24 -4
  197. data/lib/wx/doc/gen/grid_sizer.rb +11 -0
  198. data/lib/wx/doc/gen/gui_event_loop.rb +12 -2
  199. data/lib/wx/doc/gen/header_ctrl.rb +106 -6
  200. data/lib/wx/doc/gen/header_ctrl_event.rb +5 -1
  201. data/lib/wx/doc/gen/help_controller.rb +11 -0
  202. data/lib/wx/doc/gen/help_provider.rb +12 -3
  203. data/lib/wx/doc/gen/html/html_cell.rb +25 -0
  204. data/lib/wx/doc/gen/html/html_cell_event.rb +3 -1
  205. data/lib/wx/doc/gen/html/html_easy_printing.rb +13 -1
  206. data/lib/wx/doc/gen/html/html_help_controller.rb +18 -0
  207. data/lib/wx/doc/gen/html/html_help_data.rb +5 -0
  208. data/lib/wx/doc/gen/html/html_help_window.rb +8 -0
  209. data/lib/wx/doc/gen/html/html_link_event.rb +1 -0
  210. data/lib/wx/doc/gen/html/html_list_box.rb +49 -9
  211. data/lib/wx/doc/gen/html/html_printout.rb +7 -0
  212. data/lib/wx/doc/gen/html/html_window.rb +31 -0
  213. data/lib/wx/doc/gen/hyperlink_ctrl.rb +2 -1
  214. data/lib/wx/doc/gen/hyperlink_event.rb +1 -0
  215. data/lib/wx/doc/gen/icon.rb +19 -1
  216. data/lib/wx/doc/gen/icon_location.rb +1 -0
  217. data/lib/wx/doc/gen/image.rb +67 -10
  218. data/lib/wx/doc/gen/image_list.rb +12 -2
  219. data/lib/wx/doc/gen/info_bar.rb +12 -0
  220. data/lib/wx/doc/gen/keyboard_state.rb +11 -0
  221. data/lib/wx/doc/gen/list_box.rb +20 -3
  222. data/lib/wx/doc/gen/list_ctrl.rb +89 -0
  223. data/lib/wx/doc/gen/list_event.rb +11 -1
  224. data/lib/wx/doc/gen/listbook.rb +1 -0
  225. data/lib/wx/doc/gen/locale.rb +22 -0
  226. data/lib/wx/doc/gen/log.rb +42 -0
  227. data/lib/wx/doc/gen/mdi_client_window.rb +4 -1
  228. data/lib/wx/doc/gen/mdi_frame.rb +27 -4
  229. data/lib/wx/doc/gen/media_ctrl.rb +17 -0
  230. data/lib/wx/doc/gen/media_event.rb +2 -1
  231. data/lib/wx/doc/gen/memory_dc.rb +10 -0
  232. data/lib/wx/doc/gen/menu.rb +48 -7
  233. data/lib/wx/doc/gen/menu_bar.rb +32 -13
  234. data/lib/wx/doc/gen/menu_item.rb +26 -0
  235. data/lib/wx/doc/gen/message_dialog.rb +10 -0
  236. data/lib/wx/doc/gen/mini_frame.rb +5 -2
  237. data/lib/wx/doc/gen/mirror_dc.rb +1 -0
  238. data/lib/wx/doc/gen/mouse_state.rb +1 -0
  239. data/lib/wx/doc/gen/multi_choice_dialog.rb +3 -1
  240. data/lib/wx/doc/gen/non_owned_window.rb +3 -0
  241. data/lib/wx/doc/gen/notebook.rb +11 -1
  242. data/lib/wx/doc/gen/num_validator.rb +37 -0
  243. data/lib/wx/doc/gen/number_entry_dialog.rb +4 -0
  244. data/lib/wx/doc/gen/object.rb +3 -0
  245. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +340 -0
  246. data/lib/wx/doc/gen/paint_dc.rb +1 -0
  247. data/lib/wx/doc/gen/palette.rb +5 -0
  248. data/lib/wx/doc/gen/panel.rb +10 -2
  249. data/lib/wx/doc/gen/pen.rb +30 -1
  250. data/lib/wx/doc/gen/persistence_manager.rb +135 -0
  251. data/lib/wx/doc/gen/persistent_object.rb +52 -0
  252. data/lib/wx/doc/gen/persistent_window.rb +116 -0
  253. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +2 -1
  254. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +4 -1
  255. data/lib/wx/doc/gen/pg/pg_cell.rb +6 -1
  256. data/lib/wx/doc/gen/pg/pg_editor.rb +61 -15
  257. data/lib/wx/doc/gen/pg/pg_multi_button.rb +2 -0
  258. data/lib/wx/doc/gen/pg/pg_properties.rb +198 -81
  259. data/lib/wx/doc/gen/pg/pg_property.rb +129 -52
  260. data/lib/wx/doc/gen/pg/pg_validation_info.rb +2 -0
  261. data/lib/wx/doc/gen/pg/property_grid.rb +56 -14
  262. data/lib/wx/doc/gen/pg/property_grid_event.rb +16 -6
  263. data/lib/wx/doc/gen/pg/property_grid_interface.rb +98 -37
  264. data/lib/wx/doc/gen/pg/property_grid_manager.rb +29 -7
  265. data/lib/wx/doc/gen/pg/property_grid_page.rb +11 -4
  266. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +7 -2
  267. data/lib/wx/doc/gen/picker_base.rb +11 -1
  268. data/lib/wx/doc/gen/platform_info.rb +31 -0
  269. data/lib/wx/doc/gen/popup_window.rb +5 -0
  270. data/lib/wx/doc/gen/progress_dialog.rb +4 -0
  271. data/lib/wx/doc/gen/property_sheet_dialog.rb +7 -1
  272. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +2 -0
  273. data/lib/wx/doc/gen/prt/post_script_dc.rb +1 -0
  274. data/lib/wx/doc/gen/prt/preview_frame.rb +4 -0
  275. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +1 -0
  276. data/lib/wx/doc/gen/prt/print_data.rb +27 -0
  277. data/lib/wx/doc/gen/prt/print_dialog.rb +4 -0
  278. data/lib/wx/doc/gen/prt/printer.rb +42 -5
  279. data/lib/wx/doc/gen/prt/printer_dc.rb +2 -0
  280. data/lib/wx/doc/gen/query_layout_info_event.rb +9 -0
  281. data/lib/wx/doc/gen/radio_box.rb +19 -0
  282. data/lib/wx/doc/gen/radio_button.rb +9 -0
  283. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +63 -0
  284. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +23 -0
  285. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +2 -1
  286. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +35 -9
  287. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +2 -1
  288. data/lib/wx/doc/gen/rbn/ribbon_control.rb +10 -0
  289. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +17 -7
  290. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +2 -1
  291. data/lib/wx/doc/gen/rbn/ribbon_page.rb +12 -0
  292. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +11 -0
  293. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +2 -1
  294. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +25 -0
  295. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +2 -1
  296. data/lib/wx/doc/gen/rearrange_ctrl.rb +4 -0
  297. data/lib/wx/doc/gen/rearrange_list.rb +9 -0
  298. data/lib/wx/doc/gen/region.rb +42 -13
  299. data/lib/wx/doc/gen/region_iterator.rb +1 -0
  300. data/lib/wx/doc/gen/rtc/rich_text_box.rb +25 -8
  301. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +41 -4
  302. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +1 -0
  303. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +23 -11
  304. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +74 -0
  305. data/lib/wx/doc/gen/rtc/rich_text_event.rb +6 -1
  306. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +8 -0
  307. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +6 -0
  308. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +1 -0
  309. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +4 -0
  310. data/lib/wx/doc/gen/rtc/rich_text_image.rb +7 -0
  311. data/lib/wx/doc/gen/rtc/rich_text_object.rb +64 -4
  312. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +51 -4
  313. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +13 -0
  314. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +9 -4
  315. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +3 -0
  316. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +2 -0
  317. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +1 -0
  318. data/lib/wx/doc/gen/sash_event.rb +5 -1
  319. data/lib/wx/doc/gen/sash_layout_window.rb +10 -0
  320. data/lib/wx/doc/gen/sash_window.rb +3 -0
  321. data/lib/wx/doc/gen/screen_dc.rb +1 -0
  322. data/lib/wx/doc/gen/scroll_bar.rb +11 -2
  323. data/lib/wx/doc/gen/scrolled_canvas.rb +20 -4
  324. data/lib/wx/doc/gen/scrolled_control.rb +20 -4
  325. data/lib/wx/doc/gen/scrolled_window.rb +20 -4
  326. data/lib/wx/doc/gen/search_ctrl.rb +6 -0
  327. data/lib/wx/doc/gen/simplebook.rb +7 -0
  328. data/lib/wx/doc/gen/single_choice_dialog.rb +3 -1
  329. data/lib/wx/doc/gen/sizer.rb +79 -9
  330. data/lib/wx/doc/gen/sizer_item.rb +16 -2
  331. data/lib/wx/doc/gen/slider.rb +23 -0
  332. data/lib/wx/doc/gen/spin_button.rb +9 -0
  333. data/lib/wx/doc/gen/spin_ctrl.rb +11 -0
  334. data/lib/wx/doc/gen/spin_ctrl_double.rb +7 -0
  335. data/lib/wx/doc/gen/spin_double_event.rb +4 -1
  336. data/lib/wx/doc/gen/spin_event.rb +2 -1
  337. data/lib/wx/doc/gen/splash_screen.rb +2 -0
  338. data/lib/wx/doc/gen/splitter_event.rb +10 -1
  339. data/lib/wx/doc/gen/splitter_window.rb +38 -14
  340. data/lib/wx/doc/gen/static_bitmap.rb +99 -2
  341. data/lib/wx/doc/gen/static_box.rb +6 -0
  342. data/lib/wx/doc/gen/static_box_sizer.rb +3 -0
  343. data/lib/wx/doc/gen/static_line.rb +4 -0
  344. data/lib/wx/doc/gen/static_text.rb +5 -0
  345. data/lib/wx/doc/gen/status_bar.rb +17 -3
  346. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +174 -6
  347. data/lib/wx/doc/gen/stc/styled_text_event.rb +27 -1
  348. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +7 -0
  349. data/lib/wx/doc/gen/svg_file_dc.rb +9 -0
  350. data/lib/wx/doc/gen/system_options.rb +8 -0
  351. data/lib/wx/doc/gen/system_settings.rb +7 -0
  352. data/lib/wx/doc/gen/task_bar_button.rb +12 -0
  353. data/lib/wx/doc/gen/task_bar_icon.rb +5 -0
  354. data/lib/wx/doc/gen/task_bar_icon_event.rb +2 -1
  355. data/lib/wx/doc/gen/text_attr.rb +27 -0
  356. data/lib/wx/doc/gen/text_ctrl.rb +27 -3
  357. data/lib/wx/doc/gen/text_entry.rb +43 -9
  358. data/lib/wx/doc/gen/text_entry_dialog.rb +12 -0
  359. data/lib/wx/doc/gen/text_validator.rb +16 -0
  360. data/lib/wx/doc/gen/time_picker_ctrl.rb +6 -0
  361. data/lib/wx/doc/gen/timer.rb +8 -0
  362. data/lib/wx/doc/gen/timer_event.rb +1 -0
  363. data/lib/wx/doc/gen/tip_provider.rb +5 -0
  364. data/lib/wx/doc/gen/toggle_button.rb +68 -0
  365. data/lib/wx/doc/gen/tool_bar.rb +57 -14
  366. data/lib/wx/doc/gen/tool_tip.rb +6 -0
  367. data/lib/wx/doc/gen/toolbook.rb +3 -0
  368. data/lib/wx/doc/gen/top_level_window.rb +34 -3
  369. data/lib/wx/doc/gen/tree_ctrl.rb +49 -0
  370. data/lib/wx/doc/gen/tree_event.rb +7 -1
  371. data/lib/wx/doc/gen/treebook.rb +9 -0
  372. data/lib/wx/doc/gen/ui_action_simulator.rb +4 -0
  373. data/lib/wx/doc/gen/utils.rb +55 -16
  374. data/lib/wx/doc/gen/v_list_box.rb +21 -0
  375. data/lib/wx/doc/gen/v_scrolled_window.rb +15 -0
  376. data/lib/wx/doc/gen/validator.rb +9 -13
  377. data/lib/wx/doc/gen/variant.rb +6 -0
  378. data/lib/wx/doc/gen/window.rb +260 -52
  379. data/lib/wx/doc/gen/window_dc.rb +2 -0
  380. data/lib/wx/doc/gen/window_disabler.rb +1 -0
  381. data/lib/wx/doc/gen/with_images.rb +7 -1
  382. data/lib/wx/doc/gen/wizard.rb +18 -0
  383. data/lib/wx/doc/gen/wizard_event.rb +3 -1
  384. data/lib/wx/doc/gen/wizard_page.rb +5 -0
  385. data/lib/wx/doc/gen/wizard_page_simple.rb +4 -0
  386. data/lib/wx/doc/gen/wrap_sizer.rb +5 -0
  387. data/lib/wx/doc/gen/xml_node.rb +14 -0
  388. data/lib/wx/doc/gen/xml_resource.rb +22 -0
  389. data/lib/wx/doc/generic_validator.rb +95 -0
  390. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  391. data/lib/wx/doc/num_validator.rb +387 -0
  392. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  393. data/lib/wx/doc/persistence_manager.rb +36 -0
  394. data/lib/wx/doc/persistent_object.rb +27 -0
  395. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  396. data/lib/wx/doc/static_bitmap.rb +25 -0
  397. data/lib/wx/doc/text_validator.rb +10 -0
  398. data/lib/wx/doc/top_level_window.rb +19 -0
  399. data/lib/wx/doc/treebook.rb +6 -1
  400. data/lib/wx/doc/validator.rb +113 -0
  401. data/lib/wx/doc/window.rb +30 -0
  402. data/lib/wx/html/events/evt_list.rb +0 -10
  403. data/lib/wx/html/simple_html_listbox.rb +24 -91
  404. data/lib/wx/keyword_defs.rb +34 -2
  405. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  406. data/lib/wx/version.rb +1 -1
  407. data/lib/wxruby_aui.so +0 -0
  408. data/lib/wxruby_core.so +0 -0
  409. data/lib/wxruby_grid.so +0 -0
  410. data/lib/wxruby_html.so +0 -0
  411. data/lib/wxruby_pg.so +0 -0
  412. data/lib/wxruby_prt.so +0 -0
  413. data/lib/wxruby_rbn.so +0 -0
  414. data/lib/wxruby_rtc.so +0 -0
  415. data/lib/wxruby_stc.so +0 -0
  416. data/rakelib/lib/config/mingw.rb +12 -0
  417. data/samples/aui/aui.rb +1237 -1233
  418. data/samples/calendar/calendar.rb +293 -289
  419. data/samples/controls/get_item_sample.rb +83 -79
  420. data/samples/controls/htlbox.rb +331 -327
  421. data/samples/dialogs/dialogs.rb +682 -694
  422. data/samples/dialogs/wizard.rb +52 -55
  423. data/samples/dragdrop/dragdrop.rb +146 -142
  424. data/samples/drawing/bitmap.rb +29 -26
  425. data/samples/drawing/bitmap_image.rb +84 -80
  426. data/samples/drawing/graphics_drawing.rb +209 -205
  427. data/samples/drawing/image_prt.rb +344 -340
  428. data/samples/drawing/maths_images.rb +18 -1
  429. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  430. data/samples/etc/caret.rb +306 -0
  431. data/samples/etc/miniframe.rb +65 -60
  432. data/samples/etc/sash.rb +109 -105
  433. data/samples/etc/scrollwin.rb +86 -80
  434. data/samples/etc/system_settings.rb +216 -209
  435. data/samples/event/activation.rb +72 -67
  436. data/samples/event/event.rb +160 -153
  437. data/samples/event/threaded.rb +8 -1
  438. data/samples/event/update_ui_event.rb +67 -60
  439. data/samples/grid/grid.rb +188 -181
  440. data/samples/grid/gridtablebase.rb +136 -129
  441. data/samples/html/html.rb +208 -204
  442. data/samples/mdi/mdi.rb +59 -54
  443. data/samples/minimal/minimal.rb +54 -51
  444. data/samples/minimal/nothing.rb +1 -0
  445. data/samples/printing/printing.rb +367 -377
  446. data/samples/printing/printing2.rb +203 -198
  447. data/samples/propgrid/propgrid.rb +2312 -2308
  448. data/samples/propgrid/propgrid_minimal.rb +57 -50
  449. data/samples/ribbon/ribbon.rb +780 -774
  450. data/samples/sampler/ext.rb +0 -33
  451. data/samples/sampler/sample.rb +4 -9
  452. data/samples/sampler.rb +1 -1
  453. data/samples/splash/splash.rb +118 -116
  454. data/samples/text/rich_textctrl.rb +207 -201
  455. data/samples/text/richtext.rb +1409 -1405
  456. data/samples/text/scintilla.rb +137 -128
  457. data/samples/text/textctrl.rb +89 -83
  458. data/samples/text/unicode.rb +175 -168
  459. data/samples/treectrl/treectrl.rb +1430 -1426
  460. data/samples/widgets/activityindicator.rb +95 -0
  461. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  462. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  463. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  464. data/samples/widgets/art/widgets/button.xpm +54 -0
  465. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  466. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  467. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  468. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  469. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  470. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  471. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  472. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  473. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  474. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  475. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  476. data/samples/widgets/art/widgets/header.xpm +54 -0
  477. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  478. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  479. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  480. data/samples/widgets/art/widgets/native.xpm +81 -0
  481. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  482. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  483. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  484. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  485. data/samples/widgets/art/widgets/slider.xpm +54 -0
  486. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  487. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  488. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  489. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  490. data/samples/widgets/art/widgets/text.xpm +54 -0
  491. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  492. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  493. data/samples/widgets/art/widgets/toucan.png +0 -0
  494. data/samples/widgets/bmpcombobox.rb +651 -0
  495. data/samples/widgets/button.rb +462 -0
  496. data/samples/widgets/checkbox.rb +211 -0
  497. data/samples/widgets/choice.rb +287 -0
  498. data/samples/widgets/clrpicker.rb +156 -0
  499. data/samples/widgets/combobox.rb +516 -0
  500. data/samples/widgets/datepick.rb +215 -0
  501. data/samples/widgets/dirctrl.rb +265 -0
  502. data/samples/widgets/dirpicker.rb +158 -0
  503. data/samples/widgets/editlbox.rb +122 -0
  504. data/samples/widgets/filectrl.rb +216 -0
  505. data/samples/widgets/filepicker.rb +214 -0
  506. data/samples/widgets/fontpicker.rb +135 -0
  507. data/samples/widgets/gauge.rb +311 -0
  508. data/samples/widgets/headerctrl.rb +236 -0
  509. data/samples/widgets/hyperlink.rb +203 -0
  510. data/samples/widgets/itemcontainer.rb +185 -0
  511. data/samples/widgets/listbox.rb +473 -0
  512. data/samples/widgets/notebook.rb +488 -0
  513. data/samples/widgets/odcombobox.rb +608 -0
  514. data/samples/widgets/radiobox.rb +328 -0
  515. data/samples/widgets/searchctrl.rb +159 -0
  516. data/samples/widgets/slider.rb +594 -0
  517. data/samples/widgets/spinbtn.rb +443 -0
  518. data/samples/widgets/statbmp.rb +130 -0
  519. data/samples/widgets/static.rb +436 -0
  520. data/samples/widgets/textctrl.rb +700 -0
  521. data/samples/widgets/timepick.rb +148 -0
  522. data/samples/widgets/tn_widgets.png +0 -0
  523. data/samples/widgets/toggle.rb +385 -0
  524. data/samples/widgets/widgets.rb +1229 -0
  525. data/samples/xrc/custom_xrc_sample.rb +47 -41
  526. data/samples/xrc/xrc_sample.rb +53 -47
  527. data/tests/test_config.rb +207 -42
  528. data/tests/test_event_handling.rb +52 -34
  529. data/tests/test_events.rb +7 -0
  530. data/tests/test_item_data.rb +24 -0
  531. data/tests/test_persistence.rb +142 -0
  532. data/tests/test_sizer.rb +44 -1
  533. data/tests/test_validators.rb +805 -0
  534. metadata +103 -137
  535. data/lib/wx/core/choice.rb +0 -14
  536. data/lib/wx/core/combo_ctrl.rb +0 -110
  537. data/samples/bigdemo/About.rbw +0 -39
  538. data/samples/bigdemo/ColorPanel.rbw +0 -23
  539. data/samples/bigdemo/GridSimple.rbw +0 -78
  540. data/samples/bigdemo/MDIDemo.rbw +0 -57
  541. data/samples/bigdemo/PopupMenu.rbw +0 -146
  542. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  543. data/samples/bigdemo/Sizers.rbw +0 -541
  544. data/samples/bigdemo/bigdemo.rb +0 -817
  545. data/samples/bigdemo/demoTemplate.rbw +0 -33
  546. data/samples/bigdemo/helpfile.htb +0 -0
  547. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  548. data/samples/bigdemo/icons/Test 015.png +0 -0
  549. data/samples/bigdemo/icons/choice.bmp +0 -0
  550. data/samples/bigdemo/icons/combo.bmp +0 -0
  551. data/samples/bigdemo/icons/combo.xpm +0 -27
  552. data/samples/bigdemo/icons/copy.xpm +0 -25
  553. data/samples/bigdemo/icons/cut.xpm +0 -24
  554. data/samples/bigdemo/icons/gauge.bmp +0 -0
  555. data/samples/bigdemo/icons/gauge.xpm +0 -27
  556. data/samples/bigdemo/icons/help.xpm +0 -25
  557. data/samples/bigdemo/icons/list.bmp +0 -0
  558. data/samples/bigdemo/icons/list.xpm +0 -27
  559. data/samples/bigdemo/icons/mondrian.ico +0 -0
  560. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  561. data/samples/bigdemo/icons/new.xpm +0 -24
  562. data/samples/bigdemo/icons/ogl.ico +0 -0
  563. data/samples/bigdemo/icons/ogl.xpm +0 -45
  564. data/samples/bigdemo/icons/open.xpm +0 -26
  565. data/samples/bigdemo/icons/paste.bmp +0 -0
  566. data/samples/bigdemo/icons/paste.xpm +0 -38
  567. data/samples/bigdemo/icons/pointy.png +0 -0
  568. data/samples/bigdemo/icons/preview.xpm +0 -26
  569. data/samples/bigdemo/icons/print.xpm +0 -26
  570. data/samples/bigdemo/icons/radio.bmp +0 -0
  571. data/samples/bigdemo/icons/radio.xpm +0 -27
  572. data/samples/bigdemo/icons/robert.xpm +0 -415
  573. data/samples/bigdemo/icons/sashtest.ico +0 -0
  574. data/samples/bigdemo/icons/save.xpm +0 -25
  575. data/samples/bigdemo/icons/smiles.bmp +0 -0
  576. data/samples/bigdemo/icons/smiles.xpm +0 -39
  577. data/samples/bigdemo/icons/smiley.ico +0 -0
  578. data/samples/bigdemo/icons/smiley.xpm +0 -42
  579. data/samples/bigdemo/icons/stattext.xpm +0 -24
  580. data/samples/bigdemo/icons/test2.bmp +0 -0
  581. data/samples/bigdemo/icons/test2.png +0 -0
  582. data/samples/bigdemo/icons/test2.xpm +0 -79
  583. data/samples/bigdemo/icons/text.bmp +0 -0
  584. data/samples/bigdemo/icons/text.xpm +0 -27
  585. data/samples/bigdemo/icons/tog1.bmp +0 -0
  586. data/samples/bigdemo/icons/tog1.xpm +0 -38
  587. data/samples/bigdemo/icons/tog2.bmp +0 -0
  588. data/samples/bigdemo/icons/tog2.xpm +0 -38
  589. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  590. data/samples/bigdemo/icons/wxwin.ico +0 -0
  591. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  592. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  593. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  594. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  595. data/samples/bigdemo/run.rb +0 -98
  596. data/samples/bigdemo/tips.txt +0 -7
  597. data/samples/bigdemo/utils.rb +0 -20
  598. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  599. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  600. data/samples/bigdemo/wxButton.rbw +0 -64
  601. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  602. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  603. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  604. data/samples/bigdemo/wxChoice.rbw +0 -47
  605. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  606. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  607. data/samples/bigdemo/wxComboBox.rbw +0 -77
  608. data/samples/bigdemo/wxCursor.rbw +0 -136
  609. data/samples/bigdemo/wxDialog.rbw +0 -74
  610. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  611. data/samples/bigdemo/wxDragImage.rbw +0 -70
  612. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  613. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  614. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  615. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  616. data/samples/bigdemo/wxFrame.rbw +0 -53
  617. data/samples/bigdemo/wxGauge.rbw +0 -65
  618. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  619. data/samples/bigdemo/wxGrid.rbw +0 -66
  620. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  621. data/samples/bigdemo/wxListBox.rbw +0 -140
  622. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  623. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  624. data/samples/bigdemo/wxMenu.rbw +0 -247
  625. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  626. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  627. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  628. data/samples/bigdemo/wxNotebook.rbw +0 -136
  629. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  630. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  631. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  632. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  633. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  634. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  635. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  636. data/samples/bigdemo/wxSlider.rbw +0 -42
  637. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  638. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  639. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  640. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  641. data/samples/bigdemo/wxStaticText.rbw +0 -55
  642. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  643. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  644. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  645. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  646. data/samples/bigdemo/wxToolBar.rbw +0 -131
  647. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  648. data/samples/caret/caret.rb +0 -298
  649. data/samples/caret/mondrian.xpm +0 -44
  650. data/samples/controls/books.rb +0 -189
  651. data/samples/controls/choice.xpm +0 -27
  652. data/samples/controls/combo.xpm +0 -27
  653. data/samples/controls/controls.rb +0 -1099
  654. data/samples/controls/gauge.xpm +0 -27
  655. data/samples/controls/list.xpm +0 -27
  656. data/samples/controls/mondrian.ico +0 -0
  657. data/samples/controls/mondrian.xpm +0 -44
  658. data/samples/controls/radio.xpm +0 -27
  659. data/samples/controls/stattext.xpm +0 -24
  660. data/samples/controls/test2.bmp +0 -0
  661. data/samples/controls/text.xpm +0 -27
  662. data/samples/controls/tn_books.png +0 -0
  663. data/samples/controls/tn_controls.png +0 -0
  664. data/samples/etc/choice.rb +0 -87
  665. data/samples/etc/tn_choice.png +0 -0
  666. data/samples/text/mondrian.ico +0 -0
  667. data/samples/text/mondrian.xpm +0 -44
  668. /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -0,0 +1,608 @@
1
+ # Copyright (c) 2023 M.J.N. Corino = self.next_id The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+ #
5
+ # Adapted for wxRuby from wxWidgets widgets sample
6
+ # Copyright (c) 2001 Vadim Zeitlin
7
+
8
+ require_relative './itemcontainer'
9
+
10
+ module Widgets
11
+
12
+ module ODCombobox
13
+
14
+ class ODComboboxPage < ItemContainer::Page
15
+
16
+ module ID
17
+ include Wx::IDHelper
18
+
19
+ Reset = self.next_id(Widgets::Frame::ID::Last)
20
+ PopupMinWidth = self.next_id
21
+ PopupHeight = self.next_id
22
+ ButtonWidth = self.next_id
23
+ ButtonHeight = self.next_id
24
+ ButtonSpacing = self.next_id
25
+ CurText = self.next_id
26
+ InsertionPointText = self.next_id
27
+ Insert = self.next_id
28
+ InsertText = self.next_id
29
+ Add = self.next_id
30
+ AddText = self.next_id
31
+ AddSeveral = self.next_id
32
+ AddMany = self.next_id
33
+ Clear = self.next_id
34
+ Change = self.next_id
35
+ ChangeText = self.next_id
36
+ Delete = self.next_id
37
+ DeleteText = self.next_id
38
+ DeleteSel = self.next_id
39
+ Combo = self.next_id
40
+ ContainerTests = self.next_id
41
+ end
42
+
43
+ # wxOwnerDrawnComboBox needs to subclassed so that owner-drawing
44
+ # callbacks can be implemented.
45
+ class DemoODComboBox < Wx::OwnerDrawnComboBox
46
+
47
+ def on_draw_item(dc, rect, item, _flags)
48
+ return if item == Wx::NOT_FOUND
49
+
50
+ mod = item % 4
51
+
52
+ txtCol = if mod == 0
53
+ Wx::BLACK
54
+ elsif mod == 1
55
+ Wx::RED
56
+ elsif mod == 2
57
+ Wx::GREEN
58
+ else
59
+ Wx::BLUE
60
+ end
61
+
62
+ dc.set_text_foreground(txtCol)
63
+
64
+ dc.draw_text(get_string(item),
65
+ rect.x + 3,
66
+ rect.y + ((rect.height - dc.char_height)/2))
67
+ end
68
+
69
+ def on_draw_background(dc, rect, item, flags)
70
+ # If item is selected or even, or we are painting the
71
+ # combo control itself, use the default rendering.
72
+ if flags.anybits?(Wx::ODCB_PAINTING_CONTROL|Wx::ODCB_PAINTING_SELECTED) || (item & 1) == 0
73
+ super(dc,rect,item,flags)
74
+ return
75
+ end
76
+
77
+ # Otherwise, draw every other background with different colour.
78
+ bgCol = Wx::Colour.new(240,240,250)
79
+ dc.set_brush(Wx::Brush.new(bgCol))
80
+ dc.set_pen(Wx::Pen.new(bgCol))
81
+ dc.draw_rectangle(rect)
82
+ end
83
+
84
+ def on_measure_item(_item)
85
+ 48
86
+ end
87
+
88
+ def on_measure_item_width(_item)
89
+ -1 # default - will be measured from text width
90
+ end
91
+
92
+ end
93
+
94
+ def initialize(book, images)
95
+ super(book, images, :odcombobox)
96
+
97
+ # init everything
98
+ @chkSort =
99
+ @chkReadonly =
100
+ @chkDclickcycles = nil
101
+
102
+ @combobox = nil
103
+ @sizerCombo = nil
104
+ end
105
+
106
+ Info = Widgets::PageInfo.new(self, 'OwnerDrawnCombobox',
107
+ GENERIC_CTRLS |
108
+ WITH_ITEMS_CTRLS |
109
+ COMBO_CTRLS)
110
+
111
+ def get_widget
112
+ @combobox
113
+ end
114
+
115
+ def get_text_entry
116
+ @combobox ? @combobox.text_ctrl : nil
117
+ end
118
+
119
+ def get_container
120
+ @combobox
121
+ end
122
+
123
+ def recreate_widget
124
+ create_combo
125
+ end
126
+
127
+ # lazy creation of the content
128
+ def create_content
129
+ # What we create here is a frame having 3 panes: style pane is the
130
+ # leftmost one, in the middle the pane with buttons allowing to perform
131
+ # miscellaneous combobox operations and the pane containing the combobox
132
+ # itself to the right
133
+ sizerTop = Wx::HBoxSizer.new
134
+
135
+ sizerLeft = Wx::VBoxSizer.new
136
+
137
+ # left pane - style box
138
+ sizerStyle = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Set style')
139
+ sizerStyleBox = sizerStyle.get_static_box
140
+
141
+ @chkSort = create_check_box_and_add_to_sizer(sizerStyle, '&Sort items', Wx::ID_ANY, sizerStyleBox)
142
+ @chkReadonly = create_check_box_and_add_to_sizer(sizerStyle, '&Read only', Wx::ID_ANY, sizerStyleBox)
143
+ @chkDclickcycles = create_check_box_and_add_to_sizer(sizerStyle, '&Double-click Cycles', Wx::ID_ANY, sizerStyleBox)
144
+
145
+ sizerStyle.add_spacer(4)
146
+
147
+ @chkBitmapbutton = create_check_box_and_add_to_sizer(sizerStyle, '&Bitmap button', Wx::ID_ANY, sizerStyleBox)
148
+ @chkStdbutton = create_check_box_and_add_to_sizer(sizerStyle, 'B&lank button background', Wx::ID_ANY, sizerStyleBox)
149
+
150
+ btn = Wx::Button.new(sizerStyleBox, ID::Reset, '&Reset')
151
+ sizerStyle.add(btn, 0, Wx::ALIGN_CENTRE_HORIZONTAL | Wx::ALL, 3)
152
+
153
+ sizerLeft.add(sizerStyle, Wx::SizerFlags.new.expand)
154
+
155
+ # left pane - popup adjustment box
156
+ sizerPopupPos = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, "Adjust &popup")
157
+ sizerPopupPosBox = sizerPopupPos.get_static_box
158
+
159
+ sizerRow, @textPopupMinWidth = create_sizer_with_text_and_label("Min. Width:",
160
+ ID::PopupMinWidth,
161
+ sizerPopupPosBox)
162
+ @textPopupMinWidth.set_value("-1")
163
+ sizerPopupPos.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
164
+
165
+ sizerRow, @textPopupHeight = create_sizer_with_text_and_label('Max. Height:',
166
+ ID::PopupHeight,
167
+ sizerPopupPosBox)
168
+ @textPopupHeight.set_value('-1')
169
+ sizerPopupPos.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
170
+
171
+ @chkAlignpopupright = create_check_box_and_add_to_sizer(sizerPopupPos, 'Align Right',
172
+ Wx::ID_ANY, sizerPopupPosBox)
173
+
174
+ sizerLeft.add(sizerPopupPos, Wx::SizerFlags.new.expand.border(Wx::TOP, 2))
175
+
176
+ # left pane - button adjustment box
177
+ sizerButtonPos = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, 'Adjust &button')
178
+ sizerButtonPosBox = sizerButtonPos.get_static_box
179
+
180
+ sizerRow, @textButtonWidth = create_sizer_with_text_and_label('Width:',
181
+ ID::ButtonWidth,
182
+ sizerButtonPosBox)
183
+ @textButtonWidth.set_value("-1")
184
+ sizerButtonPos.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
185
+
186
+ sizerRow, @textButtonSpacing = create_sizer_with_text_and_label('VSpacing:',
187
+ ID::ButtonSpacing,
188
+ sizerButtonPosBox)
189
+ @textButtonSpacing.set_value('0')
190
+ sizerButtonPos.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
191
+
192
+ sizerRow, @textButtonHeight = create_sizer_with_text_and_label('Height:',
193
+ ID::ButtonHeight,
194
+ sizerButtonPosBox)
195
+ @textButtonHeight.set_value('-1')
196
+ sizerButtonPos.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
197
+
198
+ @chkAlignbutleft = create_check_box_and_add_to_sizer(sizerButtonPos, 'Align Left',
199
+ Wx::ID_ANY, sizerButtonPosBox)
200
+
201
+ sizerLeft.add(sizerButtonPos, Wx::SizerFlags.new.expand.border(Wx::TOP, 2))
202
+
203
+ # middle pane
204
+ sizerMiddle = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Change combobox contents')
205
+ sizerMiddleBox = sizerMiddle.get_static_box
206
+
207
+ btn = Wx::Button.new(sizerMiddleBox, ID::ContainerTests, 'Run &tests')
208
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
209
+
210
+ sizerRow, text = create_sizer_with_text_and_label('Current selection',
211
+ ID::CurText,
212
+ sizerMiddleBox)
213
+ text.set_editable(false)
214
+
215
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
216
+
217
+ sizerRow, text = create_sizer_with_text_and_label('Insertion Point',
218
+ ID::InsertionPointText,
219
+ sizerMiddleBox)
220
+ text.set_editable(false)
221
+
222
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
223
+
224
+ sizerRow, @textInsert = create_sizer_with_text_and_button(ID::Insert,
225
+ '&Insert this string',
226
+ ID::InsertText,
227
+ sizerMiddleBox)
228
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
229
+
230
+ sizerRow, @textAdd = create_sizer_with_text_and_button(ID::Add,
231
+ '&Add this string',
232
+ ID::AddText,
233
+ sizerMiddleBox)
234
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
235
+
236
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddSeveral, '&Append a few strings')
237
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
238
+
239
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddMany, 'Append &many strings')
240
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
241
+
242
+ sizerRow, @textChange = create_sizer_with_text_and_button(ID::Change,
243
+ 'C&hange current',
244
+ ID::ChangeText,
245
+ sizerMiddleBox)
246
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
247
+
248
+ sizerRow, @textDelete = create_sizer_with_text_and_button(ID::Delete,
249
+ '&Delete this item',
250
+ ID::DeleteText,
251
+ sizerMiddleBox)
252
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
253
+
254
+ btn = Wx::Button.new(sizerMiddleBox, ID::DeleteSel, 'Delete &selection')
255
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
256
+
257
+ btn = Wx::Button.new(sizerMiddleBox, ID::Clear, '&Clear')
258
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
259
+
260
+ # right pane
261
+ sizerRight = Wx::VBoxSizer.new
262
+ @combobox = DemoODComboBox.new(self, ID::Combo,
263
+ style: 0)
264
+ sizerRight.add(@combobox, 0, Wx::GROW | Wx::ALL, 5)
265
+ sizerRight.set_min_size(150, 0)
266
+ @sizerCombo = sizerRight # save it to modify it later
267
+
268
+ # the 3 panes panes compose the window
269
+ sizerTop.add(sizerLeft, 4, Wx::GROW | (Wx::ALL & ~Wx::LEFT), 10)
270
+ sizerTop.add(sizerMiddle, 5, Wx::GROW | Wx::ALL, 10)
271
+ sizerTop.add(sizerRight, 4, Wx::GROW | (Wx::ALL & ~Wx::RIGHT), 10)
272
+
273
+ # final initializations
274
+ reset
275
+
276
+ set_sizer(sizerTop)
277
+
278
+ # connect event handlers
279
+ evt_button(ID::Reset, :on_button_reset)
280
+ evt_button(ID::Change, :on_button_change)
281
+ evt_button(ID::Delete, :on_button_delete)
282
+ evt_button(ID::DeleteSel, :on_button_delete_sel)
283
+ evt_button(ID::Clear, :on_button_clear)
284
+ evt_button(ID::Insert, :on_button_insert)
285
+ evt_button(ID::Add, :on_button_add)
286
+ evt_button(ID::AddSeveral, :on_button_add_several)
287
+ evt_button(ID::AddMany, :on_button_add_many)
288
+ evt_button(ID::ContainerTests, :on_button_test_item_container)
289
+
290
+ evt_text_enter(ID::InsertText, :on_button_insert)
291
+ evt_text_enter(ID::AddText, :on_button_add)
292
+ evt_text_enter(ID::DeleteText, :on_button_delete)
293
+
294
+ evt_text(ID::PopupMinWidth, :on_text_popup_width)
295
+ evt_text(ID::PopupHeight, :on_text_popup_height)
296
+ evt_text(ID::ButtonWidth, :on_text_button_all)
297
+ evt_text(ID::ButtonHeight, :on_text_button_all)
298
+ evt_text(ID::ButtonSpacing, :on_text_button_all)
299
+
300
+ evt_update_ui(ID::CurText, :on_update_ui_cur_text)
301
+ evt_update_ui(ID::InsertionPointText, :on_update_ui_insertion_point_text)
302
+
303
+ evt_update_ui(ID::Reset, :on_update_ui_reset_button)
304
+ evt_update_ui(ID::Insert, :on_update_ui_insert)
305
+ evt_update_ui(ID::AddSeveral, :on_update_ui_add_several)
306
+ evt_update_ui(ID::Clear, :on_update_ui_clear_button)
307
+ evt_update_ui(ID::DeleteText, :on_update_ui_clear_button)
308
+ evt_update_ui(ID::Delete, :on_update_ui_delete_button)
309
+ evt_update_ui(ID::Change, :on_update_ui_delete_sel_button)
310
+ evt_update_ui(ID::ChangeText, :on_update_ui_delete_sel_button)
311
+ evt_update_ui(ID::DeleteSel, :on_update_ui_delete_sel_button)
312
+
313
+ evt_combobox_dropdown(ID::Combo, :on_drop_down)
314
+ evt_combobox_closeup(ID::Combo, :on_close_up)
315
+ evt_combobox(ID::Combo, :on_combo_box)
316
+ evt_text(ID::Combo, :on_combo_text)
317
+ evt_text_enter(ID::Combo, :on_combo_text)
318
+
319
+ evt_checkbox(Wx::ID_ANY, :on_check_or_radio_box)
320
+ evt_radiobox(Wx::ID_ANY, :on_check_or_radio_box)
321
+ end
322
+
323
+ protected
324
+
325
+ # event handlers
326
+ def on_button_reset(_event)
327
+ reset
328
+
329
+ create_combo
330
+ end
331
+
332
+ def on_button_change(_event)
333
+ sel = @combobox.list_selection
334
+ if sel != Wx::NOT_FOUND
335
+ if Wx::PLATFORM != 'WXGTK'
336
+ @combobox.set_string(sel, @textChange.value)
337
+ else
338
+ Wx.log_message('Not implemented in WXGTK')
339
+ end
340
+ end
341
+ end
342
+
343
+ def on_button_delete(_event)
344
+ n = Integer(@textDelete.value) rescue -1
345
+ return if n < 0 || n >= @combobox.count
346
+
347
+ @combobox.delete(n)
348
+ end
349
+
350
+ def on_button_delete_sel(_event)
351
+ sel = @combobox.list_selection
352
+ @combobox.delete(sel) if sel != Wx::NOT_FOUND
353
+ end
354
+
355
+ def on_button_clear(_event)
356
+ @combobox.clear
357
+ end
358
+
359
+ class << self
360
+ def s_insert_item(v=nil)
361
+ @s_insert_item = v unless v.nil?
362
+ @s_insert_item ||= 0
363
+ end
364
+ end
365
+
366
+ def on_button_insert(_event)
367
+ s = @textInsert.value
368
+ unless @textInsert.is_modified
369
+ # update the default string
370
+ i = self.class.s_insert_item(self.class.s_insert_item+1)
371
+ @textInsert.set_value("test item #{i}")
372
+ end
373
+
374
+ @combobox.insert(s, @combobox.list_selection) if @combobox.list_selection >= 0
375
+ end
376
+
377
+ def on_button_add(_event)
378
+ s = @textAdd.value
379
+ unless @textAdd.is_modified
380
+ # update the default string
381
+ i = self.class.s_insert_item(self.class.s_insert_item+1)
382
+ @textAdd.set_value("test item #{i}")
383
+ end
384
+
385
+ @combobox.append(s)
386
+ end
387
+
388
+ def on_button_add_several(_event)
389
+ items = [
390
+ 'First',
391
+ 'another one',
392
+ 'and the last (very very very very very very very very very very long) one'
393
+ ]
394
+ @combobox.insert(items, 0)
395
+ end
396
+
397
+ def on_button_add_many(_event)
398
+ # "many" means 1000 here
399
+ 1000.times { |n| @combobox.append("item ##{n}") }
400
+ end
401
+
402
+ def on_combo_box(event)
403
+ sel = event.int
404
+ @textDelete.set_value(sel.to_s)
405
+
406
+ Wx.log_message("OwnerDrawnComboBox item #{sel} selected")
407
+
408
+ Wx.log_message("OwnerDrawnComboBox GetValue(): #{@combobox.value}")
409
+ end
410
+
411
+ def on_drop_down(_event)
412
+ Wx.log_message('Combobox dropped down')
413
+ end
414
+
415
+ def on_close_up(_event)
416
+ Wx.log_message('Combobox closed up')
417
+ end
418
+
419
+ def on_combo_text(event)
420
+ return unless @combobox
421
+
422
+ s = event.string
423
+
424
+ ::Kernel.raise RuntimeError, 'event and combobox values should be the same' unless s == @combobox.value
425
+
426
+ if event.get_event_type == Wx::EVT_TEXT_ENTER
427
+ Wx.log_message("OwnerDrawnComboBox enter pressed (now '#{s}')")
428
+ else
429
+ Wx.log_message("OwnerDrawnComboBox text changed (now '#{s}')")
430
+ end
431
+ end
432
+
433
+ def on_check_or_radio_box(event)
434
+ ctrl = event.event_object
435
+
436
+ # Double-click cycles only applies to read-only combobox
437
+ if ctrl == @chkReadonly
438
+ @chkDclickcycles.enable(@chkReadonly.value)
439
+ elsif ctrl == @chkBitmapbutton
440
+ @chkStdbutton.enable(@chkBitmapbutton.value)
441
+ elsif ctrl == @chkAlignbutleft
442
+ on_text_button_all(nil)
443
+ end
444
+
445
+ create_combo
446
+ end
447
+
448
+ def on_text_popup_width(_event)
449
+ l = Integer(@textPopupMinWidth.value) rescue 0
450
+
451
+ @combobox.set_popup_min_width(l) if @combobox && l > 0
452
+ end
453
+
454
+ def on_text_popup_height(_event)
455
+ h = Integer(@textPopupHeight.value) rescue 0
456
+
457
+ @combobox.set_popup_max_height(h) if @combobox && h > 0
458
+ end
459
+
460
+ def on_text_button_all(_event)
461
+ if @combobox
462
+ if @chkBitmapbutton.value
463
+ create_combo
464
+ else
465
+ get_button_position
466
+ end
467
+ end
468
+ end
469
+
470
+ def on_update_ui_cur_text(event)
471
+ event.set_text(@combobox.list_selection.to_s) if @combobox
472
+ end
473
+
474
+ def on_update_ui_insertion_point_text(event)
475
+ event.set_text(@combobox.insertion_point.to_s) if @combobox
476
+ end
477
+
478
+ def on_update_ui_insert(event)
479
+ if @combobox
480
+ enable = @combobox.get_window_style.nobits?(Wx::CB_SORT) && @combobox.list_selection >= 0
481
+ event.enable(enable)
482
+ end
483
+ end
484
+
485
+ def on_update_ui_add_several(event)
486
+ event.enable(@combobox.get_window_style.nobits?(Wx::CB_SORT)) if @combobox
487
+ end
488
+
489
+ def on_update_ui_clear_button(event)
490
+ event.enable(@combobox.count != 0) if @combobox
491
+ end
492
+
493
+ def on_update_ui_delete_button(event)
494
+ if @combobox
495
+ n = Integer(@textDelete.value) rescue -1
496
+ event.enable(n >= 0 && n < @combobox.count)
497
+ end
498
+ end
499
+
500
+ def on_update_ui_delete_sel_button(event)
501
+ event.enable(@combobox.list_selection != Wx::NOT_FOUND) if @combobox
502
+ end
503
+
504
+ def on_update_ui_reset_button(event)
505
+ event.enable(@chkSort.value || @chkReadonly.value || @chkBitmapbutton.value) if @combobox
506
+ end
507
+
508
+ # reset the odcombobox parameters
509
+ def reset
510
+ @chkSort.set_value(false)
511
+ @chkReadonly.set_value(false)
512
+ @chkDclickcycles.set_value(false)
513
+ @chkDclickcycles.enable(false)
514
+ @chkBitmapbutton.set_value(false)
515
+ @chkStdbutton.set_value(false)
516
+ @chkStdbutton.enable(false)
517
+ end
518
+
519
+ # (re)create the odcombobox
520
+ def create_combo
521
+ flags = get_attrs.default_flags
522
+
523
+ flags |= Wx::CB_SORT if @chkSort.value
524
+ flags |= Wx::CB_READONLY if @chkReadonly.value
525
+ flags |= Wx::ODCB_DCLICK_CYCLES if @chkDclickcycles.value
526
+
527
+ items = []
528
+ if @combobox
529
+ items = @combobox.each_string.to_a
530
+
531
+ @sizerCombo.detach(@combobox)
532
+ @combobox.destroy
533
+ end
534
+
535
+ @combobox = DemoODComboBox.new(self, ID::Combo,
536
+ choices: items,
537
+ style: flags)
538
+
539
+ # Update from controls that edit popup position etc.
540
+ on_text_popup_width(nil)
541
+ on_text_popup_height(nil)
542
+ get_button_position
543
+
544
+ @combobox.set_popup_anchor(@chkAlignpopupright.value ? Wx::RIGHT : Wx::LEFT)
545
+
546
+ if @chkBitmapbutton.value
547
+ bmpNormal = create_bitmap(Wx::BLUE)
548
+ bmpPressed = create_bitmap(Wx::Colour.new(0,0,128))
549
+ bmpHover = create_bitmap(Wx::Colour.new(128,128,255))
550
+ @combobox.set_button_bitmaps(bmpNormal, @chkStdbutton.value, bmpPressed, bmpHover)
551
+ end
552
+
553
+ @sizerCombo.add(@combobox, 0, Wx::GROW | Wx::ALL, 5)
554
+ @sizerCombo.layout
555
+ end
556
+
557
+ # helper that gets all button values from controls and calls SetButtonPosition
558
+ def get_button_position
559
+ w = -1
560
+ h = -1
561
+ spacing = 0
562
+
563
+ w = Integer(@textButtonWidth.value) rescue -1
564
+ spacing = Integer(@textButtonSpacing.value) rescue 0
565
+ h = Integer(@textButtonHeight.value) rescue -1
566
+ align = @chkAlignbutleft.value ? Wx::LEFT : Wx::RIGHT
567
+
568
+ @combobox.set_button_position(w, h, align, spacing)
569
+ end
570
+
571
+ # helper to create the button bitmap
572
+ def create_bitmap(colour)
573
+ ch = @combobox.client_size.y - 1
574
+ h0 = ch - 5
575
+
576
+ w = Integer(@textButtonWidth.value) rescue -1
577
+ h = Integer(@textButtonHeight.value) rescue -1
578
+
579
+ w = h0-1 if w <= 0
580
+ h = h0 if h <= 0
581
+ h = ch if h > ch
582
+
583
+
584
+ bmp = Wx::Bitmap.new(w,h)
585
+ magic = Wx::Colour.new(255,0,255)
586
+ Wx::MemoryDC.draw_on(bmp) do |dc|
587
+ # Draw transparent background
588
+ magicBrush = Wx::Brush.new(magic)
589
+ dc.set_brush(magicBrush)
590
+ dc.set_pen(Wx::TRANSPARENT_PEN)
591
+ dc.draw_rectangle(0, 0, bmp.width, bmp.height)
592
+
593
+ # Draw image content
594
+ dc.set_brush(Wx::Brush.new(colour))
595
+ dc.draw_circle(h/2, h/2+1, (h/2))
596
+ end
597
+
598
+ # Finalize transparency with a mask
599
+ mask = Wx::Mask.new(bmp, magic)
600
+ bmp.set_mask(mask)
601
+
602
+ bmp
603
+ end
604
+ end
605
+
606
+ end
607
+
608
+ end