wxruby 1.9.9-x86-mingw32 → 1.9.10-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/LICENSE +53 -53
  2. data/README +297 -297
  3. data/lib/wx.rb +53 -53
  4. data/lib/wx/classes/bitmap.rb +29 -1
  5. data/lib/wx/classes/clipboard.rb +19 -3
  6. data/lib/wx/classes/colour.rb +6 -4
  7. data/lib/wx/classes/data_object.rb +14 -0
  8. data/lib/wx/classes/data_object_simple.rb +6 -0
  9. data/lib/wx/classes/dataformat.rb +23 -0
  10. data/lib/wx/classes/evthandler.rb +31 -4
  11. data/lib/wx/classes/genericdirctrl.rb +36 -0
  12. data/lib/wx/classes/grid.rb +8 -0
  13. data/lib/wx/classes/hboxsizer.rb +6 -0
  14. data/lib/wx/classes/icon.rb +12 -1
  15. data/lib/wx/classes/image.rb +13 -1
  16. data/lib/wx/classes/listctrl.rb +12 -0
  17. data/lib/wx/classes/point.rb +8 -0
  18. data/lib/wx/classes/rect.rb +10 -1
  19. data/lib/wx/classes/richtextctrl.rb +22 -0
  20. data/lib/wx/classes/size.rb +9 -0
  21. data/lib/wx/classes/sizer.rb +18 -3
  22. data/lib/wx/classes/toolbar.rb +4 -6
  23. data/lib/wx/classes/vboxsizer.rb +6 -0
  24. data/lib/wx/classes/window.rb +7 -0
  25. data/lib/wx/classes/xmlresource.rb +17 -0
  26. data/lib/wx/helpers.rb +16 -1
  27. data/lib/wx/keyword_ctors.rb +3 -2
  28. data/lib/wx/keyword_defs.rb +27 -5
  29. data/lib/wx/version.rb +1 -1
  30. data/lib/wxruby2.so +0 -0
  31. data/samples/SAMPLES-LICENSE.TXT +17 -17
  32. data/samples/bigdemo/About.rbw +39 -39
  33. data/samples/bigdemo/ColorPanel.rbw +23 -23
  34. data/samples/bigdemo/GridSimple.rbw +78 -78
  35. data/samples/bigdemo/MDIDemo.rbw +57 -57
  36. data/samples/bigdemo/PopupMenu.rbw +149 -149
  37. data/samples/bigdemo/Sizers.rbw +543 -543
  38. data/samples/bigdemo/bigdemo.rb +823 -823
  39. data/samples/bigdemo/demoTemplate.rbw +33 -33
  40. data/samples/bigdemo/icons/choice.xpm +27 -27
  41. data/samples/bigdemo/icons/combo.xpm +27 -27
  42. data/samples/bigdemo/icons/copy.xpm +25 -25
  43. data/samples/bigdemo/icons/cut.xpm +24 -24
  44. data/samples/bigdemo/icons/gauge.xpm +27 -27
  45. data/samples/bigdemo/icons/help.xpm +25 -25
  46. data/samples/bigdemo/icons/list.xpm +27 -27
  47. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  48. data/samples/bigdemo/icons/new.xpm +24 -24
  49. data/samples/bigdemo/icons/ogl.ico +0 -0
  50. data/samples/bigdemo/icons/ogl.xpm +45 -45
  51. data/samples/bigdemo/icons/open.xpm +26 -26
  52. data/samples/bigdemo/icons/paste.xpm +38 -38
  53. data/samples/bigdemo/icons/preview.xpm +26 -26
  54. data/samples/bigdemo/icons/print.xpm +26 -26
  55. data/samples/bigdemo/icons/radio.xpm +27 -27
  56. data/samples/bigdemo/icons/robert.xpm +415 -415
  57. data/samples/bigdemo/icons/save.xpm +25 -25
  58. data/samples/bigdemo/icons/smiles.xpm +39 -39
  59. data/samples/bigdemo/icons/smiley.xpm +42 -42
  60. data/samples/bigdemo/icons/stattext.xpm +24 -24
  61. data/samples/bigdemo/icons/test2.bmp +0 -0
  62. data/samples/bigdemo/icons/test2.xpm +79 -79
  63. data/samples/bigdemo/icons/text.xpm +27 -27
  64. data/samples/bigdemo/icons/tog1.xpm +38 -38
  65. data/samples/bigdemo/icons/tog2.xpm +38 -38
  66. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  67. data/samples/bigdemo/tips.txt +7 -7
  68. data/samples/bigdemo/utils.rb +11 -11
  69. data/samples/bigdemo/wxButton.rbw +64 -64
  70. data/samples/bigdemo/wxCalendarCtrl.rbw +60 -60
  71. data/samples/bigdemo/wxCheckBox.rbw +50 -50
  72. data/samples/bigdemo/wxCheckListBox.rbw +65 -75
  73. data/samples/bigdemo/wxChoice.rbw +47 -47
  74. data/samples/bigdemo/wxColourDialog.rbw +31 -31
  75. data/samples/bigdemo/wxComboBox.rbw +77 -77
  76. data/samples/bigdemo/wxDialog.rbw +74 -74
  77. data/samples/bigdemo/wxDirDialog.rbw +29 -29
  78. data/samples/bigdemo/wxFileDialog.rbw +37 -37
  79. data/samples/bigdemo/wxFileDialog_Save.rbw +35 -35
  80. data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -82
  81. data/samples/bigdemo/wxFontDialog.rbw +173 -173
  82. data/samples/bigdemo/wxFrame.rbw +53 -53
  83. data/samples/bigdemo/wxGauge.rbw +71 -71
  84. data/samples/bigdemo/wxGrid.rbw +66 -66
  85. data/samples/bigdemo/wxListBox.rbw +140 -140
  86. data/samples/bigdemo/wxListCtrl_virtual.rbw +112 -107
  87. data/samples/bigdemo/wxMDIWindows.rbw +50 -50
  88. data/samples/bigdemo/wxMenu.rbw +236 -236
  89. data/samples/bigdemo/wxMessageDialog.rbw +27 -27
  90. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -32
  91. data/samples/bigdemo/wxNotebook.rbw +136 -136
  92. data/samples/bigdemo/wxProgressDialog.rbw +43 -43
  93. data/samples/bigdemo/wxRadioBox.rbw +72 -72
  94. data/samples/bigdemo/wxRadioButton.rbw +125 -125
  95. data/samples/bigdemo/wxSashWindow.rbw +2 -2
  96. data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -57
  97. data/samples/bigdemo/wxScrolledWindow.rbw +199 -199
  98. data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -33
  99. data/samples/bigdemo/wxSlider.rbw +42 -42
  100. data/samples/bigdemo/wxSpinButton.rbw +50 -50
  101. data/samples/bigdemo/wxSpinCtrl.rbw +51 -51
  102. data/samples/bigdemo/wxSplitterWindow.rbw +63 -63
  103. data/samples/bigdemo/wxStaticBitmap.rbw +51 -51
  104. data/samples/bigdemo/wxStaticText.rbw +55 -55
  105. data/samples/bigdemo/wxStatusBar.rbw +126 -126
  106. data/samples/bigdemo/wxTextCtrl.rbw +149 -149
  107. data/samples/bigdemo/wxTextEntryDialog.rbw +31 -31
  108. data/samples/bigdemo/wxToggleButton.rbw +49 -49
  109. data/samples/bigdemo/wxToolBar.rbw +131 -131
  110. data/samples/bigdemo/wxTreeCtrl.rbw +191 -190
  111. data/samples/calendar/calendar.rb +256 -271
  112. data/samples/caret/caret.rb +282 -282
  113. data/samples/caret/mondrian.xpm +44 -44
  114. data/samples/controls/controls.rb +1136 -1136
  115. data/samples/controls/get_item_sample.rb +87 -87
  116. data/samples/controls/icons/choice.xpm +27 -27
  117. data/samples/controls/icons/combo.xpm +27 -27
  118. data/samples/controls/icons/gauge.xpm +27 -27
  119. data/samples/controls/icons/list.xpm +27 -27
  120. data/samples/controls/icons/radio.xpm +27 -27
  121. data/samples/controls/icons/stattext.xpm +24 -24
  122. data/samples/controls/icons/text.xpm +27 -27
  123. data/samples/controls/mondrian.xpm +44 -44
  124. data/samples/dialogs/dialogs.rb +797 -723
  125. data/samples/dialogs/tips.txt +18 -18
  126. data/samples/drawing/images.rb +37 -37
  127. data/samples/etc/activation.rb +102 -102
  128. data/samples/etc/choice.rb +67 -67
  129. data/samples/etc/miniframe.rb +79 -79
  130. data/samples/etc/sash.rb +130 -130
  131. data/samples/etc/scrollwin.rb +110 -110
  132. data/samples/etc/system_settings.rb +252 -252
  133. data/samples/etc/toolbar_sizer_additem.rb +55 -0
  134. data/samples/etc/wizard.rb +74 -74
  135. data/samples/event/update_ui_event.rb +70 -0
  136. data/samples/grid/gridtablebase.rb +43 -29
  137. data/samples/listbook/listbook.rb +174 -174
  138. data/samples/listbook/listbook.xrc +370 -370
  139. data/samples/mdi/mdi.rb +85 -77
  140. data/samples/minimal/minimal.rb +77 -77
  141. data/samples/minimal/nothing.rb +16 -16
  142. data/samples/text/format-text-bold.png +0 -0
  143. data/samples/text/format-text-italic.png +0 -0
  144. data/samples/text/format-text-underline.png +0 -0
  145. data/samples/text/rich_textctrl.rb +98 -0
  146. data/samples/text/textctrl.rb +111 -113
  147. data/samples/text/unicode.rb +242 -242
  148. data/samples/text/utf8.txt +14 -14
  149. data/samples/treectrl/treectrl.rb +1166 -1174
  150. data/samples/xrc/samples.xrc +46 -46
  151. data/samples/xrc/xrc_sample.rb +76 -96
  152. metadata +15 -3
