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
@@ -6,31 +6,156 @@
6
6
  # wxRuby3 wxWidgets interface director
7
7
  ###
8
8
 
9
- require_relative './event_handler'
9
+ require_relative './validator'
10
10
 
11
11
  module WXRuby3
12
12
 
13
13
  class Director
14
14
 
15
- class NumericPropertyValidator < EvtHandler
15
+ class NumericPropertyValidator < Validator
16
16
 
17
17
  def setup
18
18
  super
19
19
  # need a custom implementation to handle event handler proc cleanup
20
20
  spec.add_header_code <<~__HEREDOC
21
- class WXRubyNumericPropertyValidator : public wxNumericPropertyValidator
21
+ class WXRubyNumericPropertyValidator : public wxNumericPropertyValidator, public wxRubyValidatorBinding
22
22
  {
23
23
  public:
24
24
  WXRubyNumericPropertyValidator(NumericType numericType, int base=10)
25
- : wxNumericPropertyValidator(numericType, base) {}
25
+ : wxNumericPropertyValidator(numericType, base)
26
+ {
27
+ m_stringValue = &m_valueCache;
28
+ }
29
+ WXRubyNumericPropertyValidator(const WXRubyNumericPropertyValidator& other)
30
+ : wxNumericPropertyValidator(other)
31
+ , wxRubyValidatorBinding(other)
32
+ {
33
+ m_stringValue = &m_valueCache;
34
+ }
26
35
  virtual ~WXRubyNumericPropertyValidator()
27
36
  {
28
37
  wxRuby_ReleaseEvtHandlerProcs(this);
29
38
  }
39
+
40
+ virtual wxObject* Clone() const override
41
+ {
42
+ WXRubyNumericPropertyValidator *clone = new WXRubyNumericPropertyValidator(*this);
43
+ clone->m_valueCache = this->m_valueCache;
44
+ return clone;
45
+ }
46
+
47
+ virtual void SetWindow(wxWindow *win) override
48
+ {
49
+ this->wxNumericPropertyValidator::SetWindow(win);
50
+ VALUE self = get_self();
51
+ // make sure Ruby does not own this validator instance anymore
52
+ RDATA(self)->dfree = SWIG_RubyRemoveTracking;
53
+ }
54
+
55
+ virtual bool TransferFromWindow () override
56
+ {
57
+ // call super
58
+ if (this->wxNumericPropertyValidator::TransferFromWindow())
59
+ {
60
+ // ok, data is retrieved from window and cached
61
+ // now allow any defined binding handler to pass on the data
62
+ return this->DoOnTransferFromWindow(WXSTR_TO_RSTR(m_valueCache));
63
+ }
64
+ return false;
65
+ }
66
+ virtual bool TransferToWindow () override
67
+ {
68
+ // collect data from any defined binding handler
69
+ VALUE data = this->DoOnTransferToWindow();
70
+ // if Qnil returned there is no data returned from handler so we just keep what's in the store
71
+ if (!NIL_P(data))
72
+ {
73
+ m_valueCache = RSTR_TO_WXSTR(data);
74
+ }
75
+ // now allow standard functionality to transfer to window
76
+ return this->wxNumericPropertyValidator::TransferToWindow();
77
+ }
78
+
79
+ const wxString& GetValue () const
80
+ {
81
+ return m_valueCache;
82
+ }
83
+
84
+ void SetValue (const wxString& val)
85
+ {
86
+ m_valueCache = val;
87
+ }
88
+
89
+ private:
90
+ static VALUE c_NumericPropertyValidator;
91
+
92
+ virtual VALUE get_self() override
93
+ {
94
+ if (NIL_P(this->self_))
95
+ {
96
+ this->self_ = SWIG_RubyInstanceFor(this);
97
+ // if this is a C++ created clone (wxWidgets clones validators that are set) it's not tracked yet
98
+ if (NIL_P(this->self_))
99
+ {
100
+ if (NIL_P(c_NumericPropertyValidator))
101
+ {
102
+ c_NumericPropertyValidator = rb_eval_string("Wx::PG::NumericPropertyValidator");
103
+ }
104
+ swig_type_info* swig_type = wxRuby_GetSwigTypeForClass(c_NumericPropertyValidator);
105
+ this->self_ = SWIG_NewPointerObj(this, swig_type, 0); // wrap but don't make Ruby own it
106
+ }
107
+ }
108
+ return this->self_;
109
+ }
110
+
111
+ wxString m_valueCache;
30
112
  };
