rwx 0.0.1.dev

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 (376) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +49 -0
  3. data/COPYING +0 -0
  4. data/README.rdoc +0 -0
  5. data/Rakefile +100 -0
  6. data/VERSION +1 -0
  7. data/ext/extconf.rb +112 -0
  8. data/ext/main.cpp +432 -0
  9. data/ext/main.hpp +454 -0
  10. data/ext/rwx.cpp +472 -0
  11. data/ext/wxAboutDlg.cpp +213 -0
  12. data/ext/wxAboutDlg.hpp +19 -0
  13. data/ext/wxAnyButton.cpp +141 -0
  14. data/ext/wxAnyButton.hpp +17 -0
  15. data/ext/wxAnyChoiceDialog.cpp +93 -0
  16. data/ext/wxAnyChoiceDialog.hpp +19 -0
  17. data/ext/wxApp.cpp +205 -0
  18. data/ext/wxApp.hpp +48 -0
  19. data/ext/wxAui.hpp +19 -0
  20. data/ext/wxAuiBook.cpp +453 -0
  21. data/ext/wxAuiBook.hpp +21 -0
  22. data/ext/wxAuiManager.cpp +79 -0
  23. data/ext/wxAuiManager.hpp +18 -0
  24. data/ext/wxAuiPane.cpp +343 -0
  25. data/ext/wxAuiPane.hpp +29 -0
  26. data/ext/wxAuiToolBar.cpp +47 -0
  27. data/ext/wxAuiToolBar.hpp +17 -0
  28. data/ext/wxBitmap.cpp +368 -0
  29. data/ext/wxBitmap.hpp +60 -0
  30. data/ext/wxBitmapButton.cpp +82 -0
  31. data/ext/wxBitmapButton.hpp +17 -0
  32. data/ext/wxBitmapComboBox.cpp +284 -0
  33. data/ext/wxBitmapComboBox.hpp +22 -0
  34. data/ext/wxBitmapToggleButton.cpp +82 -0
  35. data/ext/wxBitmapToggleButton.hpp +17 -0
  36. data/ext/wxBookCtrl.cpp +633 -0
  37. data/ext/wxBookCtrl.hpp +22 -0
  38. data/ext/wxBoxSizer.cpp +60 -0
  39. data/ext/wxBoxSizer.hpp +17 -0
  40. data/ext/wxBrush.cpp +281 -0
  41. data/ext/wxBrush.hpp +28 -0
  42. data/ext/wxButton.cpp +85 -0
  43. data/ext/wxButton.hpp +17 -0
  44. data/ext/wxButtonToolBar.cpp +54 -0
  45. data/ext/wxButtonToolBar.hpp +21 -0
  46. data/ext/wxCalendarCtrl.cpp +91 -0
  47. data/ext/wxCalendarCtrl.hpp +17 -0
  48. data/ext/wxCalendarCtrlBase.cpp +55 -0
  49. data/ext/wxCalendarCtrlBase.hpp +26 -0
  50. data/ext/wxCalendarCtrlGeneric.cpp +102 -0
  51. data/ext/wxCalendarCtrlGeneric.hpp +21 -0
  52. data/ext/wxCheckBox.cpp +157 -0
  53. data/ext/wxCheckBox.hpp +17 -0
  54. data/ext/wxCheckListBox.cpp +191 -0
  55. data/ext/wxCheckListBox.hpp +20 -0
  56. data/ext/wxChoice.cpp +133 -0
  57. data/ext/wxChoice.hpp +30 -0
  58. data/ext/wxChoiceBook.cpp +90 -0
  59. data/ext/wxChoiceBook.hpp +23 -0
  60. data/ext/wxCollapsiblePane.cpp +110 -0
  61. data/ext/wxCollapsiblePane.hpp +21 -0
  62. data/ext/wxColor.cpp +435 -0
  63. data/ext/wxColor.hpp +38 -0
  64. data/ext/wxColorDialog.cpp +97 -0
  65. data/ext/wxColorDialog.hpp +19 -0
  66. data/ext/wxColorPicker.cpp +131 -0
  67. data/ext/wxColorPicker.hpp +20 -0
  68. data/ext/wxColorPickerWidget.cpp +105 -0
  69. data/ext/wxColorPickerWidget.hpp +20 -0
  70. data/ext/wxComboBox.cpp +214 -0
  71. data/ext/wxComboBox.hpp +22 -0
  72. data/ext/wxCommandEvent.cpp +45 -0
  73. data/ext/wxCommandEvent.hpp +16 -0
  74. data/ext/wxConfig.cpp +19 -0
  75. data/ext/wxConfig.hpp +17 -0
  76. data/ext/wxContextHelpButton.cpp +93 -0
  77. data/ext/wxContextHelpButton.hpp +21 -0
  78. data/ext/wxControl.cpp +90 -0
  79. data/ext/wxControl.hpp +15 -0
  80. data/ext/wxCursor.cpp +108 -0
  81. data/ext/wxCursor.hpp +25 -0
  82. data/ext/wxDC.cpp +252 -0
  83. data/ext/wxDC.hpp +18 -0
  84. data/ext/wxDataView.cpp +224 -0
  85. data/ext/wxDataView.hpp +45 -0
  86. data/ext/wxDataViewList.cpp +190 -0
  87. data/ext/wxDataViewList.hpp +17 -0
  88. data/ext/wxDatePicker.cpp +103 -0
  89. data/ext/wxDatePicker.hpp +22 -0
  90. data/ext/wxDialog.cpp +120 -0
  91. data/ext/wxDialog.hpp +17 -0
  92. data/ext/wxDirDialog.cpp +152 -0
  93. data/ext/wxDirDialog.hpp +20 -0
  94. data/ext/wxDirPicker.cpp +134 -0
  95. data/ext/wxDirPicker.hpp +28 -0
  96. data/ext/wxDirPickerWidget.cpp +127 -0
  97. data/ext/wxDirPickerWidget.hpp +20 -0
  98. data/ext/wxError.cpp +67 -0
  99. data/ext/wxError.hpp +17 -0
  100. data/ext/wxEvent.cpp +60 -0
  101. data/ext/wxEvent.hpp +17 -0
  102. data/ext/wxEvtHandler.cpp +291 -0
  103. data/ext/wxEvtHandler.hpp +85 -0
  104. data/ext/wxFileCtrl.cpp +98 -0
  105. data/ext/wxFileCtrl.hpp +17 -0
  106. data/ext/wxFileCtrlBase.cpp +219 -0
  107. data/ext/wxFileCtrlBase.hpp +33 -0
  108. data/ext/wxFileCtrlGeneric.cpp +106 -0
  109. data/ext/wxFileCtrlGeneric.hpp +19 -0
  110. data/ext/wxFileDialog.cpp +268 -0
  111. data/ext/wxFileDialog.hpp +19 -0
  112. data/ext/wxFileDirPicker.cpp +89 -0
  113. data/ext/wxFileDirPicker.hpp +29 -0
  114. data/ext/wxFileHistory.cpp +134 -0
  115. data/ext/wxFileHistory.hpp +20 -0
  116. data/ext/wxFilePicker.cpp +160 -0
  117. data/ext/wxFilePicker.hpp +28 -0
  118. data/ext/wxFilePickerWidget.cpp +139 -0
  119. data/ext/wxFilePickerWidget.hpp +20 -0
  120. data/ext/wxFont.cpp +542 -0
  121. data/ext/wxFont.hpp +37 -0
  122. data/ext/wxFontDialog.cpp +143 -0
  123. data/ext/wxFontDialog.hpp +21 -0
  124. data/ext/wxFontPicker.cpp +160 -0
  125. data/ext/wxFontPicker.hpp +21 -0
  126. data/ext/wxFontPickerWidget.cpp +128 -0
  127. data/ext/wxFontPickerWidget.hpp +20 -0
  128. data/ext/wxFrame.cpp +274 -0
  129. data/ext/wxFrame.hpp +17 -0
  130. data/ext/wxGauge.cpp +167 -0
  131. data/ext/wxGauge.hpp +17 -0
  132. data/ext/wxGrid.cpp +250 -0
  133. data/ext/wxGrid.hpp +43 -0
  134. data/ext/wxGridCellAttr.cpp +68 -0
  135. data/ext/wxGridCellAttr.hpp +26 -0
  136. data/ext/wxGridCellRenderer.cpp +120 -0
  137. data/ext/wxGridCellRenderer.hpp +30 -0
  138. data/ext/wxGridTable.cpp +111 -0
  139. data/ext/wxGridTable.hpp +47 -0
  140. data/ext/wxHyperLink.cpp +148 -0
  141. data/ext/wxHyperLink.hpp +20 -0
  142. data/ext/wxImage.cpp +884 -0
  143. data/ext/wxImage.hpp +24 -0
  144. data/ext/wxInfoBar.cpp +85 -0
  145. data/ext/wxInfoBar.hpp +21 -0
  146. data/ext/wxInfoBarBase.cpp +145 -0
  147. data/ext/wxInfoBarBase.hpp +21 -0
  148. data/ext/wxInfoBarGeneric.cpp +90 -0
  149. data/ext/wxInfoBarGeneric.hpp +21 -0
  150. data/ext/wxItemContainer.cpp +313 -0
  151. data/ext/wxItemContainer.hpp +17 -0
  152. data/ext/wxKeyEvent.cpp +35 -0
  153. data/ext/wxKeyEvent.hpp +16 -0
  154. data/ext/wxListBook.cpp +90 -0
  155. data/ext/wxListBook.hpp +21 -0
  156. data/ext/wxListBox.cpp +290 -0
  157. data/ext/wxListBox.hpp +29 -0
  158. data/ext/wxMenu.cpp +600 -0
  159. data/ext/wxMenu.hpp +17 -0
  160. data/ext/wxMenuBar.cpp +180 -0
  161. data/ext/wxMenuBar.hpp +17 -0
  162. data/ext/wxMenuItem.cpp +174 -0
  163. data/ext/wxMenuItem.hpp +17 -0
  164. data/ext/wxMessageDialog.cpp +91 -0
  165. data/ext/wxMessageDialog.hpp +19 -0
  166. data/ext/wxMessageDialogBase.cpp +152 -0
  167. data/ext/wxMessageDialogBase.hpp +18 -0
  168. data/ext/wxMessageDialogGeneric.cpp +91 -0
  169. data/ext/wxMessageDialogGeneric.hpp +19 -0
  170. data/ext/wxMouseEvent.cpp +60 -0
  171. data/ext/wxMouseEvent.hpp +16 -0
  172. data/ext/wxMultiChoiceDialog.cpp +143 -0
  173. data/ext/wxMultiChoiceDialog.hpp +19 -0
  174. data/ext/wxNoteBook.cpp +89 -0
  175. data/ext/wxNoteBook.hpp +21 -0
  176. data/ext/wxNotifyEvent.cpp +45 -0
  177. data/ext/wxNotifyEvent.hpp +16 -0
  178. data/ext/wxNumberEntryDialog.cpp +131 -0
  179. data/ext/wxNumberEntryDialog.hpp +20 -0
  180. data/ext/wxPalette.cpp +214 -0
  181. data/ext/wxPalette.hpp +24 -0
  182. data/ext/wxPanel.cpp +77 -0
  183. data/ext/wxPanel.hpp +19 -0
  184. data/ext/wxPasswordEntryDialog.cpp +141 -0
  185. data/ext/wxPasswordEntryDialog.hpp +20 -0
  186. data/ext/wxPen.cpp +323 -0
  187. data/ext/wxPen.hpp +37 -0
  188. data/ext/wxPickerBase.cpp +121 -0
  189. data/ext/wxPickerBase.hpp +28 -0
  190. data/ext/wxPoint.cpp +224 -0
  191. data/ext/wxPoint.hpp +40 -0
  192. data/ext/wxPreferences.cpp +149 -0
  193. data/ext/wxPreferences.hpp +18 -0
  194. data/ext/wxProgressDialog.cpp +171 -0
  195. data/ext/wxProgressDialog.hpp +20 -0
  196. data/ext/wxProperty.cpp +723 -0
  197. data/ext/wxProperty.hpp +16 -0
  198. data/ext/wxPropertyCell.cpp +99 -0
  199. data/ext/wxPropertyCell.hpp +16 -0
  200. data/ext/wxPropertyGrid.cpp +234 -0
  201. data/ext/wxPropertyGrid.hpp +20 -0
  202. data/ext/wxPropertyGridInterface.cpp +146 -0
  203. data/ext/wxPropertyGridInterface.hpp +33 -0
  204. data/ext/wxPropertyGridManager.cpp +257 -0
  205. data/ext/wxPropertyGridManager.hpp +20 -0
  206. data/ext/wxPropertyGridPage.cpp +65 -0
  207. data/ext/wxPropertyGridPage.hpp +20 -0
  208. data/ext/wxRadioBox.cpp +405 -0
  209. data/ext/wxRadioBox.hpp +20 -0
  210. data/ext/wxRadioButton.cpp +107 -0
  211. data/ext/wxRadioButton.hpp +16 -0
  212. data/ext/wxRearrangeCtrl.cpp +89 -0
  213. data/ext/wxRearrangeCtrl.hpp +20 -0
  214. data/ext/wxRearrangeDialog.cpp +122 -0
  215. data/ext/wxRearrangeDialog.hpp +20 -0
  216. data/ext/wxRearrangeList.cpp +94 -0
  217. data/ext/wxRearrangeList.hpp +20 -0
  218. data/ext/wxRect.cpp +281 -0
  219. data/ext/wxRect.hpp +29 -0
  220. data/ext/wxRichMessageDialog.cpp +91 -0
  221. data/ext/wxRichMessageDialog.hpp +21 -0
  222. data/ext/wxRichTextAttr.cpp +69 -0
  223. data/ext/wxRichTextAttr.hpp +28 -0
  224. data/ext/wxRichTextCtrl.cpp +484 -0
  225. data/ext/wxRichTextCtrl.hpp +21 -0
  226. data/ext/wxRichTextStyle.cpp +86 -0
  227. data/ext/wxRichTextStyle.hpp +25 -0
  228. data/ext/wxRichTextStyleSheet.cpp +497 -0
  229. data/ext/wxRichTextStyleSheet.hpp +21 -0
  230. data/ext/wxSTC.cpp +331 -0
  231. data/ext/wxSTC.hpp +21 -0
  232. data/ext/wxScrollEvent.cpp +43 -0
  233. data/ext/wxScrollEvent.hpp +16 -0
  234. data/ext/wxSearchCtrl.cpp +189 -0
  235. data/ext/wxSearchCtrl.hpp +21 -0
  236. data/ext/wxSimpleBook.cpp +89 -0
  237. data/ext/wxSimpleBook.hpp +21 -0
  238. data/ext/wxSingleChoiceDialog.cpp +147 -0
  239. data/ext/wxSingleChoiceDialog.hpp +19 -0
  240. data/ext/wxSize.cpp +206 -0
  241. data/ext/wxSize.hpp +32 -0
  242. data/ext/wxSizer.cpp +368 -0
  243. data/ext/wxSizer.hpp +23 -0
  244. data/ext/wxSizerItem.cpp +37 -0
  245. data/ext/wxSizerItem.hpp +18 -0
  246. data/ext/wxSlider.cpp +204 -0
  247. data/ext/wxSlider.hpp +21 -0
  248. data/ext/wxSpinButton.cpp +158 -0
  249. data/ext/wxSpinButton.hpp +20 -0
  250. data/ext/wxSpinCtrl.cpp +132 -0
  251. data/ext/wxSpinCtrl.hpp +21 -0
  252. data/ext/wxStartUpTip.cpp +44 -0
  253. data/ext/wxStartUpTip.hpp +16 -0
  254. data/ext/wxStaticBitmap.cpp +79 -0
  255. data/ext/wxStaticBitmap.hpp +17 -0
  256. data/ext/wxStaticBitmapBase.cpp +46 -0
  257. data/ext/wxStaticBitmapBase.hpp +22 -0
  258. data/ext/wxStaticBitmapGeneric.cpp +82 -0
  259. data/ext/wxStaticBitmapGeneric.hpp +17 -0
  260. data/ext/wxStaticBox.cpp +92 -0
  261. data/ext/wxStaticBox.hpp +22 -0
  262. data/ext/wxStaticLine.cpp +100 -0
  263. data/ext/wxStaticLine.hpp +22 -0
  264. data/ext/wxStaticText.cpp +82 -0
  265. data/ext/wxStaticText.hpp +21 -0
  266. data/ext/wxStatusBar.cpp +417 -0
  267. data/ext/wxStatusBar.hpp +17 -0
  268. data/ext/wxStream.cpp +41 -0
  269. data/ext/wxStream.hpp +46 -0
  270. data/ext/wxTaskBar.cpp +104 -0
  271. data/ext/wxTaskBar.hpp +41 -0
  272. data/ext/wxTextArea.cpp +141 -0
  273. data/ext/wxTextArea.hpp +21 -0
  274. data/ext/wxTextAttr.cpp +320 -0
  275. data/ext/wxTextAttr.hpp +28 -0
  276. data/ext/wxTextCtrl.cpp +177 -0
  277. data/ext/wxTextCtrl.hpp +30 -0
  278. data/ext/wxTextEntry.cpp +248 -0
  279. data/ext/wxTextEntry.hpp +19 -0
  280. data/ext/wxTextEntryDialog.cpp +133 -0
  281. data/ext/wxTextEntryDialog.hpp +20 -0
  282. data/ext/wxTimePicker.cpp +105 -0
  283. data/ext/wxTimePicker.hpp +22 -0
  284. data/ext/wxTimer.cpp +106 -0
  285. data/ext/wxTimer.hpp +16 -0
  286. data/ext/wxToggleButton.cpp +96 -0
  287. data/ext/wxToggleButton.hpp +21 -0
  288. data/ext/wxToolBar.cpp +85 -0
  289. data/ext/wxToolBar.hpp +17 -0
  290. data/ext/wxToolBarBase.cpp +615 -0
  291. data/ext/wxToolBarBase.hpp +17 -0
  292. data/ext/wxToolBarTool.cpp +179 -0
  293. data/ext/wxToolBarTool.hpp +16 -0
  294. data/ext/wxToolBook.cpp +96 -0
  295. data/ext/wxToolBook.hpp +23 -0
  296. data/ext/wxToplevel.cpp +125 -0
  297. data/ext/wxToplevel.hpp +25 -0
  298. data/ext/wxTreeBook.cpp +240 -0
  299. data/ext/wxTreeBook.hpp +21 -0
  300. data/ext/wxTreeCtrl.cpp +443 -0
  301. data/ext/wxTreeCtrl.hpp +66 -0
  302. data/ext/wxVariant.cpp +65 -0
  303. data/ext/wxVariant.hpp +17 -0
  304. data/ext/wxWindow.cpp +980 -0
  305. data/ext/wxWindow.hpp +35 -0
  306. data/ext/wxWizard.cpp +321 -0
  307. data/ext/wxWizard.hpp +19 -0
  308. data/ext/wxWizardPage.cpp +137 -0
  309. data/ext/wxWizardPage.hpp +38 -0
  310. data/ext/wxXRC.cpp +48 -0
  311. data/ext/wxXRC.hpp +21 -0
  312. data/old_tests/button.rb +56 -0
  313. data/old_tests/file.png +0 -0
  314. data/old_tests/green.xpm +25 -0
  315. data/old_tests/new16x16.png +0 -0
  316. data/old_tests/project.xml +10 -0
  317. data/old_tests/propertygrid.rb +51 -0
  318. data/old_tests/red.xpm +25 -0
  319. data/old_tests/ruby32x32.png +0 -0
  320. data/old_tests/status.rb +45 -0
  321. data/old_tests/test.rb +580 -0
  322. data/old_tests/wizard.xrc +40 -0
  323. data/old_tests/xrc.rb +38 -0
  324. data/rwx.gemspec +43 -0
  325. data/samples/controls/controls.rb +143 -0
  326. data/samples/controls/icons/choice.bmp +0 -0
  327. data/samples/controls/icons/choice.xpm +27 -0
  328. data/samples/controls/icons/combo.bmp +0 -0
  329. data/samples/controls/icons/combo.xpm +27 -0
  330. data/samples/controls/icons/gauge.bmp +0 -0
  331. data/samples/controls/icons/gauge.xpm +27 -0
  332. data/samples/controls/icons/list.bmp +0 -0
  333. data/samples/controls/icons/list.xpm +27 -0
  334. data/samples/controls/icons/radio.bmp +0 -0
  335. data/samples/controls/icons/radio.xpm +27 -0
  336. data/samples/controls/icons/stattext.xpm +24 -0
  337. data/samples/controls/icons/text.bmp +0 -0
  338. data/samples/controls/icons/text.xpm +27 -0
  339. data/samples/dialog/dialog_sample.rb +227 -0
  340. data/samples/sample.xpm +44 -0
  341. data/samples/widgets/icons/bmpbtn.xpm +37 -0
  342. data/samples/widgets/icons/bmpcombobox.xpm +54 -0
  343. data/samples/widgets/icons/button.xpm +54 -0
  344. data/samples/widgets/icons/checkbox.xpm +54 -0
  345. data/samples/widgets/icons/choice.xpm +27 -0
  346. data/samples/widgets/icons/choicebk.xpm +54 -0
  347. data/samples/widgets/icons/clrpicker.xpm +193 -0
  348. data/samples/widgets/icons/combobox.xpm +54 -0
  349. data/samples/widgets/icons/datepick.xpm +200 -0
  350. data/samples/widgets/icons/dirctrl.xpm +54 -0
  351. data/samples/widgets/icons/dirpicker.xpm +213 -0
  352. data/samples/widgets/icons/filepicker.xpm +214 -0
  353. data/samples/widgets/icons/fontpicker.xpm +185 -0
  354. data/samples/widgets/icons/gauge.xpm +54 -0
  355. data/samples/widgets/icons/hyperlnk.xpm +54 -0
  356. data/samples/widgets/icons/listbook.xpm +54 -0
  357. data/samples/widgets/icons/listbox.xpm +54 -0
  358. data/samples/widgets/icons/notebook.xpm +54 -0
  359. data/samples/widgets/icons/odcombobox.xpm +54 -0
  360. data/samples/widgets/icons/radiobox.xpm +54 -0
  361. data/samples/widgets/icons/scrolbar.xpm +54 -0
  362. data/samples/widgets/icons/slider.xpm +54 -0
  363. data/samples/widgets/icons/spinbtn.xpm +40 -0
  364. data/samples/widgets/icons/statbmp.xpm +40 -0
  365. data/samples/widgets/icons/statbox.xpm +54 -0
  366. data/samples/widgets/icons/stattext.xpm +54 -0
  367. data/samples/widgets/icons/text.xpm +54 -0
  368. data/samples/widgets/icons/timepick.xpm +207 -0
  369. data/samples/widgets/icons/toggle.xpm +54 -0
  370. data/samples/widgets/pages/colorpicker.rb +66 -0
  371. data/samples/widgets/pages/common.rb +17 -0
  372. data/samples/widgets/widgets.rb +29 -0
  373. data/samples/xrc/samples.xrc +46 -0
  374. data/samples/xrc/xrc_sample.rb +59 -0
  375. data/test/test_color.rb +64 -0
  376. metadata +470 -0
