wxruby3 0.9.1 → 0.9.3

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 (472) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/INSTALL.md +35 -29
  4. data/README.md +24 -15
  5. data/ext/wxruby3/include/wxRubyApp.h +338 -0
  6. data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
  7. data/ext/wxruby3/include/wxruby-Config.h +6 -6
  8. data/ext/wxruby3/include/wxruby-Validator.h +39 -0
  9. data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
  10. data/ext/wxruby3/swig/common.i +1 -1
  11. data/ext/wxruby3/swig/custom/director.swg +8 -0
  12. data/ext/wxruby3/swig/mark_free_impl.i +0 -33
  13. data/lib/wx/aui/aui_tab_ctrl.rb +18 -0
  14. data/lib/wx/aui/auinotebook.rb +6 -2
  15. data/lib/wx/aui/require.rb +1 -0
  16. data/lib/wx/core/app.rb +2 -2
  17. data/lib/wx/core/bitmap_combobox.rb +17 -21
  18. data/lib/wx/core/collapsible_pane.rb +1 -1
  19. data/lib/wx/core/combobox.rb +13 -3
  20. data/lib/wx/core/controlwithitems.rb +40 -128
  21. data/lib/wx/core/enum.rb +17 -1
  22. data/lib/wx/core/event.rb +6 -1
  23. data/lib/wx/core/evthandler.rb +8 -2
  24. data/lib/wx/core/generic_validator.rb +312 -0
  25. data/lib/wx/core/listbox.rb +2 -2
  26. data/lib/wx/core/log.rb +1 -1
  27. data/lib/wx/core/menu.rb +10 -0
  28. data/lib/wx/core/notebook.rb +6 -2
  29. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  30. data/lib/wx/core/size.rb +4 -0
  31. data/lib/wx/core/sizer.rb +12 -2
  32. data/lib/wx/core/standard_paths.rb +22 -0
  33. data/lib/wx/core/task_bar_button.rb +19 -0
  34. data/lib/wx/core/text_entry.rb +4 -1
  35. data/lib/wx/core/textctrl.rb +11 -1
  36. data/lib/wx/core/{treectrl.rb → tree_ctrl.rb} +31 -12
  37. data/lib/wx/core/validator.rb +70 -5
  38. data/lib/wx/core/window.rb +13 -7
  39. data/lib/wx/doc/app.rb +48 -38
  40. data/lib/wx/doc/art_locator.rb +48 -43
  41. data/lib/wx/doc/aui/auimanager.rb +16 -8
  42. data/lib/wx/doc/aui/auinotebook.rb +20 -5
  43. data/lib/wx/doc/clipboard.rb +11 -7
  44. data/lib/wx/doc/colour_dialog.rb +14 -10
  45. data/lib/wx/doc/comboctrl.rb +18 -0
  46. data/lib/wx/doc/controlwithitems.rb +34 -8
  47. data/lib/wx/doc/data_object.rb +2 -2
  48. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  49. data/lib/wx/doc/editable_listbox.rb +44 -0
  50. data/lib/wx/doc/enum.rb +15 -0
  51. data/lib/wx/doc/event.rb +12 -0
  52. data/lib/wx/doc/evthandler.rb +113 -108
  53. data/lib/wx/doc/extra/12_client_data.md +89 -0
  54. data/lib/wx/doc/extra/13_validators.md +139 -0
  55. data/lib/wx/doc/font.rb +1 -0
  56. data/lib/wx/doc/gc_dc.rb +6 -1
  57. data/lib/wx/doc/gdi_common.rb +4 -0
  58. data/lib/wx/doc/generic_validator.rb +95 -0
  59. data/lib/wx/doc/graphics_context.rb +1 -0
  60. data/lib/wx/doc/grid/grid.rb +22 -1
  61. data/lib/wx/doc/help_controller.rb +11 -7
  62. data/lib/wx/doc/html/html_help_controller.rb +12 -4
  63. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  64. data/lib/wx/doc/list_ctrl.rb +33 -29
  65. data/lib/wx/doc/menu.rb +20 -0
  66. data/lib/wx/doc/notebook.rb +21 -0
  67. data/lib/wx/doc/num_validator.rb +387 -0
  68. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  69. data/lib/wx/doc/pg/events.rb +13 -9
  70. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  71. data/lib/wx/doc/pg/pg_property.rb +18 -0
  72. data/lib/wx/doc/progress_dialog.rb +36 -32
  73. data/lib/wx/doc/prt/page_setup_dialog.rb +20 -12
  74. data/lib/wx/doc/prt/print_data.rb +13 -5
  75. data/lib/wx/doc/prt/print_dialog.rb +31 -23
  76. data/lib/wx/doc/prt/printer.rb +20 -12
  77. data/lib/wx/doc/radio_box.rb +19 -15
  78. data/lib/wx/doc/rbn/ribbon_bar.rb +13 -5
  79. data/lib/wx/doc/rbn/ribbon_button_bar.rb +13 -5
  80. data/lib/wx/doc/rbn/ribbon_gallery.rb +13 -5
  81. data/lib/wx/doc/rbn/ribbon_tool_bar.rb +13 -5
  82. data/lib/wx/doc/region_iterator.rb +32 -28
  83. data/lib/wx/doc/rtc/rich_text_composite_object.rb +24 -0
  84. data/lib/wx/doc/rtc/rich_text_ctrl.rb +24 -0
  85. data/lib/wx/doc/rtc/rich_text_paragraph.rb +24 -0
  86. data/lib/wx/doc/rtc/richtext_buffer.rb +27 -19
  87. data/lib/wx/doc/rtc/richtext_printing.rb +17 -9
  88. data/lib/wx/doc/rtc/richtext_style_sheet.rb +17 -9
  89. data/lib/wx/doc/sizer.rb +20 -0
  90. data/lib/wx/doc/static_bitmap.rb +25 -0
  91. data/lib/wx/doc/stc/styled_text_ctrl.rb +24 -0
  92. data/lib/wx/doc/stream.rb +39 -35
  93. data/lib/wx/doc/system_settings.rb +30 -26
  94. data/lib/wx/doc/text_validator.rb +23 -9
  95. data/lib/wx/doc/textctrl.rb +16 -0
  96. data/lib/wx/doc/tree_ctrl.rb +95 -0
  97. data/lib/wx/doc/treebook.rb +9 -5
  98. data/lib/wx/doc/v_list_box.rb +9 -5
  99. data/lib/wx/doc/validator.rb +113 -0
  100. data/lib/wx/doc/variant.rb +164 -160
  101. data/lib/wx/doc/window.rb +87 -47
  102. data/lib/wx/doc/window_disabler.rb +10 -6
  103. data/lib/wx/grid/grid.rb +27 -4
  104. data/lib/wx/html/simple_html_listbox.rb +24 -91
  105. data/lib/wx/keyword_defs.rb +34 -2
  106. data/lib/wx/pg/pg_property.rb +22 -0
  107. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  108. data/lib/wx/rtc/require.rb +3 -0
  109. data/lib/wx/rtc/rich_text_composite_object.rb +25 -0
  110. data/lib/wx/rtc/rich_text_ctrl.rb +25 -0
  111. data/lib/wx/rtc/rich_text_paragraph.rb +25 -0
  112. data/lib/wx/stc/require.rb +1 -0
  113. data/lib/wx/stc/styled_text_ctrl.rb +25 -0
  114. data/lib/wx/version.rb +1 -1
  115. data/rakelib/lib/config/linux.rb +0 -3
  116. data/rakelib/lib/config/macosx.rb +2 -2
  117. data/rakelib/lib/config/mingw.rb +13 -1
  118. data/rakelib/lib/config/unixish.rb +1 -1
  119. data/rakelib/lib/config.rb +14 -4
  120. data/rakelib/lib/core/include/client_data.inc +65 -0
  121. data/rakelib/lib/core/include/funcall.inc +1 -1
  122. data/rakelib/lib/core/package.rb +31 -9
  123. data/rakelib/lib/core/parameter.rb +1 -1
  124. data/rakelib/lib/core/spec.rb +6 -1
  125. data/rakelib/lib/core/spec_helper.rb +7 -1
  126. data/rakelib/lib/director/accelerator.rb +2 -3
  127. data/rakelib/lib/director/accessible.rb +47 -0
  128. data/rakelib/lib/director/app.rb +30 -319
  129. data/rakelib/lib/director/app_traits.rb +13 -13
  130. data/rakelib/lib/director/bitmap_combobox.rb +2 -2
  131. data/rakelib/lib/director/combobox.rb +22 -0
  132. data/rakelib/lib/director/comboctrl.rb +1 -55
  133. data/rakelib/lib/director/ctrl_with_items.rb +105 -26
  134. data/rakelib/lib/director/data_format.rb +1 -1
  135. data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
  136. data/rakelib/lib/director/derived_dc.rb +1 -1
  137. data/rakelib/lib/director/dialog.rb +1 -0
  138. data/rakelib/lib/director/drag_image.rb +2 -3
  139. data/rakelib/lib/director/editable_listbox.rb +30 -0
  140. data/rakelib/lib/director/event.rb +104 -14
  141. data/rakelib/lib/director/event_handler.rb +3 -2
  142. data/rakelib/lib/director/frame.rb +1 -3
  143. data/rakelib/lib/director/functions.rb +4 -2
  144. data/rakelib/lib/director/gdicommon.rb +8 -10
  145. data/rakelib/lib/director/generic_dirctrl.rb +17 -0
  146. data/rakelib/lib/director/graphics_context.rb +2 -4
  147. data/rakelib/lib/director/grid_cell_attr.rb +0 -2
  148. data/rakelib/lib/director/grid_cell_editor.rb +0 -2
  149. data/rakelib/lib/director/grid_cell_renderer.rb +0 -2
  150. data/rakelib/lib/director/grid_ctrl.rb +34 -3
  151. data/rakelib/lib/director/header_ctrl.rb +6 -1
  152. data/rakelib/lib/director/html_listbox.rb +96 -22
  153. data/rakelib/lib/director/icon.rb +5 -2
  154. data/rakelib/lib/director/list_ctrl.rb +5 -6
  155. data/rakelib/lib/director/locale.rb +1 -3
  156. data/rakelib/lib/director/log.rb +1 -4
  157. data/rakelib/lib/director/media_ctrl.rb +54 -0
  158. data/rakelib/lib/director/menu.rb +16 -1
  159. data/rakelib/lib/director/menu_item.rb +2 -2
  160. data/rakelib/lib/director/num_validator.rb +495 -0
  161. data/rakelib/lib/director/numeric_property_validator.rb +131 -6
  162. data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
  163. data/rakelib/lib/director/pgproperties.rb +1 -1
  164. data/rakelib/lib/director/pgproperty.rb +27 -30
  165. data/rakelib/lib/director/property_grid_interface.rb +5 -10
  166. data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
  167. data/rakelib/lib/director/ribbon_gallery.rb +3 -5
  168. data/rakelib/lib/director/richtext_composite_object.rb +25 -0
  169. data/rakelib/lib/director/richtext_ctrl.rb +14 -4
  170. data/rakelib/lib/director/richtext_formatting_dialog.rb +7 -5
  171. data/rakelib/lib/director/richtext_paragraph_layout_box.rb +9 -7
  172. data/rakelib/lib/director/sizer.rb +30 -4
  173. data/rakelib/lib/director/sizer_item.rb +13 -0
  174. data/rakelib/lib/director/static_bitmap.rb +28 -0
  175. data/rakelib/lib/director/static_box.rb +4 -5
  176. data/rakelib/lib/director/styled_text_ctrl.rb +12 -0
  177. data/rakelib/lib/director/task_bar_button.rb +30 -0
  178. data/rakelib/lib/director/task_bar_icon.rb +5 -13
  179. data/rakelib/lib/director/text_entry.rb +4 -0
  180. data/rakelib/lib/director/text_validator.rb +124 -13
  181. data/rakelib/lib/director/textctrl.rb +12 -1
  182. data/rakelib/lib/director/toggle_button.rb +1 -0
  183. data/rakelib/lib/director/tool_tip.rb +1 -1
  184. data/rakelib/lib/director/top_level_window.rb +4 -7
  185. data/rakelib/lib/director/tree_ctrl.rb +40 -6
  186. data/rakelib/lib/director/utils.rb +16 -2
  187. data/rakelib/lib/director/validator.rb +196 -21
  188. data/rakelib/lib/director/variant.rb +1 -1
  189. data/rakelib/lib/director/window.rb +40 -7
  190. data/rakelib/lib/director.rb +4 -4
  191. data/rakelib/lib/extractor/function.rb +8 -7
  192. data/rakelib/lib/extractor.rb +34 -5
  193. data/rakelib/lib/generate/analyzer.rb +9 -4
  194. data/rakelib/lib/generate/doc/busy_info.yaml +0 -2
  195. data/rakelib/lib/generate/doc/clipboard.yaml +0 -2
  196. data/rakelib/lib/generate/doc/cursor.yaml +0 -2
  197. data/rakelib/lib/generate/doc/panel.yaml +7 -0
  198. data/rakelib/lib/generate/doc.rb +85 -17
  199. data/rakelib/lib/specs/interfaces.rb +163 -160
  200. data/rakelib/lib/swig_runner.rb +55 -9
  201. data/rakelib/lib/typemap/client_data.rb +67 -0
  202. data/rakelib/lib/typemap/common.rb +33 -4
  203. data/rakelib/lib/typemap/datetime.rb +1 -1
  204. data/rakelib/lib/typemap/tree_itemid.rb +2 -2
  205. data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +74 -2
  206. data/rakelib/yard/templates/default/fulldoc/html/full_list.erb +38 -0
  207. data/rakelib/yard/templates/default/fulldoc/html/setup.rb +39 -0
  208. data/rakelib/yard/templates/default/tags/html/wxrb_require.erb +10 -0
  209. data/rakelib/yard/templates/default/tags/setup.rb +16 -0
  210. data/rakelib/yard/yard-custom-templates.rb +3 -0
  211. data/samples/aui/aui.rb +1237 -1233
  212. data/samples/calendar/calendar.rb +293 -289
  213. data/samples/controls/get_item_sample.rb +83 -79
  214. data/samples/controls/htlbox.rb +331 -327
  215. data/samples/dialogs/dialogs.rb +682 -694
  216. data/samples/dialogs/wizard.rb +52 -55
  217. data/samples/dragdrop/dragdrop.rb +146 -142
  218. data/samples/drawing/bitmap.rb +29 -26
  219. data/samples/drawing/bitmap_image.rb +84 -80
  220. data/samples/drawing/graphics_drawing.rb +209 -205
  221. data/samples/drawing/image_prt.rb +344 -340
  222. data/samples/drawing/maths_images.rb +18 -1
  223. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  224. data/samples/etc/caret.rb +306 -0
  225. data/samples/etc/miniframe.rb +65 -60
  226. data/samples/etc/sash.rb +109 -105
  227. data/samples/etc/scrollwin.rb +86 -80
  228. data/samples/etc/system_settings.rb +216 -209
  229. data/samples/event/activation.rb +72 -67
  230. data/samples/event/event.rb +160 -153
  231. data/samples/event/threaded.rb +8 -1
  232. data/samples/event/update_ui_event.rb +67 -60
  233. data/samples/grid/grid.rb +188 -181
  234. data/samples/grid/gridtablebase.rb +136 -129
  235. data/samples/html/html.rb +208 -204
  236. data/samples/mdi/mdi.rb +59 -54
  237. data/samples/minimal/minimal.rb +54 -51
  238. data/samples/minimal/nothing.rb +1 -0
  239. data/samples/printing/printing.rb +367 -377
  240. data/samples/printing/printing2.rb +203 -198
  241. data/samples/propgrid/propgrid.rb +2312 -2308
  242. data/samples/propgrid/propgrid_minimal.rb +57 -50
  243. data/samples/ribbon/ribbon.rb +780 -774
  244. data/samples/sampler/ext.rb +0 -33
  245. data/samples/sampler/sample.rb +4 -9
  246. data/samples/sampler.rb +1 -1
  247. data/samples/splash/splash.rb +118 -116
  248. data/samples/text/rich_textctrl.rb +207 -201
  249. data/samples/text/richtext.rb +1409 -1405
  250. data/samples/text/scintilla.rb +137 -128
  251. data/samples/text/textctrl.rb +89 -83
  252. data/samples/text/unicode.rb +175 -168
  253. data/samples/treectrl/treectrl.rb +1430 -1426
  254. data/samples/widgets/activityindicator.rb +95 -0
  255. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  256. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  257. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  258. data/samples/widgets/art/widgets/button.xpm +54 -0
  259. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  260. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  261. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  262. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  263. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  264. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  265. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  266. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  267. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  268. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  269. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  270. data/samples/widgets/art/widgets/header.xpm +54 -0
  271. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  272. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  273. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  274. data/samples/widgets/art/widgets/native.xpm +81 -0
  275. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  276. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  277. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  278. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  279. data/samples/widgets/art/widgets/slider.xpm +54 -0
  280. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  281. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  282. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  283. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  284. data/samples/widgets/art/widgets/text.xpm +54 -0
  285. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  286. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  287. data/samples/widgets/art/widgets/toucan.png +0 -0
  288. data/samples/widgets/bmpcombobox.rb +651 -0
  289. data/samples/widgets/button.rb +462 -0
  290. data/samples/widgets/checkbox.rb +211 -0
  291. data/samples/widgets/choice.rb +287 -0
  292. data/samples/widgets/clrpicker.rb +156 -0
  293. data/samples/widgets/combobox.rb +516 -0
  294. data/samples/widgets/datepick.rb +215 -0
  295. data/samples/widgets/dirctrl.rb +265 -0
  296. data/samples/widgets/dirpicker.rb +158 -0
  297. data/samples/widgets/editlbox.rb +122 -0
  298. data/samples/widgets/filectrl.rb +216 -0
  299. data/samples/widgets/filepicker.rb +214 -0
  300. data/samples/widgets/fontpicker.rb +135 -0
  301. data/samples/widgets/gauge.rb +311 -0
  302. data/samples/widgets/headerctrl.rb +236 -0
  303. data/samples/widgets/hyperlink.rb +203 -0
  304. data/samples/widgets/itemcontainer.rb +185 -0
  305. data/samples/widgets/listbox.rb +473 -0
  306. data/samples/widgets/notebook.rb +488 -0
  307. data/samples/widgets/odcombobox.rb +608 -0
  308. data/samples/widgets/radiobox.rb +328 -0
  309. data/samples/widgets/searchctrl.rb +159 -0
  310. data/samples/widgets/slider.rb +594 -0
  311. data/samples/widgets/spinbtn.rb +443 -0
  312. data/samples/widgets/statbmp.rb +130 -0
  313. data/samples/widgets/static.rb +436 -0
  314. data/samples/widgets/textctrl.rb +700 -0
  315. data/samples/widgets/timepick.rb +148 -0
  316. data/samples/widgets/tn_widgets.png +0 -0
  317. data/samples/widgets/toggle.rb +385 -0
  318. data/samples/widgets/widgets.rb +1233 -0
  319. data/samples/xrc/custom_xrc_sample.rb +47 -41
  320. data/samples/xrc/xrc_sample.rb +53 -47
  321. data/tests/media/beep_lo.wav +0 -0
  322. data/tests/test_event_handling.rb +52 -34
  323. data/tests/test_events.rb +7 -0
  324. data/tests/test_item_data.rb +24 -0
  325. data/tests/test_list_ctrl.rb +1 -1
  326. data/tests/test_media_ctrl.rb +38 -0
  327. data/tests/test_menu.rb +69 -0
  328. data/tests/test_pg.rb +27 -0
  329. data/tests/test_richtext.rb +45 -0
  330. data/tests/test_sizer.rb +59 -0
  331. data/tests/test_std_controls.rb +42 -1
  332. data/tests/test_styled_text_ctrl.rb +46 -0
  333. data/tests/test_tree_ctrl.rb +138 -0
  334. data/tests/test_validators.rb +805 -0
  335. data/tests/test_window.rb +12 -0
  336. data/tests/testapp_noframe.rb +1 -1
  337. metadata +121 -139
  338. data/lib/wx/core/choice.rb +0 -14
  339. data/lib/wx/core/combo_ctrl.rb +0 -110
  340. data/rakelib/lib/typemap/grid_client_data.rb +0 -58
  341. data/samples/bigdemo/About.rbw +0 -39
  342. data/samples/bigdemo/ColorPanel.rbw +0 -23
  343. data/samples/bigdemo/GridSimple.rbw +0 -78
  344. data/samples/bigdemo/MDIDemo.rbw +0 -57
  345. data/samples/bigdemo/PopupMenu.rbw +0 -146
  346. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  347. data/samples/bigdemo/Sizers.rbw +0 -541
  348. data/samples/bigdemo/bigdemo.rb +0 -817
  349. data/samples/bigdemo/demoTemplate.rbw +0 -33
  350. data/samples/bigdemo/helpfile.htb +0 -0
  351. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  352. data/samples/bigdemo/icons/Test 015.png +0 -0
  353. data/samples/bigdemo/icons/choice.bmp +0 -0
  354. data/samples/bigdemo/icons/combo.bmp +0 -0
  355. data/samples/bigdemo/icons/combo.xpm +0 -27
  356. data/samples/bigdemo/icons/copy.xpm +0 -25
  357. data/samples/bigdemo/icons/cut.xpm +0 -24
  358. data/samples/bigdemo/icons/gauge.bmp +0 -0
  359. data/samples/bigdemo/icons/gauge.xpm +0 -27
  360. data/samples/bigdemo/icons/help.xpm +0 -25
  361. data/samples/bigdemo/icons/list.bmp +0 -0
  362. data/samples/bigdemo/icons/list.xpm +0 -27
  363. data/samples/bigdemo/icons/mondrian.ico +0 -0
  364. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  365. data/samples/bigdemo/icons/new.xpm +0 -24
  366. data/samples/bigdemo/icons/ogl.ico +0 -0
  367. data/samples/bigdemo/icons/ogl.xpm +0 -45
  368. data/samples/bigdemo/icons/open.xpm +0 -26
  369. data/samples/bigdemo/icons/paste.bmp +0 -0
  370. data/samples/bigdemo/icons/paste.xpm +0 -38
  371. data/samples/bigdemo/icons/pointy.png +0 -0
  372. data/samples/bigdemo/icons/preview.xpm +0 -26
  373. data/samples/bigdemo/icons/print.xpm +0 -26
  374. data/samples/bigdemo/icons/radio.bmp +0 -0
  375. data/samples/bigdemo/icons/radio.xpm +0 -27
  376. data/samples/bigdemo/icons/robert.xpm +0 -415
  377. data/samples/bigdemo/icons/sashtest.ico +0 -0
  378. data/samples/bigdemo/icons/save.xpm +0 -25
  379. data/samples/bigdemo/icons/smiles.bmp +0 -0
  380. data/samples/bigdemo/icons/smiles.xpm +0 -39
  381. data/samples/bigdemo/icons/smiley.ico +0 -0
  382. data/samples/bigdemo/icons/smiley.xpm +0 -42
  383. data/samples/bigdemo/icons/stattext.xpm +0 -24
  384. data/samples/bigdemo/icons/test2.bmp +0 -0
  385. data/samples/bigdemo/icons/test2.png +0 -0
  386. data/samples/bigdemo/icons/test2.xpm +0 -79
  387. data/samples/bigdemo/icons/text.bmp +0 -0
  388. data/samples/bigdemo/icons/text.xpm +0 -27
  389. data/samples/bigdemo/icons/tog1.bmp +0 -0
  390. data/samples/bigdemo/icons/tog1.xpm +0 -38
  391. data/samples/bigdemo/icons/tog2.bmp +0 -0
  392. data/samples/bigdemo/icons/tog2.xpm +0 -38
  393. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  394. data/samples/bigdemo/icons/wxwin.ico +0 -0
  395. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  396. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  397. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  398. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  399. data/samples/bigdemo/run.rb +0 -98
  400. data/samples/bigdemo/tips.txt +0 -7
  401. data/samples/bigdemo/utils.rb +0 -20
  402. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  403. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  404. data/samples/bigdemo/wxButton.rbw +0 -64
  405. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  406. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  407. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  408. data/samples/bigdemo/wxChoice.rbw +0 -47
  409. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  410. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  411. data/samples/bigdemo/wxComboBox.rbw +0 -77
  412. data/samples/bigdemo/wxCursor.rbw +0 -136
  413. data/samples/bigdemo/wxDialog.rbw +0 -74
  414. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  415. data/samples/bigdemo/wxDragImage.rbw +0 -70
  416. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  417. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  418. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  419. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  420. data/samples/bigdemo/wxFrame.rbw +0 -53
  421. data/samples/bigdemo/wxGauge.rbw +0 -65
  422. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  423. data/samples/bigdemo/wxGrid.rbw +0 -66
  424. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  425. data/samples/bigdemo/wxListBox.rbw +0 -140
  426. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  427. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  428. data/samples/bigdemo/wxMenu.rbw +0 -247
  429. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  430. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  431. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  432. data/samples/bigdemo/wxNotebook.rbw +0 -136
  433. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  434. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  435. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  436. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  437. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  438. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  439. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  440. data/samples/bigdemo/wxSlider.rbw +0 -42
  441. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  442. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  443. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  444. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  445. data/samples/bigdemo/wxStaticText.rbw +0 -55
  446. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  447. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  448. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  449. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  450. data/samples/bigdemo/wxToolBar.rbw +0 -131
  451. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  452. data/samples/caret/caret.rb +0 -298
  453. data/samples/caret/mondrian.xpm +0 -44
  454. data/samples/controls/books.rb +0 -189
  455. data/samples/controls/choice.xpm +0 -27
  456. data/samples/controls/combo.xpm +0 -27
  457. data/samples/controls/controls.rb +0 -1099
  458. data/samples/controls/gauge.xpm +0 -27
  459. data/samples/controls/list.xpm +0 -27
  460. data/samples/controls/mondrian.ico +0 -0
  461. data/samples/controls/mondrian.xpm +0 -44
  462. data/samples/controls/radio.xpm +0 -27
  463. data/samples/controls/stattext.xpm +0 -24
  464. data/samples/controls/test2.bmp +0 -0
  465. data/samples/controls/text.xpm +0 -27
  466. data/samples/controls/tn_books.png +0 -0
  467. data/samples/controls/tn_controls.png +0 -0
  468. data/samples/etc/choice.rb +0 -87
  469. data/samples/etc/tn_choice.png +0 -0
  470. data/samples/text/mondrian.ico +0 -0
  471. data/samples/text/mondrian.xpm +0 -44
  472. /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -0,0 +1,312 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ if has_feature?(:USE_VALIDATORS)
