wxruby3 0.9.0.pre.rc.2-x64-mingw-ucrt → 0.9.0.pre.rc.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 (341) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +30 -8
  3. data/README.md +3 -3
  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/event_loop.rb +7 -0
  20. data/lib/wx/core/image.rb +33 -0
  21. data/lib/wx/core/listctrl.rb +17 -13
  22. data/lib/wx/core/log.rb +90 -0
  23. data/lib/wx/doc/bitmap.rb +11 -15
  24. data/lib/wx/doc/event_loop.rb +7 -0
  25. data/lib/wx/doc/extra/00_starting.md +6 -6
  26. data/lib/wx/doc/extra/02_lifecycles.md +9 -8
  27. data/lib/wx/doc/extra/09_exceptions.md +1 -1
  28. data/lib/wx/doc/extra/11_drawing_and_dc.md +4 -4
  29. data/lib/wx/doc/font.rb +1 -1
  30. data/lib/wx/doc/functions.rb +51 -23
  31. data/lib/wx/doc/gc_dc.rb +1 -1
  32. data/lib/wx/doc/gen/about_dialog_info.rb +1 -1
  33. data/lib/wx/doc/gen/accelerator.rb +6 -6
  34. data/lib/wx/doc/gen/accessible.rb +6 -2
  35. data/lib/wx/doc/gen/activity_indicator.rb +5 -5
  36. data/lib/wx/doc/gen/animation.rb +7 -7
  37. data/lib/wx/doc/gen/animation_ctrl.rb +7 -6
  38. data/lib/wx/doc/gen/any_button.rb +1 -1
  39. data/lib/wx/doc/gen/app.rb +17 -11
  40. data/lib/wx/doc/gen/art_provider.rb +61 -1
  41. data/lib/wx/doc/gen/aui/aui_dock_art.rb +12 -12
  42. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +6 -6
  43. data/lib/wx/doc/gen/aui/aui_manager.rb +45 -27
  44. data/lib/wx/doc/gen/aui/aui_manager_event.rb +12 -6
  45. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +6 -6
  46. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +6 -6
  47. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +10 -10
  48. data/lib/wx/doc/gen/aui/aui_notebook.rb +34 -7
  49. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +17 -2
  50. data/lib/wx/doc/gen/aui/aui_pane_info.rb +51 -51
  51. data/lib/wx/doc/gen/aui/aui_tab_art.rb +6 -6
  52. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +33 -18
  53. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +16 -16
  54. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +4 -4
  55. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +4 -4
  56. data/lib/wx/doc/gen/bitmap.rb +32 -26
  57. data/lib/wx/doc/gen/bitmap_button.rb +10 -6
  58. data/lib/wx/doc/gen/bitmap_combo_box.rb +12 -7
  59. data/lib/wx/doc/gen/book_ctrl_base.rb +7 -3
  60. data/lib/wx/doc/gen/book_ctrl_event.rb +2 -2
  61. data/lib/wx/doc/gen/box_sizer.rb +1 -1
  62. data/lib/wx/doc/gen/brush.rb +16 -4
  63. data/lib/wx/doc/gen/busy_info.rb +1 -1
  64. data/lib/wx/doc/gen/button.rb +19 -7
  65. data/lib/wx/doc/gen/calculate_layout_event.rb +2 -1
  66. data/lib/wx/doc/gen/calendar_ctrl.rb +28 -16
  67. data/lib/wx/doc/gen/calendar_date_attr.rb +2 -2
  68. data/lib/wx/doc/gen/calendar_event.rb +3 -3
  69. data/lib/wx/doc/gen/caret.rb +2 -2
  70. data/lib/wx/doc/gen/check_box.rb +10 -6
  71. data/lib/wx/doc/gen/check_list_box.rb +8 -7
  72. data/lib/wx/doc/gen/choice.rb +7 -6
  73. data/lib/wx/doc/gen/choicebook.rb +12 -6
  74. data/lib/wx/doc/gen/client_dc.rb +1 -1
  75. data/lib/wx/doc/gen/clipboard.rb +1 -1
  76. data/lib/wx/doc/gen/collapsible_pane.rb +9 -6
  77. data/lib/wx/doc/gen/collapsible_pane_event.rb +2 -1
  78. data/lib/wx/doc/gen/colour.rb +16 -6
  79. data/lib/wx/doc/gen/colour_dialog.rb +6 -6
  80. data/lib/wx/doc/gen/colour_picker_ctrl.rb +15 -9
  81. data/lib/wx/doc/gen/colour_picker_event.rb +7 -4
  82. data/lib/wx/doc/gen/combo_box.rb +22 -13
  83. data/lib/wx/doc/gen/context_help_button.rb +4 -3
  84. data/lib/wx/doc/gen/control.rb +9 -6
  85. data/lib/wx/doc/gen/core.rb +5 -2
  86. data/lib/wx/doc/gen/cursor.rb +16 -11
  87. data/lib/wx/doc/gen/data_format.rb +2 -2
  88. data/lib/wx/doc/gen/data_object.rb +23 -16
  89. data/lib/wx/doc/gen/date_event.rb +3 -3
  90. data/lib/wx/doc/gen/date_picker_ctrl.rb +11 -6
  91. data/lib/wx/doc/gen/dc.rb +37 -12
  92. data/lib/wx/doc/gen/defs.rb +16 -16
  93. data/lib/wx/doc/gen/dialog.rb +19 -5
  94. data/lib/wx/doc/gen/dir_dialog.rb +6 -2
  95. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +2 -2
  96. data/lib/wx/doc/gen/dir_picker_ctrl.rb +14 -9
  97. data/lib/wx/doc/gen/drag_drop.rb +15 -15
  98. data/lib/wx/doc/gen/drag_image.rb +6 -6
  99. data/lib/wx/doc/gen/editable_list_box.rb +7 -3
  100. data/lib/wx/doc/gen/event.rb +44 -13
  101. data/lib/wx/doc/gen/event_blocker.rb +1 -1
  102. data/lib/wx/doc/gen/event_filter.rb +5 -2
  103. data/lib/wx/doc/gen/event_list.rb +15 -15
  104. data/lib/wx/doc/gen/events.rb +215 -79
  105. data/lib/wx/doc/gen/evt_handler.rb +1 -1
  106. data/lib/wx/doc/gen/ext_help_controller.rb +1 -1
  107. data/lib/wx/doc/gen/file_dialog.rb +16 -7
  108. data/lib/wx/doc/gen/file_dir_picker_event.rb +5 -3
  109. data/lib/wx/doc/gen/file_picker_ctrl.rb +16 -8
  110. data/lib/wx/doc/gen/find_dialog_event.rb +7 -2
  111. data/lib/wx/doc/gen/find_replace_data.rb +1 -1
  112. data/lib/wx/doc/gen/find_replace_dialog.rb +1 -1
  113. data/lib/wx/doc/gen/flex_grid_sizer.rb +12 -6
  114. data/lib/wx/doc/gen/font.rb +30 -29
  115. data/lib/wx/doc/gen/font_data.rb +9 -5
  116. data/lib/wx/doc/gen/font_dialog.rb +3 -3
  117. data/lib/wx/doc/gen/font_picker_ctrl.rb +10 -6
  118. data/lib/wx/doc/gen/font_picker_event.rb +2 -1
  119. data/lib/wx/doc/gen/frame.rb +34 -11
  120. data/lib/wx/doc/gen/fs_file.rb +4 -17
  121. data/lib/wx/doc/gen/gauge.rb +11 -7
  122. data/lib/wx/doc/gen/gcdc.rb +5 -1
  123. data/lib/wx/doc/gen/gdi_common.rb +35 -33
  124. data/lib/wx/doc/gen/gdi_object.rb +1 -1
  125. data/lib/wx/doc/gen/generic_dir_ctrl.rb +13 -7
  126. data/lib/wx/doc/gen/graphics_context.rb +29 -28
  127. data/lib/wx/doc/gen/graphics_object.rb +1 -1
  128. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +2 -2
  129. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +10 -10
  130. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +1 -1
  131. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +1 -1
  132. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +1 -1
  133. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +1 -1
  134. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +2 -2
  135. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +1 -1
  136. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +1 -1
  137. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +1 -1
  138. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +13 -10
  139. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +1 -1
  140. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +1 -1
  141. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +1 -1
  142. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +1 -1
  143. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +1 -1
  144. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +1 -1
  145. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +12 -12
  146. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +1 -1
  147. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +1 -1
  148. data/lib/wx/doc/gen/grid/grid_ctrl.rb +32 -18
  149. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +5 -3
  150. data/lib/wx/doc/gen/grid/grid_event.rb +20 -3
  151. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +7 -3
  152. data/lib/wx/doc/gen/grid/grid_size_event.rb +9 -3
  153. data/lib/wx/doc/gen/grid/grid_string_table.rb +2 -2
  154. data/lib/wx/doc/gen/grid/grid_table_base.rb +7 -7
  155. data/lib/wx/doc/gen/grid/grid_table_message.rb +5 -5
  156. data/lib/wx/doc/gen/grid_bag_sizer.rb +5 -5
  157. data/lib/wx/doc/gen/grid_sizer.rb +4 -4
  158. data/lib/wx/doc/gen/gui_event_loop.rb +132 -0
  159. data/lib/wx/doc/gen/help_controller.rb +18 -12
  160. data/lib/wx/doc/gen/html/html_cell.rb +36 -18
  161. data/lib/wx/doc/gen/html/html_cell_event.rb +5 -3
  162. data/lib/wx/doc/gen/html/html_easy_printing.rb +9 -4
  163. data/lib/wx/doc/gen/html/html_help_controller.rb +34 -8
  164. data/lib/wx/doc/gen/html/html_help_data.rb +3 -3
  165. data/lib/wx/doc/gen/html/html_help_frame.rb +6 -6
  166. data/lib/wx/doc/gen/html/html_help_window.rb +12 -8
  167. data/lib/wx/doc/gen/html/html_link_event.rb +4 -3
  168. data/lib/wx/doc/gen/html/html_list_box.rb +15 -7
  169. data/lib/wx/doc/gen/html/html_printout.rb +15 -5
  170. data/lib/wx/doc/gen/html/html_window.rb +19 -8
  171. data/lib/wx/doc/gen/hyperlink_ctrl.rb +12 -7
  172. data/lib/wx/doc/gen/hyperlink_event.rb +2 -1
  173. data/lib/wx/doc/gen/icon.rb +14 -14
  174. data/lib/wx/doc/gen/image.rb +119 -64
  175. data/lib/wx/doc/gen/image_list.rb +10 -6
  176. data/lib/wx/doc/gen/keyboard_state.rb +7 -7
  177. data/lib/wx/doc/gen/list_box.rb +30 -21
  178. data/lib/wx/doc/gen/list_ctrl.rb +169 -78
  179. data/lib/wx/doc/gen/list_event.rb +24 -2
  180. data/lib/wx/doc/gen/listbook.rb +12 -6
  181. data/lib/wx/doc/gen/locale.rb +11 -36
  182. data/lib/wx/doc/gen/log.rb +122 -45
  183. data/lib/wx/doc/gen/mdi_client_window.rb +2 -2
  184. data/lib/wx/doc/gen/mdi_frame.rb +15 -9
  185. data/lib/wx/doc/gen/media_ctrl.rb +7 -4
  186. data/lib/wx/doc/gen/media_event.rb +8 -2
  187. data/lib/wx/doc/gen/memory_dc.rb +23 -27
  188. data/lib/wx/doc/gen/menu.rb +9 -9
  189. data/lib/wx/doc/gen/menu_bar.rb +4 -4
  190. data/lib/wx/doc/gen/menu_item.rb +115 -34
  191. data/lib/wx/doc/gen/message_dialog.rb +48 -30
  192. data/lib/wx/doc/gen/mini_frame.rb +12 -3
  193. data/lib/wx/doc/gen/mouse_state.rb +1 -1
  194. data/lib/wx/doc/gen/multi_choice_dialog.rb +4 -2
  195. data/lib/wx/doc/gen/non_owned_window.rb +6 -7
  196. data/lib/wx/doc/gen/notebook.rb +20 -15
  197. data/lib/wx/doc/gen/number_entry_dialog.rb +2 -2
  198. data/lib/wx/doc/gen/object.rb +2 -2
  199. data/lib/wx/doc/gen/palette.rb +3 -3
  200. data/lib/wx/doc/gen/panel.rb +4 -3
  201. data/lib/wx/doc/gen/pen.rb +25 -12
  202. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +1 -1
  203. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +3 -3
  204. data/lib/wx/doc/gen/pg/pg_cell.rb +12 -12
  205. data/lib/wx/doc/gen/pg/pg_editor.rb +76 -74
  206. data/lib/wx/doc/gen/pg/pg_multi_button.rb +3 -3
  207. data/lib/wx/doc/gen/pg/pg_properties.rb +221 -138
  208. data/lib/wx/doc/gen/pg/pg_property.rb +103 -54
  209. data/lib/wx/doc/gen/pg/pg_validation_info.rb +1 -1
  210. data/lib/wx/doc/gen/pg/property_grid.rb +19 -19
  211. data/lib/wx/doc/gen/pg/property_grid_event.rb +18 -5
  212. data/lib/wx/doc/gen/pg/property_grid_interface.rb +36 -24
  213. data/lib/wx/doc/gen/pg/property_grid_manager.rb +12 -12
  214. data/lib/wx/doc/gen/pg/property_grid_page.rb +12 -11
  215. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +8 -8
  216. data/lib/wx/doc/gen/picker_base.rb +12 -11
  217. data/lib/wx/doc/gen/platform_info.rb +7 -7
  218. data/lib/wx/doc/gen/popup_window.rb +6 -6
  219. data/lib/wx/doc/gen/progress_dialog.rb +1 -1
  220. data/lib/wx/doc/gen/property_sheet_dialog.rb +19 -17
  221. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +2 -2
  222. data/lib/wx/doc/gen/prt/preview_frame.rb +4 -1
  223. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +1 -1
  224. data/lib/wx/doc/gen/prt/print_data.rb +24 -18
  225. data/lib/wx/doc/gen/prt/print_dialog.rb +4 -4
  226. data/lib/wx/doc/gen/prt/printer.rb +22 -22
  227. data/lib/wx/doc/gen/query_layout_info_event.rb +2 -1
  228. data/lib/wx/doc/gen/radio_box.rb +12 -10
  229. data/lib/wx/doc/gen/radio_button.rb +8 -6
  230. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +39 -39
  231. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +25 -7
  232. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +5 -5
  233. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +9 -2
  234. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +5 -5
  235. data/lib/wx/doc/gen/rbn/ribbon_control.rb +4 -4
  236. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +6 -2
  237. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +5 -5
  238. data/lib/wx/doc/gen/rbn/ribbon_page.rb +5 -5
  239. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +12 -6
  240. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +5 -5
  241. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +4 -2
  242. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +5 -5
  243. data/lib/wx/doc/gen/region.rb +9 -8
  244. data/lib/wx/doc/gen/region_iterator.rb +2 -2
  245. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +92 -92
  246. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +56 -34
  247. data/lib/wx/doc/gen/rtc/rich_text_event.rb +23 -4
  248. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +6 -6
  249. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +9 -5
  250. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +6 -2
  251. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +12 -12
  252. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +1 -1
  253. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +2 -2
  254. data/lib/wx/doc/gen/sash_event.rb +3 -1
  255. data/lib/wx/doc/gen/sash_layout_window.rb +5 -3
  256. data/lib/wx/doc/gen/sash_window.rb +8 -3
  257. data/lib/wx/doc/gen/scroll_bar.rb +29 -8
  258. data/lib/wx/doc/gen/scrolled_canvas.rb +41 -23
  259. data/lib/wx/doc/gen/scrolled_control.rb +41 -23
  260. data/lib/wx/doc/gen/scrolled_window.rb +41 -23
  261. data/lib/wx/doc/gen/search_ctrl.rb +15 -8
  262. data/lib/wx/doc/gen/simplebook.rb +2 -2
  263. data/lib/wx/doc/gen/single_choice_dialog.rb +4 -2
  264. data/lib/wx/doc/gen/sizer.rb +29 -28
  265. data/lib/wx/doc/gen/slider.rb +49 -16
  266. data/lib/wx/doc/gen/spin_button.rb +15 -9
  267. data/lib/wx/doc/gen/spin_ctrl.rb +12 -6
  268. data/lib/wx/doc/gen/spin_event.rb +5 -2
  269. data/lib/wx/doc/gen/splash_screen.rb +16 -12
  270. data/lib/wx/doc/gen/splitter_event.rb +6 -2
  271. data/lib/wx/doc/gen/splitter_window.rb +20 -4
  272. data/lib/wx/doc/gen/static_bitmap.rb +5 -5
  273. data/lib/wx/doc/gen/static_box.rb +36 -32
  274. data/lib/wx/doc/gen/static_box_sizer.rb +13 -10
  275. data/lib/wx/doc/gen/static_line.rb +5 -4
  276. data/lib/wx/doc/gen/static_text.rb +12 -6
  277. data/lib/wx/doc/gen/status_bar.rb +14 -5
  278. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +55 -7
  279. data/lib/wx/doc/gen/stc/styled_text_event.rb +224 -49
  280. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +11 -2
  281. data/lib/wx/doc/gen/svg_file_dc.rb +3 -3
  282. data/lib/wx/doc/gen/system_options.rb +11 -1
  283. data/lib/wx/doc/gen/system_settings.rb +3 -3
  284. data/lib/wx/doc/gen/task_bar_icon.rb +10 -2
  285. data/lib/wx/doc/gen/task_bar_icon_event.rb +3 -3
  286. data/lib/wx/doc/gen/text_attr.rb +11 -7
  287. data/lib/wx/doc/gen/text_ctrl.rb +61 -92
  288. data/lib/wx/doc/gen/text_entry.rb +28 -40
  289. data/lib/wx/doc/gen/text_entry_dialog.rb +19 -19
  290. data/lib/wx/doc/gen/text_validator.rb +0 -11
  291. data/lib/wx/doc/gen/time_picker_ctrl.rb +6 -5
  292. data/lib/wx/doc/gen/timer.rb +8 -4
  293. data/lib/wx/doc/gen/timer_event.rb +19 -26
  294. data/lib/wx/doc/gen/tip_provider.rb +1 -1
  295. data/lib/wx/doc/gen/toggle_button.rb +6 -5
  296. data/lib/wx/doc/gen/tool_bar.rb +41 -24
  297. data/lib/wx/doc/gen/tool_tip.rb +2 -2
  298. data/lib/wx/doc/gen/toolbook.rb +6 -3
  299. data/lib/wx/doc/gen/top_level_window.rb +35 -25
  300. data/lib/wx/doc/gen/tree_ctrl.rb +63 -13
  301. data/lib/wx/doc/gen/tree_event.rb +23 -2
  302. data/lib/wx/doc/gen/treebook.rb +6 -2
  303. data/lib/wx/doc/gen/ui_action_simulator.rb +1 -1
  304. data/lib/wx/doc/gen/utils.rb +9 -3
  305. data/lib/wx/doc/gen/v_list_box.rb +2 -2
  306. data/lib/wx/doc/gen/v_scrolled_window.rb +2 -2
  307. data/lib/wx/doc/gen/validator.rb +7 -5
  308. data/lib/wx/doc/gen/variant.rb +34 -97
  309. data/lib/wx/doc/gen/window.rb +157 -102
  310. data/lib/wx/doc/gen/window_dc.rb +1 -1
  311. data/lib/wx/doc/gen/with_images.rb +1 -1
  312. data/lib/wx/doc/gen/wizard.rb +17 -4
  313. data/lib/wx/doc/gen/wizard_event.rb +9 -2
  314. data/lib/wx/doc/gen/wizard_page.rb +1 -1
  315. data/lib/wx/doc/gen/wizard_page_simple.rb +7 -7
  316. data/lib/wx/doc/gen/xml_node.rb +3 -3
  317. data/lib/wx/doc/gen/xml_resource.rb +12 -9
  318. data/lib/wx/doc/image.rb +42 -12
  319. data/lib/wx/doc/list_ctrl.rb +32 -0
  320. data/lib/wx/doc/log.rb +28 -0
  321. data/lib/wx/doc/prt/printer_dc.rb +2 -2
  322. data/lib/wx/doc/scaled_dc.rb +1 -1
  323. data/lib/wx/doc/text_validator.rb +12 -0
  324. data/lib/wx/version.rb +1 -1
  325. data/lib/wxruby_aui.so +0 -0
  326. data/lib/wxruby_core.so +0 -0
  327. data/lib/wxruby_grid.so +0 -0
  328. data/lib/wxruby_html.so +0 -0
  329. data/lib/wxruby_pg.so +0 -0
  330. data/lib/wxruby_prt.so +0 -0
  331. data/lib/wxruby_rbn.so +0 -0
  332. data/lib/wxruby_rtc.so +0 -0
  333. data/lib/wxruby_stc.so +0 -0
  334. data/tests/test_art.rb +9 -0
  335. data/tests/test_box_sizer.rb +161 -0
  336. data/tests/test_grid_sizer.rb +148 -0
  337. data/tests/test_list_ctrl.rb +53 -0
  338. data/tests/test_log.rb +163 -0
  339. data/tests/test_std_controls.rb +58 -0
  340. data/tests/test_timer.rb +95 -0
  341. metadata +13 -2
