wxruby3 0.9.0.pre.rc.1-x64-mingw-ucrt → 0.9.0.pre.rc.3-x64-mingw-ucrt

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +73 -22
  3. data/README.md +40 -8
  4. data/assets/hello_button-macos.png +0 -0
  5. data/assets/hello_button-msw.png +0 -0
  6. data/assets/hello_button_clicked-macos.png +0 -0
  7. data/assets/hello_button_clicked-msw.png +0 -0
  8. data/assets/hello_button_clicked_combi.png +0 -0
  9. data/assets/hello_world-macos.png +0 -0
  10. data/assets/hello_world-msw.png +0 -0
  11. data/assets/hello_world_combi.png +0 -0
  12. data/ext/wxbase32u_gcc_custom.dll +0 -0
  13. data/ext/wxbase32u_net_gcc_custom.dll +0 -0
  14. data/ext/wxbase32u_xml_gcc_custom.dll +0 -0
  15. data/ext/wxmsw32u_aui_gcc_custom.dll +0 -0
  16. data/ext/wxmsw32u_core_gcc_custom.dll +0 -0
  17. data/ext/wxmsw32u_gl_gcc_custom.dll +0 -0
  18. data/ext/wxmsw32u_html_gcc_custom.dll +0 -0
  19. data/ext/wxmsw32u_media_gcc_custom.dll +0 -0
  20. data/ext/wxmsw32u_propgrid_gcc_custom.dll +0 -0
  21. data/ext/wxmsw32u_qa_gcc_custom.dll +0 -0
  22. data/ext/wxmsw32u_ribbon_gcc_custom.dll +0 -0
  23. data/ext/wxmsw32u_richtext_gcc_custom.dll +0 -0
  24. data/ext/wxmsw32u_stc_gcc_custom.dll +0 -0
  25. data/ext/wxmsw32u_webview_gcc_custom.dll +0 -0
  26. data/ext/wxmsw32u_xrc_gcc_custom.dll +0 -0
  27. data/lib/wx/core/brush.rb +6 -0
  28. data/lib/wx/core/event_loop.rb +7 -0
  29. data/lib/wx/core/events/evt_list.rb +7 -0
  30. data/lib/wx/core/evthandler.rb +12 -2
  31. data/lib/wx/core/font.rb +22 -14
  32. data/lib/wx/core/helpprovider.rb +2 -2
  33. data/lib/wx/core/image.rb +33 -0
  34. data/lib/wx/core/listctrl.rb +17 -13
  35. data/lib/wx/core/log.rb +90 -0
  36. data/lib/wx/core/menu.rb +5 -0
  37. data/lib/wx/core/pen.rb +6 -0
  38. data/lib/wx/core/window.rb +28 -1
  39. data/lib/wx/doc/app.rb +40 -0
  40. data/lib/wx/doc/bitmap.rb +11 -15
  41. data/lib/wx/doc/brush.rb +17 -0
  42. data/lib/wx/doc/event_loop.rb +7 -0
  43. data/lib/wx/doc/extra/00_starting.md +6 -6
  44. data/lib/wx/doc/extra/02_lifecycles.md +9 -8
  45. data/lib/wx/doc/extra/09_exceptions.md +1 -1
  46. data/lib/wx/doc/extra/11_drawing_and_dc.md +4 -4
  47. data/lib/wx/doc/font.rb +27 -0
  48. data/lib/wx/doc/functions.rb +51 -23
  49. data/lib/wx/doc/gc_dc.rb +1 -1
  50. data/lib/wx/doc/gen/about_dialog_info.rb +1 -1
  51. data/lib/wx/doc/gen/accelerator.rb +6 -6
  52. data/lib/wx/doc/gen/accessible.rb +6 -2
  53. data/lib/wx/doc/gen/activity_indicator.rb +65 -0
  54. data/lib/wx/doc/gen/animation.rb +7 -7
  55. data/lib/wx/doc/gen/animation_ctrl.rb +7 -6
  56. data/lib/wx/doc/gen/any_button.rb +1 -1
  57. data/lib/wx/doc/gen/app.rb +17 -11
  58. data/lib/wx/doc/gen/art_provider.rb +61 -1
  59. data/lib/wx/doc/gen/aui/aui_dock_art.rb +12 -12
  60. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +6 -6
  61. data/lib/wx/doc/gen/aui/aui_manager.rb +45 -27
  62. data/lib/wx/doc/gen/aui/aui_manager_event.rb +12 -6
  63. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +6 -6
  64. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +6 -6
  65. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +10 -10
  66. data/lib/wx/doc/gen/aui/aui_notebook.rb +34 -7
  67. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +17 -2
  68. data/lib/wx/doc/gen/aui/aui_pane_info.rb +51 -51
  69. data/lib/wx/doc/gen/aui/aui_tab_art.rb +6 -6
  70. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +35 -20
  71. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +16 -16
  72. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +4 -4
  73. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +4 -4
  74. data/lib/wx/doc/gen/bitmap.rb +32 -26
  75. data/lib/wx/doc/gen/bitmap_button.rb +10 -6
  76. data/lib/wx/doc/gen/bitmap_combo_box.rb +12 -7
  77. data/lib/wx/doc/gen/book_ctrl_base.rb +7 -3
  78. data/lib/wx/doc/gen/book_ctrl_event.rb +2 -2
  79. data/lib/wx/doc/gen/box_sizer.rb +1 -1
  80. data/lib/wx/doc/gen/brush.rb +16 -4
  81. data/lib/wx/doc/gen/busy_info.rb +1 -1
  82. data/lib/wx/doc/gen/button.rb +19 -7
  83. data/lib/wx/doc/gen/calculate_layout_event.rb +2 -1
  84. data/lib/wx/doc/gen/calendar_ctrl.rb +28 -16
  85. data/lib/wx/doc/gen/calendar_date_attr.rb +2 -2
  86. data/lib/wx/doc/gen/calendar_event.rb +3 -3
  87. data/lib/wx/doc/gen/caret.rb +2 -2
  88. data/lib/wx/doc/gen/check_box.rb +10 -6
  89. data/lib/wx/doc/gen/check_list_box.rb +8 -7
  90. data/lib/wx/doc/gen/choice.rb +7 -6
  91. data/lib/wx/doc/gen/choicebook.rb +12 -6
  92. data/lib/wx/doc/gen/client_dc.rb +1 -1
  93. data/lib/wx/doc/gen/clipboard.rb +1 -1
  94. data/lib/wx/doc/gen/collapsible_pane.rb +9 -6
  95. data/lib/wx/doc/gen/collapsible_pane_event.rb +2 -1
  96. data/lib/wx/doc/gen/colour.rb +16 -6
  97. data/lib/wx/doc/gen/colour_dialog.rb +6 -6
  98. data/lib/wx/doc/gen/colour_picker_ctrl.rb +15 -9
  99. data/lib/wx/doc/gen/colour_picker_event.rb +7 -4
  100. data/lib/wx/doc/gen/combo_box.rb +22 -13
  101. data/lib/wx/doc/gen/context_help_button.rb +50 -1
  102. data/lib/wx/doc/gen/control.rb +9 -6
  103. data/lib/wx/doc/gen/core.rb +5 -2
  104. data/lib/wx/doc/gen/cursor.rb +16 -11
  105. data/lib/wx/doc/gen/data_format.rb +2 -2
  106. data/lib/wx/doc/gen/data_object.rb +23 -16
  107. data/lib/wx/doc/gen/date_event.rb +3 -3
  108. data/lib/wx/doc/gen/date_picker_ctrl.rb +11 -6
  109. data/lib/wx/doc/gen/dc.rb +37 -12
  110. data/lib/wx/doc/gen/defs.rb +16 -16
  111. data/lib/wx/doc/gen/dialog.rb +19 -5
  112. data/lib/wx/doc/gen/dir_dialog.rb +6 -2
  113. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +2 -2
  114. data/lib/wx/doc/gen/dir_picker_ctrl.rb +14 -9
  115. data/lib/wx/doc/gen/drag_drop.rb +15 -15
  116. data/lib/wx/doc/gen/drag_image.rb +6 -6
  117. data/lib/wx/doc/gen/editable_list_box.rb +7 -3
  118. data/lib/wx/doc/gen/event.rb +44 -13
  119. data/lib/wx/doc/gen/event_blocker.rb +19 -17
  120. data/lib/wx/doc/gen/event_filter.rb +43 -47
  121. data/lib/wx/doc/gen/event_list.rb +22 -15
  122. data/lib/wx/doc/gen/events.rb +215 -79
  123. data/lib/wx/doc/gen/evt_handler.rb +1 -1
  124. data/lib/wx/doc/gen/ext_help_controller.rb +1 -1
  125. data/lib/wx/doc/gen/file_dialog.rb +64 -56
  126. data/lib/wx/doc/gen/file_dir_picker_event.rb +5 -3
  127. data/lib/wx/doc/gen/file_picker_ctrl.rb +16 -8
  128. data/lib/wx/doc/gen/find_dialog_event.rb +7 -2
  129. data/lib/wx/doc/gen/find_replace_data.rb +1 -1
  130. data/lib/wx/doc/gen/find_replace_dialog.rb +1 -1
  131. data/lib/wx/doc/gen/flex_grid_sizer.rb +12 -6
  132. data/lib/wx/doc/gen/font.rb +39 -29
  133. data/lib/wx/doc/gen/font_data.rb +9 -5
  134. data/lib/wx/doc/gen/font_dialog.rb +3 -3
  135. data/lib/wx/doc/gen/font_picker_ctrl.rb +10 -6
  136. data/lib/wx/doc/gen/font_picker_event.rb +2 -1
  137. data/lib/wx/doc/gen/frame.rb +34 -11
  138. data/lib/wx/doc/gen/fs_file.rb +4 -17
  139. data/lib/wx/doc/gen/gauge.rb +11 -7
  140. data/lib/wx/doc/gen/gcdc.rb +5 -1
  141. data/lib/wx/doc/gen/gdi_common.rb +35 -33
  142. data/lib/wx/doc/gen/gdi_object.rb +1 -1
  143. data/lib/wx/doc/gen/generic_dir_ctrl.rb +13 -7
  144. data/lib/wx/doc/gen/graphics_context.rb +29 -28
  145. data/lib/wx/doc/gen/graphics_object.rb +1 -1
  146. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +2 -2
  147. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +10 -10
  148. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +1 -1
  149. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +1 -1
  150. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +1 -1
  151. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +1 -1
  152. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +2 -2
  153. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +1 -1
  154. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +1 -1
  155. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +1 -1
  156. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +13 -10
  157. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +1 -1
  158. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +1 -1
  159. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +1 -1
  160. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +1 -1
  161. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +1 -1
  162. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +1 -1
  163. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +12 -12
  164. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +1 -1
  165. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +1 -1
  166. data/lib/wx/doc/gen/grid/grid_ctrl.rb +32 -18
  167. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +5 -3
  168. data/lib/wx/doc/gen/grid/grid_event.rb +20 -3
  169. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +7 -3
  170. data/lib/wx/doc/gen/grid/grid_size_event.rb +9 -3
  171. data/lib/wx/doc/gen/grid/grid_string_table.rb +2 -2
  172. data/lib/wx/doc/gen/grid/grid_table_base.rb +7 -7
  173. data/lib/wx/doc/gen/grid/grid_table_message.rb +5 -5
  174. data/lib/wx/doc/gen/grid_bag_sizer.rb +5 -5
  175. data/lib/wx/doc/gen/grid_sizer.rb +4 -4
  176. data/lib/wx/doc/gen/gui_event_loop.rb +132 -0
  177. data/lib/wx/doc/gen/help_controller.rb +18 -12
  178. data/lib/wx/doc/gen/html/html_cell.rb +36 -18
  179. data/lib/wx/doc/gen/html/html_cell_event.rb +5 -3
  180. data/lib/wx/doc/gen/html/html_easy_printing.rb +9 -4
  181. data/lib/wx/doc/gen/html/html_help_controller.rb +34 -8
  182. data/lib/wx/doc/gen/html/html_help_data.rb +3 -3
  183. data/lib/wx/doc/gen/html/html_help_frame.rb +6 -6
  184. data/lib/wx/doc/gen/html/html_help_window.rb +12 -8
  185. data/lib/wx/doc/gen/html/html_link_event.rb +4 -3
  186. data/lib/wx/doc/gen/html/html_list_box.rb +15 -7
  187. data/lib/wx/doc/gen/html/html_printout.rb +15 -5
  188. data/lib/wx/doc/gen/html/html_window.rb +19 -8
  189. data/lib/wx/doc/gen/hyperlink_ctrl.rb +152 -0
  190. data/lib/wx/doc/gen/hyperlink_event.rb +44 -0
  191. data/lib/wx/doc/gen/icon.rb +14 -14
  192. data/lib/wx/doc/gen/image.rb +119 -64
  193. data/lib/wx/doc/gen/image_list.rb +10 -6
  194. data/lib/wx/doc/gen/keyboard_state.rb +7 -7
  195. data/lib/wx/doc/gen/list_box.rb +30 -21
  196. data/lib/wx/doc/gen/list_ctrl.rb +169 -78
  197. data/lib/wx/doc/gen/list_event.rb +24 -2
  198. data/lib/wx/doc/gen/listbook.rb +12 -6
  199. data/lib/wx/doc/gen/locale.rb +11 -36
  200. data/lib/wx/doc/gen/log.rb +122 -45
  201. data/lib/wx/doc/gen/mdi_client_window.rb +2 -2
  202. data/lib/wx/doc/gen/mdi_frame.rb +15 -9
  203. data/lib/wx/doc/gen/media_ctrl.rb +7 -4
  204. data/lib/wx/doc/gen/media_event.rb +8 -2
  205. data/lib/wx/doc/gen/memory_dc.rb +23 -27
  206. data/lib/wx/doc/gen/menu.rb +9 -9
  207. data/lib/wx/doc/gen/menu_bar.rb +4 -10
  208. data/lib/wx/doc/gen/menu_item.rb +115 -34
  209. data/lib/wx/doc/gen/message_dialog.rb +48 -30
  210. data/lib/wx/doc/gen/mini_frame.rb +12 -3
  211. data/lib/wx/doc/gen/mouse_state.rb +1 -1
  212. data/lib/wx/doc/gen/multi_choice_dialog.rb +4 -2
  213. data/lib/wx/doc/gen/non_owned_window.rb +6 -7
  214. data/lib/wx/doc/gen/notebook.rb +20 -15
  215. data/lib/wx/doc/gen/number_entry_dialog.rb +2 -2
  216. data/lib/wx/doc/gen/object.rb +2 -2
  217. data/lib/wx/doc/gen/palette.rb +3 -3
  218. data/lib/wx/doc/gen/panel.rb +4 -3
  219. data/lib/wx/doc/gen/pen.rb +25 -12
  220. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +1 -1
  221. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +3 -3
  222. data/lib/wx/doc/gen/pg/pg_cell.rb +12 -12
  223. data/lib/wx/doc/gen/pg/pg_editor.rb +76 -74
  224. data/lib/wx/doc/gen/pg/pg_multi_button.rb +3 -3
  225. data/lib/wx/doc/gen/pg/pg_properties.rb +221 -138
  226. data/lib/wx/doc/gen/pg/pg_property.rb +103 -54
  227. data/lib/wx/doc/gen/pg/pg_validation_info.rb +1 -1
  228. data/lib/wx/doc/gen/pg/property_grid.rb +19 -19
  229. data/lib/wx/doc/gen/pg/property_grid_event.rb +18 -5
  230. data/lib/wx/doc/gen/pg/property_grid_interface.rb +36 -24
  231. data/lib/wx/doc/gen/pg/property_grid_manager.rb +12 -12
  232. data/lib/wx/doc/gen/pg/property_grid_page.rb +12 -11
  233. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +8 -8
  234. data/lib/wx/doc/gen/picker_base.rb +12 -11
  235. data/lib/wx/doc/gen/platform_info.rb +7 -7
  236. data/lib/wx/doc/gen/popup_window.rb +6 -6
  237. data/lib/wx/doc/gen/progress_dialog.rb +1 -1
  238. data/lib/wx/doc/gen/property_sheet_dialog.rb +19 -17
  239. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +2 -2
  240. data/lib/wx/doc/gen/prt/preview_frame.rb +4 -1
  241. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +1 -1
  242. data/lib/wx/doc/gen/prt/print_data.rb +24 -18
  243. data/lib/wx/doc/gen/prt/print_dialog.rb +4 -4
  244. data/lib/wx/doc/gen/prt/printer.rb +22 -22
  245. data/lib/wx/doc/gen/query_layout_info_event.rb +2 -1
  246. data/lib/wx/doc/gen/radio_box.rb +12 -18
  247. data/lib/wx/doc/gen/radio_button.rb +8 -6
  248. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +39 -39
  249. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +25 -7
  250. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +5 -5
  251. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +9 -2
  252. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +5 -5
  253. data/lib/wx/doc/gen/rbn/ribbon_control.rb +4 -4
  254. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +6 -2
  255. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +5 -5
  256. data/lib/wx/doc/gen/rbn/ribbon_page.rb +5 -5
  257. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +12 -6
  258. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +5 -5
  259. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +4 -2
  260. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +5 -5
  261. data/lib/wx/doc/gen/region.rb +9 -8
  262. data/lib/wx/doc/gen/region_iterator.rb +2 -2
  263. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +92 -92
  264. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +56 -34
  265. data/lib/wx/doc/gen/rtc/rich_text_event.rb +23 -4
  266. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +6 -6
  267. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +9 -5
  268. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +6 -2
  269. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +12 -12
  270. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +1 -1
  271. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +2 -2
  272. data/lib/wx/doc/gen/sash_event.rb +3 -1
  273. data/lib/wx/doc/gen/sash_layout_window.rb +5 -3
  274. data/lib/wx/doc/gen/sash_window.rb +8 -3
  275. data/lib/wx/doc/gen/scroll_bar.rb +29 -8
  276. data/lib/wx/doc/gen/scrolled_canvas.rb +41 -23
  277. data/lib/wx/doc/gen/scrolled_control.rb +41 -23
  278. data/lib/wx/doc/gen/scrolled_window.rb +41 -23
  279. data/lib/wx/doc/gen/search_ctrl.rb +15 -8
  280. data/lib/wx/doc/gen/simplebook.rb +2 -2
  281. data/lib/wx/doc/gen/single_choice_dialog.rb +4 -2
  282. data/lib/wx/doc/gen/sizer.rb +29 -28
  283. data/lib/wx/doc/gen/slider.rb +49 -16
  284. data/lib/wx/doc/gen/spin_button.rb +15 -9
  285. data/lib/wx/doc/gen/spin_ctrl.rb +12 -6
  286. data/lib/wx/doc/gen/spin_event.rb +5 -2
  287. data/lib/wx/doc/gen/splash_screen.rb +16 -12
  288. data/lib/wx/doc/gen/splitter_event.rb +6 -2
  289. data/lib/wx/doc/gen/splitter_window.rb +20 -4
  290. data/lib/wx/doc/gen/static_bitmap.rb +5 -5
  291. data/lib/wx/doc/gen/static_box.rb +36 -32
  292. data/lib/wx/doc/gen/static_box_sizer.rb +13 -10
  293. data/lib/wx/doc/gen/static_line.rb +5 -4
  294. data/lib/wx/doc/gen/static_text.rb +12 -6
  295. data/lib/wx/doc/gen/status_bar.rb +14 -5
  296. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +55 -7
  297. data/lib/wx/doc/gen/stc/styled_text_event.rb +224 -49
  298. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +11 -2
  299. data/lib/wx/doc/gen/svg_file_dc.rb +3 -3
  300. data/lib/wx/doc/gen/system_options.rb +11 -1
  301. data/lib/wx/doc/gen/system_settings.rb +3 -3
  302. data/lib/wx/doc/gen/task_bar_icon.rb +10 -2
  303. data/lib/wx/doc/gen/task_bar_icon_event.rb +3 -3
  304. data/lib/wx/doc/gen/text_attr.rb +11 -7
  305. data/lib/wx/doc/gen/text_ctrl.rb +61 -92
  306. data/lib/wx/doc/gen/text_entry.rb +28 -40
  307. data/lib/wx/doc/gen/text_entry_dialog.rb +19 -19
  308. data/lib/wx/doc/gen/text_validator.rb +0 -11
  309. data/lib/wx/doc/gen/time_picker_ctrl.rb +6 -5
  310. data/lib/wx/doc/gen/timer.rb +8 -4
  311. data/lib/wx/doc/gen/timer_event.rb +19 -26
  312. data/lib/wx/doc/gen/tip_provider.rb +1 -1
  313. data/lib/wx/doc/gen/toggle_button.rb +6 -5
  314. data/lib/wx/doc/gen/tool_bar.rb +41 -24
  315. data/lib/wx/doc/gen/tool_tip.rb +2 -2
  316. data/lib/wx/doc/gen/toolbook.rb +6 -3
  317. data/lib/wx/doc/gen/top_level_window.rb +35 -25
  318. data/lib/wx/doc/gen/tree_ctrl.rb +63 -13
  319. data/lib/wx/doc/gen/tree_event.rb +23 -2
  320. data/lib/wx/doc/gen/treebook.rb +6 -2
  321. data/lib/wx/doc/gen/ui_action_simulator.rb +1 -1
  322. data/lib/wx/doc/gen/utils.rb +9 -3
  323. data/lib/wx/doc/gen/v_list_box.rb +2 -2
  324. data/lib/wx/doc/gen/v_scrolled_window.rb +2 -2
  325. data/lib/wx/doc/gen/validator.rb +7 -5
  326. data/lib/wx/doc/gen/variant.rb +34 -97
  327. data/lib/wx/doc/gen/window.rb +157 -102
  328. data/lib/wx/doc/gen/window_dc.rb +1 -1
  329. data/lib/wx/doc/gen/with_images.rb +1 -1
  330. data/lib/wx/doc/gen/wizard.rb +17 -4
  331. data/lib/wx/doc/gen/wizard_event.rb +9 -2
  332. data/lib/wx/doc/gen/wizard_page.rb +1 -1
  333. data/lib/wx/doc/gen/wizard_page_simple.rb +7 -7
  334. data/lib/wx/doc/gen/xml_node.rb +3 -3
  335. data/lib/wx/doc/gen/xml_resource.rb +12 -9
  336. data/lib/wx/doc/image.rb +42 -12
  337. data/lib/wx/doc/list_ctrl.rb +32 -0
  338. data/lib/wx/doc/log.rb +28 -0
  339. data/lib/wx/doc/pen.rb +17 -0
  340. data/lib/wx/doc/prt/printer_dc.rb +2 -2
  341. data/lib/wx/doc/radio_box.rb +20 -0
  342. data/lib/wx/doc/scaled_dc.rb +1 -1
  343. data/lib/wx/doc/text_validator.rb +12 -0
  344. data/lib/wx/doc/window.rb +27 -0
  345. data/lib/wx/keyword_defs.rb +77 -76
  346. data/lib/wx/prt/keyword_defs.rb +5 -1
  347. data/lib/wx/version.rb +1 -1
  348. data/lib/wxruby_aui.so +0 -0
  349. data/lib/wxruby_core.so +0 -0
  350. data/lib/wxruby_grid.so +0 -0
  351. data/lib/wxruby_html.so +0 -0
  352. data/lib/wxruby_pg.so +0 -0
  353. data/lib/wxruby_prt.so +0 -0
  354. data/lib/wxruby_rbn.so +0 -0
  355. data/lib/wxruby_rtc.so +0 -0
  356. data/lib/wxruby_stc.so +0 -0
  357. data/rakelib/install.rb +17 -6
  358. data/rakelib/lib/config/linux.rb +4 -2
  359. data/rakelib/lib/config/macosx.rb +120 -1
  360. data/rakelib/lib/config/mingw.rb +6 -1
  361. data/rakelib/lib/config/unixish.rb +26 -11
  362. data/rakelib/lib/config.rb +15 -6
  363. data/samples/aui/aui.rb +432 -363
  364. data/samples/propgrid/propgrid.rb +3 -0
  365. data/samples/sampler/editor.rb +33 -25
  366. data/samples/sampler/sample.rb +2 -2
  367. data/samples/sampler/stc_editor.rb +4 -2
  368. data/tests/lib/item_container_tests.rb +82 -0
  369. data/tests/lib/text_entry_tests.rb +80 -0
  370. data/tests/lib/wxapp_runner.rb +12 -0
  371. data/tests/lib/wxframe_runner.rb +89 -4
  372. data/tests/test_art.rb +9 -0
  373. data/tests/test_box_sizer.rb +161 -0
  374. data/tests/test_ext_controls.rb +28 -0
  375. data/tests/test_font.rb +239 -0
  376. data/tests/test_grid_sizer.rb +148 -0
  377. data/tests/test_intl.rb +5 -1
  378. data/tests/test_list_ctrl.rb +53 -0
  379. data/tests/test_log.rb +163 -0
  380. data/tests/test_std_controls.rb +321 -37
  381. data/tests/test_timer.rb +95 -0
  382. data/tests/test_window.rb +340 -0
  383. metadata +36 -2
