wxruby 1.9.2-i386-mswin32 → 1.9.3-i386-mswin32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. data/LICENSE +53 -53
  2. data/README +299 -299
  3. data/lib/wx/classes/app.rb +6 -0
  4. data/lib/wx/classes/checklistbox.rb +45 -30
  5. data/lib/wx/classes/clipboard.rb +16 -0
  6. data/lib/wx/classes/event.rb +5 -0
  7. data/lib/wx/classes/evthandler.rb +20 -10
  8. data/lib/wx/classes/grid.rb +38 -39
  9. data/lib/wx/classes/listctrl.rb +12 -0
  10. data/lib/wx/classes/mediactrl.rb +22 -0
  11. data/lib/wx/classes/menu.rb +6 -6
  12. data/lib/wx/classes/sound.rb +23 -0
  13. data/lib/wx/classes/styledtextctrl.rb +2 -2
  14. data/lib/wx/classes/treectrl.rb +26 -0
  15. data/lib/wx/keyword_ctors.rb +19 -5
  16. data/lib/wx/keyword_defs.rb +20 -0
  17. data/lib/wx/version.rb +1 -1
  18. data/lib/wx.rb +42 -42
  19. data/lib/wxruby2.exp +0 -0
  20. data/lib/wxruby2.lib +0 -0
  21. data/lib/wxruby2.so +0 -0
  22. data/samples/SAMPLES-LICENSE.TXT +17 -17
  23. data/samples/aui/aui.rb +8 -1
  24. data/samples/bigdemo/About.rbw +39 -39
  25. data/samples/bigdemo/ColorPanel.rbw +25 -25
  26. data/samples/bigdemo/GridSimple.rbw +80 -80
  27. data/samples/bigdemo/MDIDemo.rbw +59 -59
  28. data/samples/bigdemo/PopupMenu.rbw +151 -151
  29. data/samples/bigdemo/Sizers.rbw +545 -545
  30. data/samples/bigdemo/bigdemo.rb +826 -826
  31. data/samples/bigdemo/demoTemplate.rbw +37 -37
  32. data/samples/bigdemo/icons/choice.xpm +27 -27
  33. data/samples/bigdemo/icons/combo.xpm +27 -27
  34. data/samples/bigdemo/icons/copy.xpm +25 -25
  35. data/samples/bigdemo/icons/cut.xpm +24 -24
  36. data/samples/bigdemo/icons/gauge.xpm +27 -27
  37. data/samples/bigdemo/icons/help.xpm +25 -25
  38. data/samples/bigdemo/icons/list.xpm +27 -27
  39. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  40. data/samples/bigdemo/icons/new.xpm +24 -24
  41. data/samples/bigdemo/icons/ogl.ico +0 -0
  42. data/samples/bigdemo/icons/ogl.xpm +45 -45
  43. data/samples/bigdemo/icons/open.xpm +26 -26
  44. data/samples/bigdemo/icons/paste.xpm +38 -38
  45. data/samples/bigdemo/icons/preview.xpm +26 -26
  46. data/samples/bigdemo/icons/print.xpm +26 -26
  47. data/samples/bigdemo/icons/radio.xpm +27 -27
  48. data/samples/bigdemo/icons/robert.xpm +415 -415
  49. data/samples/bigdemo/icons/save.xpm +25 -25
  50. data/samples/bigdemo/icons/smiles.xpm +39 -39
  51. data/samples/bigdemo/icons/smiley.xpm +42 -42
  52. data/samples/bigdemo/icons/stattext.xpm +24 -24
  53. data/samples/bigdemo/icons/test2.bmp +0 -0
  54. data/samples/bigdemo/icons/test2.xpm +79 -79
  55. data/samples/bigdemo/icons/text.xpm +27 -27
  56. data/samples/bigdemo/icons/tog1.xpm +38 -38
  57. data/samples/bigdemo/icons/tog2.xpm +38 -38
  58. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  59. data/samples/bigdemo/tips.txt +7 -7
  60. data/samples/bigdemo/utils.rb +11 -11
  61. data/samples/bigdemo/wxButton.rbw +66 -66
  62. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
  63. data/samples/bigdemo/wxCheckBox.rbw +52 -52
  64. data/samples/bigdemo/wxCheckListBox.rbw +77 -77
  65. data/samples/bigdemo/wxChoice.rbw +49 -49
  66. data/samples/bigdemo/wxColourDialog.rbw +34 -34
  67. data/samples/bigdemo/wxComboBox.rbw +79 -79
  68. data/samples/bigdemo/wxDialog.rbw +92 -92
  69. data/samples/bigdemo/wxDirDialog.rbw +32 -32
  70. data/samples/bigdemo/wxFileDialog.rbw +39 -39
  71. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
  72. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
  73. data/samples/bigdemo/wxFontDialog.rbw +176 -176
  74. data/samples/bigdemo/wxFrame.rbw +55 -55
  75. data/samples/bigdemo/wxGauge.rbw +73 -73
  76. data/samples/bigdemo/wxGrid.rbw +68 -68
  77. data/samples/bigdemo/wxListBox.rbw +142 -142
  78. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
  79. data/samples/bigdemo/wxMDIWindows.rbw +52 -52
  80. data/samples/bigdemo/wxMenu.rbw +238 -238
  81. data/samples/bigdemo/wxMessageDialog.rbw +30 -30
  82. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
  83. data/samples/bigdemo/wxNotebook.rbw +138 -138
  84. data/samples/bigdemo/wxProgressDialog.rbw +45 -45
  85. data/samples/bigdemo/wxRadioBox.rbw +74 -74
  86. data/samples/bigdemo/wxRadioButton.rbw +127 -127
  87. data/samples/bigdemo/wxSashWindow.rbw +94 -104
  88. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
  89. data/samples/bigdemo/wxScrolledWindow.rbw +201 -201
  90. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
  91. data/samples/bigdemo/wxSlider.rbw +44 -44
  92. data/samples/bigdemo/wxSpinButton.rbw +52 -52
  93. data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
  94. data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
  95. data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
  96. data/samples/bigdemo/wxStaticText.rbw +57 -57
  97. data/samples/bigdemo/wxStatusBar.rbw +128 -128
  98. data/samples/bigdemo/wxTextCtrl.rbw +151 -151
  99. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
  100. data/samples/bigdemo/wxToggleButton.rbw +51 -51
  101. data/samples/bigdemo/wxToolBar.rbw +133 -133
  102. data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
  103. data/samples/calendar/calendar.rb +275 -275
  104. data/samples/caret/caret.rb +286 -286
  105. data/samples/caret/mondrian.xpm +44 -44
  106. data/samples/controls/controls.rb +1140 -1140
  107. data/samples/controls/get_item_sample.rb +87 -87
  108. data/samples/controls/icons/choice.xpm +27 -27
  109. data/samples/controls/icons/combo.xpm +27 -27
  110. data/samples/controls/icons/gauge.xpm +27 -27
  111. data/samples/controls/icons/list.xpm +27 -27
  112. data/samples/controls/icons/radio.xpm +27 -27
  113. data/samples/controls/icons/stattext.xpm +24 -24
  114. data/samples/controls/icons/text.xpm +27 -27
  115. data/samples/controls/mondrian.xpm +44 -44
  116. data/samples/dialogs/dialogs.rb +724 -724
  117. data/samples/dialogs/tips.txt +18 -18
  118. data/samples/drawing/graphics_drawing.rb +232 -0
  119. data/samples/{images → drawing}/images.rb +48 -48
  120. data/samples/{images → drawing}/paperclip.png +0 -0
  121. data/samples/etc/activation.rb +108 -108
  122. data/samples/etc/choice.rb +72 -72
  123. data/samples/etc/miniframe.rb +84 -84
  124. data/samples/etc/sash.rb +135 -135
  125. data/samples/etc/scrollwin.rb +116 -116
  126. data/samples/etc/system_settings.rb +258 -258
  127. data/samples/etc/wizard.rb +79 -79
  128. data/samples/grid/grid.rb +1 -0
  129. data/samples/listbook/listbook.rb +181 -181
  130. data/samples/listbook/listbook.xrc +370 -370
  131. data/samples/mdi/mdi.rb +87 -87
  132. data/samples/media/mediactrl.rb +173 -0
  133. data/samples/minimal/minimal.rb +85 -85
  134. data/samples/minimal/nothing.rb +21 -21
  135. data/samples/opengl/cube.rb +123 -0
  136. data/samples/sockets/SocketPackets.rb +27 -0
  137. data/samples/sockets/res/message-new.png +0 -0
  138. data/samples/sockets/res/user.png +0 -0
  139. data/samples/sockets/wxClient.rb +395 -0
  140. data/samples/sockets/wxServer.rb +422 -0
  141. data/samples/sockets/wxSocketGUI.rb +97 -0
  142. data/samples/text/textctrl.rb +124 -124
  143. data/samples/text/unicode.rb +238 -238
  144. data/samples/text/utf8.txt +14 -14
  145. data/samples/treectrl/treectrl.rb +1180 -1181
  146. data/samples/xrc/samples.xrc +46 -46
  147. data/samples/xrc/xrc_sample.rb +107 -107
  148. metadata +26 -9
  149. data/samples/images/Thumbs.db +0 -0
