wxruby 1.9.6-x86-mingw32 → 1.9.8-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
data/samples/mdi/mdi.rb CHANGED
@@ -7,60 +7,56 @@ rescue LoadError
7
7
  end
8
8
  require 'wx'
9
9
 
10
-
11
- # MDI sample for wxRuby
12
- # slapped together quickly by Kevin Smith
13
-
14
- ID_NEXT = 1
15
- ID_PREVIOUS = 2
16
- ID_CASCADE = 3
17
- ID_TILE = 4
18
- ID_CREATE = 5
19
- ID_CLOSE = 6
20
- ID_EXIT = 99
21
-
10
+ # Simple MDI-based parent frame with menus to create, cycle through and
11
+ # close child frames within in.
12
+ #
13
+ # NB: MDI is only properly implemented on Windows, and is simulated by
14
+ # using a Notebook on Linux and OS X. Therefore its use is not
15
+ # recommended for cross-platform applications. An alternative interface
16
+ # strategy may be to use separate frames, or possibly the AUI classes.
22
17
  class MyFrame < Wx::MDIParentFrame
23
18
  def initialize(title)
24
- super(nil, -1, title,Wx::DEFAULT_POSITION,Wx::Size.new(500,400))
19
+ super(nil, :title => title, :size => [ 500, 400 ] )
25
20
 
26
21
  @child_number = 0
27
22
 
28
23
  menuFile = Wx::Menu.new
29
- menuFile.append(ID_EXIT, "E&xit\tAlt-X")
24
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X")
25
+ evt_menu Wx::ID_EXIT, :close
26
+
30
27
  menuMDI = Wx::Menu.new
31
- menuMDI.append(ID_NEXT, "&Next Child\tCtrl-F6")
32
- menuMDI.append(ID_PREVIOUS, "&Previous Child")
33
- menuMDI.append_separator()
34
- menuMDI.append(ID_CASCADE, "&Cascade")
35
- menuMDI.append(ID_TILE, "&Tile")
36
- menuMDI.append_separator()
37
- menuMDI.append(ID_CREATE, "&Add Child")
38
- menuMDI.append(ID_CLOSE, "&Remove Child\tCtrl-F4")
28
+ menuMDI.append(Wx::ID_FORWARD, "&Next Child\tCtrl-F6")
29
+ evt_menu Wx::ID_FORWARD, :activate_next
30
+ menuMDI.append(Wx::ID_BACKWARD, "&Previous Child")
31
+ evt_menu Wx::ID_BACKWARD, :activate_previous
32
+ menuMDI.append_separator
33
+
34
+ mi_cascade = menuMDI.append("&Cascade")
35
+ evt_menu mi_cascade, :cascade
36
+ mi_tile = menuMDI.append("&Tile")
37
+ evt_menu mi_tile, :tile
38
+ menuMDI.append_separator
39
+
40
+ menuMDI.append(Wx::ID_NEW, "&Add Child")
41
+ evt_menu Wx::ID_NEW, :create_child
42
+ menuMDI.append(Wx::ID_CLOSE, "&Remove Child\tCtrl-F4")
43
+ evt_menu Wx::ID_CLOSE, :on_close_child
44
+
39
45
  menuBar = Wx::MenuBar.new
40
46
  menuBar.append(menuFile, "&File")
41
47
  menuBar.append(menuMDI, "&Window")
42
- set_menu_bar(menuBar)
43
-
44
- evt_menu(ID_EXIT) { close }
45
- evt_menu(ID_NEXT) { activate_next }
46
- evt_menu(ID_PREVIOUS) { activate_previous }
47
- evt_menu(ID_CASCADE) { cascade }
48
- evt_menu(ID_TILE) { tile }
49
- evt_menu(ID_CREATE) { create_child }
50
- evt_menu(ID_CLOSE) { on_close_child }
48
+
49
+ self.menu_bar = menuBar
51
50
 
52
51
  create_status_bar(2).set_status_widths([100, -1])
53
52
  set_status_text("Some features only work on MS Windows", 1)
54
53
 
55
- create_child
56
- create_child
57
- create_child
54
+ 3.times { create_child }
58
55
  end
59
56
 
60
57
  def on_close_child
61
- active = get_active_child
62
- if(active)
63
- active.close
58
+ if active_child
59
+ active_child.close
64
60
  end
65
61
  end
66
62
 
@@ -71,12 +67,11 @@ class MyFrame < Wx::MDIParentFrame
71
67
  end
72
68
  end
73
69
 
74
- class NothingApp < Wx::App
70
+ class MDIApp < Wx::App
75
71
  def on_init
76
72
  frame = MyFrame.new("MDI App")
77
73
  frame.show
78
74
  end
79
75
  end
80
76
 