8
+
9
+ class GenericValidator < Wx::Validator
10
+
11
+ class << self
12
+ def handlers
13
+ @handlers ||= ::Hash.new(Proc.new { |win, *rest| raise NotImplementedError, "#{win.class} not supported" })
14
+ end
15
+
16
+ def define_handler(klass, meth=nil, &block)
17
+ raise ArgumentError, 'Expected a Class for arg 1' unless klass.is_a?(::Class)
18
+ h = if block and not meth
19
+ block
20
+ else
21
+ case meth
22
+ when Proc, Method
23
+ meth
24
+ else
25
+ raise ArgumentError, 'Expected a Proc or Method for arg 2'
26
+ end
27
+ end
28
+ handlers[klass] = h
29
+ end
30
+ end
31
+
32
+ def initialize(*arg)
33
+ super
34
+ @value = arg.empty? ? nil : arg.first.value
35
+ @handler = nil
36
+ @klass = nil
37
+ end
38
+
39
+ attr_accessor :value
40
+
41
+ private
42
+
43
+ def do_transfer_from_window
44
+ get_handler.call(get_window)
45
+ end
46
+
47
+ def do_transfer_to_window(val)
48
+ get_handler.call(get_window, val) unless val.nil?
49
+ true
50
+ end
51
+
52
+ def do_on_transfer_from_window(data)
53
+ super(@value = data)
54
+ end
55
+
56
+ def do_on_transfer_to_window
57
+ @value = super || @value
58
+ end
59
+
60
+ def get_handler
61
+ if @handler && @klass == get_window.class
62
+ @handler
63
+ else
64
+ @klass = get_window.class
65
+ @handler = GenericValidator.handlers[@klass] || GenericValidator.handlers.each_key.detect { |k| k > klass }
66
+ @handler || ::Kernel.raise(NotImplementedError, "#{@klass} not supported")
67
+ end
68
+ end
69
+
70
+ end # GenericValidator
71
+
72
+ # define standard handlers
73
+
74
+ # boolean controls
75
+ if Wx.has_feature?(:USE_CHECKBOX)
76
+
77
+ GenericValidator.define_handler(Wx::CheckBox) do |win, *val|
78
+ if val.empty?
79
+ !!win.get_value
80
+ else
81
+ win.set_value(!!val.shift)
82
+ end
83
+ end
84
+
85
+ end
86
+ if Wx.has_feature?(:USE_RADIOBTN)
87
+
88
+ GenericValidator.define_handler(Wx::RadioButton) do |win, *val|
89
+ if val.empty?
90
+ !!win.get_value
91
+ else
92
+ win.set_value(!!val.shift)
93
+ end
94
+ end
95
+
96
+ end
97
+ if Wx.has_feature?(:USE_TOGGLEBTN)
98
+ # also covers Wx::BitmapToggleButton
99
+ GenericValidator.define_handler(Wx::ToggleButton) do |win, *val|
100
+ if val.empty?
101
+ !!win.get_value
102
+ else
103
+ win.set_value(!!val.shift)
104
+ end
105
+ end
106
+
107
+ end
108
+
109
+ # integer controls
110
+ if Wx.has_feature?(:USE_GAUGE)
111
+
112
+ GenericValidator.define_handler(Wx::Gauge) do |win, *val|
113
+ if val.empty?
114
+ win.get_value
115
+ else
116
+ win.set_value(val.shift)
117
+ end
118
+ end
119
+
120
+ end
121
+ if Wx.has_feature?(:USE_RADIOBOX)
122
+
123
+ GenericValidator.define_handler(Wx::RadioBox) do |win, *val|
124
+ if val.empty?
125
+ win.get_selection
126
+ else
127
+ win.set_selection(val.shift)
128
+ end
129
+ end
130
+
131
+ end
132
+ if Wx.has_feature?(:USE_SCROLLBAR)
133
+
134
+ GenericValidator.define_handler(Wx::ScrollBar) do |win, *val|
135
+ if val.empty?
136
+ win.get_thumb_position
137
+ else
138
+ win.set_thumb_position(val.shift)
139
+ end
140
+ end
141
+
142
+ end
143
+ if Wx.has_feature?(:USE_SPINCTRL)
144
+
145
+ GenericValidator.define_handler(Wx::SpinCtrl) do |win, *val|
146
+ if val.empty?
147
+ win.get_value
148
+ else
149
+ win.set_value(val.shift)
150
+ end
151
+ end
152
+
153
+ end
154
+ if Wx.has_feature?(:USE_SPINBTN)
155
+
156
+ GenericValidator.define_handler(Wx::SpinButton) do |win, *val|
157
+ if val.empty?
158
+ win.get_value
159
+ else
160
+ win.set_value(val.shift)
161
+ end
162
+ end
163
+
164
+ end
165
+ if Wx.has_feature?(:USE_SLIDER)
166
+
167
+ GenericValidator.define_handler(Wx::Slider) do |win, *val|
168
+ if val.empty?
169
+ win.get_value
170
+ else
171
+ win.set_value(val.shift)
172
+ end
173
+ end
174
+
175
+ end
176
+ if Wx.has_feature?(:USE_CHOICE)
177
+
178
+ GenericValidator.define_handler(Wx::Choice) do |win, *val|
179
+ if val.empty?
180
+ win.get_selection
181
+ else
182
+ win.set_selection(val.shift)
183
+ end
184
+ end
185
+
186
+ end
187
+ if Wx.has_feature?(:USE_COMBOBOX)
188
+
189
+ GenericValidator.define_handler(Wx::ComboBox) do |win, *val|
190
+ if val.empty?
191
+ if (win.get_window_style & Wx::CB_READONLY) == Wx::CB_READONLY
192
+ win.get_selection
193
+ else
194
+ win.get_string_selection
195
+ end
196
+ else
197
+ if (win.get_window_style & Wx::CB_READONLY) == Wx::CB_READONLY
198
+ win.set_selection(val.shift)
199
+ else
200
+ win.set_string_selection(val.shift)
201
+ end
202
+ end
203
+ end
204
+
205
+ end
206
+
207
+ # date/time controls
208
+ if Wx.has_feature?(:USE_DATEPICKCTRL)
209
+
210
+ GenericValidator.define_handler(Wx::DatePickerCtrl) do |win, *val|
211
+ if val.empty?
212
+ win.get_value
213
+ else
214
+ win.set_value(val.shift)
215
+ end
216
+ end
217
+
218
+ end
219
+ if Wx.has_feature?(:USE_TIMEPICKCTRL)
220
+
221
+ GenericValidator.define_handler(Wx::TimePickerCtrl) do |win, *val|
222
+ if val.empty?
223
+ win.get_value
224
+ else
225
+ win.set_value(val.shift)
226
+ end
227
+ end
228
+
229
+ end
230
+
231
+ # string controls
232
+ if Wx.has_feature?(:USE_BUTTON)
233
+
234
+ GenericValidator.define_handler(Wx::Button) do |win, *val|
235
+ if val.empty?
236
+ win.get_label
237
+ else
238
+ win.set_label(val.shift)
239
+ end
240
+ end
241
+
242
+ end
243
+ if Wx.has_feature?(:USE_STATTEXT)
244
+
245
+ GenericValidator.define_handler(Wx::StaticText) do |win, *val|
246
+ if val.empty?
247
+ win.get_label
248
+ else
249
+ win.set_label(val.shift)
250
+ end
251
+ end
252
+
253
+ end
254
+ if Wx.has_feature?(:USE_TEXTCTRL)
255
+
256
+ GenericValidator.define_handler(Wx::TextCtrl) do |win, *val|
257
+ if val.empty?
258
+ win.get_value
259
+ else
260
+ win.set_value(val.shift)
261
+ end
262
+ end
263
+
264
+ end
265
+
266
+ # array controls
267
+ if Wx.has_feature?(:USE_CHECKLISTBOX)
268
+
269
+ GenericValidator.define_handler(Wx::CheckListBox) do |win, *val|
270
+ if val.empty?
271
+ if (win.get_window_style & Wx::LB_SINGLE) == Wx::LB_SINGLE
272
+ win.get_checked_items.first
273
+ else
274
+ win.get_checked_items
275
+ end
276
+ else
277
+ if (win.get_window_style & Wx::LB_SINGLE) == Wx::LB_SINGLE
278
+ win.check(val.shift, true)
279
+ else
280
+ win.get_count.times { |i| win.check(i, false) }
281
+ [val].flatten.each { |i| win.check(i, true) }
282
+ end
283
+ end
284
+ end
285
+
286
+ end
287
+ if Wx.has_feature?(:USE_LISTBOX)
288
+
289
+ GenericValidator.define_handler(Wx::ListBox) do |win, *val|
290
+ if val.empty?
291
+ # test this the hard since on WXOSX LB_SINGLE is default but does get set
292
+ # by default i.e. on WXOSX no selection type bit set == LB_SINGLE
293
+ if (win.get_window_style & (Wx::LB_MULTIPLE|Wx::LB_EXTENDED)) == 0
294
+ win.get_selection
295
+ else
296
+ win.get_selections
297
+ end
298
+ else
299
+ if (win.get_window_style & (Wx::LB_MULTIPLE|Wx::LB_EXTENDED)) == 0
300
+ win.set_selection(val.shift)
301
+ else
302
+ win.get_count.times { |i| win.deselect(i) }
303
+ [val].flatten.each { |i| win.set_selection(i) }
304
+ end
305
+ end
306
+ end
307
+
308
+ end
309
+
310
+ end # if USE_VALIDATORS
311
+
312
+ end
@@ -9,6 +9,6 @@
9
9
  require_relative './controlwithitems'