@@ -0,0 +1,29 @@
1
+ /*
2
+ * wxListBox.hpp
3
+ *
4
+ * Created on: 04.03.2012
5
+ * Author: hanmac
6
+ */
7
+
8
+ #ifndef WXLISTBOX_HPP_
9
+ #define WXLISTBOX_HPP_
10
+
11
+ #include "wxControl.hpp"
12
+
13
+ extern VALUE rb_cWXListBox;
14
+
15
+ void Init_WXListBox(VALUE rb_mWX);
16
+ #if wxUSE_LISTBOX
17
+ #include <wx/listbox.h>
18
+ #endif
19
+
20
+
21
+ namespace RubyWX {
22
+ namespace ListBox {
23
+
24
+ void set_style_flags(VALUE hash,int& flags);
25
+
26
+ }
27
+ }
28
+
29
+ #endif /* WXLISTBOX_HPP_ */
@@ -0,0 +1,600 @@
1
+ /*
2
+ * wxMenu.cpp
3
+ *
4
+ * Created on: 17.02.2012
5
+ * Author: hanmac
6
+ */
7
+
8
+
9
+
10
+ #include "wxMenu.hpp"
11
+ #include "wxMenuItem.hpp"
12
+ #include "wxEvtHandler.hpp"
13
+ #include "wxApp.hpp"
14
+
15
+ VALUE rb_cWXMenu;
16
+
17
+ #if wxUSE_MENUS
18
+
19
+ #define _self unwrap<wxMenu*>(self)
20
+
21
+ namespace RubyWX {
22
+ namespace Menu {
23
+
24
+ macro_attr(Title,wxString)
25
+ macro_attr(Parent,wxMenu*)
26
+ macro_attr(EventHandler,wxEvtHandler*)
27
+
28
+ singlereturn(AppendSeparator)
29
+ singlereturn(PrependSeparator)
30
+
31
+
32
+ APP_PROTECT(wxMenu)
33
+
34
+ DLL_LOCAL VALUE _initialize(int argc,VALUE *argv,VALUE self)
35
+ {
36
+ VALUE title;
37
+ rb_scan_args(argc, argv, "01",&title);
38
+
39
+ if(NIL_P(title))
40
+ _self->SetTitle("");
41
+ else if(SYMBOL_P(title))
42
+ _self->SetTitle(wxGetStockLabel(unwrapID(title)));
43
+ else
44
+ _setTitle(self,title);
45
+ if(rb_block_given_p()){
46
+ rb_yield(self);
47
+ }
48
+ return self;
49
+ }
50
+
51
+ singlereturn(GetMenuBar);
52
+
53
+ DLL_LOCAL VALUE _each_size(VALUE self)
54
+ {
55
+ return UINT2NUM(_self->GetMenuItemCount());
56
+ }
57
+
58
+
59
+ DLL_LOCAL VALUE _each(VALUE self)
60
+ {
61
+ RETURN_SIZED_ENUMERATOR(self,0,NULL,RUBY_METHOD_FUNC(_each_size));
62
+ std::size_t count = _self->GetMenuItemCount();
63
+ for(std::size_t i = 0;i < count;++i)
64
+ rb_yield(wrap(_self->FindItemByPosition(i)));
65
+ return self;
66
+ }
67
+
68
+ void bind_callback(wxMenu* menu,wxWindowID id)
69
+ {
70
+ if(rb_block_given_p()){
71
+ VALUE proc = rb_block_proc();
72
+ menu->Bind(wxEVT_MENU,RubyFunctor(proc),id);
73
+ }
74
+ }
75
+
76
+ DLL_LOCAL bool check_title(wxWindowID wid, VALUE id, VALUE text)
77
+ {
78
+ if(!wxIsStockID(wid) && (NIL_P(text) || rb_str_length(text) == INT2FIX(0)))
79
+ {
80
+ rb_raise(rb_eArgError,"id %"PRIsVALUE"s (%d) needs an text", id, wid);
81
+ return false;
82
+ }
83
+ return true;
84
+ }
85
+
86
+ DLL_LOCAL bool check_menu_mitle(wxMenu *m,wxString &wtext)
87
+ {
88
+ if(wtext.empty())
89
+ {
90
+ if(m->GetTitle().empty())
91
+ {
92
+ rb_raise(rb_eArgError,"menu must have a title");
93
+ return false;
94
+ }
95
+
96
+ wtext = m->GetTitle();
97
+ }
98
+ return true;
99
+ }
100
+
101
+ DLL_LOCAL VALUE _append_base(int argc,VALUE *argv,VALUE self,wxItemKind kind)
102
+ {
103
+ VALUE id,text,help;
104
+
105
+ rb_scan_args(argc, argv, "12",&id,&text,&help);
106
+ wxWindowID wid(unwrapID(id));
107
+
108
+ if(check_title(wid,id,text))
109
+ {
110
+ wxMenuItem *item = _self->Append(wid,unwrap<wxString>(text),unwrap<wxString>(help),kind);
111
+ bind_callback(_self,item->GetId());
112
+ return wrap(item);
113
+ }
114
+ return Qnil;
115
+ }
116
+
117
+
118
+ /*
119
+ * call-seq:
120
+ * add_normal(id, text, [help]) -> WX::Menu::Item
121
+ * add_normal(id, text, [help]) {|event| ... } -> WX::Menu::Item
122
+ *
123
+ * adds a new normal menu item to the Menu widget.
124
+ * when block is given, bind the block to the event of the menu item.
125
+ * ===Arguments
126
+ * * id of the menu item: Symbol/Integer/nil
127
+ * * text is the Label of the menu item. String (can be nil if id is one of the system defined)
128
+ * * help shown in WX::StatusBar. String
129
+ * ===Return value
130
+ * WX::Menu::Item
131
+ * === Exceptions
132
+ * [ArgumentError]
133
+ * * when id is not a StockID and text is nil or empty
134
+ *
135
+ */
136
+ DLL_LOCAL VALUE _appendNormalItem(int argc,VALUE *argv,VALUE self)
137
+ {
138
+ return _append_base(argc,argv,self,wxITEM_NORMAL);
139
+ }
140
+
141
+ /*
142
+ * call-seq:
143
+ * add_check(id, text, [help]) -> WX::Menu::Item
144
+ * add_check(id, text, [help]) {|event| ... } -> WX::Menu::Item
145
+ *
146
+ * adds a new check menu item to the Menu widget.
147
+ * when block is given, bind the block to the event of the menu item.
148
+ * ===Arguments
149
+ * * id of the menu item: Symbol/Integer/nil
150
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
151
+ * * help shown in WX::StatusBar. String
152
+ * ===Return value
153
+ * WX::Menu::Item
154
+ * === Exceptions
155
+ * [ArgumentError]
156
+ * * when id is not a StockID and text is nil or empty
157
+ *
158
+ */
159
+ DLL_LOCAL VALUE _appendCheckItem(int argc,VALUE *argv,VALUE self)
160
+ {
161
+ return _append_base(argc,argv,self,wxITEM_CHECK);
162
+ }
163
+
164
+ /*
165
+ * call-seq:
166
+ * add_radio(id, text, [help]) -> WX::Menu::Item
167
+ * add_radio(id, text, [help]) {|event| ... } -> WX::Menu::Item
168
+ *
169
+ * adds a new radio menu item to the Menu widget.
170
+ * when block is given, bind the block to the event of the menu item.
171
+ * ===Arguments
172
+ * * id of the menu item: Symbol/Integer/nil
173
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
174
+ * * help shown in WX::StatusBar. String
175
+ * ===Return value
176
+ * WX::Menu::Item
177
+ * === Exceptions
178
+ * [ArgumentError]
179
+ * * when id is not a StockID and text is nil or empty
180
+ *
181
+ */
182
+ DLL_LOCAL VALUE _appendRadioItem(int argc,VALUE *argv,VALUE self)
183
+ {
184
+ return _append_base(argc,argv,self,wxITEM_RADIO);
185
+ }
186
+
187
+ /*
188
+ * call-seq:
189
+ * add_menu(text, [help]) {|menu| ... } -> WX::Menu::Item
190
+ * add_menu(menu, text, [help]) -> WX::Menu::Item
191
+ *
192
+ * adds a new sub menu item to the Menu widget.
193
+ * when block is given, it created a new menu and yields it into the block.
194
+ * ===Arguments
195
+ * * text is the Label of the menu item. String
196
+ * * help shown in WX::StatusBar. String
197
+ * ===Return value
198
+ * WX::Menu::Item
199
+ * === Exceptions
200
+ * [ArgumentError]
201
+ * * when either menu hasn't a title and text is empty
202
+ * [TypeError]
203
+ * * when menu is nil
204
+ *
205
+ */
206
+ DLL_LOCAL VALUE _append_menu(int argc,VALUE *argv,VALUE self)
207
+ {
208
+ VALUE text,help,menu;
209
+
210
+ wxMenu *m = NULL;
211
+ if(rb_block_given_p()){
212
+ rb_scan_args(argc, argv, "11",&text,&help);
213
+ m = new wxMenu;
214
+ rb_yield(wrap(m));
215
+ }else{
216
+ rb_scan_args(argc, argv, "12",&menu,&text,&help);
217
+
218
+ if(!nil_check(menu,"menu"))
219
+ return Qnil;
220
+
221
+ m = unwrap<wxMenu*>(menu);
222
+ }
223
+
224
+ wxString wtext(unwrap<wxString>(text));
225
+
226
+ if(check_menu_mitle(m,wtext))
227
+ return wrap(_self->AppendSubMenu(m,wtext,unwrap<wxString>(help)));
228
+
229
+ return Qnil;
230
+
231
+ }
232
+
233
+ DLL_LOCAL VALUE _appendShift(VALUE self,VALUE val)
234
+ {
235
+ if(rb_obj_is_kind_of(val,rb_cWXMenuItem)) {
236
+ _self->Append(unwrap<wxMenuItem*>(val));
237
+ } else {
238
+ wxWindowID id = unwrapID(val);
239
+ if(!wxIsStockID(id))
240
+ rb_raise(rb_eArgError,"id \"%"PRIsVALUE"\" cant be fast added", val);
241
+ _self->Append(id);
242
+ }
243
+ return self;
244
+ }
245
+
246
+
247
+
248
+ DLL_LOCAL VALUE _insert_base(int argc,VALUE *argv,VALUE self,wxItemKind kind)
249
+ {
250
+ VALUE idx,id,text,help;
251
+ rb_scan_args(argc, argv, "22",&idx,&id,&text,&help);
252
+
253
+ wxWindowID wid(unwrapID(id));
254
+
255
+ if(check_title(wid,id,text))
256
+ {
257
+ int cidx = NUM2INT(idx);
258
+ if(check_index(cidx,_self->GetMenuItemCount()+1))
259
+ {
260
+ wxMenuItem *item = _self->Insert(cidx,wid,unwrap<wxString>(text),unwrap<wxString>(help),kind);
261
+ bind_callback(_self,item->GetId());
262
+ return wrap(item);
263
+ }
264
+ }
265
+ return Qnil;
266
+ }
267
+
268
+
269
+ /*
270
+ * call-seq:
271
+ * insert_normal(pos, id, text, [help]) -> WX::Menu::Item
272
+ * insert_normal(pos, id, text, [help]) {|event| ... } -> WX::Menu::Item
273
+ *
274
+ * inserts a new normal menu item to the Menu widget to the given position.
275
+ * when block is given, bind the block to the event of the menu item.
276
+ * ===Arguments
277
+ * * pos where the item should be added.
278
+ * * id of the menu item: Symbol/Integer/nil
279
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
280
+ * * help shown in WX::StatusBar. String
281
+ * ===Return value
282
+ * WX::Menu::Item
283
+ * === Exceptions
284
+ * [ArgumentError]
285
+ * * when id is not a StockID and text is nil or empty
286
+ * [IndexError]
287
+ * * pos is greater than the count of MenuItems
288
+ *
289
+ */
290
+ DLL_LOCAL VALUE _insertNormalItem(int argc,VALUE *argv,VALUE self)
291
+ {
292
+ return _insert_base(argc,argv,self,wxITEM_NORMAL);
293
+ }
294
+
295
+ /*
296
+ * call-seq:
297
+ * insert_check(pos, id, text, [help]) -> WX::Menu::Item
298
+ * insert_check(pos, id, text, [help]) {|event| ... } -> WX::Menu::Item
299
+ *
300
+ * inserts a new check menu item to the Menu widget to the given position.
301
+ * when block is given, bind the block to the event of the menu item.
302
+ * ===Arguments
303
+ * * pos where the item should be added.
304
+ * * id of the menu item: Symbol/Integer/nil
305
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
306
+ * * help shown in WX::StatusBar. String
307
+ * ===Return value
308
+ * WX::Menu::Item
309
+ * === Exceptions
310
+ * [ArgumentError]
311
+ * * when id is not a StockID and text is nil or empty
312
+ * [IndexError]
313
+ * * pos is greater than the count of MenuItems
314
+ *
315
+ */
316
+ DLL_LOCAL VALUE _insertCheckItem(int argc,VALUE *argv,VALUE self)
317
+ {
318
+ return _insert_base(argc,argv,self,wxITEM_CHECK);
319
+ }
320
+
321
+ /*
322
+ * call-seq:
323
+ * insert_radio(pos, id, text, [help]) -> WX::Menu::Item
324
+ * insert_radio(pos, id, text, [help]) {|event| ... } -> WX::Menu::Item
325
+ *
326
+ * inserts a new radio menu item to the Menu widget to the given position.
327
+ * when block is given, bind the block to the event of the menu item.
328
+ * ===Arguments
329
+ * * pos where the item should be added.
330
+ * * id of the menu item: Symbol/Integer/nil
331
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
332
+ * * help shown in WX::StatusBar. String
333
+ * ===Return value
334
+ * WX::Menu::Item
335
+ * === Exceptions
336
+ * [ArgumentError]
337
+ * * when id is not a StockID and text is nil or empty
338
+ * [IndexError]
339
+ * * pos is greater than the count of MenuItems
340
+ *
341
+ */
342
+ DLL_LOCAL VALUE _insertRadioItem(int argc,VALUE *argv,VALUE self)
343
+ {
344
+ return _insert_base(argc,argv,self,wxITEM_RADIO);
345
+ }
346
+
347
+ /*
348
+ * call-seq:
349
+ * insert_menu(pos, text, [help]) {|menu| ... } -> WX::Menu::Item
350
+ * insert_menu(pos, menu, text, [help]) -> WX::Menu::Item
351
+ *
352
+ * insert a new sub menu item to the Menu widget into the given position.
353
+ * when block is given, it created a new menu and yields it into the block.
354
+ * ===Arguments
355
+ * * pos where the item should be added.
356
+ * * text is the Label of the menu item. String
357
+ * * help shown in WX::StatusBar. String
358
+ * ===Return value
359
+ * WX::Menu::Item
360
+ * === Exceptions
361
+ * [ArgumentError]
362
+ * * when either menu hasn't a title and text is empty
363
+ * [TypeError]
364
+ * * when menu is nil
365
+ * [IndexError]
366
+ * * pos is greater than the count of MenuItems
367
+ *
368
+ */
369
+ DLL_LOCAL VALUE _insert_menu(int argc,VALUE *argv,VALUE self)
370
+ {
371
+ VALUE idx,text,help,menu;
372
+
373
+ wxMenu *m = NULL;
374
+ if(rb_block_given_p()){
375
+ rb_scan_args(argc, argv, "21",&idx,&text,&help);
376
+ m = new wxMenu;
377
+ rb_yield(wrap(m));
378
+ }else{
379
+ rb_scan_args(argc, argv, "22",&idx,&menu,&text,&help);
380
+
381
+ if(!nil_check(menu,"menu"))
382
+ return Qnil;
383
+
384
+ m = unwrap<wxMenu*>(menu);
385
+ }
386
+
387
+ wxString wtext(unwrap<wxString>(text));
388
+
389
+ if(check_menu_mitle(m,wtext))
390
+ {
391
+ int cidx = NUM2INT(idx);
392
+ if(check_index(cidx,_self->GetMenuItemCount()+1))
393
+ {
394
+ return wrap(_self->Insert(cidx,wxID_ANY,wtext,m,unwrap<wxString>(help)));
395
+ }
396
+ }
397
+ return Qnil;
398
+ }
399
+
400
+
401
+ DLL_LOCAL VALUE _prepend_base(int argc,VALUE *argv,VALUE self,wxItemKind kind)
402
+ {
403
+ VALUE id,text,help;
404
+ rb_scan_args(argc, argv, "12",&id,&text,&help);
405
+
406
+ wxWindowID wid(unwrapID(id));
407
+
408
+ if(check_title(wid,id,text))
409
+ {
410
+ wxMenuItem *item = _self->Prepend(wid,unwrap<wxString>(text),unwrap<wxString>(help),kind);
411
+ bind_callback(_self,item->GetId());
412
+ return wrap(item);
413
+ }
414
+ return Qnil;
415
+ }
416
+
417
+ /*
418
+ * call-seq:
419
+ * prepend_normal(id, text, [help]) -> WX::Menu::Item
420
+ * prepend_normal(id, text, [help]) {|event| ... } -> WX::Menu::Item
421
+ *
422
+ * prepends a new normal menu item to the Menu widget.
423
+ * when block is given, bind the block to the event of the menu item.
424
+ * ===Arguments
425
+ * * id of the menu item: Symbol/Integer/nil
426
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
427
+ * * help shown in WX::StatusBar. String
428
+ * ===Return value
429
+ * WX::Menu::Item
430
+ * === Exceptions
431
+ * [ArgumentError]
432
+ * * when id is not a StockID and text is nil or empty
433
+ *
434
+ */
435
+ DLL_LOCAL VALUE _prependNormalItem(int argc,VALUE *argv,VALUE self)
436
+ {
437
+ return _prepend_base(argc,argv,self,wxITEM_NORMAL);
438
+ }
439
+
440
+ /*
441
+ * call-seq:
442
+ * prepend_check(id, text, [help]) -> WX::Menu::Item
443
+ * prepend_check(id, text, [help]) {|event| ... } -> WX::Menu::Item
444
+ *
445
+ * prepends a new check menu item to the Menu widget.
446
+ * when block is given, bind the block to the event of the menu item.
447
+ * ===Arguments
448
+ * * id of the menu item: Symbol/Integer/nil
449
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
450
+ * * help shown in WX::StatusBar. String
451
+ * ===Return value
452
+ * WX::Menu::Item
453
+ * === Exceptions
454
+ * [ArgumentError]
455
+ * * when id is not a StockID and text is nil or empty
456
+ *
457
+ */
458
+ DLL_LOCAL VALUE _prependCheckItem(int argc,VALUE *argv,VALUE self)
459
+ {
460
+ return _prepend_base(argc,argv,self,wxITEM_CHECK);
461
+ }
462
+
463
+ /*
464
+ * call-seq:
465
+ * prepend_radio(id, text, [help]) -> WX::Menu::Item
466
+ * prepend_radio(id, text, [help]) {|event| ... } -> WX::Menu::Item
467
+ *
468
+ * prepends a new radio menu item to the Menu widget.
469
+ * when block is given, bind the block to the event of the menu item.
470
+ * ===Arguments
471
+ * * id of the menu item: Symbol/Integer/nil
472
+ * * text is the Label of the menu item. String (can be nil if id is one of the pre defined)
473
+ * * help shown in WX::StatusBar. String
474
+ * ===Return value
475
+ * WX::Menu::Item
476
+ * === Exceptions
477
+ * [ArgumentError]
478
+ * * when id is not a StockID and text is nil or empty
479
+ *
480
+ */
481
+ DLL_LOCAL VALUE _prependRadioItem(int argc,VALUE *argv,VALUE self)
482
+ {
483
+ return _prepend_base(argc,argv,self,wxITEM_RADIO);
484
+ }
485
+
486
+ /*
487
+ * call-seq:
488
+ * prepend_menu(text, [help]) {|menu| ... } -> WX::Menu::Item
489
+ * prepend_menu(menu, text, [help]) -> WX::Menu::Item
490
+ *
491
+ * prepends a new sub menu item to the Menu widget.
492
+ * when block is given, it created a new menu and yields it into the block.
493
+ * ===Arguments
494
+ * * text is the Label of the menu item. String
495
+ * * help shown in WX::StatusBar. String
496
+ * ===Return value
497
+ * WX::Menu::Item
498
+ * === Exceptions
499
+ * [ArgumentError]
500
+ * * when either menu hasn't a title and text is empty
501
+ * [TypeError]
502
+ * * when menu is nil
503
+ *
504
+ */
505
+ DLL_LOCAL VALUE _prepend_menu(int argc,VALUE *argv,VALUE self)
506
+ {
507
+ VALUE text,help,menu;
508
+
509
+ wxMenu *m = NULL;
510
+ if(rb_block_given_p()){
511
+ rb_scan_args(argc, argv, "11",&text,&help);
512
+ m = new wxMenu;
513
+ rb_yield(wrap(m));
514
+ }else{
515
+ rb_scan_args(argc, argv, "12",&menu,&text,&help);
516
+
517
+ if(!nil_check(menu,"menu"))
518
+ return Qnil;
519
+
520
+ m = unwrap<wxMenu*>(menu);
521
+ }
522
+
523
+ wxString wtext(unwrap<wxString>(text));
524
+
525
+ if(check_menu_mitle(m,wtext))
526
+ return wrap(_self->Prepend(wxID_ANY,wtext,m,unwrap<wxString>(help)));
527
+
528
+ return Qnil;
529
+ }
530
+
531
+
532
+ #if wxUSE_XRC
533
+ DLL_LOCAL VALUE _load_xrc(VALUE self,VALUE name)
534
+ {
535
+ return wrap(wxXmlResource::Get()->LoadMenu(unwrap<wxString>(name)));
536
+ }
537
+ #endif
538
+
539
+ }
540
+ }
541
+ #endif
542
+
543
+ DLL_LOCAL void Init_WXMenu(VALUE rb_mWX)
544
+ {
545
+ #if 0
546
+ rb_mWXEvtHandler = rb_define_module_under(rb_mWX,"EvtHandler");
547
+
548
+ rb_define_attr(rb_cWXMenu,"title",1,1);
549
+ rb_define_attr(rb_cWXMenu,"parent",1,1);
550
+
551
+ #endif
552
+
553
+ #if wxUSE_MENUS
554
+ using namespace RubyWX::Menu;
555
+ rb_cWXMenu = rb_define_class_under(rb_mWX,"Menu",rb_cObject);
556
+ rb_define_alloc_func(rb_cWXMenu,_alloc);
557
+
558
+ rb_define_method(rb_cWXMenu,"initialize",RUBY_METHOD_FUNC(_initialize),1);
559
+
560
+ rb_include_module(rb_cWXMenu,rb_mWXEvtHandler);
561
+ rb_include_module(rb_cWXMenu,rb_mEnumerable);
562
+
563
+ rb_define_attr_method(rb_cWXMenu,"title",_getTitle,_setTitle);
564
+ rb_define_attr_method(rb_cWXMenu,"parent",_getParent,_setParent);
565
+
566
+ rb_define_method(rb_cWXMenu,"each",RUBY_METHOD_FUNC(_each),0);
567
+
568
+ rb_define_method(rb_cWXMenu,"append_normal",RUBY_METHOD_FUNC(_appendNormalItem),-1);
569
+ rb_define_method(rb_cWXMenu,"append_check",RUBY_METHOD_FUNC(_appendCheckItem),-1);
570
+ rb_define_method(rb_cWXMenu,"append_radio",RUBY_METHOD_FUNC(_appendRadioItem),-1);
571
+ rb_define_method(rb_cWXMenu,"append_menu",RUBY_METHOD_FUNC(_append_menu),-1);
572
+
573
+ rb_define_method(rb_cWXMenu,"append_separator",RUBY_METHOD_FUNC(_AppendSeparator),0);
574
+
575
+ rb_define_method(rb_cWXMenu,"insert_normal",RUBY_METHOD_FUNC(_insertNormalItem),-1);
576
+ rb_define_method(rb_cWXMenu,"insert_check",RUBY_METHOD_FUNC(_insertCheckItem),-1);
577
+ rb_define_method(rb_cWXMenu,"insert_radio",RUBY_METHOD_FUNC(_insertRadioItem),-1);
578
+ rb_define_method(rb_cWXMenu,"insert_menu",RUBY_METHOD_FUNC(_insert_menu),-1);
579
+
580
+ rb_define_method(rb_cWXMenu,"prepend_normal",RUBY_METHOD_FUNC(_prependNormalItem),-1);
581
+ rb_define_method(rb_cWXMenu,"prepend_check",RUBY_METHOD_FUNC(_prependCheckItem),-1);
582
+ rb_define_method(rb_cWXMenu,"prepend_radio",RUBY_METHOD_FUNC(_prependRadioItem),-1);
583
+ rb_define_method(rb_cWXMenu,"prepend_menu",RUBY_METHOD_FUNC(_prepend_menu),-1);
584
+
585
+ rb_define_method(rb_cWXMenu,"prepend_separator",RUBY_METHOD_FUNC(_PrependSeparator),0);
586
+
587
+
588
+ rb_define_method(rb_cWXMenu,"<<",RUBY_METHOD_FUNC(_appendShift),1);
589
+
590
+ rb_define_method(rb_cWXMenu,"menubar",RUBY_METHOD_FUNC(_GetMenuBar),0);
591
+
592
+ #if wxUSE_XRC
593
+ rb_define_singleton_method(rb_cWXMenu,"load_xrc",RUBY_METHOD_FUNC(_load_xrc),1);
594
+ #endif
595
+
596
+ registerEventType<wxCommandEvent>("menu",wxEVT_MENU);
597
+
598
+ registerInfo<wxMenu>(rb_cWXMenu);
599
+ #endif
600
+ }