@@ -603,6 +603,9 @@ class FormMain < Wx::Frame
603
603
  menuHelp = Wx::Menu.new
604
604
 
605
605
  menuHelp.append(ID::ABOUT, '&About', 'Show about dialog')
606
+ if Wx::PLATFORM == 'WXOSX'
607
+ Wx.get_app.mac_about_menu_itemid = ID::ABOUT
608
+ end
606
609
 
607
610
  menuTools1.append(ID::APPENDPROP, 'Append New Property')
608
611
  menuTools1.append(ID::APPENDCAT, "Append New Category\tCtrl-S")
@@ -34,8 +34,8 @@ module WxRuby
34
34
  end
35
35
 
36
36
  class SampleEditPanel
37
- def initialize(parent, sample)
38
- @frame = parent
37
+ def initialize(frame, parent, sample)
38
+ @frame = frame
39
39
  @sample = sample
40
40
  @splitter = Wx::SplitterWindow.new(parent, Wx::ID_ANY)
41
41
 
@@ -67,6 +67,8 @@ module WxRuby
67
67
  @edt_book.set_selection(0)
68
68
  end
69
69
 
70
+ attr_reader :splitter
71
+
70
72
  def add_editor_page(filename, pgnr)
71
73
  panel = Wx::Panel.new(@edt_book, Wx::ID_ANY)
