wxruby3 0.9.2 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -11,876 +11,864 @@
11
11
 
12
12
  require 'wx'
13
13
 
14
- include Wx
15
-
16
- DIALOGS_CHOOSE_COLOUR = 1
17
- DIALOGS_CHOOSE_COLOUR_GENERIC = 2
18
- DIALOGS_CHOOSE_FONT = 3
19
- DIALOGS_CHOOSE_FONT_GENERIC = 4
20
- DIALOGS_MESSAGE_BOX = 5
21
- DIALOGS_SINGLE_CHOICE = 6
22
- DIALOGS_MULTI_CHOICE = 7
23
- DIALOGS_TEXT_ENTRY = 8
24
- DIALOGS_PASSWORD_ENTRY = 9
25
- DIALOGS_FILE_OPEN = 10
26
- DIALOGS_FILE_OPEN2 = 11
27
- DIALOGS_FILES_OPEN = 12
28
- DIALOGS_FILE_SAVE = 13
29
- DIALOGS_DIR_CHOOSE = 14
30
- DIALOGS_GENERIC_DIR_CHOOSE = 15
31
- DIALOGS_TIP = 16
32
- DIALOGS_CUSTOM_TIP = 17
33
- DIALOGS_NUM_ENTRY = 18
34
- DIALOGS_LOG_DIALOG = 19
35
- DIALOGS_MODAL = 20
36
- DIALOGS_MODELESS = 21
37
- DIALOGS_MODELESS_BTN = 22
38
- DIALOGS_PROGRESS = 23
39
- DIALOGS_BUSYINFO = 24
40
- DIALOGS_STYLED_BUSYINFO = 25
41
- DIALOGS_FIND = 26
42
- DIALOGS_REPLACE = 27
43
- DIALOGS_PREFS = 28
44
- DIALOGS_PREFS_TOOLBOOK = 29
45
-
46
- class MyTipProvider < TipProvider
47
- TIPS = [
48
- %Q{This is the first tip.},
49
- %Q{This is the second tip.\nWhich even has a second line.},
50
- %Q{This is the third tip.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.},
51
- ]
52
-
53
- def initialize(curtip)
54
- super
55
- end
14
+ module Dialogs
15
+
16
+ DIALOGS_CHOOSE_COLOUR = 1
17
+ DIALOGS_CHOOSE_COLOUR_GENERIC = 2
18
+ DIALOGS_CHOOSE_FONT = 3
19
+ DIALOGS_CHOOSE_FONT_GENERIC = 4
20
+ DIALOGS_MESSAGE_BOX = 5
21
+ DIALOGS_SINGLE_CHOICE = 6
22
+ DIALOGS_MULTI_CHOICE = 7
23
+ DIALOGS_TEXT_ENTRY = 8
24
+ DIALOGS_PASSWORD_ENTRY = 9
25
+ DIALOGS_FILE_OPEN = 10
26
+ DIALOGS_FILE_OPEN2 = 11
27
+ DIALOGS_FILES_OPEN = 12
28
+ DIALOGS_FILE_SAVE = 13
29
+ DIALOGS_DIR_CHOOSE = 14
30
+ DIALOGS_GENERIC_DIR_CHOOSE = 15
31
+ DIALOGS_TIP = 16
32
+ DIALOGS_CUSTOM_TIP = 17
33
+ DIALOGS_NUM_ENTRY = 18
34
+ DIALOGS_LOG_DIALOG = 19
35
+ DIALOGS_MODAL = 20
36
+ DIALOGS_MODELESS = 21
37
+ DIALOGS_MODELESS_BTN = 22
38
+ DIALOGS_PROGRESS = 23
39
+ DIALOGS_BUSYINFO = 24
40
+ DIALOGS_STYLED_BUSYINFO = 25
41
+ DIALOGS_FIND = 26
42
+ DIALOGS_REPLACE = 27
43
+ DIALOGS_PREFS = 28
44
+ DIALOGS_PREFS_TOOLBOOK = 29
45
+
46
+ class MyTipProvider < Wx::TipProvider
47
+ TIPS = [
48
+ %Q{This is the first tip.},
49
+ %Q{This is the second tip.\nWhich even has a second line.},
50
+ %Q{This is the third tip.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.},
51
+ ]
52
+
53
+ def initialize(curtip)
54
+ super
55
+ end
56
56
 
57
- def get_tip()
58
- c = get_current_tip
59
- if c >= 0 && c < TIPS.size
60
- set_current_tip(c+1)
61
- TIPS[c]
62
- else
63
- set_current_tip(1)
64
- TIPS[0]
57
+ def get_tip
58
+ c = get_current_tip
59
+ if c >= 0 && c < TIPS.size
60
+ set_current_tip(c+1)
61
+ TIPS[c]
62
+ else
63
+ set_current_tip(1)
64
+ TIPS[0]
65
+ end
65
66
  end
66
67
  end
67
- end
68
68
 
69
- class MyModalDialog < Dialog
70
- def initialize(parent)
71
- super(parent, -1, "Modal dialog")
69
+ class MyModalDialog < Wx::Dialog
70
+ def initialize(parent)
71
+ super(parent, -1, "Modal dialog")
72
72
 
73
- sizer_top = BoxSizer.new(HORIZONTAL)
73
+ sizer_top = Wx::BoxSizer.new(Wx::HORIZONTAL)
74
74
 
