wxruby 1.9.5-universal-darwin-9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. data/LICENSE +53 -0
  2. data/README +297 -0
  3. data/lib/wx/accessors.rb +52 -0
  4. data/lib/wx/classes/app.rb +45 -0
  5. data/lib/wx/classes/artprovider.rb +31 -0
  6. data/lib/wx/classes/bitmap.rb +23 -0
  7. data/lib/wx/classes/checklistbox.rb +45 -0
  8. data/lib/wx/classes/choice.rb +4 -0
  9. data/lib/wx/classes/clientdc.rb +13 -0
  10. data/lib/wx/classes/clipboard.rb +16 -0
  11. data/lib/wx/classes/colour.rb +47 -0
  12. data/lib/wx/classes/combobox.rb +4 -0
  13. data/lib/wx/classes/commandevent.rb +7 -0
  14. data/lib/wx/classes/controlwithitems.rb +10 -0
  15. data/lib/wx/classes/dc.rb +57 -0
  16. data/lib/wx/classes/event.rb +5 -0
  17. data/lib/wx/classes/evthandler.rb +906 -0
  18. data/lib/wx/classes/font.rb +118 -0
  19. data/lib/wx/classes/gauge.rb +12 -0
  20. data/lib/wx/classes/grid.rb +129 -0
  21. data/lib/wx/classes/helpcontroller.rb +5 -0
  22. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  23. data/lib/wx/classes/htmlwindow.rb +6 -0
  24. data/lib/wx/classes/icon.rb +14 -0
  25. data/lib/wx/classes/image.rb +14 -0
  26. data/lib/wx/classes/listbox.rb +4 -0
  27. data/lib/wx/classes/listctrl.rb +21 -0
  28. data/lib/wx/classes/locale.rb +28 -0
  29. data/lib/wx/classes/mediactrl.rb +22 -0
  30. data/lib/wx/classes/menu.rb +62 -0
  31. data/lib/wx/classes/menuitem.rb +7 -0
  32. data/lib/wx/classes/object.rb +7 -0
  33. data/lib/wx/classes/paintdc.rb +12 -0
  34. data/lib/wx/classes/point.rb +48 -0
  35. data/lib/wx/classes/previewframe.rb +13 -0
  36. data/lib/wx/classes/rect.rb +10 -0
  37. data/lib/wx/classes/size.rb +49 -0
  38. data/lib/wx/classes/sound.rb +23 -0
  39. data/lib/wx/classes/styledtextctrl.rb +92 -0
  40. data/lib/wx/classes/textctrl.rb +14 -0
  41. data/lib/wx/classes/texturlevent.rb +6 -0
  42. data/lib/wx/classes/timer.rb +94 -0
  43. data/lib/wx/classes/treectrl.rb +44 -0
  44. data/lib/wx/classes/window.rb +82 -0
  45. data/lib/wx/classes/xmlresource.rb +16 -0
  46. data/lib/wx/keyword_ctors.rb +219 -0
  47. data/lib/wx/keyword_defs.rb +485 -0
  48. data/lib/wx/version.rb +3 -0
  49. data/lib/wx.rb +42 -0
  50. data/lib/wxruby2.bundle +0 -0
  51. data/samples/SAMPLES-LICENSE.TXT +18 -0
  52. data/samples/aui/aui.rb +1360 -0
  53. data/samples/bigdemo/About.rbw +39 -0
  54. data/samples/bigdemo/ColorPanel.rbw +25 -0
  55. data/samples/bigdemo/GridSimple.rbw +80 -0
  56. data/samples/bigdemo/MDIDemo.rbw +59 -0
  57. data/samples/bigdemo/PopupMenu.rbw +151 -0
  58. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  59. data/samples/bigdemo/Sizers.rbw +545 -0
  60. data/samples/bigdemo/bigdemo.rb +824 -0
  61. data/samples/bigdemo/demoTemplate.rbw +37 -0
  62. data/samples/bigdemo/helpfile.htb +0 -0
  63. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  64. data/samples/bigdemo/icons/Test 015.png +0 -0
  65. data/samples/bigdemo/icons/choice.bmp +0 -0
  66. data/samples/bigdemo/icons/choice.xpm +27 -0
  67. data/samples/bigdemo/icons/combo.bmp +0 -0
  68. data/samples/bigdemo/icons/combo.xpm +27 -0
  69. data/samples/bigdemo/icons/copy.xpm +25 -0
  70. data/samples/bigdemo/icons/cut.xpm +24 -0
  71. data/samples/bigdemo/icons/gauge.bmp +0 -0
  72. data/samples/bigdemo/icons/gauge.xpm +27 -0
  73. data/samples/bigdemo/icons/help.xpm +25 -0
  74. data/samples/bigdemo/icons/list.bmp +0 -0
  75. data/samples/bigdemo/icons/list.xpm +27 -0
  76. data/samples/bigdemo/icons/mondrian.ico +0 -0
  77. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  78. data/samples/bigdemo/icons/new.xpm +24 -0
  79. data/samples/bigdemo/icons/ogl.ico +0 -0
  80. data/samples/bigdemo/icons/ogl.xpm +45 -0
  81. data/samples/bigdemo/icons/open.xpm +26 -0
  82. data/samples/bigdemo/icons/paste.bmp +0 -0
  83. data/samples/bigdemo/icons/paste.xpm +38 -0
  84. data/samples/bigdemo/icons/pointy.png +0 -0
  85. data/samples/bigdemo/icons/preview.xpm +26 -0
  86. data/samples/bigdemo/icons/print.xpm +26 -0
  87. data/samples/bigdemo/icons/radio.bmp +0 -0
  88. data/samples/bigdemo/icons/radio.xpm +27 -0
  89. data/samples/bigdemo/icons/robert.xpm +415 -0
  90. data/samples/bigdemo/icons/ruby.png +0 -0
  91. data/samples/bigdemo/icons/sashtest.ico +0 -0
  92. data/samples/bigdemo/icons/save.xpm +25 -0
  93. data/samples/bigdemo/icons/smiles.bmp +0 -0
  94. data/samples/bigdemo/icons/smiles.xpm +39 -0
  95. data/samples/bigdemo/icons/smiley.ico +0 -0
  96. data/samples/bigdemo/icons/smiley.xpm +42 -0
  97. data/samples/bigdemo/icons/stattext.xpm +24 -0
  98. data/samples/bigdemo/icons/test2.bmp +0 -0
  99. data/samples/bigdemo/icons/test2.png +0 -0
  100. data/samples/bigdemo/icons/test2.xpm +79 -0
  101. data/samples/bigdemo/icons/text.bmp +0 -0
  102. data/samples/bigdemo/icons/text.xpm +27 -0
  103. data/samples/bigdemo/icons/tog1.bmp +0 -0
  104. data/samples/bigdemo/icons/tog1.xpm +38 -0
  105. data/samples/bigdemo/icons/tog2.bmp +0 -0
  106. data/samples/bigdemo/icons/tog2.xpm +38 -0
  107. data/samples/bigdemo/icons/wxwin.ico +0 -0
  108. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  109. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  110. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  111. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  112. data/samples/bigdemo/run.rb +94 -0
  113. data/samples/bigdemo/tips.txt +7 -0
  114. data/samples/bigdemo/utils.rb +12 -0
  115. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  116. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  117. data/samples/bigdemo/wxButton.rbw +66 -0
  118. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  119. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  120. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  121. data/samples/bigdemo/wxChoice.rbw +49 -0
  122. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  123. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  124. data/samples/bigdemo/wxComboBox.rbw +79 -0
  125. data/samples/bigdemo/wxCursor.rbw +140 -0
  126. data/samples/bigdemo/wxDialog.rbw +76 -0
  127. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  128. data/samples/bigdemo/wxDragImage.rbw +74 -0
  129. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  130. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  131. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  132. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  133. data/samples/bigdemo/wxFrame.rbw +55 -0
  134. data/samples/bigdemo/wxGauge.rbw +73 -0
  135. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  136. data/samples/bigdemo/wxGrid.rbw +68 -0
  137. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  138. data/samples/bigdemo/wxListBox.rbw +142 -0
  139. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  140. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  141. data/samples/bigdemo/wxMenu.rbw +238 -0
  142. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  143. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  144. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  145. data/samples/bigdemo/wxNotebook.rbw +138 -0
  146. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  147. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  148. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  149. data/samples/bigdemo/wxSashWindow.rbw +145 -0
  150. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  151. data/samples/bigdemo/wxScrolledWindow.rbw +201 -0
  152. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  153. data/samples/bigdemo/wxSlider.rbw +44 -0
  154. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  155. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  156. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  157. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  158. data/samples/bigdemo/wxStaticText.rbw +57 -0
  159. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  160. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  161. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  162. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  163. data/samples/bigdemo/wxToolBar.rbw +133 -0
  164. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  165. data/samples/calendar/calendar.rb +275 -0
  166. data/samples/caret/caret.rb +286 -0
  167. data/samples/caret/mondrian.xpm +44 -0
  168. data/samples/controls/controls.rb +1140 -0
  169. data/samples/controls/get_item_sample.rb +87 -0
  170. data/samples/controls/icons/choice.xpm +27 -0
  171. data/samples/controls/icons/combo.xpm +27 -0
  172. data/samples/controls/icons/gauge.xpm +27 -0
  173. data/samples/controls/icons/list.xpm +27 -0
  174. data/samples/controls/icons/radio.xpm +27 -0
  175. data/samples/controls/icons/stattext.xpm +24 -0
  176. data/samples/controls/icons/text.xpm +27 -0
  177. data/samples/controls/mondrian.ico +0 -0
  178. data/samples/controls/mondrian.xpm +44 -0
  179. data/samples/controls/test2.bmp +0 -0
  180. data/samples/dialogs/dialogs.rb +724 -0
  181. data/samples/dialogs/tips.txt +18 -0
  182. data/samples/drawing/graphics_drawing.rb +236 -0
  183. data/samples/drawing/images.rb +42 -0
  184. data/samples/drawing/paperclip.png +0 -0
  185. data/samples/etc/activation.rb +108 -0
  186. data/samples/etc/choice.rb +72 -0
  187. data/samples/etc/miniframe.rb +84 -0
  188. data/samples/etc/sash.rb +135 -0
  189. data/samples/etc/scrollwin.rb +116 -0
  190. data/samples/etc/system_settings.rb +258 -0
  191. data/samples/etc/threaded.rb +78 -0
  192. data/samples/etc/wizard.rb +79 -0
  193. data/samples/event/event.rb +184 -0
  194. data/samples/grid/grid.rb +202 -0
  195. data/samples/html/html.rb +268 -0
  196. data/samples/listbook/listbook.rb +181 -0
  197. data/samples/listbook/listbook.xrc +370 -0
  198. data/samples/mdi/mdi.rb +87 -0
  199. data/samples/media/mediactrl.rb +173 -0
  200. data/samples/minimal/minimal.rb +85 -0
  201. data/samples/minimal/mondrian.ico +0 -0
  202. data/samples/minimal/mondrian.png +0 -0
  203. data/samples/minimal/nothing.rb +21 -0
  204. data/samples/opengl/cube.rb +123 -0
  205. data/samples/printing/mondrian.ico +0 -0
  206. data/samples/printing/mondrian.xpm +44 -0
  207. data/samples/printing/printing.rb +484 -0
  208. data/samples/sockets/SocketPackets.rb +27 -0
  209. data/samples/sockets/res/message-new.png +0 -0
  210. data/samples/sockets/res/user.png +0 -0
  211. data/samples/sockets/wxClient.rb +395 -0
  212. data/samples/sockets/wxServer.rb +422 -0
  213. data/samples/sockets/wxSocketGUI.rb +97 -0
  214. data/samples/text/mondrian.ico +0 -0
  215. data/samples/text/mondrian.xpm +44 -0
  216. data/samples/text/scintilla.rb +174 -0
  217. data/samples/text/textctrl.rb +124 -0
  218. data/samples/text/unicode.rb +238 -0
  219. data/samples/text/utf8.txt +15 -0
  220. data/samples/treectrl/icon1.xpm +79 -0
  221. data/samples/treectrl/icon2.xpm +53 -0
  222. data/samples/treectrl/icon3.xpm +79 -0
  223. data/samples/treectrl/icon4.xpm +43 -0
  224. data/samples/treectrl/icon5.xpm +79 -0
  225. data/samples/treectrl/treectrl.rb +1180 -0
  226. data/samples/xrc/samples.xrc +46 -0
  227. data/samples/xrc/xrc_sample.rb +107 -0
  228. metadata +305 -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,236 @@