72
74
  edt_sizer = Wx::HBoxSizer.new
@@ -306,30 +308,36 @@ module WxRuby
306
308
  menuBar.append(menuHelp, "&Help")
307
309
  set_menu_bar(menuBar)
308
310
 
309
- tb = create_tool_bar(Wx::TB_HORIZONTAL | Wx::NO_BORDER | Wx::TB_FLAT)
310
- tb.tool_bitmap_size = [ 16, 16 ]
311
- tb.add_tool(ID::SAVE, 'Save', bitmap(:filesave), 'Save the sample to a local folder')
312
- tb.add_tool(ID::RUN, 'Run', bitmap(:play), 'Run the (changed) sample')
313
- tb.add_separator
314
- tb.add_tool(ID::UNDO, 'Undo', bitmap(:undo), 'Undo change')
315
- tb.add_tool(ID::REDO, 'Redo', bitmap(:redo), 'Redo change')
316
- tb.add_separator
317
- tb.add_tool(ID::COPY, 'Copy', bitmap(:copy), 'Copy selection')
318
- tb.add_tool(ID::CUT, 'Cut', bitmap(:cut), 'Cut selection')
319
- tb.add_tool(ID::PASTE, 'Paste', bitmap(:paste), 'Paste selection')
320
- tb.add_separator
321
- tb.add_tool(ID::FIND, 'Find', bitmap(:find), 'Show Find Dialog')
322
- tb.add_tool(ID::FIND_NEXT, 'FindNext', bitmap(:forward), 'Find next occurrence of the search phrase')
323
- tb.add_tool(ID::FIND_PREV, 'FindPrev', bitmap(:back), 'Find previous occurrence of the search phrase')
324
- tb.add_tool(ID::REPLACE, 'Replace', bitmap(:findrepl), 'Show Replace Dialog')
325
- tb.realize
311
+ panel = Wx::Panel.new(self)
312
+ panel_szr = Wx::VBoxSizer.new
313
+ @tbar = Wx::ToolBar.new(panel, style: Wx::TB_HORIZONTAL | Wx::NO_BORDER | Wx::TB_FLAT)
314
+ @tbar.tool_bitmap_size = [ 16, 16 ]
315
+ @tbar.add_tool(ID::SAVE, 'Save', bitmap(:filesave), 'Save the sample to a local folder')
316
+ @tbar.add_tool(ID::RUN, 'Run', bitmap(:play), 'Run the (changed) sample')
317
+ @tbar.add_separator
318
+ @tbar.add_tool(ID::UNDO, 'Undo', bitmap(:undo), 'Undo change')
319
+ @tbar.add_tool(ID::REDO, 'Redo', bitmap(:redo), 'Redo change')
320
+ @tbar.add_separator
321
+ @tbar.add_tool(ID::COPY, 'Copy', bitmap(:copy), 'Copy selection')
322
+ @tbar.add_tool(ID::CUT, 'Cut', bitmap(:cut), 'Cut selection')
323
+ @tbar.add_tool(ID::PASTE, 'Paste', bitmap(:paste), 'Paste selection')
324
+ @tbar.add_separator
325
+ @tbar.add_tool(ID::FIND, 'Find', bitmap(:find), 'Show Find Dialog')
326
+ @tbar.add_tool(ID::FIND_NEXT, 'FindNext', bitmap(:forward), 'Find next occurrence of the search phrase')
327
+ @tbar.add_tool(ID::FIND_PREV, 'FindPrev', bitmap(:back), 'Find previous occurrence of the search phrase')
328
+ @tbar.add_tool(ID::REPLACE, 'Replace', bitmap(:findrepl), 'Show Replace Dialog')
329
+ @tbar.realize
330
+ panel_szr.add(@tbar)
331
+
332
+ # Create the editor panel
333
+ @editors = SampleEditPanel.new(self, panel, @sample)
334
+ panel_szr.add(@editors.splitter, 1, Wx::GROW, 0)
335
+
336
+ panel.set_sizer(panel_szr)
326
337
 
