wxruby3 0.9.2 → 0.9.4

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 (379) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +35 -29
  3. data/README.md +24 -15
  4. data/ext/wxruby3/include/wxruby-ClientData.h +48 -0
  5. data/ext/wxruby3/include/wxruby-Config.h +23 -5
  6. data/ext/wxruby3/include/wxruby-Persistence.h +79 -0
  7. data/ext/wxruby3/include/wxruby-Validator.h +39 -0
  8. data/ext/wxruby3/include/wxruby-ValidatorBinding.h +64 -0
  9. data/ext/wxruby3/swig/custom/director.swg +8 -0
  10. data/ext/wxruby3/swig/mark_free_impl.i +0 -33
  11. data/ext/wxruby3/swig/memory_management.i +6 -0
  12. data/lib/wx/core/bitmap_combobox.rb +17 -21
  13. data/lib/wx/core/book_ctrl_base.rb +16 -0
  14. data/lib/wx/core/combobox.rb +13 -3
  15. data/lib/wx/core/config.rb +454 -83
  16. data/lib/wx/core/controlwithitems.rb +40 -130
  17. data/lib/wx/core/enum.rb +17 -1
  18. data/lib/wx/core/event.rb +6 -1
  19. data/lib/wx/core/evthandler.rb +8 -2
  20. data/lib/wx/core/generic_validator.rb +312 -0
  21. data/lib/wx/core/listbox.rb +2 -2
  22. data/lib/wx/core/log.rb +1 -1
  23. data/lib/wx/core/notebook.rb +10 -8
  24. data/lib/wx/core/owner_drawn_combobox.rb +45 -0
  25. data/lib/wx/core/peristent_object.rb +15 -0
  26. data/lib/wx/core/persistence_manager.rb +39 -0
  27. data/lib/wx/core/persistent_window.rb +16 -0
  28. data/lib/wx/core/size.rb +4 -0
  29. data/lib/wx/core/sizer.rb +1 -2
  30. data/lib/wx/core/standard_paths.rb +22 -0
  31. data/lib/wx/core/text_entry.rb +4 -1
  32. data/lib/wx/core/top_level_window.rb +16 -0
  33. data/lib/wx/core/treebook.rb +18 -0
  34. data/lib/wx/core/validator.rb +70 -5
  35. data/lib/wx/core/window.rb +3 -7
  36. data/lib/wx/core.rb +4 -0
  37. data/lib/wx/doc/art_locator.rb +1 -0
  38. data/lib/wx/doc/book_ctrl_base.rb +19 -0
  39. data/lib/wx/doc/comboctrl.rb +18 -0
  40. data/lib/wx/doc/config.rb +101 -41
  41. data/lib/wx/doc/controlwithitems.rb +16 -0
  42. data/lib/wx/doc/date_picker_ctrl.rb +23 -0
  43. data/lib/wx/doc/editable_listbox.rb +44 -0
  44. data/lib/wx/doc/enum.rb +15 -0
  45. data/lib/wx/doc/event.rb +12 -0
  46. data/lib/wx/doc/extra/12_client_data.md +89 -0
  47. data/lib/wx/doc/extra/13_validators.md +139 -0
  48. data/lib/wx/doc/extra/14_config.md +101 -0
  49. data/lib/wx/doc/extra/15_persistence.md +148 -0
  50. data/lib/wx/doc/gdi_common.rb +4 -0
  51. data/lib/wx/doc/generic_validator.rb +95 -0
  52. data/lib/wx/doc/html/simple_html_listbox.rb +22 -0
  53. data/lib/wx/doc/num_validator.rb +387 -0
  54. data/lib/wx/doc/owner_drawn_combobox.rb +96 -0
  55. data/lib/wx/doc/persistence_manager.rb +36 -0
  56. data/lib/wx/doc/persistent_object.rb +27 -0
  57. data/lib/wx/doc/pg/numeric_property_validator.rb +33 -0
  58. data/lib/wx/doc/static_bitmap.rb +25 -0
  59. data/lib/wx/doc/text_validator.rb +10 -0
  60. data/lib/wx/doc/top_level_window.rb +19 -0
  61. data/lib/wx/doc/treebook.rb +6 -1
  62. data/lib/wx/doc/validator.rb +113 -0
  63. data/lib/wx/doc/window.rb +30 -0
  64. data/lib/wx/html/simple_html_listbox.rb +24 -91
  65. data/lib/wx/keyword_defs.rb +34 -2
  66. data/lib/wx/rbn/ribbon_gallery.rb +0 -21
  67. data/lib/wx/version.rb +1 -1
  68. data/rakelib/build.rb +1 -1
  69. data/rakelib/lib/config/mingw.rb +12 -0
  70. data/rakelib/lib/core/include/client_data.inc +65 -0
  71. data/rakelib/lib/core/include/funcall.inc +1 -1
  72. data/rakelib/lib/core/package.rb +39 -3
  73. data/rakelib/lib/core/parameter.rb +1 -1
  74. data/rakelib/lib/core/spec.rb +10 -0
  75. data/rakelib/lib/core/spec_helper.rb +8 -2
  76. data/rakelib/lib/director/app.rb +18 -0
  77. data/rakelib/lib/director/app_traits.rb +3 -1
  78. data/rakelib/lib/director/bitmap_combobox.rb +2 -2
  79. data/rakelib/lib/director/combobox.rb +22 -0
  80. data/rakelib/lib/director/comboctrl.rb +1 -55
  81. data/rakelib/lib/director/config_base.rb +490 -19
  82. data/rakelib/lib/director/ctrl_with_items.rb +88 -21
  83. data/rakelib/lib/director/date_picker_ctrl.rb +8 -6
  84. data/rakelib/lib/director/editable_listbox.rb +30 -0
  85. data/rakelib/lib/director/event.rb +102 -12
  86. data/rakelib/lib/director/event_filter.rb +1 -1
  87. data/rakelib/lib/director/event_handler.rb +3 -2
  88. data/rakelib/lib/director/event_loop.rb +1 -1
  89. data/rakelib/lib/director/file_dialog_customize_hook.rb +2 -2
  90. data/rakelib/lib/director/functions.rb +4 -2
  91. data/rakelib/lib/director/generic_dirctrl.rb +17 -0
  92. data/rakelib/lib/director/grid_cell_attr.rb +1 -3
  93. data/rakelib/lib/director/grid_cell_editor.rb +1 -3
  94. data/rakelib/lib/director/grid_cell_renderer.rb +1 -3
  95. data/rakelib/lib/director/header_ctrl.rb +9 -1
  96. data/rakelib/lib/director/html_listbox.rb +97 -22
  97. data/rakelib/lib/director/num_validator.rb +495 -0
  98. data/rakelib/lib/director/numeric_property_validator.rb +131 -6
  99. data/rakelib/lib/director/owner_drawn_combobox.rb +192 -0
  100. data/rakelib/lib/director/persistence_manager.rb +410 -0
  101. data/rakelib/lib/director/persistent_object.rb +70 -0
  102. data/rakelib/lib/director/persistent_window.rb +73 -0
  103. data/rakelib/lib/director/pgproperty.rb +3 -29
  104. data/rakelib/lib/director/ribbon_button_bar.rb +3 -3
  105. data/rakelib/lib/director/ribbon_gallery.rb +3 -5
  106. data/rakelib/lib/director/sizer.rb +15 -4
  107. data/rakelib/lib/director/sizer_item.rb +13 -0
  108. data/rakelib/lib/director/static_bitmap.rb +32 -0
  109. data/rakelib/lib/director/text_entry.rb +5 -1
  110. data/rakelib/lib/director/text_validator.rb +124 -13
  111. data/rakelib/lib/director/toggle_button.rb +1 -0
  112. data/rakelib/lib/director/top_level_window.rb +0 -2
  113. data/rakelib/lib/director/tree_ctrl.rb +35 -0
  114. data/rakelib/lib/director/utils.rb +16 -2
  115. data/rakelib/lib/director/validator.rb +196 -21
  116. data/rakelib/lib/director/window.rb +16 -2
  117. data/rakelib/lib/extractor/function.rb +2 -1
  118. data/rakelib/lib/generate/analyzer.rb +44 -44
  119. data/rakelib/lib/generate/doc.rb +11 -5
  120. data/rakelib/lib/specs/interfaces.rb +5 -0
  121. data/rakelib/lib/swig_runner.rb +55 -9
  122. data/rakelib/lib/typemap/client_data.rb +67 -0
  123. data/rakelib/lib/typemap/common.rb +3 -3
  124. data/rakelib/lib/typemap/config.rb +8 -0
  125. data/rakelib/lib/typemap/datetime.rb +1 -1
  126. data/rakelib/lib/typemap/tree_itemid.rb +2 -2
  127. data/samples/aui/aui.rb +1237 -1233
  128. data/samples/calendar/calendar.rb +293 -289
  129. data/samples/controls/get_item_sample.rb +83 -79
  130. data/samples/controls/htlbox.rb +331 -327
  131. data/samples/dialogs/dialogs.rb +682 -694
  132. data/samples/dialogs/wizard.rb +52 -55
  133. data/samples/dragdrop/dragdrop.rb +146 -142
  134. data/samples/drawing/bitmap.rb +29 -26
  135. data/samples/drawing/bitmap_image.rb +84 -80
  136. data/samples/drawing/graphics_drawing.rb +209 -205
  137. data/samples/drawing/image_prt.rb +344 -340
  138. data/samples/drawing/maths_images.rb +18 -1
  139. data/samples/drawing/rmagic_bitmap_image.rb +88 -84
  140. data/samples/etc/caret.rb +306 -0
  141. data/samples/etc/miniframe.rb +65 -60
  142. data/samples/etc/sash.rb +109 -105
  143. data/samples/etc/scrollwin.rb +86 -80
  144. data/samples/etc/system_settings.rb +216 -209
  145. data/samples/event/activation.rb +72 -67
  146. data/samples/event/event.rb +160 -153
  147. data/samples/event/threaded.rb +8 -1
  148. data/samples/event/update_ui_event.rb +67 -60
  149. data/samples/grid/grid.rb +188 -181
  150. data/samples/grid/gridtablebase.rb +136 -129
  151. data/samples/html/html.rb +208 -204
  152. data/samples/mdi/mdi.rb +59 -54
  153. data/samples/minimal/minimal.rb +54 -51
  154. data/samples/minimal/nothing.rb +1 -0
  155. data/samples/printing/printing.rb +367 -377
  156. data/samples/printing/printing2.rb +203 -198
  157. data/samples/propgrid/propgrid.rb +2312 -2308
  158. data/samples/propgrid/propgrid_minimal.rb +57 -50
  159. data/samples/ribbon/ribbon.rb +780 -774
  160. data/samples/sampler/ext.rb +0 -33
  161. data/samples/sampler/sample.rb +4 -9
  162. data/samples/sampler.rb +1 -1
  163. data/samples/splash/splash.rb +118 -116
  164. data/samples/text/rich_textctrl.rb +207 -201
  165. data/samples/text/richtext.rb +1409 -1405
  166. data/samples/text/scintilla.rb +137 -128
  167. data/samples/text/textctrl.rb +89 -83
  168. data/samples/text/unicode.rb +175 -168
  169. data/samples/treectrl/treectrl.rb +1430 -1426
  170. data/samples/widgets/activityindicator.rb +95 -0
  171. data/samples/widgets/art/widgets/activityindicator.xpm +278 -0
  172. data/samples/widgets/art/widgets/bmpbtn.xpm +37 -0
  173. data/samples/widgets/art/widgets/bmpcombobox.xpm +54 -0
  174. data/samples/widgets/art/widgets/button.xpm +54 -0
  175. data/samples/widgets/art/widgets/checkbox.xpm +54 -0
  176. data/samples/{bigdemo/icons → widgets/art/widgets}/choice.xpm +1 -1
  177. data/samples/widgets/art/widgets/choicebk.xpm +54 -0
  178. data/samples/widgets/art/widgets/clrpicker.xpm +193 -0
  179. data/samples/widgets/art/widgets/combobox.xpm +54 -0
  180. data/samples/widgets/art/widgets/datepick.xpm +200 -0
  181. data/samples/widgets/art/widgets/dirctrl.xpm +54 -0
  182. data/samples/widgets/art/widgets/dirpicker.xpm +213 -0
  183. data/samples/widgets/art/widgets/filepicker.xpm +214 -0
  184. data/samples/widgets/art/widgets/fontpicker.xpm +185 -0
  185. data/samples/widgets/art/widgets/gauge.xpm +54 -0
  186. data/samples/widgets/art/widgets/header.xpm +54 -0
  187. data/samples/widgets/art/widgets/hyperlnk.xpm +54 -0
  188. data/samples/widgets/art/widgets/listbook.xpm +54 -0
  189. data/samples/widgets/art/widgets/listbox.xpm +54 -0
  190. data/samples/widgets/art/widgets/native.xpm +81 -0
  191. data/samples/widgets/art/widgets/notebook.xpm +54 -0
  192. data/samples/widgets/art/widgets/odcombobox.xpm +54 -0
  193. data/samples/widgets/art/widgets/radiobox.xpm +54 -0
  194. data/samples/widgets/art/widgets/scrolbar.xpm +54 -0
  195. data/samples/widgets/art/widgets/slider.xpm +54 -0
  196. data/samples/widgets/art/widgets/spinbtn.xpm +40 -0
  197. data/samples/widgets/art/widgets/statbmp.xpm +40 -0
  198. data/samples/widgets/art/widgets/statbox.xpm +54 -0
  199. data/samples/widgets/art/widgets/stattext.xpm +54 -0
  200. data/samples/widgets/art/widgets/text.xpm +54 -0
  201. data/samples/widgets/art/widgets/timepick.xpm +207 -0
  202. data/samples/widgets/art/widgets/toggle.xpm +54 -0
  203. data/samples/widgets/art/widgets/toucan.png +0 -0
  204. data/samples/widgets/bmpcombobox.rb +651 -0
  205. data/samples/widgets/button.rb +462 -0
  206. data/samples/widgets/checkbox.rb +211 -0
  207. data/samples/widgets/choice.rb +287 -0
  208. data/samples/widgets/clrpicker.rb +156 -0
  209. data/samples/widgets/combobox.rb +516 -0
  210. data/samples/widgets/datepick.rb +215 -0
  211. data/samples/widgets/dirctrl.rb +265 -0
  212. data/samples/widgets/dirpicker.rb +158 -0
  213. data/samples/widgets/editlbox.rb +122 -0
  214. data/samples/widgets/filectrl.rb +216 -0
  215. data/samples/widgets/filepicker.rb +214 -0
  216. data/samples/widgets/fontpicker.rb +135 -0
  217. data/samples/widgets/gauge.rb +311 -0
  218. data/samples/widgets/headerctrl.rb +236 -0
  219. data/samples/widgets/hyperlink.rb +203 -0
  220. data/samples/widgets/itemcontainer.rb +185 -0
  221. data/samples/widgets/listbox.rb +473 -0
  222. data/samples/widgets/notebook.rb +488 -0
  223. data/samples/widgets/odcombobox.rb +608 -0
  224. data/samples/widgets/radiobox.rb +328 -0
  225. data/samples/widgets/searchctrl.rb +159 -0
  226. data/samples/widgets/slider.rb +594 -0
  227. data/samples/widgets/spinbtn.rb +443 -0
  228. data/samples/widgets/statbmp.rb +130 -0
  229. data/samples/widgets/static.rb +436 -0
  230. data/samples/widgets/textctrl.rb +700 -0
  231. data/samples/widgets/timepick.rb +148 -0
  232. data/samples/widgets/tn_widgets.png +0 -0
  233. data/samples/widgets/toggle.rb +385 -0
  234. data/samples/widgets/widgets.rb +1229 -0
  235. data/samples/xrc/custom_xrc_sample.rb +47 -41
  236. data/samples/xrc/xrc_sample.rb +53 -47
  237. data/tests/test_config.rb +207 -42
  238. data/tests/test_event_handling.rb +52 -34
  239. data/tests/test_events.rb +7 -0
  240. data/tests/test_item_data.rb +24 -0
  241. data/tests/test_persistence.rb +142 -0
  242. data/tests/test_sizer.rb +44 -1
  243. data/tests/test_validators.rb +805 -0
  244. metadata +109 -138
  245. data/lib/wx/core/choice.rb +0 -14
  246. data/lib/wx/core/combo_ctrl.rb +0 -110
  247. data/rakelib/lib/typemap/grid_client_data.rb +0 -58
  248. data/samples/bigdemo/About.rbw +0 -39
  249. data/samples/bigdemo/ColorPanel.rbw +0 -23
  250. data/samples/bigdemo/GridSimple.rbw +0 -78
  251. data/samples/bigdemo/MDIDemo.rbw +0 -57
  252. data/samples/bigdemo/PopupMenu.rbw +0 -146
  253. data/samples/bigdemo/ShapedWindow.rbw +0 -128
  254. data/samples/bigdemo/Sizers.rbw +0 -541
  255. data/samples/bigdemo/bigdemo.rb +0 -817
  256. data/samples/bigdemo/demoTemplate.rbw +0 -33
  257. data/samples/bigdemo/helpfile.htb +0 -0
  258. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  259. data/samples/bigdemo/icons/Test 015.png +0 -0
  260. data/samples/bigdemo/icons/choice.bmp +0 -0
  261. data/samples/bigdemo/icons/combo.bmp +0 -0
  262. data/samples/bigdemo/icons/combo.xpm +0 -27
  263. data/samples/bigdemo/icons/copy.xpm +0 -25
  264. data/samples/bigdemo/icons/cut.xpm +0 -24
  265. data/samples/bigdemo/icons/gauge.bmp +0 -0
  266. data/samples/bigdemo/icons/gauge.xpm +0 -27
  267. data/samples/bigdemo/icons/help.xpm +0 -25
  268. data/samples/bigdemo/icons/list.bmp +0 -0
  269. data/samples/bigdemo/icons/list.xpm +0 -27
  270. data/samples/bigdemo/icons/mondrian.ico +0 -0
  271. data/samples/bigdemo/icons/mondrian.xpm +0 -44
  272. data/samples/bigdemo/icons/new.xpm +0 -24
  273. data/samples/bigdemo/icons/ogl.ico +0 -0
  274. data/samples/bigdemo/icons/ogl.xpm +0 -45
  275. data/samples/bigdemo/icons/open.xpm +0 -26
  276. data/samples/bigdemo/icons/paste.bmp +0 -0
  277. data/samples/bigdemo/icons/paste.xpm +0 -38
  278. data/samples/bigdemo/icons/pointy.png +0 -0
  279. data/samples/bigdemo/icons/preview.xpm +0 -26
  280. data/samples/bigdemo/icons/print.xpm +0 -26
  281. data/samples/bigdemo/icons/radio.bmp +0 -0
  282. data/samples/bigdemo/icons/radio.xpm +0 -27
  283. data/samples/bigdemo/icons/robert.xpm +0 -415
  284. data/samples/bigdemo/icons/sashtest.ico +0 -0
  285. data/samples/bigdemo/icons/save.xpm +0 -25
  286. data/samples/bigdemo/icons/smiles.bmp +0 -0
  287. data/samples/bigdemo/icons/smiles.xpm +0 -39
  288. data/samples/bigdemo/icons/smiley.ico +0 -0
  289. data/samples/bigdemo/icons/smiley.xpm +0 -42
  290. data/samples/bigdemo/icons/stattext.xpm +0 -24
  291. data/samples/bigdemo/icons/test2.bmp +0 -0
  292. data/samples/bigdemo/icons/test2.png +0 -0
  293. data/samples/bigdemo/icons/test2.xpm +0 -79
  294. data/samples/bigdemo/icons/text.bmp +0 -0
  295. data/samples/bigdemo/icons/text.xpm +0 -27
  296. data/samples/bigdemo/icons/tog1.bmp +0 -0
  297. data/samples/bigdemo/icons/tog1.xpm +0 -38
  298. data/samples/bigdemo/icons/tog2.bmp +0 -0
  299. data/samples/bigdemo/icons/tog2.xpm +0 -38
  300. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  301. data/samples/bigdemo/icons/wxwin.ico +0 -0
  302. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  303. data/samples/bigdemo/icons/wxwin16x16.xpm +0 -25
  304. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  305. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  306. data/samples/bigdemo/run.rb +0 -98
  307. data/samples/bigdemo/tips.txt +0 -7
  308. data/samples/bigdemo/utils.rb +0 -20
  309. data/samples/bigdemo/wxArtProvider.rbw +0 -282
  310. data/samples/bigdemo/wxBitmapButton.rbw +0 -65
  311. data/samples/bigdemo/wxButton.rbw +0 -64
  312. data/samples/bigdemo/wxCalendarCtrl.rbw +0 -59
  313. data/samples/bigdemo/wxCheckBox.rbw +0 -50
  314. data/samples/bigdemo/wxCheckListBox.rbw +0 -65
  315. data/samples/bigdemo/wxChoice.rbw +0 -47
  316. data/samples/bigdemo/wxChoicebook.rbw +0 -78
  317. data/samples/bigdemo/wxColourDialog.rbw +0 -33
  318. data/samples/bigdemo/wxComboBox.rbw +0 -77
  319. data/samples/bigdemo/wxCursor.rbw +0 -136
  320. data/samples/bigdemo/wxDialog.rbw +0 -74
  321. data/samples/bigdemo/wxDirDialog.rbw +0 -29
  322. data/samples/bigdemo/wxDragImage.rbw +0 -70
  323. data/samples/bigdemo/wxFileDialog.rbw +0 -37
  324. data/samples/bigdemo/wxFileDialog_Save.rbw +0 -35
  325. data/samples/bigdemo/wxFindReplaceDialog.rbw +0 -82
  326. data/samples/bigdemo/wxFontDialog.rbw +0 -200
  327. data/samples/bigdemo/wxFrame.rbw +0 -53
  328. data/samples/bigdemo/wxGauge.rbw +0 -65
  329. data/samples/bigdemo/wxGenericDirCtrl.rbw +0 -74
  330. data/samples/bigdemo/wxGrid.rbw +0 -66
  331. data/samples/bigdemo/wxHtmlHelpController.rbw +0 -52
  332. data/samples/bigdemo/wxListBox.rbw +0 -140
  333. data/samples/bigdemo/wxListCtrl_virtual.rbw +0 -112
  334. data/samples/bigdemo/wxMDIWindows.rbw +0 -50
  335. data/samples/bigdemo/wxMenu.rbw +0 -247
  336. data/samples/bigdemo/wxMessageDialog.rbw +0 -27
  337. data/samples/bigdemo/wxMiniFrame.rbw +0 -70
  338. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +0 -29
  339. data/samples/bigdemo/wxNotebook.rbw +0 -136
  340. data/samples/bigdemo/wxProgressDialog.rbw +0 -43
  341. data/samples/bigdemo/wxRadioBox.rbw +0 -72
  342. data/samples/bigdemo/wxRadioButton.rbw +0 -125
  343. data/samples/bigdemo/wxSashWindow.rbw +0 -141
  344. data/samples/bigdemo/wxScrolledMessageDialog.rbw +0 -57
  345. data/samples/bigdemo/wxScrolledWindow.rbw +0 -199
  346. data/samples/bigdemo/wxSingleChoiceDialog.rbw +0 -33
  347. data/samples/bigdemo/wxSlider.rbw +0 -42
  348. data/samples/bigdemo/wxSpinButton.rbw +0 -50
  349. data/samples/bigdemo/wxSpinCtrl.rbw +0 -51
  350. data/samples/bigdemo/wxSplitterWindow.rbw +0 -63
  351. data/samples/bigdemo/wxStaticBitmap.rbw +0 -47
  352. data/samples/bigdemo/wxStaticText.rbw +0 -55
  353. data/samples/bigdemo/wxStatusBar.rbw +0 -126
  354. data/samples/bigdemo/wxTextCtrl.rbw +0 -149
  355. data/samples/bigdemo/wxTextEntryDialog.rbw +0 -31
  356. data/samples/bigdemo/wxToggleButton.rbw +0 -49
  357. data/samples/bigdemo/wxToolBar.rbw +0 -131
  358. data/samples/bigdemo/wxTreeCtrl.rbw +0 -191
  359. data/samples/caret/caret.rb +0 -298
  360. data/samples/caret/mondrian.xpm +0 -44
  361. data/samples/controls/books.rb +0 -189
  362. data/samples/controls/choice.xpm +0 -27
  363. data/samples/controls/combo.xpm +0 -27
  364. data/samples/controls/controls.rb +0 -1099
  365. data/samples/controls/gauge.xpm +0 -27
  366. data/samples/controls/list.xpm +0 -27
  367. data/samples/controls/mondrian.ico +0 -0
  368. data/samples/controls/mondrian.xpm +0 -44
  369. data/samples/controls/radio.xpm +0 -27
  370. data/samples/controls/stattext.xpm +0 -24
  371. data/samples/controls/test2.bmp +0 -0
  372. data/samples/controls/text.xpm +0 -27
  373. data/samples/controls/tn_books.png +0 -0
  374. data/samples/controls/tn_controls.png +0 -0
  375. data/samples/etc/choice.rb +0 -87
  376. data/samples/etc/tn_choice.png +0 -0
  377. data/samples/text/mondrian.ico +0 -0
  378. data/samples/text/mondrian.xpm +0 -44
  379. /data/samples/{caret → etc}/tn_caret.png +0 -0