@@ -0,0 +1,148 @@
1
+
2
+ require_relative './lib/wxframe_runner'
3
+
4
+ class GridSizerTests < WxRuby::Test::GUITests
5
+
6
+ def setup
7
+ super
8
+ @win = Wx::Window.new(test_frame, Wx::ID_ANY)
9
+ @win.set_client_size(127, 35)
10
+ @sizer = Wx::GridSizer.new(2)
11
+ @win.set_sizer(@sizer)
12
+ end
13
+
14
+ def cleanup
15
+ test_frame.destroy_children
16
+ @win = nil
17
+ @sizer = nil
18
+ super
19
+ end
20
+
21
+ attr_reader :win, :sizer
22
+
23
+ def set_children(children, flags)
24
+ @sizer.clear
25
+ children.each { |c| @sizer.add(c, flags) }
26
+ @win.layout
27
+ end
28
+
29
+ def test_layout
30
+ sizeTotal = win.get_client_size
31
+ sizeChild = Wx::Size.new(sizeTotal.x / 2, sizeTotal.y / 2)
32
+
33
+ children = [Wx::Window.new(win, Wx::ID_ANY),
34
+ Wx::Window.new(win, Wx::ID_ANY),
35
+ Wx::Window.new(win, Wx::ID_ANY)]
36
+
37
+ set_children(children, Wx::SizerFlags.new.expand)
38
+ assert(children[0].rect == Wx::Rect.new(Wx::Point.new(0, 0), sizeChild))
39
+ assert(children[1].rect == Wx::Rect.new(Wx::Point.new(sizeChild.x, 0), sizeChild))
40
+ assert(children[2].rect == Wx::Rect.new(Wx::Point.new(0, sizeChild.y), sizeChild))
41
+ end
42
+
43
+ end
44
+
45
+ class FlexGridSizerTests < WxRuby::Test::GUITests
46
+
47
+ def setup
48
+ super
49
+ @win = Wx::Window.new(test_frame, Wx::ID_ANY)
50
+ @win.set_client_size(127, 35)
51
+ @sizer = Wx::FlexGridSizer.new(2)
52
+ @win.set_sizer(@sizer)
53
+ end
54
+
55
+ def cleanup
56
+ test_frame.destroy_children
57
+ @win = nil
58
+ @sizer = nil
59
+ super
60
+ end
61
+
62
+ attr_reader :win, :sizer
63
+
64
+ def set_children(children, flags)
65
+ @sizer.clear
66
+ children.each { |c| @sizer.add(c, flags) }
67
+ @win.layout
68
+ end
69
+
70
+ def do_test_layout
71
+ sizeTotal = win.get_client_size
72
+ sizeChild = Wx::Size.new(sizeTotal.x / 4, sizeTotal.y / 4)
73
+ sizeRest = Wx::Size.new(sizeTotal.x - sizeTotal.x / 4,
74
+ sizeTotal.y - sizeTotal.y / 4)
75
+
76
+ children = [Wx::Window.new(win, Wx::ID_ANY, Wx::DEFAULT_POSITION, sizeChild),
77
+ Wx::Window.new(win, Wx::ID_ANY, Wx::DEFAULT_POSITION, sizeChild),
78
+ Wx::Window.new(win, Wx::ID_ANY, Wx::DEFAULT_POSITION, sizeChild),
79
+ Wx::Window.new(win, Wx::ID_ANY, Wx::DEFAULT_POSITION, sizeChild)]
80
+
81
+ sizer.add_growable_row(1)
82
+ sizer.add_growable_col(1)
83
+
84
+ yield(children, sizeTotal, sizeChild, sizeRest)
85
+ end
86
+
87
+ def test_layout
88
+ do_test_layout do |children, sizeTotal, sizeChild, sizeRest|
89
+ set_children(children, Wx::SizerFlags.new)
90
+ assert_equal( sizeChild, children[0].get_size)
91
+ assert_equal( sizeChild, children[1].get_size )
92
+ assert_equal( sizeChild, children[2].get_size )
93
+ assert_equal( sizeChild, children[3].get_size )
94
+ end
95
+ end
96
+
97
+ def test_layout_expand
98
+ do_test_layout do |children, sizeTotal, sizeChild, sizeRest|
99
+ set_children(children, Wx::SizerFlags.new.expand)
100
+ assert_equal(sizeChild, children[0].get_size)
101
+ assert_equal(Wx::Size.new(sizeRest.x, sizeChild.y), children[1].get_size)
102
+ assert_equal(Wx::Size.new(sizeChild.x, sizeRest.y), children[2].get_size)
103
+ assert_equal(sizeRest, children[3].get_size )
104
+ end
105
+ end
106
+
107
+ def test_layout_expand_centre_vertical
108
+ do_test_layout do |children, sizeTotal, sizeChild, sizeRest|
109
+ set_children(children, Wx::SizerFlags.new.expand.centre_vertical)
110
+ assert_equal(sizeChild, children[0].get_size)
111
+ assert_equal(Wx::Size.new(sizeRest.x, sizeChild.y), children[1].get_size)
112
+ assert_equal(sizeChild, children[2].get_size )
113
+ assert_equal(Wx::Size.new(sizeRest.x, sizeChild.y), children[3].get_size)
114
+ end
115
+ end
116
+
117
+ def test_layout_expand_centre_horizontal
118
+ do_test_layout do |children, sizeTotal, sizeChild, sizeRest|
119
+ set_children(children, Wx::SizerFlags.new.expand.centre_horizontal)
120
+ assert_equal(sizeChild, children[0].get_size)
121
+ assert_equal(sizeChild, children[1].get_size )
122
+ assert_equal(Wx::Size.new(sizeChild.x, sizeRest.y), children[2].get_size)
123
+ assert_equal(Wx::Size.new(sizeChild.x, sizeRest.y), children[3].get_size)
124
+ end
125
+ end
126
+
127
+ def test_layout_right
128
+ do_test_layout do |children, sizeTotal, sizeChild, sizeRest|
129
+ set_children(children, Wx::SizerFlags.new.right)
130
+ assert_equal( Wx::Point.new(0, 0), children[0].get_position)
131
+ assert_equal( Wx::Point.new(sizeRest.x, 0), children[1].get_position)
132
+ assert_equal( Wx::Point.new(0, sizeChild.y), children[2].get_position)
133
+ assert_equal( Wx::Point.new(sizeRest.x, sizeChild.y), children[3].get_position)
134
+ end
135
+ end
136
+
137
+ def test_layout_right_centre_vertical
138
+ do_test_layout do |children, sizeTotal, sizeChild, sizeRest|
139
+ set_children(children, Wx::SizerFlags.new.right.centre_vertical)
140
+ yMid = sizeChild.y + (sizeRest.y - sizeChild.y) / 2
141
+ assert_equal( Wx::Point.new(0, 0), children[0].get_position)
142
+ assert_equal( Wx::Point.new(sizeRest.x, 0), children[1].get_position)
143
+ assert_equal( Wx::Point.new(0, yMid), children[2].get_position)
144
+ assert_equal( Wx::Point.new(sizeRest.x, yMid), children[3].get_position)
145
+ end
146
+ end
147
+
148
+ end
@@ -0,0 +1,53 @@
1
+
2
+ require_relative './lib/wxframe_runner'
3
+
4
+ class ButtonTests < WxRuby::Test::GUITests
5
+
6
+ def setup
7
+ super
8
+ @list = Wx::ListCtrl.new(test_frame)
9
+ @list.set_window_style(Wx::LC_REPORT | Wx::LC_EDIT_LABELS)
10
+ @list.set_size([400, 200])
11
+ end
12
+
13
+ def cleanup
14
+ @list.destroy
15
+ super
16
+ end
17
+
18
+ attr_reader :list
19
+
20
+ def test_sort
21
+ list.insert_column(0, "Column 0")
22
+
23
+ list.insert_item(0, "Item 0")
24
+ list.set_item_data(0, 0)
25
+ list.insert_item(1, "Item 1")
26
+ list.set_item_data(1, 1)
27
+
28
+ list.sort_items { |i1, i2, _| i2 <=> i1 } # inverted compare
29
+
30
+ assert_equal("Item 1", list.get_item_text(0))
31
+ assert_equal("Item 0", list.get_item_text(1))
32
+ end
33
+
34
+ if Wx.has_feature?(:HAS_LISTCTRL_COLUMN_ORDER)
35
+
36
+ def test_columns_order
37
+ 3.times { |i| list.insert_column(i, "Column #{i}") }
38
+
39
+ order = [2, 0, 1]
40
+ list.set_columns_order(order)
41
+
42
+ # now list.get_columns_order() will return order
43
+ assert_equal(order, list.get_columns_order)
44
+ # and list.get_column_index_from_order(n) will return order[n]
45
+ assert_equal(order[1], list.get_column_index_from_order(1))
46
+ # and list.get_column_order() will return 1, 2 and 0 for the column 0,
47
+ # 1 and 2 respectively
48
+ assert_equal(1, list.get_column_order(0))
49
+ end
50
+
51
+ end
52
+
53
+ end
data/tests/test_log.rb ADDED
@@ -0,0 +1,163 @@
1
+
2
+ require_relative './lib/wxapp_runner'
3
+
4
+ class LogTests < Test::Unit::TestCase
5
+
6
+ class TestLogBase < Wx::Log
7
+
8
+ def initialize
9
+ super
10
+ @logs = ::Array.new(Wx::LOG_Trace + 1)
11
+ @logsInfo = ::Array.new(Wx::LOG_Trace + 1)
12
+ end
13
+
14
+ def get_log(level)
15
+ @logs[level].to_s
16
+ end
17
+
18
+ def get_info(level)
19
+ @logsInfo[level]
20
+ end
21
+
22
+ def clear
23
+ @logs = ::Array.new(Wx::LOG_Trace + 1)
24
+ @logsInfo = ::Array.new(Wx::LOG_Trace + 1)
25
+ end
26
+
27
+ end
28
+
29
+ class TestLog < TestLogBase
30
+
31
+ protected
32
+
33
+ def do_log_record(level, msg, info)
34
+ @logs[level] = msg
35
+ # do not keep log info objects because these (and their state) are purely transient data
36
+ # that can only be reliably accessed (or passed on) within this call scope
37
+ @logsInfo[level] = { filename: info.filename, line: info.line, func: info.func, component: info.component }
38
+ end
39
+
40
+ end
41
+
42
+ def setup
43
+ super
44
+ @logOld = Wx::Log.set_active_target(@log = TestLog.new)
45
+ @logWasEnabled = Wx::Log.enable_logging
46
+ end
47
+
48
+ def cleanup
49
+ Wx::Log.set_active_target(@logOld)
50
+ Wx::Log.enable_logging(@logWasEnabled)
51
+ super
52
+ end
53
+
54
+ def test_functions
55
+ Wx.log_message("Message")
56
+ assert_equal("Message", @log.get_log(Wx::LOG_Message))
57
+
58
+ Wx.log_error("Error %d", 17)
59
+ assert_equal("Error 17", @log.get_log(Wx::LOG_Error))
60
+
61
+ Wx.log_debug("Debug")
62
+ if Wx::WXWIDGETS_DEBUG_LEVEL > 0
63
+ assert_equal( "Debug", @log.get_log(Wx::LOG_Debug))
64
+ else
65
+ assert_equal( "", @log.get_log(Wx::LOG_Debug))
66
+ end
67
+ end
68
+
69
+ def test_null
70
+ Wx::LogNull.no_log do
71
+ Wx.log_warning("%s warning", "Not important")
72
+
73
+ assert_equal("", @log.get_log(Wx::LOG_Warning))
74
+ end
75
+
76
+ Wx.log_warning("%s warning", "Important")
77
+ assert_equal("Important warning", @log.get_log(Wx::LOG_Warning))
78
+ end
79
+
80
+ def test_component
81
+ Wx.log_message('Message')
82
+ assert_equal('wxapp',
83
+ @log.get_info(Wx::LOG_Message)[:component])
84
+
85
+ # completely disable logging for this component
86
+ Wx::Log.set_component_level('test/ignore', Wx::LOG_FatalError)
87
+
88
+ # but enable it for one of its subcomponents
89
+ Wx::Log.set_component_level('test/ignore/not', Wx::LOG_Max)
90
+
91
+ Wx::Log.for_component('test/ignore') do
92
+ # this shouldn't be output as this component is ignored
93
+ Wx::log_error('Error')
94
+ assert_equal('', @log.get_log(Wx::LOG_Error))
95
+
96
+ # and so are its subcomponents
97
+ Wx.log_error('Error', component: 'test/ignore/sub/subsub') # explicit component: overrules scoped setting
98
+ assert_equal('', @log.get_log(Wx::LOG_Error))
99
+
100
+ Wx.log_error('Error', component: 'test/ignore/not')
101
+ assert_equal('Error', @log.get_log(Wx::LOG_Error))
102
+
103
+ # restore the original component value
104
+ end
105
+ end
106
+
107
+ def test_repetition_counting
108
+ Wx::Log.set_repetition_counting(true)
109
+
110
+ Wx.log_message('Message')
111
+ assert_equal('Message', @log.get_log(Wx::LOG_Message))
112
+
113
+ @log.clear
114
+ Wx.log_message('Message')
115
+ assert_equal('', @log.get_log(Wx::LOG_Message))
116
+ Wx.log_message('Message')
117
+ assert_equal('', @log.get_log(Wx::LOG_Message))
118
+
119
+ Wx.log_info('Another message')
120
+ if Wx.has_feature?(:USE_INTL)
121
+ # don't what language may come out so just test if not empty anymore
122
+ assert_not_empty(@log.get_log(Wx::LOG_Message))
123
+ else
124
+ assert_match(/The previous message.*repeated/, @log.get_log(Wx::LOG_Message))
125
+ end
126
+ assert_equal('Another message', @log.get_log(Wx::LOG_Info))
127
+
128
+ Wx::Log.set_repetition_counting(false)
129
+ end
130
+
131
+ class MyBufferInterposer < Wx::LogInterposer
132
+
133
+ def initialize
134
+ super
135
+ @buffer = []
136
+ end
137
+
138
+ attr_reader :buffer
139
+
140
+ def do_log_text(msg)
141
+ @buffer << msg
142
+ end
143
+ protected :do_log_text
144
+
145
+ end
146
+
147
+ def test_log_interposer
148
+ buffer_log = MyBufferInterposer.new
149
+ assert_empty(buffer_log.buffer)
150
+
151
+ Wx.log_message('Message')
152
+ assert_equal("Message", @log.get_log(Wx::LOG_Message))
153
+ assert_equal(1, buffer_log.buffer.size)
154
+ assert_match(/Message/, buffer_log.buffer.first)
155
+
156
+ Wx.log_warning('Message')
157
+ assert_equal("Message", @log.get_log(Wx::LOG_Warning))
158
+ assert_equal(2, buffer_log.buffer.size)
159
+ assert_match(/Message/, buffer_log.buffer.last)
160
+
161
+ end
162
+
163
+ end
@@ -371,3 +371,61 @@ class ChoiceTests < WxRuby::Test::GUITests
371
371
  end