327
338
  create_status_bar(1)
328
339
  set_status_text("Welcome to wxRuby Sample editor.")
329
340
 
330
- # Create the editor panel
331
- @editors = SampleEditPanel.new(self, @sample)
332
-
333
341
  evt_idle(:on_idle)
334
342
 
335
343
  evt_update_editor_ui(:on_update_editor_ui)
@@ -382,15 +390,15 @@ module WxRuby
382
390
  def update_undo_redo(f_undo, f_redo)
383
391
  @m_undo.enable(f_undo)
384
392
  @m_redo.enable(f_redo)
385
- self.tool_bar.enable_tool(ID::UNDO, f_undo)
386
- self.tool_bar.enable_tool(ID::REDO, f_redo)
393
+ @tbar.enable_tool(ID::UNDO, f_undo)
394
+ @tbar.enable_tool(ID::REDO, f_redo)
387
395
  set_status_text('')
388
396
  end
389
397
  private :update_undo_redo
390
398
 
391
399
  def update_paste(f_paste)
392
400
  @m_paste.enable(f_paste)
393
- self.tool_bar.enable_tool(ID::PASTE, f_paste)
401
+ @tbar.enable_tool(ID::PASTE, f_paste)
394
402
  set_status_text('')
395
403
  end
396
404
 
