wxruby3 0.9.0.pre.beta.2-x64-mingw-ucrt-3.2-3.2.2

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 (837) hide show
  1. checksums.yaml +7 -0
  2. data/.wxconfig +17 -0
  3. data/.yardopts +13 -0
  4. data/CREDITS.md +52 -0
  5. data/LICENSE +21 -0
  6. data/README.md +139 -0
  7. data/bin/wxruby +9 -0
  8. data/bin/wxruby.bat +20 -0
  9. data/ext/mkrf_conf_bingem.rb +18 -0
  10. data/ext/wxbase32u_gcc_custom.dll +0 -0
  11. data/ext/wxbase32u_net_gcc_custom.dll +0 -0
  12. data/ext/wxbase32u_xml_gcc_custom.dll +0 -0
  13. data/ext/wxmsw32u_aui_gcc_custom.dll +0 -0
  14. data/ext/wxmsw32u_core_gcc_custom.dll +0 -0
  15. data/ext/wxmsw32u_gl_gcc_custom.dll +0 -0
  16. data/ext/wxmsw32u_html_gcc_custom.dll +0 -0
  17. data/ext/wxmsw32u_media_gcc_custom.dll +0 -0
  18. data/ext/wxmsw32u_propgrid_gcc_custom.dll +0 -0
  19. data/ext/wxmsw32u_qa_gcc_custom.dll +0 -0
  20. data/ext/wxmsw32u_ribbon_gcc_custom.dll +0 -0
  21. data/ext/wxmsw32u_richtext_gcc_custom.dll +0 -0
  22. data/ext/wxmsw32u_stc_gcc_custom.dll +0 -0
  23. data/ext/wxmsw32u_webview_gcc_custom.dll +0 -0
  24. data/ext/wxmsw32u_xrc_gcc_custom.dll +0 -0
  25. data/lib/wx/accessors.rb +63 -0
  26. data/lib/wx/aui/auimanager.rb +17 -0
  27. data/lib/wx/aui/auinotebook.rb +9 -0
  28. data/lib/wx/aui/events/evt_list.rb +143 -0
  29. data/lib/wx/aui/require.rb +9 -0
  30. data/lib/wx/aui.rb +14 -0
  31. data/lib/wx/core/acceleratortable.rb +28 -0
  32. data/lib/wx/core/animation.rb +18 -0
  33. data/lib/wx/core/app.rb +89 -0
  34. data/lib/wx/core/artprovider.rb +31 -0
  35. data/lib/wx/core/bitmap.rb +59 -0
  36. data/lib/wx/core/busycursor.rb +12 -0
  37. data/lib/wx/core/choice.rb +4 -0
  38. data/lib/wx/core/choicedlg.rb +54 -0
  39. data/lib/wx/core/clientdc.rb +13 -0
  40. data/lib/wx/core/clipboard.rb +56 -0
  41. data/lib/wx/core/collapsible_pane.rb +12 -0
  42. data/lib/wx/core/colour.rb +34 -0
  43. data/lib/wx/core/combobox.rb +4 -0
  44. data/lib/wx/core/controlwithitems.rb +10 -0
  45. data/lib/wx/core/data_object.rb +10 -0
  46. data/lib/wx/core/dataformat.rb +26 -0
  47. data/lib/wx/core/dc.rb +68 -0
  48. data/lib/wx/core/dialog.rb +50 -0
  49. data/lib/wx/core/event.rb +16 -0
  50. data/lib/wx/core/events/evt_list.rb +1378 -0
  51. data/lib/wx/core/evthandler.rb +240 -0
  52. data/lib/wx/core/ext.rb +58 -0
  53. data/lib/wx/core/font/encoding.rb +113 -0
  54. data/lib/wx/core/font.rb +22 -0
  55. data/lib/wx/core/functions.rb +44 -0
  56. data/lib/wx/core/gauge.rb +12 -0
  57. data/lib/wx/core/genericdirctrl.rb +36 -0
  58. data/lib/wx/core/hboxsizer.rb +6 -0
  59. data/lib/wx/core/helpcontroller.rb +5 -0
  60. data/lib/wx/core/helpcontrollerhelpprovider.rb +24 -0
  61. data/lib/wx/core/helpprovider.rb +15 -0
  62. data/lib/wx/core/icon.rb +40 -0
  63. data/lib/wx/core/image.rb +68 -0
  64. data/lib/wx/core/imagelist.rb +3 -0
  65. data/lib/wx/core/listbox.rb +4 -0
  66. data/lib/wx/core/listctrl.rb +33 -0
  67. data/lib/wx/core/locale.rb +73 -0
  68. data/lib/wx/core/log.rb +20 -0
  69. data/lib/wx/core/menu.rb +78 -0
  70. data/lib/wx/core/menu_bar.rb +20 -0
  71. data/lib/wx/core/menuitem.rb +7 -0
  72. data/lib/wx/core/notebook.rb +9 -0
  73. data/lib/wx/core/object.rb +14 -0
  74. data/lib/wx/core/pen_info.rb +11 -0
  75. data/lib/wx/core/platform_info.rb +13 -0
  76. data/lib/wx/core/point.rb +92 -0
  77. data/lib/wx/core/real_point.rb +92 -0
  78. data/lib/wx/core/rect.rb +57 -0
  79. data/lib/wx/core/simplehelpprovider.rb +38 -0
  80. data/lib/wx/core/size.rb +86 -0
  81. data/lib/wx/core/sizer.rb +43 -0
  82. data/lib/wx/core/splash_screen.rb +44 -0
  83. data/lib/wx/core/textctrl.rb +8 -0
  84. data/lib/wx/core/timer.rb +105 -0
  85. data/lib/wx/core/toolbar.rb +37 -0
  86. data/lib/wx/core/toolbartool.rb +4 -0
  87. data/lib/wx/core/treectrl.rb +46 -0
  88. data/lib/wx/core/validator.rb +8 -0
  89. data/lib/wx/core/variant.rb +62 -0
  90. data/lib/wx/core/vboxsizer.rb +6 -0
  91. data/lib/wx/core/window.rb +95 -0
  92. data/lib/wx/core/window_update_locker.rb +12 -0
  93. data/lib/wx/core/xmlresource.rb +56 -0
  94. data/lib/wx/core.rb +61 -0
  95. data/lib/wx/doc/aui/auimanager.rb +12 -0
  96. data/lib/wx/doc/aui/auinotebook.rb +9 -0
  97. data/lib/wx/doc/colour_dialog.rb +15 -0
  98. data/lib/wx/doc/dc.rb +49 -0
  99. data/lib/wx/doc/enum.rb +66 -0
  100. data/lib/wx/doc/evthandler.rb +84 -0
  101. data/lib/wx/doc/extra/00_starting.md +154 -0
  102. data/lib/wx/doc/extra/01_packages.md +179 -0
  103. data/lib/wx/doc/extra/02_lifecycles.md +116 -0
  104. data/lib/wx/doc/extra/03_dialogs.md +57 -0
  105. data/lib/wx/doc/extra/04_enums.md +143 -0
  106. data/lib/wx/doc/extra/05_event-handling.md +166 -0
  107. data/lib/wx/doc/extra/06_geometry.md +56 -0
  108. data/lib/wx/doc/extra/07_colour_and_font.md +52 -0
  109. data/lib/wx/doc/extra/08_extensions.md +144 -0
  110. data/lib/wx/doc/extra/09_exceptions.md +54 -0
  111. data/lib/wx/doc/functions.rb +221 -0
  112. data/lib/wx/doc/gdi_common.rb +181 -0
  113. data/lib/wx/doc/gen/about_dialog_info.rb +315 -0
  114. data/lib/wx/doc/gen/accelerator.rb +172 -0
  115. data/lib/wx/doc/gen/accessible.rb +817 -0
  116. data/lib/wx/doc/gen/animation.rb +253 -0
  117. data/lib/wx/doc/gen/animation_ctrl.rb +129 -0
  118. data/lib/wx/doc/gen/any_button.rb +170 -0
  119. data/lib/wx/doc/gen/app.rb +363 -0
  120. data/lib/wx/doc/gen/art_provider.rb +497 -0
  121. data/lib/wx/doc/gen/aui/aui_dock_art.rb +421 -0
  122. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +39 -0
  123. data/lib/wx/doc/gen/aui/aui_manager.rb +323 -0
  124. data/lib/wx/doc/gen/aui/aui_manager_event.rb +112 -0
  125. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +163 -0
  126. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +46 -0
  127. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +109 -0
  128. data/lib/wx/doc/gen/aui/aui_notebook.rb +329 -0
  129. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +179 -0
  130. data/lib/wx/doc/gen/aui/aui_pane_info.rb +665 -0
  131. data/lib/wx/doc/gen/aui/aui_tab_art.rb +372 -0
  132. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +147 -0
  133. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +437 -0
  134. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +272 -0
  135. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +195 -0
  136. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +224 -0
  137. data/lib/wx/doc/gen/aui/event_list.rb +162 -0
  138. data/lib/wx/doc/gen/auto_buffered_paint_dc.rb +47 -0
  139. data/lib/wx/doc/gen/bitmap.rb +638 -0
  140. data/lib/wx/doc/gen/bitmap_button.rb +91 -0
  141. data/lib/wx/doc/gen/book_ctrl_base.rb +240 -0
  142. data/lib/wx/doc/gen/book_ctrl_event.rb +60 -0
  143. data/lib/wx/doc/gen/box_sizer.rb +66 -0
  144. data/lib/wx/doc/gen/brush.rb +219 -0
  145. data/lib/wx/doc/gen/buffered_dc.rb +95 -0
  146. data/lib/wx/doc/gen/buffered_paint_dc.rb +55 -0
  147. data/lib/wx/doc/gen/busy_info.rb +141 -0
  148. data/lib/wx/doc/gen/button.rb +133 -0
  149. data/lib/wx/doc/gen/calculate_layout_event.rb +59 -0
  150. data/lib/wx/doc/gen/calendar_ctrl.rb +236 -0
  151. data/lib/wx/doc/gen/calendar_date_attr.rb +137 -0
  152. data/lib/wx/doc/gen/calendar_event.rb +150 -0
  153. data/lib/wx/doc/gen/caret.rb +99 -0
  154. data/lib/wx/doc/gen/check_box.rb +145 -0
  155. data/lib/wx/doc/gen/check_list_box.rb +96 -0
  156. data/lib/wx/doc/gen/choice.rb +143 -0
  157. data/lib/wx/doc/gen/choicebook.rb +100 -0
  158. data/lib/wx/doc/gen/client_dc.rb +49 -0
  159. data/lib/wx/doc/gen/clipboard.rb +128 -0
  160. data/lib/wx/doc/gen/collapsible_pane.rb +120 -0
  161. data/lib/wx/doc/gen/collapsible_pane_event.rb +45 -0
  162. data/lib/wx/doc/gen/colour.rb +289 -0
  163. data/lib/wx/doc/gen/colour_data.rb +96 -0
  164. data/lib/wx/doc/gen/colour_dialog.rb +84 -0
  165. data/lib/wx/doc/gen/colour_picker_ctrl.rb +89 -0
  166. data/lib/wx/doc/gen/colour_picker_event.rb +74 -0
  167. data/lib/wx/doc/gen/combo_box.rb +228 -0
  168. data/lib/wx/doc/gen/context_help_button.rb +34 -0
  169. data/lib/wx/doc/gen/control.rb +245 -0
  170. data/lib/wx/doc/gen/control_with_items.rb +339 -0
  171. data/lib/wx/doc/gen/core.rb +42 -0
  172. data/lib/wx/doc/gen/cursor.rb +127 -0
  173. data/lib/wx/doc/gen/data_format.rb +94 -0
  174. data/lib/wx/doc/gen/data_object.rb +439 -0
  175. data/lib/wx/doc/gen/date_event.rb +48 -0
  176. data/lib/wx/doc/gen/date_picker_ctrl.rb +127 -0
  177. data/lib/wx/doc/gen/dc.rb +1278 -0
  178. data/lib/wx/doc/gen/defs.rb +2832 -0
  179. data/lib/wx/doc/gen/dialog.rb +426 -0
  180. data/lib/wx/doc/gen/dir_dialog.rb +134 -0
  181. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +80 -0
  182. data/lib/wx/doc/gen/dir_picker_ctrl.rb +103 -0
  183. data/lib/wx/doc/gen/drag_drop.rb +292 -0
  184. data/lib/wx/doc/gen/drag_image.rb +123 -0
  185. data/lib/wx/doc/gen/editable_list_box.rb +89 -0
  186. data/lib/wx/doc/gen/event.rb +911 -0
  187. data/lib/wx/doc/gen/event_list.rb +1512 -0
  188. data/lib/wx/doc/gen/events.rb +2499 -0
  189. data/lib/wx/doc/gen/evt_handler.rb +224 -0
  190. data/lib/wx/doc/gen/ext_help_controller.rb +100 -0
  191. data/lib/wx/doc/gen/file_dialog.rb +294 -0
  192. data/lib/wx/doc/gen/file_dir_picker_event.rb +98 -0
  193. data/lib/wx/doc/gen/file_picker_ctrl.rb +107 -0
  194. data/lib/wx/doc/gen/find_dialog_event.rb +119 -0
  195. data/lib/wx/doc/gen/find_replace_data.rb +59 -0
  196. data/lib/wx/doc/gen/find_replace_dialog.rb +44 -0
  197. data/lib/wx/doc/gen/flex_grid_sizer.rb +145 -0
  198. data/lib/wx/doc/gen/font.rb +1282 -0
  199. data/lib/wx/doc/gen/font_data.rb +132 -0
  200. data/lib/wx/doc/gen/font_dialog.rb +71 -0
  201. data/lib/wx/doc/gen/font_picker_ctrl.rb +120 -0
  202. data/lib/wx/doc/gen/font_picker_event.rb +64 -0
  203. data/lib/wx/doc/gen/frame.rb +276 -0
  204. data/lib/wx/doc/gen/fs_file.rb +269 -0
  205. data/lib/wx/doc/gen/functions.rb +10 -0
  206. data/lib/wx/doc/gen/gauge.rb +127 -0
  207. data/lib/wx/doc/gen/gb_sizer_item.rb +78 -0
  208. data/lib/wx/doc/gen/gcdc.rb +61 -0
  209. data/lib/wx/doc/gen/gdi_common.rb +1108 -0
  210. data/lib/wx/doc/gen/gdi_object.rb +29 -0
  211. data/lib/wx/doc/gen/generic_dir_ctrl.rb +198 -0
  212. data/lib/wx/doc/gen/graphics_context.rb +764 -0
  213. data/lib/wx/doc/gen/graphics_object.rb +494 -0
  214. data/lib/wx/doc/gen/grid/event_list.rb +173 -0
  215. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +33 -0
  216. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +279 -0
  217. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +31 -0
  218. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +32 -0
  219. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +44 -0
  220. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +31 -0
  221. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +48 -0
  222. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +33 -0
  223. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +40 -0
  224. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +35 -0
  225. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +181 -0
  226. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +34 -0
  227. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +39 -0
  228. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +41 -0
  229. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +74 -0
  230. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +41 -0
  231. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +31 -0
  232. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +98 -0
  233. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +31 -0
  234. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +45 -0
  235. data/lib/wx/doc/gen/grid/grid_ctrl.rb +2381 -0
  236. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +87 -0
  237. data/lib/wx/doc/gen/grid/grid_event.rb +96 -0
  238. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +96 -0
  239. data/lib/wx/doc/gen/grid/grid_size_event.rb +71 -0
  240. data/lib/wx/doc/gen/grid/grid_string_table.rb +130 -0
  241. data/lib/wx/doc/gen/grid/grid_table_base.rb +288 -0
  242. data/lib/wx/doc/gen/grid/grid_table_message.rb +73 -0
  243. data/lib/wx/doc/gen/grid_bag_sizer.rb +298 -0
  244. data/lib/wx/doc/gen/grid_sizer.rb +135 -0
  245. data/lib/wx/doc/gen/help_controller.rb +136 -0
  246. data/lib/wx/doc/gen/help_provider.rb +80 -0
  247. data/lib/wx/doc/gen/html/event_list.rb +46 -0
  248. data/lib/wx/doc/gen/html/html_cell.rb +441 -0
  249. data/lib/wx/doc/gen/html/html_cell_event.rb +62 -0
  250. data/lib/wx/doc/gen/html/html_easy_printing.rb +169 -0
  251. data/lib/wx/doc/gen/html/html_help_controller.rb +256 -0
  252. data/lib/wx/doc/gen/html/html_help_data.rb +144 -0
  253. data/lib/wx/doc/gen/html/html_help_frame.rb +112 -0
  254. data/lib/wx/doc/gen/html/html_help_window.rb +230 -0
  255. data/lib/wx/doc/gen/html/html_link_event.rb +36 -0
  256. data/lib/wx/doc/gen/html/html_list_box.rb +150 -0
  257. data/lib/wx/doc/gen/html/html_printout.rb +87 -0
  258. data/lib/wx/doc/gen/html/html_window.rb +386 -0
  259. data/lib/wx/doc/gen/icon.rb +267 -0
  260. data/lib/wx/doc/gen/icon_location.rb +38 -0
  261. data/lib/wx/doc/gen/image.rb +1144 -0
  262. data/lib/wx/doc/gen/image_list.rb +181 -0
  263. data/lib/wx/doc/gen/keyboard_state.rb +124 -0
  264. data/lib/wx/doc/gen/list_box.rb +260 -0
  265. data/lib/wx/doc/gen/list_ctrl.rb +1542 -0
  266. data/lib/wx/doc/gen/list_event.rb +177 -0
  267. data/lib/wx/doc/gen/listbook.rb +100 -0
  268. data/lib/wx/doc/gen/locale.rb +4143 -0
  269. data/lib/wx/doc/gen/log.rb +505 -0
  270. data/lib/wx/doc/gen/mdi_client_window.rb +38 -0
  271. data/lib/wx/doc/gen/mdi_frame.rb +235 -0
  272. data/lib/wx/doc/gen/media_ctrl.rb +225 -0
  273. data/lib/wx/doc/gen/media_event.rb +109 -0
  274. data/lib/wx/doc/gen/memory_dc.rb +95 -0
  275. data/lib/wx/doc/gen/menu.rb +493 -0
  276. data/lib/wx/doc/gen/menu_bar.rb +247 -0
  277. data/lib/wx/doc/gen/menu_item.rb +333 -0
  278. data/lib/wx/doc/gen/message_dialog.rb +195 -0
  279. data/lib/wx/doc/gen/mini_frame.rb +72 -0
  280. data/lib/wx/doc/gen/mirror_dc.rb +29 -0
  281. data/lib/wx/doc/gen/mouse_state.rb +108 -0
  282. data/lib/wx/doc/gen/multi_choice_dialog.rb +58 -0
  283. data/lib/wx/doc/gen/non_owned_window.rb +46 -0
  284. data/lib/wx/doc/gen/notebook.rb +220 -0
  285. data/lib/wx/doc/gen/number_entry_dialog.rb +75 -0
  286. data/lib/wx/doc/gen/object.rb +69 -0
  287. data/lib/wx/doc/gen/paint_dc.rb +34 -0
  288. data/lib/wx/doc/gen/palette.rb +90 -0
  289. data/lib/wx/doc/gen/panel.rb +96 -0
  290. data/lib/wx/doc/gen/pen.rb +484 -0
  291. data/lib/wx/doc/gen/pg/event_list.rb +102 -0
  292. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +47 -0
  293. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +295 -0
  294. data/lib/wx/doc/gen/pg/pg_cell.rb +166 -0
  295. data/lib/wx/doc/gen/pg/pg_editor.rb +569 -0
  296. data/lib/wx/doc/gen/pg/pg_multi_button.rb +161 -0
  297. data/lib/wx/doc/gen/pg/pg_properties.rb +2193 -0
  298. data/lib/wx/doc/gen/pg/pg_property.rb +1852 -0
  299. data/lib/wx/doc/gen/pg/pg_validation_info.rb +327 -0
  300. data/lib/wx/doc/gen/pg/property_grid.rb +619 -0
  301. data/lib/wx/doc/gen/pg/property_grid_event.rb +135 -0
  302. data/lib/wx/doc/gen/pg/property_grid_interface.rb +847 -0
  303. data/lib/wx/doc/gen/pg/property_grid_manager.rb +349 -0
  304. data/lib/wx/doc/gen/pg/property_grid_page.rb +265 -0
  305. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +155 -0
  306. data/lib/wx/doc/gen/picker_base.rb +143 -0
  307. data/lib/wx/doc/gen/platform_info.rb +379 -0
  308. data/lib/wx/doc/gen/popup_window.rb +93 -0
  309. data/lib/wx/doc/gen/progress_dialog.rb +106 -0
  310. data/lib/wx/doc/gen/property_sheet_dialog.rb +185 -0
  311. data/lib/wx/doc/gen/prt/event_list.rb +13 -0
  312. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +38 -0
  313. data/lib/wx/doc/gen/prt/post_script_dc.rb +32 -0
  314. data/lib/wx/doc/gen/prt/preview_frame.rb +39 -0
  315. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +127 -0
  316. data/lib/wx/doc/gen/prt/print_data.rb +598 -0
  317. data/lib/wx/doc/gen/prt/print_dialog.rb +47 -0
  318. data/lib/wx/doc/gen/prt/printer.rb +428 -0
  319. data/lib/wx/doc/gen/prt/printer_dc.rb +35 -0
  320. data/lib/wx/doc/gen/query_layout_info_event.rb +98 -0
  321. data/lib/wx/doc/gen/radio_box.rb +258 -0
  322. data/lib/wx/doc/gen/radio_button.rb +128 -0
  323. data/lib/wx/doc/gen/rbn/event_list.rb +132 -0
  324. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +1652 -0
  325. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +227 -0
  326. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +40 -0
  327. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +400 -0
  328. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +58 -0
  329. data/lib/wx/doc/gen/rbn/ribbon_control.rb +116 -0
  330. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +208 -0
  331. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +51 -0
  332. data/lib/wx/doc/gen/rbn/ribbon_page.rb +129 -0
  333. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +232 -0
  334. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +41 -0
  335. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +321 -0
  336. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +36 -0
  337. data/lib/wx/doc/gen/region.rb +299 -0
  338. data/lib/wx/doc/gen/rtc/event_list.rb +121 -0
  339. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +2052 -0
  340. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +2031 -0
  341. data/lib/wx/doc/gen/rtc/rich_text_event.rb +146 -0
  342. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +171 -0
  343. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +180 -0
  344. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +104 -0
  345. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +241 -0
  346. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +55 -0
  347. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +153 -0
  348. data/lib/wx/doc/gen/sash_event.rb +133 -0
  349. data/lib/wx/doc/gen/sash_layout_window.rb +203 -0
  350. data/lib/wx/doc/gen/sash_window.rb +154 -0
  351. data/lib/wx/doc/gen/screen_dc.rb +27 -0
  352. data/lib/wx/doc/gen/scrolled_canvas.rb +317 -0
  353. data/lib/wx/doc/gen/scrolled_control.rb +317 -0
  354. data/lib/wx/doc/gen/scrolled_window.rb +337 -0
  355. data/lib/wx/doc/gen/simplebook.rb +93 -0
  356. data/lib/wx/doc/gen/single_choice_dialog.rb +74 -0
  357. data/lib/wx/doc/gen/sizer.rb +847 -0
  358. data/lib/wx/doc/gen/sizer_item.rb +227 -0
  359. data/lib/wx/doc/gen/slider.rb +316 -0
  360. data/lib/wx/doc/gen/spin_button.rb +124 -0
  361. data/lib/wx/doc/gen/spin_ctrl.rb +170 -0
  362. data/lib/wx/doc/gen/spin_event.rb +47 -0
  363. data/lib/wx/doc/gen/splash_screen.rb +83 -0
  364. data/lib/wx/doc/gen/splitter_event.rb +87 -0
  365. data/lib/wx/doc/gen/splitter_window.rb +357 -0
  366. data/lib/wx/doc/gen/static_bitmap.rb +126 -0
  367. data/lib/wx/doc/gen/static_box.rb +123 -0
  368. data/lib/wx/doc/gen/static_box_sizer.rb +67 -0
  369. data/lib/wx/doc/gen/static_line.rb +66 -0
  370. data/lib/wx/doc/gen/static_text.rb +98 -0
  371. data/lib/wx/doc/gen/status_bar.rb +203 -0
  372. data/lib/wx/doc/gen/stc/event_list.rb +217 -0
  373. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +4000 -0
  374. data/lib/wx/doc/gen/stc/styled_text_event.rb +7319 -0
  375. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +74 -0
  376. data/lib/wx/doc/gen/svg_file_dc.rb +153 -0
  377. data/lib/wx/doc/gen/system_options.rb +109 -0
  378. data/lib/wx/doc/gen/system_settings.rb +481 -0
  379. data/lib/wx/doc/gen/task_bar_icon.rb +94 -0
  380. data/lib/wx/doc/gen/task_bar_icon_event.rb +86 -0
  381. data/lib/wx/doc/gen/text_attr.rb +645 -0
  382. data/lib/wx/doc/gen/text_ctrl.rb +841 -0
  383. data/lib/wx/doc/gen/text_entry.rb +389 -0
  384. data/lib/wx/doc/gen/text_entry_dialog.rb +170 -0
  385. data/lib/wx/doc/gen/text_validator.rb +212 -0
  386. data/lib/wx/doc/gen/time_picker_ctrl.rb +103 -0
  387. data/lib/wx/doc/gen/timer.rb +103 -0
  388. data/lib/wx/doc/gen/timer_event.rb +73 -0
  389. data/lib/wx/doc/gen/tip_provider.rb +60 -0
  390. data/lib/wx/doc/gen/toggle_button.rb +84 -0
  391. data/lib/wx/doc/gen/tool_bar.rb +744 -0
  392. data/lib/wx/doc/gen/tool_tip.rb +73 -0
  393. data/lib/wx/doc/gen/toolbook.rb +103 -0
  394. data/lib/wx/doc/gen/top_level_window.rb +462 -0
  395. data/lib/wx/doc/gen/tree_ctrl.rb +863 -0
  396. data/lib/wx/doc/gen/tree_event.rb +101 -0
  397. data/lib/wx/doc/gen/treebook.rb +154 -0
  398. data/lib/wx/doc/gen/utils.rb +257 -0
  399. data/lib/wx/doc/gen/v_list_box.rb +224 -0
  400. data/lib/wx/doc/gen/v_scrolled_window.rb +224 -0
  401. data/lib/wx/doc/gen/validator.rb +73 -0
  402. data/lib/wx/doc/gen/variant.rb +340 -0
  403. data/lib/wx/doc/gen/window.rb +2414 -0
  404. data/lib/wx/doc/gen/window_dc.rb +35 -0
  405. data/lib/wx/doc/gen/window_disabler.rb +24 -0
  406. data/lib/wx/doc/gen/with_images.rb +73 -0
  407. data/lib/wx/doc/gen/wizard.rb +197 -0
  408. data/lib/wx/doc/gen/wizard_event.rb +105 -0
  409. data/lib/wx/doc/gen/wizard_page.rb +61 -0
  410. data/lib/wx/doc/gen/wizard_page_simple.rb +72 -0
  411. data/lib/wx/doc/gen/xml_node.rb +282 -0
  412. data/lib/wx/doc/gen/xml_resource.rb +304 -0
  413. data/lib/wx/doc/grid/grid.rb +20 -0
  414. data/lib/wx/doc/help_controller.rb +14 -0
  415. data/lib/wx/doc/html/html_help_controller.rb +8 -0
  416. data/lib/wx/doc/pg/events.rb +15 -0
  417. data/lib/wx/doc/pg/pg_property.rb +8 -0
  418. data/lib/wx/doc/pg/pgeditor.rb +21 -0
  419. data/lib/wx/doc/pg/property_grid.rb +48 -0
  420. data/lib/wx/doc/pg/property_grid_interface.rb +64 -0
  421. data/lib/wx/doc/prt/page_setup_dialog.rb +15 -0
  422. data/lib/wx/doc/prt/print_data.rb +9 -0
  423. data/lib/wx/doc/prt/print_dialog.rb +26 -0
  424. data/lib/wx/doc/prt/printer.rb +15 -0
  425. data/lib/wx/doc/rbn/ribbon_bar.rb +9 -0
  426. data/lib/wx/doc/rbn/ribbon_button_bar.rb +9 -0
  427. data/lib/wx/doc/rbn/ribbon_gallery.rb +9 -0
  428. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +9 -0
  429. data/lib/wx/doc/rtc/richtext_printing.rb +14 -0
  430. data/lib/wx/doc/screen_dc.rb +10 -0
  431. data/lib/wx/doc/stock_objects.rb +98 -0
  432. data/lib/wx/doc/stream.rb +38 -0
  433. data/lib/wx/doc/system_settings.rb +29 -0
  434. data/lib/wx/doc/treebook.rb +9 -0
  435. data/lib/wx/doc/variant.rb +163 -0
  436. data/lib/wx/doc/xml_resource.rb +19 -0
  437. data/lib/wx/global_const.rb +84 -0
  438. data/lib/wx/grid/events/evt_list.rb +156 -0
  439. data/lib/wx/grid/grid.rb +7 -0
  440. data/lib/wx/grid/keyword_defs.rb +10 -0
  441. data/lib/wx/grid/require.rb +9 -0
  442. data/lib/wx/grid.rb +14 -0
  443. data/lib/wx/helpers.rb +65 -0
  444. data/lib/wx/html/events/evt_list.rb +37 -0
  445. data/lib/wx/html/htmlhelpcontroller.rb +6 -0
  446. data/lib/wx/html/htmlwindow.rb +19 -0
  447. data/lib/wx/html/keyword_defs.rb +22 -0
  448. data/lib/wx/html/require.rb +10 -0
  449. data/lib/wx/html.rb +15 -0
  450. data/lib/wx/keyword_ctors.rb +226 -0
  451. data/lib/wx/keyword_defs.rb +487 -0
  452. data/lib/wx/pg/events/evt_list.rb +73 -0
  453. data/lib/wx/pg/events.rb +14 -0
  454. data/lib/wx/pg/keyword_defs.rb +15 -0
  455. data/lib/wx/pg/pg_editor.rb +13 -0
  456. data/lib/wx/pg/pg_properties.rb +24 -0
  457. data/lib/wx/pg/pg_property.rb +26 -0
  458. data/lib/wx/pg/property_grid.rb +56 -0
  459. data/lib/wx/pg/property_grid_interface.rb +33 -0
  460. data/lib/wx/pg/require.rb +12 -0
  461. data/lib/wx/pg.rb +14 -0
  462. data/lib/wx/prt/keyword_defs.rb +8 -0
  463. data/lib/wx/prt/page_setup_dialog.rb +15 -0
  464. data/lib/wx/prt/previewframe.rb +13 -0
  465. data/lib/wx/prt/require.rb +8 -0
  466. data/lib/wx/prt.rb +14 -0
  467. data/lib/wx/rbn/events/evt_list.rb +102 -0
  468. data/lib/wx/rbn/events.rb +4 -0
  469. data/lib/wx/rbn/keyword_defs.rb +43 -0
  470. data/lib/wx/rbn/require.rb +12 -0
  471. data/lib/wx/rbn/ribbon_art_provider.rb +10 -0
  472. data/lib/wx/rbn/ribbon_bar.rb +12 -0
  473. data/lib/wx/rbn/ribbon_button_bar.rb +26 -0
  474. data/lib/wx/rbn/ribbon_control.rb +25 -0
  475. data/lib/wx/rbn/ribbon_gallery.rb +26 -0
  476. data/lib/wx/rbn/ribbon_page.rb +15 -0
  477. data/lib/wx/rbn/ribbon_panel.rb +15 -0
  478. data/lib/wx/rbn/ribbon_tool_bar.rb +26 -0
  479. data/lib/wx/rbn.rb +14 -0
  480. data/lib/wx/rtc/events/evt_list.rb +98 -0
  481. data/lib/wx/rtc/ext/rich_text_ctrl.rb +24 -0
  482. data/lib/wx/rtc/ext.rb +15 -0
  483. data/lib/wx/rtc/keyword_defs.rb +17 -0
  484. data/lib/wx/rtc/require.rb +8 -0
  485. data/lib/wx/rtc.rb +15 -0
  486. data/lib/wx/stc/events/evt_list.rb +178 -0
  487. data/lib/wx/stc/keyword_defs.rb +8 -0
  488. data/lib/wx/stc/require.rb +7 -0
  489. data/lib/wx/stc.rb +14 -0
  490. data/lib/wx/version.rb +3 -0
  491. data/lib/wx/wxruby/base.rb +87 -0
  492. data/lib/wx/wxruby/cmd/sampler.rb +68 -0
  493. data/lib/wx/wxruby/cmd/test.rb +27 -0
  494. data/lib/wx.rb +14 -0
  495. data/lib/wxruby_aui.so +0 -0
  496. data/lib/wxruby_core.so +0 -0
  497. data/lib/wxruby_grid.so +0 -0
  498. data/lib/wxruby_html.so +0 -0
  499. data/lib/wxruby_pg.so +0 -0
  500. data/lib/wxruby_prt.so +0 -0
  501. data/lib/wxruby_rbn.so +0 -0
  502. data/lib/wxruby_rtc.so +0 -0
  503. data/lib/wxruby_stc.so +0 -0
  504. data/rakelib/install.rb +220 -0
  505. data/rakelib/lib/config/cygwin.rb +6 -0
  506. data/rakelib/lib/config/linux.rb +78 -0
  507. data/rakelib/lib/config/macosx.rb +6 -0
  508. data/rakelib/lib/config/mingw.rb +133 -0
  509. data/rakelib/lib/config/netbsd.rb +6 -0
  510. data/rakelib/lib/config/unixish.rb +187 -0
  511. data/rakelib/lib/config.rb +673 -0
  512. data/rakelib/lib/ext/enum_chain.rb +22 -0
  513. data/rakelib/prepost.rake +91 -0
  514. data/rakelib/prepost.rb +26 -0
  515. data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +7 -0
  516. data/rakelib/yard/templates/default/layout/html/setup.rb +5 -0
  517. data/rakelib/yard/yard/relative_markdown_links/version.rb +8 -0
  518. data/rakelib/yard/yard/relative_markdown_links.rb +39 -0
  519. data/rakelib/yard/yard-custom-templates.rb +2 -0
  520. data/rakelib/yard/yard-relative_markdown_links.rb +4 -0
  521. data/samples/art/wxruby-128x128.png +0 -0
  522. data/samples/art/wxruby-256x256.png +0 -0
  523. data/samples/art/wxruby-64x64.png +0 -0
  524. data/samples/art/wxruby.ico +0 -0
  525. data/samples/art/wxruby.png +0 -0
  526. data/samples/aui/aui.rb +1321 -0
  527. data/samples/aui/tn_aui.png +0 -0
  528. data/samples/bigdemo/About.rbw +39 -0
  529. data/samples/bigdemo/ColorPanel.rbw +23 -0
  530. data/samples/bigdemo/GridSimple.rbw +78 -0
  531. data/samples/bigdemo/MDIDemo.rbw +57 -0
  532. data/samples/bigdemo/PopupMenu.rbw +146 -0
  533. data/samples/bigdemo/ShapedWindow.rbw +128 -0
  534. data/samples/bigdemo/Sizers.rbw +541 -0
  535. data/samples/bigdemo/bigdemo.rb +810 -0
  536. data/samples/bigdemo/demoTemplate.rbw +33 -0
  537. data/samples/bigdemo/helpfile.htb +0 -0
  538. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  539. data/samples/bigdemo/icons/Test 015.png +0 -0
  540. data/samples/bigdemo/icons/choice.bmp +0 -0
  541. data/samples/bigdemo/icons/choice.xpm +27 -0
  542. data/samples/bigdemo/icons/combo.bmp +0 -0
  543. data/samples/bigdemo/icons/combo.xpm +27 -0
  544. data/samples/bigdemo/icons/copy.xpm +25 -0
  545. data/samples/bigdemo/icons/cut.xpm +24 -0
  546. data/samples/bigdemo/icons/gauge.bmp +0 -0
  547. data/samples/bigdemo/icons/gauge.xpm +27 -0
  548. data/samples/bigdemo/icons/help.xpm +25 -0
  549. data/samples/bigdemo/icons/list.bmp +0 -0
  550. data/samples/bigdemo/icons/list.xpm +27 -0
  551. data/samples/bigdemo/icons/mondrian.ico +0 -0
  552. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  553. data/samples/bigdemo/icons/new.xpm +24 -0
  554. data/samples/bigdemo/icons/ogl.ico +0 -0
  555. data/samples/bigdemo/icons/ogl.xpm +45 -0
  556. data/samples/bigdemo/icons/open.xpm +26 -0
  557. data/samples/bigdemo/icons/paste.bmp +0 -0
  558. data/samples/bigdemo/icons/paste.xpm +38 -0
  559. data/samples/bigdemo/icons/pointy.png +0 -0
  560. data/samples/bigdemo/icons/preview.xpm +26 -0
  561. data/samples/bigdemo/icons/print.xpm +26 -0
  562. data/samples/bigdemo/icons/radio.bmp +0 -0
  563. data/samples/bigdemo/icons/radio.xpm +27 -0
  564. data/samples/bigdemo/icons/robert.xpm +415 -0
  565. data/samples/bigdemo/icons/sashtest.ico +0 -0
  566. data/samples/bigdemo/icons/save.xpm +25 -0
  567. data/samples/bigdemo/icons/smiles.bmp +0 -0
  568. data/samples/bigdemo/icons/smiles.xpm +39 -0
  569. data/samples/bigdemo/icons/smiley.ico +0 -0
  570. data/samples/bigdemo/icons/smiley.xpm +42 -0
  571. data/samples/bigdemo/icons/stattext.xpm +24 -0
  572. data/samples/bigdemo/icons/test2.bmp +0 -0
  573. data/samples/bigdemo/icons/test2.png +0 -0
  574. data/samples/bigdemo/icons/test2.xpm +79 -0
  575. data/samples/bigdemo/icons/text.bmp +0 -0
  576. data/samples/bigdemo/icons/text.xpm +27 -0
  577. data/samples/bigdemo/icons/tog1.bmp +0 -0
  578. data/samples/bigdemo/icons/tog1.xpm +38 -0
  579. data/samples/bigdemo/icons/tog2.bmp +0 -0
  580. data/samples/bigdemo/icons/tog2.xpm +38 -0
  581. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  582. data/samples/bigdemo/icons/wxwin.ico +0 -0
  583. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  584. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  585. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  586. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  587. data/samples/bigdemo/run.rb +91 -0
  588. data/samples/bigdemo/tips.txt +7 -0
  589. data/samples/bigdemo/utils.rb +12 -0
  590. data/samples/bigdemo/wxArtProvider.rbw +281 -0
  591. data/samples/bigdemo/wxBitmapButton.rbw +65 -0
  592. data/samples/bigdemo/wxButton.rbw +64 -0
  593. data/samples/bigdemo/wxCalendarCtrl.rbw +59 -0
  594. data/samples/bigdemo/wxCheckBox.rbw +50 -0
  595. data/samples/bigdemo/wxCheckListBox.rbw +65 -0
  596. data/samples/bigdemo/wxChoice.rbw +47 -0
  597. data/samples/bigdemo/wxChoicebook.rbw +78 -0
  598. data/samples/bigdemo/wxColourDialog.rbw +33 -0
  599. data/samples/bigdemo/wxComboBox.rbw +77 -0
  600. data/samples/bigdemo/wxCursor.rbw +136 -0
  601. data/samples/bigdemo/wxDialog.rbw +74 -0
  602. data/samples/bigdemo/wxDirDialog.rbw +29 -0
  603. data/samples/bigdemo/wxDragImage.rbw +70 -0
  604. data/samples/bigdemo/wxFileDialog.rbw +37 -0
  605. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
  606. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
  607. data/samples/bigdemo/wxFontDialog.rbw +200 -0
  608. data/samples/bigdemo/wxFrame.rbw +53 -0
  609. data/samples/bigdemo/wxGauge.rbw +65 -0
  610. data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
  611. data/samples/bigdemo/wxGrid.rbw +66 -0
  612. data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
  613. data/samples/bigdemo/wxListBox.rbw +140 -0
  614. data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -0
  615. data/samples/bigdemo/wxMDIWindows.rbw +50 -0
  616. data/samples/bigdemo/wxMenu.rbw +247 -0
  617. data/samples/bigdemo/wxMessageDialog.rbw +27 -0
  618. data/samples/bigdemo/wxMiniFrame.rbw +70 -0
  619. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +29 -0
  620. data/samples/bigdemo/wxNotebook.rbw +136 -0
  621. data/samples/bigdemo/wxProgressDialog.rbw +43 -0
  622. data/samples/bigdemo/wxRadioBox.rbw +72 -0
  623. data/samples/bigdemo/wxRadioButton.rbw +125 -0
  624. data/samples/bigdemo/wxSashWindow.rbw +141 -0
  625. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
  626. data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
  627. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
  628. data/samples/bigdemo/wxSlider.rbw +42 -0
  629. data/samples/bigdemo/wxSpinButton.rbw +50 -0
  630. data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
  631. data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
  632. data/samples/bigdemo/wxStaticBitmap.rbw +47 -0
  633. data/samples/bigdemo/wxStaticText.rbw +55 -0
  634. data/samples/bigdemo/wxStatusBar.rbw +126 -0
  635. data/samples/bigdemo/wxTextCtrl.rbw +149 -0
  636. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
  637. data/samples/bigdemo/wxToggleButton.rbw +49 -0
  638. data/samples/bigdemo/wxToolBar.rbw +131 -0
  639. data/samples/bigdemo/wxTreeCtrl.rbw +191 -0
  640. data/samples/calendar/calendar.rb +363 -0
  641. data/samples/calendar/tn_calendar.png +0 -0
  642. data/samples/caret/caret.rb +293 -0
  643. data/samples/caret/mondrian.xpm +44 -0
  644. data/samples/caret/tn_caret.png +0 -0
  645. data/samples/controls/books.rb +183 -0
  646. data/samples/controls/controls.rb +1143 -0
  647. data/samples/controls/get_item_sample.rb +117 -0
  648. data/samples/controls/icons/choice.xpm +27 -0
  649. data/samples/controls/icons/combo.xpm +27 -0
  650. data/samples/controls/icons/gauge.xpm +27 -0
  651. data/samples/controls/icons/list.xpm +27 -0
  652. data/samples/controls/icons/radio.xpm +27 -0
  653. data/samples/controls/icons/stattext.xpm +24 -0
  654. data/samples/controls/icons/text.xpm +27 -0
  655. data/samples/controls/mondrian.ico +0 -0
  656. data/samples/controls/mondrian.xpm +44 -0
  657. data/samples/controls/test2.bmp +0 -0
  658. data/samples/controls/tn_books.png +0 -0
  659. data/samples/controls/tn_controls.png +0 -0
  660. data/samples/controls/tn_get_item_sample.png +0 -0
  661. data/samples/dialogs/dialogs.rb +879 -0
  662. data/samples/dialogs/tips.txt +18 -0
  663. data/samples/dialogs/tn_dialogs.png +0 -0
  664. data/samples/dialogs/tn_wizard.png +0 -0
  665. data/samples/dialogs/wizard.rb +89 -0
  666. data/samples/dragdrop/dragdrop.rb +200 -0
  667. data/samples/dragdrop/tn_dragdrop.png +0 -0
  668. data/samples/drawing/SVGlogo24.xpm +310 -0
  669. data/samples/drawing/bitmap.rb +76 -0
  670. data/samples/drawing/bitmap_image.rb +131 -0
  671. data/samples/drawing/graphics_drawing.rb +257 -0
  672. data/samples/drawing/maths_images.rb +327 -0
  673. data/samples/drawing/rmagic_bitmap_image.rb +139 -0
  674. data/samples/drawing/ruby-logo.jpg +0 -0
  675. data/samples/drawing/svgtest.rb +373 -0
  676. data/samples/drawing/tn_bitmap.png +0 -0
  677. data/samples/drawing/tn_bitmap_image.png +0 -0
  678. data/samples/drawing/tn_graphics_drawing.png +0 -0
  679. data/samples/drawing/tn_maths_images.png +0 -0
  680. data/samples/drawing/tn_rmagic_bitmap_image.png +0 -0
  681. data/samples/drawing/tn_svgtest.png +0 -0
  682. data/samples/etc/choice.rb +82 -0
  683. data/samples/etc/miniframe.rb +92 -0
  684. data/samples/etc/sash.rb +140 -0
  685. data/samples/etc/scrollwin.rb +120 -0
  686. data/samples/etc/system_settings.rb +263 -0
  687. data/samples/etc/tn_choice.png +0 -0
  688. data/samples/etc/tn_miniframe.png +0 -0
  689. data/samples/etc/tn_sash.png +0 -0
  690. data/samples/etc/tn_scrollwin.png +0 -0
  691. data/samples/etc/tn_system_settings.png +0 -0
  692. data/samples/event/activation.rb +129 -0
  693. data/samples/event/event.rb +220 -0
  694. data/samples/event/threaded.rb +141 -0
  695. data/samples/event/tn_activation.png +0 -0
  696. data/samples/event/tn_event.png +0 -0
  697. data/samples/event/tn_threaded.png +0 -0
  698. data/samples/event/tn_update_ui_event.png +0 -0
  699. data/samples/event/update_ui_event.rb +91 -0
  700. data/samples/grid/grid.rb +224 -0
  701. data/samples/grid/gridtablebase.rb +178 -0
  702. data/samples/grid/tn_grid.png +0 -0
  703. data/samples/grid/tn_gridtablebase.png +0 -0
  704. data/samples/html/8859_2.htm +14 -0
  705. data/samples/html/cp1250.htm +19 -0
  706. data/samples/html/foo.png +0 -0
  707. data/samples/html/html.rb +278 -0
  708. data/samples/html/i18n.gif +0 -0
  709. data/samples/html/imagemap.htm +20 -0
  710. data/samples/html/imagemap.png +0 -0
  711. data/samples/html/listtest.htm +28 -0
  712. data/samples/html/pic.png +0 -0
  713. data/samples/html/pic2.bmp +0 -0
  714. data/samples/html/regres.htm +20 -0
  715. data/samples/html/subsup.html +42 -0
  716. data/samples/html/tables.htm +255 -0
  717. data/samples/html/test.htm +375 -0
  718. data/samples/html/tn_html.png +0 -0
  719. data/samples/mdi/mdi.rb +118 -0
  720. data/samples/mdi/tn_mdi.png +0 -0
  721. data/samples/minimal/minimal.rb +95 -0
  722. data/samples/minimal/mondrian.ico +0 -0
  723. data/samples/minimal/mondrian.png +0 -0
  724. data/samples/minimal/nothing.rb +38 -0
  725. data/samples/minimal/tn_minimal.png +0 -0
  726. data/samples/minimal/tn_nothing.png +0 -0
  727. data/samples/printing/mondrian.ico +0 -0
  728. data/samples/printing/mondrian.xpm +44 -0
  729. data/samples/printing/printing.rb +499 -0
  730. data/samples/printing/printing2.rb +251 -0
  731. data/samples/printing/sample-text.txt +213 -0
  732. data/samples/printing/tn_printing.png +0 -0
  733. data/samples/printing/tn_printing2.png +0 -0
  734. data/samples/propgrid/propgrid.rb +2707 -0
  735. data/samples/propgrid/propgrid_minimal.rb +106 -0
  736. data/samples/propgrid/sample_props.rb +434 -0
  737. data/samples/propgrid/tn_propgrid.png +0 -0
  738. data/samples/propgrid/tn_propgrid_minimal.png +0 -0
  739. data/samples/ribbon/align_center.xpm +21 -0
  740. data/samples/ribbon/align_left.xpm +21 -0
  741. data/samples/ribbon/align_right.xpm +21 -0
  742. data/samples/ribbon/aui_style.xpm +53 -0
  743. data/samples/ribbon/auto_crop_selection.xpm +55 -0
  744. data/samples/ribbon/auto_crop_selection_small.xpm +33 -0
  745. data/samples/ribbon/circle.xpm +38 -0
  746. data/samples/ribbon/circle_small.xpm +22 -0
  747. data/samples/ribbon/colours.xpm +25 -0
  748. data/samples/ribbon/cross.xpm +38 -0
  749. data/samples/ribbon/empty.xpm +23 -0
  750. data/samples/ribbon/expand_selection_h.xpm +46 -0
  751. data/samples/ribbon/expand_selection_v.xpm +46 -0
  752. data/samples/ribbon/eye.xpm +26 -0
  753. data/samples/ribbon/hexagon.xpm +38 -0
  754. data/samples/ribbon/msw_style.xpm +65 -0
  755. data/samples/ribbon/position_left.xpm +22 -0
  756. data/samples/ribbon/position_top.xpm +22 -0
  757. data/samples/ribbon/ribbon.rb +900 -0
  758. data/samples/ribbon/ribbon.xpm +54 -0
  759. data/samples/ribbon/selection_panel.xpm +23 -0
  760. data/samples/ribbon/square.xpm +38 -0
  761. data/samples/ribbon/tn_ribbon.png +0 -0
  762. data/samples/ribbon/triangle.xpm +38 -0
  763. data/samples/sample.xpm +475 -0
  764. data/samples/sampler/back.xpm +21 -0
  765. data/samples/sampler/copy.xpm +44 -0
  766. data/samples/sampler/cut.xpm +46 -0
  767. data/samples/sampler/editor.rb +534 -0
  768. data/samples/sampler/ext.rb +51 -0
  769. data/samples/sampler/filesave.xpm +42 -0
  770. data/samples/sampler/find.xpm +62 -0
  771. data/samples/sampler/findrepl.xpm +63 -0
  772. data/samples/sampler/forward.xpm +21 -0
  773. data/samples/sampler/paste.xpm +46 -0
  774. data/samples/sampler/play.xpm +24 -0
  775. data/samples/sampler/redo.xpm +58 -0
  776. data/samples/sampler/sample.rb +337 -0
  777. data/samples/sampler/stc_editor.rb +326 -0
  778. data/samples/sampler/txt_editor.rb +135 -0
  779. data/samples/sampler/undo.xpm +58 -0
  780. data/samples/sampler.rb +401 -0
  781. data/samples/splash/mobile.xpm +1835 -0
  782. data/samples/splash/splash.png +0 -0
  783. data/samples/splash/splash.rb +164 -0
  784. data/samples/splash/tn_splash.png +0 -0
  785. data/samples/text/document-open.png +0 -0
  786. data/samples/text/document-save.png +0 -0
  787. data/samples/text/edit-copy.png +0 -0
  788. data/samples/text/edit-cut.png +0 -0
  789. data/samples/text/edit-paste.png +0 -0
  790. data/samples/text/edit-redo.png +0 -0
  791. data/samples/text/edit-undo.png +0 -0
  792. data/samples/text/format-text-bold.png +0 -0
  793. data/samples/text/format-text-italic.png +0 -0
  794. data/samples/text/format-text-underline.png +0 -0
  795. data/samples/text/mondrian.ico +0 -0
  796. data/samples/text/mondrian.xpm +44 -0
  797. data/samples/text/preferences-desktop-font.png +0 -0
  798. data/samples/text/rich_textctrl.rb +326 -0
  799. data/samples/text/scintilla.rb +179 -0
  800. data/samples/text/textctrl.rb +124 -0
  801. data/samples/text/tn_rich_textctrl.png +0 -0
  802. data/samples/text/tn_scintilla.png +0 -0
  803. data/samples/text/tn_textctrl.png +0 -0
  804. data/samples/text/tn_unicode.png +0 -0
  805. data/samples/text/unicode.rb +238 -0
  806. data/samples/text/utf8.txt +15 -0
  807. data/samples/treectrl/checked.xpm +54 -0
  808. data/samples/treectrl/icon1.xpm +79 -0
  809. data/samples/treectrl/icon2.xpm +53 -0
  810. data/samples/treectrl/icon3.xpm +79 -0
  811. data/samples/treectrl/icon4.xpm +43 -0
  812. data/samples/treectrl/icon5.xpm +79 -0
  813. data/samples/treectrl/state1.xpm +145 -0
  814. data/samples/treectrl/state2.xpm +144 -0
  815. data/samples/treectrl/state3.xpm +142 -0
  816. data/samples/treectrl/state4.xpm +145 -0
  817. data/samples/treectrl/state5.xpm +85 -0
  818. data/samples/treectrl/tn_treectrl.png +0 -0
  819. data/samples/treectrl/treectrl.rb +1720 -0
  820. data/samples/treectrl/unchecked.xpm +30 -0
  821. data/samples/xrc/custom_dialog.xrc +46 -0
  822. data/samples/xrc/custom_xrc_sample.rb +84 -0
  823. data/samples/xrc/samples.xrc +46 -0
  824. data/samples/xrc/tn_xrc_sample.png +0 -0
  825. data/samples/xrc/xrc_sample.rb +86 -0
  826. data/tests/test_basic.rb +20 -0
  827. data/tests/test_clipboard.rb +241 -0
  828. data/tests/test_dialog.rb +28 -0
  829. data/tests/test_event_handling.rb +103 -0
  830. data/tests/test_events.rb +45 -0
  831. data/tests/test_geometry.rb +141 -0
  832. data/tests/test_intl.rb +107 -0
  833. data/tests/test_item_data.rb +120 -0
  834. data/tests/test_variant.rb +151 -0
  835. data/tests/testapp.rb +40 -0
  836. data/tests/testapp_noframe.rb +28 -0
  837. metadata +928 -0