10
10
 
11
11
  class Wx::ListBox
12
- alias :get_item_data :get_client_data
13
- alias :set_item_data :set_client_data
12
+ alias :get_item_data :get_client_object
13
+ alias :set_item_data :set_client_object
14
14
  end
data/lib/wx/core/log.rb CHANGED
@@ -71,7 +71,7 @@ module Wx
71
71
  # first log info instance of a repeating message sequence
72
72
 
73
73
  # format message
74
- msg = fmt % args
74
+ msg = args.empty? ? fmt : fmt % args
75
75
  log_info = {
76
76
  filename: if filename
77
77
  filename.to_s
data/lib/wx/core/menu.rb CHANGED
@@ -26,6 +26,16 @@ class Wx::Menu
26
26
  end
27
27
  end
28
28
 
29
+ # Overload to provide Enumerator without block
30
+ wx_each_item = instance_method :each_item
31
+ define_method :each_item do |&block|
32
+ if block
33
+ wx_each_item.bind(self).call(&block)
34
+ else
35
+ ::Enumerator.new { |y| wx_each_item.bind(self).call { |mi| y << mi } }
36
+ end
37
+ end
38
+
29
39
  # In the standard WxWidgets API, the methods append, prepend, insert
30
40
  # (and their variants) require a constant integer id as the identifier
31
41
  # of the menu item. This is then used in event handling.
@@ -11,8 +11,12 @@
11
11
  class Wx::Notebook
12
12
  # Convenience method for iterating pages
13
13
  def each_page
14
- 0.upto(get_page_count - 1) do | i |
15
- yield get_page(i)
14
+ if block_given?
15
+ 0.upto(get_page_count - 1) do | i |
16
+ yield get_page(i)
17
+ end
18
+ else
19
+ ::Enumerator.new { |y| each_page { |pg| y << pg } }
16
20
  end
17
21
  end
18
22
  end
@@ -0,0 +1,45 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ module Wx
6
+
7
+ class OwnerDrawnComboBox
8
+
9
+ # make sure to honor the inherited common overloads
10
+ wx_get_client_object = instance_method :get_client_object
11
+ define_method :get_client_object do |*args|
12
+ if args.empty?
13
+ super()
14
+ else
15
+ wx_get_client_object.bind(self).call(*args)
16
+ end
17
+ end
18
+ wx_set_client_object = instance_method :set_client_object
19
+ define_method :set_client_object do |*args|
20
+ if args.size < 2
21
+ super(*args)
22
+ else
23
+ wx_set_client_object.bind(self).call(*args)
24
+ end
25
+ end
26
+ # redefine aliases
27
+ alias :client_object :get_client_object
28
+ alias :client_object= :set_client_object
29
+
30
+ alias :get_client_data :get_client_object
31
+ alias :set_client_data :set_client_object
32
+
33
+ # Overload to provide Enumerator without block
34
+ wx_each_string = instance_method :each_string
35
+ define_method :each_string do |&block|
36
+ if block
37
+ wx_each_string.bind(self).call(&block)
38
+ else
39
+ ::Enumerator.new { |y| wx_each_string.bind(self).call { |ln| y << ln } }
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
data/lib/wx/core/size.rb CHANGED
@@ -13,8 +13,12 @@ class Wx::Size
13
13
  # provide compatibility methods
14
14
  alias :get_x :get_width
15
15
  alias :x :get_width
16
+ alias :set_x :set_width
17
+ alias :x= :set_width
16
18
  alias :get_y :get_height
17
19
  alias :y :get_height
20
+ alias :set_y :set_height
21
+ alias :y= :set_height
18
22
 
19
23
  # More informative output for inspect etc
20
24
  def to_s
data/lib/wx/core/sizer.rb CHANGED
@@ -14,8 +14,7 @@ class Wx::Sizer
14
14
  ADD_ITEM_PARAMS = [ Wx::Parameter[ :index, -1 ],
15
15
  Wx::Parameter[ :proportion, 0 ],
16
16
  Wx::Parameter[ :flag, 0 ],
17
- Wx::Parameter[ :border, 0 ],
18
- Wx::Parameter[ :user_data, nil ] ]
17
+ Wx::Parameter[ :border, 0 ] ]
19
18
 