@@ -293,7 +293,7 @@ module WxRuby
293
293
  category.modulize!
294
294
  Dir[File.join(entry, '*.rb')].each do |rb|
295
295
  # only if this is a file (paranoia check) and contains 'include WxRuby::Sample'
296
- if File.file?(rb) && (sample_lns = File.readlines(rb)).any? { |ln| /\s+include\s+WxRuby::Sample/ =~ ln }
296
+ if File.file?(rb) && (sample_lns = File.readlines(rb, encoding: 'utf-8')).any? { |ln| /\s+include\s+WxRuby::Sample/ =~ ln }
297
297
  # register currently required files
298
298
  cur_loaded = ::Set.new($LOADED_FEATURES)
299
299
  @loading_sample = rb
@@ -302,7 +302,7 @@ module WxRuby
302
302
  # in the class/module scope in which the dialog class is defined working from the dialog class name;
303
303
  # this will fail for anonymous modules as these cannot be identified by name)
304
304
  sample_mod = Sample.const_set("SampleLoader_#{File.basename(rb, '.*').modulize!}", Module.new)
305
- sample_mod.module_eval File.read(rb), rb, 1
305
+ sample_mod.module_eval File.read(rb, encoding: 'utf-8'), rb, 1
306
306
  # determine additionally required files
307
307
  new_loaded = ::Set.new($LOADED_FEATURES) - cur_loaded
308
308
  sample_captures.each do |mod|
@@ -114,8 +114,9 @@ module WxRuby
114
114
 
115
115
  def default_theme
116
116
  c_maroon = Wx::Colour.new('Maroon')
117
- style_set_foreground(Wx::STC::STC_STYLE_DEFAULT, Wx::BLACK);
118
- style_set_background(Wx::STC::STC_STYLE_DEFAULT, Wx::WHITE);
117
+ style_set_foreground(Wx::STC::STC_STYLE_DEFAULT, Wx::BLACK)
118
+ style_set_background(Wx::STC::STC_STYLE_DEFAULT, Wx::WHITE)
119
+ set_caret_foreground(Wx::BLACK)
119
120
  style_clear_all
120
121
  style_set_foreground(Wx::STC::STC_STYLE_LINENUMBER, Wx::Colour.new('Dark Grey'))
121
122
  style_set_background(Wx::STC::STC_STYLE_LINENUMBER, Wx::WHITE);
@@ -160,6 +161,7 @@ module WxRuby
160
161
  c_str = Wx::Colour.new('Lime Green')