@@ -0,0 +1,287 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, 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 Choice
13
+
14
+ class ChoicePage < 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
+ Choice = self.next_id
31
+ ContainerTests = self.next_id
32
+ end
33
+
34
+ def initialize(book, images)
35
+ super(book, images, :choice)
36
+
37
+ # init everything
38
+ @chkSort = nil
39
+
40
+ @choice = nil
41
+ @sizerChoice = nil
42
+ end
43
+
44
+ Info = Widgets::PageInfo.new(self, 'Choice',
45
+ NATIVE_CTRLS |
46
+ WITH_ITEMS_CTRLS)
47
+
48
+ def get_widget
49
+ @choice
50
+ end
51
+ def get_container
52
+ @choice
53
+ end
54
+ def recreate_widget
55
+ create_choice
56
+ end
57
+
58
+ # lazy creation of the content
59
+ def create_content
60
+ # What we create here is a frame having 3 panes: style pane is the
61
+ # leftmost one, in the middle the pane with buttons allowing to perform
62
+ # miscellaneous choice operations and the pane containing the choice
63
+ # itself to the right
64
+ sizerTop = Wx::HBoxSizer.new
65
+
66
+ # left pane
67
+ sizerLeft = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Set choice parameters')
68
+ sizerLeftBox = sizerLeft.get_static_box
69
+
70
+ @chkSort = create_check_box_and_add_to_sizer(sizerLeft, '&Sort items', Wx::ID_ANY, sizerLeftBox)
71
+
72
+ btn = Wx::Button.new(sizerLeftBox, ID::Reset, '&Reset')
73
+ sizerLeft.add(btn, 0, Wx::ALIGN_CENTRE_HORIZONTAL | Wx::ALL, 15)
74
+
75
+ # middle pane
76
+ sizerMiddle = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&Change choice contents')
77
+ sizerMiddleBox = sizerMiddle.get_static_box
78
+
79
+ sizerRow = Wx::HBoxSizer.new
80
+ btn = Wx::Button.new(sizerMiddleBox, ID::Add, '&Add this string')
81
+ @textAdd = Wx::TextCtrl.new(sizerMiddleBox, ID::AddText, 'test item 0')
82
+ sizerRow.add(btn, 0, Wx::RIGHT, 5)
83
+ sizerRow.add(@textAdd, 1, Wx::LEFT, 5)
84
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
85
+
86
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddSeveral, '&Insert a few strings')
87
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
88
+
89
+ btn = Wx::Button.new(sizerMiddleBox, ID::AddMany, 'Add &many strings')
90
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
91
+
92
+ sizerRow = Wx::HBoxSizer.new
93
+ btn = Wx::Button.new(sizerMiddleBox, ID::Change, 'C&hange current')
94
+ @textChange = Wx::TextCtrl.new(sizerMiddleBox, ID::ChangeText, '')
95
+ sizerRow.add(btn, 0, Wx::RIGHT, 5)
96
+ sizerRow.add(@textChange, 1, Wx::LEFT, 5)
97
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
98
+
99
+ sizerRow = Wx::HBoxSizer.new
100
+ btn = Wx::Button.new(sizerMiddleBox, ID::Delete, '&Delete this item')
101
+ @textDelete = Wx::TextCtrl.new(sizerMiddleBox, ID::DeleteText, '')
102
+ sizerRow.add(btn, 0, Wx::RIGHT, 5)
103
+ sizerRow.add(@textDelete, 1, Wx::LEFT, 5)
104
+ sizerMiddle.add(sizerRow, 0, Wx::ALL | Wx::GROW, 5)
105
+
106
+ btn = Wx::Button.new(sizerMiddleBox, ID::DeleteSel, 'Delete &selection')
107
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
108
+
109
+ btn = Wx::Button.new(sizerMiddleBox, ID::Clear, '&Clear')
110
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
111
+
112
+ btn = Wx::Button.new(sizerMiddleBox, ID::ContainerTests, 'Run &tests')
113
+ sizerMiddle.add(btn, 0, Wx::ALL | Wx::GROW, 5)
114
+
115
+ # right pane
116
+ sizerRight = Wx::VBoxSizer.new
117
+ @choice = Wx::Choice.new(self, ID::Choice)
118
+ sizerRight.add(@choice, 0, Wx::ALL | Wx::GROW, 5)
119
+ sizerRight.set_min_size(150, 0)
120
+ @sizerChoice = sizerRight # save it to modify it later
121
+
122
+ # the 3 panes panes compose the window
123
+ sizerTop.add(sizerLeft, 0, Wx::GROW | (Wx::ALL & ~Wx::LEFT), 10)
124
+ sizerTop.add(sizerMiddle, 1, Wx::GROW | Wx::ALL, 10)
125
+ sizerTop.add(sizerRight, 1, Wx::GROW | (Wx::ALL & ~Wx::RIGHT), 10)
126
+
127
+ # final initializations
128
+ reset
129
+
130
+ set_sizer(sizerTop)
131
+
132
+ # connect event handlers
133
+ evt_button(ID::Reset, :on_button_reset)
134
+ evt_button(ID::Change, :on_button_change)
135
+ evt_button(ID::Delete, :on_button_delete)
136
+ evt_button(ID::DeleteSel, :on_button_delete_sel)
137
+ evt_button(ID::Clear, :on_button_clear)
138
+ evt_button(ID::Add, :on_button_add)
139
+ evt_button(ID::AddSeveral, :on_button_add_several)
140
+ evt_button(ID::AddMany, :on_button_add_many)
141
+ evt_button(ID::ContainerTests, :on_button_test_item_container)
142
+
143
+ evt_text_enter(ID::AddText, :on_button_add)
144
+ evt_text_enter(ID::DeleteText, :on_button_delete)
145
+
146
+ evt_update_ui(ID::Reset, :on_update_ui_reset_button)
147
+ evt_update_ui(ID::AddSeveral, :on_update_ui_add_several)
148
+ evt_update_ui(ID::Clear, :on_update_ui_clear_button)
149
+ evt_update_ui(ID::DeleteText, :on_update_ui_clear_button)
150
+ evt_update_ui(ID::Delete, :on_update_ui_delete_button)
151
+ evt_update_ui(ID::Change, :on_update_ui_delete_sel_button)
152
+ evt_update_ui(ID::ChangeText, :on_update_ui_delete_sel_button)
153
+ evt_update_ui(ID::DeleteSel, :on_update_ui_delete_sel_button)
154
+
155
+ evt_choice(ID::Choice, :on_choice)
156
+
157
+ evt_checkbox(Wx::ID_ANY, :on_check_or_radio_box)
158
+ evt_radiobox(Wx::ID_ANY, :on_check_or_radio_box)
159
+ end
160
+
161
+ protected
162
+
163
+ # event handlers
164
+ def on_button_reset(_event)
165
+ reset
166
+
167
+ create_choice
168
+ end
169
+
170
+ def on_button_change(_event)
171
+ selection = @choice.selection
172
+ @choice.set_string(selection, @textChange.value) if selection != Wx::NOT_FOUND
173
+ end
174
+
175
+ def on_button_delete(_event)
176
+ n = Integer(@textDelete.value) rescue -1
177
+ return if n < 0 || n >= @choice.count
178
+
179
+ @choice.delete(n)
180
+ end
181
+
182
+ def on_button_delete_sel(_event)
183
+ selection = @choice.selection
184
+ @choice.delete(selection) if selection != Wx::NOT_FOUND
185
+ end
186
+
187
+ def on_button_clear(_event)
188
+ @choice.clear
189
+ end
190
+
191
+ class << self
192
+ def s_item(v=nil)
193
+ @s_item = v unless v.nil?
194
+ @s_item ||= 0
195
+ end
196
+ end
197
+
198
+ def on_button_add(_event)
199
+ s = @textAdd.value
200
+ unless @textAdd.is_modified
201
+ # update the default string
202
+ i = self.class.s_item(self.class.s_item+1)
203
+ @textAdd.set_value("test item #{i}")
204
+ end
205
+
206
+ @choice.append(s)
207
+ end
208
+
209
+ def on_button_add_several(_event)
210
+ items = [
211
+ 'First',
212
+ 'another one',
213
+ 'and the last (very very very very very very very very very very long) one'
214
+ ]
215
+ @choice.insert(items, 0)
216
+ end
217
+
218
+ def on_button_add_many(_event)
219
+ # "many" means 1000 here
220
+ 1000.times { |n| @choice.append("item ##{n}") }
221
+ end
222
+
223
+ def on_choice(event)
224
+ sel = event.selection
225
+ @textDelete.set_value(sel.to_s);
226
+
227
+ Wx.log_message("Choice item #{sel} selected")
228
+ end
229
+
230
+ def on_check_or_radio_box(_event)
231
+ create_choice
232
+ end
233
+
234
+ def on_update_ui_add_several(event)
235
+ event.enable(!@choice.has_flag(Wx::CB_SORT))
236
+ end
237
+
238
+ def on_update_ui_clear_button(event)
239
+ event.enable(@choice.count != 0)
240
+ end
241
+
242
+ def on_update_ui_delete_button(event)
243
+ n = Integer(@textDelete.value) rescue -1
244
+ event.enable(n >= 0 && n < @choice.count)
245
+ end
246
+
247
+ def on_update_ui_delete_sel_button(event)
248
+ event.enable(@choice.selection != Wx::NOT_FOUND)
249
+ end
250
+
251
+ def on_update_ui_reset_button(event)
252
+ event.enable(@chkSort.value)
253
+ end
254
+
255
+ # reset the choice parameters
256
+ def reset
257
+ @chkSort.set_value(false)
258
+ end
259
+
260
+ # (re)create the choice
261
+ def create_choice
262
+ flags = get_attrs.default_flags
263
+
264
+ flags |= Wx::CB_SORT if @chkSort.value
265
+
266
+ items = []
267
+ if @choice
268
+ items = @choice.each_string.to_a
269
+
270
+ @sizerChoice.detach(@choice)
271
+ @choice.destroy
272
+ end
273
+
274
+ @choice = Wx::Choice.new(self, ID::Choice,
275
+ choices: [],
276
+ style: flags)
277
+
278
+ @choice.set(items)
279
+ @sizerChoice.add(@choice, 0, Wx::GROW | Wx::ALL, 5)
280
+ @sizerChoice.layout
281
+ end
282
+
283
+ end
284
+
285
+ end
286
+
287
+ end
@@ -0,0 +1,156 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, 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
+ module Widgets
9
+
10
+ module ColourPicker
11
+
12
+ class ColourPickerPage < Widgets::Page
13
+
14
+ module ID
15
+ include Wx::IDHelper
16
+
17
+ Reset = self.next_id(Widgets::Frame::ID::Last)
18
+ Colour = self.next_id
19
+ end
20
+
21
+ def initialize(book, images)
22
+ super(book, images, :clrpicker)
23
+
24
+ @clrPicker =
25
+ @chkColourTextCtrl =
26
+ @chkColourShowLabel =
27
+ @chkColourShowAlpha =
28
+ @sizer = nil
29
+ end
30
+
31
+ Info = Widgets::PageInfo.new(self, 'ColourPicker',
32
+ if Wx::PLATFORM == 'WXGTK'
33
+ Widgets::NATIVE_CTRLS
34
+ else
35
+ Widgets::GENERIC_CTRLS
36
+ end | Widgets::PICKER_CTRLS)
37
+
38
+ def get_widget
39
+ @clrPicker
40
+ end
41
+
42
+ def recreate_widget
43
+ recreate_picker
44
+ end
45
+
46
+ # lazy creation of the content
47
+ def create_content
48
+ # left pane
49
+ boxleft = Wx::VBoxSizer.new
50
+
51
+ styleSizer = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, '&ColourPicker style')
52
+ styleSizerBox = styleSizer.get_static_box
53
+
54
+ @chkColourTextCtrl = create_check_box_and_add_to_sizer(styleSizer, 'With textctrl', Wx::ID_ANY, styleSizerBox)
55
+ @chkColourShowLabel = create_check_box_and_add_to_sizer(styleSizer, 'With label', Wx::ID_ANY, styleSizerBox)
56
+ @chkColourShowAlpha = create_check_box_and_add_to_sizer(styleSizer, 'With opacity', Wx::ID_ANY, styleSizerBox)
57
+ boxleft.add(styleSizer, 0, Wx::ALL|Wx::GROW, 5)
58
+
59
+ boxleft.add(Wx::Button.new(self, ID::Reset, '&Reset'),
60
+ 0, Wx::ALIGN_CENTRE_HORIZONTAL | Wx::ALL, 15)
61
+
62
+ reset # set checkboxes state
63
+
64
+ # create pickers
65
+ create_picker
66
+
67
+ # right pane
68
+ @sizer = Wx::VBoxSizer.new
69
+ @sizer.add(1, 1, 1, Wx::GROW | Wx::ALL, 5) # spacer
70
+ @sizer.add(@clrPicker, 0, Wx::ALIGN_CENTER|Wx::ALL, 5)
71
+ @sizer.add(1, 1, 1, Wx::GROW | Wx::ALL, 5) # spacer
72
+
73
+ # global pane
74
+ sz = Wx::HBoxSizer.new
75
+ sz.add(boxleft, 0, Wx::GROW|Wx::ALL, 5)
76
+ sz.add(@sizer, 1, Wx::GROW|Wx::ALL, 5)
77
+
78
+ set_sizer(sz)
79
+
80
+ # connect event handlers
81
+ evt_button(ID::Reset, :on_button_reset)
82
+
83
+ evt_colourpicker_changed(ID::Colour, :on_colour_change)
84
+ evt_colourpicker_current_changed(ID::Colour, :on_colour_current_changed)
85
+ evt_colourpicker_dialog_cancelled(ID::Colour, :on_colour_dialog_cancelled)
86
+
87
+ evt_checkbox(Wx::ID_ANY, :on_check_box)
88
+ end
89
+
90
+ protected
91
+
92
+ # called only once at first construction
93
+ def create_picker
94
+ @clrPicker.destroy if @clrPicker
95
+
96
+ style = get_attrs.default_flags
97
+
98
+ style |= Wx::CLRP_USE_TEXTCTRL if @chkColourTextCtrl.value
99
+
100
+ style |= Wx::CLRP_SHOW_LABEL if @chkColourShowLabel.value
101
+
102
+ style |= Wx::CLRP_SHOW_ALPHA if @chkColourShowAlpha.value
103
+
104
+ @clrPicker = Wx::ColourPickerCtrl.new(self, ID::Colour, Wx::RED,
105
+ style: style)
106
+ end
107
+
108
+ # called to recreate an existing control
109
+ def recreate_picker
110
+ @sizer.remove(1)
111
+ create_picker
112
+ @sizer.insert(1, @clrPicker, 0, Wx::ALIGN_CENTER|Wx::ALL, 5)
113
+
114
+ @sizer.layout
115
+ end
116
+
117
+ # restore the checkboxes state to the initial values
118
+ def reset
119
+ @chkColourTextCtrl.set_value((Wx::CLRP_DEFAULT_STYLE & Wx::CLRP_USE_TEXTCTRL) != 0)
120
+ @chkColourShowLabel.set_value((Wx::CLRP_DEFAULT_STYLE & Wx::CLRP_SHOW_LABEL) != 0)
121
+ @chkColourShowAlpha.set_value((Wx::CLRP_DEFAULT_STYLE & Wx::CLRP_SHOW_ALPHA) != 0)
122
+ end
123
+
124
+ def on_colour_change(ev)
125
+ Wx.log_message("'The colour changed to '%s' !'",
126
+ ev.get_colour.get_as_string(Wx::C2S_CSS_SYNTAX))
127
+ end
128
+
129
+ def on_colour_current_changed(ev)
130
+ Wx.log_message("The currently selected colour changed to '%s'",
131
+ ev.get_colour.get_as_string(Wx::C2S_CSS_SYNTAX))
132
+ end
133
+
134
+ def on_colour_dialog_cancelled(ev)
135
+ Wx.log_message("Colour selection dialog cancelled, current colour is '%s'",
136
+ ev.get_colour.get_as_string(Wx::C2S_CSS_SYNTAX))
137
+ end
138
+
139
+ def on_check_box(ev)
140
+ if (ev.event_object == @chkColourTextCtrl ||
141
+ ev.event_object == @chkColourShowLabel ||
142
+ ev.event_object == @chkColourShowAlpha)
143
+ recreate_picker
144
+ end
145
+ end
146
+
147
+ def on_button_reset(ev)
148
+ reset
149
+ recreate_picker
150
+ end
151
+
152
+ end
153
+
154
+ end
155
+
156
+ end