wxruby64 2.0.1-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (279) hide show
  1. checksums.yaml +7 -0
  2. data/INSTALL +254 -0
  3. data/LICENSE +53 -0
  4. data/README +198 -0
  5. data/art/wxruby-128x128.png +0 -0
  6. data/art/wxruby-256x256.png +0 -0
  7. data/art/wxruby-64x64.png +0 -0
  8. data/art/wxruby.png +0 -0
  9. data/lib/wx.rb +53 -0
  10. data/lib/wx/accessors.rb +68 -0
  11. data/lib/wx/classes/acceleratortable.rb +28 -0
  12. data/lib/wx/classes/animation.rb +18 -0
  13. data/lib/wx/classes/app.rb +51 -0
  14. data/lib/wx/classes/artprovider.rb +31 -0
  15. data/lib/wx/classes/auinotebook.rb +9 -0
  16. data/lib/wx/classes/bitmap.rb +59 -0
  17. data/lib/wx/classes/busycursor.rb +12 -0
  18. data/lib/wx/classes/checklistbox.rb +46 -0
  19. data/lib/wx/classes/choice.rb +4 -0
  20. data/lib/wx/classes/clientdc.rb +13 -0
  21. data/lib/wx/classes/clipboard.rb +56 -0
  22. data/lib/wx/classes/colour.rb +49 -0
  23. data/lib/wx/classes/combobox.rb +4 -0
  24. data/lib/wx/classes/commandevent.rb +7 -0
  25. data/lib/wx/classes/controlwithitems.rb +10 -0
  26. data/lib/wx/classes/data_object.rb +14 -0
  27. data/lib/wx/classes/data_object_simple.rb +6 -0
  28. data/lib/wx/classes/dataformat.rb +23 -0
  29. data/lib/wx/classes/dc.rb +57 -0
  30. data/lib/wx/classes/event.rb +5 -0
  31. data/lib/wx/classes/evthandler.rb +1039 -0
  32. data/lib/wx/classes/font.rb +118 -0
  33. data/lib/wx/classes/functions.rb +44 -0
  34. data/lib/wx/classes/gauge.rb +12 -0
  35. data/lib/wx/classes/genericdirctrl.rb +36 -0
  36. data/lib/wx/classes/grid.rb +146 -0
  37. data/lib/wx/classes/hboxsizer.rb +6 -0
  38. data/lib/wx/classes/helpcontroller.rb +5 -0
  39. data/lib/wx/classes/helpcontrollerhelpprovider.rb +23 -0
  40. data/lib/wx/classes/helpprovider.rb +15 -0
  41. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  42. data/lib/wx/classes/htmlwindow.rb +14 -0
  43. data/lib/wx/classes/icon.rb +32 -0
  44. data/lib/wx/classes/iconbundle.rb +3 -0
  45. data/lib/wx/classes/image.rb +53 -0
  46. data/lib/wx/classes/imagelist.rb +3 -0
  47. data/lib/wx/classes/listbox.rb +4 -0
  48. data/lib/wx/classes/listctrl.rb +33 -0
  49. data/lib/wx/classes/locale.rb +28 -0
  50. data/lib/wx/classes/mediactrl.rb +48 -0
  51. data/lib/wx/classes/menu.rb +62 -0
  52. data/lib/wx/classes/menuitem.rb +7 -0
  53. data/lib/wx/classes/notebook.rb +9 -0
  54. data/lib/wx/classes/object.rb +14 -0
  55. data/lib/wx/classes/paintdc.rb +12 -0
  56. data/lib/wx/classes/point.rb +56 -0
  57. data/lib/wx/classes/previewframe.rb +13 -0
  58. data/lib/wx/classes/rect.rb +19 -0
  59. data/lib/wx/classes/richtextctrl.rb +63 -0
  60. data/lib/wx/classes/simplehelpprovider.rb +38 -0
  61. data/lib/wx/classes/size.rb +58 -0
  62. data/lib/wx/classes/sizer.rb +43 -0
  63. data/lib/wx/classes/sound.rb +23 -0
  64. data/lib/wx/classes/splitterwindow.rb +10 -0
  65. data/lib/wx/classes/standardpaths.rb +9 -0
  66. data/lib/wx/classes/styledtextctrl.rb +92 -0
  67. data/lib/wx/classes/textctrl.rb +14 -0
  68. data/lib/wx/classes/texturlevent.rb +18 -0
  69. data/lib/wx/classes/timer.rb +96 -0
  70. data/lib/wx/classes/toolbar.rb +36 -0
  71. data/lib/wx/classes/toolbartool.rb +4 -0
  72. data/lib/wx/classes/treectrl.rb +44 -0
  73. data/lib/wx/classes/validator.rb +7 -0
  74. data/lib/wx/classes/vboxsizer.rb +6 -0
  75. data/lib/wx/classes/window.rb +89 -0
  76. data/lib/wx/classes/xmlresource.rb +54 -0
  77. data/lib/wx/helpers.rb +54 -0
  78. data/lib/wx/keyword_ctors.rb +204 -0
  79. data/lib/wx/keyword_defs.rb +585 -0
  80. data/lib/wx/version.rb +3 -0
  81. data/lib/wxruby2.so +0 -0
  82. data/samples/SAMPLES-LICENSE.TXT +18 -0
  83. data/samples/aui/aui.rb +1356 -0
  84. data/samples/bigdemo/About.rbw +39 -0
  85. data/samples/bigdemo/ColorPanel.rbw +23 -0
  86. data/samples/bigdemo/GridSimple.rbw +78 -0
  87. data/samples/bigdemo/MDIDemo.rbw +57 -0
  88. data/samples/bigdemo/PopupMenu.rbw +149 -0
  89. data/samples/bigdemo/ShapedWindow.rbw +128 -0
  90. data/samples/bigdemo/Sizers.rbw +543 -0
  91. data/samples/bigdemo/bigdemo.rb +823 -0
  92. data/samples/bigdemo/demoTemplate.rbw +33 -0
  93. data/samples/bigdemo/helpfile.htb +0 -0
  94. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  95. data/samples/bigdemo/icons/Test 015.png +0 -0
  96. data/samples/bigdemo/icons/choice.bmp +0 -0
  97. data/samples/bigdemo/icons/choice.xpm +27 -0
  98. data/samples/bigdemo/icons/combo.bmp +0 -0
  99. data/samples/bigdemo/icons/combo.xpm +27 -0
  100. data/samples/bigdemo/icons/copy.xpm +25 -0
  101. data/samples/bigdemo/icons/cut.xpm +24 -0
  102. data/samples/bigdemo/icons/gauge.bmp +0 -0
  103. data/samples/bigdemo/icons/gauge.xpm +27 -0
  104. data/samples/bigdemo/icons/help.xpm +25 -0
  105. data/samples/bigdemo/icons/list.bmp +0 -0
  106. data/samples/bigdemo/icons/list.xpm +27 -0
  107. data/samples/bigdemo/icons/mondrian.ico +0 -0
  108. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  109. data/samples/bigdemo/icons/new.xpm +24 -0
  110. data/samples/bigdemo/icons/ogl.ico +0 -0
  111. data/samples/bigdemo/icons/ogl.xpm +45 -0
  112. data/samples/bigdemo/icons/open.xpm +26 -0
  113. data/samples/bigdemo/icons/paste.bmp +0 -0
  114. data/samples/bigdemo/icons/paste.xpm +38 -0
  115. data/samples/bigdemo/icons/pointy.png +0 -0
  116. data/samples/bigdemo/icons/preview.xpm +26 -0
  117. data/samples/bigdemo/icons/print.xpm +26 -0
  118. data/samples/bigdemo/icons/radio.bmp +0 -0
  119. data/samples/bigdemo/icons/radio.xpm +27 -0
  120. data/samples/bigdemo/icons/robert.xpm +415 -0
  121. data/samples/bigdemo/icons/sashtest.ico +0 -0
  122. data/samples/bigdemo/icons/save.xpm +25 -0
  123. data/samples/bigdemo/icons/smiles.bmp +0 -0
  124. data/samples/bigdemo/icons/smiles.xpm +39 -0
  125. data/samples/bigdemo/icons/smiley.ico +0 -0
  126. data/samples/bigdemo/icons/smiley.xpm +42 -0
  127. data/samples/bigdemo/icons/stattext.xpm +24 -0
  128. data/samples/bigdemo/icons/test2.bmp +0 -0
  129. data/samples/bigdemo/icons/test2.png +0 -0
  130. data/samples/bigdemo/icons/test2.xpm +79 -0
  131. data/samples/bigdemo/icons/text.bmp +0 -0
  132. data/samples/bigdemo/icons/text.xpm +27 -0
  133. data/samples/bigdemo/icons/tog1.bmp +0 -0
  134. data/samples/bigdemo/icons/tog1.xpm +38 -0
  135. data/samples/bigdemo/icons/tog2.bmp +0 -0
  136. data/samples/bigdemo/icons/tog2.xpm +38 -0
  137. data/samples/bigdemo/icons/wxruby-128x128.png +0 -0
  138. data/samples/bigdemo/icons/wxwin.ico +0 -0
  139. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  140. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  141. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  142. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  143. data/samples/bigdemo/run.rb +90 -0
  144. data/samples/bigdemo/tips.txt +7 -0
  145. data/samples/bigdemo/utils.rb +12 -0
  146. data/samples/bigdemo/wxArtProvider.rbw +281 -0
  147. data/samples/bigdemo/wxBitmapButton.rbw +65 -0
  148. data/samples/bigdemo/wxButton.rbw +64 -0
  149. data/samples/bigdemo/wxCalendarCtrl.rbw +60 -0
  150. data/samples/bigdemo/wxCheckBox.rbw +50 -0
  151. data/samples/bigdemo/wxCheckListBox.rbw +65 -0
  152. data/samples/bigdemo/wxChoice.rbw +47 -0
  153. data/samples/bigdemo/wxChoicebook.rbw +78 -0
  154. data/samples/bigdemo/wxColourDialog.rbw +31 -0
  155. data/samples/bigdemo/wxComboBox.rbw +77 -0
  156. data/samples/bigdemo/wxCursor.rbw +136 -0
  157. data/samples/bigdemo/wxDialog.rbw +74 -0
  158. data/samples/bigdemo/wxDirDialog.rbw +29 -0
  159. data/samples/bigdemo/wxDragImage.rbw +70 -0
  160. data/samples/bigdemo/wxFileDialog.rbw +37 -0
  161. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
  162. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
  163. data/samples/bigdemo/wxFontDialog.rbw +173 -0
  164. data/samples/bigdemo/wxFrame.rbw +53 -0
  165. data/samples/bigdemo/wxGauge.rbw +71 -0
  166. data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
  167. data/samples/bigdemo/wxGrid.rbw +66 -0
  168. data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
  169. data/samples/bigdemo/wxListBox.rbw +140 -0
  170. data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -0
  171. data/samples/bigdemo/wxMDIWindows.rbw +50 -0
  172. data/samples/bigdemo/wxMenu.rbw +236 -0
  173. data/samples/bigdemo/wxMessageDialog.rbw +27 -0
  174. data/samples/bigdemo/wxMiniFrame.rbw +70 -0
  175. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -0
  176. data/samples/bigdemo/wxNotebook.rbw +136 -0
  177. data/samples/bigdemo/wxProgressDialog.rbw +43 -0
  178. data/samples/bigdemo/wxRadioBox.rbw +72 -0
  179. data/samples/bigdemo/wxRadioButton.rbw +125 -0
  180. data/samples/bigdemo/wxSashWindow.rbw +141 -0
  181. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
  182. data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
  183. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
  184. data/samples/bigdemo/wxSlider.rbw +42 -0
  185. data/samples/bigdemo/wxSpinButton.rbw +50 -0
  186. data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
  187. data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
  188. data/samples/bigdemo/wxStaticBitmap.rbw +47 -0
  189. data/samples/bigdemo/wxStaticText.rbw +55 -0
  190. data/samples/bigdemo/wxStatusBar.rbw +126 -0
  191. data/samples/bigdemo/wxTextCtrl.rbw +149 -0
  192. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
  193. data/samples/bigdemo/wxToggleButton.rbw +49 -0
  194. data/samples/bigdemo/wxToolBar.rbw +131 -0
  195. data/samples/bigdemo/wxTreeCtrl.rbw +191 -0
  196. data/samples/calendar/calendar.rb +348 -0
  197. data/samples/caret/caret.rb +282 -0
  198. data/samples/caret/mondrian.xpm +44 -0
  199. data/samples/controls/controls.rb +1136 -0
  200. data/samples/controls/get_item_sample.rb +87 -0
  201. data/samples/controls/icons/choice.xpm +27 -0
  202. data/samples/controls/icons/combo.xpm +27 -0
  203. data/samples/controls/icons/gauge.xpm +27 -0
  204. data/samples/controls/icons/list.xpm +27 -0
  205. data/samples/controls/icons/radio.xpm +27 -0
  206. data/samples/controls/icons/stattext.xpm +24 -0
  207. data/samples/controls/icons/text.xpm +27 -0
  208. data/samples/controls/mondrian.ico +0 -0
  209. data/samples/controls/mondrian.xpm +44 -0
  210. data/samples/controls/test2.bmp +0 -0
  211. data/samples/dialogs/dialogs.rb +797 -0
  212. data/samples/dialogs/tips.txt +18 -0
  213. data/samples/dragdrop/dragdrop.rb +177 -0
  214. data/samples/drawing/bitmap.rb +49 -0
  215. data/samples/drawing/bitmap_image.rb +92 -0
  216. data/samples/drawing/graphics_drawing.rb +235 -0
  217. data/samples/drawing/maths_images.rb +265 -0
  218. data/samples/drawing/rmagic_bitmap_image.rb +110 -0
  219. data/samples/drawing/ruby-logo.jpg +0 -0
  220. data/samples/etc/activation.rb +102 -0
  221. data/samples/etc/choice.rb +67 -0
  222. data/samples/etc/miniframe.rb +79 -0
  223. data/samples/etc/sash.rb +130 -0
  224. data/samples/etc/scrollwin.rb +110 -0
  225. data/samples/etc/system_settings.rb +252 -0
  226. data/samples/etc/threaded.rb +72 -0
  227. data/samples/etc/toolbar_sizer_additem.rb +55 -0
  228. data/samples/etc/wizard.rb +74 -0
  229. data/samples/event/event.rb +182 -0
  230. data/samples/event/update_ui_event.rb +70 -0
  231. data/samples/grid/grid.rb +198 -0
  232. data/samples/grid/gridtablebase.rb +148 -0
  233. data/samples/html/html.rb +262 -0
  234. data/samples/listbook/listbook.rb +174 -0
  235. data/samples/listbook/listbook.xrc +370 -0
  236. data/samples/mdi/mdi.rb +85 -0
  237. data/samples/media/mediactrl.rb +167 -0
  238. data/samples/minimal/minimal.rb +77 -0
  239. data/samples/minimal/mondrian.ico +0 -0
  240. data/samples/minimal/mondrian.png +0 -0
  241. data/samples/minimal/nothing.rb +16 -0
  242. data/samples/opengl/cube.rb +130 -0
  243. data/samples/opengl/cube_anim_lighting.rb +191 -0
  244. data/samples/printing/mondrian.ico +0 -0
  245. data/samples/printing/mondrian.xpm +44 -0
  246. data/samples/printing/printing.rb +487 -0
  247. data/samples/sockets/SocketPackets.rb +27 -0
  248. data/samples/sockets/res/message-new.png +0 -0
  249. data/samples/sockets/res/user.png +0 -0
  250. data/samples/sockets/wxClient.rb +395 -0
  251. data/samples/sockets/wxServer.rb +422 -0
  252. data/samples/sockets/wxSocketGUI.rb +97 -0
  253. data/samples/text/document-open.png +0 -0
  254. data/samples/text/document-save.png +0 -0
  255. data/samples/text/edit-copy.png +0 -0
  256. data/samples/text/edit-cut.png +0 -0
  257. data/samples/text/edit-paste.png +0 -0
  258. data/samples/text/edit-redo.png +0 -0
  259. data/samples/text/edit-undo.png +0 -0
  260. data/samples/text/format-text-bold.png +0 -0
  261. data/samples/text/format-text-italic.png +0 -0
  262. data/samples/text/format-text-underline.png +0 -0
  263. data/samples/text/mondrian.ico +0 -0
  264. data/samples/text/mondrian.xpm +44 -0
  265. data/samples/text/preferences-desktop-font.png +0 -0
  266. data/samples/text/rich_textctrl.rb +290 -0
  267. data/samples/text/scintilla.rb +169 -0
  268. data/samples/text/textctrl.rb +111 -0
  269. data/samples/text/unicode.rb +242 -0
  270. data/samples/text/utf8.txt +15 -0
  271. data/samples/treectrl/icon1.xpm +79 -0
  272. data/samples/treectrl/icon2.xpm +53 -0
  273. data/samples/treectrl/icon3.xpm +79 -0
  274. data/samples/treectrl/icon4.xpm +43 -0
  275. data/samples/treectrl/icon5.xpm +79 -0
  276. data/samples/treectrl/treectrl.rb +1166 -0
  277. data/samples/xrc/samples.xrc +46 -0
  278. data/samples/xrc/xrc_sample.rb +76 -0
  279. metadata +330 -0
