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,473 @@
1
+ # Copyright (c) 2023 M.J.N. Corino = self.next_id The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+ #
5
+ # Adapted for wxRuby from wxWidgets widgets sample
6
+ # Copyright (c) 2001 Vadim Zeitlin
7
+
8
+ require_relative './itemcontainer'
9
+
10
+ module Widgets
11
+
12
+ module ListBox
13
+
14
+ class ListBoxPage < ItemContainer::Page
15
+
16
+ module ID
17
+ include Wx::IDHelper
18
+
19
+ Reset = self.next_id(Widgets::Frame::ID::Last)
20
+ Add = self.next_id
21
+ AddText = self.next_id
22
+ AddSeveral = self.next_id
23
+ AddMany = self.next_id
24
+ Clear = self.next_id
25
+ Change = self.next_id
26
+ ChangeText = self.next_id
27
+ Delete = self.next_id
28
+ DeleteText = self.next_id
29
+ DeleteSel = self.next_id
30
+ Listbox = self.next_id
31
+ EnsureVisible = self.next_id
32
+ EnsureVisibleText = self.next_id
33
+ ContainerTests = self.next_id
34
+ GetTopItem = self.next_id
35
+ GetCountPerPage = self.next_id
36
+ MoveUp = self.next_id
37
+ MoveDown = self.next_id
38
+
39
+ # the selection mode
40
+ LboxSel_Single = 0
41
+ LboxSel_Extended = 1
42
+ LboxSel_Multiple = 2
43
+
44
+ # the list type
45
+ LboxType_ListBox = 0
46
+ LboxType_CheckListBox = 1
47
+ LboxType_RearrangeList = 2
48
+ end
49
+
50
+ Info = Widgets::PageInfo.new(self, 'Listbox',
51
+ NATIVE_CTRLS |
52
+ WITH_ITEMS_CTRLS)
53
+
54
+ def initialize(book, images)
55
+ super(book, images, :listbox)
56
+
57
+ # init everything
58
+ @radioSelMode = nil
59
+ @radioListType = nil
60
+
61
+ @chkVScroll =
62
+ @chkHScroll =
63
+ @chkSort =
64
+ @chkOwnerDraw = nil
65
+
66
+ @lbox = nil
67
+ @sizerLbox = nil
68
+ end
69
+
70
+ def get_widget
71
+ @lbox
72
+ end
73
+
74
+ def get_container
75
+ @lbox
76
+ end
77
+
78
+ def recreate_widget
79
+ create_lbox
80
+ end
81
+
82
+ # lazy creation of the content
83
+ def create_content
84
+ # What we create here is a frame having 3 panes: style pane is the
85
+ # leftmost one, in the middle the pane with buttons allowing to perform
86
+ # miscellaneous listbox operations and the pane containing the listbox
87
+ # itself to the right
88
+ sizerTop = Wx::HBoxSizer.new
89
+
90
+ # left pane
91
+ sizerLeft = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Set listbox parameters')
92
+ sizerLeftBox = sizerLeft.get_static_box
93
+
94
+ @chkVScroll = create_check_box_and_add_to_sizer(sizerLeft,
95
+ 'Always show &vertical scrollbar',
96
+ Wx::ID_ANY, sizerLeftBox)
97
+ @chkHScroll = create_check_box_and_add_to_sizer(sizerLeft,
98
+ 'Show &horizontal scrollbar',
99
+ Wx::ID_ANY, sizerLeftBox)
100
+ @chkSort = create_check_box_and_add_to_sizer(sizerLeft,'&Sort items', Wx::ID_ANY, sizerLeftBox)
101
+ @chkOwnerDraw = create_check_box_and_add_to_sizer(sizerLeft,'&Owner drawn', Wx::ID_ANY, sizerLeftBox)
102
+
103
+ modes = %w[single extended multiple]
104
+ @radioSelMode = Wx::RadioBox.new(sizerLeftBox, Wx::ID_ANY, 'Selection &mode:',
105
+ choices: modes,
106
+ major_dimension: 1,
107
+ style: Wx::RA_SPECIFY_COLS)
108
+
109
+ listTypes = ['list box']
110
+ listTypes << 'check list box' if Wx.has_feature?(:USE_CHECKLISTBOX)
111
+ listTypes << 'rearrange list' if Wx.has_feature?(:USE_REARRANGECTRL)
112
+ @radioListType = Wx::RadioBox.new(sizerLeftBox, Wx::ID_ANY, '&List type:',
113
+ choices: listTypes,
114
+ major_dimension: 1,
115
+ style: Wx::RA_SPECIFY_COLS)
116
+
117
+ sizerLeft.add(5, 5, 0, Wx::GROW | Wx::ALL, 5) # spacer
118
+ sizerLeft.add(@radioSelMode, 0, Wx::GROW | Wx::ALL, 5)
119
+
120
+ sizerLeft.add(5, 5, 0, Wx::GROW | Wx::ALL, 5) # spacer
121
+ sizerLeft.add(@radioListType, 0, Wx::GROW | Wx::ALL, 5)
122
+
123
+ btn = Wx::Button.new(sizerLeftBox, ID::Reset, '&Reset')
124
+ sizerLeft.add(btn, 0, Wx::ALIGN_CENTRE_HORIZONTAL | Wx::ALL, 15)
125
+
126
+ # middle pane
127
+ sizerMiddle = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Change listbox contents')
128
+ sizerMiddleBox = sizerMiddle.get_static_box
129
+
130
+ sizerRow = Wx::HBoxSizer.new
131
+ btn = Wx::Button.new(sizerMiddleBox, ID::Add, '&Add this string')
132
+ @textAdd = Wx::TextCtrl.new(sizerMiddleBox, ID::AddText, "test item \t0")
133
+ sizerRow.add(btn, 0, Wx::RIGHT, 5)
134
+ sizerRow.add(@textAdd, 1, Wx::LEFT, 5)
135
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
136
+
137
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddSeveral, '&Insert a few strings')
138
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
139
+
140
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddMany, 'Add &many strings')
141
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
142
+
143
+ sizerRow = Wx::HBoxSizer.new
144
+ btn = Wx::Button.new(sizerMiddleBox, ID::Change, 'C&hange current')
145
+ @textChange = Wx::TextCtrl.new(sizerMiddleBox, ID::ChangeText, '')
146
+ sizerRow.add(btn, 0, Wx::RIGHT, 5)
147
+ sizerRow.add(@textChange, 1, Wx::LEFT, 5)
148
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
149
+
150
+ sizerRow = Wx::HBoxSizer.new
151
+ btn = Wx::Button.new(sizerMiddleBox, ID::EnsureVisible, 'Make item &visible')
152
+ @textEnsureVisible = Wx::TextCtrl.new(sizerMiddleBox, ID::EnsureVisibleText, '')
153
+ sizerRow.add(btn, 0, Wx::RIGHT, 5)
154
+ sizerRow.add(@textEnsureVisible, 1, Wx::LEFT, 5)
155
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
156
+
157
+ sizerRow = Wx::HBoxSizer.new
158
+ btn = Wx::Button.new(sizerMiddleBox, ID::Delete, '&Delete this item')
159
+ @textDelete = Wx::TextCtrl.new(sizerMiddleBox, ID::DeleteText, '')
160
+ sizerRow.add(btn, 0, Wx::RIGHT, 5)
161
+ sizerRow.add(@textDelete, 1, Wx::LEFT, 5)
162
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
163
+
164
+ btn = Wx::Button.new(sizerMiddleBox, ID::DeleteSel, 'Delete &selection')
165
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
166
+
167
+ btn = Wx::Button.new(sizerMiddleBox, ID::Clear, '&Clear')
168
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
169
+
170
+ btn = Wx::Button.new(sizerMiddleBox, ID::MoveUp, 'Move item &up')
171
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
172
+
173
+ btn = Wx::Button.new(sizerMiddleBox, ID::MoveDown, 'Move item &down')
174
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
175
+
176
+ btn = Wx::Button.new(sizerMiddleBox, ID::GetTopItem, 'Get top item')
177
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
178
+
179
+ btn = Wx::Button.new(sizerMiddleBox, ID::GetCountPerPage, 'Get count per page')
180
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
181
+
182
+ btn = Wx::Button.new(sizerMiddleBox, ID::ContainerTests, 'Run &tests')
183
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
184
+
185
+ # right pane
186
+ sizerRight = Wx::VBoxSizer.new
187
+ @lbox = Wx::ListBox.new(self, ID::Listbox,
188
+ choices: [],
189
+ style: Wx::LB_HSCROLL)
190
+ sizerRight.add(@lbox, 1, Wx::GROW | Wx::ALL, 5)
191
+ sizerRight.set_min_size(150, 0)
192
+ @sizerLbox = sizerRight # save it to modify it later
193
+
194
+ # the 3 panes panes compose the window
195
+ sizerTop.add(sizerLeft, 0, Wx::GROW | (Wx::ALL & ~Wx::LEFT), 10)
196
+ sizerTop.add(sizerMiddle, 1, Wx::GROW | Wx::ALL, 10)
197
+ sizerTop.add(sizerRight, 1, Wx::GROW | (Wx::ALL & ~Wx::RIGHT), 10)
198
+
199
+ # final initializations
200
+ reset
201
+
202
+ set_sizer(sizerTop)
203
+
204
+ # connect event handlers
205
+ evt_button(ID::Reset, :on_button_reset)
206
+ evt_button(ID::Change, :on_button_change)
207
+ evt_button(ID::Delete, :on_button_delete)
208
+ evt_button(ID::DeleteSel, :on_button_delete_sel)
209
+ evt_button(ID::EnsureVisible, :on_button_ensure_visible)
210
+ evt_button(ID::Clear, :on_button_clear)
211
+ evt_button(ID::Add, :on_button_add)
212
+ evt_button(ID::AddSeveral, :on_button_add_several)
213
+ evt_button(ID::AddMany, :on_button_add_many)
214
+ evt_button(ID::ContainerTests, :on_button_test_item_container)
215
+ evt_button(ID::GetTopItem, :on_button_top_item)
216
+ evt_button(ID::GetCountPerPage, :on_button_page_count)
217
+ evt_button(ID::MoveUp, :on_button_move_up)
218
+ evt_button(ID::MoveDown, :on_button_move_down)
219
+
220
+ evt_text_enter(ID::AddText, :on_button_add)
221
+ evt_text_enter(ID::DeleteText, :on_button_delete)
222
+ evt_text_enter(ID::EnsureVisibleText, :on_button_ensure_visible)
223
+
224
+ evt_update_ui(ID::Reset, :on_update_ui_reset_button)
225
+ evt_update_ui(ID::AddSeveral, :on_update_ui_add_several)
226
+ evt_update_ui(ID::Clear, :on_update_ui_clear_button)
227
+ evt_update_ui(ID::DeleteText, :on_update_ui_clear_button)
228
+ evt_update_ui(ID::Delete, :on_update_ui_delete_button)
229
+ evt_update_ui(ID::Change, :on_update_ui_delete_sel_button)
230
+ evt_update_ui(ID::ChangeText, :on_update_ui_delete_sel_button)
231
+ evt_update_ui(ID::DeleteSel, :on_update_ui_delete_sel_button)
232
+ evt_update_ui(ID::EnsureVisible, :on_update_ui_ensure_visible_button)
233
+ evt_update_ui_range(ID::MoveUp, ID::MoveDown, :on_update_ui_move_buttons)
234
+
235
+ evt_listbox(ID::Listbox, :on_listbox)
236
+ evt_listbox_dclick(ID::Listbox, :on_listbox_d_click)
237
+ evt_checklistbox(ID::Listbox, :on_check_listbox)
238
+
239
+ evt_checkbox(Wx::ID_ANY, :on_check_or_radio_box)
240
+ evt_radiobox(Wx::ID_ANY, :on_check_or_radio_box)
241
+ end
242
+
243
+ protected
244
+
245
+ # event handlers
246
+ def on_button_reset(_event)
247
+ reset
248
+
249
+ create_lbox
250
+ end
251
+
252
+ def on_button_change(_event)
253
+ selections = @lbox.get_selections
254
+ s = @textChange.value
255
+ selections.each { |sel| @lbox.set_string(sel, s) }
256
+ end
257
+
258
+ def on_button_ensure_visible(_event)
259
+ return unless (n = get_valid_index_from_text(@textEnsureVisible))
260
+ @lbox.ensure_visible(n)
261
+ end
262
+
263
+ def on_button_delete(_event)
264
+ return unless (n = get_valid_index_from_text(@textDelete))
265
+ @lbox.delete(n)
266
+ end
267
+
268
+ def on_button_delete_sel(_event)
269
+ selections = @lbox.get_selections
270
+ selections.reverse.each { |sel| @lbox.delete(sel) }
271
+ end
272
+
273
+ def on_button_clear(_event)
274
+ @lbox.clear
275
+ end
276
+
277
+ class << self
278
+ def s_item(v=nil)
279
+ @s_item = v unless v.nil?
280
+ @s_item ||= 0
281
+ end
282
+ end
283
+
284
+ def on_button_add(_event)
285
+ s = @textAdd.value
286
+ unless @textAdd.is_modified
287
+ # update the default string
288
+ i = self.class.s_item(self.class.s_item+1)
289
+ @textAdd.set_value("test item #{i}")
290
+ end
291
+
292
+ @lbox.append(s)
293
+ end
294
+
295
+ def on_button_add_several(event)
296
+ items = [
297
+ 'First',
298
+ 'another one',
299
+ 'and the last (very very very very very very very very very very long) one'
300
+ ]
301
+ @lbox.insert(items, 0)
302
+ end
303
+
304
+ def on_button_add_many(event)
305
+ # "many" means 1000 here
306
+ 1000.times { |n| @lbox.append("item ##{n}") }
307
+ end
308
+
309
+ def on_button_top_item(_event)
310
+ item = @lbox.get_top_item
311
+ Wx.log_message("Topmost visible item is: #{item}")
312
+ end
313
+
314
+ def on_button_page_count(_event)
315
+ count = @lbox.get_count_per_page
316
+ Wx.log_message("#{count} items fit into this listbox.")
317
+ end
318
+
319
+ def on_button_move_up(_evt)
320
+ if Wx.has_feature?(:USE_REARRANGECTRL)
321
+ @lbox.move_current_up
322
+ end # wxUSE_REARRANGECTRL
323
+ end
324
+
325
+ def on_button_move_down(_evt)
326
+ if Wx.has_feature?(:USE_REARRANGECTRL)
327
+ @lbox.move_current_down
328
+ end # wxUSE_REARRANGECTRL
329
+ end
330
+
331
+ def on_listbox(event)
332
+ sel = event.selection
333
+ @textDelete.set_value(sel.to_s)
334
+
335
+ if event.is_selection
336
+ Wx.log_message("Listbox item #{sel} selected")
337
+ else
338
+ Wx.log_message("Listbox item #{sel} deselected")
339
+ end
340
+ end
341
+
342
+ def on_listbox_d_click(event)
343
+ Wx.log_message('Listbox item %d double clicked', event.int)
344
+ end
345
+
346
+ def on_check_listbox(event)
347
+ Wx.log_message('Listbox item %d toggled', event.int)
348
+ end
349
+
350
+ def on_check_or_radio_box(event)
351
+ create_lbox
352
+ end
353
+
354
+ def on_update_ui_add_several(event)
355
+ event.enable(@lbox.get_window_style.nobits?(Wx::LB_SORT))
356
+ end
357
+
358
+ def on_update_ui_clear_button(event)
359
+ event.enable(@lbox.count != 0)
360
+ end
361
+
362
+ def on_update_ui_ensure_visible_button(event)
363
+ event.enable(!!get_valid_index_from_text(@textEnsureVisible))
364
+ end
365
+
366
+ def on_update_ui_delete_button(event)
367
+ event.enable(!!get_valid_index_from_text(@textDelete))
368
+ end
369
+
370
+ def on_update_ui_delete_sel_button(event)
371
+ event.enable(!@lbox.get_selections.empty?)
372
+ end
373
+
374
+ def on_update_ui_reset_button(event)
375
+ event.enable((@radioSelMode.selection != ID::LboxSel_Single) ||
376
+ @chkSort.value ||
377
+ @chkOwnerDraw.value ||
378
+ !@chkHScroll.value ||
379
+ @chkVScroll.value)
380
+ end
381
+
382
+ def on_update_ui_move_buttons(evt)
383
+ evt.enable(@radioListType.selection == ID::LboxType_RearrangeList)
384
+ end
385
+
386
+ # reset the listbox parameters
387
+ def reset
388
+ @radioSelMode.set_selection(ID::LboxSel_Single)
389
+ @radioListType.set_selection(ID::LboxType_ListBox)
390
+ @chkVScroll.set_value(false)
391
+ @chkHScroll.set_value(true)
392
+ @chkSort.set_value(false)
393
+ @chkOwnerDraw.set_value(false)
394
+ end
395
+
396
+ # (re)create the listbox
397
+ def create_lbox
398
+ flags = get_attrs.default_flags
399
+ case @radioSelMode.selection
400
+ when ID::LboxSel_Single
401
+ flags |= Wx::LB_SINGLE
402
+ when ID::LboxSel_Extended
403
+ flags |= Wx::LB_EXTENDED
404
+ when ID::LboxSel_Multiple
405
+ flags |= Wx::LB_MULTIPLE
406
+ else
407
+ ::Kernel.raise RuntimeError, 'unexpected radio box selection'
408
+ end
409
+
410
+ flags |= Wx::LB_ALWAYS_SB if @chkVScroll.value
411
+ flags |= Wx::LB_HSCROLL if @chkHScroll.value
412
+ flags |= Wx::LB_SORT if @chkSort.value
413
+ flags |= Wx::LB_OWNERDRAW if @chkOwnerDraw.value
414
+
415
+ items = []
416
+ order = []
417
+ if @lbox
418
+ items = @lbox.each_string.to_a
419
+
420
+ # order.reserve(count)
421
+ if Wx.has_feature?(:USE_CHECKLISTBOX) && @lbox.is_a?(Wx::CheckListBox)
422
+ items.size.times { |n| order << (@lbox.is_checked(n) ? n : ~n) }
423
+ else
424
+ items.size.times { |n| order << ~n }
425
+ end
426
+
427
+ @sizerLbox.detach(@lbox)
428
+ @lbox.destroy
429
+ end
430
+
431
+ case @radioListType.selection
432
+ when ID::LboxType_CheckListBox, ID::LboxType_RearrangeList
433
+ if Wx.has_feature?(:USE_CHECKLISTBOX) && @radioListType.selection == ID::LboxType_CheckListBox
434
+ @lbox = Wx::CheckListBox.new(self, ID::Listbox,
435
+ choices: items,
436
+ style: flags)
437
+ order.each_with_index { |o, n| @lbox.check(n, o >= 0) }
438
+ elsif Wx.has_feature?(:USE_REARRANGECTRL)
439
+ @lbox = Wx::RearrangeList.new(self, ID::Listbox,
440
+ order: order,
441
+ items: items,
442
+ style: flags)
443
+ end # wxUSE_REARRANGECTRL
444
+ #when ID::LboxType_ListBox
445
+ else
446
+ @lbox = Wx::ListBox.new(self, ID::Listbox,
447
+ choices: items,
448
+ style: flags)
449
+ end
450
+
451
+ @sizerLbox.add(@lbox, 1, Wx::GROW | Wx::ALL, 5)
452
+ @sizerLbox.layout
453
+ end
454
+
455
+ # read the value of a listbox item index from the given control, return
456
+ # nil if it's invalid
457
+ def get_valid_index_from_text(text)
458
+ return nil if text.value.empty?
459
+ idx = Integer(text.value) rescue -1
460
+ if idx < 0 || idx >= @lbox.count
461
+ Wx.log_warning("Invalid index \"#{text.value}\"")
462
+
463
+ return nil
464
+ end
465
+
466
+ idx
467
+ end
468
+
469
+ end
470
+
471
+ end
472
+
473
+ end