81
- a = NothingApp.new
82
- a.main_loop()
77
+ MDIApp.new.main_loop
@@ -9,12 +9,13 @@ require 'wx'
9
9
 
10
10
  # This sample demonstrates the use of Wx::MediaCtrl, which can be used
11
11
  # to playback sounds or movies using a platform-native player.
12
- class MediaPanel<Wx::Panel
12
+ class MediaPanel < Wx::Panel
13
13
  def initialize(parent)
14
14
  super(parent, :style => Wx::TAB_TRAVERSAL|Wx::CLIP_CHILDREN)
15
15
 
16
16
  # The actual media player control
17
- @mc = Wx::MediaCtrl.new(self, :pos => [100,100], :size => [300,300])
17
+ @mc = Wx::MediaCtrl.new(self)
18
+
18
19
  evt_media_loaded @mc,:on_media_loaded
19
20
 
20
21
  # Some buttons to control playback
@@ -102,7 +103,6 @@ class MediaPanel<Wx::Panel
102
103
  if dlg.show_modal == Wx::ID_OK
103
104
  do_load_file(dlg.path)
104
105
  end
105
- dlg.destroy
106
106
  end
107
107
 
108
108
  # Move the media to a position in the file, using the slider
@@ -7,6 +7,183 @@ rescue LoadError
7
7
  end
8
8
  require 'wx'
9
9
 