372
372
 
373
373
  end
374
+
375
+ class GaugeTests < WxRuby::Test::GUITests
376
+
377
+ def setup
378
+ super
379
+ @gauge = Wx::Gauge.new(test_frame, range: 100)
380
+ end
381
+
382
+ def cleanup
383
+ test_frame.destroy_children
384
+ super
385
+ end
386
+
387
+ attr_reader :gauge
388
+
389
+ def test_direction
390
+ #We should default to a horizontal gauge
391
+ assert(!gauge.is_vertical)
392
+
393
+ gauge.destroy
394
+ @gauge = Wx::Gauge.new(test_frame, range: 100, style: Wx::GA_VERTICAL)
395
+
396
+ assert(gauge.vertical?)
397
+
398
+ gauge.destroy
399
+ @gauge = Wx::Gauge.new(test_frame, range: 100, style: Wx::GA_HORIZONTAL)
400
+
401
+ assert(!gauge.vertical?)
402
+ end
403
+
404
+ def test_range
405
+ assert_equal(100, gauge.get_range)
406
+
407
+ gauge.set_range(50)
408
+
409
+ assert_equal(50, gauge.get_range)
410
+
411
+ gauge.set_range(0)
412
+
413
+ assert_equal(0, gauge.range)
414
+ end
415
+
416
+ def test_value
417
+ assert_equal(0, gauge.get_value)
418
+
419
+ gauge.set_value(50)
420
+
421
+ assert_equal(50, gauge.value)
422
+
423
+ gauge.value = 0
424
+
425
+ assert_equal(0, gauge.get_value)
426
+
427
+ gauge.set_value(100)
428
+
429
+ assert_equal(100, gauge.value)
430
+ end
431
+ end
@@ -0,0 +1,95 @@
1
+
2
+ require_relative './lib/wxapp_runner'
3
+
4
+ class TimerTests < Test::Unit::TestCase
5
+
6
+ class TimerCounterHandler < Wx::EvtHandler
7
+
8
+ def initialize
9
+ super
10
+ @count = 0
11
+ evt_timer Wx::ID_ANY, :on_timer
12
+ end
13
+
14
+ attr_reader :count
15
+
16
+ private
17
+
18
+ def on_timer(_evt)
19
+ @count += 1
20
+ tick
21
+ end
22
+
23
+ def tick
24
+ # noop
25
+ end
26
+
27
+ end
28
+
29
+ def test_one_shot
30
+
31
+ handler = Class.new(TimerCounterHandler) do
32
+ def initialize(loop)
33
+ super()
34
+ @loop = loop
35
+ end
36
+
37
+ def run
38
+ @timer = Wx::Timer.new(self)
39
+ @timer.start(200, true)
40
+ @loop.run
41
+ end
42
+
43
+ def tick
44
+ @timer.stop
45
+ @loop.exit
46
+ end
47
+ end.new(Wx::EventLoop.new)
48
+
49
+ handler.run
50
+
51
+ assert_equal(1, handler.count)
52
+ end
53
+
54
+ def test_multiple
55
+
56
+
57
+ handler = Class.new(TimerCounterHandler) do
58
+ def initialize(loop)
59
+ super()
60
+ @loop = loop
61
+ end
62
+
63
+ def run
64
+ @timer = Wx::Timer.new(self)
65
+ @timer.start(100)
66
+ # run for 2 seconds
67
+ @tm_end = Time.now + 2
68
+ @loop.run
69
+ end
70
+
71
+ def tick
72
+ # exit after 2 seconds
73
+ unless Time.now < @tm_end
74
+ @timer.stop
75
+ @loop.exit
76
+ end
77
+ end
78
+ end.new(Wx::EventLoop.new)
79
+
80
+
81
+ handler.run
82
+
83
+ # we can't count on getting exactly 20 ticks but we shouldn't get more
84
+ # than this
85
+ num_ticks = handler.count
86
+ assert( num_ticks <= 20 )
87
+
88
+ # and we should get a decent number of them but if the system is very
89
+ # loaded (as happens with build bot slaves running a couple of builds in
90
+ # parallel actually) it may be much less than 20 so just check that we get
91
+ # more than one
92
+ assert( num_ticks > 1 )
93
+ end
94
+
95
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wxruby3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.pre.rc.2
4
+ version: 0.9.0.pre.rc.3
5
5
  platform: x64-mingw-ucrt
