wxruby3 0.9.1-x64-mingw-ucrt → 0.9.3-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 (740) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/INSTALL.md +35 -29
  4. data/README.md +24 -15
  5. data/ext/wxbase32u_gcc_custom.dll +0 -0
  6. data/ext/wxbase32u_net_gcc_custom.dll +0 -0
  7. data/ext/wxbase32u_xml_gcc_custom.dll +0 -0
  8. data/ext/wxmsw32u_aui_gcc_custom.dll +0 -0
  9. data/ext/wxmsw32u_core_gcc_custom.dll +0 -0
  10. data/ext/wxmsw32u_gl_gcc_custom.dll +0 -0
  11. data/ext/wxmsw32u_html_gcc_custom.dll +0 -0
  12. data/ext/wxmsw32u_media_gcc_custom.dll +0 -0
  13. data/ext/wxmsw32u_propgrid_gcc_custom.dll +0 -0
  14. data/ext/wxmsw32u_qa_gcc_custom.dll +0 -0
  15. data/ext/wxmsw32u_ribbon_gcc_custom.dll +0 -0
  16. data/ext/wxmsw32u_richtext_gcc_custom.dll +0 -0
  17. data/ext/wxmsw32u_stc_gcc_custom.dll +0 -0
  18. data/ext/wxmsw32u_webview_gcc_custom.dll +0 -0
  19. data/ext/wxmsw32u_xrc_gcc_custom.dll +0 -0
  20. data/lib/wx/aui/aui_tab_ctrl.rb +18 -0
  21. data/lib/wx/aui/auinotebook.rb +6 -2
  22. data/lib/wx/aui/require.rb +1 -0
  23. data/lib/wx/core/app.rb +2 -2
  24. data/lib/wx/core/bitmap_combobox.rb +17 -21
  25. data/lib/wx/core/collapsible_pane.rb +1 -1
  26. data/lib/wx/core/combobox.rb +13 -3
  27. data/lib/wx/core/controlwithitems.rb +40 -128
  28. data/lib/wx/core/enum.rb +17 -1
  29. data/lib/wx/core/event.rb +6 -1
  30. data/lib/wx/core/events/evt_list.rb +5 -4
  31. data/lib/wx/core/evthandler.rb +8 -2
  32. data/lib/wx/core/generic_validator.rb +312 -0
  33. data/lib/wx/core/listbox.rb +2 -2
  34. data/lib/wx/core/log.rb +1 -1
  35. data/lib/wx/core/menu.rb +10 -0
  36. data/lib/wx/core/notebook.rb +6 -2
  37. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  38. data/lib/wx/core/size.rb +4 -0
  39. data/lib/wx/core/sizer.rb +12 -2
  40. data/lib/wx/core/standard_paths.rb +22 -0
  41. data/lib/wx/core/task_bar_button.rb +19 -0
  42. data/lib/wx/core/text_entry.rb +4 -1
  43. data/lib/wx/core/textctrl.rb +11 -1
  44. data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
  45. data/lib/wx/core/validator.rb +70 -5
  46. data/lib/wx/core/window.rb +13 -7
  47. data/lib/wx/doc/app.rb +48 -38
  48. data/lib/wx/doc/art_locator.rb +48 -43
  49. data/lib/wx/doc/aui/auimanager.rb +16 -8
  50. data/lib/wx/doc/aui/auinotebook.rb +20 -5
  51. data/lib/wx/doc/clipboard.rb +11 -7
  52. data/lib/wx/doc/colour_dialog.rb +14 -10
  53. data/lib/wx/doc/comboctrl.rb +18 -0
  54. data/lib/wx/doc/controlwithitems.rb +34 -8
  55. data/lib/wx/doc/data_object.rb +2 -2
  56. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  57. data/lib/wx/doc/editable_listbox.rb +44 -0
  58. data/lib/wx/doc/enum.rb +15 -0
  59. data/lib/wx/doc/event.rb +12 -0
  60. data/lib/wx/doc/evthandler.rb +113 -108
  61. data/lib/wx/doc/extra/12_client_data.md +89 -0
  62. data/lib/wx/doc/extra/13_validators.md +139 -0
  63. data/lib/wx/doc/font.rb +1 -0
  64. data/lib/wx/doc/gc_dc.rb +6 -1
  65. data/lib/wx/doc/gdi_common.rb +4 -0
  66. data/lib/wx/doc/gen/about_dialog_info.rb +26 -2
  67. data/lib/wx/doc/gen/accelerator.rb +19 -4
  68. data/lib/wx/doc/gen/accessible.rb +48 -47
  69. data/lib/wx/doc/gen/activity_indicator.rb +10 -4
  70. data/lib/wx/doc/gen/animation.rb +19 -3
  71. data/lib/wx/doc/gen/animation_ctrl.rb +16 -7
  72. data/lib/wx/doc/gen/any_button.rb +22 -1
  73. data/lib/wx/doc/gen/app.rb +41 -5
  74. data/lib/wx/doc/gen/app_traits.rb +65 -15
  75. data/lib/wx/doc/gen/art_provider.rb +33 -7
  76. data/lib/wx/doc/gen/aui/aui_dock_art.rb +18 -3
  77. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +2 -0
  78. data/lib/wx/doc/gen/aui/aui_manager.rb +35 -8
  79. data/lib/wx/doc/gen/aui/aui_manager_event.rb +11 -4
  80. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +4 -0
  81. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +3 -0
  82. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +8 -1
  83. data/lib/wx/doc/gen/aui/aui_notebook.rb +31 -7
  84. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +5 -4
  85. data/lib/wx/doc/gen/aui/aui_pane_info.rb +38 -2
  86. data/lib/wx/doc/gen/aui/aui_tab_art.rb +9 -3
  87. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +2 -1
  88. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +20 -6
  89. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +4 -2
  90. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +5 -7
  91. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +5 -1
  92. data/lib/wx/doc/gen/aui/event_list.rb +164 -160
  93. data/lib/wx/doc/gen/banner_window.rb +8 -1
  94. data/lib/wx/doc/gen/bitmap.rb +94 -16
  95. data/lib/wx/doc/gen/bitmap_button.rb +16 -8
  96. data/lib/wx/doc/gen/bitmap_combo_box.rb +20 -10
  97. data/lib/wx/doc/gen/book_ctrl_base.rb +31 -4
  98. data/lib/wx/doc/gen/book_ctrl_event.rb +9 -3
  99. data/lib/wx/doc/gen/box_sizer.rb +5 -1
  100. data/lib/wx/doc/gen/brush.rb +20 -2
  101. data/lib/wx/doc/gen/busy_info.rb +10 -2
  102. data/lib/wx/doc/gen/button.rb +31 -11
  103. data/lib/wx/doc/gen/calculate_layout_event.rb +5 -3
  104. data/lib/wx/doc/gen/calendar_ctrl.rb +38 -13
  105. data/lib/wx/doc/gen/calendar_date_attr.rb +2 -1
  106. data/lib/wx/doc/gen/calendar_event.rb +5 -2
  107. data/lib/wx/doc/gen/caret.rb +3 -1
  108. data/lib/wx/doc/gen/check_box.rb +17 -7
  109. data/lib/wx/doc/gen/check_list_box.rb +8 -6
  110. data/lib/wx/doc/gen/choice.rb +28 -9
  111. data/lib/wx/doc/gen/choicebook.rb +7 -7
  112. data/lib/wx/doc/gen/client_dc.rb +6 -2
  113. data/lib/wx/doc/gen/clipboard.rb +16 -3
  114. data/lib/wx/doc/gen/collapsible_pane.rb +9 -7
  115. data/lib/wx/doc/gen/collapsible_pane_event.rb +3 -3
  116. data/lib/wx/doc/gen/colour.rb +28 -4
  117. data/lib/wx/doc/gen/colour_dialog.rb +15 -7
  118. data/lib/wx/doc/gen/colour_picker_ctrl.rb +13 -10
  119. data/lib/wx/doc/gen/colour_picker_event.rb +5 -5
  120. data/lib/wx/doc/gen/combo_box.rb +36 -14
  121. data/lib/wx/doc/gen/combo_ctrl.rb +117 -295
  122. data/lib/wx/doc/gen/command_link_button.rb +12 -5
  123. data/lib/wx/doc/gen/context_help_button.rb +13 -3
  124. data/lib/wx/doc/gen/control.rb +22 -8
  125. data/lib/wx/doc/gen/control_with_items.rb +45 -10
  126. data/lib/wx/doc/gen/core.rb +4 -4
  127. data/lib/wx/doc/gen/cursor.rb +10 -8
  128. data/lib/wx/doc/gen/data_format.rb +7 -1
  129. data/lib/wx/doc/gen/data_object.rb +42 -18
  130. data/lib/wx/doc/gen/date_event.rb +3 -2
  131. data/lib/wx/doc/gen/date_picker_ctrl.rb +18 -8
  132. data/lib/wx/doc/gen/dc.rb +238 -36
  133. data/lib/wx/doc/gen/defs.rb +51 -51
  134. data/lib/wx/doc/gen/dial_up_event.rb +2 -1
  135. data/lib/wx/doc/gen/dial_up_manager.rb +25 -5
  136. data/lib/wx/doc/gen/dialog.rb +72 -13
  137. data/lib/wx/doc/gen/dir_dialog.rb +22 -5
  138. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +2 -0
  139. data/lib/wx/doc/gen/dir_picker_ctrl.rb +14 -10
  140. data/lib/wx/doc/gen/drag_drop.rb +28 -7
  141. data/lib/wx/doc/gen/drag_image.rb +13 -2
  142. data/lib/wx/doc/gen/editable_list_box.rb +7 -5
  143. data/lib/wx/doc/gen/event.rb +57 -26
  144. data/lib/wx/doc/gen/event_blocker.rb +2 -3
  145. data/lib/wx/doc/gen/event_filter.rb +3 -0
  146. data/lib/wx/doc/gen/event_list.rb +1656 -1652
  147. data/lib/wx/doc/gen/events.rb +305 -173
  148. data/lib/wx/doc/gen/evt_handler.rb +49 -3
  149. data/lib/wx/doc/gen/ext_help_controller.rb +10 -1
  150. data/lib/wx/doc/gen/file_ctrl.rb +28 -10
  151. data/lib/wx/doc/gen/file_ctrl_event.rb +7 -4
  152. data/lib/wx/doc/gen/file_dialog.rb +44 -14
  153. data/lib/wx/doc/gen/file_dialog_custom_control.rb +19 -0
  154. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +11 -3
  155. data/lib/wx/doc/gen/file_dir_picker_event.rb +4 -4
  156. data/lib/wx/doc/gen/file_picker_ctrl.rb +12 -9
  157. data/lib/wx/doc/gen/file_system.rb +54 -15
  158. data/lib/wx/doc/gen/find_dialog_event.rb +6 -4
  159. data/lib/wx/doc/gen/find_replace_data.rb +2 -1
  160. data/lib/wx/doc/gen/find_replace_dialog.rb +4 -1
  161. data/lib/wx/doc/gen/flex_grid_sizer.rb +13 -1
  162. data/lib/wx/doc/gen/font.rb +103 -20
  163. data/lib/wx/doc/gen/font_data.rb +16 -3
  164. data/lib/wx/doc/gen/font_dialog.rb +6 -1
  165. data/lib/wx/doc/gen/font_picker_ctrl.rb +14 -7
  166. data/lib/wx/doc/gen/font_picker_event.rb +3 -3
  167. data/lib/wx/doc/gen/frame.rb +73 -15
  168. data/lib/wx/doc/gen/fs_file.rb +39 -10
  169. data/lib/wx/doc/gen/gauge.rb +19 -8
  170. data/lib/wx/doc/gen/gb_sizer_item.rb +5 -1
  171. data/lib/wx/doc/gen/gcdc.rb +3 -2
  172. data/lib/wx/doc/gen/gdi_common.rb +80 -11
  173. data/lib/wx/doc/gen/gdi_object.rb +1 -1
  174. data/lib/wx/doc/gen/generic_dir_ctrl.rb +13 -7
  175. data/lib/wx/doc/gen/graphics_context.rb +86 -10
  176. data/lib/wx/doc/gen/graphics_object.rb +35 -6
  177. data/lib/wx/doc/gen/grid/event_list.rb +168 -164
  178. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +3 -0
  179. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +16 -3
  180. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +1 -1
  181. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +2 -1
  182. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +2 -1
  183. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +1 -1
  184. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +2 -1
  185. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +2 -1
  186. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +2 -1
  187. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +2 -1
  188. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +10 -1
  189. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +2 -1
  190. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +2 -1
  191. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +1 -1
  192. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +2 -1
  193. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +2 -1
  194. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +1 -1
  195. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +7 -1
  196. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +1 -1
  197. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +1 -1
  198. data/lib/wx/doc/gen/grid/grid_ctrl.rb +256 -12
  199. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +6 -4
  200. data/lib/wx/doc/gen/grid/grid_event.rb +6 -4
  201. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +4 -4
  202. data/lib/wx/doc/gen/grid/grid_size_event.rb +4 -4
  203. data/lib/wx/doc/gen/grid/grid_string_table.rb +8 -0
  204. data/lib/wx/doc/gen/grid/grid_table_base.rb +28 -3
  205. data/lib/wx/doc/gen/grid/grid_table_message.rb +2 -0
  206. data/lib/wx/doc/gen/grid_bag_sizer.rb +21 -7
  207. data/lib/wx/doc/gen/grid_sizer.rb +11 -1
  208. data/lib/wx/doc/gen/gui_event_loop.rb +13 -3
  209. data/lib/wx/doc/gen/header_ctrl.rb +110 -11
  210. data/lib/wx/doc/gen/header_ctrl_event.rb +4 -2
  211. data/lib/wx/doc/gen/help_controller.rb +14 -3
  212. data/lib/wx/doc/gen/help_provider.rb +22 -4
  213. data/lib/wx/doc/gen/html/event_list.rb +41 -37
  214. data/lib/wx/doc/gen/html/html_cell.rb +48 -6
  215. data/lib/wx/doc/gen/html/html_cell_event.rb +5 -4
  216. data/lib/wx/doc/gen/html/html_easy_printing.rb +20 -3
  217. data/lib/wx/doc/gen/html/html_help_controller.rb +26 -2
  218. data/lib/wx/doc/gen/html/html_help_data.rb +8 -1
  219. data/lib/wx/doc/gen/html/html_help_window.rb +9 -1
  220. data/lib/wx/doc/gen/html/html_link_event.rb +3 -3
  221. data/lib/wx/doc/gen/html/html_list_box.rb +54 -16
  222. data/lib/wx/doc/gen/html/html_printout.rb +7 -1
  223. data/lib/wx/doc/gen/html/html_window.rb +43 -6
  224. data/lib/wx/doc/gen/hyperlink_ctrl.rb +9 -8
  225. data/lib/wx/doc/gen/hyperlink_event.rb +3 -3
  226. data/lib/wx/doc/gen/icon.rb +23 -29
  227. data/lib/wx/doc/gen/icon_location.rb +1 -1
  228. data/lib/wx/doc/gen/image.rb +143 -20
  229. data/lib/wx/doc/gen/image_list.rb +25 -6
  230. data/lib/wx/doc/gen/info_bar.rb +14 -2
  231. data/lib/wx/doc/gen/keyboard_state.rb +11 -1
  232. data/lib/wx/doc/gen/list_box.rb +46 -17
  233. data/lib/wx/doc/gen/list_ctrl.rb +165 -29
  234. data/lib/wx/doc/gen/list_event.rb +13 -4
  235. data/lib/wx/doc/gen/listbook.rb +7 -7
  236. data/lib/wx/doc/gen/locale.rb +68 -4
  237. data/lib/wx/doc/gen/log.rb +58 -12
  238. data/lib/wx/doc/gen/mdi_client_window.rb +11 -2
  239. data/lib/wx/doc/gen/mdi_frame.rb +51 -7
  240. data/lib/wx/doc/gen/media_ctrl.rb +43 -18
  241. data/lib/wx/doc/gen/media_event.rb +6 -4
  242. data/lib/wx/doc/gen/memory_dc.rb +16 -6
  243. data/lib/wx/doc/gen/menu.rb +81 -26
  244. data/lib/wx/doc/gen/menu_bar.rb +74 -15
  245. data/lib/wx/doc/gen/menu_item.rb +67 -19
  246. data/lib/wx/doc/gen/message_dialog.rb +17 -8
  247. data/lib/wx/doc/gen/mini_frame.rb +14 -5
  248. data/lib/wx/doc/gen/mirror_dc.rb +1 -2
  249. data/lib/wx/doc/gen/mouse_state.rb +1 -1
  250. data/lib/wx/doc/gen/multi_choice_dialog.rb +9 -4
  251. data/lib/wx/doc/gen/non_owned_window.rb +4 -1
  252. data/lib/wx/doc/gen/notebook.rb +27 -9
  253. data/lib/wx/doc/gen/num_validator.rb +37 -0
  254. data/lib/wx/doc/gen/number_entry_dialog.rb +5 -1
  255. data/lib/wx/doc/gen/object.rb +3 -1
  256. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +340 -0
  257. data/lib/wx/doc/gen/paint_dc.rb +1 -1
  258. data/lib/wx/doc/gen/palette.rb +5 -1
  259. data/lib/wx/doc/gen/panel.rb +25 -8
  260. data/lib/wx/doc/gen/pen.rb +46 -8
  261. data/lib/wx/doc/gen/pg/event_list.rb +97 -93
  262. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +4 -1
  263. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +12 -1
  264. data/lib/wx/doc/gen/pg/pg_cell.rb +11 -3
  265. data/lib/wx/doc/gen/pg/pg_editor.rb +161 -16
  266. data/lib/wx/doc/gen/pg/pg_multi_button.rb +3 -2
  267. data/lib/wx/doc/gen/pg/pg_properties.rb +632 -83
  268. data/lib/wx/doc/gen/pg/pg_property.rb +381 -77
  269. data/lib/wx/doc/gen/pg/pg_validation_info.rb +11 -4
  270. data/lib/wx/doc/gen/pg/property_grid.rb +123 -20
  271. data/lib/wx/doc/gen/pg/property_grid_event.rb +41 -9
  272. data/lib/wx/doc/gen/pg/property_grid_interface.rb +273 -34
  273. data/lib/wx/doc/gen/pg/property_grid_manager.rb +62 -10
  274. data/lib/wx/doc/gen/pg/property_grid_page.rb +33 -8
  275. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +18 -4
  276. data/lib/wx/doc/gen/picker_base.rb +22 -5
  277. data/lib/wx/doc/gen/platform_info.rb +35 -9
  278. data/lib/wx/doc/gen/popup_window.rb +7 -5
  279. data/lib/wx/doc/gen/progress_dialog.rb +5 -0
  280. data/lib/wx/doc/gen/property_sheet_dialog.rb +20 -4
  281. data/lib/wx/doc/gen/prt/event_list.rb +8 -4
  282. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +3 -1
  283. data/lib/wx/doc/gen/prt/post_script_dc.rb +3 -2
  284. data/lib/wx/doc/gen/prt/preview_frame.rb +5 -1
  285. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +4 -0
  286. data/lib/wx/doc/gen/prt/print_data.rb +31 -3
  287. data/lib/wx/doc/gen/prt/print_dialog.rb +5 -1
  288. data/lib/wx/doc/gen/prt/printer.rb +87 -11
  289. data/lib/wx/doc/gen/prt/printer_dc.rb +3 -1
  290. data/lib/wx/doc/gen/query_layout_info_event.rb +10 -3
  291. data/lib/wx/doc/gen/radio_box.rb +28 -10
  292. data/lib/wx/doc/gen/radio_button.rb +22 -9
  293. data/lib/wx/doc/gen/rbn/event_list.rb +127 -123
  294. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +82 -3
  295. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +26 -4
  296. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +3 -2
  297. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +50 -12
  298. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +3 -2
  299. data/lib/wx/doc/gen/rbn/ribbon_control.rb +11 -1
  300. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +21 -11
  301. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +2 -2
  302. data/lib/wx/doc/gen/rbn/ribbon_page.rb +12 -1
  303. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +16 -4
  304. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +3 -3
  305. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +27 -3
  306. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +3 -1
  307. data/lib/wx/doc/gen/rearrange_ctrl.rb +5 -2
  308. data/lib/wx/doc/gen/rearrange_list.rb +12 -4
  309. data/lib/wx/doc/gen/region.rb +104 -17
  310. data/lib/wx/doc/gen/region_iterator.rb +1 -1
  311. data/lib/wx/doc/gen/rtc/event_list.rb +116 -112
  312. data/lib/wx/doc/gen/rtc/rich_text_box.rb +27 -9
  313. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +45 -11
  314. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +1 -1
  315. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +23 -14
  316. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +84 -7
  317. data/lib/wx/doc/gen/rtc/rich_text_event.rb +8 -4
  318. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +8 -2
  319. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +8 -3
  320. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +4 -2
  321. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +6 -3
  322. data/lib/wx/doc/gen/rtc/rich_text_image.rb +7 -2
  323. data/lib/wx/doc/gen/rtc/rich_text_object.rb +82 -17
  324. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +54 -11
  325. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +15 -2
  326. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +14 -9
  327. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +4 -1
  328. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +4 -3
  329. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +2 -2
  330. data/lib/wx/doc/gen/sash_event.rb +13 -4
  331. data/lib/wx/doc/gen/sash_layout_window.rb +21 -4
  332. data/lib/wx/doc/gen/sash_window.rb +6 -4
  333. data/lib/wx/doc/gen/screen_dc.rb +1 -1
  334. data/lib/wx/doc/gen/scroll_bar.rb +28 -10
  335. data/lib/wx/doc/gen/scrolled_canvas.rb +48 -10
  336. data/lib/wx/doc/gen/scrolled_control.rb +48 -10
  337. data/lib/wx/doc/gen/scrolled_window.rb +48 -10
  338. data/lib/wx/doc/gen/search_ctrl.rb +14 -9
  339. data/lib/wx/doc/gen/simplebook.rb +8 -1
  340. data/lib/wx/doc/gen/single_choice_dialog.rb +9 -4
  341. data/lib/wx/doc/gen/sizer.rb +91 -16
  342. data/lib/wx/doc/gen/sizer_item.rb +21 -4
  343. data/lib/wx/doc/gen/slider.rb +50 -17
  344. data/lib/wx/doc/gen/spin_button.rb +24 -10
  345. data/lib/wx/doc/gen/spin_ctrl.rb +35 -9
  346. data/lib/wx/doc/gen/spin_ctrl_double.rb +13 -7
  347. data/lib/wx/doc/gen/spin_double_event.rb +6 -4
  348. data/lib/wx/doc/gen/spin_event.rb +4 -3
  349. data/lib/wx/doc/gen/splash_screen.rb +3 -2
  350. data/lib/wx/doc/gen/splitter_event.rb +12 -4
  351. data/lib/wx/doc/gen/splitter_window.rb +100 -18
  352. data/lib/wx/doc/gen/static_bitmap.rb +109 -7
  353. data/lib/wx/doc/gen/static_box.rb +15 -7
  354. data/lib/wx/doc/gen/static_box_sizer.rb +3 -2
  355. data/lib/wx/doc/gen/static_line.rb +7 -4
  356. data/lib/wx/doc/gen/static_text.rb +10 -6
  357. data/lib/wx/doc/gen/status_bar.rb +32 -8
  358. data/lib/wx/doc/gen/stc/event_list.rb +212 -208
  359. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +207 -13
  360. data/lib/wx/doc/gen/stc/styled_text_event.rb +31 -6
  361. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +7 -1
  362. data/lib/wx/doc/gen/svg_file_dc.rb +15 -7
  363. data/lib/wx/doc/gen/system_options.rb +14 -6
  364. data/lib/wx/doc/gen/system_settings.rb +9 -3
  365. data/lib/wx/doc/gen/task_bar_button.rb +324 -0
  366. data/lib/wx/doc/gen/task_bar_icon.rb +26 -8
  367. data/lib/wx/doc/gen/task_bar_icon_event.rb +5 -3
  368. data/lib/wx/doc/gen/text_attr.rb +47 -5
  369. data/lib/wx/doc/gen/text_ctrl.rb +114 -25
  370. data/lib/wx/doc/gen/text_entry.rb +69 -11
  371. data/lib/wx/doc/gen/text_entry_dialog.rb +14 -2
  372. data/lib/wx/doc/gen/text_validator.rb +58 -9
  373. data/lib/wx/doc/gen/time_picker_ctrl.rb +11 -6
  374. data/lib/wx/doc/gen/timer.rb +14 -2
  375. data/lib/wx/doc/gen/timer_event.rb +2 -2
  376. data/lib/wx/doc/gen/tip_provider.rb +6 -1
  377. data/lib/wx/doc/gen/toggle_button.rb +73 -6
  378. data/lib/wx/doc/gen/tool_bar.rb +141 -25
  379. data/lib/wx/doc/gen/tool_tip.rb +41 -5
  380. data/lib/wx/doc/gen/toolbook.rb +6 -4
  381. data/lib/wx/doc/gen/top_level_window.rb +100 -23
  382. data/lib/wx/doc/gen/tree_ctrl.rb +89 -16
  383. data/lib/wx/doc/gen/tree_event.rb +9 -4
  384. data/lib/wx/doc/gen/treebook.rb +16 -4
  385. data/lib/wx/doc/gen/ui_action_simulator.rb +10 -2
  386. data/lib/wx/doc/gen/utils.rb +94 -7
  387. data/lib/wx/doc/gen/v_list_box.rb +27 -2
  388. data/lib/wx/doc/gen/v_scrolled_window.rb +21 -4
  389. data/lib/wx/doc/gen/validator.rb +10 -14
  390. data/lib/wx/doc/gen/variant.rb +7 -0
  391. data/lib/wx/doc/gen/window.rb +415 -57
  392. data/lib/wx/doc/gen/window_dc.rb +2 -1
  393. data/lib/wx/doc/gen/window_disabler.rb +6 -2
  394. data/lib/wx/doc/gen/with_images.rb +13 -2
  395. data/lib/wx/doc/gen/wizard.rb +22 -4
  396. data/lib/wx/doc/gen/wizard_event.rb +5 -4
  397. data/lib/wx/doc/gen/wizard_page.rb +7 -2
  398. data/lib/wx/doc/gen/wizard_page_simple.rb +5 -1
  399. data/lib/wx/doc/gen/wrap_sizer.rb +5 -1
  400. data/lib/wx/doc/gen/xml_node.rb +33 -4
  401. data/lib/wx/doc/gen/xml_resource.rb +40 -5
  402. data/lib/wx/doc/generic_validator.rb +95 -0
  403. data/lib/wx/doc/graphics_context.rb +1 -0
  404. data/lib/wx/doc/grid/grid.rb +22 -1
  405. data/lib/wx/doc/help_controller.rb +11 -7
  406. data/lib/wx/doc/html/html_help_controller.rb +12 -4
  407. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  408. data/lib/wx/doc/list_ctrl.rb +33 -29
  409. data/lib/wx/doc/menu.rb +20 -0
  410. data/lib/wx/doc/notebook.rb +21 -0
  411. data/lib/wx/doc/num_validator.rb +387 -0
  412. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  413. data/lib/wx/doc/pg/events.rb +13 -9
  414. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  415. data/lib/wx/doc/pg/pg_property.rb +18 -0
  416. data/lib/wx/doc/progress_dialog.rb +36 -32
  417. data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
  418. data/lib/wx/doc/prt/print_data.rb +13 -5
  419. data/lib/wx/doc/prt/print_dialog.rb +31 -23
  420. data/lib/wx/doc/prt/printer.rb +20 -12
  421. data/lib/wx/doc/radio_box.rb +19 -15
  422. data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
  423. data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
  424. data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
  425. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
  426. data/lib/wx/doc/region_iterator.rb +32 -28
  427. data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
  428. data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
  429. data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
  430. data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
  431. data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
  432. data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
  433. data/lib/wx/doc/sizer.rb +20 -0
  434. data/lib/wx/doc/static_bitmap.rb +25 -0
  435. data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
  436. data/lib/wx/doc/stream.rb +39 -35
  437. data/lib/wx/doc/system_settings.rb +30 -26
  438. data/lib/wx/doc/text_validator.rb +23 -9
  439. data/lib/wx/doc/textctrl.rb +16 -0
  440. data/lib/wx/doc/tree_ctrl.rb +95 -0
  441. data/lib/wx/doc/treebook.rb +9 -5
  442. data/lib/wx/doc/v_list_box.rb +9 -5
  443. data/lib/wx/doc/validator.rb +113 -0
  444. data/lib/wx/doc/variant.rb +164 -160
  445. data/lib/wx/doc/window.rb +87 -47
  446. data/lib/wx/doc/window_disabler.rb +10 -6
  447. data/lib/wx/grid/grid.rb +27 -4
  448. data/lib/wx/html/events/evt_list.rb +0 -10
  449. data/lib/wx/html/simple_html_listbox.rb +24 -91
  450. data/lib/wx/keyword_defs.rb +34 -2
  451. data/lib/wx/pg/pg_property.rb +22 -0
  452. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  453. data/lib/wx/rtc/require.rb +3 -0
  454. data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
  455. data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
  456. data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
  457. data/lib/wx/stc/require.rb +1 -0
  458. data/lib/wx/stc/styled_text_ctrl.rb +25 -0
  459. data/lib/wx/version.rb +1 -1
  460. data/lib/wxruby_aui.so +0 -0
  461. data/lib/wxruby_core.so +0 -0
  462. data/lib/wxruby_grid.so +0 -0
  463. data/lib/wxruby_html.so +0 -0
  464. data/lib/wxruby_pg.so +0 -0
  465. data/lib/wxruby_prt.so +0 -0
  466. data/lib/wxruby_rbn.so +0 -0
  467. data/lib/wxruby_rtc.so +0 -0
  468. data/lib/wxruby_stc.so +0 -0
  469. data/rakelib/lib/config/linux.rb +0 -3
  470. data/rakelib/lib/config/macosx.rb +2 -2
  471. data/rakelib/lib/config/mingw.rb +13 -1
  472. data/rakelib/lib/config/unixish.rb +1 -1
  473. data/rakelib/lib/config.rb +14 -4
  474. data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
  475. data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
  476. data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
  477. data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
  478. data/rakelib/yard/templates/default/tags/setup.rb +16 -0
  479. data/rakelib/yard/yard-custom-templates.rb +3 -0
  480. data/samples/aui/aui.rb +1237 -1233
  481. data/samples/calendar/calendar.rb +293 -289
  482. data/samples/controls/get_item_sample.rb +83 -79
  483. data/samples/controls/htlbox.rb +331 -327
  484. data/samples/dialogs/dialogs.rb +682 -694
  485. data/samples/dialogs/wizard.rb +52 -55
  486. data/samples/dragdrop/dragdrop.rb +146 -142
  487. data/samples/drawing/bitmap.rb +29 -26
  488. data/samples/drawing/bitmap_image.rb +84 -80
  489. data/samples/drawing/graphics_drawing.rb +209 -205
  490. data/samples/drawing/image_prt.rb +344 -340
  491. data/samples/drawing/maths_images.rb +18 -1
  492. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  493. data/samples/etc/caret.rb +306 -0
  494. data/samples/etc/miniframe.rb +65 -60
  495. data/samples/etc/sash.rb +109 -105
  496. data/samples/etc/scrollwin.rb +86 -80
  497. data/samples/etc/system_settings.rb +216 -209
  498. data/samples/event/activation.rb +72 -67
  499. data/samples/event/event.rb +160 -153
  500. data/samples/event/threaded.rb +8 -1
  501. data/samples/event/update_ui_event.rb +67 -60
  502. data/samples/grid/grid.rb +188 -181
  503. data/samples/grid/gridtablebase.rb +136 -129
  504. data/samples/html/html.rb +208 -204
  505. data/samples/mdi/mdi.rb +59 -54
  506. data/samples/minimal/minimal.rb +54 -51
  507. data/samples/minimal/nothing.rb +1 -0
  508. data/samples/printing/printing.rb +367 -377
  509. data/samples/printing/printing2.rb +203 -198
  510. data/samples/propgrid/propgrid.rb +2312 -2308
  511. data/samples/propgrid/propgrid_minimal.rb +57 -50
  512. data/samples/ribbon/ribbon.rb +780 -774
  513. data/samples/sampler/ext.rb +0 -33
  514. data/samples/sampler/sample.rb +4 -9
  515. data/samples/sampler.rb +1 -1
  516. data/samples/splash/splash.rb +118 -116
  517. data/samples/text/rich_textctrl.rb +207 -201
  518. data/samples/text/richtext.rb +1409 -1405
  519. data/samples/text/scintilla.rb +137 -128
  520. data/samples/text/textctrl.rb +89 -83
  521. data/samples/text/unicode.rb +175 -168
  522. data/samples/treectrl/treectrl.rb +1430 -1426
  523. data/samples/widgets/activityindicator.rb +95 -0
  524. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  525. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  526. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  527. data/samples/widgets/art/widgets/button.xpm +54 -0
  528. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  529. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  530. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  531. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  532. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  533. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  534. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  535. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  536. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  537. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  538. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  539. data/samples/widgets/art/widgets/header.xpm +54 -0
  540. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  541. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  542. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  543. data/samples/widgets/art/widgets/native.xpm +81 -0
  544. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  545. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  546. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  547. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  548. data/samples/widgets/art/widgets/slider.xpm +54 -0
  549. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  550. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  551. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  552. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  553. data/samples/widgets/art/widgets/text.xpm +54 -0
  554. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  555. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  556. data/samples/widgets/art/widgets/toucan.png +0 -0
  557. data/samples/widgets/bmpcombobox.rb +651 -0
  558. data/samples/widgets/button.rb +462 -0
  559. data/samples/widgets/checkbox.rb +211 -0
  560. data/samples/widgets/choice.rb +287 -0
  561. data/samples/widgets/clrpicker.rb +156 -0
  562. data/samples/widgets/combobox.rb +516 -0
  563. data/samples/widgets/datepick.rb +215 -0
  564. data/samples/widgets/dirctrl.rb +265 -0
  565. data/samples/widgets/dirpicker.rb +158 -0
  566. data/samples/widgets/editlbox.rb +122 -0
  567. data/samples/widgets/filectrl.rb +216 -0
  568. data/samples/widgets/filepicker.rb +214 -0
  569. data/samples/widgets/fontpicker.rb +135 -0
  570. data/samples/widgets/gauge.rb +311 -0
  571. data/samples/widgets/headerctrl.rb +236 -0
  572. data/samples/widgets/hyperlink.rb +203 -0
  573. data/samples/widgets/itemcontainer.rb +185 -0
  574. data/samples/widgets/listbox.rb +473 -0
  575. data/samples/widgets/notebook.rb +488 -0
  576. data/samples/widgets/odcombobox.rb +608 -0
  577. data/samples/widgets/radiobox.rb +328 -0
  578. data/samples/widgets/searchctrl.rb +159 -0
  579. data/samples/widgets/slider.rb +594 -0
  580. data/samples/widgets/spinbtn.rb +443 -0
  581. data/samples/widgets/statbmp.rb +130 -0
  582. data/samples/widgets/static.rb +436 -0
  583. data/samples/widgets/textctrl.rb +700 -0
  584. data/samples/widgets/timepick.rb +148 -0
  585. data/samples/widgets/tn_widgets.png +0 -0
  586. data/samples/widgets/toggle.rb +385 -0
  587. data/samples/widgets/widgets.rb +1233 -0
  588. data/samples/xrc/custom_xrc_sample.rb +47 -41
  589. data/samples/xrc/xrc_sample.rb +53 -47
  590. data/tests/media/beep_lo.wav +0 -0
  591. data/tests/test_event_handling.rb +52 -34
  592. data/tests/test_events.rb +7 -0
  593. data/tests/test_item_data.rb +24 -0
  594. data/tests/test_list_ctrl.rb +1 -1
  595. data/tests/test_media_ctrl.rb +38 -0
  596. data/tests/test_menu.rb +69 -0
  597. data/tests/test_pg.rb +27 -0
  598. data/tests/test_richtext.rb +45 -0
  599. data/tests/test_sizer.rb +59 -0
  600. data/tests/test_std_controls.rb +42 -1
  601. data/tests/test_styled_text_ctrl.rb +46 -0
  602. data/tests/test_tree_ctrl.rb +138 -0
  603. data/tests/test_validators.rb +805 -0
  604. data/tests/test_window.rb +12 -0
  605. data/tests/testapp_noframe.rb +1 -1
  606. metadata +113 -138
  607. data/lib/wx/core/choice.rb +0 -14
  608. data/lib/wx/core/combo_ctrl.rb +0 -110
  609. data/samples/bigdemo/About.rbw +0 -39
  610. data/samples/bigdemo/ColorPanel.rbw +0 -23
  611. data/samples/bigdemo/GridSimple.rbw +0 -78
  612. data/samples/bigdemo/MDIDemo.rbw +0 -57
  613. data/samples/bigdemo/PopupMenu.rbw +0 -146
  614. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  615. data/samples/bigdemo/Sizers.rbw +0 -541
  616. data/samples/bigdemo/bigdemo.rb +0 -817
  617. data/samples/bigdemo/demoTemplate.rbw +0 -33
  618. data/samples/bigdemo/helpfile.htb +0 -0
  619. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  620. data/samples/bigdemo/icons/Test 015.png +0 -0
  621. data/samples/bigdemo/icons/choice.bmp +0 -0
  622. data/samples/bigdemo/icons/combo.bmp +0 -0
  623. data/samples/bigdemo/icons/combo.xpm +0 -27
  624. data/samples/bigdemo/icons/copy.xpm +0 -25
  625. data/samples/bigdemo/icons/cut.xpm +0 -24
  626. data/samples/bigdemo/icons/gauge.bmp +0 -0
  627. data/samples/bigdemo/icons/gauge.xpm +0 -27
  628. data/samples/bigdemo/icons/help.xpm +0 -25
  629. data/samples/bigdemo/icons/list.bmp +0 -0
  630. data/samples/bigdemo/icons/list.xpm +0 -27
  631. data/samples/bigdemo/icons/mondrian.ico +0 -0
  632. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  633. data/samples/bigdemo/icons/new.xpm +0 -24
  634. data/samples/bigdemo/icons/ogl.ico +0 -0
  635. data/samples/bigdemo/icons/ogl.xpm +0 -45
  636. data/samples/bigdemo/icons/open.xpm +0 -26
  637. data/samples/bigdemo/icons/paste.bmp +0 -0
  638. data/samples/bigdemo/icons/paste.xpm +0 -38
  639. data/samples/bigdemo/icons/pointy.png +0 -0
  640. data/samples/bigdemo/icons/preview.xpm +0 -26
  641. data/samples/bigdemo/icons/print.xpm +0 -26
  642. data/samples/bigdemo/icons/radio.bmp +0 -0
  643. data/samples/bigdemo/icons/radio.xpm +0 -27
  644. data/samples/bigdemo/icons/robert.xpm +0 -415
  645. data/samples/bigdemo/icons/sashtest.ico +0 -0
  646. data/samples/bigdemo/icons/save.xpm +0 -25
  647. data/samples/bigdemo/icons/smiles.bmp +0 -0
  648. data/samples/bigdemo/icons/smiles.xpm +0 -39
  649. data/samples/bigdemo/icons/smiley.ico +0 -0
  650. data/samples/bigdemo/icons/smiley.xpm +0 -42
  651. data/samples/bigdemo/icons/stattext.xpm +0 -24
  652. data/samples/bigdemo/icons/test2.bmp +0 -0
  653. data/samples/bigdemo/icons/test2.png +0 -0
  654. data/samples/bigdemo/icons/test2.xpm +0 -79
  655. data/samples/bigdemo/icons/text.bmp +0 -0
  656. data/samples/bigdemo/icons/text.xpm +0 -27
  657. data/samples/bigdemo/icons/tog1.bmp +0 -0
  658. data/samples/bigdemo/icons/tog1.xpm +0 -38
  659. data/samples/bigdemo/icons/tog2.bmp +0 -0
  660. data/samples/bigdemo/icons/tog2.xpm +0 -38
  661. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  662. data/samples/bigdemo/icons/wxwin.ico +0 -0
  663. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  664. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  665. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  666. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  667. data/samples/bigdemo/run.rb +0 -98
  668. data/samples/bigdemo/tips.txt +0 -7
  669. data/samples/bigdemo/utils.rb +0 -20
  670. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  671. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  672. data/samples/bigdemo/wxButton.rbw +0 -64
  673. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  674. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  675. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  676. data/samples/bigdemo/wxChoice.rbw +0 -47
  677. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  678. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  679. data/samples/bigdemo/wxComboBox.rbw +0 -77
  680. data/samples/bigdemo/wxCursor.rbw +0 -136
  681. data/samples/bigdemo/wxDialog.rbw +0 -74
  682. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  683. data/samples/bigdemo/wxDragImage.rbw +0 -70
  684. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  685. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  686. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  687. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  688. data/samples/bigdemo/wxFrame.rbw +0 -53
  689. data/samples/bigdemo/wxGauge.rbw +0 -65
  690. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  691. data/samples/bigdemo/wxGrid.rbw +0 -66
  692. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  693. data/samples/bigdemo/wxListBox.rbw +0 -140
  694. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  695. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  696. data/samples/bigdemo/wxMenu.rbw +0 -247
  697. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  698. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  699. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  700. data/samples/bigdemo/wxNotebook.rbw +0 -136
  701. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  702. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  703. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  704. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  705. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  706. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  707. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  708. data/samples/bigdemo/wxSlider.rbw +0 -42
  709. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  710. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  711. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  712. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  713. data/samples/bigdemo/wxStaticText.rbw +0 -55
  714. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  715. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  716. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  717. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  718. data/samples/bigdemo/wxToolBar.rbw +0 -131
  719. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  720. data/samples/caret/caret.rb +0 -298
  721. data/samples/caret/mondrian.xpm +0 -44
  722. data/samples/controls/books.rb +0 -189
  723. data/samples/controls/choice.xpm +0 -27
  724. data/samples/controls/combo.xpm +0 -27
  725. data/samples/controls/controls.rb +0 -1099
  726. data/samples/controls/gauge.xpm +0 -27
  727. data/samples/controls/list.xpm +0 -27
  728. data/samples/controls/mondrian.ico +0 -0
  729. data/samples/controls/mondrian.xpm +0 -44
  730. data/samples/controls/radio.xpm +0 -27
  731. data/samples/controls/stattext.xpm +0 -24
  732. data/samples/controls/test2.bmp +0 -0
  733. data/samples/controls/text.xpm +0 -27
  734. data/samples/controls/tn_books.png +0 -0
  735. data/samples/controls/tn_controls.png +0 -0
  736. data/samples/etc/choice.rb +0 -87
  737. data/samples/etc/tn_choice.png +0 -0
  738. data/samples/text/mondrian.ico +0 -0
  739. data/samples/text/mondrian.xpm +0 -44
  740. /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -0,0 +1,1233 @@
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 'wx'
9
+
10
+ module Widgets
11
+
12
+ if Wx.has_feature?(:USE_TREEBOOK)
13
+ BookCtrl = Wx::Treebook
14
+ elsif Wx.has_feature?(:USE_NOTEBOOK)
15
+ BookCtrl = Wx::Notebook
16
+ else
17
+ BookCtrl = Wx::Choicebook
18
+ end
19
+
20
+ ICON_SIZE = 16
21
+
22
+ NATIVE_PAGE = 0
23
+ GENERIC_PAGE = 1
24
+ PICKER_PAGE = 2
25
+ COMBO_PAGE = 3
26
+ WITH_ITEMS_PAGE = 4
27
+ EDITABLE_PAGE = 5
28
+ BOOK_PAGE = 6
29
+ ALL_PAGE = 7
30
+ MAX_PAGES = 8
31
+
32
+ NATIVE_CTRLS = 1 << NATIVE_PAGE
33
+ GENERIC_CTRLS = 1 << GENERIC_PAGE
34
+ PICKER_CTRLS = 1 << PICKER_PAGE
35
+ COMBO_CTRLS = 1 << COMBO_PAGE
36
+ WITH_ITEMS_CTRLS = 1 << WITH_ITEMS_PAGE
37
+ EDITABLE_CTRLS = 1 << EDITABLE_PAGE
38
+ BOOK_CTRLS = 1 << BOOK_PAGE
39
+ ALL_CTRLS = 1 << ALL_PAGE
40
+
41
+ class Attributes
42
+
43
+ attr_accessor :tool_tip if Wx.has_feature?(:USE_TOOLTIPS)
44
+ attr_accessor :font if Wx.has_feature?(:USE_FONTDLG)
45
+ attr_accessor :col_fg, :col_bg, :col_page_bg
46
+ attr_accessor :enabled, :show, :dir, :variant, :cursor, :default_flags
47
+
48
+ def initialize
49
+ @tool_tip = 'This is a tooltip'
50
+ @enabled = true
51
+ @show = true
52
+ @dir = Wx::LayoutDirection::Layout_Default
53
+ @variant = Wx::WindowVariant::WINDOW_VARIANT_NORMAL
54
+ @cursor = Wx::NULL_CURSOR
55
+ @default_flags = Wx::Border::BORDER_DEFAULT
56
+ end
57
+
58
+ end
59
+
60
+ class Page < Wx::Panel
61
+
62
+ ATTRS = Attributes.new
63
+
64
+ def initialize(book, images, icon)
65
+ super(book, Wx::ID_ANY, style: Wx::CLIP_CHILDREN | Wx::TAB_TRAVERSAL)
66
+ images << Wx.Image(icon).scale(ICON_SIZE, ICON_SIZE).to_bitmap
67
+ end
68
+
69
+ # return the control shown by this page
70
+ def get_widget
71
+ nil
72
+ end
73
+
74
+ # return the control shown by this page, if it supports text entry interface
75
+ def get_text_entry
76
+ nil
77
+ end
78
+
79
+ # lazy creation of the content
80
+ def create_content
81
+ ::Kernel.raise NotImplementedError
82
+ end
83
+
84
+ # some pages show additional controls, in this case override this one to
85
+ # return all of them (including the one returned by GetWidget())
86
+ def get_widgets
87
+ [get_widget]
88
+ end
89
+
90
+ # recreate the control shown by this page
91
+ #
92
+ # this is currently used only to take into account the border flags
93
+ def recreate_widget
94
+ ::Kernel.raise NotImplementedError
95
+ end
96
+
97
+ # apply current attributes to the widget(s)
98
+ def set_up_widget
99
+ widgets = get_widgets
100
+
101
+ widgets.each do |widget|
102
+ ::Kernel.raise 'nil widget' if widget.nil?
103
+
104
+ if Wx.has_feature?(:USE_TOOLTIPS)
105
+ widget.set_tool_tip(get_attrs.tool_tip)
106
+ end # wxUSE_TOOLTIPS
107
+ if Wx.has_feature?(:USE_FONTDLG)
108
+ widget.set_font(get_attrs.font) if get_attrs.font&.ok?
109
+ end # wxUSE_FONTDLG
110
+
111
+ widget.set_foreground_colour(get_attrs.col_fg) if get_attrs.col_fg&.ok?
112
+ widget.set_background_colour(get_attrs.col_bg) if get_attrs.col_bg&.ok?
113
+
114
+ widget.set_layout_direction(get_attrs.dir) if get_attrs.dir != Wx::LayoutDirection::Layout_Default
115
+
116
+ widget.enable(get_attrs.enabled)
117
+ widget.show(get_attrs.show)
118
+
119
+ widget.set_cursor(get_attrs.cursor)
120
+
121
+ widget.set_window_variant(get_attrs.variant)
122
+
123
+ widget.refresh
124
+ end
125
+
126
+ if get_attrs.col_page_bg&.ok?
127
+ set_background_colour(get_attrs.col_page_bg)
128
+ refresh
129
+ end
130
+ end
131
+
132
+ # the default attributes for the widget
133
+ def get_attrs
134
+ Page::ATTRS
135
+ end
136
+
137
+ # return true if we're showing logs in the log window (always the case
138
+ # except during startup and shutdown)
139
+ def self.is_using_log_window
140
+ Wx.get_app.is_using_log_window
141
+ end
142
+
143
+ protected
144
+
145
+ # several helper functions for page creation
146
+
147
+ # create a horz sizer containing the given control and the text ctrl
148
+ # (pointer to which will be returned next to sizer)
149
+ # with the specified id
150
+ def create_sizer_with_text(control, id = Wx::ID_ANY)
151
+ sizerRow = Wx::HBoxSizer.new
152
+ text = Wx::TextCtrl.new(control.parent, id, style: Wx::TE_PROCESS_ENTER)
153
+
154
+ sizerRow.add(control, Wx::SizerFlags.new(0).border(Wx::RIGHT).centre_vertical)
155
+ sizerRow.add(text, Wx::SizerFlags.new(1).border(Wx::LEFT).centre_vertical)
156
+
157
+ [sizerRow, text]
158
+ end
159
+
160
+ # create a sizer containing a label and a text ctrl
161
+ def create_sizer_with_text_and_label(label, id = Wx::ID_ANY, statBoxParent = nil)
162
+ create_sizer_with_text(Wx::StaticText.new(statBoxParent ? statBoxParent: self, Wx::ID_ANY, label), id)
163
+ end
164
+
165
+ # create a sizer containing a button and a text ctrl
166
+ def create_sizer_with_text_and_button(idBtn, labelBtn, id = Wx::ID_ANY, statBoxParent = nil)
167
+ create_sizer_with_text(Wx::Button.new(statBoxParent ? statBoxParent: self, idBtn, labelBtn), id)
168
+ end
169
+
170
+ # create a checkbox and add it to the sizer
171
+ def create_check_box_and_add_to_sizer(sizer, label, id = Wx::ID_ANY, statBoxParent = nil)
172
+ checkbox = Wx::CheckBox.new(statBoxParent ? statBoxParent: self, id, label)
173
+ sizer.add(checkbox, Wx::SizerFlags.new.horz_border)
174
+ sizer.add_spacer(2)
175
+
176
+ checkbox
177
+ end
178
+
179
+ class << self
180
+ # the list containing info about all pages
181
+ def widget_pages
182
+ @widget_pages ||= []
183
+ end
184
+ end
185
+ end
186
+
187
+ class PageInfo
188
+
189
+ # our ctor
190
+ def initialize(klass, label, categories = 0)
191
+ @klass = klass
192
+ @label = label
193
+ @categories = Widgets::ALL_CTRLS | categories
194
+ # dummy sorting: add and immediately sort in the list according to label
195
+ if Page.widget_pages.empty? || (pg_gt = Page.widget_pages.bsearch_index { |p| p.label > @label }).nil?
196
+ # add when first (or 'largest' label)
197
+ Page.widget_pages << self
198
+ else
199
+ Page.widget_pages.insert(pg_gt, self)
200
+ end
201
+ end
202
+
203
+ def create(book, images)
204
+ @klass.new(book, images)
205
+ end
206
+
207
+ # the label of the page
208
+ attr_reader :label
209
+
210
+ # the list (flags) for sharing page between categories
211
+ attr_reader :categories
212
+
213
+ # the class of this page
214
+ attr_reader :klass
215
+ end
216
+
217
+ if Wx.has_feature?(:USE_LOG)
218
+ # A log target which just redirects the messages to a listbox
219
+ class LboxLogger < Wx::Log
220
+
221
+ def initialize(lbox, logOld)
222
+ super()
223
+ @lbox = lbox
224
+ #@lbox->Disable() -- looks ugly under MSW
225
+ @logOld = logOld
226
+ end
227
+
228
+ def reset
229
+ Wx::Log.set_active_target(@logOld)
230
+ end
231
+
232
+ protected
233
+
234
+ # implement sink functions
235
+
236
+ def do_log_record(level, msg, info)
237
+ if level == Wx::LOG_Trace
238
+ @logOld.log_record(level, msg, info) if @logOld
239
+ else
240
+ super
241
+ end
242
+ end
243
+
244
+ def do_log_text_at_level(level, msg)
245
+ # if Wx.has_feature?(:WXUNIVERSAL)
246
+ # @lbox.append_and_ensure_visible(msg)
247
+ # else # other ports don't have this method yet
248
+ @lbox.append(msg)
249
+ @lbox.set_first_item(@lbox.count - 1)
250
+ # end
251
+ end
252
+
253
+ end
254
+ end # USE_LOG
255
+
256
+ Categories = [
257
+ # if Wx.has_feature?(:WXUNIVERSAL)
258
+ # 'Universal'
259
+ # else
260
+ 'Native',
261
+ # end,
262
+ 'Generic',
263
+ 'Pickers',
264
+ 'Comboboxes',
265
+ 'With items',
266
+ 'Editable',
267
+ 'Books',
268
+ 'All controls'
269
+ ]
270
+
271
+ class Frame < Wx::Frame
272
+
273
+ module ID
274
+ include Wx::IDHelper
275
+
276
+ Widgets_ClearLog = self.next_id
277
+ Widgets_Quit = self.next_id
278
+
279
+ Widgets_BookCtrl = self.next_id
280
+
281
+ if Wx.has_feature?(:USE_TOOLTIPS)
282
+ Widgets_SetTooltip = self.next_id
283
+ end # wxUSE_TOOLTIPS
284
+ Widgets_SetFgColour = self.next_id
285
+ Widgets_SetBgColour = self.next_id
286
+ Widgets_SetPageBg = self.next_id
287
+ Widgets_SetFont = self.next_id
288
+ Widgets_Enable = self.next_id
289
+ Widgets_Show = self.next_id
290
+
291
+ Widgets_BorderNone = self.next_id
292
+ Widgets_BorderStatic = self.next_id
293
+ Widgets_BorderSimple = self.next_id
294
+ Widgets_BorderRaised = self.next_id
295
+ Widgets_BorderSunken = self.next_id
296
+ Widgets_BorderDouble = self.next_id
297
+ Widgets_BorderDefault = self.next_id
298
+
299
+ Widgets_VariantNormal = self.next_id
300
+ Widgets_VariantSmall = self.next_id
301
+ Widgets_VariantMini = self.next_id
302
+ Widgets_VariantLarge = self.next_id
303
+
304
+ Widgets_LayoutDirection = self.next_id
305
+
306
+ Widgets_GlobalBusyCursor = self.next_id
307
+ Widgets_BusyCursor = self.next_id
308
+
309
+ Widgets_GoToPage = self.next_id
310
+ Widgets_GoToPageLast = self.next_id(Widgets_GoToPage + 100)
311
+
312
+
313
+ TextEntry_Begin = self.next_id
314
+ TextEntry_DisableAutoComplete = TextEntry_Begin
315
+ TextEntry_AutoCompleteFixed = self.next_id
316
+ TextEntry_AutoCompleteFilenames = self.next_id
317
+ TextEntry_AutoCompleteDirectories = self.next_id
318
+ TextEntry_AutoCompleteCustom = self.next_id
319
+ TextEntry_AutoCompleteKeyLength = self.next_id
320
+
321
+ TextEntry_SetHint = self.next_id
322
+ TextEntry_End = self.next_id
323
+
324
+ Last = self.next_id
325
+ end
326
+
327
+ def initialize(title)
328
+ super(nil, Wx::ID_ANY, title)
329
+
330
+ set_icon(Wx.Icon(:sample, art_path: File.dirname(__dir__)))
331
+
332
+ # init everything
333
+ if Wx.has_feature?(:USE_LOG)
334
+ @lboxLog = nil
335
+ @logTarget = nil
336
+ end # USE_LOG
337
+ @book = nil
338
+
339
+ if Wx.has_feature?(:USE_MENUS)
340
+ # create the menubar
341
+ mbar = Wx::MenuBar.new
342
+ menuWidget = Wx::Menu.new
343
+ if Wx.has_feature?(:USE_TOOLTIPS)
344
+ menuWidget.append(ID::Widgets_SetTooltip, "Set &tooltip...\tCtrl-T")
345
+ menuWidget.append_separator
346
+ end # wxUSE_TOOLTIPS
347
+ menuWidget.append(ID::Widgets_SetFgColour, "Set &foreground...\tCtrl-F")
348
+ menuWidget.append(ID::Widgets_SetBgColour, "Set &background...\tCtrl-B")
349
+ menuWidget.append(ID::Widgets_SetPageBg, "Set &page background...\tShift-Ctrl-B")
350
+ menuWidget.append(ID::Widgets_SetFont, "Set f&ont...\tCtrl-O")
351
+ menuWidget.append_check_item(ID::Widgets_Enable, "&Enable/disable\tCtrl-E")
352
+ menuWidget.append_check_item(ID::Widgets_Show, "Show/Hide")
353
+
354
+ menuBorders = Wx::Menu.new
355
+ menuBorders.append_radio_item(ID::Widgets_BorderDefault, "De&fault\tCtrl-Shift-9")
356
+ menuBorders.append_radio_item(ID::Widgets_BorderNone, "&None\tCtrl-Shift-0")
357
+ menuBorders.append_radio_item(ID::Widgets_BorderSimple, "&Simple\tCtrl-Shift-1")
358
+ menuBorders.append_radio_item(ID::Widgets_BorderDouble, "&Double\tCtrl-Shift-2")
359
+ menuBorders.append_radio_item(ID::Widgets_BorderStatic, "Stati&c\tCtrl-Shift-3")
360
+ menuBorders.append_radio_item(ID::Widgets_BorderRaised, "&Raised\tCtrl-Shift-4")
361
+ menuBorders.append_radio_item(ID::Widgets_BorderSunken, "S&unken\tCtrl-Shift-5")
362
+ menuWidget.append_sub_menu(menuBorders, "Set &border")
363
+
364
+ menuVariants = Wx::Menu.new
365
+ menuVariants.append_radio_item(ID::Widgets_VariantMini, "&Mini\tCtrl-Shift-6")
366
+ menuVariants.append_radio_item(ID::Widgets_VariantSmall, "&Small\tCtrl-Shift-7")
367
+ menuVariants.append_radio_item(ID::Widgets_VariantNormal, "&Normal\tCtrl-Shift-8")
368
+ menuVariants.append_radio_item(ID::Widgets_VariantLarge, "&Large\tCtrl-Shift-9")
369
+ menuWidget.append_sub_menu(menuVariants, "Set &variant")
370
+
371
+ menuWidget.append_separator
372
+ menuWidget.append_check_item(ID::Widgets_LayoutDirection,
373
+ "Toggle &layout direction\tCtrl-L")
374
+ menuWidget.check(ID::Widgets_LayoutDirection,
375
+ get_layout_direction == Wx::LayoutDirection::Layout_RightToLeft)
376
+
377
+ menuWidget.append_separator
378
+ menuWidget.append_check_item(ID::Widgets_GlobalBusyCursor,
379
+ "Toggle &global busy cursor\tCtrl-Shift-U")
380
+ menuWidget.append_check_item(ID::Widgets_BusyCursor,
381
+ "Toggle b&usy cursor\tCtrl-U")
382
+
383
+ menuWidget.append_separator
384
+ menuWidget.append(Wx::ID_EXIT, "&Quit\tCtrl-Q")
385
+ mbar.append(menuWidget, "&Widget")
386
+
387
+ menuTextEntry = Wx::Menu.new
388
+ menuTextEntry.append_radio_item(ID::TextEntry_DisableAutoComplete,
389
+ "&Disable auto-completion")
390
+ menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteFixed,
391
+ "Fixed-&list auto-completion")
392
+ menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteFilenames,
393
+ "&Files names auto-completion")
394
+ menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteDirectories,
395
+ "&Directories names auto-completion")
396
+ menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteCustom,
397
+ "&Custom auto-completion")
398
+ menuTextEntry.append_radio_item(ID::TextEntry_AutoCompleteKeyLength,
399
+ "Custom with &min length")
400
+ menuTextEntry.append_separator
401
+ menuTextEntry.append(ID::TextEntry_SetHint, "Set help &hint")
402
+
403
+ mbar.append(menuTextEntry, "&Text")
404
+
405
+ set_menu_bar(mbar)
406
+
407
+ mbar.check(ID::Widgets_Enable, true)
408
+ mbar.check(ID::Widgets_Show, true)
409
+
410
+ mbar.check(ID::Widgets_VariantNormal, true)
411
+ end # wxUSE_MENUS
412
+
413
+ # create controls
414
+ @panel = Wx::Panel.new(self)
415
+
416
+ sizerTop = Wx::VBoxSizer.new
417
+
418
+ # we have 2 panes: book with pages demonstrating the controls in the
419
+ # upper one and the log window with some buttons in the lower
420
+
421
+ style = Wx::BK_DEFAULT
422
+ # Uncomment to suppress page theme (draw in solid colour)
423
+ #style |= Wx::NB_NOPAGETHEME
424
+
425
+ @book = Widgets::BookCtrl.new(@panel, ID::Widgets_BookCtrl,
426
+ style: style, name: 'Widgets')
427
+
428
+ init_book
429
+
430
+ # the lower one only has the log listbox and a button to clear it
431
+ if Wx.has_feature?(:USE_LOG)
432
+ sizerDown = Wx::StaticBoxSizer.new(Wx::VERTICAL, @panel, '&Log window')
433
+ sizerDownBox = sizerDown.get_static_box
434
+
435
+ @lboxLog = Wx::ListBox.new(sizerDownBox)
436
+ sizerDown.add(@lboxLog, Wx::SizerFlags.new(1).expand.border)
437
+ sizerDown.set_min_size(100, 150)
438
+ else
439
+ sizerDown = Wx::VBoxSizer.new
440
+ end # USE_LOG
441
+
442
+ sizerBtns = Wx::HBoxSizer.new
443
+ if Wx.has_feature?(:USE_LOG)
444
+ btn = Wx::Button.new(sizerDownBox, ID::Widgets_ClearLog, 'Clear &log')
445
+ sizerBtns.add(btn)
446
+ sizerBtns.add_spacer(10)
447
+ end # USE_LOG
448
+ btn = Wx::Button.new(sizerDownBox, ID::Widgets_Quit, 'E&xit')
449
+ sizerBtns.add(btn)
450
+ sizerDown.add(sizerBtns, Wx::SizerFlags.new.border.right)
451
+
452
+ # put everything together
453
+ sizerTop.add(@book, Wx::SizerFlags.new(1).expand.double_border(Wx::ALL & ~(Wx::TOP | Wx::BOTTOM)))
454
+ sizerTop.add_spacer(5)
455
+ sizerTop.add(sizerDown, Wx::SizerFlags.new(0).expand.double_border(Wx::ALL & ~Wx::TOP))
456
+
457
+ @panel.set_sizer(sizerTop)
458
+
459
+ # TODO - review wxPersistenceManager
460
+ # sizeSet = wxPersistentRegisterAndRestore(this, "Main")
461
+
462
+ sizeMin = @panel.get_best_size
463
+ # if ( !sizeSet )
464
+ set_client_size(sizeMin)
465
+ set_min_client_size(sizeMin)
466
+
467
+ # connect the event handlers
468
+ if Wx.has_feature?(:USE_LOG)
469
+ evt_button(ID::Widgets_ClearLog, :on_button_clear_log)
470
+ end # USE_LOG
471
+ evt_button(ID::Widgets_Quit, :on_exit)
472
+
473
+ if Wx.has_feature?(:USE_TOOLTIPS)
474
+ evt_menu(ID::Widgets_SetTooltip, :on_set_tooltip)
475
+ end # wxUSE_TOOLTIPS
476
+
477
+ if Wx.has_feature?(:USE_TREEBOOK)
478
+ evt_treebook_page_changing(Wx::ID_ANY, :on_page_changing)
479
+ elsif Wx.has_feature?(:USE_NOTEBOOK)
480
+ evt_notebook_page_changing(Wx::ID_ANY, :on_page_changing)
481
+ else
482
+ evt_choicebook_page_changing(Wx::ID_ANY, :on_page_changing)
483
+ end
484
+ if Wx.has_feature?(:USE_MENUS)
485
+ evt_menu_range(ID::Widgets_GoToPage, ID::Widgets_GoToPageLast,
486
+ :on_go_to_page)
487
+
488
+ evt_menu(ID::Widgets_SetFgColour, :on_set_fg_col)
489
+ evt_menu(ID::Widgets_SetBgColour, :on_set_bg_col)
490
+ evt_menu(ID::Widgets_SetPageBg, :on_set_page_bg)
491
+ evt_menu(ID::Widgets_SetFont, :on_set_font)
492
+ evt_menu(ID::Widgets_Enable, :on_enable)
493
+ evt_menu(ID::Widgets_Show, :on_show)
494
+
495
+ evt_menu_range(ID::Widgets_BorderNone, ID::Widgets_BorderDefault,
496
+ :on_set_border)
497
+
498
+ evt_menu_range(ID::Widgets_VariantNormal, ID::Widgets_VariantLarge,
499
+ :on_set_variant)
500
+
501
+ evt_menu(ID::Widgets_LayoutDirection, :on_toggle_layout_direction)
502
+
503
+ evt_menu(ID::Widgets_GlobalBusyCursor, :on_toggle_global_busy_cursor)
504
+ evt_menu(ID::Widgets_BusyCursor, :on_toggle_busy_cursor)
505
+
506
+ evt_menu(ID::TextEntry_DisableAutoComplete, :on_disable_auto_complete)
507
+ evt_menu(ID::TextEntry_AutoCompleteFixed, :on_auto_complete_fixed)
508
+ evt_menu(ID::TextEntry_AutoCompleteFilenames, :on_auto_complete_filenames)
509
+ evt_menu(ID::TextEntry_AutoCompleteDirectories, :on_auto_complete_directories)
510
+ evt_menu(ID::TextEntry_AutoCompleteCustom, :on_auto_complete_custom)
511
+ evt_menu(ID::TextEntry_AutoCompleteKeyLength, :on_auto_complete_key_length)
512
+
513
+ evt_menu(ID::TextEntry_SetHint, :on_set_hint)
514
+
515
+ evt_update_ui_range(ID::TextEntry_Begin, ID::TextEntry_End - 1,
516
+ :on_update_text_ui)
517
+
518
+ evt_menu(Wx::ID_EXIT, :on_exit)
519
+ end # wxUSE_MENUS
520
+
521
+ if Wx.has_feature?(:USE_LOG)
522
+ # now that everything is created we can redirect the log messages to the
523
+ # listbox
524
+ @logTarget = LboxLogger.new(@lboxLog, Wx::Log.get_active_target)
525
+ Wx::Log.set_active_target(@logTarget)
526
+ end
527
+ end
528
+
529
+ protected
530
+
531
+ if Wx.has_feature?(:USE_LOG)
532
+ def on_button_clear_log(_event)
533
+ @lboxLog.clear
534
+ end
535
+ end # USE_LOG
536
+
537
+ def on_exit(_event)
538
+ @logTarget.reset if @logTarget
539
+ @logTarget = nil
540
+ close
541
+ end
542
+
543
+ if Wx.has_feature?(:USE_MENUS)
544
+
545
+ def on_page_changing(event)
546
+ if Wx.has_feature?(:USE_TREEBOOK)
547
+ # don't allow selection of entries without pages (categories)
548
+ event.veto unless @book.get_page(event.selection)
549
+ end
550
+ end
551
+
552
+ def on_page_changed(event)
553
+ sel = event.selection
554
+
555
+ # adjust "Page" menu selection
556
+ item, _ = get_menu_bar.find_item(ID::Widgets_GoToPage + sel)
557
+ item.check if item
558
+
559
+ get_menu_bar.check(ID::Widgets_BusyCursor, false)
560
+
561
+ # create the pages on demand, otherwise the sample startup is too slow as
562
+ # it creates hundreds of controls
563
+ curPage = current_page
564
+ if curPage.get_children.empty?
565
+ Wx::WindowUpdateLocker.update(curPage) do
566
+ curPage.create_content
567
+ curPage.layout
568
+
569
+ connect_to_widget_events
570
+ end
571
+ end
572
+
573
+ # re-apply the attributes to the widget(s)
574
+ curPage.set_up_widget
575
+
576
+ event.skip
577
+ end
578
+
579
+ def on_go_to_page(event)
580
+ if Wx.has_feature?(:USE_TREEBOOK)
581
+ @book.set_selection(event.id - ID::Widgets_GoToPage)
582
+ else
583
+ @book.set_selection(@book.get_page_count-1)
584
+ book = @book.get_current_page
585
+ book.set_selection(event.id - ID::Widgets_GoToPage)
586
+ end
587
+ end
588
+
589
+ if Wx.has_feature?(:USE_TOOLTIPS)
590
+ def on_set_tooltip(_event)
591
+ Wx.TextEntryDialog(self,
592
+ 'Tooltip text (may use \\n, leave empty to remove): ',
593
+ 'Widgets sample',
594
+ Page::ATTRS.tool_tip) do |dialog|
595
+ return if dialog.show_modal != Wx::ID_OK
596
+
597
+ Page::ATTRS.tool_tip = dialog.value
598
+ Page::ATTRS.tool_tip.gsub!("\\n", "\n")
599
+ end
600
+
601
+ current_page.set_up_widget
602
+ end
603
+ end # wxUSE_TOOLTIPS
604
+
605
+ # Trivial wrapper for wxGetColourFromUser() which also does something even if
606
+ # the colour dialog is not available in the current build (which may happen
607
+ # for the ports in development and it is still useful to see how colours work)
608
+ def get_colour_from_user(colDefault)
609
+ if Wx.has_feature?(:USE_COLOURDLG)
610
+ Wx.get_colour_from_user(self, colDefault)
611
+ else # !wxUSE_COLOURDLG
612
+ if colDefault == Wx::BLACK
613
+ Wx::WHITE
614
+ else
615
+ Wx::BLACK
616
+ end
617
+ end # wxUSE_COLOURDLG/!wxUSE_COLOURDLG
618
+ end
619
+
620
+ def on_set_fg_col(_event)
621
+ # allow for debugging the default colour the first time this is called
622
+ page = current_page
623
+
624
+ unless Page::ATTRS.col_fg&.ok?
625
+ Page::ATTRS.col_fg = page.get_foreground_colour
626
+ end
627
+
628
+ col = get_colour_from_user(Page::ATTRS.col_fg)
629
+ return unless col&.ok?
630
+
631
+ Page::ATTRS.col_fg = col
632
+
633
+ page.set_up_widget
634
+ end
635
+
636
+ def on_set_bg_col(_event)
637
+ # allow for debugging the default colour the first time this is called
638
+ page = current_page
639
+
640
+ unless Page::ATTRS.col_bg&.ok?
641
+ Page::ATTRS.col_bg = page.get_background_colour
642
+ end
643
+
644
+ col = get_colour_from_user(Page::ATTRS.col_bg)
645
+ return unless col&.ok?
646
+
647
+ Page::ATTRS.col_bg = col
648
+
649
+ page.set_up_widget
650
+ end
651
+
652
+ def on_set_page_bg(_event)
653
+ col = get_colour_from_user(get_background_colour)
654
+ return unless col&.ok?
655
+
656
+ Page::ATTRS.col_page_bg = col
657
+
658
+ current_page.set_up_widget
659
+ end
660
+
661
+ def on_set_font(_event)
662
+ if Wx.has_feature?(:USE_FONTDLG)
663
+ page = current_page
664
+
665
+ unless Page::ATTRS.font&.ok?
666
+ Page::ATTRS.font = page.get_font
667
+ end
668
+
669
+ font = Wx.get_font_from_user(self, Page::ATTRS.font)
670
+ return unless font&.ok?
671
+
672
+ Page::ATTRS.font = font
673
+
674
+ page.set_up_widget
675
+ # The best size of the widget could have changed after changing its font,
676
+ # so re-layout to show it correctly.
677
+ page.layout
678
+ else
679
+ Wx.log_message('Font selection dialog not available in current build.')
680
+ end
681
+ end
682
+
683
+ def on_enable(event)
684
+ Page::ATTRS.enabled = event.checked?
685
+
686
+ current_page.set_up_widget
687
+ end
688
+
689
+ def on_show(event)
690
+ Page::ATTRS.show = event.checked?
691
+
692
+ current_page.set_up_widget
693
+ end
694
+
695
+ def on_set_border(event)
696
+ case event.id
697
+ when ID::Widgets_BorderNone
698
+ border = Wx::BORDER_NONE
699
+ when ID::Widgets_BorderStatic
700
+ border = Wx::BORDER_STATIC
701
+ when ID::Widgets_BorderSimple
702
+ border = Wx::BORDER_SIMPLE
703
+ when ID::Widgets_BorderRaised
704
+ border = Wx::BORDER_RAISED
705
+ when ID::Widgets_BorderSunken
706
+ border = Wx::BORDER_SUNKEN
707
+ when ID::Widgets_BorderDouble
708
+ border = Wx::BORDER_DOUBLE
709
+ when ID::Widgets_BorderDefault
710
+ border = Wx::BORDER_DEFAULT
711
+ else
712
+ ::Kernel.raise RuntimeError, 'unknown border style'
713
+ end
714
+
715
+ Page::ATTRS.default_flags &= ~Wx::BORDER_MASK
716
+ Page::ATTRS.default_flags |= border
717
+
718
+ page = current_page
719
+
720
+ page.recreate_widget
721
+
722
+ connect_to_widget_events
723
+
724
+ # re-apply the attributes to the widget(s)
725
+ page.set_up_widget
726
+ end
727
+
728
+ def on_set_variant(event)
729
+ case event.id
730
+ when ID::Widgets_VariantSmall
731
+ v = Wx::WINDOW_VARIANT_SMALL
732
+ when ID::Widgets_VariantMini
733
+ v = Wx::WINDOW_VARIANT_MINI
734
+ when ID::Widgets_VariantLarge
735
+ v = Wx::WINDOW_VARIANT_LARGE
736
+ when ID::Widgets_VariantNormal
737
+ v = Wx::WINDOW_VARIANT_NORMAL
738
+ else
739
+ ::Kernel.raise RuntimeError, 'unknown window variant'
740
+ end
741
+
742
+ Page::ATTRS.variant = v
743
+
744
+ current_page.set_up_widget
745
+ current_page.layout
746
+ end
747
+
748
+ def on_toggle_layout_direction(_event)
749
+ dir = Page::ATTRS.dir
750
+ dir = get_layout_direction if dir == Wx::LayoutDirection::Layout_Default
751
+ Page::ATTRS.dir =
752
+ (dir == Wx::LayoutDirection::Layout_LeftToRight) ?
753
+ Wx::LayoutDirection::Layout_RightToLeft :
754
+ Wx::LayoutDirection::Layout_LeftToRight
755
+
756
+ current_page.set_up_widget
757
+ end
758
+
759
+ def on_toggle_global_busy_cursor(event)
760
+ if event.checked?
761
+ Wx.begin_busy_cursor
762
+ else
763
+ Wx.end_busy_cursor
764
+ end
765
+ end
766
+
767
+ def on_toggle_busy_cursor(event)
768
+ Page::ATTRS.cursor = event.checked? ? Wx::HOURGLASS_CURSOR : Wx::NULL_CURSOR
769
+
770
+ current_page.set_up_widget
771
+ end
772
+
773
+ # wxTextEntry-specific tests
774
+ def on_disable_auto_complete(_event)
775
+ unless (entry = current_page.get_text_entry)
776
+ Wx.log_error('menu item should be disabled')
777
+ return
778
+ end
779
+
780
+ if entry.auto_complete(nil)
781
+ Wx.log_message('Disabled auto completion.')
782
+ else
783
+ Wx.log_message('auto_complete() failed.')
784
+ end
785
+ end
786
+
787
+ def on_auto_complete_fixed(_event)
788
+ unless (entry = current_page.get_text_entry)
789
+ Wx.log_error('menu item should be disabled')
790
+ return
791
+ end
792
+
793
+ completion_choices = (?a..?z).collect { |c| c*2 }
794
+ completion_choices <<
795
+ 'is this string for test?' <<
796
+ 'this is a test string' <<
797
+ 'this is another test string' <<
798
+ 'this string is for test'
799
+
800
+ if entry.auto_complete(completion_choices)
801
+ Wx.log_message('Enabled auto completion of a set of fixed strings.')
802
+ else
803
+ Wx.log_message('auto_complete() failed.')
804
+ end
805
+ end
806
+
807
+ def on_auto_complete_filenames(_event)
808
+ unless (entry = current_page.get_text_entry)
809
+ Wx.log_error('menu item should be disabled')
810
+ return
811
+ end
812
+
813
+ if entry.auto_complete_file_names
814
+ Wx.log_message('Enabled auto completion of file names.')
815
+ else
816
+ Wx.log_message('auto_complete_file_names failed.')
817
+ end
818
+ end
819
+
820
+ def on_auto_complete_directories(_event)
821
+ unless (entry = current_page.get_text_entry)
822
+ Wx.log_error('menu item should be disabled')
823
+ return
824
+ end
825
+
826
+ if entry.auto_complete_directories
827
+ Wx.log_message('Enabled auto completion of directories.')
828
+ else
829
+ Wx.log_message('AutoCompleteDirectories() failed.')
830
+ end
831
+ end
832
+
833
+ def on_auto_complete_custom(_event)
834
+ do_use_custom_auto_complete
835
+ end
836
+
837
+ def on_auto_complete_key_length(_event)
838
+ message = "The auto-completion is triggered if and only if\n" +
839
+ "the length of the search key (prefix) is at least [LENGTH].\n" +
840
+ "Hint: 0 disables the length check completely."
841
+ prompt = 'Enter the minimum key length:'
842
+ caption = 'Minimum key length'
843
+
844
+ res = Wx.get_number_from_user(message, prompt, caption, 1, 0, 100, self)
845
+ return if res == -1
846
+
847
+ Wx.log_message("The minimum key length for autocomplete is #{res}.")
848
+
849
+ do_use_custom_auto_complete(res)
850
+ end
851
+
852
+ # This is a simple (and hence rather useless) example of a custom
853
+ # completer class that completes the first word (only) initially and only
854
+ # build the list of the possible second words once the first word is
855
+ # known. This allows to avoid building the full 676000 item list of
856
+ # possible strings all at once as the we have 1000 possibilities for the
857
+ # first word (000..999) and 676 (aa..zz) for the second one.
858
+ class CustomTextCompleter < Wx::TextCompleterSimple
859
+
860
+ def initialize(min_length)
861
+ super()
862
+ @min_length = min_length
863
+ end
864
+
865
+ def get_completions(prefix)
866
+ res = []
867
+ 1.times do
868
+ # Wait for enough text to be entered before proposing completions:
869
+ # this is done to avoid proposing too many of them when the
870
+ # control is empty, for example.
871
+ break if prefix.size < @min_length
872
+
873
+ # The only valid strings start with 3 digits so check for their
874
+ # presence proposing to complete the remaining ones.
875
+ break unless prefix.start_with?(/\d/)
876
+
877
+ if prefix.size == 1
878
+ 10.times { |i| 10.times { |j| res << "#{prefix}#{i}#{j}"} }
879
+ break
880
+ else
881
+ break unless (?0..?9).include?(prefix[1])
882
+ end
883
+
884
+ if prefix.size == 2
885
+ 10.times { |i| res << "#{prefix}#{i}" }
886
+ break
887
+ else
888
+ break unless (?0..?9).include?(prefix[2])
889
+ end
890
+
891
+ # Next we must have a space and two letters.
892
+ prefix2 = prefix.dup
893
+ if prefix.size == 3
894
+ prefix2 += ' '
895
+ elsif prefix[3] != ' '
896
+ break
897
+ end
898
+
899
+ if prefix2.size == 4
900
+ (?a..?z).each { |c| (?a..?z).each { |d| res << "#{prefix2}#{c}#{d}"} }
901
+ break
902
+ else
903
+ break unless (?a..?z).include?(prefix[4])
904
+ end
905
+
906
+ if prefix.size == 5
907
+ (?a..?z).each { |c| res << "#{prefix}#{c}" }
908
+ end
909
+ ensure
910
+ # This is used for illustrative purposes only and shows how many
911
+ # completions we return every time when we're called.
912
+ Wx.log_message("Returning #{res.size} possible completions for prefix \"#{prefix}\"")
913
+ end
914
+ res
915
+ end
916
+
917
+ end
918
+
919
+ def do_use_custom_auto_complete(min_length = 1)
920
+ unless (entry = current_page.get_text_entry)
921
+ Wx.log_error('menu item should be disabled')
922
+ return
923
+ end
924
+
925
+ if entry.auto_complete(CustomTextCompleter.new(min_length))
926
+ Wx.log_message('Enabled custom auto completer for "NNN XX" items ' +
927
+ '(where N is a digit and X is a letter).')
928
+ else
929
+ Wx.log_message('auto_complete() failed.')
930
+ end
931
+ end
932
+
933
+ class << self
934
+
935
+ def s_hint
936
+ @s_hint ||= 'Type here'
937
+ end
938
+
939
+ def s_hint=(v)
940
+ @s_hint = v
941
+ end
942
+
943
+ end
944
+
945
+ def on_set_hint(_event)
946
+ unless (entry = current_page.get_text_entry)
947
+ Wx.log_error('menu item should be disabled')
948
+ return
949
+ end
950
+
951
+ hint = Wx.get_text_from_user('Text hint:', 'Widgets sample', self.class.s_hint, self)
952
+ return if hint.empty?
953
+
954
+ self.class.s_hint = hint
955
+
956
+ if entry.set_hint(hint)
957
+ Wx.log_message("Set hint to \"#{hint}\".")
958
+ else
959
+ Wx.log_message('Text hints not supported.')
960
+ end
961
+ end
962
+
963
+ def on_update_text_ui(event)
964
+ event.enable( !current_page.get_text_entry.nil? )
965
+ end
966
+ end # wxUSE_MENUS
967
+
968
+ # initialize the book: add all pages to it
969
+ def init_book
970
+ images = []
971
+
972
+ img = Wx.Image(:sample, art_path: File.dirname(__dir__))
973
+ images << img.scale(ICON_SIZE, ICON_SIZE).to_bitmap
974
+
975
+ unless Wx.has_feature?(:USE_TREEBOOK)
976
+ books = []
977
+ end
978
+
979
+ pages = []
980
+ labels = []
981
+
982
+ menuPages = Wx::Menu.new
983
+ nPage = 0
984
+ imageId = 1
985
+
986
+ # we need to first create all pages and only then add them to the book
987
+ # as we need the image list first
988
+ #
989
+ # we also construct the pages menu during this first iteration
990
+ MAX_PAGES.times do |cat|
991
+ if Wx.has_feature?(:USE_TREEBOOK)
992
+ nPage += 1 # increase for parent page
993
+ else
994
+ books << BookCtrl.new(@book, style: Wx::BK_DEFAULT)
995
+ end
996
+
997
+ pages << []
998
+ labels << []
999
+ Page.widget_pages.each do |info|
1000
+ next if info.categories.nobits?(1 << cat)
1001
+
1002
+ page = info.create(
1003
+ if Wx.has_feature?(:USE_TREEBOOK)
1004
+ @book
1005
+ else
1006
+ books.last
1007
+ end,
1008
+ images)
1009
+ pages.last << page
1010
+
1011
+ labels.last << info.label
1012
+ if cat == ALL_PAGE
1013
+ menuPages.append_radio_item(
1014
+ ID::Widgets_GoToPage + nPage,
1015
+ info.label)
1016
+ unless Wx.has_feature?(:USE_TREEBOOK)
1017
+ # consider only for book in book architecture
1018
+ nPage += 1
1019
+ end
1020
+ end
1021
+
1022
+ if Wx.has_feature?(:USE_TREEBOOK)
1023
+ # consider only for treebook architecture (with subpages)
1024
+ nPage += 1
1025
+ end
1026
+ end
1027
+ end
1028
+
1029
+ self.menu_bar.append(menuPages, '&Page')
1030
+
1031
+ images.collect! { |img_| img_.is_a?(Wx::BitmapBundle) ? img_ : Wx::BitmapBundle.new(img_) }
1032
+ @book.set_images(images)
1033
+
1034
+ MAX_PAGES.times do |cat|
1035
+ if Wx.has_feature?(:USE_TREEBOOK)
1036
+ @book.add_page(nil, Categories[cat],false,0)
1037
+ else
1038
+ @book.add_page(books[cat], Categories[cat],false,0)
1039
+ books[cat].set_images(images)
1040
+ end
1041
+
1042
+ # now do add them
1043
+ pages[cat].size.times do |n|
1044
+ if Wx.has_feature?(:USE_TREEBOOK)
1045
+ @book.add_sub_page(
1046
+ pages[cat][n],
1047
+ labels[cat][n],
1048
+ false, # don't select
1049
+ imageId
1050
+ )
1051
+ else
1052
+ books[cat].add_page(
1053
+ pages[cat][n],
1054
+ labels[cat][n],
1055
+ false, # don't select
1056
+ imageId
1057
+ )
1058
+ end
1059
+ imageId += 1
1060
+ end
1061
+ end
1062
+
1063
+ if Wx.has_feature?(:USE_TREEBOOK)
1064
+ evt_treebook_page_changed(ID::Widgets_BookCtrl, :on_page_changed)
1065
+ elsif Wx.has_feature?(:USE_NOTEBOOK)
1066
+ evt_notebook_page_changed(ID::Widgets_BookCtrl, :on_page_changed)
1067
+ else
1068
+ evt_choicebook_page_changed(ID::Widgets_BookCtrl, :on_page_changed)
1069
+ end
1070
+
1071
+ # TODO - review wxPersistenceManager
1072
+ # const bool pageSet = wxPersistentRegisterAndRestore(m_book)
1073
+ pageSet = false
1074
+
1075
+ if Wx.has_feature?(:USE_TREEBOOK)
1076
+ # for treebook page #0 is empty parent page only so select the first page
1077
+ # with some contents
1078
+ @book.set_selection(1) if !pageSet || !@book.get_current_page
1079
+
1080
+ # but ensure that the top of the tree is shown nevertheless
1081
+ tree = @book.get_tree_ctrl
1082
+
1083
+ first_child, _ = tree.get_first_child(tree.root_item)
1084
+ tree.ensure_visible(first_child)
1085
+ else
1086
+ if !pageSet || !@book.get_current_page
1087
+ # for other books set selection twice to force connected event handler
1088
+ # to force lazy creation of initial visible content
1089
+ @book.set_selection(1)
1090
+ @book.set_selection(0)
1091
+ end
1092
+ end # USE_TREEBOOK
1093
+ end
1094
+
1095
+ # return the currently selected page (never null)
1096
+ def current_page
1097
+ page = @book.get_current_page
1098
+
1099
+ unless Wx.has_feature?(:USE_TREEBOOK)
1100
+ ::Kernel.raise 'no WidgetsBookCtrl?' unless page.is_a?(Wx::Treebook)
1101
+
1102
+ page = page.get_current_page
1103
+ end # !USE_TREEBOOK
1104
+
1105
+ page
1106
+ end
1107
+
1108
+ private
1109
+
1110
+ def on_widget_focus(event)
1111
+ # Don't show annoying message boxes when starting or closing the sample,
1112
+ # only log these events in our own logger.
1113
+ if Wx.get_app.is_using_log_window
1114
+ win = event.get_event_object
1115
+ Wx.log_message("Widget '#{win.class.name}' #{event.event_type == Wx::EVT_SET_FOCUS ? "got" : "lost"} focus")
1116
+ end
1117
+
1118
+ event.skip
1119
+ end
1120
+ def on_widget_context_menu(event)
1121
+ win = event.get_event_object
1122
+ Wx.log_message("Context menu event for #{win.class.name} at #{event.position.x}x#{event.position.y}")
1123
+
1124
+ event.skip
1125
+ end
1126
+
1127
+ def connect_to_widget_events
1128
+ widgets = current_page.get_widgets
1129
+
1130
+ widgets.each do |w|
1131
+ ::Kernel.raise RuntimeError, 'nil widget' unless w
1132
+
1133
+ w.evt_set_focus self.method(:on_widget_focus)
1134
+ w.evt_kill_focus self.method(:on_widget_focus)
1135
+
1136
+ w.evt_context_menu self.method(:on_widget_context_menu)
1137
+ end
1138
+ end
1139
+
1140
+ end
1141
+
1142
+ class App < Wx::App
1143
+ def initialize
1144
+ super
1145
+ if Wx.has_feature?(:USE_LOG)
1146
+ @logTarget = nil
1147
+ end
1148
+ end
1149
+
1150
+ # this one is called on application startup and is a good place for the app
1151
+ # initialization (doing it here and not in the ctor allows to have an error
1152
+ # return: if OnInit() returns false, the application terminates)
1153
+ def on_init
1154
+ set_vendor_name('wxWidgets_Samples')
1155
+
1156
+ # when running multiple copies of this sample side by side this is useful to see which one is which
1157
+ title = ''
1158
+ # if Wx.has_feature?(:WXUNIVERSAL)
1159
+ # title << "wxUniv/"
1160
+ # end
1161
+ title << Wx::PLATFORM
1162
+
1163
+ frame = Frame.new(title + ' widgets demo')
1164
+ frame.show
1165
+
1166
+ if Wx.has_feature?(:USE_LOG)
1167
+ @logTarget = Wx::Log.get_active_target
1168
+ end # USE_LOG
1169
+
1170
+ true
1171
+ end
1172
+
1173
+ # real implementation of WidgetsPage method with the same name
1174
+ def is_using_log_window
1175
+ Wx.has_feature?(:USE_LOG) && (Wx::Log.get_active_target == @logTarget)
1176
+ end
1177
+ end
1178
+
1179
+ end # module Widgets
1180
+
1181
+ require_relative './activityindicator' if Wx.has_feature?(:USE_ACTIVITYINDICATOR)
1182
+ require_relative './bmpcombobox' if Wx.has_feature?(:USE_BITMAPCOMBOBOX)
1183
+ require_relative './button' if Wx.has_feature?(:USE_BUTTON)
1184
+ require_relative './checkbox' if Wx.has_feature?(:USE_CHECKBOX)
1185
+ require_relative './choice' if Wx.has_feature?(:USE_CHOICE)
1186
+ require_relative './clrpicker' if Wx.has_feature?(:USE_COLOURPICKERCTRL) && Wx.has_feature?(:USE_COLOURDLG)
1187
+ require_relative './combobox' if Wx.has_feature?(:USE_COMBOBOX)
1188
+ require_relative './datepick' if Wx.has_feature?(:USE_DATEPICKCTRL)
1189
+ require_relative './dirctrl' if Wx.has_feature?(:USE_FILEDLG) || Wx.has_feature?(:USE_DIRDLG)
1190
+ require_relative './dirpicker' if Wx.has_feature?(:USE_DIRPICKERCTRL) && Wx.has_feature?(:USE_DIRDLG)
1191
+ require_relative './editlbox' if Wx.has_feature?(:USE_EDITABLELISTBOX)
1192
+ require_relative './filectrl' if Wx.has_feature?(:USE_FILECTRL)
1193
+ require_relative './filepicker' if Wx.has_feature?(:USE_FILEPICKERCTRL) && Wx.has_feature?(:USE_FILEDLG)
1194
+ require_relative './fontpicker' if Wx.has_feature?(:USE_FONTPICKERCTRL) && Wx.has_feature?(:USE_FONTDLG)
1195
+ require_relative './gauge' if Wx.has_feature?(:USE_GAUGE)
1196
+ require_relative './headerctrl'
1197
+ require_relative './hyperlink' if Wx.has_feature?(:USE_HYPERLINKCTRL)
1198
+ require_relative './listbox' if Wx.has_feature?(:USE_LISTBOX)
1199
+ require_relative './notebook' if Wx.has_feature?(:USE_NOTEBOOK) || Wx.has_feature?(:USE_LISTBOOK) || Wx.has_feature?(:USE_CHOICEBOOK)
1200
+ require_relative './odcombobox' if Wx.has_feature?(:USE_ODCOMBOBOX)
1201
+ require_relative './radiobox' if Wx.has_feature?(:USE_RADIOBOX)
1202
+ require_relative './searchctrl' if Wx.has_feature?(:USE_SEARCHCTRL)
1203
+ require_relative './slider' if Wx.has_feature?(:USE_SLIDER)
1204
+ require_relative './spinbtn' if Wx.has_feature?(:USE_SPINBTN)
1205
+ require_relative './statbmp' if Wx.has_feature?(:USE_STATBMP)
1206
+ require_relative './static'
1207
+ require_relative './timepick' if Wx.has_feature?(:USE_TIMEPICKCTRL)
1208
+ require_relative './toggle' if Wx.has_feature?(:USE_TOGGLEBTN)
1209
+ require_relative './textctrl'
1210
+
1211
+ module WidgetsSample
1212
+
1213
+ include WxRuby::Sample if defined? WxRuby::Sample
1214
+
1215
+ def self.describe
1216
+ { file: __FILE__,
1217
+ summary: 'wxRuby Widgets example.',
1218
+ description: <<~__DESC
1219
+ A Ruby port of the extensive wxWidgets widgets sample which showcases
1220
+ a wide selection of widgets (controls).
1221
+ __DESC
1222
+ }
1223
+ end
1224
+
1225
+ def self.run
1226
+ execute(__FILE__)
1227
+ end
1228
+
1229
+ if $0 == __FILE__
1230
+ Widgets::App.run
1231
+ end
1232
+
1233
+ end