1
+ begin
2
+ require 'wx'
3
+ rescue LoadError => no_wx_err
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ raise no_wx_err
8
+ end
9
+ end
10
+
11
+ class GfxInfo
12
+ attr_accessor :font, :w, :h, :x, :y, :x_axis, :y_axis, :txt, :rotation
13
+ def initialize()
14
+ @font = nil
15
+ @w = 0
16
+ @h = 0
17
+ @x = 0
18
+ @y = 0
19
+ @x_axis = 0
20
+ @y_axis = 0
21
+ @txt = ""
22
+ @rotation = 0
23
+ end
24
+
25
+ def move(max_x,max_y,max_sp)
26
+ @x += @x_axis
27
+ @y += @y_axis
28
+ if @x <= 0
29
+ @x_axis = rand(max_sp)
30
+ @x = 0
31
+ elsif (@x+@w) >= max_x
32
+ @x_axis = (rand(max_sp)*-1)
33
+ @x = max_x - @w
34
+ end
35
+ if @y <= 0
36
+ @y_axis = rand(max_sp)
37
+ @y = 0
38
+ elsif (@y+@h) >= max_y
39
+ @y_axis = (rand(max_sp)*-1)
40
+ @y = max_y - @h
41
+ end
42
+ end
43
+
44
+ def rotate(run)
45
+ @rotation += run
46
+ if @rotation > 360
47
+ @rotation = 0
48
+ end
49
+ end
50
+
51
+ def draw(gdc)
52
+ gdc.set_font(font)
53
+ gdc.draw_text(txt,x,y,rotation)
54
+ end
55
+
56
+ def [](symbol)
57
+ self.__send__(symbol,*[])
58
+ end
59
+
60
+ def []=(symbol,val)
61
+ self.__send__((symbol.to_s + "=").to_sym,*[val])
62
+ end
63
+ end
64
+
65
+
66
+ class GraphicsWindow < Wx::Window
67
+ # Create Needed Brushes and Pens
68
+ RED_BRUSH = Wx::Brush.new
69
+ GREEN_BRUSH = Wx::Brush.new
70
+ BLUE_BRUSH = Wx::Brush.new
71
+ RED_PEN = Wx::Pen.new
72
+ GREEN_PEN = Wx::Pen.new
73
+ BLUE_PEN = Wx::Pen.new
74
+
75
+ # Instance Methods to keep track of toggle for corner, rect, and counter for frames per second
76
+ attr_accessor :corner, :rect, :fps
77
+
78
+ def initialize(parent)
79
+ super(parent)
80
+ # Create the font we'll use to create our pre-defined fonts for the painting
81
+ @font = Wx::Font.new(18,Wx::FONTFAMILY_TELETYPE,
82
+ Wx::FONTSTYLE_NORMAL,Wx::FONTWEIGHT_NORMAL)
83
+ # Setup the actual data to be stored in Brushes and Pens
84
+ RED_BRUSH.set_colour(Wx::RED)
85
+ RED_PEN.set_colour(Wx::RED)
86
+ GREEN_BRUSH.set_colour(Wx::GREEN)
87
+ GREEN_PEN.set_colour(Wx::GREEN)
88
+ BLUE_BRUSH.set_colour(Wx::BLUE)
89
+ BLUE_PEN.set_colour(Wx::BLUE)
90
+ # Create our Animation Timer
91
+ @timer = Wx::Timer.new(self,1000)
92
+ @fps = 0
93
+ # Set it to run every 25 milliseconds, you can set this value higher, to get
94
+ # higher frame rates, however, it may cause non-responsiveness of normal
95
+ # gui controls.
96
+ @timer.start(25)
97
+ # Setup the event Handler to do the drawing on this window.
98
+ evt_paint :on_paint
99
+ evt_timer 1000, :animate
100
+ end
101
+
102
+ def create_resources(gdc)
103
+ # Create our Resource Class for holding the Text to be displayed
104
+ @rtxt = GfxInfo.new()
105
+ @gtxt = GfxInfo.new()
106
+ @btxt = GfxInfo.new()
107
+ # Store our fonts, and strings into the classes
108
+ @rtxt[:font] = gdc.create_font(@font,Wx::RED); @rtxt[:txt] = "This is a red string"
109
+ @gtxt[:font] = gdc.create_font(@font,Wx::GREEN); @gtxt[:txt] = "This is a green string"
110
+ @btxt[:font] = gdc.create_font(@font,Wx::BLUE); @btxt[:txt] = "This is a blue string"
111
+ # Create the GraphicsContext resources. For some reason, unable to utilize
112
+ # GraphicsContext#create(wxWindow) to create these resources in initialize().
113
+ @rbrush = gdc.create_brush(RED_BRUSH)
114
+ @gbrush = gdc.create_brush(GREEN_BRUSH)
115
+ @bbrush = gdc.create_brush(BLUE_BRUSH)
116
+ @rpen = gdc.create_pen(RED_PEN)
117
+ @gpen = gdc.create_pen(GREEN_PEN)
118
+ @bpen = gdc.create_pen(BLUE_PEN)
119
+ end
120
+
121
+ def get_extents(gdc)
122
+ # Since we need a GDC and the text to get the extents, we do this in a
123
+ # separate method, though we should be able to do it with create_resources()
124
+ width,height,*garbage = gdc.get_text_extent(@rtxt[:txt])
125
+ @rtxt[:w] = width.to_i; @rtxt[:h] = height.to_i
126
+ width,height,*garbage = gdc.get_text_extent(@gtxt[:txt])
127
+ @gtxt[:w] = width.to_i; @gtxt[:h] = height.to_i
128
+ width,height,*garbage = gdc.get_text_extent(@btxt[:txt])
129
+ @btxt[:w] = width.to_i; @btxt[:h] = height.to_i
130
+ end
131
+
132
+ def setup_positions()
133
+ # Setup our initial positions for drawing.
134
+ @rtxt[:x] = @rtxt[:y] = 0
135
+ size = self.get_client_size()
136
+ pos_x = (size.width / 2) #- (@gtxt[:w] / 2)
137
+ pos_y = (size.height / 2) #- (@gtxt[:h] / 2)
138
+ @gtxt[:x] = pos_x
139
+ @gtxt[:y] = pos_y
140
+ @btxt[:x] = (size.width - @btxt[:w])
141
+ @btxt[:y] = (size.height - @btxt[:h])
142
+ end
143
+
144
+ def animate()
145
+ # This routine manily animates the Text, which is also is handled by the
146
+ # GfxInfo class as well. Mainly in #rotate and #move.
147
+ rect = self.get_client_size()
148
+ @rtxt.move(rect.width,rect.height,8) unless @rtxt.nil?
149
+ @gtxt.rotate(-0.01) unless @gtxt.nil?
150
+ @btxt.move(rect.width,rect.height,5) unless @btxt.nil?
151
+ # We're now ready to draw our stuff to the window
152
+ refresh()
153
+ end
154
+
155
+ def on_paint
156
+ # We do our drawing now
157
+ rect = self.get_client_size
158
+ paint do |dc|
159
+ gdc = Wx::GraphicsContext.create(dc)
160
+ unless !@rtxt.nil?
161
+ create_resources(gdc)
162
+ end
163
+
164
+ unless !(@rtxt[:w] == 0)
165
+ gdc.set_font(@rtxt[:font])
166
+ get_extents(gdc)
167
+ setup_positions()
168
+ end
169
+ @rtxt.draw(gdc)
170
+ @gtxt.draw(gdc)
171
+ @btxt.draw(gdc)
172
+ # Draw our rectangles, if they are checked
173
+ 15.times do
174
+ pen = gdc.create_pen(Wx::Pen.new(Wx::Colour.new(rand(256),rand(256),rand(256),rand(256))))
175
+ if @corner.is_checked
176
+ x = rand(rect.width)
177
+ y = rand(rect.height)
178
+ gdc.set_pen(pen)
179
+ gdc.draw_rectangle(x,y,x,1)
180
+ gdc.draw_rectangle(x,y,1,y)
181
+ end
182
+ if @rect.is_checked
183
+ x = rand(rect.width)
184
+ y = rand(rect.height)
185
+ w = rand(rect.width)
186
+ h = rand(rect.height)
187
+ w + x > rect.width ? (w -= x; w -= rand(150)) : 0
188
+ h + y > rect.height ? (h -= y; h -= rand(150)) : 0
189
+ gdc.set_pen(pen)
190
+ gdc.draw_rectangle(x,y,w,h)
191
+ end
192
+ end
193
+ end
194
+ @fps += 1
195
+ end
196
+ end
197
+
198
+ class GraphicsFrame < Wx::Frame
199
+ def initialize()
200
+ super(nil,:title=>"Graphics Context example",:size=>[500,400])
201
+ @win = GraphicsWindow.new(self)
202
+
203
+ create_status_bar(3)
204
+ status_bar.set_status_text("Frames per sec: 0", 0)
205
+ @win.rect = Wx::CheckBox.new(status_bar,:label=>"Draw Rectangles")
206
+ @win.corner = Wx::CheckBox.new(status_bar,:label=>"Draw Corners")
207
+
208
+ Wx::Timer.every(1000) { fps_display }
209
+ evt_size :on_size
210
+ end
211
+
212
+
213
+ # Place the two control checkboxes within the StatusBar
214
+ def on_size
215
+ rect = status_bar.field_rect(1)
216
+ @win.rect.move [ rect.x + 2, rect.y + 2]
217
+ @win.rect.size = [ rect.width - 4, rect.height - 4 ]
218
+
219
+ rect = status_bar.field_rect(2)
220
+ @win.corner.move [ rect.x + 2, rect.y + 2]
221
+ @win.corner.size = [ rect.width - 4, rect.height - 4 ]
222
+ end
223
+
224
+ def fps_display()
225
+ get_status_bar.set_status_text("Frames per sec: #{@win.fps}", 0)
226
+ @win.fps = 0
227
+ end
228
+ end
229
+
230
+ class GraphicsApp < Wx::App
231
+ def on_init()
232
+ GraphicsFrame.new.show
233
+ end
234
+ end
235
+
236
+ GraphicsApp.new.main_loop()
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+
16
+ # This sample demonstrates how to draw an image from a file onto a
17
+ # window. This one uses a small PNG file, but other formats such as JPEG
18
+ # are supported - see documentation for more details.
19
+
20
+ class ImageFrame < Wx::Frame
21
+ def initialize
22
+ super(nil, :title => 'Simple image demo')
23
+
24
+ # Load a PNG bitmap from a file for drawing
25
+ img_file = File.join( File.dirname(__FILE__), 'paperclip.png')
26
+ @bitmap = Wx::Bitmap.new(img_file, Wx::BITMAP_TYPE_PNG)
27
+
28
+ # Set up the drawing to be done when the frame needs re-painting
29
+ evt_paint :on_paint
30
+ end
31
+
32
+ def on_paint
33
+ paint do | dc |
34
+ dc.draw_bitmap(@bitmap, 0, 0, false)
35
+ end
36
+ end
37
+ end
38
+
39
+ Wx::App.run do
40
+ ImageFrame.new.show
41
+ end
42
+
Binary file
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+
16
+ # This sample demonstrates the use of Activate Events. These are
17
+ # generated when a frame becomes active or inactive. This is typically
18
+ # indicated by a frame's titlebar changing colour, and a widget within
19
+ # the frame gainin focus. An event is also generated when a whole wxRuby
20
+ # app starts or stops being the current focussed desktop application.
21
+
22
+ class MinimalFrame < Wx::Frame
23
+ def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
24
+ super(nil, -1, title, pos, size, style)
25
+
26
+
27
+ menuFile = Wx::Menu.new()
28
+ helpMenu = Wx::Menu.new()
29
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
30
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
31
+ menuBar = Wx::MenuBar.new()
32
+ menuBar.append(menuFile, "&File")
33
+ menuBar.append(helpMenu, "&Help")
34
+ set_menu_bar(menuBar)
35
+
36
+ create_status_bar(2)
37
+ set_status_text("Welcome to wxRuby!")
38
+
39
+ evt_menu(Wx::ID_EXIT) { on_quit }
40
+ evt_menu(Wx::ID_ABOUT) { on_about }
41
+
42
+ evt_activate { | e | on_activate(e) }
43
+ evt_iconize { | e | on_iconize(e) }
44
+ end
45
+
46
+
47
+ def on_iconize(event)
48
+ if event.iconized
49
+ puts "Frame '#{get_title}' was iconized"
50
+ else
51
+ puts "Frame '#{get_title}' was restored"
52
+ end
53
+ end
54
+
55
+ def on_activate(event)
56
+ if event.get_active
57
+ puts "Frame '#{get_title}' became activated"
58
+ set_status_text 'Active'
59
+ else
60
+ puts "Frame '#{get_title}' became deactivated"
61
+ set_status_text 'Inactive'
62
+ end
63
+ event.skip # important
64
+ end
65
+
66
+ def on_quit
67
+ Wx::get_app.close_all
68
+ end
69
+
70
+ def on_about
71
+ msg = sprintf("This is the About dialog of the activate sample.\n" \
72
+ "Welcome to wxRuby, version %s", Wx::WXRUBY_VERSION)
73
+ Wx::message_box(msg, "About Activate", Wx::OK|Wx::ICON_INFORMATION, self)
74
+ end
75
+ end
76
+
77
+ class RbApp < Wx::App
78
+ def on_init
79
+ @frame_1 = MinimalFrame.new("Tall window",
80
+ Wx::Point.new(50, 50),
81
+ Wx::Size.new(150, 240))
82
+ @frame_2 = MinimalFrame.new("Wide window",
83
+ Wx::Point.new(100, 100),
84
+ Wx::Size.new(300, 180))
85
+ evt_activate_app { | e | on_activate_app(e) }
86
+ @frame_1.show()
87
+ @frame_2.show()
88
+
89
+ end
90
+
91
+ def on_activate_app(event)
92
+ if event.get_active
93
+ puts "The app became active"
94
+ else
95
+ puts "The app became inactive"
96
+ end
97
+ event.skip # important
98
+ end
99
+
100
+ def close_all
101
+ @frame_1.close(true)
102
+ @frame_2.close(true)
103
+ end
104
+ end
105
+
106
+ app = RbApp.new
107
+ app.main_loop()
108
+
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+ include Wx
16
+
17
+ ID_CHOICE = 1000
18
+
19
+ class ChoiceDlg < Dialog
20
+ def initialize
21
+ super(nil, -1, "ChoiceDialog", DEFAULT_POSITION, Size.new(185, 185))
22
+
23
+ list = [ "ABS", "Airbag", "Air conditioning" ]
24
+
25
+ @m_pChoice = Choice.new(self, ID_CHOICE, DEFAULT_POSITION, DEFAULT_SIZE, list)
26
+ @m_pChoice.append("Automatic gear", 100)
27
+
28
+ @m_pLabel = StaticText.new(self, -1, "default")
29
+ dlgSizer = BoxSizer.new(HORIZONTAL)
30
+ choiceSizer = BoxSizer.new(VERTICAL)
31
+ choiceSizer.add(@m_pChoice, 1, GROW)
32
+ choiceSizer.add(@m_pLabel)
33
+ dlgSizer.add(choiceSizer, 1, GROW)
34
+ set_sizer(dlgSizer)
35
+ set_auto_layout(TRUE)
36
+ layout()
37
+
38
+ evt_choice(ID_CHOICE) {|event| onChoice(event) }
39
+ evt_close {onClose}
40
+ end
41
+
42
+ def onChoice(event)
43
+ chose = event.get_selection
44
+ data = event.get_client_data
45
+ # NOTE: uninitialized client data will be false, not nil
46
+ if(!data)
47
+ data = 0
48
+ end
49
+ data += 1
50
+ @m_pLabel.set_label(data.to_s)
51
+
52
+ @m_pChoice.set_selection(chose)
53
+ @m_pChoice.set_client_data(chose, data)
54
+ end
55
+
56
+ def onClose
57
+ destroy()
58
+ end
59
+ end
60
+
61
+
62
+ class RbApp < App
63
+ def on_init
64
+ dlg = ChoiceDlg.new
65
+ set_top_window(dlg)
66
+ dlg.show(TRUE)
67
+ end
68
+
69
+ end
70
+
71
+ a = RbApp.new
72
+ a.main_loop()
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+
16
+ class MyFrame < Wx::Frame
17
+ attr_reader :mini
18
+
19
+ def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
20
+ super(nil, -1, title, pos, size, style)
21
+
22
+
23
+ menuFile = Wx::Menu.new()
24
+ helpMenu = Wx::Menu.new()
25
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
26
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
27
+ menuBar = Wx::MenuBar.new()
28
+ menuBar.append(menuFile, "&File")
29
+ menuBar.append(helpMenu, "&Help")
30
+ set_menu_bar(menuBar)
31
+
32
+ create_status_bar(2)
33
+ set_status_text("Welcome to wxRuby!")
34
+
35
+ evt_menu(Wx::ID_EXIT) { on_quit }
36
+ evt_menu(Wx::ID_ABOUT) { on_about }
37
+
38
+ make_miniframe()
39
+ end
40
+
41
+ def make_miniframe
42
+ @mini = Wx::MiniFrame.new(self, -1, 'Mini Frame',
43
+ Wx::Point.new(300, 75), Wx::Size.new(300, 150),
44
+ Wx::DEFAULT_FRAME_STYLE|Wx::STAY_ON_TOP)
45
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
46
+ text = Wx::StaticText.new(mini, -1, 'This is a MiniFrame.')
47
+ sizer.add(text, 0, Wx::ALL, 2)
48
+ text = Wx::StaticText.new(mini, -1, 'It has a small title bar so it')
49
+ sizer.add(text, 0, Wx::ALL, 2)
50
+ text = Wx::StaticText.new(mini, -1, 'doesn\'t take up too much space.')
51
+ sizer.add(text, 0, Wx::ALL, 2)
52
+ text = Wx::StaticText.new(mini, -1, 'This MiniFrame has been set to')
53
+ sizer.add(text, 0, Wx::ALL, 2)
54
+ text = Wx::StaticText.new(mini, -1, 'stay above the main app window.')
55
+ sizer.add(text, 0, Wx::ALL, 2)
56
+ mini.set_sizer(sizer)
57
+ mini.show()
58
+ mini.raise()
59
+ end
60
+
61
+ def on_quit
62
+ mini.close()
63
+ close()
64
+ end
65
+
66
+ def on_about
67
+ msg = sprintf("This is the About dialog of the miniframe sample.\n" \
68
+ "Welcome to %s", Wx::VERSION_STRING)
69
+ Wx::message_box(msg, "About MiniFrame", Wx::OK|Wx::ICON_INFORMATION, self)
70
+ end
71
+ end
72
+
73
+ class RbApp < Wx::App
74
+ def on_init
75
+ frame = MyFrame.new("Mini Frame wxRuby App",
76
+ Wx::Point.new(50, 50),
77
+ Wx::Size.new(450, 340))
78
+ frame.show()
79
+ end
80
+ end
81
+
82
+ app = RbApp.new
83
+ app.main_loop()
84
+
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env ruby
2
+ # wxRuby2 Sample Code. Copyright (c) 2004-2006 Kevin B. Smith
3
+ # Freely reusable code: see SAMPLES-LICENSE.TXT for details
4
+
5
+ begin
6
+ require 'wx'
7
+ rescue LoadError => no_wx_err
8
+ begin
9
+ require 'rubygems'
10
+ require 'wx'
11
+ rescue LoadError
12
+ raise no_wx_err
13
+ end
14
+ end
15
+
16
+ class MySashFrame < Wx::Frame
17
+ def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
18
+ super(nil, -1, title, pos, size, style)
19
+
20
+
21
+ menuFile = Wx::Menu.new()
22
+ helpMenu = Wx::Menu.new()
23
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
24
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
25
+ menuBar = Wx::MenuBar.new()
26
+ menuBar.append(menuFile, "&File")
27
+ menuBar.append(helpMenu, "&Help")
28
+ set_menu_bar(menuBar)
29
+
30
+ create_status_bar(2)
31
+ set_status_text("wxRuby Sash sample")
32
+
33
+ evt_menu(Wx::ID_EXIT) { on_quit }
34
+ evt_menu(Wx::ID_ABOUT) { on_about }
35
+
36
+ # Start creating the sashes - these are created from outermost
37
+ # inwards.
38
+ sash = Wx::SashLayoutWindow.new(self, -1, Wx::DEFAULT_POSITION,
39
+ Wx::Size.new(150, self.get_size.y) )
40
+ # The default width of the sash is 150 pixels, and it extends the
41
+ # full height of the frame
42
+ sash.set_default_size( Wx::Size.new(150, self.get_size.y) )
43
+ # This sash splits the frame top to bottom
44
+ sash.set_orientation(Wx::LAYOUT_VERTICAL)
45
+ # Place the sash on the left of the frame
46
+ sash.set_alignment(Wx::LAYOUT_LEFT)
47
+ # Show a drag bar on the right of the sash
48
+ sash.set_sash_visible(Wx::SASH_RIGHT, true)
49
+ sash.set_background_colour(Wx::Colour.new(225, 200, 200) )
50
+
51
+ panel = Wx::Panel.new(sash)
52
+ v_siz = Wx::BoxSizer.new(Wx::VERTICAL)
53
+ chk_1 = Wx::CheckBox.new(panel, -1, 'test 1')
54
+ v_siz.add(chk_1, 0, Wx::ADJUST_MINSIZE)
55
+ chk_2 = Wx::CheckBox.new(panel, -1, 'test 2')
56
+ v_siz.add(chk_2, 0, Wx::ADJUST_MINSIZE)
57
+ panel.set_sizer_and_fit(v_siz)
58
+
59
+ # handle the sash being dragged
60
+ evt_sash_dragged( sash.get_id ) { | e | on_v_sash_dragged(sash, e) }
61
+
62
+ # Create another small sash on the bottom of the frame
63
+ sash_2 = Wx::SashLayoutWindow.new(self, -1, Wx::DEFAULT_POSITION,
64
+ Wx::Size.new(self.get_size.x,
65
+ 100),
66
+ Wx::SW_3DSASH)
67
+ sash_2.set_default_size( Wx::Size.new(self.get_size.x, 100) )
68
+ sash_2.set_orientation(Wx::LAYOUT_HORIZONTAL)
69
+ sash_2.set_alignment(Wx::LAYOUT_BOTTOM)
70
+ sash_2.set_sash_visible(Wx::SASH_TOP, true)
71
+ text = Wx::StaticText.new(sash_2, -1, 'This is the second sash window')
72
+ evt_sash_dragged( sash_2.get_id ) { | e | on_h_sash_dragged(sash_2, e) }
73
+
74
+ # The main panel - the residual part of the frame that takes up all
75
+ # remaining space not used by the sash windows.
76
+ @m_panel = Wx::Panel.new(self, -1)
77
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
78
+
79
+ txt = Wx::TextCtrl.new(@m_panel, -1, 'Main panel area',
80
+ Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
81
+ Wx::SUNKEN_BORDER|Wx::TE_MULTILINE)
82
+ sizer.add(txt, 1, Wx::EXPAND|Wx::ADJUST_MINSIZE|Wx::ALL, 10)
83
+ @m_panel.set_sizer_and_fit(sizer)
84
+
85
+ # Adjust the size of the sashes when the frame is resized
86
+ evt_size { | e | on_size(e) }
87
+
88
+ # Call LayoutAlgorithm#layout_frame to layout the sashes.
89
+ # The second argument is the residual window that takes up remaining
90
+ # space
91
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
92
+ end
93
+
94
+ def on_v_sash_dragged(sash, e)
95
+ # Call get_drag_rect to get the new size
96
+ size = Wx::Size.new( e.get_drag_rect.width(), self.get_size.y )
97
+ sash.set_default_size( size )
98
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
99
+ end
100
+
101
+ def on_h_sash_dragged(sash, e)
102
+ size = Wx::Size.new( self.get_size.x, e.get_drag_rect.height() )
103
+ sash.set_default_size( size )
104
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
105
+ end
106
+
107
+ def on_size(e)
108
+ e.skip()
109
+ Wx::LayoutAlgorithm.new.layout_frame(self, @m_panel)
110
+ end
111
+
112
+ def on_quit
113
+ close(true)
114
+ end
115
+
116
+ def on_about
117
+ msg = sprintf("This is the About dialog of the sash sample.\n" \
118
+ "Welcome to %s", Wx::VERSION_STRING)
119
+ Wx::message_box(msg, "About Sash", Wx::OK|Wx::ICON_INFORMATION, self)
120
+ end
121
+ end
122
+
123
+ class SashApp < Wx::App
124
+ def on_init
125
+ frame = MySashFrame.new("Sash Layout wxRuby App",
126
+ Wx::Point.new(50, 50),
127
+ Wx::Size.new(450, 340))
128
+
129
+ frame.show(true)
130
+
131
+ end
132
+ end
133
+
134
+ app = SashApp.new
135
+ app.main_loop()