6
6
  authors:
7
7
  - Martin Corino
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-15 00:00:00.000000000 Z
11
+ date: 2023-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -134,6 +134,7 @@ files:
134
134
  - lib/wx/core/enum.rb
135
135
  - lib/wx/core/event.rb
136
136
  - lib/wx/core/event_blocker.rb
137
+ - lib/wx/core/event_loop.rb
137
138
  - lib/wx/core/events/evt_list.rb
138
139
  - lib/wx/core/evthandler.rb
139
140
  - lib/wx/core/ext.rb
@@ -205,6 +206,7 @@ files:
205
206
  - lib/wx/doc/enum.rb
206
207
  - lib/wx/doc/event.rb
207
208
  - lib/wx/doc/event_blocker.rb
209
+ - lib/wx/doc/event_loop.rb
208
210
  - lib/wx/doc/events.rb
209
211
  - lib/wx/doc/evthandler.rb
210
212
  - lib/wx/doc/extra/00_starting.md
@@ -356,6 +358,7 @@ files:
356
358
  - lib/wx/doc/gen/grid/grid_table_message.rb
357
359
  - lib/wx/doc/gen/grid_bag_sizer.rb
358
360
  - lib/wx/doc/gen/grid_sizer.rb
361
+ - lib/wx/doc/gen/gui_event_loop.rb
359
362
  - lib/wx/doc/gen/help_controller.rb
