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,148 @@
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 'date'
9
+
10
+ module Widgets
11
+
12
+ module TimePicker
13
+
14
+ class TimePickerPage < Widgets::Page
15
+
16
+ module ID
17
+ include Wx::IDHelper
18
+
19
+ Reset = self.next_id(Widgets::Frame::ID::Last)
20
+ Set = self.next_id
21
+ Picker = self.next_id
22
+ end
23
+
24
+ def initialize(book, images)
25
+ super(book, images, :timepick)
26
+ end
27
+
28
+ Info = Widgets::PageInfo.new(self, 'TimePicker',
29
+ if Wx::PLATFORM == 'WXMSW'
30
+ Widgets::NATIVE_CTRLS
31
+ else
32
+ Widgets::GENERIC_CTRLS
33
+ end | Widgets::PICKER_CTRLS)
34
+
35
+ def get_widget
36
+ @timePicker
37
+ end
38
+
39
+ def recreate_widget
40
+ create_time_picker
41
+ end
42
+
43
+ # lazy creation of the content
44
+ def create_content
45
+ sizerTop = Wx::HBoxSizer.new
46
+
47
+ # left pane
48
+ sizerLeft = Wx::VBoxSizer.new
49
+
50
+ sizerLeft.add(Wx::Button.new(self, ID::Reset, '&Reset'),
51
+ Wx::SizerFlags.new.centre.border)
52
+
53
+
54
+ # middle pane: operations
55
+ sizerMiddle = Wx::VBoxSizer.new
56
+ szr, @textCur = create_sizer_with_text_and_button(ID::Set,
57
+ '&Set time',
58
+ Wx::ID_ANY)
59
+ sizerMiddle.add(szr, Wx::SizerFlags.new.expand.border)
60
+
61
+ @textCur.set_min_size([get_text_extent(" 99:99:99 ").x, -1])
62
+
63
+
64
+ # right pane: control itself
65
+ sizerRight = Wx::HBoxSizer.new
66
+
67
+ @timePicker = Wx::TimePickerCtrl.new(self, ID::Picker)
68
+
69
+ sizerRight.add(0, 0, 1, Wx::CENTRE)
70
+ sizerRight.add(@timePicker, 1, Wx::CENTRE)
71
+ sizerRight.add(0, 0, 1, Wx::CENTRE)
72
+ @sizerTimePicker = sizerRight # save it to modify it later
73
+
74
+ # the 3 panes panes compose the window
75
+ sizerTop.add(sizerLeft, 0, (Wx::ALL & ~Wx::LEFT), 10)
76
+ sizerTop.add(sizerMiddle, 0, (Wx::TOP | Wx::BOTTOM), 10)
77
+ sizerTop.add(sizerRight, 1, Wx::GROW | (Wx::ALL & ~Wx::RIGHT), 10)
78
+
79
+ # final initializations
80
+ reset
81
+
82
+ set_sizer(sizerTop)
83
+
84
+ # connect event handlers
85
+ evt_button(ID::Reset, :on_button_reset)
86
+ evt_button(ID::Set, :on_button_set)
87
+
88
+ evt_time_changed(Wx::ID_ANY, :on_time_changed)
89
+ end
90
+
91
+ protected
92
+
93
+ # event handlers
94
+ def on_time_changed(event)
95
+ _, h, m, s = @timePicker.get_time
96
+
97
+ Wx.log_message("Time changed, now is %s (control value is %02d:%02d:%02d).",
98
+ event.get_date.strftime('%T'), h, m, s)
99
+ end
100
+
101
+ def on_button_set(_event)
102
+ time = @textCur.value.split(':').collect { |s| Integer(s) rescue nil }
103
+ unless time.size == 3 && time.all?
104
+ Wx.log_error('Invalid time, please use HH:MM:SS format.')
105
+ return
106
+ end
107
+
108
+ @timePicker.set_time(*time)
109
+ end
110
+
111
+ def on_button_reset(_event)
112
+ reset
113
+
114
+ create_time_picker
115
+ end
116
+
117
+ # reset the time picker parameters
118
+ def reset
119
+ today = Time.now
120
+
121
+ @timePicker.set_value(today)
122
+ @textCur.set_value(today.strftime('%T'))
123
+ end
124
+
125
+ # (re)create the time picker
126
+ def create_time_picker
127
+ value = @timePicker.get_value
128
+
129
+ @sizerTimePicker.get_item_count.times { @sizerTimePicker.remove(0) }
130
+
131
+ @timePicker.destroy
132
+
133
+ style = get_attrs.default_flags
134
+
135
+ @timePicker = Wx::TimePickerCtrl.new(self, ID::Picker, value,
136
+ style: style)
137
+
138
+ @sizerTimePicker.add(0, 0, 1, Wx::CENTRE)
139
+ @sizerTimePicker.add(@timePicker, 1, Wx::CENTRE)
140
+ @sizerTimePicker.add(0, 0, 1, Wx::CENTRE)
141
+ @sizerTimePicker.layout
142
+ end
143
+
144
+ end
145
+
146
+ end
147
+
148
+ end
Binary file
@@ -0,0 +1,385 @@
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 Toggle
11
+
12
+ class TogglePage < Widgets::Page
13
+
14
+ module ID
15
+ include Wx::IDHelper
16
+
17
+ Reset = self.next_id(Widgets::Frame::ID::Last)
18
+ ChangeLabel = self.next_id
19
+ Picker = self.next_id
20
+
21
+ ImagePos_Left = 0
22
+ ImagePos_Right = 1
23
+ ImagePos_Top = 2
24
+ ImagePos_Bottom = 3
25
+
26
+ HAlign_Left = 0
27
+ HAlign_Centre = 1
28
+ HAlign_Right = 2
29
+
30
+ VAlign_Top = 0
31
+ VAlign_Centre = 1
32
+ VAlign_Bottom = 2
33
+ end
34
+
35
+ HAS_BITMAPTOGGLEBUTTON = %w[WXMSW WXGTK WXOSX].include?(Wx::PLATFORM)
36
+
37
+ def initialize(book, images)
38
+ super(book, images, :toggle)
39
+
40
+ @chkFit =
41
+ @chkDisable = nil
42
+
43
+ if Wx.has_feature?(:USE_MARKUP)
44
+ @chkUseMarkup = nil
45
+ end # wxUSE_MARKUP
46
+
47
+ if HAS_BITMAPTOGGLEBUTTON
48
+ # init everything
49
+ @chkBitmapOnly =
50
+ @chkTextAndBitmap =
51
+ @chkUseBitmapClass =
52
+ @chkUsePressed =
53
+ @chkUseFocused =
54
+ @chkUseCurrent =
55
+ @chkUseDisabled = nil
56
+
57
+ @radioImagePos =
58
+ @radioHAlign =
59
+ @radioVAlign = nil
60
+ end # HAS_BITMAPTOGGLEBUTTON
61
+
62
+ @textLabel = nil
63
+
64
+ @toggle = nil
65
+ @sizerToggle = nil
66
+ end
67
+
68
+ Info = Widgets::PageInfo.new(self, 'ToggleButton', Widgets::NATIVE_CTRLS)
69
+
70
+ def get_widget
71
+ @toggle
72
+ end
73
+
74
+ def recreate_widget
75
+ create_toggle
76
+ end
77
+
78
+ # lazy creation of the content
79
+ def create_content
80
+ sizerTop = Wx::HBoxSizer.new
81
+
82
+ # left pane
83
+ sizerLeft = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, 'Styles')
84
+ sizerLeftBox = sizerLeft.get_static_box
85
+
86
+ if HAS_BITMAPTOGGLEBUTTON
87
+ @chkBitmapOnly = create_check_box_and_add_to_sizer(sizerLeft, '&Bitmap only', Wx::ID_ANY, sizerLeftBox)
88
+ @chkTextAndBitmap = create_check_box_and_add_to_sizer(sizerLeft, 'Text &and bitmap', Wx::ID_ANY, sizerLeftBox)
89
+ end # HAS_BITMAPTOGGLEBUTTON
90
+
91
+ if Wx.has_feature?(:USE_MARKUP)
92
+ @chkUseMarkup = create_check_box_and_add_to_sizer(sizerLeft, 'Interpret &markup', Wx::ID_ANY, sizerLeftBox)
93
+ end # USE_MARKUP
94
+
95
+ @chkFit = create_check_box_and_add_to_sizer(sizerLeft, "&Fit exactly", Wx::ID_ANY, sizerLeftBox)
96
+ @chkDisable = create_check_box_and_add_to_sizer(sizerLeft, "Disable", Wx::ID_ANY, sizerLeftBox)
97
+
98
+ if HAS_BITMAPTOGGLEBUTTON
99
+ @chkUseBitmapClass = create_check_box_and_add_to_sizer(sizerLeft,
100
+ 'Use Wx::BitmapToggleButton',
101
+ Wx::ID_ANY, sizerLeftBox)
102
+ @chkUseBitmapClass.set_value(true)
103
+
104
+ sizerLeft.add_spacer(5)
105
+
106
+ sizerUseLabels =
107
+ Wx::StaticBoxSizer.new(Wx::VERTICAL, sizerLeftBox,
108
+ '&Use the following bitmaps in addition to the normal one?')
109
+ sizerUseLabelsBox = sizerUseLabels.get_static_box
110
+
111
+ @chkUsePressed = create_check_box_and_add_to_sizer(sizerUseLabels,
112
+ '&Pressed (small help icon)',
113
+ Wx::ID_ANY, sizerUseLabelsBox)
114
+ @chkUseFocused = create_check_box_and_add_to_sizer(sizerUseLabels,
115
+ '&Focused (small error icon)',
116
+ Wx::ID_ANY, sizerUseLabelsBox)
117
+ @chkUseCurrent = create_check_box_and_add_to_sizer(sizerUseLabels,
118
+ '&Current (small warning icon)',
119
+ Wx::ID_ANY, sizerUseLabelsBox)
120
+ @chkUseDisabled = create_check_box_and_add_to_sizer(sizerUseLabels,
121
+ '&Disabled (broken image icon)',
122
+ Wx::ID_ANY, sizerUseLabelsBox)
123
+ sizerLeft.add(sizerUseLabels, Wx::SizerFlags.new.expand.border)
124
+
125
+ sizerLeft.add_spacer(10)
126
+
127
+ dirs = %w[left right top bottom]
128
+ @radioImagePos = Wx::RadioBox.new(sizerLeftBox, Wx::ID_ANY, 'Image &position',
129
+ choices: dirs)
130
+ sizerLeft.add(@radioImagePos, Wx::SizerFlags.new.expand.border)
131
+ sizerLeft.add_spacer(15)
132
+
133
+ # should be in sync with enums Toggle[HV]Align!
134
+ halign = %w[left centre right]
135
+
136
+ valign = %w[top centre bottom]
137
+
138
+ @radioHAlign = Wx::RadioBox.new(sizerLeftBox, label: '&Horz alignment', choices: halign)
139
+ @radioVAlign = Wx::RadioBox.new(sizerLeftBox, label: '&Vert alignment', choices: valign)
140
+
141
+ sizerLeft.add(@radioHAlign, Wx::SizerFlags.new.expand.border)
142
+ sizerLeft.add(@radioVAlign, Wx::SizerFlags.new.expand.border)
143
+ end # HAS_BITMAPTOGGLEBUTTON
144
+
145
+ sizerLeft.add_spacer(5)
146
+
147
+ btn = Wx::Button.new(sizerLeftBox, ID::Reset, '&Reset')
148
+ sizerLeft.add(btn, Wx::SizerFlags.new.centre_horizontal.border(Wx::ALL, 15))
149
+
150
+ # middle pane
151
+ sizerMiddle = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, "&Operations")
152
+
153
+ sizerRow, @textLabel = create_sizer_with_text_and_button(ID::ChangeLabel,
154
+ 'Change label',
155
+ Wx::ID_ANY,
156
+ sizerMiddle.get_static_box)
157
+ @textLabel.set_value('&Toggle me!')
158
+
159
+ sizerMiddle.add(sizerRow, Wx::SizerFlags.new.expand.border)
160
+
161
+ # right pane
162
+ @sizerToggle = Wx::HBoxSizer.new
163
+ @sizerToggle.set_min_size(150, 0)
164
+
165
+ # the 3 panes panes compose the window
166
+ sizerTop.add(sizerLeft,
167
+ Wx::SizerFlags.new(0).expand.border((Wx::ALL & ~Wx::LEFT), 10))
168
+ sizerTop.add(sizerMiddle,
169
+ Wx::SizerFlags.new(1).expand.border(Wx::ALL, 10))
170
+ sizerTop.add(@sizerToggle,
171
+ Wx::SizerFlags.new(1).expand.border((Wx::ALL & ~Wx::RIGHT), 10))
172
+
173
+ # do create the main control
174
+ reset
175
+ create_toggle
176
+
177
+ set_sizer(sizerTop)
178
+
179
+ # connect event handlers
180
+ evt_button(ID::Reset, :on_button_reset)
181
+ evt_button(ID::ChangeLabel, :on_button_change_label)
182
+
183
+ evt_checkbox(Wx::ID_ANY, :on_check_or_radio_box)
184
+ evt_radiobox(Wx::ID_ANY, :on_check_or_radio_box)
185
+
186
+ evt_togglebutton(Wx::ID_ANY, :on_toggled)
187
+ end
188
+
189
+ protected
190
+
191
+ # event handlers
192
+ def on_check_or_radio_box(_event)
193
+ create_toggle
194
+ end
195
+
196
+ # event handlers
197
+ def on_button_reset(_event)
198
+ reset
199
+
200
+ create_toggle
201
+ end
202
+
203
+ def on_button_change_label(_event)
204
+ labelText = @textLabel.value
205
+
206
+ if Wx.has_feature?(:USE_MARKUP) && @chkUseMarkup.value
207
+ @toggle.set_label_markup(labelText)
208
+ else
209
+ @toggle.set_label(labelText)
210
+ end
211
+
212
+ create_toggle if HAS_BITMAPTOGGLEBUTTON && @chkBitmapOnly.checked?
213
+ end
214
+
215
+ def on_toggled(event)
216
+ Wx.log_message('Button toggled, currently %s (event) or %s (control)',
217
+ event.checked? ? 'on' : 'off',
218
+ @toggle.value ? 'on' : 'off')
219
+ end
220
+
221
+ # reset the toggle parameters
222
+ def reset
223
+ @chkFit.set_value(true)
224
+ @chkDisable.set_value(false)
225
+
226
+ if Wx.has_feature?(:USE_MARKUP)
227
+ @chkUseMarkup.set_value(false)
228
+ end # USE_MARKUP
229
+
230
+ if HAS_BITMAPTOGGLEBUTTON
231
+ @chkBitmapOnly.set_value(false)
232
+ @chkTextAndBitmap.set_value(false)
233
+ @chkUseBitmapClass.set_value(true)
234
+
235
+ @chkUsePressed.set_value(true)
236
+ @chkUseFocused.set_value(true)
237
+ @chkUseCurrent.set_value(true)
238
+ @chkUseDisabled.set_value(true)
239
+
240
+ @radioImagePos.set_selection(ID::ImagePos_Left)
241
+ @radioHAlign.set_selection(ID::HAlign_Centre)
242
+ @radioVAlign.set_selection(ID::VAlign_Centre)
243
+ end # HAS_BITMAPTOGGLEBUTTON
244
+
245
+ @toggle.set_value(false) if @toggle
246
+ end
247
+
248
+ # (re)create the toggle
249
+ def create_toggle
250
+ label = ''
251
+ value = false
252
+
253
+ if @toggle
254
+ label = @toggle.label
255
+ value = @toggle.value
256
+ @sizerToggle.get_item_count.times { @sizerToggle.remove(0) }
257
+
258
+ @toggle.destroy
259
+ end
260
+
261
+ if label.empty?
262
+ # creating for the first time or recreating a toggle button after bitmap
263
+ # button
264
+ label = @textLabel.value
265
+ end
266
+
267
+ flags = get_attrs.default_flags
268
+
269
+ if HAS_BITMAPTOGGLEBUTTON
270
+ case @radioHAlign.selection
271
+ when ID::HAlign_Left
272
+ flags |= Wx::BU_LEFT
273
+ when ID::HAlign_Centre
274
+ # nothing
275
+ when ID::HAlign_Right
276
+ flags |= Wx::BU_RIGHT
277
+ else
278
+ ::Kernel.raise RuntimeError, 'unexpected radiobox selection'
279
+ end
280
+
281
+ case @radioVAlign.selection
282
+ when ID::VAlign_Top
283
+ flags |= Wx::BU_TOP
284
+ when ID::VAlign_Centre
285
+ # centre vertical alignment is the default (no style)
286
+ when ID::VAlign_Bottom
287
+ flags |= Wx::BU_BOTTOM
288
+ else
289
+ ::Kernel.raise RuntimeError, 'unexpected radiobox selection'
290
+ end
291
+ showsBitmap = false
292
+ end # HAS_BITMAPTOGGLEBUTTON
293
+
294
+ if HAS_BITMAPTOGGLEBUTTON && @chkBitmapOnly.value
295
+ showsBitmap = true
296
+
297
+ if @chkUseBitmapClass.value
298
+ btgl = Wx::BitmapToggleButton.new(self, ID::Picker,
299
+ create_bitmap('normal', Wx::ART_INFORMATION))
300
+ else
301
+ btgl = Wx::ToggleButton.new(self, ID::Picker, "")
302
+ btgl.set_bitmap_label(create_bitmap('normal', Wx::ART_INFORMATION))
303
+ end
304
+ btgl.set_bitmap_pressed(create_bitmap('pushed', Wx::ART_HELP)) if @chkUsePressed.value
305
+
306
+ btgl.set_bitmap_focus(create_bitmap('focused', Wx::ART_ERROR)) if @chkUseFocused.value
307
+
308
+ btgl.set_bitmap_current(create_bitmap('hover', Wx::ART_WARNING)) if @chkUseCurrent.value
309
+
310
+ btgl.set_bitmap_disabled(create_bitmap('disabled', Wx::ART_MISSING_IMAGE)) if @chkUseDisabled.value
311
+
312
+ @toggle = btgl
313
+ else # normal button
314
+ @toggle = Wx::ToggleButton.new(self, ID::Picker, label,
315
+ style: flags)
316
+ end
317
+ @toggle.set_value(value)
318
+
319
+ if HAS_BITMAPTOGGLEBUTTON
320
+ if !showsBitmap && @chkTextAndBitmap.value
321
+ showsBitmap = true
322
+
323
+ positions = [ Wx::LEFT, Wx::RIGHT, Wx::TOP, Wx::BOTTOM ]
324
+
325
+ @toggle.set_bitmap(Wx::ArtProvider.get_icon(Wx::ART_INFORMATION, Wx::ART_BUTTON),
326
+ positions[@radioImagePos.selection])
327
+
328
+ @toggle.set_bitmap_pressed(Wx::ArtProvider.get_icon(Wx::ART_HELP, Wx::ART_BUTTON)) if @chkUsePressed.value
329
+
330
+ @toggle.set_bitmap_focus(Wx::ArtProvider.get_icon(Wx::ART_ERROR, Wx::ART_BUTTON)) if @chkUseFocused.value
331
+
332
+ @toggle.set_bitmap_current(Wx::ArtProvider.get_icon(Wx::ART_WARNING, Wx::ART_BUTTON)) if @chkUseCurrent.value
333
+
334
+ @toggle.set_bitmap_disabled(Wx::ArtProvider.get_icon(Wx::ART_MISSING_IMAGE, Wx::ART_BUTTON)) if @chkUseDisabled.value
335
+ end
336
+
337
+ @chkUseBitmapClass.enable(showsBitmap)
338
+ @chkTextAndBitmap.enable(!@chkBitmapOnly.checked?)
339
+
340
+ @chkUsePressed.enable(showsBitmap)
341
+ @chkUseFocused.enable(showsBitmap)
342
+ @chkUseCurrent.enable(showsBitmap)
343
+ @chkUseDisabled.enable(showsBitmap)
344
+ end # HAS_BITMAPTOGGLEBUTTON
345
+
346
+ @toggle.enable(!@chkDisable.checked?)
347
+
348
+ add_button_to_sizer
349
+
350
+ @sizerToggle.layout
351
+ end
352
+
353
+ # add button to sizerButton using current value of chkFit
354
+ def add_button_to_sizer
355
+ if @chkFit.value
356
+ @sizerToggle.add_stretch_spacer(1)
357
+ @sizerToggle.add(@toggle, Wx::SizerFlags.new(0).centre.border)
358
+ @sizerToggle.add_stretch_spacer(1)
359
+ else # take up the entire space
360
+ @sizerToggle.add(@toggle, Wx::SizerFlags.new(1).expand.border)
361
+ end
362
+ end
363
+
364
+ # helper function: create a bitmap for wxBitmapToggleButton
365
+ def create_bitmap(label, type)
366
+ bmp = Wx::Bitmap.new(from_dip(Wx::Size.new(180, 70))) # shouldn't hardcode but it's simpler like this
367
+ Wx::MemoryDC.draw_on(bmp) do |dc|
368
+ dc.set_font(self.font)
369
+ dc.set_background(Wx::CYAN_BRUSH)
370
+ dc.clear
371
+ dc.set_text_foreground(Wx::BLACK)
372
+ dc.draw_label(Wx.strip_menu_codes(@textLabel.value) + "\n" +
373
+ "(" + label + " state)",
374
+ Wx::ArtProvider.get_bitmap(type),
375
+ Wx::Rect.new(10, 10, bmp.width - 20, bmp.height - 20),
376
+ Wx::ALIGN_CENTRE)
377
+ end
378
+ bmp
379
+ end
380
+
381
+ end
382
+
383
+ end
384
+
385
+ end