20
19
  def add_item(item, *mixed_args)
21
20
 
@@ -49,4 +48,15 @@ class Wx::Sizer
49
48
  insert(idx, *full_args)
50
49
  end
51
50
  end
51
+
52
+ # Overload to provide Enumerator without block
53
+ wx_each_child = instance_method :each_child
54
+ define_method :each_child do |&block|
55
+ if block
56
+ wx_each_child.bind(self).call(&block)
57
+ else
58
+ ::Enumerator.new { |y| wx_each_child.bind(self).call { |c| y << c } }
59
+ end
60
+ end
61
+
52
62
  end
@@ -0,0 +1,22 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+
6
+ module Wx
7
+
8
+ class StandardPaths
9
+
10
+ class << self
11
+
12
+ wx_get = instance_method :get
13
+ define_method :get do
14
+ # cache the global singleton
15
+ @instance ||= wx_get.bind(self).call
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,19 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+
6
+ module Wx
7
+
8
+ if Wx::PLATFORM == 'WXMSW'
9
+ class TaskBarButton
10
+
11
+ wx_remove_thumb_bar_button = instance_method :remove_thumb_bar_button
12
+ define_method :remove_thumb_bar_button do |button|
13
+ button = button.get_id if button.is_a?(Wx::ThumbBarButton)
14
+ wx_remove_thumb_bar_button.bind(self).call(button)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -13,7 +13,10 @@ module Wx
13
13
  wx_auto_complete = instance_method :auto_complete