@@ -0,0 +1,1720 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Adapted for wxRuby3
4
+ # Copyright (c) M.J.N. Corino, The Netherlands
5
+ ###
6
+
7
+ require 'wx'
8
+
9
+ # This sample shows off the features of the TreeCtrl widget. The actual
10
+ # features vary somewhat across platforms; for example, the button
11
+ # styles and connecting lines between items are not available on OS X.
12
+ # Also, some items remain to be implemented - for example, setting item
13
+ # icons and item data.
14
+
15
+ # Just some event ids for the numerous menu items
16
+ TreeTest_TogButtons,
17
+ TreeTest_TogTwist,
18
+ TreeTest_TogLines,
19
+ TreeTest_TogEdit,
20
+ TreeTest_TogHideRoot,
21
+ TreeTest_TogRootLines,
22
+ TreeTest_TogBorder,
23
+ TreeTest_TogFullHighlight,
24
+ TreeTest_SetFgColour,
25
+ TreeTest_SetBgColour,
26
+ TreeTest_ResetStyle,
27
+ TreeTest_Highlight,
28
+ TreeTest_Dump,
29
+ TreeTest_DumpSelected,
30
+ TreeTest_Count,
31
+ TreeTest_CountRec,
32
+ TreeTest_Sort,
33
+ TreeTest_SortRev,
34
+ TreeTest_SetBold,
35
+ TreeTest_ClearBold,
36
+ TreeTest_Rename,
37
+ TreeTest_Delete,
38
+ TreeTest_DeleteChildren,
39
+ TreeTest_DeleteAll,
40
+ TreeTest_SelectRoot,
41
+ TreeTest_SetFocusedRoot,
42
+ TreeTest_ClearFocused,
43
+ TreeTest_FreezeThaw,
44
+ TreeTest_Recreate,
45
+ TreeTest_ToggleImages,
46
+ TreeTest_ToggleStates,
47
+ TreeTest_ToggleBell,
48
+ TreeTest_ToggleAlternateImages,
49
+ TreeTest_ToggleAlternateStates,
50
+ TreeTest_ToggleButtons,
51
+ TreeTest_SetImageSize,
52
+ TreeTest_ToggleSel,
53
+ TreeTest_CollapseAndReset,
54
+ TreeTest_EnsureVisible,
55
+ TreeTest_SetFocus,
56
+ TreeTest_AddItem,
57
+ TreeTest_AddManyItems,
58
+ TreeTest_InsertItem,
59
+ TreeTest_IncIndent,
60
+ TreeTest_DecIndent,
61
+ TreeTest_IncSpacing,
62
+ TreeTest_DecSpacing,
63
+ TreeTest_ToggleIcon,
64
+ TreeTest_ToggleState,
65
+ TreeTest_ShowFirstVisible,
66
+ TreeTest_ShowLastVisible,
67
+ TreeTest_ShowNextVisible,
68
+ TreeTest_ShowPrevVisible,
69
+ TreeTest_ShowParent,
70
+ TreeTest_ShowPrevSibling,
71
+ TreeTest_ShowNextSibling,
72
+ TreeTest_ScrollTo,
73
+ TreeTest_SelectLast,
74
+ TreeTest_Select,
75
+ TreeTest_Unselect,
76
+ TreeTest_SelectChildren = (Wx::ID_HIGHEST..Wx::ID_HIGHEST + 61).to_a
77
+
78
+ TreeCtrlIcon_File,
79
+ TreeCtrlIcon_FileSelected,
80
+ TreeCtrlIcon_Folder,
81
+ TreeCtrlIcon_FolderSelected,
82
+ TreeCtrlIcon_FolderOpened = 0, 1, 2, 3, 4
83
+
84
+ class MyTreeCtrl < Wx::TreeCtrl
85
+ def initialize(parent, *args)
86
+ super(parent, *args)
87
+
88
+ @alternate_images = false
89
+ @alternate_states = false
90
+ @reverse_sort = false
91
+
92
+ create_image_list(16)
93
+ create_state_imageList
94
+
95
+ # add some items to the tree
96
+ add_test_items_to_tree(5, 2)
97
+
98
+ # TreeCtrl supports a large number of different events...
99
+ evt_tree_begin_drag self, :on_begin_drag
100
+ evt_tree_begin_rdrag self, :on_begin_rdrag
101
+ evt_tree_end_drag self, :on_end_drag
102
+ evt_tree_begin_label_edit self, :on_begin_label_edit
103
+ evt_tree_end_label_edit self, :on_end_label_edit
104
+ evt_tree_delete_item self, :on_delete_item
105
+ #evt_tree_set_info self, :on_set_info
106
+ evt_tree_item_expanded self, :on_item_expanded
107
+ evt_tree_item_expanding self, :on_item_expanding
108
+ evt_tree_item_collapsed self, :on_item_collapsed
109
+ evt_tree_item_collapsing self, :on_item_collapsing
110
+ evt_tree_sel_changed self, :on_sel_changed
111
+ evt_tree_sel_changing self, :on_sel_changing
112
+ evt_tree_key_down self, :on_tree_key_down
113
+ evt_tree_item_activated self, :on_item_activated
114
+ evt_tree_state_image_click self, :on_item_state_clicked
115
+
116
+ # EVT_TREE_ITEM_MENU is the preferred event for creating context menus
117
+ # on a tree control, because it includes the point of the click or item,
118
+ # meaning that no additional placement calculations are required.
119
+ evt_tree_item_menu self, :on_item_menu
120
+ evt_tree_item_right_click self, :on_item_rclick
121
+
122
+ evt_context_menu :on_context_menu
123
+
124
+ evt_right_dclick :on_rmouse_dclick
125
+ evt_right_down :on_rmouse_down
126
+ evt_right_up :on_rmouse_up
127
+ end
128
+
129
+ attr_accessor :alternate_images, :alternate_states, :reverse_sort
130
+
131
+ def reset_broken_state_images
132
+ count = self.state_image_list.get_image_count
133
+ state = count > 0 ? count - 1 : Wx::TREE_ITEMSTATE_NONE
134
+ do_reset_broken_state_images(self.root_item, nil, state)
135
+ end
136
+
137
+ def do_reset_broken_state_images(parent, cookie, state)
138
+ unless cookie
139
+ id, cookie = get_first_child(parent)
140
+ else
141
+ id, cookie = get_next_child(parent, cookie)
142
+ end
143
+
144
+ return unless id.ok?
145
+
146
+ curState = get_item_state(id)
147
+
148
+ set_item_state(id, state) if curState != Wx::TREE_ITEMSTATE_NONE && curState > state
149
+
150
+ do_reset_broken_state_images(id, nil, state) if item_has_children(id)
151
+
152
+ do_reset_broken_state_images(parent, cookie, state)
153
+ end
154
+
155
+ def show_info(id)
156
+ Wx::log_message("Item '%s': %sselected, %sexpanded, %sbold,\n" +
157
+ "%d children (%d immediately under selected item).",
158
+ get_item_text(id),
159
+ bool_to_str(is_selected(id)),
160
+ bool_to_str(is_expanded(id)),
161
+ bool_to_str(is_bold(id)),
162
+ get_children_count(id),
163
+ get_children_count(id, false))
164
+ end
165
+
166
+ def bool_to_str(bool)
167
+ bool ? " " : "not "
168
+ end
169
+
170
+ def do_sort_children(item, reverse = false)
171
+ @reverse_sort = reverse
172
+ sort_children(item)
173
+ end
174
+
175
+ def do_ensure_visible
176
+ ensure_visible(@last_item)
177
+ end
178
+
179
+ def image_size
180
+ return @image_size
181
+ end
182
+
183
+ def is_test_item(item)
184
+ # the test item is the first child folder
185
+ return item_parent(item) == root_item && !prev_sibling(item)
186
+ end
187
+
188
+ def create_image_list(size)
189
+ if size < 0
190
+ unset_image_list
191
+ return
192
+ elsif size == 0
193
+ size = @image_size
194
+ else
195
+ @image_size = size
196
+ end
197
+
198
+ Wx::BusyCursor.busy do
199
+ # should correspond to TreeCtrlIcon_xxx enum
200
+ icons = if @alternate_images
201
+ [Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon1.xpm'), Wx::BITMAP_TYPE_XPM),
202
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon2.xpm'), Wx::BITMAP_TYPE_XPM),
203
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon3.xpm'), Wx::BITMAP_TYPE_XPM),
204
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon4.xpm'), Wx::BITMAP_TYPE_XPM),
205
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon5.xpm'), Wx::BITMAP_TYPE_XPM),
206
+ ]
207
+ else
208
+ icon_size = Wx::Size.new(@image_size, @image_size)
209
+ ic1 = Wx::ArtProvider::get_icon(Wx::ART_NORMAL_FILE, Wx::ART_LIST, icon_size)
210
+ ic2 = Wx::ArtProvider::get_icon(Wx::ART_FOLDER, Wx::ART_LIST, icon_size)
211
+ [ic1, ic1, ic2, ic2, ic2]
212
+ end
213
+
214
+ # Make an image list containing small icons
215
+ images = Wx::ImageList.new(@image_size, @image_size, true)
216
+ icons.each do |ic|
217
+ orig_size = ic.get_width
218
+ ic = if @image_size == orig_size
219
+ ic
220
+ else
221
+ Wx::Bitmap.new(ic.convert_to_image.rescale(@image_size, @image_size))
222
+ end
223
+ images.add(ic)
224
+ end
225
+ self.image_list = images
226
+ end
227
+ end
228
+
229
+ def unset_image_list
230
+ self.image_list = nil
231
+ end
232
+
233
+ def create_state_imageList(del = false)
234
+ if del
235
+ self.state_image_list = nil
236
+ return
237
+ end
238
+
239
+ Wx::BusyCursor.busy do
240
+ icons = if @alternate_states
241
+ [Wx::Icon.new(File.join(File.dirname(__FILE__), 'state1.xpm'), Wx::BITMAP_TYPE_XPM),
242
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'state2.xpm'), Wx::BITMAP_TYPE_XPM),
243
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'state3.xpm'), Wx::BITMAP_TYPE_XPM),
244
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'state4.xpm'), Wx::BITMAP_TYPE_XPM),
245
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'state5.xpm'), Wx::BITMAP_TYPE_XPM)]
246
+
247
+ else
248
+ [Wx::Icon.new(File.join(File.dirname(__FILE__), 'unchecked.xpm'), Wx::BITMAP_TYPE_XPM),
249
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'checked.xpm'), Wx::BITMAP_TYPE_XPM)]
250
+ end
251
+
252
+ width = icons[0].width
253
+ height = icons[0].height
254
+
255
+ # Make a state image list containing small icons
256
+ states = Wx::ImageList.new(width, height, true)
257
+
258
+ icons.each { |ic| states.add(ic) }
259
+
260
+ self.state_image_list = states
261
+ end
262
+ end
263
+
264
+ def create_buttons_image_list(size)
265
+ if size < 0
266
+ self.buttons_image_list = nil
267
+ return
268
+ end
269
+
270
+ # Make an image list containing small icons
271
+ images = Wx::ImageList.new(size, size, true)
272
+
273
+ # should correspond to TreeCtrlIcon_xxx enum
274
+ Wx::BusyCursor.busy do
275
+ icons = if @alternate_images
276
+ [Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon3.xpm'), Wx::BITMAP_TYPE_XPM),
277
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon3.xpm'), Wx::BITMAP_TYPE_XPM),
278
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon5.xpm'), Wx::BITMAP_TYPE_XPM),
279
+ Wx::Icon.new(File.join(File.dirname(__FILE__), 'icon5.xpm'), Wx::BITMAP_TYPE_XPM)
280
+ ]
281
+ else
282
+ icon_size = Wx::Size.new(@image_size, @image_size)
283
+ ic1 = Wx::ArtProvider::get_icon(Wx::ART_FOLDER, Wx::ART_LIST, icon_size)
284
+ ic2 = Wx::ArtProvider::get_icon(Wx::ART_FOLDER_OPEN, Wx::ART_LIST, icon_size)
285
+ [ic1, ic1, ic2, ic2]
286
+ end
287
+
288
+ icons.each do |ic|
289
+ if ic.width == size
290
+ images.add(ic)
291
+ else
292
+ resized = ic.convert_to_image.rescale(size, size)
293
+ images.add(Wx::Bitmap.new(resized))
294
+ end
295
+ end
296
+
297
+ self.buttons_image_list = images
298
+ end
299
+ end
300
+
301
+ def on_compare_items(item1, item2)
302
+ if @reverse_sort
303
+ # just exchange 1st and 2nd items
304
+ return super(item2, item1)
305
+ else
306
+ return super(item1, item2)
307
+ end
308
+ end
309
+
310
+ def add_items_recursively(parent_id, num_children, depth, folder)
311
+ if depth > 0
312
+ has_children = depth > 1
313
+
314
+ (0...num_children).each do |n|
315
+ # at depth 1 elements won't have any more children
316
+ if has_children
317
+ str = "Folder child #{n + 1}"
318
+ else
319
+ str = "File child #{folder}.#{n + 1}"
320
+ end
321
+ # here we pass to append_item normal and selected item images (we
322
+ # suppose that selected image follows the normal one in the enum)
323
+ if Wx::THE_APP.show_images
324
+ image = depth == 1 ? TreeCtrlIcon_File : TreeCtrlIcon_Folder
325
+ imageSel = image + 1
326
+ else
327
+ image = imageSel = -1
328
+ end
329
+ id = append_item(parent_id, str, image, imageSel)
330
+
331
+ set_item_state(id, 0) if Wx::THE_APP.show_states
332
+
333
+ # and now we also set the expanded one (only for the folders)
334
+ if has_children && Wx::get_app.show_images
335
+ set_item_image(id, TreeCtrlIcon_FolderOpened, Wx::TreeItemIcon_Expanded)
336
+ end
337
+
338
+ # remember the last child for OnEnsureVisible()
339
+ if !has_children && n == num_children - 1
340
+ @last_item = id
341
+ end
342
+
343
+ add_items_recursively(id, num_children, depth - 1, n + 1)
344
+ end
345
+ end
346
+ end
347
+
348
+ def add_test_items_to_tree(num_children, depth)
349
+ image = Wx::THE_APP.show_images ? TreeCtrlIcon_Folder : -1
350
+ root_id = add_root("Root", image, image, 'Root item')
351
+ if !self.has_flag(Wx::TR_HIDE_ROOT) && image != -1
352
+ set_item_image(root_id, TreeCtrlIcon_FolderOpened, Wx::TreeItemIcon_Expanded)
353
+ end
354
+
355
+ add_items_recursively(root_id, num_children, depth, 0)
356
+
357
+ # set some colours/fonts for testing
358
+ # note that font sizes can also be varied, but only on platforms
359
+ # that use the generic TreeCtrl - OS X and GTK, and only if
360
+ # Wx::TR_HAS_VARIABLE_ROW_HEIGHT style was used in the constructor
361
+ if !self.has_flag(Wx::TR_HIDE_ROOT)
362
+ set_item_font(root_id, Wx::ITALIC_FONT)
363
+ end
364
+
365
+ ids = get_children(root_id)
366
+
367
+ # make the first item blue
368
+ set_item_text_colour(ids[0], Wx::BLUE)
369
+
370
+ # make the third item red on grey
371
+ set_item_text_colour(ids[2], Wx::RED)
372
+ set_item_background_colour(ids[2], Wx::LIGHT_GREY)
373
+ end
374
+
375
+ def get_last_tree_item
376
+ item = self.root_item
377
+ while item.ok?
378
+ itemChild = get_last_child(item)
379
+ break unless itemChild.ok?
380
+
381
+ item = itemChild
382
+ end
383
+
384
+ item
385
+ end
386
+ alias :last_tree_item :get_last_tree_item
387
+
388
+ def get_items_recursively(parent_id, cookie)
389
+ if cookie == -1
390
+ id, cookie = get_first_child(parent_id)
391
+ else
392
+ id, cookie = get_next_child(parent_id, cookie)
393
+ end
394
+ unless id.ok?
395
+ return nil
396
+ end
397
+
398
+ text = item_text(id)
399
+ Wx::log_message(text)
400
+
401
+ if item_has_children(id)
402
+ get_items_recursively(id, -1)
403
+ end
404
+ get_items_recursively(parent_id, cookie)
405
+ end
406
+
407
+ def do_toggle_icon(item)
408
+ old_img = get_item_image(item)
409
+ if old_img == TreeCtrlIcon_Folder
410
+ new_img = TreeCtrlIcon_File
411
+ else
412
+ new_img = TreeCtrlIcon_Folder
413
+ end
414
+
415
+ set_item_image(item, new_img, Wx::TreeItemIcon_Normal)
416
+
417
+ old_img = get_item_image(item, Wx::TreeItemIcon_Selected)
418
+ if old_img == TreeCtrlIcon_Folder
419
+ new_img = TreeCtrlIcon_File
420
+ else
421
+ new_img = TreeCtrlIcon_Folder
422
+ end
423
+
424
+ set_item_image(item, new_img, Wx::TreeItemIcon_Selected)
425
+ end
426
+
427
+ def do_toggle_state(item)
428
+ if @alternate_states
429
+ # sets random state unlike current
430
+ nState = state = get_item_state(item)
431
+
432
+ nimg = state_image_list.image_count
433
+ nState = (rand(::Time.now.to_i) % nimg) until nState != state
434
+
435
+ set_item_state(item, nState)
436
+ else
437
+ # we have only 2 checkbox states, so next state will be reversed
438
+ set_item_state(item, Wx::TREE_ITEMSTATE_NEXT)
439
+ end
440
+ end
441
+
442
+ def on_begin_rdrag(event)
443
+ Wx::log_message("OnBeginRDrag")
444
+ event.skip
445
+ end
446
+
447
+ def on_delete_item(event)
448
+ Wx::log_message("OnDeleteItem")
449
+ event.skip
450
+ end
451
+
452
+ def on_get_info(event)
453
+ Wx::log_message("OnGetInfo")
454
+ event.skip
455
+ end
456
+
457
+ def on_set_info(event)
458
+ Wx::log_message("OnSetInfo")
459
+ event.skip
460
+ end
461
+
462
+ def on_item_expanded(event)
463
+ Wx::log_message("OnItemExpanded")
464
+ event.skip
465
+ end
466
+
467
+ def on_item_expanding(event)
468
+ Wx::log_message("OnItemExpanding")
469
+ event.skip
470
+ end
471
+
472
+ def on_item_collapsed(event)
473
+ Wx::log_message("OnItemCollapsed")
474
+ event.skip
475
+ end
476
+
477
+ def on_sel_changed(event)
478
+ Wx::log_message("OnSelChanged")
479
+ event.skip
480
+ end
481
+
482
+ def on_sel_changing(event)
483
+ Wx::log_message("OnSelChanging")
484
+ event.skip
485
+ end
486
+
487
+ def log_key_event(name, event)
488
+ keycode = event.key_code
489
+
490
+ case keycode
491
+ when Wx::K_BACK
492
+ key = "BACK"
493
+ when Wx::K_TAB
494
+ key = "TAB"
495
+ when Wx::K_RETURN
496
+ key = "RETURN"
497
+ when Wx::K_ESCAPE
498
+ key = "ESCAPE"
499
+ when Wx::K_SPACE
500
+ key = "SPACE"
501
+ when Wx::K_DELETE
502
+ key = "DELETE"
503
+ when Wx::K_START
504
+ key = "START"
505
+ when Wx::K_LBUTTON
506
+ key = "LBUTTON"
507
+ when Wx::K_RBUTTON
508
+ key = "RBUTTON"
509
+ when Wx::K_CANCEL
510
+ key = "CANCEL"
511
+ when Wx::K_MBUTTON
512
+ key = "MBUTTON"
513
+ when Wx::K_CLEAR
514
+ key = "CLEAR"
515
+ when Wx::K_SHIFT
516
+ key = "SHIFT"
517
+ when Wx::K_ALT
518
+ key = "ALT"
519
+ when Wx::K_CONTROL
520
+ key = "CONTROL"
521
+ when Wx::K_MENU
522
+ key = "MENU"
523
+ when Wx::K_PAUSE
524
+ key = "PAUSE"
525
+ when Wx::K_CAPITAL
526
+ key = "CAPITAL"
527
+ when Wx::K_END
528
+ key = "END"
529
+ when Wx::K_HOME
530
+ key = "HOME"
531
+ when Wx::K_LEFT
532
+ key = "LEFT"
533
+ when Wx::K_UP
534
+ key = "UP"
535
+ when Wx::K_RIGHT
536
+ key = "RIGHT"
537
+ when Wx::K_DOWN
538
+ key = "DOWN"
539
+ when Wx::K_SELECT
540
+ key = "SELECT"
541
+ when Wx::K_PRINT
542
+ key = "PRINT"
543
+ when Wx::K_EXECUTE
544
+ key = "EXECUTE"
545
+ when Wx::K_SNAPSHOT
546
+ key = "SNAPSHOT"
547
+ when Wx::K_INSERT
548
+ key = "INSERT"
549
+ when Wx::K_HELP
550
+ key = "HELP"
551
+ when Wx::K_NUMPAD0
552
+ key = "NUMPAD0"
553
+ when Wx::K_NUMPAD1
554
+ key = "NUMPAD1"
555
+ when Wx::K_NUMPAD2
556
+ key = "NUMPAD2"
557
+ when Wx::K_NUMPAD3
558
+ key = "NUMPAD3"
559
+ when Wx::K_NUMPAD4
560
+ key = "NUMPAD4"
561
+ when Wx::K_NUMPAD5
562
+ key = "NUMPAD5"
563
+ when Wx::K_NUMPAD6
564
+ key = "NUMPAD6"
565
+ when Wx::K_NUMPAD7
566
+ key = "NUMPAD7"
567
+ when Wx::K_NUMPAD8
568
+ key = "NUMPAD8"
569
+ when Wx::K_NUMPAD9
570
+ key = "NUMPAD9"
571
+ when Wx::K_MULTIPLY
572
+ key = "MULTIPLY"
573
+ when Wx::K_ADD
574
+ key = "ADD"
575
+ when Wx::K_SEPARATOR
576
+ key = "SEPARATOR"
577
+ when Wx::K_SUBTRACT
578
+ key = "SUBTRACT"
579
+ when Wx::K_DECIMAL
580
+ key = "DECIMAL"
581
+ when Wx::K_DIVIDE
582
+ key = "DIVIDE"
583
+ when Wx::K_F1
584
+ key = "F1"
585
+ when Wx::K_F2
586
+ key = "F2"
587
+ when Wx::K_F3
588
+ key = "F3"
589
+ when Wx::K_F4
590
+ key = "F4"
591
+ when Wx::K_F5
592
+ key = "F5"
593
+ when Wx::K_F6
594
+ key = "F6"
595
+ when Wx::K_F7
596
+ key = "F7"
597
+ when Wx::K_F8
598
+ key = "F8"
599
+ when Wx::K_F9
600
+ key = "F9"
601
+ when Wx::K_F10
602
+ key = "F10"
603
+ when Wx::K_F11
604
+ key = "F11"
605
+ when Wx::K_F12
606
+ key = "F12"
607
+ when Wx::K_F13
608
+ key = "F13"
609
+ when Wx::K_F14
610
+ key = "F14"
611
+ when Wx::K_F15
612
+ key = "F15"
613
+ when Wx::K_F16
614
+ key = "F16"
615
+ when Wx::K_F17
616
+ key = "F17"
617
+ when Wx::K_F18
618
+ key = "F18"
619
+ when Wx::K_F19
620
+ key = "F19"
621
+ when Wx::K_F20
622
+ key = "F20"
623
+ when Wx::K_F21
624
+ key = "F21"
625
+ when Wx::K_F22
626
+ key = "F22"
627
+ when Wx::K_F23
628
+ key = "F23"
629
+ when Wx::K_F24
630
+ key = "F24"
631
+ when Wx::K_NUMLOCK
632
+ key = "NUMLOCK"
633
+ when Wx::K_SCROLL
634
+ key = "SCROLL"
635
+ when Wx::K_PAGEUP
636
+ key = "PAGEUP"
637
+ when Wx::K_PAGEDOWN
638
+ key = "PAGEDOWN"
639
+ when Wx::K_NUMPAD_SPACE
640
+ key = "NUMPAD_SPACE"
641
+ when Wx::K_NUMPAD_TAB
642
+ key = "NUMPAD_TAB"
643
+ when Wx::K_NUMPAD_ENTER
644
+ key = "NUMPAD_ENTER"
645
+ when Wx::K_NUMPAD_F1
646
+ key = "NUMPAD_F1"
647
+ when Wx::K_NUMPAD_F2
648
+ key = "NUMPAD_F2"
649
+ when Wx::K_NUMPAD_F3
650
+ key = "NUMPAD_F3"
651
+ when Wx::K_NUMPAD_F4
652
+ key = "NUMPAD_F4"
653
+ when Wx::K_NUMPAD_HOME
654
+ key = "NUMPAD_HOME"
655
+ when Wx::K_NUMPAD_LEFT
656
+ key = "NUMPAD_LEFT"
657
+ when Wx::K_NUMPAD_UP
658
+ key = "NUMPAD_UP"
659
+ when Wx::K_NUMPAD_RIGHT
660
+ key = "NUMPAD_RIGHT"
661
+ when Wx::K_NUMPAD_DOWN
662
+ key = "NUMPAD_DOWN"
663
+ when Wx::K_NUMPAD_PAGEUP
664
+ key = "NUMPAD_PAGEUP"
665
+ when Wx::K_NUMPAD_PAGEDOWN
666
+ key = "NUMPAD_PAGEDOWN"
667
+ when Wx::K_NUMPAD_END
668
+ key = "NUMPAD_END"
669
+ when Wx::K_NUMPAD_BEGIN
670
+ key = "NUMPAD_BEGIN"
671
+ when Wx::K_NUMPAD_INSERT
672
+ key = "NUMPAD_INSERT"
673
+ when Wx::K_NUMPAD_DELETE
674
+ key = "NUMPAD_DELETE"
675
+ when Wx::K_NUMPAD_EQUAL
676
+ key = "NUMPAD_EQUAL"
677
+ when Wx::K_NUMPAD_MULTIPLY
678
+ key = "NUMPAD_MULTIPLY"
679
+ when Wx::K_NUMPAD_ADD
680
+ key = "NUMPAD_ADD"
681
+ when Wx::K_NUMPAD_SEPARATOR
682
+ key = "NUMPAD_SEPARATOR"
683
+ when Wx::K_NUMPAD_SUBTRACT
684
+ key = "NUMPAD_SUBTRACT"
685
+ when Wx::K_NUMPAD_DECIMAL
686
+ key = "NUMPAD_DECIMAL"
687
+ when Wx::K_BROWSER_BACK
688
+ key = "BROWSER_BACK"
689
+ when Wx::K_BROWSER_FORWARD
690
+ key = "BROWSER_FORWARD"
691
+ when Wx::K_BROWSER_REFRESH
692
+ key = "BROWSER_REFRESH"
693
+ when Wx::K_BROWSER_STOP
694
+ key = "BROWSER_STOP"
695
+ when Wx::K_BROWSER_SEARCH
696
+ key = "BROWSER_SEARCH"
697
+ when Wx::K_BROWSER_FAVORITES
698
+ key = "BROWSER_FAVORITES"
699
+ when Wx::K_BROWSER_HOME
700
+ key = "BROWSER_HOME"
701
+ when Wx::K_VOLUME_MUTE
702
+ key = "VOLUME_MUTE"
703
+ when Wx::K_VOLUME_DOWN
704
+ key = "VOLUME_DOWN"
705
+ when Wx::K_VOLUME_UP
706
+ key = "VOLUME_UP"
707
+ when Wx::K_MEDIA_NEXT_TRACK
708
+ key = "MEDIA_NEXT_TRACK"
709
+ when Wx::K_MEDIA_PREV_TRACK
710
+ key = "MEDIA_PREV_TRACK"
711
+ when Wx::K_MEDIA_STOP
712
+ key = "MEDIA_STOP"
713
+ when Wx::K_MEDIA_PLAY_PAUSE
714
+ key = "MEDIA_PLAY_PAUSE"
715
+ when Wx::K_LAUNCH_MAIL
716
+ key = "LAUNCH_MAIL"
717
+ when Wx::K_LAUNCH_APP1
718
+ key = "LAUNCH_APP1"
719
+ when Wx::K_LAUNCH_APP2
720
+ key = "LAUNCH_APP2"
721
+ else
722
+ if keycode >= 32 && keycode < 127
723
+ key = "'#{keycode.chr}'"
724
+ elsif keycode > 0 && keycode < 27
725
+ key = "Ctrl-#{?A + keycode - 1}"
726
+ else
727
+ key = "unknown (#{keycode})"
728
+ end
729
+ end
730
+
731
+ Wx::log_message("#{name} event: #{key} (flags = %s%s%s%s)" %
732
+ [event.control_down ? 'C' : '-',
733
+ event.alt_down ? 'A' : '-',
734
+ event.shift_down ? 'S' : '-',
735
+ event.meta_down ? 'M' : '-'])
736
+ end
737
+
738
+ def on_tree_key_down(event)
739
+ log_key_event("Tree key down ", event.key_event)
740
+ event.skip
741
+ end
742
+
743
+ def on_begin_drag(event)
744
+ # need to explicitly allow drag
745
+ if event.item != root_item
746
+ @dragged_item = event.item
747
+
748
+ clientpt = event.point
749
+ screenpt = client_to_screen(clientpt)
750
+ Wx::log_message("OnBeginDrag: started dragging %s at screen coords (%i,%i)" %
751
+ [item_text(@dragged_item), screenpt.x, screenpt.y])
752
+ event.allow
753
+ else
754
+ Wx::log_message("OnBeginDrag: selected item can't be dragged.")
755
+ end
756
+ end
757
+
758
+ def on_end_drag(event)
759
+ src_item = @dragged_item
760
+ dest_item = event.item
761
+ @dragged_item = nil
762
+
763
+ if dest_item.ok? && !item_has_children(dest_item)
764
+ # copy to the parent then
765
+ dest_item = get_item_parent(dest_item)
766
+ end
767
+
768
+ unless dest_item.ok?
769
+ Wx::log_message("OnEndDrag: can't drop here.")
770
+ return nil
771
+ end
772
+
773
+ text = item_text(src_item)
774
+ Wx::log_message("OnEndDrag: '%s' copied to '%s'.",
775
+ text, item_text(dest_item))
776
+
777
+ # just do append here - we could also insert it just before/after the item
778
+ # on which it was dropped, but self requires slightly more work... we also
779
+ # completely ignore the client data and icon of the old item but could
780
+ # copy them as well.
781
+ #
782
+ # Finally, we only copy one item here but we might copy the entire tree if
783
+ # we were dragging a folder.
784
+ image = Wx::THE_APP.show_images ? TreeCtrlIcon_File : -1
785
+ new_id = append_item(dest_item, text, image)
786
+
787
+ set_item_state(new_id, get_item_state(src_item)) if Wx::THE_APP.show_states
788
+ end
789
+
790
+ def on_begin_label_edit(event)
791
+ Wx::log_message("OnBeginLabelEdit")
792
+
793
+ # for testing, prevent self item's label editing
794
+ item = event.item
795
+ if is_test_item(item)
796
+ Wx::message_box("The demo prevents you editing this item.")
797
+ event.veto
798
+ elsif item == self.root_item
799
+ # test that it is possible to change the text of the item being edited
800
+ set_item_text(item, "Editing root item")
801
+ end
802
+ end
803
+
804
+ def on_end_label_edit(event)
805
+ Wx::log_message("OnEndLabelEdit")
806
+ if event.edit_cancelled?
807
+ Wx::log_message("Label edit was cancelled by user")
808
+ return
809
+ end
810
+
811
+ # For a demo, don't allow anything except letters in the labels
812
+ unless event.label =~ /^\w+/
813
+ msg = "The new label should be a single word."
814
+ Wx::message_box(msg)
815
+ Wx::log_message("Label edit was cancelled by demo")
816
+ event.veto
817
+ end
818
+ end
819
+
820
+ def on_item_collapsing(event)
821
+ Wx::log_message("OnItemCollapsing")
822
+
823
+ # for testing, prevent the user from collapsing the first child folder
824
+ if is_test_item(event.item)
825
+ Wx::message_box("You can't collapse self item.")
826
+ event.veto
827
+ end
828
+ end
829
+
830
+ # show some info about activated item
831
+ def on_item_activated(event)
832
+ if (item_id = event.item).ok?
833
+ show_info(item_id)
834
+ end
835
+ Wx::log_message("OnItemActivated")
836
+ end
837
+
838
+ def on_item_state_clicked(event)
839
+ if (item_id = event.item).ok?
840
+ do_toggle_state(item_id)
841
+ end
842
+ Wx::log_message("Item \"#{get_item_text(item_id)}\" state changed to #{get_item_state(item_id)}")
843
+ end
844
+
845
+ def on_item_menu(event)
846
+ return unless (item = event.item).ok?
847
+
848
+ item_data = get_item_data(item)
849
+ clientpt = event.get_point
850
+ screenpt = client_to_screen(clientpt)
851
+
852
+ Wx::log_message(
853
+ "OnItemMenu for item \"#{item_data ? item_data : 'unknown'}\" at screen coords (#{screenpt.x}, #{screenpt.y})")
854
+
855
+ show_popup_menu(item, clientpt)
856
+ end
857
+
858
+ def on_context_menu(event)
859
+ pt = event.position
860
+
861
+ Wx::log_message("OnContextMenu at screen coords (#{pt.x}, #{pt.y})")
862
+
863
+ event.skip
864
+ end
865
+
866
+ def show_popup_menu(id, pos)
867
+ title = ""
868
+ if id.ok?
869
+ title << "Menu for " << get_item_text(id)
870
+ else
871
+ title = "Menu for no particular item"
872
+ end
873
+
874
+ menu = Wx::Menu.new(title)
875
+ menu.append(Wx::ID_ABOUT, "&About...")
876
+ menu.append_separator
877
+ menu.append(TreeTest_Highlight, "&Highlight item")
878
+ menu.append(TreeTest_Dump, "&Dump")
879
+ popup_menu(menu, pos)
880
+ end
881
+
882
+ def on_rmouse_down(event)
883
+ Wx::log_message("Right mouse button down")
884
+
885
+ event.skip
886
+ end
887
+
888
+ def on_item_rclick(event)
889
+ unless (itemId = event.item).ok?
890
+ Wx::log_message("on_item_rclick: event should have a valid item")
891
+ return
892
+ end
893
+
894
+ item_data = get_item_data(itemId)
895
+ Wx::log_message("Item \"#{item_data ? item_data : 'unknown'}\" right clicked")
896
+
897
+ event.skip
898
+ end
899
+
900
+ def on_rmouse_up(event)
901
+ Wx::log_message("Right mouse button up")
902
+
903
+ event.skip
904
+ end
905
+
906
+ def on_rmouse_dclick(event)
907
+ id = hit_test(event.get_position)
908
+ unless id.ok?
909
+ Wx::log_message("No item under mouse")
910
+ else
911
+ item_data = get_item_data(id)
912
+ if item_data
913
+ Wx::log_message("Item '#{item_data}' under mouse")
914
+ end
915
+ end
916
+ end
917
+
918
+ end
919
+
920
+ class MyFrame < Wx::Frame
921
+ def initialize(title, x, y, w, h)
922
+ super(nil, :title => title, :pos => [x, y], :size => [w, h])
923
+ @panel = nil
924
+ #@splitter = nil
925
+ @treectrl = nil
926
+ @textctrl = nil
927
+ @s_num = 0
928
+
929
+ # This reduces flicker effects - even better would be to define
930
+ # OnEraseBackground to do nothing. When the tree control's scrollbars are
931
+ # show or hidden, the frame is sent a background erase event.
932
+ self.background_colour = Wx::WHITE
933
+
934
+ # Give it an icon
935
+ self.icon = Wx::Icon.new(File.join(File.dirname(__FILE__), '..', 'sample.xpm'), Wx::BITMAP_TYPE_XPM)
936
+
937
+ # Make a menubar
938
+ file_menu = Wx::Menu.new
939
+ style_menu = Wx::Menu.new
940
+ tree_menu = Wx::Menu.new
941
+ item_menu = Wx::Menu.new
942
+
943
+ file_menu.append(Wx::ID_CLEAR, "&Clear log\tCtrl-L");
944
+ file_menu.append_separator
945
+ file_menu.append(Wx::ID_ABOUT, "&About...")
946
+ file_menu.append_separator
947
+ file_menu.append(Wx::ID_EXIT, "E&xit\tAlt-X")
948
+
949
+ style_menu.append(TreeTest_TogButtons,
950
+ "Toggle &normal buttons", "", Wx::ITEM_CHECK)
951
+ style_menu.append(TreeTest_TogTwist,
952
+ "Toggle &twister buttons", "", Wx::ITEM_CHECK)
953
+ style_menu.append(TreeTest_ToggleButtons,
954
+ "Toggle image &buttons", "", Wx::ITEM_CHECK)
955
+ style_menu.append_separator
956
+ style_menu.append(TreeTest_TogLines,
957
+ "Toggle &no lines", "", Wx::ITEM_CHECK)
958
+ style_menu.append(TreeTest_TogRootLines,
959
+ "Toggle &lines at root", "", Wx::ITEM_CHECK)
960
+ style_menu.append(TreeTest_TogHideRoot,
961
+ "Toggle &hidden root", "", Wx::ITEM_CHECK)
962
+ style_menu.append(TreeTest_TogBorder,
963
+ "Toggle &item border", "", Wx::ITEM_CHECK)
964
+ style_menu.append(TreeTest_TogFullHighlight,
965
+ "Toggle &full row highlight", "", Wx::ITEM_CHECK)
966
+ style_menu.append(TreeTest_TogEdit,
967
+ "Toggle &edit mode", "", Wx::ITEM_CHECK)
968
+ style_menu.append(TreeTest_ToggleSel,
969
+ "Toggle multiple &selection", "", Wx::ITEM_CHECK)
970
+ style_menu.append(TreeTest_ToggleImages,
971
+ "Toggle show ima&ges", "", Wx::ITEM_CHECK)
972
+ style_menu.append(TreeTest_ToggleStates,
973
+ "Toggle show st&ates", "", Wx::ITEM_CHECK)
974
+ style_menu.append(TreeTest_ToggleBell,
975
+ "Toggle &bell on no match", "", Wx::ITEM_CHECK)
976
+ style_menu.append(TreeTest_ToggleAlternateImages,
977
+ "Toggle alternate images", "", Wx::ITEM_CHECK)
978
+ style_menu.append(TreeTest_ToggleAlternateStates,
979
+ "Toggle alternate state images", "", Wx::ITEM_CHECK)
980
+ style_menu.append(TreeTest_SetImageSize, "Set image si&ze...")
981
+ style_menu.append_separator
982
+ style_menu.append(TreeTest_SetFgColour, "Set &foreground colour...")
983
+ style_menu.append(TreeTest_SetBgColour, "Set &background colour...")
984
+ style_menu.append_separator
985
+ style_menu.append(TreeTest_ResetStyle, "&Reset to default\tF10")
986
+
987
+ tree_menu.append(TreeTest_FreezeThaw,
988
+ "&Freeze the tree", "", Wx::ITEM_CHECK)
989
+ tree_menu.append(TreeTest_Recreate, "&Recreate the tree")
990
+ tree_menu.append(TreeTest_CollapseAndReset, "C&ollapse and reset")
991
+ tree_menu.append_separator
992
+ tree_menu.append(TreeTest_AddItem, "Append a &new item")
993
+ tree_menu.append(TreeTest_AddManyItems, "Appends &many items")
994
+ tree_menu.append(TreeTest_InsertItem, "&Insert a new item")
995
+ tree_menu.append(TreeTest_Delete, "&Delete selected item")
996
+ tree_menu.append(TreeTest_DeleteChildren, "Delete &children")
997
+ tree_menu.append(TreeTest_DeleteAll, "Delete &all items")
998
+ tree_menu.append(TreeTest_SelectRoot, "Select root item")
999
+ tree_menu.append_separator
1000
+ tree_menu.append(TreeTest_SetFocusedRoot, "Set focus to root item")
1001
+ tree_menu.append(TreeTest_ClearFocused, "Reset focus")
1002
+
1003
+ tree_menu.append_separator
1004
+ tree_menu.append(TreeTest_Count, "Count children of current item")
1005
+ tree_menu.append(TreeTest_CountRec, "Recursively count children of current item")
1006
+ tree_menu.append_separator
1007
+ tree_menu.append(TreeTest_Sort, "Sort children of current item")
1008
+ tree_menu.append(TreeTest_SortRev, "Sort in reversed order")
1009
+ tree_menu.append_separator
1010
+ tree_menu.append(TreeTest_EnsureVisible, "Make the last item &visible")
1011
+ tree_menu.append(TreeTest_SetFocus, "Set &focus to the tree")
1012
+ tree_menu.append_separator
1013
+ tree_menu.append(TreeTest_IncIndent, "Add 5 points to indentation\tAlt-I")
1014
+ tree_menu.append(TreeTest_DecIndent, "Reduce indentation by 5 points\tAlt-R")
1015
+ tree_menu.append_separator
1016
+ tree_menu.append(TreeTest_IncSpacing, "Add 5 points to spacing\tCtrl-I")
1017
+ tree_menu.append(TreeTest_DecSpacing, "Reduce spacing by 5 points\tCtrl-R")
1018
+
1019
+ item_menu.append(TreeTest_Dump, "&Dump item children")
1020
+ item_menu.append(TreeTest_Rename, "&Rename item...")
1021
+
1022
+ item_menu.append_separator
1023
+ item_menu.append(TreeTest_SetBold, "Make item &bold")
1024
+ item_menu.append(TreeTest_ClearBold, "Make item &not bold")
1025
+ item_menu.append_separator
1026
+ item_menu.append(TreeTest_ToggleIcon, "Toggle the item's &icon")
1027
+ item_menu.append(TreeTest_ToggleState, "Toggle the item's &state")
1028
+
1029
+ item_menu.append_separator
1030
+ item_menu.append(TreeTest_ShowFirstVisible, "Show &first visible")
1031
+ if Wx.has_feature?(:HAS_LAST_VISIBLE)
1032
+ item_menu.append(TreeTest_ShowLastVisible, "Show &last visible")
1033
+ end
1034
+ item_menu.append(TreeTest_ShowNextVisible, "Show &next visible")
1035
+ item_menu.append(TreeTest_ShowPrevVisible, "Show &previous visible")
1036
+ item_menu.append_separator
1037
+ item_menu.append(TreeTest_ShowParent, "Show pa&rent")
1038
+ item_menu.append(TreeTest_ShowPrevSibling, "Show &previous sibling")
1039
+ item_menu.append(TreeTest_ShowNextSibling, "Show &next sibling")
1040
+ item_menu.append_separator
1041
+ item_menu.append(TreeTest_ScrollTo, "Scroll &to item",
1042
+ "Scroll to the last by one top level child")
1043
+ item_menu.append(TreeTest_SelectLast, "Select &last item",
1044
+ "Select the last item")
1045
+
1046
+ item_menu.append_separator
1047
+ item_menu.append(TreeTest_DumpSelected, "Dump selected items\tAlt-D")
1048
+ item_menu.append(TreeTest_Select, "Select current item\tAlt-S")
1049
+ item_menu.append(TreeTest_Unselect, "Unselect everything\tAlt-U")
1050
+ item_menu.append(TreeTest_SelectChildren, "Select all children\tCtrl-A")
1051
+
1052
+ menu_bar = Wx::MenuBar.new
1053
+ menu_bar.append(file_menu, "&File")
1054
+ menu_bar.append(style_menu, "&Style")
1055
+ menu_bar.append(tree_menu, "&Tree")
1056
+ menu_bar.append(item_menu, "&Item")
1057
+ self.menu_bar = menu_bar
1058
+
1059
+ @panel = Wx::Panel.new(self)
1060
+
1061
+ # create the controls
1062
+ @textctrl = Wx::TextCtrl.new(@panel,
1063
+ :value => "Log text\n",
1064
+ :style => Wx::TE_MULTILINE | Wx::SUNKEN_BORDER)
1065
+
1066
+ create_tree_with_default_style
1067
+
1068
+ menu_bar.check(TreeTest_ToggleImages, true)
1069
+ menu_bar.check(TreeTest_ToggleStates, true)
1070
+ menu_bar.check(TreeTest_ToggleAlternateImages, false)
1071
+ menu_bar.check(TreeTest_ToggleAlternateStates, false)
1072
+
1073
+ # create a status bar with 3 panes
1074
+ create_status_bar(2)
1075
+
1076
+ set_status_text("", 0)
1077
+
1078
+ # set our text control as the log target
1079
+ logWindow = Wx::LogTextCtrl.new(@textctrl)
1080
+ Wx::Log::set_active_target(logWindow)
1081
+
1082
+ # @splitter.split_horizontally(@treectrl, @textctrl, 500)
1083
+
1084
+ evt_close :on_close
1085
+ evt_size :on_size
1086
+ evt_idle :on_idle
1087
+
1088
+ evt_menu Wx::ID_EXIT, :on_quit
1089
+ evt_menu Wx::ID_ABOUT, :on_about
1090
+ evt_menu Wx::ID_CLEAR, :on_clear_log
1091
+
1092
+ evt_menu TreeTest_TogButtons, :on_tog_buttons
1093
+ evt_menu TreeTest_TogTwist, :on_tog_twist
1094
+ evt_menu TreeTest_TogLines, :on_tog_lines
1095
+ evt_menu TreeTest_TogEdit, :on_tog_edit
1096
+ evt_menu TreeTest_TogHideRoot, :on_tog_hide_root
1097
+ evt_menu TreeTest_TogRootLines, :on_tog_root_lines
1098
+ evt_menu TreeTest_TogBorder, :on_tog_border
1099
+ evt_menu TreeTest_TogFullHighlight, :on_tog_full_highlight
1100
+ evt_menu TreeTest_SetFgColour, :on_set_fg_colour
1101
+ evt_menu TreeTest_SetBgColour, :on_set_bg_colour
1102
+ evt_menu TreeTest_ResetStyle, :on_reset_style
1103
+
1104
+ evt_menu TreeTest_Highlight, :on_highlight
1105
+ evt_menu TreeTest_Dump, :on_dump
1106
+ evt_menu TreeTest_DumpSelected, :on_dump_selected
1107
+ evt_menu TreeTest_Select, :on_select
1108
+ evt_menu TreeTest_Unselect, :on_unselect
1109
+ evt_menu TreeTest_ToggleSel, :on_toggle_sel
1110
+ evt_menu TreeTest_SelectChildren, :on_select_children
1111
+ evt_menu TreeTest_Rename, :on_rename
1112
+ evt_menu TreeTest_Count, :on_count
1113
+ evt_menu TreeTest_CountRec, :on_count_rec
1114
+ evt_menu TreeTest_Sort, :on_sort
1115
+ evt_menu TreeTest_SortRev, :on_sort_rev
1116
+ evt_menu TreeTest_SetBold, :on_set_bold
1117
+ evt_menu TreeTest_ClearBold, :on_clear_bold
1118
+ evt_menu TreeTest_Delete, :on_delete
1119
+ evt_menu TreeTest_DeleteChildren, :on_delete_children
1120
+ evt_menu TreeTest_DeleteAll, :on_delete_all
1121
+ evt_menu TreeTest_Recreate, :on_recreate
1122
+ evt_menu TreeTest_FreezeThaw, :on_freeze_thaw
1123
+ evt_menu TreeTest_ToggleImages, :on_toggle_images
1124
+ evt_menu TreeTest_ToggleStates, :on_toggle_states
1125
+ evt_menu TreeTest_ToggleBell, :on_toggle_bell
1126
+ evt_menu TreeTest_ToggleAlternateImages, :on_toggle_alternate_images
1127
+ evt_menu TreeTest_ToggleAlternateStates, :on_toggle_alternate_states
1128
+ unless Wx.has_feature?(:WXMSW)
1129
+ evt_menu TreeTest_ToggleButtons, :on_toggle_buttons
1130
+ end
1131
+ evt_menu TreeTest_SetImageSize, :on_set_image_size
1132
+ evt_menu TreeTest_CollapseAndReset, :on_collapse_and_reset
1133
+ evt_menu TreeTest_EnsureVisible, :on_ensure_visible
1134
+ evt_menu TreeTest_SetFocus, :on_set_focus
1135
+ evt_menu TreeTest_AddItem, :on_add_item
1136
+ evt_menu TreeTest_AddManyItems, :on_add_many_items
1137
+ evt_menu TreeTest_InsertItem, :on_insert_item
1138
+ evt_menu TreeTest_IncIndent, :on_inc_indent
1139
+ evt_menu TreeTest_DecIndent, :on_dec_indent
1140
+ evt_menu TreeTest_IncSpacing, :on_inc_spacing
1141
+ evt_menu TreeTest_DecSpacing, :on_dec_spacing
1142
+ evt_menu TreeTest_ToggleIcon, :on_toggle_icon
1143
+ evt_menu TreeTest_ToggleState, :on_toggle_state
1144
+ evt_menu TreeTest_SelectRoot, :on_select_root
1145
+ evt_menu TreeTest_SetFocusedRoot, :on_set_focused_root
1146
+ evt_menu TreeTest_ClearFocused, :on_clear_focused
1147
+
1148
+ evt_menu TreeTest_ShowFirstVisible, :on_show_first_visible
1149
+ if Wx.has_feature?(:HAS_LAST_VISIBLE)
1150
+ evt_menu TreeTest_ShowLastVisible, :on_show_last_visible
1151
+ end
1152
+ evt_menu TreeTest_ShowNextVisible, :on_show_next_visible
1153
+ evt_menu TreeTest_ShowPrevVisible, :on_show_prev_visible
1154
+ evt_menu TreeTest_ShowParent, :on_show_parent
1155
+ evt_menu TreeTest_ShowPrevSibling, :on_show_prev_sibling
1156
+ evt_menu TreeTest_ShowNextSibling, :on_show_next_sibling
1157
+ evt_menu TreeTest_ScrollTo, :on_scroll_to
1158
+ evt_menu TreeTest_SelectLast, :on_select_last
1159
+ end
1160
+
1161
+ def check_item(id)
1162
+ Wx::message_box("Please select some item first!",
1163
+ "Tree sample error",
1164
+ Wx::OK | Wx::ICON_EXCLAMATION,
1165
+ self) unless id && id.ok?
1166
+ id && id.ok?
1167
+ end
1168
+
1169
+ def create_tree_with_default_style
1170
+
1171
+ style = Wx::TR_DEFAULT_STYLE | Wx::TR_HAS_VARIABLE_ROW_HEIGHT | Wx::TR_EDIT_LABELS
1172
+
1173
+ create_tree(style | Wx::SUNKEN_BORDER)
1174
+
1175
+ # as we don't know what Wx::TR_DEFAULT_STYLE could contain, test for
1176
+ # everything
1177
+ mbar = menu_bar
1178
+ mbar.check(TreeTest_TogButtons, (style & Wx::TR_HAS_BUTTONS) != 0)
1179
+ mbar.check(TreeTest_TogButtons, (style & Wx::TR_TWIST_BUTTONS) != 0)
1180
+ mbar.check(TreeTest_TogLines, (style & Wx::TR_NO_LINES) != 0)
1181
+ mbar.check(TreeTest_TogRootLines, (style & Wx::TR_LINES_AT_ROOT) != 0)
1182
+ mbar.check(TreeTest_TogHideRoot, (style & Wx::TR_HIDE_ROOT) != 0)
1183
+ mbar.check(TreeTest_TogEdit, (style & Wx::TR_EDIT_LABELS) != 0)
1184
+ mbar.check(TreeTest_TogBorder, (style & Wx::TR_ROW_LINES) != 0)
1185
+ mbar.check(TreeTest_TogFullHighlight, (style & Wx::TR_FULL_ROW_HIGHLIGHT) != 0)
1186
+ end
1187
+
1188
+ def create_tree(style)
1189
+ @treectrl = MyTreeCtrl.new(@panel, :style => style)
1190
+
1191
+ menu_bar.enable(Wx::TreeTest_SelectRoot, (style & Wx::TR_HIDE_ROOT) == 0)
1192
+
1193
+ resize
1194
+ end
1195
+
1196
+ def tog_style(id, flag)
1197
+ style = @treectrl.get_window_style ^ flag
1198
+
1199
+ if Wx.has_feature?(:WXMSW)
1200
+ # treectrl styles can't be changed on the fly using the native
1201
+ # control and the tree must be recreated
1202
+ @treectrl.destroy
1203
+ create_tree(style)
1204
+ else
1205
+ @treectrl.set_window_style(style)
1206
+ end
1207
+
1208
+ menu_bar.check(id, (style & flag) != 0)
1209
+ end
1210
+
1211
+ def resize
1212
+ size = get_client_size
1213
+ @treectrl.set_size(Wx::Rect.new(0, 0, size.width, size.height * 2 / 3)) if @treectrl
1214
+ @textctrl.set_size(Wx::Rect.new(0, 2 * size.height / 3, size.width, size.height / 3)) if @textctrl
1215
+ end
1216
+
1217
+ def on_idle(evt)
1218
+ if @treectrl
1219
+ idRoot = @treectrl.root_item
1220
+ if idRoot.ok?
1221
+ idLast = @treectrl.get_last_tree_item
1222
+ status = "Root/last item is %svisible/%svisible" %
1223
+ [@treectrl.is_visible(idRoot) ? '' : 'not ',
1224
+ idLast.ok? && @treectrl.is_visible(idLast) ? '' : 'not ']
1225
+ else
1226
+ status = "No root item";
1227
+ end
1228
+
1229
+ set_status_text(status, 1)
1230
+ end
1231
+
1232
+ evt.skip
1233
+ end
1234
+
1235
+ def on_size(evt)
1236
+ resize if (@treectrl && @textctrl)
1237
+ evt.skip
1238
+ end
1239
+
1240
+ def on_quit(event)
1241
+ close(true)
1242
+ end
1243
+
1244
+ def on_about(event)
1245
+ Wx::message_box("Tree test sample\n" +
1246
+ "(c) Julian Smart 1997, Vadim Zeitlin 1998, Martin Corino 2022",
1247
+ "About wxRuby tree test",
1248
+ Wx::OK | Wx::ICON_INFORMATION, self)
1249
+ end
1250
+
1251
+ def on_clear_log(event)
1252
+ @textctrl.clear
1253
+ end
1254
+
1255
+ def on_rename(event)
1256
+ item = @treectrl.selection
1257
+ return unless check_item(item)
1258
+ # TODO demonstrate creating a custom edit control...
1259
+ @treectrl.edit_label(item)
1260
+ end
1261
+
1262
+ def on_count(event)
1263
+ item = @treectrl.selection
1264
+ return unless check_item(item)
1265
+ i = @treectrl.children_count(item, false)
1266
+ Wx::log_message("%d children", i)
1267
+ end
1268
+
1269
+ def on_count_rec(event)
1270
+ item = @treectrl.selection
1271
+ return unless check_item(item)
1272
+ Wx::log_message("%d children", @treectrl.children_count(item))
1273
+ end
1274
+
1275
+ def do_sort(reverse = false)
1276
+ item = @treectrl.selection
1277
+ return unless check_item(item)
1278
+ @treectrl.do_sort_children(item, reverse)
1279
+ end
1280
+
1281
+ def on_highlight(_event)
1282
+ id = @treectrl.get_focused_item
1283
+
1284
+ return unless check_item(id)
1285
+
1286
+ r = Wx::Rect.new
1287
+ if !@treectrl.get_bounding_rect(id, r, true) # text, not full row
1288
+ Wx::LogMessage("Failed to get bounding item rect")
1289
+ return
1290
+ end
1291
+ @treectrl.paint do |dc|
1292
+ dc.set_brush(Wx::RED_BRUSH)
1293
+ dc.set_pen(Wx::TRANSPARENT_PEN)
1294
+ dc.draw_rectangle(r)
1295
+ @treectrl.update
1296
+ end
1297
+ end
1298
+
1299
+ def on_dump(event)
1300
+ root = @treectrl.selection
1301
+ return unless check_item(root)
1302
+ @treectrl.get_items_recursively(root, -1)
1303
+ end
1304
+
1305
+ def on_toggle_sel(event)
1306
+ tog_style(event.id, Wx::TR_MULTIPLE)
1307
+ end
1308
+
1309
+ def on_dump_selected(event)
1310
+ if (@treectrl.window_style & Wx::TR_MULTIPLE) == 0
1311
+ item_id = @treectrl.selection
1312
+ if item_id.ok?
1313
+ Wx::log_message("<TreeItem '%s'>",
1314
+ @treectrl.get_item_text(item_id))
1315
+ else
1316
+ Wx::log_message("No tree item selected")
1317
+ end
1318
+ else
1319
+ Wx::log_message("NOT IMPLEMENTED: Multiple selections not available")
1320
+ # Requires Wx::List - Ruby Array typemap, pointer handling, 29/08/2006
1321
+ # Currently raises incorrect number of args, 1 for 0
1322
+ # selected = @treectrl.get_selections
1323
+ # selected_items.each do | item_id |
1324
+ # Wx::log_message("\t%s", @treectrl.get_item_text(item_id))
1325
+ # end
1326
+ end
1327
+ end
1328
+
1329
+ def on_select(event)
1330
+ @treectrl.select_item(@treectrl.selection)
1331
+ end
1332
+
1333
+ def on_select_root(event)
1334
+ unless @treectrl.has_flag(Wx::TR_HIDE_ROOT)
1335
+ @treectrl.select_item(@treectrl.root_item)
1336
+ end
1337
+ end
1338
+
1339
+ def on_set_focused_root(event)
1340
+ unless @treectrl.has_flag(Wx::TR_HIDE_ROOT)
1341
+ @treectrl.set_focused_item(@treectrl.root_item)
1342
+ end
1343
+ end
1344
+
1345
+ def on_clear_focused(event)
1346
+ @treectrl.clear_focused_item
1347
+ end
1348
+
1349
+ def on_unselect(event)
1350
+ @treectrl.unselect_all
1351
+ end
1352
+
1353
+ def on_select_children(event)
1354
+ item = @treectrl.get_focused_item
1355
+
1356
+ item = @treectrl.root_item unless item.ok?
1357
+
1358
+ @treectrl.select_children(item)
1359
+ end
1360
+
1361
+ def do_set_bold(bold = true)
1362
+ item = @treectrl.selection
1363
+ return unless check_item(item)
1364
+ @treectrl.set_item_bold(item, bold)
1365
+ end
1366
+
1367
+ def on_delete(event)
1368
+ item = @treectrl.selection
1369
+ return unless check_item(item)
1370
+ @treectrl.delete(item)
1371
+ end
1372
+
1373
+ def on_delete_children(event)
1374
+ item = @treectrl.selection
1375
+ return unless check_item(item)
1376
+ @treectrl.delete_children(item)
1377
+ end
1378
+
1379
+ def on_delete_all(event)
1380
+ @treectrl.delete_all_items
1381
+ end
1382
+
1383
+ def on_freeze_thaw(event)
1384
+ if event.is_checked
1385
+ @treectrl.freeze
1386
+ else
1387
+ @treectrl.thaw
1388
+ end
1389
+
1390
+ Wx::log_message("The tree is %sfrozen", @treectrl.is_frozen ? '' : 'not ')
1391
+ end
1392
+
1393
+ def on_recreate(event)
1394
+ on_delete_all(event)
1395
+ @treectrl.add_test_items_to_tree(5, 2)
1396
+ end
1397
+
1398
+ def on_set_image_size(event)
1399
+ size = Wx.get_number_from_user("Enter the size for the images to use",
1400
+ "Size: ",
1401
+ "TreeCtrl sample",
1402
+ @treectrl.image_size)
1403
+ if size == -1
1404
+ return
1405
+ end
1406
+
1407
+ @treectrl.create_image_list(size)
1408
+ @treectrl.refresh
1409
+ Wx::THE_APP.show_images = true
1410
+ end
1411
+
1412
+ def on_toggle_images(event)
1413
+ if Wx::get_app.show_images
1414
+ @treectrl.unset_image_list
1415
+ Wx::get_app.show_images = false
1416
+ else
1417
+ @treectrl.create_image_list(@treectrl.image_size)
1418
+ Wx::get_app.show_images = true
1419
+ end
1420
+ end
1421
+
1422
+ def on_toggle_states(event)
1423
+ if Wx::get_app.show_states
1424
+ @treectrl.create_state_imageList(true)
1425
+ Wx::get_app.show_states = false
1426
+ else
1427
+ @treectrl.create_state_imageList
1428
+ Wx::get_app.show_states = true
1429
+ end
1430
+ end
1431
+
1432
+ def on_toggle_bell(event)
1433
+ @treectrl.enable_bell_on_no_match(event.checked?)
1434
+ end
1435
+
1436
+ def on_toggle_alternate_images(event)
1437
+ alternateImages = @treectrl.alternate_images
1438
+
1439
+ @treectrl.alternate_images = !alternateImages
1440
+ @treectrl.create_image_list(0)
1441
+ end
1442
+
1443
+ def on_toggle_alternate_states(event)
1444
+ alternateStates = @treectrl.alternate_states
1445
+
1446
+ @treectrl.alternate_states = !alternateStates
1447
+ @treectrl.create_state_imageList
1448
+
1449
+ # normal states < alternate states
1450
+ # so we must reset broken states
1451
+ if alternateStates
1452
+ @treectrl.reset_broken_state_images
1453
+ end
1454
+ end
1455
+
1456
+ def on_toggle_buttons(event)
1457
+ unless Wx.has_feature?(:WXMSW)
1458
+ if Wx::THE_APP.show_buttons
1459
+ @treectrl.create_buttons_image_list(-1)
1460
+ Wx::get_app.show_buttons = false
1461
+ else
1462
+ @treectrl.create_buttons_image_list(15)
1463
+ Wx::get_app.show_buttons = true
1464
+ end
1465
+ end
1466
+ end
1467
+
1468
+ def on_collapse_and_reset(event)
1469
+ @treectrl.collapse_and_reset(@treectrl.get_root_item)
1470
+ end
1471
+
1472
+ def on_ensure_visible(event)
1473
+ @treectrl.do_ensure_visible
1474
+ end
1475
+
1476
+ def on_set_focus(event)
1477
+ @treectrl.set_focus
1478
+ end
1479
+
1480
+ def on_insert_item(event)
1481
+ image = Wx::THE_APP.show_images ? TreeCtrlIcon_File : -1
1482
+ @treectrl.insert_item(@treectrl.root_item, -1, "2nd item", image)
1483
+ end
1484
+
1485
+ def on_add_item(event)
1486
+ @s_num += 1
1487
+ text = sprintf("Item #%d", @s_num)
1488
+ @treectrl.append_item(@treectrl.root_item, text)
1489
+ end
1490
+
1491
+ def on_add_many_items(event)
1492
+ Wx::WindowUpdateLocker.update(@treectrl) do
1493
+ root = @treectrl.root_item
1494
+ 1000.times {|n| @treectrl.append_item(root, "Item #%03d" % [n]) }
1495
+ end
1496
+ end
1497
+
1498
+ def on_inc_indent(event)
1499
+ if @treectrl.indent < 100
1500
+ @treectrl.indent += 5
1501
+ end
1502
+ end
1503
+
1504
+ def on_dec_indent(event)
1505
+ if @treectrl.indent > 10
1506
+ @treectrl.indent -= 5
1507
+ end
1508
+ end
1509
+
1510
+ def on_inc_spacing(event)
1511
+ if @treectrl.spacing < 100
1512
+ @treectrl.spacing += 5
1513
+ end
1514
+ end
1515
+
1516
+ def on_dec_spacing(event)
1517
+ if @treectrl.spacing > 10
1518
+ @treectrl.spacing -= 5
1519
+ end
1520
+ end
1521
+
1522
+ def on_toggle_icon(event)
1523
+ item = @treectrl.focused_item
1524
+ return unless check_item(item)
1525
+ @treectrl.do_toggle_icon(item)
1526
+ end
1527
+
1528
+ def on_toggle_state(event)
1529
+ item = @treectrl.focused_item
1530
+ return unless check_item(item)
1531
+ @treectrl.do_toggle_state(item)
1532
+ end
1533
+
1534
+ def do_show_first_or_last(label)
1535
+ item = yield
1536
+ unless item.ok?
1537
+ Wx::log_message("There is no %s item" % label)
1538
+ else
1539
+ Wx::log_message("The %s item is \"%s\"" %
1540
+ [label, @treectrl.item_text(item)])
1541
+ end
1542
+ end
1543
+
1544
+ def do_show_relative_item(label)
1545
+ item = @treectrl.focused_item
1546
+
1547
+ return unless item.ok?
1548
+ unless !label['visible'] || @treectrl.visible?(item)
1549
+ Wx::log_message("The selected item must be visible.")
1550
+ return
1551
+ end
1552
+
1553
+ item = yield(item)
1554
+
1555
+ unless item.ok?
1556
+ Wx::log_message("There is no %s item" % label)
1557
+ else
1558
+ Wx::log_message("The %s item is \"%s\"" %
1559
+ [label, @treectrl.item_text(item)])
1560
+ end
1561
+ end
1562
+
1563
+ def on_show_first_visible(event)
1564
+ do_show_first_or_last("first visible") { @treectrl.first_visible_item }
1565
+ end
1566
+
1567
+ def on_show_last_visible(event)
1568
+ if Wx.has_feature?(:HAS_LAST_VISIBLE)
1569
+ do_show_first_or_last("last visible") { @treectrl.last_visible_item }
1570
+ end
1571
+ end
1572
+
1573
+ def on_show_next_visible(event)
1574
+ do_show_relative_item("next visible") { |itm| @treectrl.next_visible(itm) }
1575
+ end
1576
+
1577
+ def on_show_prev_visible(event)
1578
+ do_show_relative_item("prev visible") { |itm| @treectrl.prev_visible(itm) }
1579
+ end
1580
+
1581
+ def on_show_parent(event)
1582
+ do_show_relative_item("parent") { |itm| @treectrl.item_parent(itm) }
1583
+ end
1584
+
1585
+ def on_show_prev_sibling(event)
1586
+ do_show_relative_item("previous sibling") { |itm| @treectrl.prev_sibling(itm) }
1587
+ end
1588
+
1589
+ def on_show_next_sibling(event)
1590
+ do_show_relative_item("next sibling") { |itm| @treectrl.next_sibling(itm) }
1591
+ end
1592
+
1593
+ def on_scroll_to(event)
1594
+ # scroll to the last but one top level child
1595
+ item = @treectrl.get_prev_sibling(
1596
+ @treectrl.get_last_child(
1597
+ @treectrl.root_item))
1598
+ return unless item.ok?
1599
+
1600
+ @treectrl.scroll_to(item)
1601
+ end
1602
+
1603
+ def on_select_last(event)
1604
+ item = @treectrl.last_tree_item
1605
+
1606
+ return unless item.ok?
1607
+
1608
+ @treectrl.select_item(item)
1609
+ end
1610
+
1611
+ def on_set_fg_colour(event)
1612
+ col = Wx::get_colour_from_user(self, @treectrl.foreground_colour)
1613
+ if col.ok?
1614
+ @treectrl.foreground_colour = col
1615
+ end
1616
+ end
1617
+
1618
+ def on_set_bg_colour(event)
1619
+ col = Wx::get_colour_from_user(self, @treectrl.background_colour)
1620
+ if col.ok?
1621
+ @treectrl.background_colour = col
1622
+ end
1623
+ end
1624
+
1625
+ def on_tog_buttons(event)
1626
+ tog_style(event.id, Wx::TR_HAS_BUTTONS)
1627
+ end
1628
+
1629
+ def on_tog_twist(event)
1630
+ tog_style(event.id, Wx::TR_TWIST_BUTTONS)
1631
+ end
1632
+
1633
+ def on_tog_lines(event)
1634
+ tog_style(event.id, Wx::TR_NO_LINES)
1635
+ end
1636
+
1637
+ def on_tog_edit(event)
1638
+ tog_style(event.id, Wx::TR_EDIT_LABELS)
1639
+ end
1640
+
1641
+ def on_tog_hide_root(event)
1642
+ tog_style(event.id, Wx::TR_HIDE_ROOT)
1643
+ end
1644
+
1645
+ def on_tog_root_lines(event)
1646
+ tog_style(event.id, Wx::TR_LINES_AT_ROOT)
1647
+ end
1648
+
1649
+ def on_tog_border(event)
1650
+ tog_style(event.id, Wx::TR_ROW_LINES)
1651
+ end
1652
+
1653
+ def on_tog_full_highlight(event)
1654
+ tog_style(event.id, Wx::TR_FULL_ROW_HIGHLIGHT)
1655
+ end
1656
+
1657
+ def on_reset_style(event)
1658
+ create_tree_with_default_style
1659
+ end
1660
+
1661
+ def on_set_bold(event)
1662
+ do_set_bold(true)
1663
+ end
1664
+
1665
+ def on_clear_bold(event)
1666
+ do_set_bold(false)
1667
+ end
1668
+
1669
+ def on_sort(event)
1670
+ do_sort
1671
+ end
1672
+
1673
+ def on_sort_rev(event)
1674
+ do_sort(true)
1675
+ end
1676
+
1677
+ def on_close(event)
1678
+ Wx::Log::active_target = nil
1679
+ destroy
1680
+ end
1681
+
1682
+ end
1683
+
1684
+ class MyApp < Wx::App
1685
+ attr_accessor :show_images, :show_buttons, :show_states
1686
+
1687
+ def initialize
1688
+ self.show_images = true
1689
+ self.show_buttons = false
1690
+ self.show_states = true
1691
+ super
1692
+ end
1693
+
1694
+ def on_init
1695
+ # Create the main frame window
1696
+ frame = MyFrame.new("TreeCtrl Test", 50, 50, 450, 600)
1697
+ # show the frame
1698
+ frame.show(true)
1699
+ end
1700
+ end
1701
+
1702
+ module TreeCtrlSample
1703
+
1704
+ include WxRuby::Sample if defined? WxRuby::Sample
1705
+
1706
+ def self.describe
1707
+ { file: __FILE__,
1708
+ summary: 'wxRuby TreeCtrl example.',
1709
+ description: 'wxRuby example displaying use of TreeCtrl.' }
1710
+ end
1711
+
1712
+ def self.run
1713
+ execute(__FILE__)
1714
+ end
1715
+
1716
+ if $0 == __FILE__
1717
+ MyApp.run
1718
+ end
1719
+
1720
+ end