31
- __HEREDOC
113
+
114
+ VALUE WXRubyNumericPropertyValidator::c_NumericPropertyValidator = Qnil;
115
+
116
+ static void GC_mark_wxNumericPropertyValidator(void* ptr)
117
+ {
118
+ if (ptr)
119
+ {
120
+ wxValidator* vp = reinterpret_cast<wxValidator*> (ptr);
121
+ WXRubyNumericPropertyValidator* rbvp = dynamic_cast<WXRubyNumericPropertyValidator*> (vp);
122
+ // This might be a pointer to a non-customized validator (or clone thereof) created internally
123
+ // by wxWidgets C++ code
124
+ if (rbvp) rbvp->GC_Mark();
125
+ }
126
+ }
127
+ __HEREDOC
128
+ spec.add_swig_code '%markfunc wxValidator "GC_mark_wxValidator";'
129
+ # make Ruby director and wrappers use custom implementation
32
130
  spec.use_class_implementation 'wxNumericPropertyValidator', 'WXRubyNumericPropertyValidator'
33
- spec.no_proxy 'wxNumericPropertyValidator::Clone'
131
+ spec.new_object 'wxNumericPropertyValidator::Clone'
132
+ # add wxRuby extensions
133
+ spec.add_extend_code 'wxNumericPropertyValidator', <<~__HEREDOC
134
+ VALUE GetValue()
135
+ {
136
+ WXRubyNumericPropertyValidator* rb_self = dynamic_cast<WXRubyNumericPropertyValidator*> ($self);
137
+ if (rb_self)
138
+ return WXSTR_TO_RSTR(rb_self->GetValue());
139
+ else
140
+ return Qnil;
141
+ }
142
+
143
+ void SetValue(const wxString& val)
144
+ {
145
+ WXRubyNumericPropertyValidator* rb_self = dynamic_cast<WXRubyNumericPropertyValidator*> ($self);
146
+ if (rb_self)
147
+ rb_self->SetValue(val);
148
+ }
149
+ __HEREDOC
150
+ # handle clone mapping
151
+ spec.map 'wxObject *' => 'Wx::PG::NumericPropertyValidator' do
152
+ map_out code: <<~__CODE
153
+ $result = SWIG_NewPointerObj(SWIG_as_voidptr($1), SWIGTYPE_p_wxTextValidator, SWIG_POINTER_OWN);
154
+ __CODE
155
+ end
156
+ spec.suppress_warning(473, 'wxNumericPropertyValidator::Clone')
157
+ spec.extend_interface 'wxNumericPropertyValidator',
158
+ 'wxNumericPropertyValidator(const wxNumericPropertyValidator &other)'
34
159
  spec.do_not_generate :variables, :defines, :enums, :functions
35
160
  end
36
161
 