14
14
  define_method :auto_complete do |completer|
15
15
  if wx_auto_complete.bind(self).call(completer)
16
- @completer = completer # keep the Ruby object alive
16
+ @completer = completer.is_a?(Wx::TextCompleter) ? completer : nil # keep the Ruby object alive or cleanup
17
+ true
18
+ else
19
+ false
17
20
  end
18
21
  end
19
22
 
@@ -59,10 +59,20 @@ module Wx
59
59
  class TextCtrl
60
60
  wx_op_append = instance_method :<<
61
61
  define_method :<< do |o|
62
- wx_op_append.bind(self).call(o)
62
+ wx_op_append.bind(self).call(o.to_s)
63
63
  self
64
64
  end
65
65
 
66
+ # Overload to provide Enumerator without block
67
+ wx_each_line = instance_method :each_line
68
+ define_method :each_line do |&block|
69
+ if block
70
+ wx_each_line.bind(self).call(&block)
71
+ else
72
+ ::Enumerator.new { |y| wx_each_line.bind(self).call { |ln| y << ln } }
73
+ end
74
+ end
75
+
66
76
  if Wx.has_feature?(:USE_SPELLCHECK)
67
77
 
68
78
  protected :do_enable_proof_check
@@ -9,22 +9,41 @@
9
9
  # Hierarchical control with items