161
162
  style_set_background(Wx::STC::STC_STYLE_DEFAULT, bg)
162
163
  style_set_foreground(Wx::STC::STC_STYLE_DEFAULT, Wx::WHITE)
164
+ set_caret_foreground(Wx::WHITE)
163
165
  style_clear_all
164
166
  style_set_background(Wx::STC::STC_STYLE_LINENUMBER, bg)
165
167
  style_set_foreground(Wx::STC::STC_STYLE_LINENUMBER, Wx::WHITE)
@@ -0,0 +1,82 @@
1
+
2
+ module ItemContainerTests
3
+
4
+ def test_ic_append
5
+ container.append("item 0")
6
+
7
+ assert_equal("item 0", container.get_string(0))
8
+
9
+ container.append(['item 1', 'item 2'])
10
+
11
+ assert_equal("item 1", container.get_string(1))
12
+ assert_equal("item 2", container.get_string(2))
13
+
14
+ container.append(['item 3', 'item 4'])
15
+
16
+ assert_equal("item 3", container.get_string(3))
17
+ assert_equal("item 4", container.get_string(4))
18
+ end
19
+
20
+ def test_ic_insert
21
+ assert_equal(0, container.insert("item 0", 0))
22
+ assert_equal("item 0", container.get_string(0))
23
+
24
+ assert_equal(1, container.insert(['item 1', 'item 2'], 0))
25
+
26
+ assert_equal("item 1", container.get_string(0))
27
+ assert_equal("item 2", container.get_string(1))
28
+
29
+ assert_equal(2, container.insert(['item 3', 'item 4'], 1))
30
+ assert_equal("item 3", container.get_string(1))
31
+ assert_equal("item 4", container.get_string(2))
32
+ end
33
+
34
+ def test_ic_count
35
+ assert(container.empty?)
36
+ assert_with_assertion_failure { container.get_string(0) }
37
+
38
+ container.append(['item 0', 'item 1', 'item 2', 'item 3'])
39
+
40
+ assert(!container.empty?)
41
+ assert_equal(4, container.count)
42
+
43
+ container.delete(0)
44
+
45
+ assert_equal(3, container.count)
46
+
47
+ container.delete(0)
48
+ container.delete(0)
49
+
50
+ assert_equal(1, container.count)
51
+
52
+ container.insert(['item 0', 'item 1', 'item 2', 'item 3'], 1)
53
+
54
+ assert_equal(5, container.count)
55
+ assert_with_assertion_failure { container.get_string(10) }
56
+ end
57
+
58
+ def test_ic_item_selection
59
+ container.append(['item 0', 'item 1', 'item 2', 'ITEM 2'])
60
+
61
+ container.set_selection(Wx::NOT_FOUND)
62
+ assert_equal(Wx::NOT_FOUND, container.get_selection)
63
+ assert_equal("", container.get_string_selection)
64
+
65
+ container.set_selection(1)
66
+ assert_equal(1, container.get_selection)
67
+ assert_equal("item 1", container.get_string_selection)
68
+
69
+ assert(container.set_string_selection("item 2"))
70
+ assert_equal(2, container.get_selection)
71
+ assert_equal("item 2", container.get_string_selection)
72
+
73
+ # Check that selecting a non-existent item fails.
74
+ assert(!container.set_string_selection("bloordyblop"))
75
+
76
+ # Check that SetStringSelection() is case-insensitive.
77
+ assert(container.set_string_selection("ITEM 2"))
78
+ assert_equal(2, container.get_selection)
79
+ assert_equal("item 2", container.get_string_selection)
80
+ end
81
+
82
+ end
@@ -0,0 +1,80 @@
1
+
2
+ module TextEntryTests
3
+
4
+ def test_te_set_value
5
+ text_entry.set_focus # removes the 'Hint' test which in GTK2 causes problems
6
+ assert(text_entry.empty?)
7
+
8
+ text_entry.value = 'foo'
9
+ assert_equal('foo', text_entry.value)
10
+
11
+ text_entry.value = ''
12
+ assert(text_entry.empty?)
13
+
14
+ text_entry.value = 'hi'
15
+ assert_equal('hi', text_entry.value)
16
+
17
+ text_entry.value = 'bye'
18
+ assert_equal('bye', text_entry.value)
19
+ end
20
+
21
+ def test_te_text_change_events
22
+ updates = count_events(text_entry, :evt_text) do |c_upd|
23
+
24
+ # WXQT only sends event when text changes
25
+ unless Wx::PLATFORM == 'WXQT'
26
+ text_entry.value = ''
27
+ assert_equal(1, c_upd.count)
28
+ c_upd.count = 0
29
+ end
30
+
31
+ text_entry.value = 'foo'
32
+ assert_equal(1, c_upd.count)
33
+ c_upd.count = 0
34
+
35
+ # WXQT only sends event when text changes
36
+ unless Wx::PLATFORM == 'WXQT'
37
+ text_entry.value = 'foo'
38
+ assert_equal(1, c_upd.count)
39
+ c_upd.count = 0
40
+ end
41
+
42
+ text_entry.value = ''
43
+ assert_equal(1, c_upd.count)
44
+ c_upd.count = 0
45
+
46
+ text_entry.change_value('bar')
47
+ assert_equal(0, c_upd.count)
48
+
49
+ text_entry.append_text('bar')
50
+ assert_equal(1, c_upd.count)
51
+ c_upd.count = 0
52
+
53
+ text_entry.replace(3, 6, 'baz')
54
+ assert_equal(1, c_upd.count)
55
+ c_upd.count = 0
56
+
57
+ text_entry.remove(0, 3)
58
+ assert_equal(1, c_upd.count)
59
+ c_upd.count = 0
60
+
61
+ text_entry.write_text('foo')
62
+ assert_equal(1, c_upd.count)
63
+ c_upd.count = 0
64
+
65
+ text_entry.clear
66
+ assert_equal(1, c_upd.count)
67
+ c_upd.count = 0
68
+
69
+ text_entry.change_value('')
70
+ assert_equal(0, c_upd.count)
71
+
72
+ text_entry.change_value('non-empty')
73
+ assert_equal(0, c_upd.count)
74
+
75
+ text_entry.change_value('')
76
+ assert_equal(0, c_upd.count)
77
+ end
78
+ end
79
+
80
+ end
@@ -60,5 +60,17 @@ module Test
60
60
  end
61
61
  end
62
62
  end
63
+
64
+ class TestCase
65
+
66
+ def self.is_ci_build?
67
+ !!ENV['GITHUB_ACTION']
68
+ end
69
+
70
+ def is_ci_build?
71
+ TestCase.is_ci_build?
72
+ end
73
+
74
+ end
63
75
  end
64
76
  end
@@ -6,7 +6,27 @@ module WxRuby
6
6
  module Test
7
7
 
8
8
  class App < Wx::App