@@ -1,79 +1,79 @@
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
- def initialize(title, pos, size)
18
- super(nil, :title => title, :position => pos, :size => size)
19
-
20
- menuFile = Wx::Menu.new
21
- helpMenu = Wx::Menu.new
22
- helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
23
- menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
24
- menuBar = Wx::MenuBar.new
25
- menuBar.append(menuFile, "&File")
26
- menuBar.append(helpMenu, "&Help")
27
- self.menu_bar = menuBar
28
-
29
- create_status_bar(1)
30
- self.status_text = "Welcome to wxRuby!"
31
- s = Wx::StaticText.new(self, :label => 'The Wizard has completed')
32
- evt_menu Wx::ID_EXIT, :on_quit
33
- evt_menu Wx::ID_ABOUT, :on_about
34
-
35
- w = Wx::Wizard.new(self, :title => 'The WxRuby Wizard')
36
- p1 = Wx::WizardPageSimple.new(w)
37
- s = Wx::StaticText.new(p1, :label => 'This is the first page')
38
-
39
- p2 = Wx::WizardPageSimple.new(w, p1)
40
- p1.set_next(p2)
41
- s = Wx::StaticText.new(p2, :label => 'This is the second page')
42
-
43
- p3 = Wx::WizardPageSimple.new(w, p2)
44
- p2.set_next(p3)
45
- s = Wx::StaticText.new(p3, :label => 'This is the final page')
46
-
47
- evt_wizard_page_changed(w) { p "page changed" }
48
- evt_wizard_page_changing(w) { p "page changing" }
49
- evt_wizard_help(w) { p "wizard help" }
50
- evt_wizard_cancel(w) { p "wizard cancelled" }
51
- evt_wizard_finished(w) { p "wizard finished" }
52
-
53
- w.run_wizard(p1)
54
- end
55
-
56
- def on_quit
57
- close(true)
58
- end
59
-
60
- def on_about
61
- msg = sprintf("This is the About dialog of the wizard sample.\n" \
62
- "Welcome to %s", Wx::VERSION_STRING)
63
- Wx::message_box(msg, "About Wizard", Wx::OK|Wx::ICON_INFORMATION, self)
64
- end
65
- end
66
-
67
- class RbApp < Wx::App
68
- def on_init
69
- frame = MyFrame.new("Wizard wxRuby App",
70
- Wx::Point.new(50, 50),
71
- Wx::Size.new(450, 340))
72
- frame.show(true)
73
-
74
- end
75
- end
76
-
77
- app = RbApp.new
78
- app.main_loop()
79
-
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
+ def initialize(title, pos, size)
18
+ super(nil, :title => title, :position => pos, :size => size)
19
+
20
+ menuFile = Wx::Menu.new
21
+ helpMenu = Wx::Menu.new
22
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
23
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
24
+ menuBar = Wx::MenuBar.new
25
+ menuBar.append(menuFile, "&File")
26
+ menuBar.append(helpMenu, "&Help")
27
+ self.menu_bar = menuBar
28
+
29
+ create_status_bar(1)
30
+ self.status_text = "Welcome to wxRuby!"
31
+ s = Wx::StaticText.new(self, :label => 'The Wizard has completed')
32
+ evt_menu Wx::ID_EXIT, :on_quit
33
+ evt_menu Wx::ID_ABOUT, :on_about
34
+
35
+ w = Wx::Wizard.new(self, :title => 'The WxRuby Wizard')
36
+ p1 = Wx::WizardPageSimple.new(w)
37
+ s = Wx::StaticText.new(p1, :label => 'This is the first page')
38
+
39
+ p2 = Wx::WizardPageSimple.new(w, p1)
40
+ p1.set_next(p2)
41
+ s = Wx::StaticText.new(p2, :label => 'This is the second page')
42
+
43
+ p3 = Wx::WizardPageSimple.new(w, p2)
44
+ p2.set_next(p3)
45
+ s = Wx::StaticText.new(p3, :label => 'This is the final page')
46
+
47
+ evt_wizard_page_changed(w) { p "page changed" }
48
+ evt_wizard_page_changing(w) { p "page changing" }
49
+ evt_wizard_help(w) { p "wizard help" }
50
+ evt_wizard_cancel(w) { p "wizard cancelled" }
51
+ evt_wizard_finished(w) { p "wizard finished" }
52
+
53
+ w.run_wizard(p1)
54
+ end
55
+
56
+ def on_quit
57
+ close(true)
58
+ end
59
+
60
+ def on_about
61
+ msg = sprintf("This is the About dialog of the wizard sample.\n" \
62
+ "Welcome to %s", Wx::VERSION_STRING)
63
+ Wx::message_box(msg, "About Wizard", Wx::OK|Wx::ICON_INFORMATION, self)
64
+ end
65
+ end
66
+
67
+ class RbApp < Wx::App
68
+ def on_init
69
+ frame = MyFrame.new("Wizard wxRuby App",
70
+ Wx::Point.new(50, 50),
71
+ Wx::Size.new(450, 340))
72
+ frame.show(true)
73
+
74
+ end
75
+ end
76
+
77
+ app = RbApp.new
78
+ app.main_loop()
79
+
data/samples/grid/grid.rb CHANGED
@@ -181,6 +181,7 @@ class GridFrame < Wx::Frame
181
181
  @grid.auto_size_row(3, true)