10
10
 
11
11
  class Wx::TreeCtrl
12
- # Make these ruby enumerables so find, find_all, map etc are available
13
- include Enumerable
12
+
13
+ # Overload to provide Enumerator without block
14
+ wx_traverse = instance_method :traverse
15
+ define_method :traverse do |start_id=nil, &block|
16
+ if block
17
+ wx_traverse.bind(self).call(start_id, &block)
18
+ else
19
+ ::Enumerator.new { |y| wx_traverse.bind(self).call(start_id) { |c| y << c } }
20
+ end
21
+ end
22
+
14
23
  # Iterate over all items
15
24
  alias :each :traverse
16
25
 
17
- # Return the children of +parent+ as an array of TreeItemIDs.
18
- def get_children(parent)
19
- kids = []
20
- kid, _ = get_first_child(parent)
21
- return [] unless kid.ok?
22
- kids << kid
23
-
24
- while kid = get_next_sibling(kids.last) and kid.ok?
25
- kids << kid
26
+ # Make these ruby enumerables so find, find_all, map etc are available
27
+ include Enumerable
28
+
29
+ # Iterate all children of parent_id
30
+ def each_item_child(parent_id, &block)
31
+ if block
32
+ rc = nil
33
+ child_id, cookie = get_first_child(parent_id)
34
+ while child_id && child_id.ok?
35
+ rc = block.call(child_id)
36
+ child_id, cookie = get_next_child(parent_id, cookie)
37
+ end
38
+ rc
39
+ else
40
+ ::Enumerator.new { |y| each_item_child(parent_id) { |child_id| y << child_id } }
26
41
  end