9
+
10
+ Assert = Struct.new(:file, :line, :func, :condition, :message)
11
+
12
+ class AssertFailureSink
13
+ def initialize
14
+ @asserts = []
15
+ end
16
+
17
+ attr_reader :asserts
18
+
19
+ def asserts?
20
+ !@asserts.empty?
21
+ end
22
+
23
+ def <<(assert)
24
+ @asserts << assert
25
+ end
26
+ end
27
+
9
28
  def on_init
29
+ @assert_sink = nil
10
30
  @tests_have_run = false
11
31
  evt_idle :on_idle
12
32
  @frame = Wx::Frame.new(nil, size: [600,400])
@@ -21,6 +41,30 @@ module WxRuby
21
41
  end
22
42
 
23
43
  attr_reader :frame
44
+
45
+ def open_assert_sink
46
+ @assert_sink = AssertFailureSink.new
47
+ end
48
+
49
+ def close_assert_sink
50
+ @assert_sink = nil
51
+ end
52
+
53
+ def asserts
54
+ @assert_sink.asserts
55
+ end
56
+
57
+ def asserts?
58
+ @assert_sink.asserts?
59
+ end
60
+
61
+ def on_assert_failure(file, line, func, condition, message)
62
+ if @assert_sink
63
+ @assert_sink << Assert.new(file, line, func, condition, message)
64
+ else
65
+ super
66
+ end
67
+ end
24
68
  end
25
69
 
26
70
  class GUITests < ::Test::Unit::TestCase
@@ -38,20 +82,61 @@ module WxRuby
38
82
  def inc
39
83
  @count +=1
40
84
  end
85
+
86
+ def wait_event(msec)
87
+ start = Time.now
88
+ msec /= 1000.0
89
+ while (Time.now - start) < msec
90
+ Wx.get_app.yield
91
+ if @count > 0
92
+ raise StandardError.new("Too many events. Expected a single one.") unless @count == 1
93
+ @count = 0
94
+ return true
95
+ end
96
+ sleep(50.0/1000.0)
97
+ end
98
+ false
99
+ end
100
+ end
101
+
102
+ def self.has_ui_simulator?
103
+ Wx.has_feature?(:USE_UIACTIONSIMULATOR) && (Wx::PLATFORM != 'WXOSX' || Wx::WXWIDGETS_VERSION >= '3.3')
104
+ end
105
+
106
+ def has_ui_simulator?
107
+ GUITests.has_ui_simulator?
41
108
  end
42
109
 
43
110
  def count_events(win, evt, id1=Wx::ID_ANY, id2=nil)
44
111
  return 0 unless block_given?
45
112
  evt_count = EventCounter.new
46
- if id2.nil?
47
- win.event_handler.send(evt.to_sym, id1, ->(_evt){ evt_count.inc })
113
+ if Wx::EvtHandler.event_type_arity(evt) == 0
114
+ win.event_handler.send(evt.to_sym, ->(evt){ evt_count.inc; evt.skip if !evt.command_event? })
115
+ elsif id2.nil?
116
+ win.event_handler.send(evt.to_sym, id1, ->(evt){ evt_count.inc; evt.skip if !evt.command_event? })
48
117
  else
49
- win.event_handler.send(evt.to_sym, id1, id2, ->(_evt){ evt_count.inc })
118
+ win.event_handler.send(evt.to_sym, id1, id2, ->(evt){ evt_count.inc; evt.skip if !evt.command_event? })
119
+ end
120
+ begin
121
+ yield evt_count
122
+ ensure
123
+ win.event_handler.disconnect(id1, id2 || Wx::ID_ANY, evt.to_sym)
50
124
  end
51
- yield evt_count
52
125
  evt_count.count
53
126
  end
54
127
 
128
+ def assert_with_assertion_failure(max_asserts: nil, func: nil, &block)
129
+ Wx.get_app.open_assert_sink
130
+ begin
131
+ block.call
132
+ raise StandardError.new('No Wx assertion failure captured!') unless Wx.get_app.asserts?
133
+ raise StandardError.new("Too many assertion failures captures! Expected max #{max_asserts}, captured #{Wx.get_app.asserts.size}") if max_asserts && max_asserts < Wx.get_app.asserts.size
134
+ raise StandardError.new("Unexpected assertions failures. Expected assertion failure from #{func} but captured assertions from #{Wx.get_app.asserts.collect {|a| a.func } }") if func && !Wx.get_app.asserts.any? { |a| a.func == func }
135
+ ensure
136
+ Wx.get_app.close_assert_sink
137
+ end
138
+ end
139
+
55
140
  end
56
141
 
57
142
  end
data/tests/test_art.rb CHANGED
@@ -76,6 +76,15 @@ class TestArt < Test::Unit::TestCase
76
76
  end
77
77
  end
78
78
 
79
+ def test_image_histogram
80
+ img = Wx.Image(:wxruby, Wx::BitmapType::BITMAP_TYPE_JPEG)
81
+ img_hist = img.compute_histogram
82
+ assert(img_hist.is_a?(::Hash))
83
+ assert(img_hist.is_a?(Wx::Image::Histogram))
84
+ assert(img_hist.size > 0)
85
+ assert(img_hist.values.all? { |index, value| index>=0 && value>=1 })
86
+ end
87
+
79
88
  def test_art
80
89
  art = nil
81
90
  assert_nothing_raised do
