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,203 @@
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 Hyperlink
11
+
12
+ class HyperlinkPage < Widgets::Page
13
+
14
+ module ID
15
+ include Wx::IDHelper
16
+
17
+ Reset = self.next_id(Widgets::Frame::ID::Last)
18
+ SetLabel = self.next_id
19
+ SetURL = self.next_id
20
+ Ctrl = self.next_id
21
+
22
+ Align_Left = 0
23
+ Align_Centre = 1
24
+ Align_Right = 2
25
+ Align_Max = 3
26
+ end
27
+
28
+ def initialize(book, images)
29
+ super(book, images, :hyperlnk)
30
+ end
31
+
32
+ Info = Widgets::PageInfo.new(self, 'Hyperlink', GENERIC_CTRLS)
33
+
34
+ def get_widget
35
+ @hyperlink
36
+ end
37
+ def recreate_widget
38
+ create_hyperlink
39
+ end
40
+
41
+ # lazy creation of the content
42
+ def create_content
43
+ sizerTop = Wx::HBoxSizer.new
44
+
45
+ # left pane
46
+ sizerLeft = Wx::StaticBoxSizer.new(Wx::VERTICAL, self, 'Hyperlink details')
47
+ sizerLeftBox = sizerLeft.get_static_box
48
+
49
+ szr, @label = create_sizer_with_text_and_button(ID::SetLabel,'Set &Label', Wx::ID_ANY, sizerLeftBox)
50
+ sizerLeft.add(szr, 0, Wx::ALL | Wx::ALIGN_RIGHT, 5)
51
+
52
+ szr, @url = create_sizer_with_text_and_button(ID::SetURL,'Set &URL', Wx::ID_ANY, sizerLeftBox)
53
+ sizerLeft.add(szr, 0, Wx::ALL | Wx::ALIGN_RIGHT, 5)
54
+
55
+ alignments = %w{&left &centre &right}
56
+
57
+ @radioAlignMode = Wx::RadioBox.new(sizerLeftBox, Wx::ID_ANY, 'alignment',
58
+ choices: alignments)
59
+ @radioAlignMode.set_selection(1) # start with "centre" selected since
60
+ # wxHL_DEFAULT_STYLE contains wxHL_ALIGN_CENTRE
61
+ sizerLeft.add(@radioAlignMode, 0, Wx::ALL|Wx::GROW, 5)
62
+
63
+ # right pane
64
+ szHyperlinkLong = Wx::VBoxSizer.new
65
+ szHyperlink = Wx::HBoxSizer.new
66
+
67
+ @visit = Wx::StaticText.new(self, Wx::ID_ANY, 'Visit ')
68
+
69
+ @hyperlink = Wx::HyperlinkCtrl.new(self,
70
+ ID::Ctrl,
71
+ 'wxRuby website',
72
+ 'www.github.com/mcorino/wxRuby3')
73
+
74
+ @fun = Wx::StaticText.new(self, Wx::ID_ANY, " for fun!")
75
+
76
+ szHyperlink.add(0, 0, 1, Wx::CENTRE)
77
+ szHyperlink.add(@visit, 0, Wx::CENTRE)
78
+ szHyperlink.add(@hyperlink, 0, Wx::CENTRE)
79
+ szHyperlink.add(@fun, 0, Wx::CENTRE)
80
+ szHyperlink.add(0, 0, 1, Wx::CENTRE)
81
+ szHyperlink.set_min_size(150, 0)
82
+
83
+ @hyperlinkLong = Wx::HyperlinkCtrl.new(self,
84
+ Wx::ID_ANY,
85
+ 'This is a long hyperlink',
86
+ 'www.github.com/mcorino/wxRuby3')
87
+
88
+ szHyperlinkLong.add(0, 0, 1, Wx::CENTRE)
89
+ szHyperlinkLong.add(szHyperlink, 0, Wx::CENTRE|Wx::GROW)
90
+ szHyperlinkLong.add(0, 0, 1, Wx::CENTRE)
91
+ szHyperlinkLong.add(@hyperlinkLong, 0, Wx::GROW)
92
+ szHyperlinkLong.add(0, 0, 1, Wx::CENTRE)
93
+
94
+
95
+ # the 3 panes panes compose the window
96
+ sizerTop.add(sizerLeft, 0, (Wx::ALL & ~Wx::LEFT), 10)
97
+ sizerTop.add(szHyperlinkLong, 1, Wx::GROW | (Wx::ALL & ~Wx::RIGHT), 10)
98
+
99
+ # final initializations
100
+ reset
101
+
102
+ set_sizer(sizerTop)
103
+
104
+ # connect event handlers
105
+ evt_button(ID::Reset, :on_button_reset)
106
+ evt_button(ID::SetLabel, :on_button_set_label)
107
+ evt_button(ID::SetURL, :on_button_set_url)
108
+
109
+ evt_radiobox(Wx::ID_ANY, :on_alignment)
110
+ end
111
+
112
+ protected
113
+
114
+ # event handlers
115
+ def on_button_set_label(_event)
116
+ @hyperlink.set_label(@label.value)
117
+ create_hyperlink
118
+ end
119
+
120
+ def on_button_set_url(_event)
121
+ @hyperlink.set_url(@url.value)
122
+ create_hyperlink
123
+ end
124
+
125
+ def on_button_reset(_event)
126
+ reset
127
+
128
+ create_hyperlink
129
+ end
130
+
131
+ def on_alignment(_event)
132
+ case @radioAlignMode.selection
133
+ when ID::Align_Left
134
+ addstyle = Wx::HL_ALIGN_LEFT
135
+ when ID::Align_Centre
136
+ addstyle = Wx::HL_ALIGN_CENTRE
137
+ when ID::Align_Right
138
+ addstyle = Wx::HL_ALIGN_RIGHT
139
+ else
140
+ ::Kernel.raise RuntimeError, 'unknown alignment'
141
+ end
142
+
143
+ create_hyperlink_long(addstyle)
144
+ end
145
+
146
+ # reset the control parameters
147
+ def reset
148
+ @label.set_value(@hyperlink.label)
149
+ @url.set_value(@hyperlink.url)
150
+ end
151
+
152
+ # (re)create the hyperlinkctrl
153
+ def create_hyperlink
154
+ label = @hyperlink.label
155
+ url = @hyperlink.url
156
+ style = get_attrs.default_flags
157
+
158
+ style |= Wx::HL_DEFAULT_STYLE & ~Wx::BORDER_MASK
159
+
160
+ hyp = Wx::HyperlinkCtrl.new(self,
161
+ ID::Ctrl,
162
+ label,
163
+ url,
164
+ style: style)
165
+
166
+ # update sizer's child window
167
+ get_sizer.replace(@hyperlink, hyp, true)
168
+
169
+ # update our pointer
170
+ @hyperlink.destroy
171
+ @hyperlink = hyp
172
+
173
+ # re-layout the sizer
174
+ get_sizer.layout
175
+ end
176
+
177
+ def create_hyperlink_long(align)
178
+ style = get_attrs.default_flags
179
+ style |= align
180
+ style |= Wx::HL_DEFAULT_STYLE & ~(Wx::HL_ALIGN_CENTRE | Wx::BORDER_MASK)
181
+
182
+ hyp = Wx::HyperlinkCtrl.new(self,
183
+ Wx::ID_ANY,
184
+ 'This is a long hyperlink',
185
+ 'www.github.com/mcorino/wxRuby3',
186
+ style: style)
187
+
188
+ # update sizer's child window
189
+ get_sizer.replace(@hyperlinkLong, hyp, true)
190
+
191
+ # update our pointer
192
+ @hyperlinkLong.destroy
193
+ @hyperlinkLong = hyp
194
+
195
+ # re-layout the sizer
196
+ get_sizer.layout
197
+ end
198
+
199
+ end
200
+
201
+ end
202
+
203
+ end
@@ -0,0 +1,185 @@
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 ItemContainer
11
+
12
+ class Page < Widgets::Page
13
+
14
+ # Help track client data objects in wxItemContainer instances.
15
+ class TrackedClientData
16
+ def initialize(tracker, value)
17
+ @tracker = tracker
18
+ @value = value
19
+ @tracker.__send__(:start_tracking_data)
20
+ end
21
+
22
+ def client_data_unlinked
23
+ @tracker.__send__(:stop_tracking_data)
24
+ end
25
+
26
+ def get_value
27
+ @value
28
+ end
29
+ end
30
+
31
+ def initialize(book, images, icon)
32
+ super(book, images, icon)
33
+ @trackedDataObjects = 0
34
+ @items = %w[This is a List of strings]
35
+ @container = nil
36
+ end
37
+
38
+ def on_button_test_item_container(event)
39
+ @container = get_container
40
+ ::Kernel.raise RuntimeError, 'Widget must have a test widget' unless @container
41
+
42
+ Wx.log_message('wxItemContainer test for %s, %s:',
43
+ get_widget.class.name,
44
+ @container.is_sorted ? 'Sorted' : 'Unsorted')
45
+
46
+ expected_result = @container.sorted? ? self.sorted_items : @items
47
+
48
+ start_test('Append one item')
49
+ item = @items.first
50
+ @container.append(item)
51
+ end_test([item])
52
+
53
+ start_test("Append some items")
54
+ @container.append(@items)
55
+ end_test(expected_result)
56
+
57
+ start_test('Append some items with data')
58
+ objects = []
59
+ @items.size.times { |i| objects << create_client_data(i) }
60
+ @container.append(@items, objects)
61
+ end_test(expected_result)
62
+ objects = nil
63
+
64
+ start_test('Append some items with data, one by one')
65
+ @items.each_with_index { |item, i| @container.append(item, create_client_data(i)) }
66
+ end_test(expected_result)
67
+
68
+ unless @container.sorted?
69
+ start_test('Insert in reverse order with data, one by one')
70
+ @items.reverse.each_with_index do |item, i|
71
+ @container.insert(item, 0, create_client_data(@items.size-(i+1)))
72
+ end
73
+ end_test(expected_result)
74
+ end
75
+ end
76
+
77
+ def get_container
78
+ ::Kernel.raise NotImplementedError
79
+ end
80
+
81
+ private
82
+
83
+ def start_test(label)
84
+ @container.clear
85
+ Wx.log_message("Test - #{label}:")
86
+ end
87
+
88
+ def end_test(items)
89
+ count = @container.count
90
+
91
+ ok = (count == items.size)
92
+ ::Kernel.raise RuntimeError, 'Item count does not match.' unless ok
93
+
94
+ count.times do |i|
95
+ str = @container.get_string(i)
96
+ if str != items[i]
97
+ Wx.log_error("Wrong string \"#{str}\" at position #{i} (expected \"#{items[i]}\")")
98
+ ok = false
99
+ break
100
+ end
101
+
102
+ if @container.has_client_data?
103
+ data = @container.get_client_data(i)
104
+ if data && !verify_client_data(data.get_value, str)
105
+ ok = false
106
+ break
107
+ end
108
+ end
109
+ end
110
+
111
+ Wx.log_message(dump_container_data(items)) unless ok
112
+
113
+ @container.clear
114
+ ok &= verify_all_client_data_destroyed
115
+
116
+ Wx.log_message("...%s", ok ? "passed" : "failed")
117
+ end
118
+
119
+ # Track client data in wxItemContainer instances
120
+ def create_client_data(value)
121
+ TrackedClientData.new(self, value)
122
+ end
123
+
124
+ def start_tracking_data
125
+ @trackedDataObjects += 1
126
+ end
127
+
128
+ def stop_tracking_data
129
+ @trackedDataObjects -= 1
130
+ end
131
+
132
+ def verify_all_client_data_destroyed
133
+ if @trackedDataObjects > 0
134
+ message = 'Bug in managing wxClientData: '
135
+ if @trackedDataObjects > 0
136
+ message << @trackedDataObjects.to_s << ' lost objects'
137
+ else
138
+ message << (-@trackedDataObjects).to_s << ' extra deletes'
139
+ end
140
+ ::Kernel.raise RuntimeError, message
141
+ else
142
+ true
143
+ end
144
+ end
145
+
146
+ def verify_client_data(i, str)
147
+ if i > @items.size || @items[i] != str
148
+ Wx.log_error("Client data for '%s' does not match.", str)
149
+ false
150
+ else
151
+ true
152
+ end
153
+ end
154
+
155
+ def dump_container_data(expected)
156
+ str = "Current content:\n"
157
+
158
+ @container.each_string.each_with_index do |s, i|
159
+ str << " - " << s << " ["
160
+ if @container.has_client_data?
161
+ data = @container.get_client_data(i)
162
+ str << data.get_value.to_s if data
163
+ end
164
+ str << "]\n"
165
+ end
166
+
167
+ str << "Expected content:\n"
168
+ expected.each do |item|
169
+ str << " - " << item << "["
170
+ str << @items.find_index(item).to_s
171
+ str << "]\n"
172
+ end
173
+
174
+ return str
175
+ end
176
+
177
+ def sorted_items
178
+ @items.sort { |a,b| a.casecmp(b) }
179
+ end
180
+
181
+ end
182
+
183
+ end
184
+
185
+ end