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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7daea4298f8fa4179a561773567028921b532dfa
4
+ data.tar.gz: 086761364b235c6e588cdccfe7642861dc17b2f7
5
+ SHA512:
6
+ metadata.gz: 5b613965f1aeb188536fa7ad27cb6b9dca2d69a2bcf0283c6cc23339414335142d6a8c4e2c39372aab544a5b2c5dc94dbb272b81733d2367b68238f9810c65c4
7
+ data.tar.gz: 0ee62eed5e4e037f9f88f171de4fbdb85bfbed0656887a02f01fb1b0dcbf5cbc77b356d6ff102e309a6718751b8346596d6d133a359e7071544bab82f7ccf452
@@ -0,0 +1,49 @@
1
+ # Compiled Object files
2
+ *.slo
3
+ *.lo
4
+ *.o
5
+
6
+ # Compiled Dynamic libraries
7
+ *.so
8
+ *.dylib
9
+ *.bundle
10
+
11
+ # Compiled Static libraries
12
+ *.lai
13
+ *.la
14
+ *.a
15
+
16
+
17
+ #eclipse project files
18
+ .cproject
19
+ .project
20
+ .settings
21
+
22
+ # Ignore mkmf-generated files
23
+ ext/Makefile
24
+ ext/extconf.h
25
+ ext/mkmf.log
26
+
27
+ #ignore temp files
28
+ *.*~
29
+
30
+ # Generated Packages
31
+ *.gem
32
+ *.rbc
33
+ .bundle
34
+ .config
35
+ coverage
36
+ InstalledFiles
37
+ lib/bundler/man
38
+ pkg
39
+ rdoc
40
+ spec/reports
41
+ test/tmp
42
+ test/version_tmp
43
+ tmp
44
+
45
+ # YARD artifacts
46
+ .yardoc
47
+ _yardoc
48
+ doc/
49
+ /Debug
data/COPYING ADDED
File without changes
File without changes
@@ -0,0 +1,100 @@
1
+ # -*- mode: ruby; coding: utf-8 -*-
2
+ gem "rdoc"
3
+ require "tmpdir"
4
+ require "rake"
5
+ require "rake/clean"
6
+ require "rake/testtask"
7
+ require "rubygems/package_task"
8
+ require "rdoc/task"
9
+
10
+ begin
11
+ require 'rake/extensiontask'
12
+ rescue LoadError
13
+ end
14
+
15
+ ENV["RDOCOPT"] = "" if ENV["RDOCOPT"]
16
+ if RDoc::VERSION < "4.1"
17
+ TMPSRCDIR = Dir.mktmpdir
18
+ CLEAN.include(TMPSRCDIR)
19
+ end
20
+ CLOBBER.include("rdoc")
21
+
22
+
23
+ load "rwx.gemspec"
24
+
25
+ Gem::PackageTask.new(GEMSPEC) do |pkg|
26
+ pkg.need_zip = true
27
+ pkg.need_tar = true
28
+ pkg.need_tar_bz2 = true
29
+ pkg.need_tar_gz = true
30
+ end
31
+
32
+ unless Rake.const_defined?(:ExtensionTask)
33
+ desc "Compiles rwx, outputting ext/rwx.so"
34
+ task :compile do
35
+ cd "ext"
36
+ ruby "extconf.rb"
37
+ sh "make"
38
+ cd ".."
39
+ end
40
+ else
41
+ Rake::ExtensionTask.new('rwx',GEMSPEC) do |t|
42
+ t.ext_dir = "ext"
43
+ t.source_pattern = "*.cpp"
44
+ end
45
+
46
+ Rake::ExtensionTask.new('rwx',GEMSPEC) do |t|
47
+ t.ext_dir = "ext"
48
+ t.source_pattern = "*.cpp"
49
+
50
+ t.cross_compile = true # enable cross compilation (requires cross compile toolchain)
51
+ t.cross_platform = 'i386-mswin32' # forces the Windows platform instead of the default one
52
+ end
53
+ end
54
+
55
+ Rake::TestTask.new do |t|
56
+ t.verbose = true
57
+ end
58
+
59
+ RDoc::Task.new do |rdoc|
60
+ rdoc.title = "rwx RDocs"
61
+ rdoc.main = "README.rdoc"
62
+ if RDoc::VERSION < "4.1"
63
+ rdoc.rdoc_files.include("*.rdoc", TMPSRCDIR)
64
+ # We will have another 'rdoc' task that depends on this task
65
+ rdoc.name = :docs
66
+ else
67
+ rdoc.rdoc_files.include("*.rdoc", "ext/*.cpp")
68
+ end
69
+ rdoc.rdoc_dir = "rdoc"
70
+ end
71
+
72
+ if RDoc::VERSION < "4.1"
73
+
74
+ # This task removes the DLL_LOCAL statements temporarily to
75
+ # make RDoc work properly. The stripped sources are to be
76
+ # found in TMPSRCDIR afterwards.
77
+ task :prepare_sources do
78
+ rm_r TMPSRCDIR if File.directory?(TMPSRCDIR)
79
+
80
+ mkdir TMPSRCDIR
81
+
82
+ #cp "ext/*.cpp", TMPSRCDIR
83
+ Dir["ext/*.cpp"].each do |path|
84
+ path = path[/\/(.+)/,1]
85
+ puts "Removing DLL_LOCAL in #{path}"
86
+
87
+ File.write("#{TMPSRCDIR}/#{path}",File.read("ext/#{path}").gsub(/DLL_LOCAL\s?/, ""))
88
+ end
89
+ end
90
+
91
+ # Removes the temporary directory created by :prepare_sources.
92
+ task :clean_sources do
93
+ rm_r TMPSRCDIR
94
+ end
95
+
96
+ desc "Generate the RDoc documentation."
97
+ task :rdoc => [:prepare_sources, :docs, :clean_sources]
98
+
99
+ end
100
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1-dev
@@ -0,0 +1,112 @@
1
+ require "mkmf"
2
+
3
+ # add check for member function, does need default constructor for class
4
+ def have_member_func(klass,member,header)
5
+ if have_func("#{klass}().#{member}()",header)
6
+ $defs[-1] = "-DHAVE_#{klass.tr_cpp}_#{member.tr_cpp}"
7
+ end
8
+ end
9
+
10
+ dir_config "rwx"
11
+
12
+ if(wx_config = find_executable('wx-config'))
13
+
14
+ if `#{wx_config} --version`.chomp < "3.0.0"
15
+ abort("wx version outdated, please update to 3.0.0 or newer")
16
+ end
17
+
18
+ # An ruby extension does need to be build against
19
+ # the same compiler as ruby was
20
+ unless CONFIG["CC"] && find_executable(CONFIG["CC"])
21
+ abort("C compiler not found!")
22
+ end
23
+ unless CONFIG["CXX"] && find_executable(CONFIG["CXX"])
24
+ abort("C++ compiler not found!")
25
+ end
26
+
27
+ cc = `#{wx_config} --cc`.chomp
28
+ unless cc == CONFIG["CC"]
29
+ warn("CC compiler missmatch %s == %s" % [cc, CONFIG["CC"]])
30
+ end
31
+
32
+ cxx = `#{wx_config} --cxx`.chomp
33
+ unless cxx == CONFIG["CXX"]
34
+ warn("CXX compiler missmatch %s == %s" % [cxx, CONFIG["CXX"]])
35
+ end
36
+
37
+ #earlier versions of ruby does not have that constant
38
+ $CXXFLAGS = CONFIG["CXXFLAGS"] unless defined?($CXXFLAGS)
39
+
40
+ #for some function add the base classes
41
+ extra_libs = []
42
+ case `#{wx_config} --basename`
43
+ when /gtk2/
44
+ extra_libs << "gtk+-x11-2.0" << "gdk-x11-2.0"
45
+ when /gtk3/
46
+ extra_libs << "gtk+-x11-3.0" << "gdk-x11-3.0"
47
+ end
48
+
49
+ extra_libs.each {|l|
50
+ pkg = pkg_config(l)
51
+ #because pkg forgot to add the include paths to cxx flags
52
+ $CXXFLAGS << pkg[0] if pkg && !$CXXFLAGS[pkg[0]]
53
+ }
54
+
55
+ all = " -fvisibility-inlines-hidden"
56
+ $CFLAGS << all << " -x c++ -g -Wall "
57
+ $CXXFLAGS << all << " -g -Wall "
58
+ $CPPFLAGS << all << " -g "
59
+ $LDFLAGS << all << " "
60
+
61
+ # add the wx-config flags
62
+ $CFLAGS << `#{wx_config} --cflags`.chomp
63
+ $CXXFLAGS << `#{wx_config} --cxxflags`.chomp
64
+ $CPPFLAGS << `#{wx_config} --cppflags`.chomp
65
+ $LDFLAGS << `#{wx_config} --libs all`.chomp
66
+
67
+ with_cflags(" -x c++ ") {
68
+ # need c++ for some of the tests
69
+ RbConfig::CONFIG["CC"] = CONFIG["CXX"]
70
+
71
+ have_header("wx/preferences.h")
72
+
73
+ #check for better Bind commmand
74
+ unless have_macro("wxHAS_EVENT_BIND","wx/wx.h")
75
+ abort("need wxHAS_EVENT_BIND, update your compiler!")
76
+ end
77
+
78
+ #check for Default-Constructors
79
+ have_func("wxContextHelpButton()","wx/cshelp.h")
80
+ have_func("wxNumberEntryDialog()","wx/numdlg.h")
81
+ have_func("wxPasswordEntryDialog()","wx/textdlg.h")
82
+ have_func("wxProgressDialog()","wx/progdlg.h")
83
+ have_func("wxMessageDialog()","wx/msgdlg.h")
84
+ have_func("wxGenericMessageDialog()","wx/generic/msgdlgg.h")
85
+ have_func("wxRichMessageDialog()","wx/richmsgdlg.h")
86
+
87
+ #check for instance methods, that classes need to have default constuctor
88
+ have_member_func("wxFontPickerCtrl","GetSelectedColour","wx/fontpicker.h")
89
+ have_member_func("wxInfoBar","GetButtonCount","wx/infobar.h")
90
+
91
+ #check for enum flags
92
+ have_const("wxFD_NO_FOLLOW","wx/filedlg.h")
93
+ have_const("wxDIRCTRL_DEFAULT_STYLE",["wx/wx.h", "wx/dirctrl.h"])
94
+
95
+ }
96
+ else
97
+ abort("wx-config executable not found!")
98
+
99
+ end
100
+
101
+ $defs.push("-DRUBY_UNTYPED_DATA_WARNING=1")
102
+
103
+ #drop some of the warn flags because they are not valid for C++
104
+ CONFIG["warnflags"].gsub!(
105
+ Regexp.union(
106
+ "-Wdeclaration-after-statement",
107
+ "-Wimplicit-function-declaration",
108
+ "-Wextra" #wxAUI is a bit buggy
109
+ ), "")
110
+
111
+ create_header
112
+ create_makefile "rwx"
@@ -0,0 +1,432 @@
1
+ /*
2
+ * main.cpp
3
+ *
4
+ * Created on: 04.05.2012
5
+ * Author: hanmac
6
+ */
7
+
8
+ #include "main.hpp"
9
+
10
+ #include <wx/arrstr.h>
11
+
12
+ #include <wx/filename.h>
13
+
14
+ infoholdertype infoklassholder;
15
+ typeholdertype typeklassholder;
16
+
17
+ enumregistertype enumregister;
18
+
19
+ datatypeholdertype datatypeholder;
20
+ datatypeholdertype datatypeholder_const;
21
+
22
+ VALUE global_holder;
23
+
24
+ typedef std::map<VALUE,std::size_t> ref_countertype;
25
+ ref_countertype ref_counter;
26
+
27
+
28
+ void rwx_refobject(VALUE object)
29
+ {
30
+ if(ref_counter[object] == 0)
31
+ rb_hash_aset(global_holder,INT2NUM(object),object);
32
+ ref_counter[object]++;
33
+ }
34
+
35
+ bool rwx_unrefobject(VALUE object)
36
+ {
37
+ if(ref_counter[object] != 0)
38
+ ref_counter[object]--;
39
+ if(ref_counter[object] == 0) {
40
+ rb_hash_delete(global_holder,INT2NUM(object));
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+
46
+ void registerDataType(VALUE klass, RUBY_DATA_FUNC freefunc, size_t (*sizefunc)(const void *))
47
+ {
48
+ if(!NIL_P(klass))
49
+ {
50
+ rb_data_type_t str = {
51
+ rb_class2name(klass),
52
+ {0, freefunc, sizefunc,},
53
+ unwrapDataType(RCLASS_SUPER(klass)), NULL,
54
+ };
55
+
56
+ datatypeholder[klass] = str;
57
+ if(freefunc) {
58
+ rb_data_type_t str_const = {
59
+ (std::string(rb_class2name(klass)) + "(const)").c_str(),
60
+ {0, 0, sizefunc,},
61
+ &datatypeholder[klass], NULL,
62
+ };
63
+ datatypeholder_const[klass] = str_const;
64
+ }else {
65
+ datatypeholder_const[klass] = str;
66
+ }
67
+ }
68
+ }
69
+
70
+ void registerDataType(VALUE klass)
71
+ {
72
+ registerDataType(klass, RUBY_TYPED_NEVER_FREE, NULL);
73
+ }
74
+
75
+ void* unwrapTypedPtr(const VALUE &obj, rb_data_type_t* rbdata)
76
+ {
77
+ if(NIL_P(obj))
78
+ return NULL;
79
+
80
+ if(!rbdata) {
81
+ rb_raise(rb_eTypeError,"%s unknown datatype", rb_obj_classname(obj));
82
+ return NULL;
83
+ }
84
+ void* data = Check_TypedStruct(obj, rbdata);
85
+ if(!data) {
86
+ rb_raise(
87
+ rb_eRuntimeError, "destroyed object of %s", rb_obj_classname(obj)
88
+ );
89
+ return NULL;
90
+ }
91
+ return data;
92
+
93
+ }
94
+
95
+ VALUE wrapClass(const wxClassInfo * info)
96
+ {
97
+ infoholdertype::iterator it = infoklassholder.find(info);
98
+ if(it != infoklassholder.end())
99
+ return it->second;
100
+ if(const wxClassInfo *base = info->GetBaseClass1())
101
+ return wrapClass(base);
102
+ return Qnil;
103
+ }
104
+
105
+ rb_data_type_t* unwrapDataType(const VALUE& klass)
106
+ {
107
+ if(klass == rb_cObject)
108
+ return NULL;
109
+ datatypeholdertype::iterator it = datatypeholder.find(klass);
110
+ if(it != datatypeholder.end())
111
+ return &it->second;
112
+ return unwrapDataType(RCLASS_SUPER(klass));
113
+ }
114
+
115
+
116
+ VALUE wrapTypedPtr(void *arg,VALUE klass)
117
+ {
118
+ if(arg){
119
+ rb_data_type_t* datatype = unwrapDataType(klass);
120
+ if(!datatype)
121
+ rb_fatal("%s unknown datatype",rb_class2name(klass));
122
+
123
+ return TypedData_Wrap_Struct(klass, datatype, arg);
124
+ }
125
+ return Qnil;
126
+ }
127
+
128
+ #define type_wrap(t,get,set) \
129
+ template <>\
130
+ t unwrap< t >(const VALUE &val )\
131
+ {\
132
+ return get(val);\
133
+ }\
134
+ template <>\
135
+ VALUE wrap< t >(const t &st )\
136
+ {\
137
+ return set(st);\
138
+ }\
139
+
140
+ #define type_wrap_array(t) \
141
+ template <>\
142
+ VALUE wrap< t >(const t &st )\
143
+ {\
144
+ VALUE ary = rb_ary_new();\
145
+ for(t::const_iterator it = st.begin(); it != st.end(); ++it)\
146
+ rb_ary_push(ary,wrap(*it));\
147
+ return ary;\
148
+ }\
149
+ template <>\
150
+ t unwrap< t >(const VALUE &val )\
151
+ {\
152
+ t arry;\
153
+ if(NIL_P(val))\
154
+ return arry;\
155
+ VALUE dp(rb_Array(val));\
156
+ std::size_t length = RARRAY_LEN(dp);\
157
+ for(std::size_t i = 0; i < length; ++i)\
158
+ arry.Add(unwrap<t::value_type>(RARRAY_AREF(dp,i)));\
159
+ return arry;\
160
+ }
161
+
162
+ template <>
163
+ bool unwrap< bool >(const VALUE &val )
164
+ {
165
+ return RTEST(val);
166
+ }
167
+
168
+ template <>
169
+ VALUE wrap< bool >(const bool &st )
170
+ {
171
+ return st ? Qtrue : Qfalse;
172
+ }
173
+
174
+ type_wrap(int,NUM2INT,INT2NUM)
175
+ type_wrap(double,NUM2DBL,DBL2NUM)
176
+ type_wrap(unsigned int,NUM2UINT,UINT2NUM)
177
+ type_wrap(long,NUM2LONG,LONG2NUM)
178
+ type_wrap(unsigned long,NUM2ULONG,ULONG2NUM)
179
+
180
+ template <>
181
+ VALUE wrap< wxString >(const wxString &st )
182
+ {
183
+ #ifdef HAVE_RUBY_ENCODING_H
184
+ return rb_enc_str_new(st.c_str(),strlen(st.c_str()),rb_utf8_encoding());
185
+ #else
186
+ return rb_str_new2(st.c_str());
187
+ #endif
188
+ }
189
+ template <>
190
+ VALUE wrap< wxChar >(const wxChar &c )
191
+ {
192
+ return wrap(wxString(c));
193
+ }
194
+
195
+ template <>
196
+ char* unwrap< char* >(const VALUE &val )
197
+ {
198
+ if(NIL_P(val))
199
+ return NULL;
200
+ if (rb_obj_is_kind_of(val, rb_cString)){
201
+ return RSTRING_PTR(val);
202
+ }
203
+ else
204
+ return unwrap< char* >(rb_String(val));
205
+ }
206
+
207
+ template <>
208
+ wxString unwrap< wxString >(const VALUE &val )
209
+ {
210
+ if(NIL_P(val))
211
+ return wxEmptyString;
212
+ else
213
+ return wxString(unwrap< char* >(val));
214
+ }
215
+
216
+ type_wrap_array(wxArrayString)
217
+ type_wrap_array(wxArrayInt)
218
+
219
+ template <>
220
+ VALUE wrap< wxDateTime >(const wxDateTime &st )
221
+ {
222
+ return rb_time_new(st.GetTicks(),st.GetMillisecond() * 10);
223
+ }
224
+
225
+ template <>
226
+ wxDateTime unwrap< wxDateTime >(const VALUE &val )
227
+ {
228
+ wxDateTime result;
229
+ result.SetToCurrent();
230
+ result.MakeTimezone(
231
+ NUM2UINT(rb_funcall(val,rb_intern("gmt_offset"),0)) - 3600,
232
+ RTEST(rb_funcall(val,rb_intern("dst?"),0))
233
+ );
234
+
235
+ result.Set(
236
+ NUM2UINT(rb_funcall(val,rb_intern("day"),0)),
237
+ (wxDateTime::Month)(NUM2UINT(rb_funcall(val,rb_intern("month"),0))-1),
238
+ NUM2UINT(rb_funcall(val,rb_intern("year"),0)),
239
+ NUM2UINT(rb_funcall(val,rb_intern("hour"),0)),
240
+ NUM2UINT(rb_funcall(val,rb_intern("min"),0)),
241
+ NUM2UINT(rb_funcall(val,rb_intern("sec"),0)),
242
+ NUM2UINT(rb_funcall(val,rb_intern("usec"),0)) / 1000
243
+ );
244
+ return result;
245
+ }
246
+
247
+ enumtype* registerEnum(const std::string& name,const std::string& type ,int def)
248
+ {
249
+ enumtype *etype = new enumtype;
250
+ enumregister.insert(std::make_pair(type,etype));
251
+ etype->name = name;
252
+ etype->allow_array = true;
253
+ etype->defaults = def;
254
+ return etype;
255
+ }
256
+
257
+
258
+ VALUE wrapenum(const int &arg, const std::string& name)
259
+ {
260
+ enumtype::value_type &enummap = enumregister[name]->values;
261
+ enumtype::value_type::iterator it = enummap.find(arg);
262
+ if(it != enummap.end())
263
+ return ID2SYM(it->second);
264
+ bool found = false;
265
+
266
+ int carg(arg);
267
+
268
+ VALUE result = rb_ary_new();
269
+ for(it = enummap.begin();it != enummap.end();++it)
270
+ {
271
+ if((carg & it->first) != 0)
272
+ {
273
+ found = true;
274
+ rb_ary_push(result,ID2SYM(it->second));
275
+ carg &= ~it->first;
276
+ }
277
+ }
278
+ return found ? result : Qnil;
279
+ }
280
+
281
+ int unwrapenum(const VALUE &arg, const std::string& name)
282
+ {
283
+ enumregistertype::iterator it = enumregister.find(name);
284
+ if(it != enumregister.end())
285
+ {
286
+ enumtype* etype = it->second;
287
+ if(NIL_P(arg))
288
+ return etype->defaults;
289
+ else if(SYMBOL_P(arg))
290
+ {
291
+ ID id(SYM2ID(arg));
292
+
293
+ for(enumtype::value_type::iterator it2 = etype->values.begin();
294
+ it2 != etype->values.end();
295
+ ++it2)
296
+ {
297
+ if(it2->second == id)
298
+ return it2->first;
299
+ }
300
+ rb_raise(rb_eTypeError,"%s is not a %s-Enum.",rb_id2name(id),etype->name.c_str());
301
+ }else if(rb_obj_is_kind_of(arg,rb_cArray) && etype->allow_array )
302
+ {
303
+ int result = 0;
304
+ size_t count = RARRAY_LEN(arg);
305
+ for(size_t i = 0; i < count; ++i)
306
+ result = result | unwrapenum(RARRAY_AREF(arg,i),name);
307
+ }else
308
+ return NUM2INT(arg);
309
+ }
310
+ return 0;
311
+ }
312
+
313
+ int unwrap_iconflag(const VALUE &val,int mask)
314
+ {
315
+ int result = unwrapenum(val,"icon_flag");
316
+
317
+ if((result & mask) != result)
318
+ rb_raise(rb_eTypeError,"%"PRIsVALUE" is not a in %d mask", val, mask);
319
+
320
+ return result;
321
+
322
+ }
323
+
324
+ int unwrap_buttonflag(const VALUE& val)
325
+ {
326
+ return unwrapenum(val,"button_flag");
327
+ }
328
+
329
+ bool check_file_loadable(const wxString& path)
330
+ {
331
+ errno = 0;
332
+ wxFileName dir(wxPathOnly(path));
333
+ dir.MakeAbsolute(wxGetCwd());
334
+
335
+ wxFileName file(path);
336
+ file.MakeAbsolute(wxGetCwd());
337
+
338
+ if(dir.DirExists())
339
+ {
340
+ if(file.FileExists()){
341
+ if(!file.IsFileReadable())
342
+ errno = EACCES;
343
+ }else
344
+ errno = ENOENT;
345
+ }else
346
+ errno = ENOENT;
347
+
348
+ if(errno)
349
+ {
350
+ rb_sys_fail(path.c_str());
351
+ return false;
352
+ }
353
+ return true;
354
+
355
+ }
356
+ bool check_file_saveable(const wxString& path)
357
+ {
358
+ errno = 0;
359
+
360
+ wxFileName dir(wxPathOnly(path));
361
+ dir.MakeAbsolute(wxGetCwd());
362
+
363
+ wxFileName file(path);
364
+ file.MakeAbsolute(wxGetCwd());
365
+ if(dir.DirExists())
366
+ {
367
+ if(file.FileExists() && !file.IsFileWritable())
368
+ errno = EACCES;
369
+ else if(!dir.IsDirWritable())
370
+ errno = EACCES;
371
+ }else
372
+ errno = ENOENT;
373
+
374
+ if(errno)
375
+ {
376
+ rb_sys_fail(path.c_str());
377
+ return false;
378
+ }
379
+ return true;
380
+ }
381
+
382
+ bool set_hash_flag_option(VALUE hash,const char* name,const int& flag,int& val)
383
+ {
384
+ VALUE temp;
385
+ if(!NIL_P(temp=rb_hash_aref(hash,ID2SYM(rb_intern(name)))))
386
+ {
387
+ if(RTEST(temp))
388
+ val |= flag;
389
+ else
390
+ val &= ~flag;
391
+
392
+ return true;
393
+ }
394
+ return false;
395
+ }
396
+
397
+ bool nil_check(VALUE window,const char* type,bool raise)
398
+ {
399
+ bool result = NIL_P(window);
400
+ if(result && raise)
401
+ rb_raise(rb_eTypeError,"%s can't be nil.",type);
402
+ return !result;
403
+ }
404
+
405
+ bool nil_check(VALUE window,VALUE klass, bool raise)
406
+ {
407
+ return nil_check(window,rb_class2name(klass),raise);
408
+ }
409
+
410
+ bool nil_check(VALUE window, bool raise)
411
+ {
412
+ return nil_check(window,"window",raise);
413
+ }
414
+
415
+ bool check_index(int &cidx,const std::size_t &count)
416
+ {
417
+ bool raise = false;
418
+ if(cidx >= (int)count){
419
+ raise = true;
420
+ }else if(cidx < 0)
421
+ {
422
+ int tmp = cidx + count;
423
+ if(tmp > 0 && tmp <= (int)count)
424
+ cidx = tmp;
425
+ else
426
+ raise = true;
427
+ }
428
+
429
+ if(raise)
430
+ rb_raise(rb_eIndexError,"%d out of index",cidx);
431
+ return !raise;
432
+ }