@@ -0,0 +1,161 @@
1
+
2
+ require_relative './lib/wxframe_runner'
3
+
4
+ class BoxSizerTests < WxRuby::Test::GUITests
5
+
6
+ def setup
7
+ super
8
+ @win = Wx::Window.new(test_frame, Wx::ID_ANY)
9
+ @sizer = Wx::HBoxSizer.new
10
+ @win.set_client_size(127, 35)
11
+ @win.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 test_size
24
+ sizeTotal = win.get_client_size
25
+ sizeChild = sizeTotal / 2
26
+
27
+ child = Wx::Window.new(win, Wx::ID_ANY, Wx::DEFAULT_POSITION, sizeChild)
28
+ sizer.add(child)
29
+ win.layout
30
+ assert(child.size == sizeChild)
31
+
32
+ sizer.clear
33
+ sizer.add(child, Wx::SizerFlags.new(1))
34
+ win.layout
35
+ assert(child.size == [sizeTotal.x, sizeChild.y])
36
+
37
+ sizer.clear
38
+ sizer.add(child, Wx::SizerFlags.new(1).expand)
39
+ win.layout
40
+ assert(child.size == sizeTotal)
41
+
42
+ sizer.clear
43
+ sizer.add(child, Wx::SizerFlags.new)
44
+ sizer.set_item_min_size(child, sizeTotal*2)
45
+ win.layout
46
+ assert(child.size == sizeTotal)
47
+
48
+ sizer.clear
49
+ sizer.add(child, Wx::SizerFlags.new.expand)
50
+ sizer.set_item_min_size(child, sizeTotal*2)
51
+ win.layout
52
+ assert(child.size == sizeTotal)
53
+ end
54
+
55
+ class << self
56
+
57
+ def _ltd(*args)
58
+ @ltd_klass ||= Struct.new(:prop, :minsize, :x, :sizes, :dont_permute) do
59
+ def add_to_sizer(sizer, win, n)
60
+ sizer.add(win, Wx::SizerFlags.new(prop[n]))
61
+ sizer.set_item_min_size(win, Wx::Size.new(minsize[n], -1))
62
+ end
63
+ end
64
+ @ltd_klass.new(*args)
65
+ end
66
+
67
+ end
68
+
69
+ LayoutTestData = [
70
+ # some really simple cases (no need to permute those, they're
71
+ # symmetrical anyhow)
72
+ _ltd( [ 1, 1, 1, ], [ 50, 50, 50, ], 150, [ 50, 50, 50, ], true ),
73
+ _ltd( [ 2, 2, 2, ], [ 50, 50, 50, ], 600, [ 200, 200, 200, ], true ),
74
+
75
+ # items with different proportions and min sizes when there is enough
76
+ # space to lay them out
77
+ _ltd( [ 1, 2, 3, ], [ 0, 0, 0, ], 600, [ 100, 200, 300, ] ),
78
+ _ltd( [ 1, 2, 3, ], [ 100, 100, 100, ], 600, [ 100, 200, 300, ] ),
79
+ _ltd( [ 1, 2, 3, ], [ 100, 50, 50, ], 600, [ 100, 200, 300, ] ),
80
+ _ltd( [ 0, 1, 1, ], [ 200, 100, 100, ], 600, [ 200, 200, 200, ] ),
81
+ _ltd( [ 0, 1, 2, ], [ 300, 100, 100, ], 600, [ 300, 100, 200, ] ),
82
+ _ltd( [ 0, 1, 1, ], [ 100, 50, 50, ], 300, [ 100, 100, 100, ] ),
83
+ _ltd( [ 0, 1, 2, ], [ 100, 50, 50, ], 400, [ 100, 100, 200, ] ),
84
+
85
+ # cases when there is not enough space to lay out the items correctly
86
+ # while still respecting their min sizes
87
+ _ltd( [ 0, 1, 1, ], [ 100, 150, 50, ], 300, [ 100, 150, 50, ] ),
88
+ _ltd( [ 1, 2, 3, ], [ 100, 100, 100, ], 300, [ 100, 100, 100, ] ),
89
+ _ltd( [ 1, 2, 3, ], [ 100, 50, 50, ], 300, [ 100, 80, 120, ] ),
90
+ _ltd( [ 1, 2, 3, ], [ 100, 10, 10, ], 150, [ 100, 20, 30, ] ),
91
+
92
+ # cases when there is not enough space even for the min sizes (don't
93
+ # permute in these cases as the layout does depend on the item order
94
+ # because the first ones have priority)
95
+ _ltd( [ 1, 2, 3, ], [ 100, 50, 50, ], 150, [ 100, 50, 0, ], true ),
96
+ _ltd( [ 1, 2, 3, ], [ 100, 100, 100, ], 200, [ 100, 100, 0, ], true ),
97
+ _ltd( [ 1, 2, 3, ], [ 100, 100, 100, ], 150, [ 100, 50, 0, ], true ),
98
+ _ltd( [ 1, 2, 3, ], [ 100, 100, 100, ], 50, [ 50, 0, 0, ], true ),
99
+ _ltd( [ 1, 2, 3, ], [ 100, 100, 100, ], 0, [ 0, 0, 0, ], true ),
100
+ ]
101
+
102
+ def test_size_3
103
+ child = [Wx::Window.new(win, Wx::ID_ANY),
104
+ Wx::Window.new(win, Wx::ID_ANY),
105
+ Wx::Window.new(win, Wx::ID_ANY)]
106
+
107
+ LayoutTestData.each_with_index do |ltd, i|
108
+ # the results shouldn't depend on the order of items except in the
109
+ # case when there is not enough space for even the fixed width items
110
+ # (in which case the first ones might get enough of it but not the
111
+ # last ones) so test a couple of permutations of test data unless
112
+ # specifically disabled for this test case
113
+ 3.times do |p|
114
+ case p
115
+ when 0
116
+ # nothing, use original data
117
+ when 1
118
+ # exchange first and last elements
119
+ ltd.prop[0], ltd.prop[2] = ltd.prop[2], ltd.prop[0]
120
+ ltd.minsize[0], ltd.minsize[2] = ltd.minsize[2], ltd.minsize[0]
121
+ ltd.sizes[0], ltd.sizes[2] = ltd.sizes[2], ltd.sizes[0]
122
+ when 2
123
+ # exchange the original third and second elements
124
+ ltd.prop[0], ltd.prop[1] = ltd.prop[1], ltd.prop[0]
125
+ ltd.minsize[0], ltd.minsize[1] = ltd.minsize[1], ltd.minsize[0]
126
+ ltd.sizes[0], ltd.sizes[1] = ltd.sizes[1], ltd.sizes[0]
127
+ end
128
+
129
+ sizer.clear
130
+
131
+ child.each_with_index { |c, j| ltd.add_to_sizer(sizer, c, j) }
132
+
133
+ win.set_client_size(ltd.x, -1)
134
+ win.layout
135
+
136
+ child.each_with_index do |c, j|
137
+ assert_equal(ltd.sizes[j], c.size.x,
138
+ "test #{i}, permutation #{p}: wrong size for child #{j} for total size #{ltd.x}")
139
+ end
140
+
141
+ # don't try other permutations if explicitly disabled
142
+ break if ltd.dont_permute
143
+ end
144
+ end
145
+ end
146
+
147
+ def test_min_size
148
+ child = Wx::Window.new(win, Wx::ID_ANY)
149
+ child.set_initial_size([10, -1])
150
+ sizer.add(child)
151
+
152
+ # Setting minimal size explicitly must make get_min_size() return at least
153
+ # this size even if it needs a much smaller one.
154
+ sizer.set_min_size(100, 0)
155
+ assert(sizer.get_min_size.x == 100)
156
+
157
+ sizer.layout
158
+ assert(sizer.min_size.x == 100)
159
+ end
160
+
161
+ end
@@ -0,0 +1,28 @@
1
+
2
+ require_relative './lib/wxframe_runner'
3
+ require_relative './lib/text_entry_tests'
4
+
5
+ class SearchCtrlTests < WxRuby::Test::GUITests
6
+
7
+ include TextEntryTests
8
+
9
+ def setup
10
+ super
11
+ @search = Wx::SearchCtrl.new(test_frame, name: 'SearchCtrl')
12
+ Wx.get_app.yield
13
+ end
14
+
15
+ def cleanup
16
+ @search.destroy
17
+ Wx.get_app.yield
18
+ super
19
+ end
20
+
21
+ attr_reader :search
22
+ alias :text_entry :search
23
+
24
+ def test_search
25
+ assert_equal('', search.get_value)
26
+ end
27
+
28
+ end