@@ -0,0 +1,18 @@
1
+ Startup tips are documented in the "Startup tips overview" section of wxWindows documentation.
2
+ These tips are being read from the tips.txt text file in this directory. Each line of the file contains a single tip.
3
+ If you close and open this tips dialog, you will notice that the tip numbers start at the point you were at when you closed the dialog last time. This allows easy cycling through the entire list of tips, instead of always showing the initial tips over and over.
4
+ Often you will want to save to the application's wxConfig, the last tip that the user saw, as well as whether they want to see tips on startup.
5
+ Comments in the tips file have a # as the first character. Comments are automatically skipped over. See the tips.txt file in this directory for the example.
6
+ # This line is a comment since it started with a #, and is skipped.
7
+ Blank lines in the tip file are also automatically skipped over. Lines with only spaces are also considered empty.
8
+ The next line in this tip file is empty, so it will be automatically skipped.
9
+
10
+ The next line in this tip file is just empty spaces, so it is considered empty too, and is also automatically skipped.
11
+
12
+ You can easily add translations to your startup tips via the usual gettext methods by wrapping a string in a gettext macro, which is _(""). See next tip for example.
13
+ _("This tip is marked as a translatable string by wrapping it inside the usual gettext macro, so it can be collected by gettext and added to a translation catalog. Your application can then use this catalog and serve out a translated version of the tip.")
14
+ Translatable strings must strictly begin with _(", not _( " or wxGetTranslation(" or something else.
15
+ If you are using gettext translatable strings, don't forget to escape to replace any " characters within the tip with a \" instead
16
+ _("This is a translatable tip with the quoted words \"Escape me\" properly escaped.")
17
+ If you have very specialized needs, you can derive your own wxTipProvider and use that instead.
18
+ If you want to modify the tip content at runtime for purposes other than translation (for example, variable expansion), one easy option is to use a custom tip provider derived from wxFileTipProvider. Your custom tip provider would contain a single virtual function to override: PreprocessTip().
@@ -0,0 +1,177 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+ require 'wx'
9
+
10
+ # This sample demonstrates the use of the Clipboard and Drag and Drop
11
+ # classes. Whilst the functionality of these is slightly different, they
12
+ # are both based around the use of the DataObject classes to exchange
13
+ # data of various sorts between applications (i.e. into and out of
14
+ # wxRuby)
15
+
16
+ # A ListBox that collects file names dropped onto it
17
+ class FileDropList < Wx::ListBox
18
+ def initialize(*args)
19
+ super
20
+ # Set the handler for drag and drop actions
21
+ self.drop_target = ListFileDropTarget.new(self)
22
+ end
23
+
24
+ # The class that actually handles the dropped files; it keeps a
25
+ # reference to the ListBox, and appends items as they are added
26
+ class ListFileDropTarget < Wx::FileDropTarget
27
+ def initialize(list)
28
+ super()
29
+ @list = list
30
+ end
31
+
32
+ # This method is overridden to specify what happens when a file is
33
+ # dropped
34
+ def on_drop_files(x, y, files)
35
+ files.each { | file | @list.append(file) }
36
+ true # currently need to return boolean from this method
37
+ end
38
+ end
39
+ end
40
+
41
+ class FileDropPane < Wx::Panel
42
+ LABEL = "Drag and drop files from Explorer/Finder/etc to here\n" +
43
+ "to add them to the list."
44
+ def initialize(parent)
45
+ super
46
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
47
+ txt = Wx::StaticText.new( self, :label => LABEL)
48
+ sizer.add(txt, 0, Wx::ALL, 4)
49
+
50
+ @drop = FileDropList.new(self)
51
+ sizer.add(@drop, 1, Wx::GROW|Wx::ALL, 4)
52
+ self.sizer = sizer
53
+ end
54
+ end
55
+
56
+ # A canvas which can display a pasted image
57
+ class PasteCanvas < Wx::Window
58
+ attr_accessor :bitmap
59
+ def initialize(parent)
60
+ super(parent, :style => Wx::SUNKEN_BORDER)
61
+ self.size = [ 200, 200 ]
62
+ @bitmap = Wx::NULL_BITMAP
63
+ evt_paint :on_paint
64
+ end
65
+
66
+ def on_paint(evt)
67
+ paint do | dc |
68
+ dc.clear
69
+ if bitmap.ok?
70
+ dc.draw_bitmap(bitmap, 0, 0, false)
71
+ end
72
+ dc.pen = Wx::BLACK_PEN
73
+ end
74
+ end
75
+ end
76
+
77
+ # A Notebook panel to hold an image-paste canvas
78
+ class PastePane < Wx::Panel
79
+ LABEL = "Use the buttons below to paste text and images from\n" +
80
+ "the system clipboard, and then to copy them back."
81
+ def initialize(parent)
82
+ super
83
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
84
+ txt = Wx::StaticText.new( self, :label => LABEL)
85
+ sizer.add(txt, 0, Wx::ALL, 4)
86
+
87
+ # Sizer for displaying text and image from the clipboard
88
+ paste_sizer = Wx::FlexGridSizer.new(2, 2, 2, 2)
89
+ paste_sizer.add_growable_col(0, 1)
90
+ paste_sizer.add_growable_col(1, 1)
91
+ paste_sizer.add_growable_row(1)
92
+
93
+ paste_sizer.add( Wx::StaticText.new(self, :label => 'Clipboard text') )
94
+ paste_sizer.add( Wx::StaticText.new(self, :label => 'Clipboard image') )
95
+
96
+ # Target for displaying text from the clipboard
97
+ @text = Wx::TextCtrl.new(self, :style => Wx::TE_MULTILINE)
98
+ paste_sizer.add(@text, 1, Wx::GROW)
99
+
100
+ # Target for displaying images from the clipboard
101
+ @canvas = PasteCanvas.new(self)
102
+ paste_sizer.add(@canvas, 1, Wx::GROW)
103
+
104
+ sizer.add(paste_sizer, 1, Wx::ALL|Wx::GROW, 4)
105
+
106
+ button_sizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
107
+
108
+ @paste_bt = Wx::Button.new(self, :label => 'Paste')
109
+ evt_button @paste_bt, :on_paste
110
+ button_sizer.add(@paste_bt, 0, Wx::ALL, 4)
111
+
112
+ @copy_img_bt = Wx::Button.new(self, :label => 'Copy image')
113
+ evt_button @copy_img_bt, :on_copy_image
114
+ button_sizer.add(@copy_img_bt, 0, Wx::ALL, 4)
115
+
116
+ @copy_txt_bt = Wx::Button.new(self, :label => 'Copy text')
117
+ evt_button @copy_txt_bt, :on_copy_text
118
+ button_sizer.add(@copy_txt_bt, 0, Wx::ALL, 4)
119
+
120
+ sizer.add(button_sizer, 0)
121
+ self.sizer = sizer
122
+ end
123
+
124
+ # Receive data from the clipboard
125
+ def on_paste(evt)
126
+ # Temporarily open the clipboard
127
+ Wx::Clipboard.open do | clip |
128
+ # Test if bitmap data is available on the clipboard; if so, copy
129
+ if clip.supported?(Wx::DF_BITMAP)
130
+ bmp = Wx::BitmapDataObject.new
131
+ clip.get_data(bmp) # Fill the data object with bitmap`
132
+ @canvas.bitmap = bmp.bitmap
133
+ @canvas.refresh
134
+ end
135
+ # Test if text data is available on the clipboard; if so, copy
136
+ if clip.supported?(Wx::DF_TEXT)
137
+ txt = Wx::TextDataObject.new
138
+ clip.get_data(txt) # Fill the data object with text
139
+ @text.value = txt.text
140
+ end
141
+ end
142
+ end
143
+
144
+ # Paste an image to the clipboard
145
+ def on_copy_image
146
+ Wx::Clipboard.open do | clip |
147
+ clip.data = Wx::BitmapDataObject.new(@canvas.bitmap)
148
+ end
149
+ end
150
+
151
+ # Paste text to the clipboard
152
+ def on_copy_text
153
+ Wx::Clipboard.open do | clip |
154
+ clip.data = Wx::TextDataObject.new(@text.value)
155
+ end
156
+ end
157
+ end
158
+
159
+ class DataObjectFrame < Wx::Frame
160
+ def initialize(parent)
161
+ super
162
+ panel = Wx::Panel.new(self)
163
+ panel.sizer = Wx::BoxSizer.new(Wx::VERTICAL)
164
+ nb = Wx::Notebook.new(panel)
165
+ panel.sizer.add(nb, 1, Wx::ALL|Wx::GROW, 8)
166
+ fd = FileDropPane.new(nb)
167
+ nb.add_page(fd, 'Drag and Drop')
168
+ cv = PastePane.new(nb)
169
+ nb.add_page(cv, 'Clipboard')
170
+ # urldrop = URLDropList.new(self)
171
+ end
172
+ end
173
+
174
+ Wx::App.run do
175
+ frame = DataObjectFrame.new(nil)
176
+ frame.show
177
+ end
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+ require 'wx'
9
+
10
+
11
+ # This sample demonstrates how to draw an image from a file onto a
12
+ # window. This one uses a small PNG file, but other formats such as JPEG
13
+ # are supported - see documentation for more details.
14
+ #
15
+ # This sample uses the Wx::Bitmap class, which is a platform-specific
16
+ # representation of an image. This is the class that must be used to
17
+ # display an image, but see also Wx::Image, which allows a much wider
18
+ # range of manipulations (such as rescaling) and writing to files.
19
+
20
+
21
+ class ImageFrame < Wx::Frame
22
+ def initialize
23
+ super(nil, :title => 'Simple image demo')
24
+
25
+ @offset = 10
26
+ size = 256+2*@offset
27
+ self.client_size = [size, size]
28
+
29
+ # Load a PNG bitmap from a file for drawing
30
+ img_file = File.join( File.dirname(__FILE__)+"/../../art",
31
+ 'wxruby-256x256.png')
32
+ @bitmap = Wx::Bitmap.new(img_file)
33
+
34
+ # Set up the drawing to be done when the frame needs re-painting
35
+ evt_paint :on_paint
36
+ end
37
+
38
+ def on_paint
39
+ paint do | dc |
40
+ # Draw the bitmap at the specified offset with no transparency
41
+ dc.draw_bitmap(@bitmap, @offset, @offset, false)
42
+ end
43
+ end
44
+ end
45
+
46
+ Wx::App.run do
47
+ ImageFrame.new.show
48
+ end
49
+
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+ require 'wx'
9
+
10
+ # Bitmap sample (rewritten by Chauk-Mean Proum)
11
+
12
+ # This sample demonstrates how to draw the same image in various forms
13
+ # (original, mirrored, greyscaled and blurred).
14
+ #
15
+ # This sample uses :
16
+ # - Wx::Image, which allows a wide range of manipulations such as rescaling
17
+ # and writing to files.
18
+ # - Wx::Bitmap, which is a platform-specific representation of an image.
19
+ # This is the class that must be used to actually display an image.
20
+
21
+ class ImageFrame < Wx::Frame
22
+ def initialize
23
+ super(nil, :title => 'Simple image demo', :size => [600, 600])
24
+
25
+ # Create the various images from the bitmap file
26
+ img_file = File.join( File.dirname(__FILE__), 'ruby-logo.jpg')
27
+ @image = Wx::Image.new(img_file)
28
+ @mirrored_image = Wx::Image.new(img_file).mirror
29
+ @greyscaled_image = Wx::Image.new(img_file).convert_to_greyscale
30
+ @blurred_image = Wx::Image.new(img_file).blur(15)
31
+
32
+ # Create the corresponding bitmaps
33
+ compute_bitmaps
34
+
35
+ # Set up event handling
36
+ evt_size :on_size
37
+ evt_idle :on_idle
38
+ evt_paint :on_paint
39
+ end
40
+
41
+ # Create a bitmap for the specified image and size
42
+ def compute_bitmap image, width, height
43
+ rescaled_image = Wx::Image.new(image).rescale(width, height)
44
+ rescaled_image.to_bitmap
45
+ end
46
+
47
+ # Create the bitmaps corresponding to the images and with half the size of the frame
48
+ def compute_bitmaps
49
+ width = client_size.x / 2
50
+ height = client_size.y / 2
51
+ @bitmap1 = compute_bitmap(@image, width, height)
52
+ @bitmap2 = compute_bitmap(@mirrored_image, width, height)
53
+ @bitmap3 = compute_bitmap(@greyscaled_image, width, height)
54
+ @bitmap4 = compute_bitmap(@blurred_image, width, height)
55
+ @done = true
56
+ end
57
+
58
+ # Note to recompute the bitmaps on a resize
59
+ def on_size(event)
60
+ @done = false
61
+ event.skip
62
+ end
63
+
64
+ # Recompute the bitmaps if needed, then do a refresh
65
+ def on_idle
66
+ if not @done
67
+ compute_bitmaps
68
+ refresh
69
+ end
70
+ end
71
+
72
+ # Paint the frame with the bitmaps
73
+ def on_paint
74
+ paint do | dc |
75
+
76
+ if @done
77
+ width = client_size.x / 2
78
+ height = client_size.y / 2
79
+ dc.draw_bitmap(@bitmap1, 0, 0, false)
80
+ dc.draw_bitmap(@bitmap2, width, 0, false)
81
+ dc.draw_bitmap(@bitmap3, 0, height, false)
82
+ dc.draw_bitmap(@bitmap4, width, height, false)
83
+ end
84
+
85
+ end
86
+ end
87
+ end
88
+
89
+ Wx::App.run do
90
+ ImageFrame.new.show
91
+ end
92
+
@@ -0,0 +1,235 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ end
8
+ require 'wx'
9
+
10
+ class GfxInfo
11
+ attr_accessor :font, :w, :h, :x, :y, :x_axis, :y_axis, :txt, :rotation
12
+ def initialize()
13
+ @font = nil
14
+ @w = 0
15
+ @h = 0
16
+ @x = 0
17
+ @y = 0
18
+ @x_axis = 0
19
+ @y_axis = 0
20
+ @txt = ""
21
+ @rotation = 0
22
+ end
23
+
24
+ def move(max_x,max_y,max_sp)
25
+ @x += @x_axis
26
+ @y += @y_axis
27
+ if @x <= 0
28
+ @x_axis = rand(max_sp)
29
+ @x = 0
30
+ elsif (@x+@w) >= max_x
31
+ @x_axis = (rand(max_sp)*-1)
32
+ @x = max_x - @w
33
+ end
34
+ if @y <= 0
35
+ @y_axis = rand(max_sp)
36
+ @y = 0
37
+ elsif (@y+@h) >= max_y
38
+ @y_axis = (rand(max_sp)*-1)
39
+ @y = max_y - @h
40
+ end
41
+ end
42
+
43
+ def rotate(run)
44
+ @rotation += run
45
+ if @rotation > 360
46
+ @rotation = 0
47
+ end
48
+ end
49
+
50
+ def draw(gdc)
51
+ gdc.set_font(font)
52
+ gdc.draw_text(txt,x,y,rotation)
53
+ end
54
+
55
+ def [](symbol)
56
+ self.__send__(symbol,*[])
57
+ end
58
+
59
+ def []=(symbol,val)
60
+ self.__send__((symbol.to_s + "=").to_sym,*[val])
61
+ end
62
+ end
63
+
64
+
65
+ class GraphicsWindow < Wx::Window
66
+ # Create Needed Brushes and Pens
67
+ RED_BRUSH = Wx::Brush.new
68
+ GREEN_BRUSH = Wx::Brush.new
69
+ BLUE_BRUSH = Wx::Brush.new
70
+ RED_PEN = Wx::Pen.new
71
+ GREEN_PEN = Wx::Pen.new
72
+ BLUE_PEN = Wx::Pen.new
73
+
74
+ # Instance Methods to keep track of toggle for corner, rect, and counter for frames per second
75
+ attr_accessor :corner, :rect, :fps
76
+
77
+ def initialize(parent)
78
+ super(parent)
79
+ # Create the font we'll use to create our pre-defined fonts for the painting
80
+ @font = Wx::Font.new(18,Wx::FONTFAMILY_TELETYPE,
81
+ Wx::FONTSTYLE_NORMAL,Wx::FONTWEIGHT_NORMAL)
82
+ # Setup the actual data to be stored in Brushes and Pens
83
+ RED_BRUSH.set_colour(Wx::RED)
84
+ RED_PEN.set_colour(Wx::RED)
85
+ GREEN_BRUSH.set_colour(Wx::GREEN)
86
+ GREEN_PEN.set_colour(Wx::GREEN)
87
+ BLUE_BRUSH.set_colour(Wx::BLUE)
88
+ BLUE_PEN.set_colour(Wx::BLUE)
89
+ # Create our Animation Timer
90
+ @timer = Wx::Timer.new(self,1000)
91
+ @fps = 0
92
+ # Set it to run every 25 milliseconds, you can set this value higher, to get
93
+ # higher frame rates, however, it may cause non-responsiveness of normal
94
+ # gui controls.
95
+ @timer.start(25)
96
+ # Setup the event Handler to do the drawing on this window.
97
+ evt_paint :on_paint
98
+ evt_timer 1000, :animate
99
+ end
100
+
101
+ def create_resources(gdc)
102
+ # Create our Resource Class for holding the Text to be displayed
103
+ @rtxt = GfxInfo.new()
104
+ @gtxt = GfxInfo.new()
105
+ @btxt = GfxInfo.new()
106
+ # Store our fonts, and strings into the classes
107
+ @rtxt[:font] = gdc.create_font(@font,Wx::RED); @rtxt[:txt] = "This is a red string"
108
+ @gtxt[:font] = gdc.create_font(@font,Wx::GREEN); @gtxt[:txt] = "This is a green string"
109
+ @btxt[:font] = gdc.create_font(@font,Wx::BLUE); @btxt[:txt] = "This is a blue string"
110
+ # Create the GraphicsContext resources. For some reason, unable to utilize
111
+ # GraphicsContext#create(wxWindow) to create these resources in initialize().
112
+ @rbrush = gdc.create_brush(RED_BRUSH)
113
+ @gbrush = gdc.create_brush(GREEN_BRUSH)
114
+ @bbrush = gdc.create_brush(BLUE_BRUSH)
115
+ @rpen = gdc.create_pen(RED_PEN)
116
+ @gpen = gdc.create_pen(GREEN_PEN)
117
+ @bpen = gdc.create_pen(BLUE_PEN)
118
+ end
119
+
120
+ def get_extents(gdc)
121
+ # Since we need a GDC and the text to get the extents, we do this in a
122
+ # separate method, though we should be able to do it with create_resources()
123
+ width,height,*garbage = gdc.get_text_extent(@rtxt[:txt])
124
+ @rtxt[:w] = width.to_i; @rtxt[:h] = height.to_i
125
+ width,height,*garbage = gdc.get_text_extent(@gtxt[:txt])
126
+ @gtxt[:w] = width.to_i; @gtxt[:h] = height.to_i
127
+ width,height,*garbage = gdc.get_text_extent(@btxt[:txt])
128
+ @btxt[:w] = width.to_i; @btxt[:h] = height.to_i
129
+ end
130
+
131
+ def setup_positions()
132
+ # Setup our initial positions for drawing.
133
+ @rtxt[:x] = @rtxt[:y] = 0
134
+ size = self.get_client_size()
135
+ pos_x = (size.width / 2) #- (@gtxt[:w] / 2)
136
+ pos_y = (size.height / 2) #- (@gtxt[:h] / 2)
137
+ @gtxt[:x] = pos_x
138
+ @gtxt[:y] = pos_y
139
+ @btxt[:x] = (size.width - @btxt[:w])
140
+ @btxt[:y] = (size.height - @btxt[:h])
141
+ end
142
+
143
+ def animate()
144
+ # This routine manily animates the Text, which is also is handled by the
145
+ # GfxInfo class as well. Mainly in #rotate and #move.
146
+ rect = self.get_client_size()
147
+ @rtxt.move(rect.width,rect.height,8) unless @rtxt.nil?
148
+ @gtxt.rotate(-0.01) unless @gtxt.nil?
149
+ @btxt.move(rect.width,rect.height,5) unless @btxt.nil?
150
+ # We're now ready to draw our stuff to the window
151
+ refresh()
152
+ end
153
+
154
+ def on_paint
155
+ # We do our drawing now
156
+ rect = self.get_client_size
157
+ paint do |dc|
158
+ gdc = Wx::GraphicsContext.create(dc)
159
+ unless !@rtxt.nil?
160
+ create_resources(gdc)
161
+ end
162
+
163
+ unless !(@rtxt[:w] == 0)
164
+ gdc.set_font(@rtxt[:font])
165
+ get_extents(gdc)
166
+ setup_positions()
167
+ end
168
+ @rtxt.draw(gdc)
169
+ @gtxt.draw(gdc)
170
+ @btxt.draw(gdc)
171
+ # Draw our rectangles, if they are checked
172
+ 15.times do
173
+ pen = gdc.create_pen(Wx::Pen.new(Wx::Colour.new(rand(256),rand(256),rand(256),rand(256))))
174
+ if @corner.is_checked
175
+ x = rand(rect.width)
176
+ y = rand(rect.height)
177
+ gdc.set_pen(pen)
178
+ gdc.draw_rectangle(x,y,x,1)
179
+ gdc.draw_rectangle(x,y,1,y)
180
+ end
181
+ if @rect.is_checked
182
+ x = rand(rect.width)
183
+ y = rand(rect.height)
184
+ w = rand(rect.width)
185
+ h = rand(rect.height)
186
+ w + x > rect.width ? (w -= x; w -= rand(150)) : 0
187
+ h + y > rect.height ? (h -= y; h -= rand(150)) : 0
188
+ gdc.set_pen(pen)
189
+ gdc.draw_rectangle(x,y,w,h)
190
+ end
191
+ end
192
+ end
193
+ @fps += 1
194
+ end
195
+ end
196
+
197
+ class GraphicsFrame < Wx::Frame
198
+ def initialize()
199
+ super(nil,:title=>"Graphics Context example",:size=>[500,400])
200
+ @win = GraphicsWindow.new(self)
201
+
202
+ create_status_bar(3)
203
+ status_bar.set_status_text("Frames per sec: 0", 0)
204
+ @win.rect = Wx::CheckBox.new(status_bar,:label=>"Draw Rectangles")
205
+ @win.corner = Wx::CheckBox.new(status_bar,:label=>"Draw Corners")
206
+
207
+ Wx::Timer.every(1000) { fps_display }
208
+ evt_size :on_size
209
+ end
210
+
211
+
212
+ # Place the two control checkboxes within the StatusBar
213
+ def on_size
214
+ rect = status_bar.field_rect(1)
215
+ @win.rect.move [ rect.x + 2, rect.y + 2]
216
+ @win.rect.size = [ rect.width - 4, rect.height - 4 ]
217
+
218
+ rect = status_bar.field_rect(2)
219
+ @win.corner.move [ rect.x + 2, rect.y + 2]
220
+ @win.corner.size = [ rect.width - 4, rect.height - 4 ]
221
+ end
222
+
223
+ def fps_display()
224
+ get_status_bar.set_status_text("Frames per sec: #{@win.fps}", 0)
225
+ @win.fps = 0
226
+ end
227
+ end
228
+
229
+ class GraphicsApp < Wx::App
230
+ def on_init()
231
+ GraphicsFrame.new.show
232
+ end
233
+ end
234
+
235
+ GraphicsApp.new.main_loop()