@@ -0,0 +1,192 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ ###
6
+ # wxRuby3 wxWidgets interface director
7
+ ###
8
+
9
+ require_relative './window'
10
+
11
+ module WXRuby3
12
+
13
+ class Director
14
+
15
+ class OwnerDrawnComboBox < Window
16
+
17
+ include Typemap::ClientData
18
+
19
+ def setup
20
+ super
21
+ spec.items << 'wxItemContainer'
22
+ # override inheritance chain
23
+ spec.override_inheritance_chain('wxOwnerDrawnComboBox', %w[wxComboCtrl wxControl wxWindow wxEvtHandler wxObject])
24
+ spec.fold_bases('wxOwnerDrawnComboBox' => %w[wxItemContainer])
25
+ spec.regard %w[
26
+ wxOwnerDrawnComboBox::OnDrawBackground
27
+ wxOwnerDrawnComboBox::OnDrawItem
28
+ wxOwnerDrawnComboBox::OnMeasureItem
29
+ wxOwnerDrawnComboBox::OnMeasureItemWidth
30
+ ]
31
+ # unuseful overloads
32
+ spec.ignore 'wxOwnerDrawnComboBox::wxOwnerDrawnComboBox(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)',
33
+ 'wxOwnerDrawnComboBox::Create(wxWindow *, wxWindowID, const wxString &, const wxPoint &, const wxSize &, int, const wxString [], long, const wxValidator &, const wxString &)'
34
+ spec.ignore('wxItemContainer::Append(const wxString &, void *)',
35
+ 'wxItemContainer::Append(const std::vector< wxString > &)',
36
+ 'wxItemContainer::Append(const wxArrayString &, void **)',
37
+ 'wxItemContainer::Append(unsigned int, const wxString *)',
38
+ 'wxItemContainer::Append(unsigned int, const wxString *, void **)',
39
+ 'wxItemContainer::Append(unsigned int, const wxString *, wxClientData **)',
40
+ 'wxItemContainer::Insert(const wxString &, unsigned int, void *)',
41
+ 'wxItemContainer::Insert(const std::vector< wxString > &)',
42
+ 'wxItemContainer::Insert(const wxArrayString &, unsigned int, void **)',
43
+ 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int)',
44
+ 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, void **)',
45
+ 'wxItemContainer::Insert(unsigned int, const wxString *, unsigned int, wxClientData **)',
46
+ 'wxItemContainer::Set(const std::vector< wxString > &)',
47
+ 'wxItemContainer::Set(const wxArrayString &, void **)',
48
+ 'wxItemContainer::Set(unsigned int, const wxString *)',
49
+ 'wxItemContainer::Set(unsigned int, const wxString *, void **)',
50
+ 'wxItemContainer::Set(unsigned int, const wxString *, wxClientData **)',
51
+ 'wxItemContainer::GetClientData',
52
+ 'wxItemContainer::SetClientData',
53
+ 'wxItemContainer::HasClientUntypedData',
54
+ 'wxItemContainer::Clear')
55
+ # ignore these but keep docs; will add custom versions below
56
+ spec.ignore([
57
+ 'wxItemContainer::DetachClientObject',
58
+ 'wxItemContainer::Append(const wxArrayString &, wxClientData **)',
59
+ 'wxItemContainer::Insert(const wxArrayString &, unsigned int, wxClientData **)',
60
+ 'wxItemContainer::Set(const wxArrayString &, wxClientData **)'], ignore_doc: false)
61
+ # ambiguous
62
+ spec.ignore 'wxOwnerDrawnComboBox::IsEmpty', ignore_doc: false
63
+ # missing from docs; needed to override TextEntry version
64
+ spec.extend_interface 'wxOwnerDrawnComboBox', 'void Clear()'
65
+ # missing from docs; required so proxy calls correct override
66
+ spec.extend_interface 'wxOwnerDrawnComboBox',
67
+ 'virtual void DoSetPopupControl(wxComboPopup* popup)',
68
+ visibility: 'protected'
69
+ # missing from docs; implementations of wxItemContainerImmutable methods
70
+ spec.extend_interface 'wxOwnerDrawnComboBox',
71
+ 'unsigned int GetCount() const',
72
+ 'wxString GetString(unsigned int n) const',
73
+ 'void SetString(unsigned int n, const wxString& s)',
74
+ 'int FindString(const wxString& s, bool bCase = false) const',
75
+ 'void Select(int n)',
76
+ 'wxArrayString GetStrings() const'
77
+ # for doc only
78
+ spec.map 'void** clientData' => 'Array', swig: false do
79
+ map_in code: ''
80
+ end
81
+ # Replace the old Wx definitions of these methods adding
82
+ # proper checks on the data arrays.
83
+ # Also add an item enumerator.
84
+ spec.add_extend_code 'wxOwnerDrawnComboBox', <<~__HEREDOC
85
+ wxString GetListStringSelection()
86
+ {
87
+ return $self->wxItemContainerImmutable::GetStringSelection();
88
+ }
89
+
90
+ bool SetListStringSelection(const wxString& string)
91
+ {
92
+ return $self->wxItemContainerImmutable::SetStringSelection(string);
93
+ }
94
+
95
+ void SetListSelection(int n)
96
+ {
97
+ $self->SetSelection(n);
98
+ }
99
+
100
+ int GetListSelection()
101
+ {
102
+ return $self->GetSelection();
103
+ }
104
+
105
+ VALUE DetachClientObject(unsigned int n)
106
+ {
107
+ VALUE rc = Qnil;
108
+ wxClientData *wxcd = $self->DetachClientObject(n);
109
+ wxRubyClientData *rbcd = wxcd ? dynamic_cast<wxRubyClientData*> (wxcd) : nullptr;
110
+ if (rbcd)
111
+ {
112
+ rc = rbcd->GetData();
113
+ delete rbcd;
114
+ }
115
+ return rc;
116
+ }
117
+
118
+ int Append(const wxArrayString &items, VALUE rb_clientData)
119
+ {
120
+ if (TYPE(rb_clientData) != T_ARRAY ||
121
+ static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
122
+ {
123
+ rb_raise(rb_eArgError,
124
+ TYPE(rb_clientData) == T_ARRAY ?
125
+ "expected Array for client_data" :
126
+ "client_data Array needs to be equal in size to items Array");
127
+ }
128
+
129
+ std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
130
+ for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
131
+ {
132
+ cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
133
+ }
134
+ return $self->Append(items, cd_arr.get());
135
+ }
136
+
137
+ int Insert(const wxArrayString &items, unsigned int pos, VALUE rb_clientData)
138
+ {
139
+ if (TYPE(rb_clientData) != T_ARRAY ||
140
+ static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
141
+ {
142
+ rb_raise(rb_eArgError,
143
+ TYPE(rb_clientData) == T_ARRAY ?
144
+ "expected Array for client_data" :
145
+ "client_data Array needs to be equal in size to items Array");
146
+ }
147
+
148
+ std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
149
+ for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
150
+ {
151
+ cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
152
+ }
153
+ return $self->Insert(items, pos, cd_arr.get());
154
+ }
155
+
156
+ void Set(const wxArrayString &items, VALUE rb_clientData)
157
+ {
158
+ if (TYPE(rb_clientData) != T_ARRAY ||
159
+ static_cast<unsigned int> (RARRAY_LEN(rb_clientData)) != items.GetCount())
160
+ {
161
+ rb_raise(rb_eArgError,
162
+ TYPE(rb_clientData) == T_ARRAY ?
163
+ "expected Array for client_data" :
164
+ "client_data Array needs to be equal in size to items Array");
165
+ }
166
+
167
+ std::unique_ptr<wxClientData*[]> cd_arr = std::make_unique<wxClientData*[]> (RARRAY_LEN(rb_clientData));
168
+ for (int i=0; i<RARRAY_LEN(rb_clientData) ;++i)
169
+ {
170
+ cd_arr[i] = new wxRubyClientData(rb_ary_entry(rb_clientData, i));
171
+ }
172
+ $self->Set(items, cd_arr.get());
173
+ }
174
+
175
+ VALUE each_string()
176
+ {
177
+ VALUE rc = Qnil;
178
+ for (unsigned int i=0; i<$self->GetCount() ;++i)
179
+ {
180
+ VALUE rb_s = WXSTR_TO_RSTR($self->GetString(i));
181
+ rc = rb_yield(rb_s);
182
+ }
183
+ return rc;
184
+ }
185
+ __HEREDOC
186
+ end
187
+
188
+ end # class OwnerDrawnComboBox
189
+
190
+ end # class Director
191
+
192
+ end # module WXRuby3