27
- kids
42
+ end
43
+
44
+ # Return the children of +parent+ as an array of TreeItemIDs.
45
+ def get_item_children(parent_id)
46
+ each_item_child(parent_id).to_a
28
47
  end
29
48
 
30
49
  # Returns a Wx::Rect corresponding to the edges of an individual tree
@@ -1,15 +1,80 @@
1
1
  # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
2
  #
3
3
  # This software is released under the MIT license.
4
- #
5
- # Some parts are
6
- # Copyright 2004-2007, wxRuby development team
7
- # released under the MIT-like wxRuby2 license
8
4
 
9
5
  class Wx::Validator
6
+
10
7
  # Default implementation of clone, may need to be over-ridden if
11
8
  # custom subclasses should state variables that need to be copied
9
+ # NOTE: There is no way to copy the bindings here so do NOT
12
10
  def clone
13
- self.class.new
11
+ begin
12
+ self.class.new(self)
13
+ rescue
14
+ p $!
15
+ raise
16
+ end
17
+ end
18
+
19
+ # overload for customized functionality
20
+ def do_transfer_from_window
21
+ nil # by default just return nil
14
22
  end
23
+ protected :do_transfer_from_window
24
+
25
+ # overload for customized functionality
26
+ def do_transfer_to_window(_data)
27
+ true # by default just return true
28
+ end
29
+ protected :do_transfer_to_window
30
+
31
+ protected :do_on_transfer_from_window
32
+ protected :do_on_transfer_to_window
33
+
34
+ module Binding
35
+ def self.included(base)
36
+ wx_on_transfer_from_window = base.instance_method :on_transfer_from_window
37
+ base.define_method :on_transfer_from_window do |meth = nil, &block|
38
+ proc = if block and not meth
39
+ block
40
+ elsif meth and not block
41
+ h_meth = case meth
42
+ when Symbol, String then self.method(meth)
43
+ when Proc then meth
44
+ when Method then meth
45
+ end
46
+ # check arity == 1
47
+ if h_meth.arity != 1
48
+ Kernel.raise ArgumentError,
49
+ "on_transfer_from_window handler should accept a single argument"
50
+ end
51
+ h_meth
52
+ end
53
+ wx_on_transfer_from_window.bind(self).call(proc)
54
+ end
55
+
56
+ wx_on_transfer_to_window = base.instance_method :on_transfer_to_window
57
+ base.define_method :on_transfer_to_window do |meth = nil, &block|
58
+ proc = if block and not meth
59
+ block
60
+ elsif meth and not block
61
+ h_meth = case meth
62
+ when Symbol, String then self.method(meth)
63
+ when Proc then meth
64
+ when Method then meth
65
+ end
66
+ # check arity == 0
67
+ if h_meth.arity != 0
68
+ Kernel.raise ArgumentError,
69
+ "on_transfer_to_window handler should not accept any argument"
70
+ end
71
+ h_meth
72
+ end
73
+ wx_on_transfer_to_window.bind(self).call(proc)
74
+ end
75
+ end
76
+ end
77
+
78
+ include Binding
79
+
15
80
  end