@@ -1,199 +1,199 @@
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
-
12
- #$BUFFERED = 0 #Wx::BufferedDC not yet implemented
13
-
14
- class MyCanvas < Wx::ScrolledWindow
15
- def initialize(parent, id=-1, size=Wx::DEFAULT_SIZE)
16
- super(parent, -1, Wx::Point.new(0,0), size, Wx::SUNKEN_BORDER)
17
- @lines = []
18
- @maxWidth = 1000
19
- @maxHeight = 1000
20
- @x = @y = 0
21
- @curLine = []
22
- @drawing = false
23
-
24
- set_background_colour(Wx::WHITE)
25
-
26
- set_cursor(Wx::Cursor.new(Wx::CURSOR_PENCIL))
27
- bmp_file = File.join(File.dirname(__FILE__), 'icons', 'test2.xpm')
28
- @bmp = Wx::Bitmap.new(bmp_file)
29
-
30
-
31
- set_scrollbars(20, 20, @maxWidth / 20, @maxHeight / 20, 0, 0, true)
32
-
33
- evt_left_down {|event| on_left_button_event_down(event)}
34
- evt_left_up {|event| on_left_button_event_up(event)}
35
- evt_motion {|event| on_left_button_event_motion(event)}
36
- evt_paint { on_paint }
37
- #evt_mousewheel {|event| on_wheel(event)}
38
- end
39
-
40
- def on_paint
41
- paint { | dc | do_drawing(dc) }
42
- end
43
-
44
- def do_drawing(dc, printing=false)
45
- # Reset the origin co-ordinates of the DC to reflect current scrolling
46
- do_prepare_dc(dc)
47
- dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
48
- dc.draw_rectangle(5,5,50,50)
49
-
50
- dc.set_brush(Wx::LIGHT_GREY_BRUSH)
51
- dc.set_pen(Wx::Pen.new("BLUE", 4, Wx::SOLID))
52
- dc.draw_rectangle(15,15,50,50)
53
-
54
- dc.set_font(Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL))
55
- dc.set_text_foreground(Wx::Colour.new(0xFF, 0x20, 0xFF))
56
- te = dc.get_text_extent("Hello World")
57
- dc.draw_text("Hello World", 60, 65)
58
-
59
- dc.set_pen(Wx::Pen.new("VIOLET", 4, Wx::SOLID))
60
- dc.draw_line(5, 65+te[1], 60 + te[0], 65 + te[1])
61
-
62
- lst = [Wx::Point.new(100,110), Wx::Point.new(150, 110), Wx::Point.new(150, 160), Wx::Point.new(100, 160)]
63
- dc.draw_lines(lst, -60)
64
- dc.set_pen(Wx::GREY_PEN)
65
- dc.draw_polygon(lst, 75)
66
- dc.set_pen(Wx::GREEN_PEN)
67
- dc.draw_spline(lst << Wx::Point.new(100,100))
68
-
69
- dc.draw_bitmap(@bmp, 200, 20, true)
70
- dc.set_text_foreground(Wx::Colour.new(0, 0xFF, 0x80))
71
- dc.draw_text("a bitmap", 200,85)
72
-
73
- font = Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
74
- dc.set_font(font)
75
- dc.set_text_foreground(Wx::BLACK)
76
- 0.step(360, 45) {|number| dc.draw_rotated_text("Rotated text...", 300, 300, number)}
77
-
78
- dc.set_pen(Wx::TRANSPARENT_PEN)
79
- dc.set_brush(Wx::BLUE_BRUSH)
80
- dc.draw_rectangle(50, 500, 50, 50)
81
- dc.draw_rectangle(100, 500, 50, 50)
82
-
83
- dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
84
- dc.draw_elliptic_arc(200, 500, 50, 75, 0, 90)
85
-
86
- if not printing
87
- # This has troubles when used on a print preview in wxGTK,
88
- # probably something to do with the pen styles and the scaling
89
- # it does...
90
- y = 20
91
- [Wx::DOT, Wx::LONG_DASH, Wx::SHORT_DASH, Wx::DOT_DASH, Wx::USER_DASH].each do |style|
92
- pen = Wx::Pen.new("DARK ORCHID", 1, style)
93
- if style == Wx::USER_DASH
94
- pen.set_cap(Wx::CAP_BUTT)
95
- pen.set_dashes([1,2])
96
- pen.set_colour("RED")
97
- end
98
- dc.set_pen(pen)
99
- dc.draw_line(300, y, 400, y)
100
- y += 10
101
- end
102
- end
103
- dc.set_brush(Wx::TRANSPARENT_BRUSH)
104
- dc.set_pen(Wx::Pen.new(Wx::Colour.new(0xFF, 0x20, 0xFF), 1, Wx::SOLID))
105
- dc.draw_rectangle(450, 50, 100, 100)
106
- old_pen = dc.get_pen()
107
- new_pen = Wx::Pen.new("BLACK", 5, Wx::SOLID)
108
- dc.set_pen(new_pen)
109
- dc.draw_rectangle(470, 70, 60, 60)
110
- dc.set_pen(old_pen)
111
- dc.draw_rectangle(490, 90, 20, 20)
112
-
113
- draw_saved_lines(dc)
114
- end
115
-
116
- def draw_saved_lines(dc)
117
- dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
118
- @lines.each do |line|
119
- line.each do |coords|
120
- coords.flatten!()
121
- dc.draw_line(coords[0], coords[1], coords[2], coords[3])
122
- end
123
- end
124
- end
125
-
126
- def set_XY(event)
127
- @x, @y = convert_event_coords(event)
128
- end
129
-
130
- def convert_event_coords(event)
131
- xView, yView = get_view_start()
132
- xDelta, yDelta = get_scroll_pixels_per_unit()
133
- return event.get_x() + (xView * xDelta), event.get_y() + (yView * yDelta)
134
- end
135
-
136
- def on_left_button_event_down(event)
137
- if event.left_is_down() and !@drawing
138
- set_focus()
139
- set_XY(event)
140
- @event_x_old = event.get_x # added this to save the current absolute...
141
- @event_y_old = event.get_y # ... mouse position
142
- @curLine = []
143
- capture_mouse()
144
- @drawing = true
145
- end
146
- end
147
-
148
- def on_left_button_event_up(event)
149
- if !event.left_is_down() and @drawing
150
- @lines.push(@curLine)
151
- @curLine = []
152
- release_mouse()
153
- @drawing = false
154
- end
155
- end
156
-
157
- def on_left_button_event_motion(event)
158
- if event.left_is_down() and @drawing
159
- # if $BUFFERED
160
- # # If doing buffered drawing, create the buffered DC, giving it
161
- # # it a real DC to blit to when done.
162
- # cdc = Wx::ClientDC.new(self)
163
- # dc = Wx::BufferedDC.new(cdc, @buffer)
164
- # else
165
- # dc = Wx::ClientDC.new(self)
166
- # end
167
-
168
- paint do | dc |
169
- dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
170
- save_coords = [@x, @y] + convert_event_coords(event) # translate the absolute coords to save them in the array
171
- coords = [@event_x_old, @event_y_old, event.get_x, event.get_y] # the absolute coords to use for the first draw
172
- @curLine.push(save_coords) # use the translated coords here
173
- coords.flatten!()
174
- dc.draw_line(coords[0], coords[1], coords[2], coords[3]) # and the absolute coords here
175
- set_XY(event)
176
- @event_x_old = event.get_x # saving the new ...
177
- @event_y_old = event.get_y # ... absolute coords
178
- end
179
- end
180
- end
181
-
182
- end
183
-
184
- module Demo
185
- def Demo.run(frame, nb, log)
186
- win = MyCanvas.new(nb, log)
187
- return win
188
- end
189
-
190
- def Demo.overview
191
- return "The wxScrolledWindow class manages scrolling for its client area, transforming the coordinates according to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view."
192
- end
193
- end
194
-
195
- if __FILE__ == $0
196
- run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
197
- load run_solo_lib
198
- run File.basename($0)
199
- end
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
+
12
+ #$BUFFERED = 0 #Wx::BufferedDC not yet implemented
13
+
14
+ class MyCanvas < Wx::ScrolledWindow
15
+ def initialize(parent, id=-1, size=Wx::DEFAULT_SIZE)
16
+ super(parent, -1, Wx::Point.new(0,0), size, Wx::SUNKEN_BORDER)
17
+ @lines = []
18
+ @maxWidth = 1000
19
+ @maxHeight = 1000
20
+ @x = @y = 0
21
+ @curLine = []
22
+ @drawing = false
23
+
24
+ set_background_colour(Wx::WHITE)
25
+
26
+ set_cursor(Wx::Cursor.new(Wx::CURSOR_PENCIL))
27
+ bmp_file = File.join(File.dirname(__FILE__), 'icons', 'test2.xpm')
28
+ @bmp = Wx::Bitmap.new(bmp_file)
29
+
30
+
31
+ set_scrollbars(20, 20, @maxWidth / 20, @maxHeight / 20, 0, 0, true)
32
+
33
+ evt_left_down {|event| on_left_button_event_down(event)}
34
+ evt_left_up {|event| on_left_button_event_up(event)}
35
+ evt_motion {|event| on_left_button_event_motion(event)}
36
+ evt_paint { on_paint }
37
+ #evt_mousewheel {|event| on_wheel(event)}
38
+ end
39
+
40
+ def on_paint
41
+ paint { | dc | do_drawing(dc) }
42
+ end
43
+
44
+ def do_drawing(dc, printing=false)
45
+ # Reset the origin co-ordinates of the DC to reflect current scrolling
46
+ do_prepare_dc(dc)
47
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
48
+ dc.draw_rectangle(5,5,50,50)
49
+
50
+ dc.set_brush(Wx::LIGHT_GREY_BRUSH)
51
+ dc.set_pen(Wx::Pen.new("BLUE", 4, Wx::SOLID))
52
+ dc.draw_rectangle(15,15,50,50)
53
+
54
+ dc.set_font(Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL))
55
+ dc.set_text_foreground(Wx::Colour.new(0xFF, 0x20, 0xFF))
56
+ te = dc.get_text_extent("Hello World")
57
+ dc.draw_text("Hello World", 60, 65)
58
+
59
+ dc.set_pen(Wx::Pen.new("VIOLET", 4, Wx::SOLID))
60
+ dc.draw_line(5, 65+te[1], 60 + te[0], 65 + te[1])
61
+
62
+ lst = [Wx::Point.new(100,110), Wx::Point.new(150, 110), Wx::Point.new(150, 160), Wx::Point.new(100, 160)]
63
+ dc.draw_lines(lst, -60)
64
+ dc.set_pen(Wx::GREY_PEN)
65
+ dc.draw_polygon(lst, 75)
66
+ dc.set_pen(Wx::GREEN_PEN)
67
+ dc.draw_spline(lst << Wx::Point.new(100,100))
68
+
69
+ dc.draw_bitmap(@bmp, 200, 20, true)
70
+ dc.set_text_foreground(Wx::Colour.new(0, 0xFF, 0x80))
71
+ dc.draw_text("a bitmap", 200,85)
72
+
73
+ font = Wx::Font.new(14, Wx::SWISS, Wx::NORMAL, Wx::NORMAL)
74
+ dc.set_font(font)
75
+ dc.set_text_foreground(Wx::BLACK)
76
+ 0.step(360, 45) {|number| dc.draw_rotated_text("Rotated text...", 300, 300, number)}
77
+
78
+ dc.set_pen(Wx::TRANSPARENT_PEN)
79
+ dc.set_brush(Wx::BLUE_BRUSH)
80
+ dc.draw_rectangle(50, 500, 50, 50)
81
+ dc.draw_rectangle(100, 500, 50, 50)
82
+
83
+ dc.set_pen(Wx::Pen.new("RED", 1, Wx::SOLID))
84
+ dc.draw_elliptic_arc(200, 500, 50, 75, 0, 90)
85
+
86
+ if not printing
87
+ # This has troubles when used on a print preview in wxGTK,
88
+ # probably something to do with the pen styles and the scaling
89
+ # it does...
90
+ y = 20
91
+ [Wx::DOT, Wx::LONG_DASH, Wx::SHORT_DASH, Wx::DOT_DASH, Wx::USER_DASH].each do |style|
92
+ pen = Wx::Pen.new("DARK ORCHID", 1, style)
93
+ if style == Wx::USER_DASH
94
+ pen.set_cap(Wx::CAP_BUTT)
95
+ pen.set_dashes([1,2])
96
+ pen.set_colour("RED")
97
+ end
98
+ dc.set_pen(pen)
99
+ dc.draw_line(300, y, 400, y)
100
+ y += 10
101
+ end
102
+ end
103
+ dc.set_brush(Wx::TRANSPARENT_BRUSH)
104
+ dc.set_pen(Wx::Pen.new(Wx::Colour.new(0xFF, 0x20, 0xFF), 1, Wx::SOLID))
105
+ dc.draw_rectangle(450, 50, 100, 100)
106
+ old_pen = dc.get_pen()
107
+ new_pen = Wx::Pen.new("BLACK", 5, Wx::SOLID)
108
+ dc.set_pen(new_pen)
109
+ dc.draw_rectangle(470, 70, 60, 60)
110
+ dc.set_pen(old_pen)
111
+ dc.draw_rectangle(490, 90, 20, 20)
112
+
113
+ draw_saved_lines(dc)
114
+ end
115
+
116
+ def draw_saved_lines(dc)
117
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
118
+ @lines.each do |line|
119
+ line.each do |coords|
120
+ coords.flatten!()
121
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3])
122
+ end
123
+ end
124
+ end
125
+
126
+ def set_XY(event)
127
+ @x, @y = convert_event_coords(event)
128
+ end
129
+
130
+ def convert_event_coords(event)
131
+ xView, yView = get_view_start()
132
+ xDelta, yDelta = get_scroll_pixels_per_unit()
133
+ return event.get_x() + (xView * xDelta), event.get_y() + (yView * yDelta)
134
+ end
135
+
136
+ def on_left_button_event_down(event)
137
+ if event.left_is_down() and !@drawing
138
+ set_focus()
139
+ set_XY(event)
140
+ @event_x_old = event.get_x # added this to save the current absolute...
141
+ @event_y_old = event.get_y # ... mouse position
142
+ @curLine = []
143
+ capture_mouse()
144
+ @drawing = true
145
+ end
146
+ end
147
+
148
+ def on_left_button_event_up(event)
149
+ if !event.left_is_down() and @drawing
150
+ @lines.push(@curLine)
151
+ @curLine = []
152
+ release_mouse()
153
+ @drawing = false
154
+ end
155
+ end
156
+
157
+ def on_left_button_event_motion(event)
158
+ if event.left_is_down() and @drawing
159
+ # if $BUFFERED
160
+ # # If doing buffered drawing, create the buffered DC, giving it
161
+ # # it a real DC to blit to when done.
162
+ # cdc = Wx::ClientDC.new(self)
163
+ # dc = Wx::BufferedDC.new(cdc, @buffer)
164
+ # else
165
+ # dc = Wx::ClientDC.new(self)
166
+ # end
167
+
168
+ paint do | dc |
169
+ dc.set_pen(Wx::Pen.new("MEDIUM FOREST GREEN", 4, Wx::SOLID))
170
+ save_coords = [@x, @y] + convert_event_coords(event) # translate the absolute coords to save them in the array
171
+ coords = [@event_x_old, @event_y_old, event.get_x, event.get_y] # the absolute coords to use for the first draw
172
+ @curLine.push(save_coords) # use the translated coords here
173
+ coords.flatten!()
174
+ dc.draw_line(coords[0], coords[1], coords[2], coords[3]) # and the absolute coords here
175
+ set_XY(event)
176
+ @event_x_old = event.get_x # saving the new ...
177
+ @event_y_old = event.get_y # ... absolute coords
178
+ end
179
+ end
180
+ end
181
+
182
+ end
183
+
184
+ module Demo
185
+ def Demo.run(frame, nb, log)
186
+ win = MyCanvas.new(nb, log)
187
+ return win
188
+ end
189
+
190
+ def Demo.overview
191
+ return "The wxScrolledWindow class manages scrolling for its client area, transforming the coordinates according to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view."
192
+ end
193
+ end
194
+
195
+ if __FILE__ == $0
196
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
197
+ load run_solo_lib
198
+ run File.basename($0)
199
+ end
@@ -1,33 +1,33 @@
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
-
12
- module Demo
13
- def Demo.run(frame, nb, log)
14
- dlg = Wx::SingleChoiceDialog.new(frame, "Test Single Choice", "The Caption",
15
- %w(zero one two three four five six seven eight))
16
- #Wx::CHOICEDLG_STYLE)
17
- if dlg.show_modal() == Wx::ID_OK
18
- log.write_text("You selected: " + dlg.get_string_selection() + "\n")
19
- end
20
- dlg.destroy()
21
- return nil
22
- end
23
-
24
- def Demo.overview
25
- return "This class represents a dialog that shows a list of strings, and allows the user to select one. Double-clicking on a list item is equivalent to single-clicking and then pressing OK."
26
- end
27
- end
28
-
29
- if __FILE__ == $0
30
- run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
31
- load run_solo_lib
32
- run File.basename($0)
33
- end
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
+
12
+ module Demo
13
+ def Demo.run(frame, nb, log)
14
+ dlg = Wx::SingleChoiceDialog.new(frame, "Test Single Choice", "The Caption",
15
+ %w(zero one two three four five six seven eight))
16
+ #Wx::CHOICEDLG_STYLE)
17
+ if dlg.show_modal() == Wx::ID_OK
18
+ log.write_text("You selected: " + dlg.get_string_selection() + "\n")
19
+ end
20
+ dlg.destroy()
21
+ return nil
22
+ end
23
+
24
+ def Demo.overview
25
+ return "This class represents a dialog that shows a list of strings, and allows the user to select one. Double-clicking on a list item is equivalent to single-clicking and then pressing OK."
26
+ end
27
+ end
28
+
29
+ if __FILE__ == $0
30
+ run_solo_lib = File.join( File.dirname(__FILE__), 'run.rb')
31
+ load run_solo_lib
32
+ run File.basename($0)
33
+ end