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,20 @@
1
+ /*
2
+ * wxDirPickerWidget.hpp
3
+ *
4
+ * Created on: 05.05.2014
5
+ * Author: hanmac
6
+ */
7
+
8
+ #ifndef WXDIRPICKERWIDGET_HPP_
9
+ #define WXDIRPICKERWIDGET_HPP_
10
+
11
+ #include "wxEvtHandler.hpp"
12
+
13
+ extern VALUE rb_cWXDirPickerWidget;
14
+
15
+ void Init_WXDirPickerWidget(VALUE rb_mWX);
16
+ #if wxUSE_DIRPICKERCTRL
17
+ #include <wx/filepicker.h>
18
+ #endif
19
+
20
+ #endif /* WXDIRPICKERWIDGET_HPP_ */
@@ -0,0 +1,67 @@
1
+ /*
2
+ * wxError.cpp
3
+ *
4
+ * Created on: 21.02.2012
5
+ * Author: hanmac
6
+ */
7
+ #include "wxError.hpp"
8
+
9
+ VALUE rb_eWXError;
10
+
11
+ void wxrubyAssert(const wxString& file,
12
+ int line,
13
+ const wxString& func,
14
+ const wxString& cond,
15
+ const wxString& msg)
16
+ {
17
+ rb_fatal("(%s) in %s \n %s",
18
+ cond.GetData().AsChar(),
19
+ func.GetData().AsChar(),
20
+ msg.GetData().AsChar()
21
+ );
22
+ }
23
+
24
+ class RubyExceptionLog : public wxLogInterposer
25
+ {
26
+ public:
27
+ RubyExceptionLog() : wxLogInterposer() {}
28
+
29
+ protected:
30
+ void DoLogRecord(wxLogLevel level,
31
+ const wxString& msg,
32
+ const wxLogRecordInfo& info)
33
+ {
34
+
35
+ const char * c = msg.GetData().AsChar();
36
+ const char * f = info.func;
37
+ switch(level)
38
+ {
39
+ case wxLOG_FatalError:
40
+ rb_fatal("%s in %s", c, f);
41
+ break;
42
+ case wxLOG_Warning:
43
+ rb_warn("%s in %s", c, f);
44
+ break;
45
+ case wxLOG_Error:
46
+ rb_raise(rb_eWXError,"%s in %s", c, f);
47
+ break;
48
+ default:
49
+
50
+ break;
51
+ }
52
+
53
+ wxLogInterposer::DoLogRecord(level, msg, info);
54
+
55
+
56
+ }
57
+
58
+ };
59
+
60
+
61
+
62
+ DLL_LOCAL void Init_WXError(VALUE rb_mWX)
63
+ {
64
+ rb_eWXError = rb_define_class_under(rb_mWX,"Error",rb_eException);
65
+ wxLog::SetActiveTarget(new RubyExceptionLog());
66
+ wxSetAssertHandler(wxrubyAssert);
67
+ }
@@ -0,0 +1,17 @@
1
+ /*
2
+ * wxError.hpp
3
+ *
4
+ * Created on: 21.02.2012
5
+ * Author: hanmac
6
+ */
7
+
8
+ #ifndef WXERROR_HPP_
9
+ #define WXERROR_HPP_
10
+
11
+ #include "main.hpp"
12
+
13
+ void Init_WXError(VALUE rb_mWX);
14
+
15
+
16
+
17
+ #endif /* WXERROR_HPP_ */
@@ -0,0 +1,60 @@
1
+ /*
2
+ * wxEvent.cpp
3
+ *
4
+ * Created on: 18.02.2012
5
+ * Author: hanmac
6
+ */
7
+
8
+
9
+
10
+ #include "wxEvent.hpp"
11
+ #include "wxWindow.hpp"
12
+
13
+
14
+ VALUE rb_cWXEvent;
15
+
16
+ template <>
17
+ wxEvent* unwrap<wxEvent*>(const VALUE &arg)
18
+ {
19
+ return unwrapTypedPtr<wxEvent>(arg,rb_cWXEvent);
20
+ }
21
+
22
+
23
+ #define _self unwrap<wxEvent*>(self)
24
+
25
+ namespace RubyWX {
26
+ namespace Event {
27
+
28
+ macro_attr_with_func(EventType,wrapEventType,unwrapEventType)
29
+ macro_attr_with_func(Id,wrapID,unwrapID)
30
+ macro_attr_with_func(Timestamp,LONG2NUM,NUM2LONG)
31
+
32
+ macro_attr(EventObject,wxObject*)
33
+
34
+ singlefunc(Skip)
35
+
36
+
37
+ }
38
+ }
39
+
40
+
41
+ DLL_LOCAL void Init_WXEvent(VALUE rb_mWX)
42
+ {
43
+ #if 0
44
+ rb_mWX = rb_define_module("WX");
45
+ #endif
46
+
47
+ using namespace RubyWX::Event;
48
+ rb_cWXEvent = rb_define_class_under(rb_mWX,"Event",rb_cObject);
49
+ rb_undef_alloc_func(rb_cWXEvent);
50
+ rb_define_attr_method(rb_cWXEvent,"event_type",_getEventType,_setEventType);
51
+ rb_define_attr_method(rb_cWXEvent,"event_object",_getEventObject,_setEventObject);
52
+ rb_define_attr_method(rb_cWXEvent,"id",_getId,_setId);
53
+ rb_define_attr_method(rb_cWXEvent,"timestamp",_getTimestamp,_setTimestamp);
54
+
55
+ rb_define_method(rb_cWXEvent,"skip",RUBY_METHOD_FUNC(_Skip),0);
56
+
57
+ registerInfo<wxEvent>(rb_cWXEvent);
58
+ }
59
+
60
+
@@ -0,0 +1,17 @@
1
+ /*
2
+ * wxEvent.hpp
3
+ *
4
+ * Created on: 18.02.2012
5
+ * Author: hanmac
6
+ */
7
+
8
+ #ifndef WXEVENT_HPP_
9
+ #define WXEVENT_HPP_
10
+
11
+ #include <map>
12
+
13
+ #include "main.hpp"
14
+
15
+ extern VALUE rb_cWXEvent;
16
+ void Init_WXEvent(VALUE rb_mWX);
17
+ #endif /* WXEVENT_HPP_ */
@@ -0,0 +1,291 @@
1
+ /*
2
+ * wxEvtHandler.cpp
3
+ *
4
+ * Created on: 17.02.2012
5
+ * Author: hanmac
6
+ */
7
+
8
+ #include "wxEvtHandler.hpp"
9
+ #include "wxEvent.hpp"
10
+
11
+ #include <map>
12
+
13
+ #define _self unwrap<wxEvtHandler*>(self)
14
+
15
+ VALUE rb_mWXEvtHandler;
16
+ ID rwx_IDcall, rwx_IDid;
17
+
18
+ typedef std::map<VALUE,wxEvtHandler*> evthandlerholdertype;
19
+ typedef std::map<ID,wxEventType> evttypeholdertype;
20
+ typedef std::map<wxEventType,wxClassInfo*> evttypeclassholdertype;
21
+
22
+ evthandlerholdertype evthandlerholder;
23
+ evttypeholdertype evttypeholder;
24
+ evttypeclassholdertype evttypeclassholder;
25
+
26
+ template <>
27
+ wxEvtHandler* unwrap< wxEvtHandler* >(const VALUE &vhandler)
28
+ {
29
+ if(TYPE(vhandler) == T_DATA)
30
+ return unwrapTypedPtr<wxEvtHandler>(vhandler,rb_mWXEvtHandler);
31
+ evthandlerholdertype::iterator it = evthandlerholder.find(vhandler);
32
+ if(it != evthandlerholder.end())
33
+ return it->second;
34
+ else
35
+ {
36
+ wxEvtHandler *result = new wxEvtHandler;
37
+ evthandlerholder.insert(std::make_pair(vhandler,result));
38
+ return result;
39
+ }
40
+ }
41
+
42
+ #if wxUSE_XRC
43
+ bool loadxrc(wxObject *self,VALUE name,wxWindow *parent)
44
+ {
45
+ if(rb_obj_is_kind_of(name,rb_cString)){
46
+
47
+ wxString classname = wxString(self->GetClassInfo()->GetClassName());
48
+ if(!(wxXmlResource::Get()->LoadObjectRecursively(self,parent,unwrap<wxString>(name),classname)))
49
+ rb_raise(rb_eNameError,"Named %s '%"PRIsVALUE"' is not found.", classname.GetData().AsChar(), name);
50
+ return true;
51
+ }
52
+ return false;
53
+ }
54
+ #endif
55
+
56
+ #if !wxUSE_GUI
57
+ class RubyEvent : public wxEvent
58
+ {
59
+ public:
60
+
61
+ wxEvent* Clone()const { return new RubyEvent(*this);}
62
+ };
63
+ #endif
64
+
65
+ #define rubyclientdata(T) \
66
+ VALUE wrapTypedPtr(T *handler,VALUE klass)\
67
+ {\
68
+ if(!handler)\
69
+ return Qnil;\
70
+ \
71
+ RubyClientData *rcd = dynamic_cast<RubyClientData*>(handler->GetClientObject());\
72
+ if(!rcd)\
73
+ {\
74
+ if(NIL_P(klass))\
75
+ return Qnil;\
76
+ handler->SetClientObject(rcd = new RubyClientData(wrapTypedPtr((void*)handler,klass)));\
77
+ }\
78
+ if(rcd)\
79
+ return rcd->mRuby;\
80
+ return Qnil;\
81
+ }
82
+
83
+
84
+ rubyclientdata(wxEvtHandler)
85
+ rubyclientdata(wxClientDataContainer)
86
+ rubyclientdata(wxSizer)
87
+
88
+ #if wxUSE_PROPGRID
89
+ rubyclientdata(wxPGProperty)
90
+ #endif
91
+ #if wxUSE_GRID
92
+ rubyclientdata(wxGridTableBase)
93
+ rubyclientdata(wxGridCellAttr)
94
+ #endif
95
+
96
+
97
+ VALUE wrapTypedPtr(wxObject *object,VALUE klass)
98
+ {
99
+ if(!object)
100
+ return Qnil;
101
+
102
+ if(wxEvtHandler *evt = wxDynamicCast(object,wxEvtHandler))
103
+ return wrapTypedPtr(evt,klass);
104
+ if(wxSizer *evt = wxDynamicCast(object,wxSizer))
105
+ return wrapTypedPtr(evt,klass);
106
+ if(wxClientDataContainer *evt = dynamic_cast<wxClientDataContainer*>(object))
107
+ return wrapTypedPtr(evt,klass);
108
+ #if wxUSE_PROPGRID
109
+ if(wxPGProperty *evt = wxDynamicCast(object,wxPGProperty))
110
+ return wrapTypedPtr(evt,klass);
111
+ #endif
112
+
113
+ return wrapTypedPtr((void*)object,klass);
114
+ }
115
+
116
+
117
+ wxEventType unwrapEventType(VALUE type)
118
+ {
119
+ if(NIL_P(type))
120
+ return wxEVT_ANY;
121
+
122
+ if(!SYMBOL_P(type))
123
+ return NUM2INT(type);
124
+
125
+ evttypeholdertype::iterator it = evttypeholder.find(SYM2ID(type));
126
+ if(it != evttypeholder.end())
127
+ return it->second;
128
+
129
+ wxEventType evt = wxNewEventType();
130
+ evttypeholder[SYM2ID(type)] = evt;
131
+ return evt;
132
+ }
133
+
134
+ VALUE wrapEventType(wxEventType type)
135
+ {
136
+ for(evttypeholdertype::iterator it = evttypeholder.begin();it != evttypeholder.end(); ++it)
137
+ {
138
+ if(it->second == type)
139
+ return ID2SYM(it->first);
140
+ }
141
+ return INT2NUM(type);
142
+ }
143
+
144
+ void registerEventType(const char *sym, wxEventType type,wxClassInfo *info)
145
+ {
146
+ evttypeholder[rb_intern(sym)]=type;
147
+ evttypeclassholder[type] = info;
148
+ }
149
+
150
+ #ifdef wxHAS_CALL_AFTER
151
+ class RubyCallAfter : public wxObject
152
+ {
153
+ public:
154
+ RubyCallAfter(VALUE val) : mVal(val){};
155
+
156
+ void call(VALUE val)
157
+ {
158
+ rb_funcall(mVal, rwx_IDcall, 1, val);
159
+ }
160
+
161
+ private:
162
+ VALUE mVal;
163
+ };
164
+ #endif
165
+
166
+
167
+ RubyClientData::RubyClientData(VALUE obj) : wxClientData(), mRuby(obj)
168
+ {
169
+ rwx_refobject(obj);
170
+ }
171
+
172
+ RubyClientData::~RubyClientData()
173
+ {
174
+ if(rwx_unrefobject(mRuby) && unwrapDataType(CLASS_OF(mRuby)))
175
+ {
176
+ RTYPEDDATA_DATA(mRuby) = NULL;
177
+ }
178
+ }
179
+
180
+ RubyFunctor::RubyFunctor(VALUE obj) : ptr(new RubyClientData(obj)){
181
+
182
+ }
183
+
184
+
185
+ void RubyFunctor::operator()( wxEvent & event )
186
+ {
187
+ rb_funcall(ptr->mRuby,rwx_IDcall,1,wrap(&event));
188
+ }
189
+ #if wxUSE_GUI
190
+ void RubyFunctor::operator()( wxCommandEvent & event )
191
+ {
192
+ rb_funcall(ptr->mRuby,rwx_IDcall,1,wrap(&event));
193
+ }
194
+ #endif
195
+ #if wxUSE_TIMER
196
+ void RubyFunctor::operator()( wxTimerEvent & event )
197
+ {
198
+ rb_funcall(ptr->mRuby,rwx_IDcall,1,wrap(&event));
199
+ }
200
+ #endif
201
+ namespace RubyWX {
202
+ namespace EvtHandler {
203
+
204
+ DLL_LOCAL VALUE _bind(int argc,VALUE *argv,VALUE self)
205
+ {
206
+ VALUE type,id,last,proc;
207
+ rb_scan_args(argc, argv, "12&",&type,&id,&last,&proc);
208
+
209
+ if(NIL_P(proc))
210
+ proc = rb_block_proc();
211
+
212
+ _self->Bind(wxEventTypeTag<wxEvent>(unwrapEventType(type)),RubyFunctor(proc),unwrapID(id),unwrapID(last));
213
+
214
+ return self;
215
+ }
216
+
217
+ DLL_LOCAL VALUE _call(int argc,VALUE *argv,VALUE self)
218
+ {
219
+ VALUE type,id;
220
+ rb_scan_args(argc, argv, "11",&type,&id);
221
+
222
+ wxEvent *evt;
223
+ wxEventType etype = unwrapEventType(type);
224
+
225
+ evttypeclassholdertype::iterator it = evttypeclassholder.find(etype);
226
+ if(it != evttypeclassholder.end())
227
+ evt = wxDynamicCast(it->second->CreateObject(),wxEvent);
228
+ else
229
+ #if wxUSE_GUI
230
+ evt = new wxCommandEvent;
231
+ #else
232
+ evt = new RubyEvent;
233
+ #endif
234
+
235
+ evt->SetEventType(etype);
236
+ if(!NIL_P(id))
237
+ evt->SetId(unwrapID(id));
238
+ else
239
+ {
240
+ if(rb_respond_to(self,rwx_IDid))
241
+ evt->SetId(unwrapID(rb_funcall(self,rwx_IDid,0)));
242
+ }
243
+ evt->SetEventObject(_self);
244
+
245
+ if(rb_block_given_p())
246
+ rb_yield(wrap(evt));
247
+
248
+ return wrap(_self->ProcessEvent(*evt));
249
+
250
+ }
251
+
252
+ DLL_LOCAL VALUE _callafter(int argc,VALUE *argv,VALUE self)
253
+ {
254
+ #ifdef wxHAS_CALL_AFTER
255
+ _self->QueueEvent(new wxAsyncMethodCallEvent1<RubyCallAfter, VALUE>(
256
+ new RubyCallAfter(rb_block_proc()), &RubyCallAfter::call, self
257
+ ));
258
+ #else
259
+
260
+ #endif
261
+ return Qnil;
262
+
263
+ }
264
+
265
+ }
266
+ }
267
+
268
+
269
+ DLL_LOCAL void Init_WXEvtHandler(VALUE rb_mWX)
270
+ {
271
+ #if 0
272
+ rb_mWX = rb_define_module("WX");
273
+ #endif
274
+
275
+ using namespace RubyWX::EvtHandler;
276
+ rb_mWXEvtHandler = rb_define_module_under(rb_mWX,"EvtHandler");
277
+
278
+ rb_define_method(rb_mWXEvtHandler,"bind",RUBY_METHOD_FUNC(_bind),-1);
279
+ rb_define_method(rb_mWXEvtHandler,"call",RUBY_METHOD_FUNC(_call),-1);
280
+
281
+ rb_define_method(rb_mWXEvtHandler,"call_after",RUBY_METHOD_FUNC(_callafter),-1);
282
+
283
+ //because only Evthandler are created different
284
+ registerInfo<wxEvtHandler>(Qnil);
285
+
286
+ rwx_IDcall = rb_intern("call");
287
+ rwx_IDid = rb_intern("id");
288
+ }
289
+
290
+
291
+