@@ -26,13 +26,9 @@ class Wx::Window
26
26
  # In case a more explicit option is preferred.
27
27
  alias :wx_id :get_id
28
28
 
29
- # The name of Wx::Window#raise conflicts with Ruby's core Kernel#raise
30
- # method. This can cause unexpected errors when undecorated #raise is
31
- # used inside a Window method. For wxRuby 2.0 it's too late to remove
32
- # Window#raise completely, but for now, offer alternatives to
33
- # raise/lower that could replace them in future versions.
34
- alias :bring_to_front :raise
35
- alias :send_to_back :lower
29
+ # Z-order alternatives
30
+ alias :bring_to_front :raise_window
31
+ alias :send_to_back :lower_window
36
32
 
37
33
  # Recursively searches all windows below +self+ and returns the first
38
34
  # window which has the id +an_id+. This corresponds to the find_window
@@ -79,6 +75,16 @@ class Wx::Window
79
75
  end
80
76
  end
81
77
 
78
+ # Overload to provide Enumerator without block
79
+ wx_each_child = instance_method :each_child
80
+ define_method :each_child do |&block|
81
+ if block
82
+ wx_each_child.bind(self).call(&block)
83
+ else
84
+ ::Enumerator.new { |y| wx_each_child.bind(self).call { |c| y << c } }
85
+ end
86
+ end
87
+
82
88
  # implement non-static variants of these
83
89
 
84
90
  def from_dip(*args)