182
182
 
183
183
  # Display of cells can be customised
184
+ @grid.set_cell_editor(6, 0, Wx::GridCellBoolEditor.new)
184
185
  @grid.set_cell_renderer(6, 0, Wx::GridCellBoolRenderer.new)
185
186
  @grid.set_cell_value(6, 1, 'Cell to the left displayed as boolean')
186
187
  end
@@ -1,181 +1,181 @@
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
- #
17
- # Basic Frame Class. This creates the dialog window
18
- #
19
- class SimpleFrame < Wx::Frame
20
-
21
- FILE_DIALOG, FILE_ABOUT, FILE_QUIT = [0,Wx::ID_ABOUT,Wx::ID_EXIT]
22
-
23
- def initialize(parent)
24
- # To load a layout defined in XRC into a Ruby subclass of Frame,
25
- # first call the empty constructor. All the details of size,
26
- # title, position and so on are loaded from the XRC by the call to
27
- # load_frame_subclass. Using a non-empty constructor will cause
28
- # errors on GTK.
29
- super()
30
- $xml.load_frame_subclass(self,nil,'ID_FRAME')
31
-
32
- # Create a new menu
33
- bar = Wx::MenuBar.new
34
- menu = Wx::Menu.new
35
- menu.append(FILE_ABOUT,"About...")
36
- menu.append_separator
37
- menu.append(FILE_QUIT,"Quit")
38
- bar.append(menu,"File")
39
-
40
- set_menu_bar(bar)
41
-
42
- # Assign the menu events
43
- evt_menu(FILE_ABOUT) do
44
- Wx::message_box("wxRuby Listbook sample\nby Sean Long", "About Listbook", Wx::OK | Wx::ICON_INFORMATION, self)
45
- end
46
- evt_menu(FILE_QUIT) do
47
- Wx::get_app.exit_main_loop()
48
- end
49
- evt_close() do
50
- Wx::get_app.exit_main_loop()
51
- end
52
-
53
- # Variables not in tabs
54
- @listbook = xrcid_to_window('ID_LISTBOOK')
55
- @text_output = xrcid_to_window('ID_ORDER_TEXTCTRL')
56
-
57
- # Variables for widgets in Pizza tab
58
- @pizza_size = xrcid_to_window('ID_PIZZA_SIZE_CHOICE')
59
- @pizza_crust = xrcid_to_window('ID_PIZZA_CRUST_CHOICE')
60
- @pizza_sauce = xrcid_to_window('ID_PIZZA_SAUCE_CHOICE')
61
- @pizza_cheese = xrcid_to_window('ID_PIZZA_CHEESE_CHOICE')
62
- @pizza_toppings = []
63
- 3.times do |i|
64
- @pizza_toppings << xrcid_to_window("ID_PIZZA_TOPPING_#{i+1}_CHOICE")
65
- end
66
-
67
- # fill in toppings
68
- toppings = ['pepperoni','sausage','italian sausage','olives',
69
- 'mushrooms','artichoke','extra cheese','']
70
- toppings.each do |top_name|
71
- @pizza_toppings.each do |top_obj|
72
- top_obj.append(top_name)
73
- end
74
- end
75
-
76
- index = 0
77
- @pizza_toppings.each do |obj|
78
- obj.set_selection(index)
79
- index += 1
80
- end
81
-
82
- # Events for pizza tab
83
- evt_button( Wx::xrcid('ID_PIZZA_BUTTON') ) do |event|
84
- #get selections and add to order
85
- order_string = @text_output.get_value
86
- if order_string != "" then order_string << "\n" end
87
- order_string << "One #{@pizza_size.get_string_selection} pizza with:\n"
88
- order_string << @pizza_crust.get_string_selection + " crust" + "\n"
89
- order_string << @pizza_sauce.get_string_selection + " sauce" +"\n"
90
- order_string << @pizza_cheese.get_string_selection + " and" + "\n"
91
- @pizza_toppings.each { |obj| order_string << obj.get_string_selection + "\n" }
92
-
93
- @text_output.set_value(order_string)
94
- end
95
-
96
-
97
- # Variables for widgets in Drink tab
98
- @drink_size = xrcid_to_window('ID_DRINK_SIZE_CHOICE')
99
- @drink_type = xrcid_to_window('ID_DRINK_TYPE_CHOICE')
100
-
101
- # Events for drink tab
102
- evt_button(Wx::xrcid('ID_DRINK_BUTTON')) do |event|
103
- #get selections and add to order
104
- order_string = @text_output.get_value
105
- if order_string != "" then order_string << "\n" end
106
-
107
- order_string << "One #{@drink_size.get_string_selection} #{@drink_type.get_string_selection }.\n"
108
-
109
- @text_output.set_value(order_string)
110
- end
111
-
112
- # Variables for widgets in Ice Cream tab
113
- @ice_cream_size = xrcid_to_window('ID_ICE_CREAM_SIZE_CHOICE')
114
- @ice_cream_type = xrcid_to_window('ID_ICE_CREAM_TYPE_CHOICE')
115
- @ice_cream_toppings = []
116
- 4.times do |i|
117
- @ice_cream_toppings <<
118
- xrcid_to_window("ID_ICE_CREAM_TOPPING_#{i+1}_CHOICE")
119
- end
120
-
121
- toppings = ['','m&m\'s','chocolate chips','fudge','nuts','cherry','whip cream']
122
- toppings.each do |top_name|
123
- @ice_cream_toppings.each do |top_obj|
124
- top_obj.append(top_name)
125
- end
126
- end
127
- @ice_cream_toppings.each { |obj| obj.set_selection(0) }
128
-
129
- # Events for ice cream tab
130
- evt_button(Wx::xrcid('ID_ICE_CREAM_BUTTON')) do |event|
131
- #get selections and add to order
132
- order_string = @text_output.get_value
133
- if order_string != "" then order_string << "\n" end
134
-
135
- order_string << "One #{@ice_cream_size.get_string_selection} #{@ice_cream_type.get_string_selection} ice cream:\n"
136
- @ice_cream_toppings.each { |obj| order_string << obj.get_string_selection + "\n" }
137
-
138
- @text_output.set_value(order_string)
139
- end
140
-
141
- evt_listbook_page_changed(Wx::xrcid('ID_LISTBOOK')) do |event|
142
- tab_number = event.get_selection
143
- order_string = @text_output.get_value
144
- order_string << "moved to tab = #{@listbook.get_page_text(tab_number)} \n"
145
- @text_output.set_value(order_string)
146
- end
147
- end
148
-
149
- # Converts a XRCID id - as used in wxWidget's XML format - into the
150
- # correct ruby window
151
- def xrcid_to_window(xrc_id)
152
- Wx::Window.find_window_by_id(Wx::xrcid(xrc_id), self)
153
- end
154
-
155
- end
156
-
157
- #
158
- # Application class.
159
- #
160
- class XrcApp < Wx::App
161
-
162
- def on_init
163
- # Create a resource handler
164
- $xml = Wx::XmlResource.get();
165
- $xml.init_all_handlers();
166
-
167
- # Load a resource file from the script's directory
168
- xrc_file = File.join( File.dirname( __FILE__ ), 'listbook.xrc' )
169
-
170
- $xml.load(xrc_file)
171
-
172
-
173
- # Show the main frame.
174
- $main = SimpleFrame.new(self)
175
- $main.show(true)
176
-
177
- end
178
- end
179
-
180
-
181
- XrcApp.new().main_loop()
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
+ #
17
+ # Basic Frame Class. This creates the dialog window
18
+ #
19
+ class SimpleFrame < Wx::Frame
20
+
21
+ FILE_DIALOG, FILE_ABOUT, FILE_QUIT = [0,Wx::ID_ABOUT,Wx::ID_EXIT]
22
+
23
+ def initialize(parent)
24
+ # To load a layout defined in XRC into a Ruby subclass of Frame,
25
+ # first call the empty constructor. All the details of size,
26
+ # title, position and so on are loaded from the XRC by the call to
27
+ # load_frame_subclass. Using a non-empty constructor will cause
28
+ # errors on GTK.
29
+ super()
30
+ $xml.load_frame_subclass(self,nil,'ID_FRAME')
31
+
32
+ # Create a new menu
33
+ bar = Wx::MenuBar.new
34
+ menu = Wx::Menu.new
35
+ menu.append(FILE_ABOUT,"About...")
36
+ menu.append_separator
37
+ menu.append(FILE_QUIT,"Quit")
38
+ bar.append(menu,"File")
39
+
40
+ set_menu_bar(bar)
41
+
42
+ # Assign the menu events
43
+ evt_menu(FILE_ABOUT) do
44
+ Wx::message_box("wxRuby Listbook sample\nby Sean Long", "About Listbook", Wx::OK | Wx::ICON_INFORMATION, self)
45
+ end
46
+ evt_menu(FILE_QUIT) do
47
+ Wx::get_app.exit_main_loop()
48
+ end
49
+ evt_close() do
50
+ Wx::get_app.exit_main_loop()
51
+ end
52
+
53
+ # Variables not in tabs
54
+ @listbook = xrcid_to_window('ID_LISTBOOK')
55
+ @text_output = xrcid_to_window('ID_ORDER_TEXTCTRL')
56
+
57
+ # Variables for widgets in Pizza tab
58
+ @pizza_size = xrcid_to_window('ID_PIZZA_SIZE_CHOICE')
59
+ @pizza_crust = xrcid_to_window('ID_PIZZA_CRUST_CHOICE')
60
+ @pizza_sauce = xrcid_to_window('ID_PIZZA_SAUCE_CHOICE')
61
+ @pizza_cheese = xrcid_to_window('ID_PIZZA_CHEESE_CHOICE')
62
+ @pizza_toppings = []
63
+ 3.times do |i|
64
+ @pizza_toppings << xrcid_to_window("ID_PIZZA_TOPPING_#{i+1}_CHOICE")
65
+ end
66
+
67
+ # fill in toppings
68
+ toppings = ['pepperoni','sausage','italian sausage','olives',
69
+ 'mushrooms','artichoke','extra cheese','']
70
+ toppings.each do |top_name|
71
+ @pizza_toppings.each do |top_obj|
72
+ top_obj.append(top_name)
73
+ end
74
+ end
75
+
76
+ index = 0
77
+ @pizza_toppings.each do |obj|
78
+ obj.set_selection(index)
79
+ index += 1
80
+ end
81
+
82
+ # Events for pizza tab
83
+ evt_button( Wx::xrcid('ID_PIZZA_BUTTON') ) do |event|
84
+ #get selections and add to order
85
+ order_string = @text_output.get_value
86
+ if order_string != "" then order_string << "\n" end
87
+ order_string << "One #{@pizza_size.get_string_selection} pizza with:\n"
88
+ order_string << @pizza_crust.get_string_selection + " crust" + "\n"
89
+ order_string << @pizza_sauce.get_string_selection + " sauce" +"\n"
90
+ order_string << @pizza_cheese.get_string_selection + " and" + "\n"
91
+ @pizza_toppings.each { |obj| order_string << obj.get_string_selection + "\n" }
92
+
93
+ @text_output.set_value(order_string)
94
+ end
95
+
96
+
97
+ # Variables for widgets in Drink tab
98
+ @drink_size = xrcid_to_window('ID_DRINK_SIZE_CHOICE')
99
+ @drink_type = xrcid_to_window('ID_DRINK_TYPE_CHOICE')
100
+
101
+ # Events for drink tab
102
+ evt_button(Wx::xrcid('ID_DRINK_BUTTON')) do |event|
103
+ #get selections and add to order
104
+ order_string = @text_output.get_value
105
+ if order_string != "" then order_string << "\n" end
106
+
107
+ order_string << "One #{@drink_size.get_string_selection} #{@drink_type.get_string_selection }.\n"
108
+
109
+ @text_output.set_value(order_string)
110
+ end
111
+
112
+ # Variables for widgets in Ice Cream tab
113
+ @ice_cream_size = xrcid_to_window('ID_ICE_CREAM_SIZE_CHOICE')
114
+ @ice_cream_type = xrcid_to_window('ID_ICE_CREAM_TYPE_CHOICE')
115
+ @ice_cream_toppings = []
116
+ 4.times do |i|
117
+ @ice_cream_toppings <<
118
+ xrcid_to_window("ID_ICE_CREAM_TOPPING_#{i+1}_CHOICE")
119
+ end
120
+
121
+ toppings = ['','m&m\'s','chocolate chips','fudge','nuts','cherry','whip cream']
122
+ toppings.each do |top_name|
123
+ @ice_cream_toppings.each do |top_obj|
124
+ top_obj.append(top_name)
125
+ end
126
+ end
127
+ @ice_cream_toppings.each { |obj| obj.set_selection(0) }
128
+
129
+ # Events for ice cream tab
130
+ evt_button(Wx::xrcid('ID_ICE_CREAM_BUTTON')) do |event|
131
+ #get selections and add to order
132
+ order_string = @text_output.get_value
133
+ if order_string != "" then order_string << "\n" end
134
+
135
+ order_string << "One #{@ice_cream_size.get_string_selection} #{@ice_cream_type.get_string_selection} ice cream:\n"
136
+ @ice_cream_toppings.each { |obj| order_string << obj.get_string_selection + "\n" }
137
+
138
+ @text_output.set_value(order_string)
139
+ end
140
+
141
+ evt_listbook_page_changed(Wx::xrcid('ID_LISTBOOK')) do |event|
142
+ tab_number = event.get_selection
143
+ order_string = @text_output.get_value
144
+ order_string << "moved to tab = #{@listbook.get_page_text(tab_number)} \n"
145
+ @text_output.set_value(order_string)
146
+ end
147
+ end
148
+
149
+ # Converts a XRCID id - as used in wxWidget's XML format - into the
150
+ # correct ruby window
151
+ def xrcid_to_window(xrc_id)
152
+ Wx::Window.find_window_by_id(Wx::xrcid(xrc_id), self)
153
+ end
154
+
155
+ end
156
+
157
+ #
158
+ # Application class.
159
+ #
160
+ class XrcApp < Wx::App
161
+
162
+ def on_init
163
+ # Create a resource handler
164
+ $xml = Wx::XmlResource.get();
165
+ $xml.init_all_handlers();
166
+
167
+ # Load a resource file from the script's directory
168
+ xrc_file = File.join( File.dirname( __FILE__ ), 'listbook.xrc' )
169
+
170
+ $xml.load(xrc_file)
171
+
172
+
173
+ # Show the main frame.
174
+ $main = SimpleFrame.new(self)
175
+ $main.show(true)
176
+
177
+ end
178
+ end
179
+
180
+
181
+ XrcApp.new().main_loop()