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,651 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, 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 BitmapComboBox
13
+
14
+ class BitmapComboBoxPage < ItemContainer::Page
15
+
16
+ module ID
17
+ include Wx::IDHelper
18
+
19
+ Reset = self.next_id(Widgets::Frame::ID::Last)
20
+ Insert = self.next_id
21
+ InsertText = self.next_id
22
+ ChangeHeight = self.next_id
23
+ LoadFromFile = self.next_id
24
+ SetFromFile = self.next_id
25
+ AddWidgetIcons = self.next_id
26
+ AddSeveralWithImages = self.next_id
27
+ AddSeveral = self.next_id
28
+ AddMany = self.next_id
29
+ Clear = self.next_id
30
+ Change = self.next_id
31
+ Delete = self.next_id
32
+ DeleteText = self.next_id
33
+ DeleteSel = self.next_id
34
+ Combo = self.next_id
35
+ ContainerTests = self.next_id
36
+
37
+ ComboKind_Default = 0
38
+ ComboKind_Simple = 1
39
+ ComboKind_DropDown = 2
40
+ end
41
+
42
+ def initialize(book, images)
43
+ super(book, images, :bmpcombobox)
44
+
45
+ # init everything
46
+ @chkSort =
47
+ @chkProcessEnter =
48
+ @chkReadonly = nil
49
+
50
+ @combobox = nil
51
+ @sizerCombo = nil
52
+
53
+ @textInsert =
54
+ @textChangeHeight =
55
+ @textChange =
56
+ @textDelete = nil
57
+ end
58
+
59
+ Info = Widgets::PageInfo.new(self, 'BitmapCombobox',
60
+ if %w[WXGTK WXMSW].include?(Wx::PLATFORM)
61
+ Widgets::NATIVE_CTRLS
62
+ else
63
+ Widgets::GENERIC_CTRLS
64
+ end |
65
+ WITH_ITEMS_CTRLS |
66
+ COMBO_CTRLS)
67
+
68
+ def get_widget
69
+ @combobox
70
+ end
71
+ def get_container
72
+ @combobox
73
+ end
74
+ def recreate_widget
75
+ create_combo
76
+ end
77
+
78
+ # lazy creation of the content
79
+ def create_content
80
+ # What we create here is a frame having 3 panes: style pane is the
81
+ # leftmost one, in the middle the pane with buttons allowing to perform
82
+ # miscellaneous combobox operations and the pane containing the combobox
83
+ # itself to the right
84
+ sizerTop = Wx::HBoxSizer.new
85
+
86
+ sizerLeft = Wx::VBoxSizer.new
87
+
88
+ # left pane - style
89
+ sizerStyle = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Set style')
90
+ sizerStyleBox = sizerStyle.get_static_box
91
+
92
+ # should be in sync with ComboKind_XXX values
93
+ kinds = [
94
+ 'default',
95
+ 'simple',
96
+ 'drop down'
97
+ ]
98
+ @radioKind = Wx::RadioBox.new(self, Wx::ID_ANY, 'Combobox &kind:',
99
+ choices: kinds,
100
+ major_dimension: 1,
101
+ style: Wx::RA_SPECIFY_COLS)
102
+
103
+ @chkSort = create_check_box_and_add_to_sizer(sizerStyle, '&Sort items', Wx::ID_ANY, sizerStyleBox)
104
+ @chkProcessEnter = create_check_box_and_add_to_sizer(sizerStyle, 'Process &Enter',Wx::ID_ANY, sizerStyleBox)
105
+ @chkReadonly = create_check_box_and_add_to_sizer(sizerStyle, '&Read only', Wx::ID_ANY, sizerStyleBox)
106
+
107
+ btn = Wx::Button.new(sizerStyleBox, ID::Reset, '&Reset')
108
+ sizerStyle.add(btn, 0, Wx::ALIGN_CENTRE_HORIZONTAL | Wx::ALL, 3)
109
+
110
+ sizerLeft.add(sizerStyle, Wx::SizerFlags.new.expand)
111
+ sizerLeft.add(@radioKind, 0, Wx::GROW | Wx::ALL, 5)
112
+
113
+ # left pane - other options
114
+ sizerOptions = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, 'Demo options')
115
+
116
+ sizerRow, @textChangeHeight = create_sizer_with_small_text_and_label("Control &height:",
117
+ ID::ChangeHeight,
118
+ sizerOptions.get_static_box)
119
+ @textChangeHeight.set_size([20, Wx::DEFAULT_COORD])
120
+ sizerOptions.add(sizerRow, 0,
121
+ Wx::ALL | Wx::FIXED_MINSIZE, # | Wx::GROW*/
122
+ 5)
123
+
124
+ sizerLeft.add( sizerOptions, Wx::SizerFlags.new.expand.border(Wx::TOP, 2))
125
+
126
+ # middle pane
127
+ sizerMiddle = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Change wxBitmapComboBox contents')
128
+ sizerMiddleBox = sizerMiddle.get_static_box
129
+
130
+ btn = Wx::Button.new(sizerMiddleBox, ID::ContainerTests, 'Run &tests')
131
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
132
+
133
+ if Wx.has_feature?(:USE_IMAGE)
134
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddWidgetIcons, 'Add &widget icons')
135
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
136
+
137
+ btn = Wx::Button.new(sizerMiddleBox, ID::LoadFromFile, 'Insert image from &file')
138
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
139
+
140
+ btn = Wx::Button.new(sizerMiddleBox, ID::SetFromFile, '&Set image from file')
141
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
142
+ end
143
+
144
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddSeveralWithImages, 'A&ppend a few strings with images')
145
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
146
+
147
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddSeveral, 'Append a &few strings')
148
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
149
+
150
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddMany, 'Append &many strings')
151
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
152
+
153
+ sizerRow, @textDelete = create_sizer_with_text_and_button(ID::Delete,
154
+ '&Delete this item',
155
+ ID::DeleteText,
156
+ sizerMiddleBox)
157
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
158
+
159
+ sizerRow, @textInsert = create_sizer_with_text_and_button(ID::Insert,
160
+ '&Insert this item',
161
+ ID::InsertText,
162
+ sizerMiddleBox)
163
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
164
+
165
+ btn = Wx::Button.new(sizerMiddleBox, ID::DeleteSel, 'Delete &selection')
166
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
167
+
168
+ btn = Wx::Button.new(sizerMiddleBox, ID::Clear, '&Clear')
169
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
170
+
171
+ # right pane
172
+ sizerRight = Wx::VBoxSizer.new
173
+ @combobox = Wx::BitmapComboBox.new
174
+ @combobox.create(self, ID::Combo, '',
175
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
176
+ [],
177
+ # Flags correspond to the checkboxes state in #reset.
178
+ Wx::TE_PROCESS_ENTER)
179
+
180
+ unless %w[WXGTK WXMSW].include?(Wx::PLATFORM) # native <> generic
181
+ # will sure make the list look nicer when larger images are used.
182
+ @combobox.set_popup_max_height(600)
183
+ end
184
+
185
+ sizerRight.add(@combobox, 0, Wx::GROW | Wx::ALL, 5)
186
+ sizerRight.set_min_size(150, 0)
187
+ @sizerCombo = sizerRight # save it to modify it later
188
+
189
+ # the 3 panes panes compose the window
190
+ sizerTop.add(sizerLeft, 0, Wx::GROW | (Wx::ALL & ~Wx::LEFT), 10)
191
+ sizerTop.add(sizerMiddle, 5, Wx::GROW | Wx::ALL, 10)
192
+ sizerTop.add(sizerRight, 4, Wx::GROW | (Wx::ALL & ~Wx::RIGHT), 10)
193
+
194
+ # final initializations
195
+ reset
196
+
197
+ set_sizer(sizerTop)
198
+
199
+ # connect event handlers
200
+ evt_button(ID::Reset, :on_button_reset)
201
+ evt_button(ID::Change, :on_button_change)
202
+ evt_button(ID::Delete, :on_button_delete)
203
+ evt_button(ID::DeleteSel, :on_button_delete_sel)
204
+ evt_button(ID::Clear, :on_button_clear)
205
+ evt_button(ID::Insert, :on_button_insert)
206
+ evt_button(ID::AddSeveral, :on_button_add_several)
207
+ evt_button(ID::AddSeveralWithImages, :on_button_add_several_with_images)
208
+ evt_button(ID::AddWidgetIcons, :on_button_add_widget_icons)
209
+ evt_button(ID::AddMany, :on_button_add_many)
210
+ evt_button(ID::LoadFromFile, :on_button_load_from_file)
211
+ evt_button(ID::SetFromFile, :on_button_set_from_file)
212
+ evt_button(ID::ContainerTests, :on_button_test_item_container)
213
+
214
+ evt_text_enter(ID::InsertText, :on_button_insert)
215
+ evt_text(ID::ChangeHeight, :on_text_change_height)
216
+ evt_text_enter(ID::DeleteText, :on_button_delete)
217
+
218
+ evt_update_ui(ID::Reset, :on_update_ui_reset_button)
219
+ evt_update_ui(ID::Insert, :on_update_ui_insert)
220
+ evt_update_ui(ID::LoadFromFile, :on_update_ui_insert)
221
+ evt_update_ui(ID::Clear, :on_update_ui_clear_button)
222
+ evt_update_ui(ID::DeleteText, :on_update_ui_clear_button)
223
+ evt_update_ui(ID::Delete, :on_update_ui_delete_button)
224
+ evt_update_ui(ID::Change, :on_update_ui_item_manipulator)
225
+ evt_update_ui(ID::SetFromFile, :on_update_ui_item_manipulator)
226
+ evt_update_ui(ID::DeleteSel, :on_update_ui_item_manipulator)
227
+
228
+ evt_combobox_dropdown(ID::Combo, :on_drop_down)
229
+ evt_combobox_closeup(ID::Combo, :on_close_up)
230
+ evt_combobox(ID::Combo, :on_combo_box)
231
+ evt_text(ID::Combo, :on_combo_text)
232
+ evt_text_enter(ID::Combo, :on_combo_text)
233
+
234
+ evt_checkbox(Wx::ID_ANY, :on_check_or_radio_box)
235
+ evt_radiobox(Wx::ID_ANY, :on_check_or_radio_box)
236
+ end
237
+
238
+ protected
239
+
240
+ # event handlers
241
+ def on_button_reset(_event)
242
+ reset
243
+
244
+ create_combo
245
+ end
246
+
247
+ def on_button_change(_event)
248
+ sel = @combobox.selection
249
+ if sel != Wx::NOT_FOUND
250
+ if Wx::PLATFORM != 'WXGTK'
251
+ @combobox.set_string(sel, @textChange.value)
252
+ else
253
+ Wx.log_message('Not implemented in wxGTK')
254
+ end
255
+ end
256
+ end
257
+
258
+ def on_button_delete(_event)
259
+ n = Integer(@textDelete.value) rescue -1
260
+ return if n < 0 || n >= @combobox.count
261
+
262
+ @combobox.delete(n)
263
+ end
264
+
265
+ def on_button_delete_sel(_event)
266
+ sel = @combobox.selection
267
+ @combobox.delete(sel) if sel != Wx::NOT_FOUND
268
+ end
269
+
270
+ def on_button_clear(_event)
271
+ @combobox.clear
272
+ end
273
+
274
+ class << self
275
+ def s_insert_item(v=nil)
276
+ @s_insert_item = v unless v.nil?
277
+ @s_insert_item ||= 0
278
+ end
279
+ end
280
+
281
+ def on_button_insert(_event)
282
+ s = @textInsert.value
283
+ unless @textInsert.is_modified
284
+ # update the default string
285
+ i = self.class.s_insert_item(self.class.s_insert_item+1)
286
+ @textInsert.set_value("test item #{i}")
287
+ end
288
+ pos = @combobox.selection == Wx::NOT_FOUND ? 0 : @combobox.selection
289
+ @combobox.insert(s, Wx::NULL_BITMAP, pos)
290
+ end
291
+
292
+ def on_text_change_height(_event)
293
+ h = 0
294
+ h = @textChangeHeight.value.to_i if @textChangeHeight
295
+ return if h < 5
296
+ @combobox.set_size([Wx::DEFAULT_COORD, h])
297
+ end
298
+
299
+ def on_button_load_from_file(_event)
300
+ sel = @combobox.selection
301
+ sel = @combobox.count if sel == Wx::NOT_FOUND
302
+
303
+ s = ''
304
+ bmp = query_bitmap(s)
305
+ @combobox.insert(s, bmp, sel) if bmp&.ok?
306
+ end
307
+
308
+ def on_button_set_from_file(_event)
309
+ bmp = query_bitmap(nil)
310
+ @combobox.set_item_bitmap(@combobox.selection, bmp) if bmp&.ok?
311
+ end
312
+
313
+ def on_button_add_several(_event)
314
+ @combobox.append('First')
315
+ @combobox.append('another one')
316
+ @combobox.append('and the last (very very very very very very very very very very long) one')
317
+ end
318
+
319
+ TEST_ENTRIES = [
320
+ { text: 'Red circle', rgb: 0x0000ff },
321
+ { text: 'Blue circle', rgb: 0xff0000 },
322
+ { text: 'Green circle', rgb: 0x00ff00 },
323
+ { text: 'Black circle', rgb: 0x000000 }
324
+ ]
325
+
326
+ def on_button_add_several_with_images(_event)
327
+ TEST_ENTRIES.each do |e|
328
+ @combobox.append(e[:text], create_bitmap(Wx::Colour.new(e[:rgb])))
329
+ end
330
+ end
331
+
332
+ def on_button_add_widget_icons(_event)
333
+ sz = @combobox.get_bitmap_size
334
+ if sz.x <= 0
335
+ sz.x = 32
336
+ sz.y = 32
337
+ end
338
+
339
+ images = Wx::ImageList.new(sz.x, sz.y)
340
+
341
+ strings = []
342
+ load_widget_images(strings, images)
343
+
344
+ strings.each_with_index do |s, i|
345
+ @combobox.append(s, images.get_bitmap(i))
346
+ end
347
+ end
348
+
349
+ def on_button_add_many(_event)
350
+ # "many" means 1000 here
351
+ 1000.times { |n| @combobox.append("item ##{n}") }
352
+ end
353
+
354
+ def on_combo_box(event)
355
+ sel = event.get_int
356
+ @textDelete.set_value(sel.to_s)
357
+
358
+ Wx.log_message("BitmapCombobox item #{sel} selected")
359
+
360
+ Wx.log_message("BitmapCombobox GetValue(): #{@combobox.value}")
361
+ end
362
+
363
+ def on_drop_down(_event)
364
+ Wx.log_message('Combobox dropped down')
365
+ end
366
+
367
+ def on_close_up(_event)
368
+ Wx.log_message('Combobox closed up')
369
+ end
370
+
371
+ def on_combo_text(event)
372
+ return unless @combobox
373
+
374
+ s = event.string
375
+
376
+ ::Kernel.raise RuntimeError, 'event and combobox values should be the same' unless s == @combobox.value
377
+
378
+ if event.get_event_type == Wx::EVT_TEXT_ENTER
379
+ Wx.log_message("BitmapCombobox enter pressed (now '#{s}')")
380
+ else
381
+ Wx.log_message("BitmapCombobox text changed (now '#{s}')")
382
+ end
383
+ end
384
+
385
+ def on_check_or_radio_box(_event)
386
+ create_combo
387
+ end
388
+
389
+ def on_update_ui_insert(event)
390
+ if @combobox
391
+ event.enable(@combobox.get_window_style.nobits?(Wx::CB_SORT))
392
+ end
393
+ end
394
+
395
+ def on_update_ui_clear_button(event)
396
+ if @combobox
397
+ event.enable(@combobox.count != 0)
398
+ end
399
+ end
400
+
401
+ def on_update_ui_delete_button(event)
402
+ if @combobox
403
+ n = Integer(@textDelete.value) rescue -1
404
+ event.enable(n >= 0 && n < @combobox.count)
405
+ end
406
+ end
407
+
408
+ def on_update_ui_item_manipulator(event)
409
+ if @combobox
410
+ event.enable(@combobox.selection != Wx::NOT_FOUND)
411
+ end
412
+ end
413
+
414
+ def on_update_ui_reset_button(event)
415
+ if @combobox
416
+ event.enable(@chkSort.value || !@chkProcessEnter.value || @chkReadonly.value)
417
+ end
418
+ end
419
+
420
+ # reset the bmpcombobox parameters
421
+ def reset
422
+ @chkSort.value = false
423
+ @chkProcessEnter.value = true
424
+ @chkReadonly.value = false
425
+ @textInsert.value = 'test item 0'
426
+ end
427
+
428
+ # (re)create the bmpcombobox
429
+ def create_combo
430
+ flags = get_attrs.default_flags
431
+
432
+ flags |= Wx::CB_SORT if @chkSort.value
433
+ flags |= Wx::TE_PROCESS_ENTER if @chkProcessEnter.value
434
+ flags |= Wx::CB_READONLY if @chkReadonly.value
435
+
436
+ case @radioKind.selection
437
+ when ID::ComboKind_Default
438
+ when ID::ComboKind_Simple
439
+ flags |= Wx::CB_SIMPLE
440
+ when ID::ComboKind_DropDown
441
+ flags = Wx::CB_DROPDOWN
442
+ else
443
+ ::Kernel.raise RuntimeError, 'unknown combo kind'
444
+ end
445
+
446
+ items = []
447
+ bitmaps = []
448
+ if @combobox
449
+ @combobox.each_string.each_with_index do |s, n|
450
+ items << s
451
+ bmp = @combobox.get_item_bitmap(n)
452
+ bitmaps << bmp
453
+ end
454
+
455
+ @sizerCombo.detach(@combobox)
456
+ @combobox.destroy
457
+ end
458
+
459
+ @combobox = Wx::BitmapComboBox.new
460
+ @combobox.create(self, ID::Combo, '',
461
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
462
+ [],
463
+ flags)
464
+
465
+ unless %w[WXGTK WXMSW].include?(Wx::PLATFORM) # native <> generic
466
+ # will sure make the list look nicer when larger images are used.
467
+ @combobox.set_popup_max_height(600)
468
+ end
469
+
470
+ items.each_with_index do |item, n|
471
+ bmp = bitmaps[n]
472
+ @combobox.append(item, bmp)
473
+ end
474
+
475
+ @sizerCombo.add(@combobox, 0, Wx::GROW | Wx::ALL, 5)
476
+ @sizerCombo.layout
477
+
478
+ # Allow changing height in order to demonstrate flexible
479
+ # size of image "thumbnail" painted in the control itself.
480
+ h = @textChangeHeight.value.to_i
481
+ @combobox.set_size([Wx::DEFAULT_COORD, h]) if h >= 5
482
+ end
483
+
484
+ # helpers for creating bitmaps
485
+ def create_bitmap(colour)
486
+ w = 10
487
+ h = 10
488
+
489
+ magic = Wx::Colour.new(255, 0, 255)
490
+ bmp = Wx::Bitmap.new(w, h)
491
+ Wx::MemoryDC.draw_on(bmp) do |dc|
492
+ # Draw transparent background
493
+ magicBrush = Wx::Brush.new(magic)
494
+ dc.set_brush(magicBrush)
495
+ dc.set_pen(Wx::TRANSPARENT_PEN)
496
+ dc.draw_rectangle(0, 0, w, h)
497
+
498
+ # Draw image content
499
+ dc.set_brush(Wx::Brush.new(colour))
500
+ dc.draw_circle(h/2, h/2+1, h/2)
501
+ end
502
+
503
+ # Finalize transparency with a mask
504
+ mask = Wx::Mask.new(bmp, magic)
505
+ bmp.set_mask(mask)
506
+
507
+ bmp
508
+ end
509
+
510
+ # Images loaded from file are reduced this width and height, if larger
511
+ IMG_SIZE_TRUNC = 256
512
+
513
+ def load_bitmap(filepath)
514
+ if Wx.has_feature?(:USE_IMAGE)
515
+ # Get size of existing images in list
516
+ foundSize = @combobox.get_bitmap_size
517
+
518
+ # Have some reasonable maximum size
519
+ if foundSize.x <= 0
520
+ foundSize.x = IMG_SIZE_TRUNC
521
+ foundSize.y = IMG_SIZE_TRUNC
522
+ end
523
+
524
+ image = Wx::Image.new(filepath)
525
+ if image.ok?
526
+ # Rescale very large images
527
+ ow = image.width
528
+ oh = image.height
529
+
530
+ if foundSize.x > 0 && (ow != foundSize.x || oh != foundSize.y)
531
+ w = ow
532
+ w = foundSize.x if w > foundSize.x
533
+ h = oh
534
+ h = foundSize.y if h > foundSize.y
535
+
536
+ rescale_image(image, w, h)
537
+ end
538
+
539
+ return Wx::Bitmap.new(image)
540
+ end
541
+ end
542
+
543
+ Wx::NULL_BITMAP
544
+ end
545
+
546
+ def query_bitmap(str)
547
+ filepath = Wx.load_file_selector("image",
548
+ '',
549
+ '',
550
+ self)
551
+
552
+ Wx.set_cursor(Wx::HOURGLASS_CURSOR)
553
+
554
+ bitmap = nil
555
+ unless filepath.empty?
556
+ unless str.nil?
557
+ str.clear
558
+ str << File.basename(filepath, '.*')
559
+ end
560
+
561
+ bitmap = LoadBitmap(filepath)
562
+ end
563
+
564
+ Wx.log_debug("%i, %i",bitmap.width, bitmap.height) if bitmap&.ok?
565
+
566
+ Wx.set_cursor(Wx::STANDARD_CURSOR)
567
+
568
+ bitmap
569
+ end
570
+
571
+ def load_widget_images(strings, images)
572
+ fpath = File.join(__dir__, 'art', 'widgets')
573
+
574
+ strings.concat(Dir.glob(File.join(fpath, '*.xpm')))
575
+
576
+ # Get size of existing images in list
577
+ foundSize = @combobox.get_bitmap_size
578
+ foundSize = images.get_size unless foundSize.is_fully_specified
579
+
580
+ strings.each_with_index do |s, i|
581
+
582
+ name = File.basename(s, '.xpm')
583
+ # Handle few exceptions
584
+ if name == "bmpbtn"
585
+ strings.delete_at(i)
586
+ else
587
+ bmp = if Wx.has_feature?(:USE_IMAGE)
588
+ image = Wx::Image.new(s)
589
+ ::Kernel.raise RuntimeError, "bad image #{s}" unless image.ok?
590
+ rescale_image(image, foundSize.x, foundSize.y)
591
+ image.to_bitmap
592
+ else
593
+ Wx::Bitmap.new
594
+ end
595
+ images.add(bmp)
596
+
597
+ # if the combobox is empty, use as bitmap size of the image list
598
+ # the size of the first valid image loaded
599
+ foundSize = bmp.get_size if foundSize == Wx::DEFAULT_SIZE
600
+ end
601
+ end
602
+ strings.collect! { |s| File.basename(s, '.xpm') }
603
+
604
+ Wx.set_cursor(Wx::STANDARD_CURSOR)
605
+ end
606
+
607
+ def create_sizer_with_small_text_and_label(label, id, parent = nil)
608
+ control = Wx::StaticText.new(parent ? parent : self, Wx::ID_ANY, label)
609
+ sizerRow = Wx::HBoxSizer.new
610
+ text = Wx::TextCtrl.new(parent ? parent : self, id, size: [50,Wx::DEFAULT_COORD], style: Wx::TE_PROCESS_ENTER)
611
+
612
+ sizerRow.add(control, 0, Wx::RIGHT | Wx::ALIGN_CENTRE_VERTICAL, 5)
613
+ sizerRow.add(text, 1, Wx::FIXED_MINSIZE | Wx::LEFT | Wx::ALIGN_CENTRE_VERTICAL, 5)
614
+
615
+ [sizerRow, text]
616
+ end
617
+
618
+ if Wx.has_feature?(:USE_IMAGE)
619
+
620
+ class << self
621
+ def s_is_first_scale(v=nil)
622
+ @s_is_first_scale = v unless v.nil?
623
+ @s_is_first_scale = true unless @s_is_first_scale.nil?
624
+ @s_is_first_scale
625
+ end
626
+ end
627
+
628
+ def rescale_image(image, w, h)
629
+ return if image.width == w && image.height == h
630
+
631
+ return if w <= 0 || h <= 0
632
+
633
+ if self.class.s_is_first_scale && @combobox.count > 0
634
+ Wx.message_box("Wx::BitmapComboBox normally only supports images of one size. " +
635
+ "However, for demonstration purposes, loaded bitmaps are scaled to fit " +
636
+ "using Wx::Image#rescale.",
637
+ "Notice",
638
+ Wx::OK,
639
+ self)
640
+
641
+ self.class.s_is_first_scale(false)
642
+ end
643
+
644
+ image.rescale(w, h)
645
+ end
646
+ end
647
+ end
648
+
649
+ end
650
+
651
+ end