10
+ WXPRINT_QUIT = Wx::ID_EXIT
11
+ WXPRINT_PRINT = Wx::ID_PRINT
12
+ WXPRINT_PAGE_SETUP = Wx::ID_PRINT_SETUP
13
+ WXPRINT_PREVIEW = Wx::ID_PREVIEW
14
+
15
+ WXPRINT_PRINT_PS = 105
16
+ WXPRINT_PAGE_SETUP_PS = 107
17
+ WXPRINT_PREVIEW_PS = 108
18
+
19
+ WXPRINT_ABOUT = Wx::ID_ABOUT
20
+
21
+ WXPRINT_ANGLEUP = 110
22
+ WXPRINT_ANGLEDOWN = 111
23
+
24
+ class MyFrame < Wx::Frame
25
+
26
+ attr_accessor :canvas
27
+
28
+ def initialize(parent,title,pos,size)
29
+ super(parent,-1,title,pos,size)
30
+ @canvas = nil
31
+ @bitmap = Wx::Bitmap.new
32
+ @angle = 30
33
+
34
+ # map events
35
+ evt_menu(WXPRINT_QUIT) {|e| on_exit(e)}
36
+ evt_menu(WXPRINT_PRINT) {|e| on_print(e)}
37
+ evt_menu(WXPRINT_PREVIEW) {|e| on_print_preview(e)}
38
+ evt_menu(WXPRINT_PAGE_SETUP) {|e| on_page_setup(e)}
39
+ evt_menu(WXPRINT_ABOUT) {|e| on_print_about(e)}
40
+ evt_menu(WXPRINT_ANGLEUP) {|e| on_angle_up(e)}
41
+ evt_menu(WXPRINT_ANGLEDOWN) {|e| on_angle_down(e)}
42
+ end
43
+
44
+ def draw(dc)
45
+ dc.set_background(Wx::WHITE_BRUSH)
46
+ dc.clear()
47
+ dc.set_font(Wx::get_app.test_font)
48
+
49
+ dc.set_background_mode(Wx::TRANSPARENT)
50
+
51
+ dc.set_brush(Wx::CYAN_BRUSH)
52
+ dc.set_pen(Wx::RED_PEN)
53
+
54
+ dc.draw_rounded_rectangle(0, 20, 200, 80, 20)
55
+
56
+ dc.draw_text( "Rectangle 200 by 80", 40, 40)
57
+
58
+ dc.set_pen( Wx::Pen.new(Wx::BLACK,0,Wx::DOT_DASH) )
59
+ dc.draw_ellipse(50, 140, 100, 50)
60
+ dc.set_pen(Wx::RED_PEN)
61
+
62
+ dc.draw_text( "Test message: this is in 10 point text", 10, 180)
63
+
64
+ test = "Hebrew שלום -- Japanese (日本語)"
65
+ dc.draw_text( test, 10, 200 )
66
+
67
+ points = []
68
+ points << Wx::Point.new(0,0)
69
+ points << Wx::Point.new(20,0)
70
+ points << Wx::Point.new(20,20)
71
+ points << Wx::Point.new(10,20)
72
+ points << Wx::Point.new(10,-20)
73
+
74
+ dc.draw_polygon( points, 20, 250, Wx::ODDEVEN_RULE )
75
+ dc.draw_polygon( points, 50, 250, Wx::WINDING_RULE )
76
+
77
+ dc.draw_elliptic_arc( 80, 250, 60, 30, 0.0, 270.0 )
78
+
79
+ points[0].x = 150
80
+ points[0].y = 250
81
+ points[1].x = 180
82
+ points[1].y = 250
83
+ points[2].x = 180
84
+ points[2].y = 220
85
+ points[3].x = 200
86
+ points[3].y = 220
87
+ points.pop
88
+ dc.draw_spline( points )
89
+
90
+ dc.draw_arc( 20,10, 10,10, 25,40 )
91
+
92
+ str = ""
93
+ i = 0
94
+ str = "---- Text at angle #{i} ----"
95
+ dc.draw_rotated_text( str, 100, 300, i )
96
+
97
+ i = @angle;
98
+ str = "---- Text at angle #{i} ----"
99
+ dc.draw_rotated_text( str, 100, 300, i )
100
+
101
+ dc.set_pen(Wx::BLACK_PEN)
102
+ dc.draw_line(0, 0, 200, 200)
103
+ dc.draw_line(200, 0, 0, 200)
104
+
105
+ # Load icon
106
+ if Wx::PLATFORM == "WXMSW"
107
+ icon_file = File.join(File.dirname(__FILE__), 'mondrian.ico')
108
+ my_icon = Wx::Icon.new(icon_file, Wx::BITMAP_TYPE_ICO)
109
+ else
110
+ icon_file = File.join(File.dirname(__FILE__), 'mondrian.xpm')
111
+ my_icon = Wx::Icon.new(icon_file, Wx::BITMAP_TYPE_XPM)
112
+ end
113
+
114
+ dc.draw_icon( my_icon, 100, 100)
115
+
116
+ if @bitmap.is_ok
117
+ dc.draw_bitmap( @bitmap, 10, 10 )
118
+ end
119
+ end
120
+
121
+ def on_angle_up(event)
122
+ @angle += 5
123
+ canvas.refresh
124
+ end
125
+
126
+ def on_angle_down(event)
127
+ @angle -= 5
128
+ canvas.refresh
129
+ end
130
+
131
+ def on_size(event)
132
+ super(event)
133
+ end
134
+
135
+ def on_print(event)
136
+ print_dialog_data = Wx::PrintDialogData.new(Wx::get_app.print_data)
137
+
138
+ printer = Wx::Printer.new(print_dialog_data)
139
+ printout = MyPrintout.new("My printout")
140
+ if (!printer.print(self, printout, true))
141
+ if (Wx::Printer.get_last_error == Wx::PRINTER_ERROR)
142
+ Wx::message_box("There was a problem printing.\nPerhaps your current printer is not set correctly?", "Printing", Wx::OK)
143
+ else
144
+ Wx::message_box("You canceled printing", "Printing", Wx::OK)
145
+ end
146
+ else
147
+ Wx::get_app.print_data = printer.get_print_dialog_data.get_print_data
148
+ end
149
+ end
150
+
151
+ def on_print_preview(event)
152
+ # Pass two printout objects: for preview, and possible printing.
153
+ print_dialog_data = Wx::PrintDialogData.new(Wx::get_app.print_data)
154
+ preview = Wx::PrintPreview.new(MyPrintout.new, MyPrintout.new, print_dialog_data)
155
+ if not preview.is_ok
156
+ #delete preview;
157
+ Wx::message_box("There was a problem previewing.\nPerhaps your current printer is not set correctly?", "Previewing", Wx::OK)
158
+ return
159
+ end
160
+
161
+ prev_frame = Wx::PreviewFrame.new(preview, self, "Demo Print Preview", Wx::Point.new(100, 100), Wx::Size.new(600, 650))
162
+ prev_frame.centre(Wx::BOTH)
163
+ prev_frame.init
164
+ prev_frame.show
165
+ end
166
+
167
+ def on_page_setup(event)
168
+ Wx::get_app.page_setup_data = Wx::PageSetupDialogData.new(Wx::get_app.print_data)
169
+ page_setup_dialog = Wx::PageSetupDialog.new(self, Wx::get_app.page_setup_data)
170
+ page_setup_dialog.show_modal
171
+
172
+ Wx::get_app.print_data = page_setup_dialog.get_page_setup_data.get_print_data
173
+ Wx::get_app.page_setup_data = Wx::PageSetupDialogData.new(Wx::get_app.print_data)
174
+ end
175
+
176
+ def on_exit(event)
177
+ close(true)
178
+ end
179
+
180
+ def on_print_about(event)
181
+ Wx::message_box("wxWidgets printing demo\nAuthor: Julian Smart\nAdapted to wxRuby by Sean Long",
182
+ "About wxRuby printing demo", Wx::OK|Wx::CENTRE)
183
+ end
184
+
185
+ end
186
+
10
187
  class MyCanvas < Wx::ScrolledWindow
11
188
  #attr_accessor :frame
12
189