75
- @btn_focused = Button.new(self, -1, "Default button")
76
- @btn_delete = Button.new(self, -1, "&Delete button")
77
- btn_ok = Button.new(self, ID_CANCEL, "&Close")
78
- sizer_top.add(@btn_focused, 0, ALIGN_CENTER | ALL, 5)
79
- sizer_top.add(@btn_delete, 0, ALIGN_CENTER | ALL, 5)
80
- sizer_top.add(btn_ok, 0, ALIGN_CENTER | ALL, 5)
75
+ @btn_focused = Wx::Button.new(self, -1, "Default button")
76
+ @btn_delete = Wx::Button.new(self, -1, "&Delete button")
77
+ btn_ok = Wx::Button.new(self, Wx::ID_CANCEL, "&Close")
78
+ sizer_top.add(@btn_focused, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
79
+ sizer_top.add(@btn_delete, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
80
+ sizer_top.add(btn_ok, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
81
81
 
82
- set_auto_layout(true)
83
- set_sizer(sizer_top)
82
+ set_auto_layout(true)
83
+ set_sizer(sizer_top)
84
84
 
85
- sizer_top.set_size_hints(self)
86
- sizer_top.fit(self)
85
+ sizer_top.set_size_hints(self)
86
+ sizer_top.fit(self)
87
87
 
88
- @btn_focused.set_focus()
89
- @btn_focused.set_default()
88
+ @btn_focused.set_focus
89
+ @btn_focused.set_default
90
90
 
91
- evt_button(-1) {|event| on_button(event) }
92
- end
91
+ evt_button(-1) {|event| on_button(event) }
92
+ end
93
+
94
+ def on_button(event)
95
+ id = event.get_id
93
96
 
94
- def on_button(event)
95
- id = event.get_id
96
-
97
- if id == @btn_delete.get_id
98
- @btn_focused.destroy
99
- @btn_focused = nil
97
+ if id == @btn_delete.get_id
98
+ @btn_focused.destroy
99
+ @btn_focused = nil
100
100
 
101
- @btn_delete.disable()
102
- elsif @btn_focused && id == @btn_focused.get_id
103
- get_text_from_user("Dummy prompt", "Modal dialog called from dialog",
104
- "", self)
105
- else
106
- event.skip()
101
+ @btn_delete.disable
102
+ elsif @btn_focused && id == @btn_focused.get_id
103
+ get_text_from_user("Dummy prompt", "Modal dialog called from dialog",
104
+ "", self)
105
+ else
106
+ event.skip
107
+ end
107
108
  end
108
109
  end
109
- end
110
110
 
111
111
 
112
- class MyModelessDialog < Dialog
113
- def initialize(parent)
114
- super(parent, -1, "Modeless dialog")
112
+ class MyModelessDialog < Wx::Dialog
113
+ def initialize(parent)
114
+ super(parent, -1, "Modeless dialog")
115
115
 
116
- sizer_top = BoxSizer.new(VERTICAL)
116
+ sizer_top = Wx::BoxSizer.new(Wx::VERTICAL)
117
117
 
118
- btn = Button.new(self, DIALOGS_MODELESS_BTN, "Press me")
119
- check = CheckBox.new(self, -1, "Should be disabled")
120
- check.disable()
118
+ btn = Wx::Button.new(self, DIALOGS_MODELESS_BTN, "Press me")
119
+ check = Wx::CheckBox.new(self, -1, "Should be disabled")
120
+ check.disable
121
121
 
122
- sizer_top.add(btn, 1, EXPAND | ALL, 5)
123
- sizer_top.add(check, 1, EXPAND | ALL, 5)
122
+ sizer_top.add(btn, 1, Wx::EXPAND | Wx::ALL, 5)
123
+ sizer_top.add(check, 1, Wx::EXPAND | Wx::ALL, 5)
124
124
 
125
- set_auto_layout(true)
126
- set_sizer(sizer_top)
125
+ set_auto_layout(true)
126
+ set_sizer(sizer_top)
127
127
 
128
- sizer_top.set_size_hints(self)
129
- sizer_top.fit(self)
128
+ sizer_top.set_size_hints(self)
129
+ sizer_top.fit(self)
130
130
 
131
- evt_button(DIALOGS_MODELESS_BTN) {|event| on_button(event) }
131
+ evt_button(DIALOGS_MODELESS_BTN) {|event| on_button(event) }
132
132
 
133
- evt_close() {|event| on_close(event) }
133
+ evt_close {|event| on_close(event) }
134
134
 
135
- end
135
+ end
136
136
 
137
- def on_button(event)
138
- message_box("Button pressed in modeless dialog", "Info",
139
- OK | ICON_INFORMATION, self)
140
- end
137
+ def on_button(_event)
138
+ Wx.message_box("Button pressed in modeless dialog", "Info",
139
+ Wx::OK | Wx::ICON_INFORMATION, self)
140
+ end
141
141
 
142
- def on_close(event)
143
- if event.can_veto()
144
- message_box("Use the menu item to close self dialog",
145
- "Modeless dialog",
146
- OK | ICON_INFORMATION, self)
142
+ def on_close(event)
143
+ if event.can_veto
144
+ Wx.message_box("Use the menu item to close self dialog",
145
+ "Modeless dialog",
146
+ Wx::OK | Wx::ICON_INFORMATION, self)
147
147
 
148
- event.veto()
148
+ event.veto
149
+ end
149
150
  end
150
151
  end
151
- end
152
152
 
153
- # PropertySheetDialog is specialised for doing preferences dialogs; it
154
- # contains a BookCtrl of some sort
155
- class MyPrefsDialog < Wx::PropertySheetDialog
156
- def initialize(parent, pref_type)
157
- # Using Book type other than Notebook needs two-step construction
158
- super()
159
- if pref_type == DIALOGS_PREFS_TOOLBOOK
160
- self.sheet_style = Wx::PROPSHEET_BUTTONTOOLBOOK
161
- self.sheet_outer_border = 1
162
- self.sheet_inner_border = 2
163
- img_list = Wx::ImageList.new(32, 32)
164
- img_list << std_bitmap(Wx::ART_NORMAL_FILE)
165
- img_list << std_bitmap(Wx::ART_CDROM)
166
- img_list << std_bitmap(Wx::ART_REPORT_VIEW)
167
- end
168
-
169
- create(parent, -1, "Preferences")
170
- create_buttons(Wx::ID_OK|Wx::ID_CANCEL)
171
- book_ctrl.image_list = img_list
172
- book_ctrl.add_page(file_panel(book_ctrl), "File", false, 0)
173
- book_ctrl.add_page(cdrom_panel(book_ctrl), "CD ROM", false, 1)
174
-
175
- layout_dialog
176
- end
153
+ # PropertySheetDialog is specialised for doing preferences dialogs; it
154
+ # contains a BookCtrl of some sort
155
+ class MyPrefsDialog < Wx::PropertySheetDialog
156
+ def initialize(parent, pref_type)
157
+ # Using Book type other than Notebook needs two-step construction
158
+ super()
159
+ img_id1 = img_id2 = -1
160
+ if pref_type == DIALOGS_PREFS_TOOLBOOK
161
+ self.sheet_style = Wx::PROPSHEET_BUTTONTOOLBOOK
162
+ self.sheet_outer_border = 1
163
+ self.sheet_inner_border = 2
164
+ imgs = [std_bitmap(Wx::ART_NORMAL_FILE), std_bitmap(Wx::ART_CDROM), std_bitmap(Wx::ART_REPORT_VIEW)]
165
+ img_id1 = 0
166
+ img_id2 = 1
167
+ end
177
168
 
178
- # Gets one of the rather ugly standard bitmaps from ArtProvider
179
- def std_bitmap(art_id)
180
- Wx::ArtProvider.bitmap(art_id, Wx::ART_TOOLBAR, [32, 32])
181
- end
169
+ create(parent, -1, "Preferences")
170
+ create_buttons(Wx::ID_OK|Wx::ID_CANCEL)
171
+ book_ctrl.set_images(imgs)
172
+ book_ctrl.add_page(file_panel(book_ctrl), "File", false, img_id1)
173
+ book_ctrl.add_page(cdrom_panel(book_ctrl), "CD ROM", false, img_id2)
182
174
 
183
- def file_panel(book)
184
- panel = Wx::Panel.new(book)
185
- panel.sizer = Wx::VBoxSizer.new
175
+ layout_dialog
176
+ end
186
177
 
187
- cb1 = Wx::CheckBox.new(panel, :label => 'Show hidden files')
188
- panel.sizer.add(cb1, 0, Wx::ALL, 5)
178
+ # Gets one of the rather ugly standard bitmaps from ArtProvider
179
+ def std_bitmap(art_id)
180
+ Wx::BitmapBundle.new(Wx::ArtProvider.bitmap(art_id, Wx::ART_TOOLBAR, [32, 32]))
181
+ end
189
182
 
190
- cb2 = Wx::CheckBox.new(panel, :label => 'Always show extensions')
191
- panel.sizer.add(cb2, 0, Wx::ALL, 5)
183
+ def file_panel(book)
184
+ panel = Wx::Panel.new(book)
185
+ panel.sizer = Wx::VBoxSizer.new
192
186
 
193
- cb3 = Wx::CheckBox.new(panel, :label => 'Show icons')
194
- panel.sizer.add(cb3, 0, Wx::ALL, 5)
187
+ cb1 = Wx::CheckBox.new(panel, :label => 'Show hidden files')
188
+ panel.sizer.add(cb1, 0, Wx::ALL, 5)
195
189
 
196
- cb4 = Wx::CheckBox.new(panel, :label => 'Show owner')
197
- panel.sizer.add(cb4, 0, Wx::ALL, 5)
190
+ cb2 = Wx::CheckBox.new(panel, :label => 'Always show extensions')
191
+ panel.sizer.add(cb2, 0, Wx::ALL, 5)
198
192
 
199
- st = Wx::StaticText.new(panel, :label => "Sort by:")
200
- panel.sizer.add(st, 0, Wx::ALL, 5)
193
+ cb3 = Wx::CheckBox.new(panel, :label => 'Show icons')
194
+ panel.sizer.add(cb3, 0, Wx::ALL, 5)
201
195
 
202
- cb1 = Wx::Choice.new(panel, :choices => %w|Name Created Modified Size|)
203
- panel.sizer.add(cb1, 0, Wx::ALL, 5)
204
- panel
205
- end
196
+ cb4 = Wx::CheckBox.new(panel, :label => 'Show owner')
197
+ panel.sizer.add(cb4, 0, Wx::ALL, 5)
206
198
 
207
- def cdrom_panel(book)
208
- panel = Wx::Panel.new(book)
209
- panel.sizer = Wx::VBoxSizer.new
210
-
211
- choices = [ 'Show files', 'Play media', 'Run CD', 'Do nothing' ]
212
- rb = Wx::RadioBox.new( panel,
213
- :label => 'When opening CD',
214
- :choices => choices,
215
- :major_dimension => 1)
216
- panel.sizer.add(rb, 0, Wx::GROW|Wx::ALL, 5)
217
- panel
218
- end
219
- end
199
+ st = Wx::StaticText.new(panel, :label => "Sort by:")
200
+ panel.sizer.add(st, 0, Wx::ALL, 5)
201
+
202
+ cb1 = Wx::Choice.new(panel, :choices => %w|Name Created Modified Size|)
203
+ panel.sizer.add(cb1, 0, Wx::ALL, 5)
204
+ panel
205
+ end
220
206
 
221
- class MyCanvas < ScrolledWindow
222
- def initialize(parent)
223
- super(parent,-1,DEFAULT_POSITION,DEFAULT_SIZE, NO_FULL_REPAINT_ON_RESIZE)
224
- evt_paint { |event| on_paint(event) }
207
+ def cdrom_panel(book)
208
+ panel = Wx::Panel.new(book)
209
+ panel.sizer = Wx::VBoxSizer.new
210
+
211
+ choices = [ 'Show files', 'Play media', 'Run CD', 'Do nothing' ]
212
+ rb = Wx::RadioBox.new( panel,
213
+ :label => 'When opening CD',
214
+ :choices => choices,
215
+ :major_dimension => 1)
216
+ panel.sizer.add(rb, 0, Wx::GROW|Wx::ALL, 5)
217
+ panel
218
+ end
225
219
  end
226
220
 
227
- def clear
221
+ class MyCanvas < Wx::ScrolledWindow
222
+ def initialize(parent)
223
+ super(parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE, Wx::NO_FULL_REPAINT_ON_RESIZE)
224
+ evt_paint { |event| on_paint(event) }
225
+ end
228
226
 
229
- end
227
+ def clear
230
228
 
231
- def on_paint(event)
232
- paint do |dc|
233
- dc.set_text_foreground( get_app.canvas_text_colour )
234
- dc.set_font( get_app.canvas_font )
235
- dc.draw_text("Windows common dialogs test application", 10, 10)
229
+ end
230
+
231
+ def on_paint(_event)
232
+ paint do |dc|
233
+ dc.set_text_foreground( Wx.get_app.canvas_text_colour )
234
+ dc.set_font( Wx.get_app.canvas_font )
235
+ dc.draw_text("Windows common dialogs test application", 10, 10)
236
+ end
236
237
  end
237
238
  end
238
- end
239
239
 
240
- class MyFrame < Frame
241
- def initialize(parent,
242
- title,
243
- pos,
244
- size)
245
- super(parent, -1, title, pos, size)
246
-
247
- @dialog = nil
248
-
249
- @dlg_find = nil
250
- @dlg_replace = nil
251
-
252
- @find_data = FindReplaceData.new
253
-
254
- @ext_def = ""
255
- @index = -1
256
- @index_2 = -1
257
-
258
- @max = 100
259
-
260
- create_status_bar()
261
-
262
- evt_menu(DIALOGS_CHOOSE_COLOUR, :on_choose_colour)
263
- evt_menu(DIALOGS_CHOOSE_FONT, :on_choose_font)
264
- evt_menu(DIALOGS_LOG_DIALOG, :on_log_dialog)
265
- evt_menu(DIALOGS_MESSAGE_BOX, :on_message_box)
266
- evt_menu(DIALOGS_TEXT_ENTRY, :on_text_entry)
267
- evt_menu(DIALOGS_PASSWORD_ENTRY, :on_password_entry)
268
- evt_menu(DIALOGS_NUM_ENTRY, :on_numeric_entry)
269
- evt_menu(DIALOGS_SINGLE_CHOICE, :on_single_choice)
270
- evt_menu(DIALOGS_MULTI_CHOICE, :on_multi_choice)
271
- evt_menu(DIALOGS_FILE_OPEN, :on_file_open)
272
- evt_menu(DIALOGS_FILE_OPEN2, :on_file_open2)
273
- evt_menu(DIALOGS_FILES_OPEN, :on_files_open)
274
- evt_menu(DIALOGS_FILE_SAVE, :on_file_save)
275
- evt_menu(DIALOGS_DIR_CHOOSE, :on_dir_choose)
276
- evt_menu(DIALOGS_MODAL, :on_modal_dlg)
277
- evt_menu(DIALOGS_MODELESS, :on_modeless_dlg)
278
- evt_menu(DIALOGS_TIP, :on_show_tip)
279
- evt_menu(DIALOGS_CUSTOM_TIP, :on_show_custom_tip)
280
- evt_menu(DIALOGS_PROGRESS, :on_show_progress)
281
- evt_menu(DIALOGS_BUSYINFO, :on_show_busy_info)
282
- evt_menu(DIALOGS_STYLED_BUSYINFO, :on_show_styled_busy_info)
283
- evt_menu(DIALOGS_PREFS, :on_show_prefs)
284
- evt_menu(DIALOGS_PREFS_TOOLBOOK,:on_show_prefs)
285
- evt_menu(DIALOGS_FIND, :on_show_find_dialog)
286
- evt_menu(DIALOGS_REPLACE, :on_show_replace_dialog)
287
- evt_find(-1, :on_find_dialog)
288
- evt_find_next(-1, :on_find_dialog)
289
- evt_find_replace(-1, :on_find_dialog)
290
- evt_find_replace_all(-1, :on_find_dialog)
291
- evt_find_close(-1, :on_find_dialog)
292
- evt_menu(ID_EXIT, :on_exit)
240
+ class MyFrame < Wx::Frame
241
+ def initialize(parent,
242
+ title,
243
+ pos,
244
+ size)
245
+ super(parent, -1, title, pos, size)
293
246
 
294
- end
247
+ @dialog = nil
295
248
 
296
- def on_choose_colour(event)
249
+ @dlg_find = nil
250
+ @dlg_replace = nil
297
251
 
298
- col = MyApp.canvas.get_background_colour()
252
+ @find_data = Wx::FindReplaceData.new
253
+
254
+ @ext_def = ""
255
+ @index = -1
256
+ @index_2 = -1
257
+
258
+ @max = 100
259
+
260
+ create_status_bar
261
+
262
+ evt_menu(DIALOGS_CHOOSE_COLOUR, :on_choose_colour)
263
+ evt_menu(DIALOGS_CHOOSE_FONT, :on_choose_font)
264
+ evt_menu(DIALOGS_LOG_DIALOG, :on_log_dialog)
265
+ evt_menu(DIALOGS_MESSAGE_BOX, :on_message_box)
266
+ evt_menu(DIALOGS_TEXT_ENTRY, :on_text_entry)
267
+ evt_menu(DIALOGS_PASSWORD_ENTRY, :on_password_entry)
268
+ evt_menu(DIALOGS_NUM_ENTRY, :on_numeric_entry)
269
+ evt_menu(DIALOGS_SINGLE_CHOICE, :on_single_choice)
270
+ evt_menu(DIALOGS_MULTI_CHOICE, :on_multi_choice)
271
+ evt_menu(DIALOGS_FILE_OPEN, :on_file_open)
272
+ evt_menu(DIALOGS_FILE_OPEN2, :on_file_open2)
273
+ evt_menu(DIALOGS_FILES_OPEN, :on_files_open)
274
+ evt_menu(DIALOGS_FILE_SAVE, :on_file_save)
275
+ evt_menu(DIALOGS_DIR_CHOOSE, :on_dir_choose)
276
+ evt_menu(DIALOGS_MODAL, :on_modal_dlg)
277
+ evt_menu(DIALOGS_MODELESS, :on_modeless_dlg)
278
+ evt_menu(DIALOGS_TIP, :on_show_tip)
279
+ evt_menu(DIALOGS_CUSTOM_TIP, :on_show_custom_tip)
280
+ evt_menu(DIALOGS_PROGRESS, :on_show_progress)
281
+ evt_menu(DIALOGS_BUSYINFO, :on_show_busy_info)
282
+ evt_menu(DIALOGS_STYLED_BUSYINFO, :on_show_styled_busy_info)
283
+ evt_menu(DIALOGS_PREFS, :on_show_prefs)
284
+ evt_menu(DIALOGS_PREFS_TOOLBOOK,:on_show_prefs)
285
+ evt_menu(DIALOGS_FIND, :on_show_find_dialog)
286
+ evt_menu(DIALOGS_REPLACE, :on_show_replace_dialog)
287
+ evt_find(-1, :on_find_dialog)
288
+ evt_find_next(-1, :on_find_dialog)
289
+ evt_find_replace(-1, :on_find_dialog)
290
+ evt_find_replace_all(-1, :on_find_dialog)
291
+ evt_find_close(-1, :on_find_dialog)
292
+ evt_menu(Wx::ID_EXIT, :on_exit)
299
293
 
300
- data = ColourData.new
301
- data.set_colour(col)
302
- data.set_choose_full(true)
303
- for i in 0 ... 16
304
- colour = Colour.new(i*16, i*16, i*16)
305
- data.set_custom_colour(i, colour)
306
294
  end
307
295
 
308
- Wx::ColourDialog(self, data) do |dialog|
309
- dialog.set_title("Choose the background colour (not OS X)")
310
- if dialog.show_modal() == ID_OK
311
- retData = dialog.get_colour_data()
312
- col = retData.get_colour()
313
- MyApp.canvas.set_background_colour(col)
314
- #$my_canvas.clear()
315
- MyApp.canvas.refresh()
316
- end
317
- end
318
- end
296
+ def on_choose_colour(_event)
319
297
 
298
+ col = MyApp.canvas.get_background_colour
320
299
 
321
- def on_choose_font(event)
322
- data = FontData.new
323
- data.set_initial_font(Wx::get_app.canvas_font)
324
- data.set_colour(Wx::get_app.canvas_text_colour)
300
+ data = Wx::ColourData.new
301
+ data.set_colour(col)
302
+ data.set_choose_full(true)
303
+ 16.times do |i|
304
+ colour = Wx::Colour.new(i*16, i*16, i*16)
305
+ data.set_custom_colour(i, colour)
306
+ end
325
307
 
326
- Wx::FontDialog(self, data) do |dialog|
327
- if dialog.show_modal() == ID_OK
328
- ret_data = dialog.get_font_data()
329
- Wx::get_app.canvas_font = ret_data.get_chosen_font()
330
- Wx::get_app.canvas_text_colour = ret_data.get_colour()
331
- font = ret_data.get_chosen_font
332
- msg = "Font = %s, %i pt" % [ font.get_face_name,
333
- font.get_point_size ]
334
- # Using functors is not mandatory but to prevent memory leaks
335
- # you MUST destroy the dialog yourself than at some point
336
- dialog2 = MessageDialog.new(self, msg, "Got font")
337
- dialog2.show_modal
338
- dialog2.destroy
308
+ Wx.ColourDialog(self, data) do |dialog|
309
+ dialog.set_title("Choose the background colour (not OS X)")
310
+ if dialog.show_modal == Wx::ID_OK
311
+ retData = dialog.get_colour_data
312
+ col = retData.get_colour
313
+ MyApp.canvas.set_background_colour(col)
314
+ #$my_canvas.clear
315
+ MyApp.canvas.refresh
316
+ end
339
317
  end
340
- #else: cancelled by the user, don't change the font
341
318
  end
342
- end
343
-
344
319
 
345
- def on_log_dialog(event)
346
-
347
- # calling yield() (as ~BusyCursor does) shouldn't result in messages
348
- # being flushed -- test it
349
-
350
- BusyCursor.busy() do
351
-
352
- log_message("This is some message - everything is ok so far.")
353
- log_message("Another message...\n... self one is on multiple lines")
354
- log_warning("And then something went wrong!")
355
-
356
- # and if ~BusyCursor doesn't do it, then call it manually
357
- Wx::get_app.yield()
358
-
359
- log_error("Intermediary error handler decided to abort.")
360
- log_error("DEMO: The top level caller detected an unrecoverable error.")
361
-
362
- Log::flush_active()
363
-
364
- log_message("And this is the same dialog but with only one message.")
365
- end
366
- end
367
320
 
368
- def on_message_box(event)
369
-
370
- Wx::MessageDialog(nil, "This is a message box\nA long, long string to test out the message box properly",
371
- "Message box text", NO_DEFAULT|YES_NO|CANCEL|ICON_INFORMATION) do |dialog|
372
- case dialog.show_modal
373
- when ID_YES
374
- log_status("You pressed \"Yes\"")
375
- when ID_NO
376
- log_status("You pressed \"No\"")
377
- when ID_CANCEL
378
- log_status("You pressed \"Cancel\"")
379
- else
380
- log_error("Unexpected MessageDialog return code!")
321
+ def on_choose_font(_event)
322
+ data = Wx::FontData.new
323
+ data.set_initial_font(Wx::get_app.canvas_font)
324
+ data.set_colour(Wx::get_app.canvas_text_colour)
325
+
326
+ Wx::FontDialog(self, data) do |dialog|
327
+ if dialog.show_modal == Wx::ID_OK
328
+ ret_data = dialog.get_font_data
329
+ Wx::get_app.canvas_font = ret_data.get_chosen_font
330
+ Wx::get_app.canvas_text_colour = ret_data.get_colour
331
+ font = ret_data.get_chosen_font
332
+ msg = "Font = %s, %i pt" % [ font.get_face_name,
333
+ font.get_point_size ]
334
+ # Using functors is not mandatory but to prevent memory leaks
335
+ # you MUST destroy the dialog yourself than at some point
336
+ dialog2 = Wx::MessageDialog.new(self, msg, "Got font")
337
+ dialog2.show_modal
338
+ dialog2.destroy
339
+ end
340
+ #else: cancelled by the user, don't change the font
381
341
  end
382
342
  end
383
- end
384
343
 
385
344
 
386
- def on_numeric_entry(event)
345
+ def on_log_dialog(_event)
387
346
 
388
- res = get_number_from_user( "This is some text, actually a lot of text.\n" +
389
- "Even two rows of text.",
390
- "Enter a number:", "Numeric input test",
391
- 50, 0, 100, self )
347
+ # calling yield (as ~BusyCursor does) shouldn't result in messages
348
+ # being flushed -- test it
392
349
 
393
- if res == -1
394
- msg = "Invalid number entered or dialog cancelled."
395
- icon = ICON_HAND
396
- else
397
- msg = sprintf("You've entered %d", res )
398
- icon = ICON_INFORMATION
399
- end
350
+ Wx::BusyCursor.busy do
400
351
 
401
- message_box(msg, "Numeric test result", OK | icon, self)
402
- end
352
+ Wx.log_message("This is some message - everything is ok so far.")
353
+ Wx.log_message("Another message...\n... self one is on multiple lines")
354
+ Wx.log_warning("And then something went wrong!")
403
355
 
404
- def on_password_entry(event)
356
+ # and if ~BusyCursor doesn't do it, then call it manually
357
+ Wx::get_app.yield
405
358
 
406
- pwd = get_password_from_user("Enter password:",
407
- "Password entry dialog",
408
- "", self)
409
- if pwd
410
- message_box(sprintf("Your password is '%s'", pwd),
411
- "Got password", OK | ICON_INFORMATION, self)
412
- end
413
- end
359
+ Wx.log_error("Intermediary error handler decided to abort.")
360
+ Wx.log_error("DEMO: The top level caller detected an unrecoverable error.")
414
361
 
362
+ Wx::Log.flush_active
415
363
 
416
- def on_text_entry(event)
364
+ Wx.log_message("And this is the same dialog but with only one message.")
365
+ end
366
+ end
417
367
 
418
- Wx::TextEntryDialog(self,
419
- "This is a small sample\n" +
420
- "A long, long string to test out the text entrybox",
421
- "Please enter a string",
422
- "Default value",
423
- OK | CANCEL) do |dialog|
424
- if dialog.show_modal() == ID_OK
425
- dialog2 = MessageDialog.new(self, dialog.get_value(), "Got string")
426
- dialog2.show_modal
427
- dialog2.destroy
368
+ def on_message_box(_event)
369
+
370
+ Wx.MessageDialog(nil, "This is a message box\nA long, long string to test out the message box properly",
371
+ "Message box text", Wx::NO_DEFAULT|Wx::YES_NO|Wx::CANCEL|Wx::ICON_INFORMATION) do |dialog|
372
+ case dialog.show_modal
373
+ when Wx::ID_YES
374
+ Wx.log_status("You pressed \"Yes\"")
375
+ when Wx::ID_NO
376
+ Wx.log_status("You pressed \"No\"")
377
+ when Wx::ID_CANCEL
378
+ Wx.log_status("You pressed \"Cancel\"")
379
+ else
380
+ Wx.log_error("Unexpected MessageDialog return code!")
381
+ end
428
382
  end
429
383
  end
430
- end
431
384
 
432
- def on_single_choice(event)
433
385
 
434
- choices = %w[One Two Three Four Five]
386
+ def on_numeric_entry(_event)
435
387
 
436
- Wx::SingleChoiceDialog(self,
437
- "This is a small sample\n" +
438
- "A single-choice convenience dialog",
439
- "Please select a value",
440
- choices, OK | CANCEL) do |dialog|
441
- dialog.set_selection(2)
388
+ res = Wx.get_number_from_user( "This is some text, actually a lot of text.\n" +
389
+ "Even two rows of text.",
390
+ "Enter a number:", "Numeric input test",
391
+ 50, 0, 100, self )
442
392
 
443
- if dialog.show_modal == ID_OK
444
- Wx::MessageDialog(self, dialog.get_string_selection, "Got string")
393
+ if res == -1
394
+ msg = "Invalid number entered or dialog cancelled."
395
+ icon = Wx::ICON_HAND
396
+ else
397
+ msg = sprintf("You've entered %d", res )
398
+ icon = Wx::ICON_INFORMATION
445
399
  end
400
+
401
+ Wx.message_box(msg, "Numeric test result", Wx::OK | icon, self)
446
402
  end
447
- end
448
403
 
404
+ def on_password_entry(_event)
405
+
406
+ pwd = Wx.get_password_from_user("Enter password:",
407
+ "Password entry dialog",
408
+ "", self)
409
+ if pwd
410
+ Wx.message_box(sprintf("Your password is '%s'", pwd),
411
+ "Got password", Wx::OK | Wx::ICON_INFORMATION, self)
412
+ end
413
+ end
449
414
 
450
- def on_multi_choice(event)
451
415
 
452
- choices = %w[One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Seventeen]
416
+ def on_text_entry(_event)
453
417
 
454
- Wx::MultiChoiceDialog(self,
418
+ Wx.TextEntryDialog(self,
455
419
  "This is a small sample\n" +
456
- "A multi-choice convenience dialog",
457
- "Please select a value",
458
- choices, OK | CANCEL) do |dialog|
459
- if dialog.show_modal == ID_OK
460
- selections = dialog.get_selections
461
- if selections
462
- msg = ("You selected %d items:\n" % selections.length) +
463
- selections.length.times.collect { |n| "\t%d: %d (%s)\n" % [n, selections[n], choices[selections[n]]] }.join
464
- log_message(msg)
420
+ "A long, long string to test out the text entrybox",
421
+ "Please enter a string",
422
+ "Default value",
423
+ Wx::OK | Wx::CANCEL) do |dialog|
424
+ if dialog.show_modal == Wx::ID_OK
425
+ dialog2 = Wx::MessageDialog.new(self, dialog.get_value, "Got string")
426
+ dialog2.show_modal
427
+ dialog2.destroy
465
428
  end
466
429
  end
467
430
  end
468
- end
469
431
 
470
- def on_file_open(event)
432
+ def on_single_choice(_event)
471
433
 
472
- Wx::FileDialog(self,
473
- "Testing open file dialog",
474
- "",
475
- "",
476
- "C++ files (*.h;*.cpp)|*.h;*.cpp"
477
- ) do |dialog|
478
- dialog.set_directory(get_home_dir)
434
+ choices = %w[One Two Three Four Five]
479
435
 
480
- if dialog.show_modal == ID_OK
481
- info = sprintf("Full file name: %s\n" +
482
- "Path: %s\n" +
483
- "Name: %s",
484
- dialog.get_path,
485
- dialog.get_directory,
486
- dialog.get_filename)
487
- Wx::MessageDialog(self, info, "Selected file")
436
+ Wx.SingleChoiceDialog(self,
437
+ "This is a small sample\n" +
438
+ "A single-choice convenience dialog",
439
+ "Please select a value",
440
+ choices, Wx::OK | Wx::CANCEL) do |dialog|
441
+ dialog.set_selection(2)
442
+
443
+ if dialog.show_modal == Wx::ID_OK
444
+ Wx.MessageDialog(self, dialog.get_string_selection, "Got string")
445
+ end
488
446
  end
489
447
  end
490
- end
491
448
 
492
449
 
493
- # this shows how to take advantage of specifying a default extension in the
494
- # call to FileSelector: it is remembered after each new call and the next
495
- # one will use it by default
496
- def on_file_open2(event)
450
+ def on_multi_choice(_event)
497
451
 
498
- path = file_selector(
499
- "Select the file to load",
500
- "", "",
501
- @ext_def,
502
- "Waveform (*.wav)|*.wav|Plain text (*.txt)|*.txt|All files (*.*)|*.*",
503
- FD_CHANGE_DIR,
504
- self
505
- )
452
+ choices = %w[One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Seventeen]
506
453
 
507
- if path == nil
508
- return nil
454
+ Wx.MultiChoiceDialog(self,
455
+ "This is a small sample\n" +
456
+ "A multi-choice convenience dialog",
457
+ "Please select a value",
458
+ choices, Wx::OK | Wx::CANCEL) do |dialog|
459
+ if dialog.show_modal == Wx::ID_OK
460
+ selections = dialog.get_selections
461
+ if selections
462
+ msg = ("You selected %d items:\n" % selections.length) +
463
+ selections.length.times.collect { |n| "\t%d: %d (%s)\n" % [n, selections[n], choices[selections[n]]] }.join
464
+ Wx.log_message(msg)
465
+ end
466
+ end
467
+ end
509
468
  end
510
469
 
511
- # it is just a sample, would use SplitPath in real program
512
- @ext_def = path[/[^\.]*$/]
470
+ def on_file_open(_event)
471
+
472
+ Wx.FileDialog(self,
473
+ "Testing open file dialog",
474
+ "",
475
+ "",
476
+ "C++ files (*.h;*.cpp)|*.h;*.cpp") do |dialog|
477
+ dialog.set_directory(Wx.get_home_dir)
478
+
479
+ if dialog.show_modal == Wx::ID_OK
480
+ info = sprintf("Full file name: %s\n" +
481
+ "Path: %s\n" +
482
+ "Name: %s",
483
+ dialog.get_path,
484
+ dialog.get_directory,
485
+ dialog.get_filename)
486
+ Wx.MessageDialog(self, info, "Selected file")
487
+ end
488
+ end
489
+ end
513
490
 
514
- log_message("You selected the file '%s', remembered extension '%s'",
515
- path, @ext_def)
516
- end
517
491
 
492
+ # this shows how to take advantage of specifying a default extension in the
493
+ # call to FileSelector: it is remembered after each new call and the next
494
+ # one will use it by default
495
+ def on_file_open2(_event)
518
496
 
519
- def on_files_open(event)
520
- Wx::FileDialog(self, "Testing open multiple file dialog",
521
- "", "", FILE_SELECTOR_DEFAULT_WILDCARD_STR,
522
- FD_MULTIPLE) do |dialog|
523
- if dialog.show_modal == ID_OK
524
- paths = dialog.get_paths
525
- filenames = dialog.get_filenames
497
+ path = Wx.file_selector(
498
+ "Select the file to load",
499
+ "", "",
500
+ @ext_def,
501
+ "Waveform (*.wav)|*.wav|Plain text (*.txt)|*.txt|All files (*.*)|*.*",
502
+ Wx::FD_CHANGE_DIR,
503
+ self)
526
504
 
527
- count = paths.length
528
- msg = count.times.collect { |n| "File %d: %s (%s)\n" % [n, paths[n], filenames[n]] }.join
529
- Wx::MessageDialog(self, msg, "Selected files")
505
+ if path == nil
506
+ return nil
530
507
  end
531
- end
532
- end
533
508
 
509
+ # it is just a sample, would use SplitPath in real program
510
+ @ext_def = path[/[^.]*$/]
511
+
512
+ Wx.log_message("You selected the file '%s', remembered extension '%s'",
513
+ path, @ext_def)
514
+ end
534
515
 
535
- def on_file_save(event)
536
- Wx::FileDialog(self,
537
- "Testing save file dialog",
538
- "",
539
- "myletter.doc",
540
- "Text files (*.txt)|*.txt|Document files (*.doc)|*.doc",
541
- FD_SAVE | FD_OVERWRITE_PROMPT) do |dialog|
542
- dialog.set_filter_index(1)
543
516
 
544
- if dialog.show_modal == ID_OK
517
+ def on_files_open(_event)
518
+ Wx.FileDialog(self, "Testing open multiple file dialog",
519
+ "", "", Wx::FILE_SELECTOR_DEFAULT_WILDCARD_STR,
520
+ Wx::FD_MULTIPLE) do |dialog|
521
+ if dialog.show_modal == Wx::ID_OK
522
+ paths = dialog.get_paths
523
+ filenames = dialog.get_filenames
545
524
 
546
- log_message("%s, filter %d",
547
- dialog.get_path, dialog.get_filter_index)
525
+ count = paths.length
526
+ msg = count.times.collect { |n| "File %d: %s (%s)\n" % [n, paths[n], filenames[n]] }.join
527
+ Wx.MessageDialog(self, msg, "Selected files")
528
+ end
548
529
  end
549
530
  end
550
- end
551
531
 
552
- def on_dir_choose(event)
553
532
 
554
- # pass some initial dir to DirDialog
555
- dir_home = get_home_dir()
533
+ def on_file_save(_event)
534
+ Wx.FileDialog(self,
535
+ "Testing save file dialog",
536
+ "",
537
+ "myletter.doc",
538
+ "Text files (*.txt)|*.txt|Document files (*.doc)|*.doc",
539
+ Wx::FD_SAVE | Wx::FD_OVERWRITE_PROMPT) do |dialog|
540
+ dialog.set_filter_index(1)
556
541
 
557
- Wx::DirDialog(self, "Testing directory picker", dir_home) do |dialog|
558
- if dialog.show_modal == ID_OK
559
- log_message("Selected path: %s", dialog.get_path)
542
+ if dialog.show_modal == Wx::ID_OK
543
+
544
+ Wx.log_message("%s, filter %d",
545
+ dialog.get_path, dialog.get_filter_index)
546
+ end
560
547
  end
561
548
  end
562
- end
563
549
 
550
+ def on_dir_choose(_event)
564
551
 
565
- def on_modal_dlg(event)
566
- MyModalDialog(self)
567
- end
552
+ # pass some initial dir to DirDialog
553
+ dir_home = Wx.get_home_dir
568
554
 
569
- def on_modeless_dlg(event)
570
- show = get_menu_bar().is_checked(event.get_id())
571
- if show
572
- if !@dialog
573
- @dialog = MyModelessDialog.new(self)
555
+ Wx.DirDialog(self, "Testing directory picker", dir_home) do |dialog|
556
+ if dialog.show_modal == Wx::ID_OK
557
+ Wx.log_message("Selected path: %s", dialog.get_path)
558
+ end
574
559
  end
575
- @dialog.show(true)
576
- else # hide
577
- @dialog.destroy
578
- @dialog = nil
579
560
  end
580
- end
581
561
 
582
- def on_show_tip(event)
583
562
 
584
- if @index == -1
585
- @index = rand(5)
563
+ def on_modal_dlg(_event)
564
+ Dialogs.MyModalDialog(self)
586
565
  end
587
566
 
588
- tip_src = File.join( File.dirname(__FILE__), 'tips.txt')
589
- tip_provider = create_file_tip_provider(tip_src, @index)
590
-
591
- show_at_startup = show_tip(self, tip_provider)
592
-
593
- if show_at_startup
594
- message_box("Will show tips on startup", "Tips dialog",
595
- OK | ICON_INFORMATION, self)
567
+ def on_modeless_dlg(event)
568
+ show = get_menu_bar.is_checked(event.get_id)
569
+ if show
570
+ @dialog ||= Dialogs::MyModelessDialog.new(self)
571
+ @dialog.show(true)
572
+ else # hide
573
+ @dialog.destroy
574
+ @dialog = nil
575
+ end
596
576
  end
597
577
 
598
- @index = tip_provider.get_current_tip()
578
+ def on_show_tip(_event)
599
579
 
600
- end
580
+ if @index == -1
581
+ @index = rand(5)
582
+ end
601
583
 
602
- def on_show_custom_tip(event)
584
+ tip_src = File.join( File.dirname(__FILE__), 'tips.txt')
585
+ tip_provider = Wx.create_file_tip_provider(tip_src, @index)
603
586
 
604
- if @index_2 == -1
605
- @index_2 = rand(3)
606
- end
587
+ show_at_startup = Wx.show_tip(self, tip_provider)
588
+
589
+ if show_at_startup
590
+ Wx.message_box("Will show tips on startup", "Tips dialog",
591
+ Wx::OK | Wx::ICON_INFORMATION, self)
592
+ end
607
593
 
608
- tip_provider = MyTipProvider.new(@index_2)
609
- show_at_startup = show_tip(self, tip_provider)
594
+ @index = tip_provider.get_current_tip
610
595
 
611
- if show_at_startup
612
- message_box("Will show tips on startup", "Tips dialog",
613
- OK | ICON_INFORMATION, self)
614
596
  end
615
597
 
616
- @index_2 = tip_provider.get_current_tip()
598
+ def on_show_custom_tip(_event)
617
599
 
618
- end
600
+ if @index_2 == -1
601
+ @index_2 = rand(3)
602
+ end
619
603
 
620
- def on_exit(event)
621
- close(true)
622
- end
604
+ tip_provider = MyTipProvider.new(@index_2)
605
+ show_at_startup = Wx.show_tip(self, tip_provider)
623
606
 
607
+ if show_at_startup
608
+ Wx.message_box("Will show tips on startup", "Tips dialog",
609
+ Wx::OK | Wx::ICON_INFORMATION, self)
610
+ end
624
611
 
625
- def on_show_prefs(event)
626
- MyPrefsDialog(self, event.id)
627
- end
612
+ @index_2 = tip_provider.get_current_tip
628
613
 
629
- def on_show_progress(event)
630
- cont = false
631
- Wx::ProgressDialog("Progress dialog example",
632
- "An informative message\n"+"#{' '*100}\n\n\n\n",
633
- @max, # range
634
- self, # parent
635
- PD_CAN_ABORT | PD_CAN_SKIP | PD_APP_MODAL |
636
- PD_ELAPSED_TIME | PD_ESTIMATED_TIME |
637
- PD_REMAINING_TIME) do |dialog|
638
- cont = true
639
- i = 0
640
- while i <= @max
641
- if i == 0
642
- cont = dialog.update(i)
643
- elsif i == @max
644
- cont = dialog.update(i, "That's all, folks!\n\nNothing more to see here any more.")
645
- elsif i <= (@max / 2)
646
- cont = dialog.pulse("Testing indeterminate mode\n" +
647
- "\n" +
648
- "This mode allows you to show to the user\n" +
649
- "that something is going on even if you don't know\n" +
650
- "when exactly will you finish.")
651
- else
652
- cont = dialog.update(i, "Now in standard determinate mode\n" +
653
- "\n" +
654
- "This is the standard usage mode in which you\n" +
655
- "update the dialog after performing each new step of work.\n" +
656
- "It requires knowing the total number of steps in advance.")
657
- end
614
+ end
658
615
 
659
- if !cont
660
- if message_box("Do you really want to cancel?",
661
- "Progress dialog question", # caption
662
- YES_NO | ICON_QUESTION) == YES
663
- dialog.show(false)
664
- break
665
- end
666
- dialog.resume
667
- elsif cont == :skipped
668
- i += (@max / 4)
669
- i = @max-1 if i >= @max
670
- end
671
- sleep(i == 0 ? 1 : 0.15)
672
- i += 1
673
- end
616
+ def on_exit(_event)
617
+ close(true)
674
618
  end
675
619
 
676
- if !cont
677
- log_status("Progress dialog aborted!")
678
- else
679
- log_status("Countdown from %d finished", @max)
620
+
621
+ def on_show_prefs(event)
622
+ Dialogs.MyPrefsDialog(self, event.id)
680
623
  end
681
- end
682
624
 
683
- def on_show_busy_info(event)
684
- result = nil
685
- WindowDisabler.disable(self) do
686
- result = BusyInfo.busy("Working, please wait...", self) do |bi|
687
-
688
- for i in 0 ... 18
689
- Wx::get_app.yield()
690
- end
691
- sleep(1)
692
- bi.update_text('Working some more...')
693
- for i in 0 ... 18
694
- Wx::get_app.yield()
625
+ def on_show_progress(_event)
626
+ cont = false
627
+ Wx.ProgressDialog("Progress dialog example",
628
+ "An informative message\n"+"#{' '*100}\n\n\n\n",
629
+ @max, # range
630
+ self, # parent
631
+ Wx::PD_CAN_ABORT | Wx::PD_CAN_SKIP | Wx::PD_APP_MODAL |
632
+ Wx::PD_ELAPSED_TIME | Wx::PD_ESTIMATED_TIME |
633
+ Wx::PD_REMAINING_TIME) do |dialog|
634
+ cont = true
635
+ i = 0
636
+ while i <= @max
637
+ if i == 0
638
+ cont = dialog.update(i)
639
+ elsif i == @max
640
+ cont = dialog.update(i, "That's all, folks!\n\nNothing more to see here any more.")
641
+ elsif i <= (@max / 2)
642
+ cont = dialog.pulse("Testing indeterminate mode\n" +
643
+ "\n" +
644
+ "This mode allows you to show to the user\n" +
645
+ "that something is going on even if you don't know\n" +
646
+ "when exactly will you finish.")
647
+ else
648
+ cont = dialog.update(i, "Now in standard determinate mode\n" +
649
+ "\n" +
650
+ "This is the standard usage mode in which you\n" +
651
+ "update the dialog after performing each new step of work.\n" +
652
+ "It requires knowing the total number of steps in advance.")
653
+ end
654
+
655
+ if !cont
656
+ if Wx.message_box("Do you really want to cancel?",
657
+ "Progress dialog question", # caption
658
+ Wx::YES_NO | Wx::ICON_QUESTION) == Wx::YES
659
+ dialog.show(false)
660
+ break
661
+ end
662
+ dialog.resume
663
+ elsif cont == :skipped
664
+ i += (@max / 4)
665
+ i = @max-1 if i >= @max
666
+ end
667
+ sleep(i == 0 ? 1 : 0.15)
668
+ i += 1
695
669
  end
696
- sleep(1)
670
+ end
697
671
 
698
- 'Finished work!'
672
+ if !cont
673
+ Wx.log_status("Progress dialog aborted!")
674
+ else
675
+ Wx.log_status("Countdown from %d finished", @max)
699
676
  end
700
677
  end
701
- log_status(result)
702
- end
703
678
 
704
- def on_show_styled_busy_info(event)
705
- result = nil
706
- icon_file = File.join( File.dirname(__FILE__)+"/../art", "wxruby.png")
707
- WindowDisabler.disable(self) do
708
- bif = BusyInfoFlags.new.parent(self).icon(Wx::Icon.new(icon_file)).title("Busy window").text("Working, please wait...")
709
- result = BusyInfo.busy(bif) do |bi|
679
+ def on_show_busy_info(_event)
680
+ result = nil
681
+ Wx::WindowDisabler.disable(self) do
682
+ result = Wx::BusyInfo.busy("Working, please wait...", self) do |bi|
710
683
 
711
- for i in 0 ... 18
712
- Wx::get_app.yield()
713
- end
714
- sleep(1)
715
- bi.update_text('Working some more...')
716
- for i in 0 ... 18
717
- Wx::get_app.yield()
718
- end
719
- sleep(1)
684
+ 18.times { Wx.get_app.yield }
685
+ sleep(1)
686
+ bi.update_text('Working some more...')
687
+ 18.times { Wx.get_app.yield }
688
+ sleep(1)
720
689
 
721
- 'Finished work!'
690
+ 'Finished work!'
691
+ end
722
692
  end
693
+ Wx.log_status(result)
723
694
  end
724
- log_status(result)
725
- end
726
695
 
727
- def on_show_replace_dialog(event)
696
+ def on_show_styled_busy_info(_event)
697
+ result = nil
698
+ icon_file = File.join( File.dirname(__FILE__)+"/../art", "wxruby.png")
699
+ Wx::WindowDisabler.disable(self) do
700
+ bif = Wx::BusyInfoFlags.new.parent(self).icon(Wx::Icon.new(icon_file)).title("Busy window").text("Working, please wait...")
701
+ result = Wx::BusyInfo.busy(bif) do |bi|
728
702
 
729
- if @dlg_replace
730
- @dlg_replace.destroy
731
- @dlg_replace = nil
732
- else
733
- @dlg_replace = FindReplaceDialog.new(
734
- self,
735
- @find_data,
736
- "Find and replace dialog",
737
- FR_REPLACEDIALOG
738
- )
703
+ 18.times { Wx.get_app.yield }
704
+ sleep(1)
705
+ bi.update_text('Working some more...')
706
+ 18.times { Wx.get_app.yield }
707
+ sleep(1)
739
708
 
740
- @dlg_replace.show(true)
709
+ 'Finished work!'
710
+ end
711
+ end
712
+ Wx.log_status(result)
741
713
  end
742
- end
743
714
 
744
- def on_show_find_dialog(event)
715
+ def on_show_replace_dialog(_event)
745
716
 
746
- if @dlg_find
747
- @dlg_find.destroy
748
- @dlg_find = nil
749
- else
750
- @dlg_find = FindReplaceDialog.new(
751
- self,
752
- @find_data,
753
- "Find dialog", # just for testing
754
- FR_NOWHOLEWORD
755
- )
717
+ if @dlg_replace
718
+ @dlg_replace.destroy
719
+ @dlg_replace = nil
720
+ else
721
+ @dlg_replace = Wx::FindReplaceDialog.new(
722
+ self,
723
+ @find_data,
724
+ "Find and replace dialog",
725
+ Wx::FR_REPLACEDIALOG)
756
726
 
757
- @dlg_find.show(true)
727
+ @dlg_replace.show(true)
728
+ end
758
729
  end
759
- end
760
730
 
761
- def decode_find_dialog_event_flags(flags)
762
- str = ""
763
- str << ((flags & FR_DOWN) != 0 ? "down" : "up") << ", " \
764
- << ((flags & FR_WHOLEWORD) != 0 ? "whole words only, " : "") \
765
- << ((flags & FR_MATCHCASE) != 0 ? "" : "not ") \
766
- << "case sensitive"
731
+ def on_show_find_dialog(_event)
767
732
 
768
- return str
769
- end
770
-
771
- def on_find_dialog(event)
772
-
773
- type = event.get_event_type()
774
-
775
- if type == EVT_FIND || type == EVT_FIND_NEXT
776
- log_message("Find %s'%s' (flags: %s)",
777
- type == EVT_FIND_NEXT ? "next " : "",
778
- event.get_find_string(),
779
- decode_find_dialog_event_flags(event.get_flags()))
780
- elsif type == EVT_FIND_REPLACE || type == EVT_FIND_REPLACE_ALL
781
- log_message("Replace %s'%s' with '%s' (flags: %s)",
782
- type == EVT_FIND_REPLACE_ALL ? "all " : "",
783
- event.get_find_string(),
784
- event.get_replace_string(),
785
- decode_find_dialog_event_flags(event.get_flags()))
786
- elsif type == EVT_FIND_CLOSE
787
- dlg = event.get_dialog()
788
- if dlg == @dlg_find
789
- txt = "Find"
790
- id_menu = DIALOGS_FIND
733
+ if @dlg_find
734
+ @dlg_find.destroy
791
735
  @dlg_find = nil
792
- elsif dlg == @dlg_replace
793
- txt = "Replace"
794
- id_menu = DIALOGS_REPLACE
795
- @dlg_replace = nil
796
736
  else
797
- txt = "Unknown"
798
- id_menu = -1
799
- log_error("unexpected event")
737
+ @dlg_find = Wx::FindReplaceDialog.new(
738
+ self,
739
+ @find_data,
740
+ "Find dialog", # just for testing
741
+ Wx::FR_NOWHOLEWORD)
742
+
743
+ @dlg_find.show(true)
800
744
  end
745
+ end
801
746
 
802
- log_message("%s dialog is being closed.", txt)
747
+ def decode_find_dialog_event_flags(flags)
748
+ str = ""
749
+ str << ((flags & Wx::FR_DOWN) != 0 ? "down" : "up") << ", " \
750
+ << ((flags & Wx::FR_WHOLEWORD) != 0 ? "whole words only, " : "") \
751
+ << ((flags & Wx::FR_MATCHCASE) != 0 ? "" : "not ") \
752
+ << "case sensitive"
803
753
 
804
- if id_menu != -1
805
- get_menu_bar().check(id_menu, false)
806
- end
754
+ str
755
+ end
756
+
757
+ def on_find_dialog(event)
758
+
759
+ type = event.get_event_type
760
+
761
+ if type == Wx::EVT_FIND || type == Wx::EVT_FIND_NEXT
762
+ Wx.log_message("Find %s'%s' (flags: %s)",
763
+ type == Wx::EVT_FIND_NEXT ? "next " : "",
764
+ event.get_find_string,
765
+ decode_find_dialog_event_flags(event.get_flags))
766
+ elsif type == Wx::EVT_FIND_REPLACE || type == Wx::EVT_FIND_REPLACE_ALL
767
+ Wx.log_message("Replace %s'%s' with '%s' (flags: %s)",
768
+ type == Wx::EVT_FIND_REPLACE_ALL ? "all " : "",
769
+ event.get_find_string,
770
+ event.get_replace_string,
771
+ decode_find_dialog_event_flags(event.get_flags))
772
+ elsif type == Wx::EVT_FIND_CLOSE
773
+ dlg = event.get_dialog
774
+ if dlg == @dlg_find
775
+ txt = "Find"
776
+ id_menu = DIALOGS_FIND
777
+ @dlg_find = nil
778
+ elsif dlg == @dlg_replace
779
+ txt = "Replace"
780
+ id_menu = DIALOGS_REPLACE
781
+ @dlg_replace = nil
782
+ else
783
+ txt = "Unknown"
784
+ id_menu = -1
785
+ Wx.log_error("unexpected event")
786
+ end
787
+
788
+ Wx.log_message("%s dialog is being closed.", txt)
789
+
790
+ if id_menu != -1
791
+ get_menu_bar.check(id_menu, false)
792
+ end
807
793
 
808
- dlg.destroy()
809
- else
810
- log_error("Unknown find dialog event!")
794
+ dlg.destroy
795
+ else
796
+ Wx.log_error("Unknown find dialog event!")
797
+ end
811
798
  end
799
+
812
800
  end
813
801
 
814
- end
815
802
 
803
+ class MyApp < Wx::App
816
804
 
817
- class MyApp < App
805
+ class << self
806
+ attr_accessor :canvas
807
+ end
818
808
 
819
- class << self
820
- attr_accessor :canvas
821
- end
809
+ attr_accessor :canvas_text_colour, :canvas_font
810
+
811
+ def on_init
812
+ self.canvas_text_colour = Wx::Colour.new("BLACK")
813
+ self.canvas_font = Wx::NORMAL_FONT
814
+ # Create the main frame window
815
+ frame = MyFrame.new(nil, "Windows dialogs example",
816
+ [20, 20], [400, 300])
817
+ gc_stress
818
+ # Make a menubar
819
+ file_menu = Wx::Menu.new
820
+
821
+ file_menu.append(DIALOGS_CHOOSE_COLOUR, "&Choose colour")
822
+ file_menu.append_separator
823
+ file_menu.append(DIALOGS_CHOOSE_FONT, "Choose &font")
824
+ file_menu.append_separator
825
+ file_menu.append(DIALOGS_LOG_DIALOG, "&Log dialog\tCtrl-L")
826
+ file_menu.append(DIALOGS_MESSAGE_BOX, "&Message box\tCtrl-M")
827
+ file_menu.append(DIALOGS_TEXT_ENTRY, "Text &entry\tCtrl-E")
828
+ file_menu.append(DIALOGS_PASSWORD_ENTRY, "&Password entry\tCtrl-P")
829
+ file_menu.append(DIALOGS_NUM_ENTRY, "&Numeric entry\tCtrl-N")
830
+ file_menu.append(DIALOGS_SINGLE_CHOICE, "&Single choice\tCtrl-C")
831
+ file_menu.append(DIALOGS_MULTI_CHOICE, "M&ultiple choice\tCtrl-U")
832
+ file_menu.append_separator
833
+ file_menu.append(DIALOGS_TIP, "&Tip of the day\tCtrl-T")
834
+ file_menu.append(DIALOGS_CUSTOM_TIP, "Custom tip of the day")
835
+ file_menu.append_separator
836
+ file_menu.append(DIALOGS_FILE_OPEN, "&Open file\tCtrl-O")
837
+ file_menu.append(DIALOGS_FILE_OPEN2, "&Second open file\tCtrl-2")
838
+ file_menu.append(DIALOGS_FILES_OPEN, "Open &files\tShift-Ctrl-O")
839
+ file_menu.append(DIALOGS_FILE_SAVE, "Sa&ve file\tCtrl-S")
840
+ file_menu.append(DIALOGS_DIR_CHOOSE, "Choose a &directory\tCtrl-D")
841
+ file_menu.append(DIALOGS_PROGRESS, "Pro&gress dialog\tCtrl-G")
842
+ file_menu.append(DIALOGS_BUSYINFO, "&Busy info dialog\tCtrl-B")
843
+ file_menu.append(DIALOGS_STYLED_BUSYINFO, "Styled BusyInfo dialog")
844
+ file_menu.append(DIALOGS_PREFS, "Standard propert&y sheet dialog\tCtrl-Y")
845
+ file_menu.append(DIALOGS_PREFS_TOOLBOOK, "&Toolbook property sheet dialog\tShift-Ctrl-Y")
846
+ file_menu.append(DIALOGS_FIND, "&Find dialog\tCtrl-F", "", Wx::ITEM_CHECK)
847
+ file_menu.append(DIALOGS_REPLACE, "Find and &replace dialog\tShift-Ctrl-F", "", Wx::ITEM_CHECK)
848
+
849
+ file_menu.append_separator
850
+ file_menu.append(DIALOGS_MODAL, "Mo&dal dialog\tCtrl-W")
851
+ file_menu.append(DIALOGS_MODELESS, "Modeless &dialog\tCtrl-Z", "", Wx::ITEM_CHECK)
852
+ file_menu.append_separator
853
+ file_menu.append(Wx::ID_EXIT, "E&xit\tAlt-X")
854
+ menu_bar = Wx::MenuBar.new
855
+ menu_bar.append(file_menu, "&File")
856
+ frame.set_menu_bar(menu_bar)
857
+
858
+ MyApp.canvas = MyCanvas.new(frame)
859
+ MyApp.canvas.set_background_colour(Wx::WHITE)
860
+
861
+ frame.centre(Wx::BOTH)
862
+
863
+ # Show the frame
864
+ frame.show
865
+ end
822
866
 
823
- attr_accessor :canvas_text_colour, :canvas_font
824
-
825
- def on_init
826
- self.canvas_text_colour = Wx::Colour.new("BLACK")
827
- self.canvas_font = Wx::NORMAL_FONT
828
- # Create the main frame window
829
- frame = MyFrame.new(nil, "Windows dialogs example",
830
- Point.new(20, 20), Size.new(400, 300))
831
- gc_stress
832
- # Make a menubar
833
- file_menu = Menu.new
834
-
835
- file_menu.append(DIALOGS_CHOOSE_COLOUR, "&Choose colour")
836
- file_menu.append_separator()
837
- file_menu.append(DIALOGS_CHOOSE_FONT, "Choose &font")
838
- file_menu.append_separator()
839
- file_menu.append(DIALOGS_LOG_DIALOG, "&Log dialog\tCtrl-L")
840
- file_menu.append(DIALOGS_MESSAGE_BOX, "&Message box\tCtrl-M")
841
- file_menu.append(DIALOGS_TEXT_ENTRY, "Text &entry\tCtrl-E")
842
- file_menu.append(DIALOGS_PASSWORD_ENTRY, "&Password entry\tCtrl-P")
843
- file_menu.append(DIALOGS_NUM_ENTRY, "&Numeric entry\tCtrl-N")
844
- file_menu.append(DIALOGS_SINGLE_CHOICE, "&Single choice\tCtrl-C")
845
- file_menu.append(DIALOGS_MULTI_CHOICE, "M&ultiple choice\tCtrl-U")
846
- file_menu.append_separator()
847
- file_menu.append(DIALOGS_TIP, "&Tip of the day\tCtrl-T")
848
- file_menu.append(DIALOGS_CUSTOM_TIP, "Custom tip of the day")
849
- file_menu.append_separator()
850
- file_menu.append(DIALOGS_FILE_OPEN, "&Open file\tCtrl-O")
851
- file_menu.append(DIALOGS_FILE_OPEN2, "&Second open file\tCtrl-2")
852
- file_menu.append(DIALOGS_FILES_OPEN, "Open &files\tShift-Ctrl-O")
853
- file_menu.append(DIALOGS_FILE_SAVE, "Sa&ve file\tCtrl-S")
854
- file_menu.append(DIALOGS_DIR_CHOOSE, "Choose a &directory\tCtrl-D")
855
- file_menu.append(DIALOGS_PROGRESS, "Pro&gress dialog\tCtrl-G")
856
- file_menu.append(DIALOGS_BUSYINFO, "&Busy info dialog\tCtrl-B")
857
- file_menu.append(DIALOGS_STYLED_BUSYINFO, "Styled BusyInfo dialog")
858
- file_menu.append(DIALOGS_PREFS, "Standard propert&y sheet dialog\tCtrl-Y")
859
- file_menu.append(DIALOGS_PREFS_TOOLBOOK, "&Toolbook property sheet dialog\tShift-Ctrl-Y")
860
- file_menu.append(DIALOGS_FIND, "&Find dialog\tCtrl-F", "", ITEM_CHECK)
861
- file_menu.append(DIALOGS_REPLACE, "Find and &replace dialog\tShift-Ctrl-F", "", ITEM_CHECK)
862
-
863
- file_menu.append_separator()
864
- file_menu.append(DIALOGS_MODAL, "Mo&dal dialog\tCtrl-W")
865
- file_menu.append(DIALOGS_MODELESS, "Modeless &dialog\tCtrl-Z", "", ITEM_CHECK)
866
- file_menu.append_separator()
867
- file_menu.append(ID_EXIT, "E&xit\tAlt-X")
868
- menu_bar = MenuBar.new
869
- menu_bar.append(file_menu, "&File")
870
- frame.set_menu_bar(menu_bar)
871
-
872
- MyApp.canvas = MyCanvas.new(frame)
873
- MyApp.canvas.set_background_colour(WHITE)
874
-
875
- frame.centre(BOTH)
876
-
877
- # Show the frame
878
- frame.show
867
+ def on_exit
868
+ MyApp.canvas = nil
869
+ end
879
870
  end
880
871
 
881
- def on_exit
882
- MyApp.canvas = nil
883
- end
884
872
  end
885
873
 
886
874
  module DialogsSample
@@ -898,7 +886,7 @@ module DialogsSample
898
886
  end
899
887
 
900
888
  if $0 == __FILE__
901
- MyApp.run
889
+ Dialogs::MyApp.run
902
890
  end
903
891
 
904
892
  end