360
363
  - lib/wx/doc/gen/help_provider.rb
361
364
  - lib/wx/doc/gen/html/event_list.rb
@@ -538,6 +541,8 @@ files:
538
541
  - lib/wx/doc/icon.rb
539
542
  - lib/wx/doc/id_helper.rb
540
543
  - lib/wx/doc/image.rb
544
+ - lib/wx/doc/list_ctrl.rb
545
+ - lib/wx/doc/log.rb
541
546
  - lib/wx/doc/memory_dc.rb
542
547
  - lib/wx/doc/mirror_dc.rb
543
548
  - lib/wx/doc/pen.rb
@@ -565,6 +570,7 @@ files:
565
570
  - lib/wx/doc/stream.rb
566
571
  - lib/wx/doc/svg_file_dc.rb
567
572
  - lib/wx/doc/system_settings.rb
573
+ - lib/wx/doc/text_validator.rb
568
574
  - lib/wx/doc/treebook.rb
569
575
  - lib/wx/doc/v_list_box.rb
570
576
  - lib/wx/doc/variant.rb
@@ -984,6 +990,7 @@ files:
984
990
  - tests/test_art.rb
985
991
  - tests/test_art_provider.rb
986
992
  - tests/test_basic.rb
993
+ - tests/test_box_sizer.rb
987
994
  - tests/test_clipboard.rb
988
995
  - tests/test_dc.rb
989
996
  - tests/test_dialog.rb
@@ -993,9 +1000,13 @@ files:
993
1000
  - tests/test_font.rb
994
1001
  - tests/test_gdi_object.rb
995
1002
  - tests/test_geometry.rb
1003
+ - tests/test_grid_sizer.rb
996
1004
  - tests/test_intl.rb
997
1005
  - tests/test_item_data.rb
1006
+ - tests/test_list_ctrl.rb
1007
+ - tests/test_log.rb
998
1008
  - tests/test_std_controls.rb
1009
+ - tests/test_timer.rb
999
1010
  - tests/test_variant.rb
1000
1011
  - tests/test_window.rb
1001
1012
  - tests/testapp.rb