wxruby 1.9.0-powerpc-darwin8.10.0 → 1.9.2-powerpc-darwin8.10.0
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.
- data/LICENSE +53 -0
- data/README +299 -0
- data/lib/wx.rb +7 -0
- data/lib/wx/accessors.rb +52 -0
- data/lib/wx/classes/app.rb +15 -1
- data/lib/wx/classes/bitmap.rb +2 -2
- data/lib/wx/classes/checklistbox.rb +30 -0
- data/lib/wx/classes/clientdc.rb +1 -1
- data/lib/wx/classes/commandevent.rb +7 -0
- data/lib/wx/classes/controlwithitems.rb +10 -0
- data/lib/wx/classes/evthandler.rb +99 -39
- data/lib/wx/classes/grid.rb +13 -13
- data/lib/wx/classes/listctrl.rb +9 -0
- data/lib/wx/classes/menu.rb +62 -0
- data/lib/wx/classes/menuitem.rb +7 -0
- data/lib/wx/classes/paintdc.rb +1 -1
- data/lib/wx/classes/point.rb +43 -0
- data/lib/wx/classes/size.rb +44 -0
- data/lib/wx/classes/styledtextctrl.rb +92 -0
- data/lib/wx/classes/textctrl.rb +14 -0
- data/lib/wx/classes/timer.rb +2 -2
- data/lib/wx/classes/treectrl.rb +18 -0
- data/lib/wx/classes/window.rb +13 -2
- data/lib/wx/keyword_ctors.rb +205 -0
- data/lib/wx/keyword_defs.rb +465 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wxruby2.bundle +0 -0
- data/samples/aui/aui.rb +6 -5
- data/samples/bigdemo/wxListCtrl_virtual.rbw +21 -21
- data/samples/bigdemo/wxScrolledWindow.rbw +8 -3
- data/samples/calendar/calendar.rb +1 -1
- data/samples/caret/caret.rb +29 -39
- data/samples/etc/threaded.rb +81 -0
- data/samples/etc/wizard.rb +22 -24
- data/samples/event/event.rb +184 -0
- data/samples/html/html.rb +25 -12
- data/samples/listbook/listbook.rb +65 -67
- data/samples/minimal/minimal.rb +40 -50
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +5 -30
- data/samples/text/scintilla.rb +22 -28
- data/samples/text/unicode.rb +1 -1
- data/samples/treectrl/treectrl.rb +197 -226
- metadata +20 -4
- data/samples/minimal/mondrian.xpm +0 -44
- data/samples/minimal/text.rb +0 -35
@@ -0,0 +1,184 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# wxRuby2 Sample Code. Copyright (c) 2004-2007 wxRuby development team
|
3
|
+
# Freely reusable code: see SAMPLES-LICENSE.TXT for details
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'rubygems'
|
7
|
+
require 'wx'
|
8
|
+
rescue LoadError
|
9
|
+
require 'wx'
|
10
|
+
end
|
11
|
+
|
12
|
+
# This sample demonstrates how to dynamically connect and disconnect
|
13
|
+
# event handlers, and how to create custom event types and listeners
|
14
|
+
# associated with user-defined control classes.
|
15
|
+
|
16
|
+
# A custom type of event associated with a target control. Note that for
|
17
|
+
# user-defined controls, the associated event should inherit from
|
18
|
+
# Wx::CommandEvent rather than Wx::Event.
|
19
|
+
class TargetHitEvent < Wx::CommandEvent
|
20
|
+
# Create a new unique constant identifier, associate this class
|
21
|
+
# with events of that identifier, and create a shortcut 'evt_target'
|
22
|
+
# method for setting up this handler.
|
23
|
+
EVT_HIT_TARGET = Wx::EvtHandler.register_class(self, nil, 'evt_target', 1)
|
24
|
+
|
25
|
+
def initialize(target, score, distance)
|
26
|
+
# The constant id is the arg to super
|
27
|
+
super(EVT_HIT_TARGET)
|
28
|
+
# client_data should be used to store any information associated
|
29
|
+
# with the event.
|
30
|
+
self.client_data = { :score => score, :distance => distance }
|
31
|
+
self.id = target.get_id
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the points score associated with this event
|
35
|
+
def score
|
36
|
+
client_data[:score]
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns the distance (in pixels) from the centre of the target
|
40
|
+
def distance
|
41
|
+
client_data[:distance]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# An example of a simple user-written control, which displays a
|
46
|
+
# "bulls-eye" like target, and sends events with a score and distance
|
47
|
+
class TargetControl < Wx::Window
|
48
|
+
TargetCircle = Struct.new(:radius, :score, :brush)
|
49
|
+
|
50
|
+
def initialize(parent, *args)
|
51
|
+
super(parent, *args)
|
52
|
+
|
53
|
+
# Set up the scores and sizes of the rings
|
54
|
+
@radii = [
|
55
|
+
TargetCircle[ 0.1, 20, Wx::RED_BRUSH ],
|
56
|
+
TargetCircle[ 0.25, 10, Wx::BLUE_BRUSH ],
|
57
|
+
TargetCircle[ 0.4, 5, Wx::GREEN_BRUSH ] ]
|
58
|
+
evt_paint { | e | on_paint(e) }
|
59
|
+
evt_left_down { | e | on_left_down(e) }
|
60
|
+
end
|
61
|
+
|
62
|
+
# What point is at the centre (assuming this control is always square)
|
63
|
+
def centre_point
|
64
|
+
size.width / 2
|
65
|
+
end
|
66
|
+
|
67
|
+
# Called whenever the target is repainted, draws a series of
|
68
|
+
# concentric circles
|
69
|
+
def on_paint(evt)
|
70
|
+
paint do | dc |
|
71
|
+
dc.clear
|
72
|
+
@radii.reverse_each do | circ |
|
73
|
+
dc.brush = circ.brush
|
74
|
+
dc.draw_circle(centre_point, centre_point,
|
75
|
+
( size.width * circ.radius).to_i )
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Test if the target was hit, and generate a TargetHitEvent if so
|
81
|
+
def on_left_down(evt)
|
82
|
+
# quick bit of pythagoras...
|
83
|
+
distance = Math.sqrt( ( evt.x - centre_point ) ** 2 +
|
84
|
+
( evt.y - centre_point ) ** 2 )
|
85
|
+
# See which target ring, if any, was hit by the event
|
86
|
+
@radii.each do | circ |
|
87
|
+
if distance < ( size.width * circ.radius)
|
88
|
+
# Create an instance of the event
|
89
|
+
evt = TargetHitEvent.new(self, circ.score, distance)
|
90
|
+
# This sends the event for processing by listeners
|
91
|
+
event_handler.process_event(evt)
|
92
|
+
break
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Container frame for the target control
|
99
|
+
class TargetFrame < Wx::Frame
|
100
|
+
def initialize(title)
|
101
|
+
super(nil, :title => title, :size => [300, 300])
|
102
|
+
@tgt = TargetControl.new(self)
|
103
|
+
# This user-defined event handling method was set up by
|
104
|
+
# EvtHandler.register_class, above
|
105
|
+
evt_target(@tgt.get_id) { | e | on_target(e) }
|
106
|
+
@listening = true
|
107
|
+
evt_size { | e | on_size(e) }
|
108
|
+
setup_menus
|
109
|
+
create_status_bar
|
110
|
+
end
|
111
|
+
|
112
|
+
# What's done when the target is hit
|
113
|
+
def on_target(evt)
|
114
|
+
msg = "Target hit for score %i, %.2f pixels from centre" %
|
115
|
+
[ evt.score, evt.distance ]
|
116
|
+
self.status_text = msg
|
117
|
+
end
|
118
|
+
|
119
|
+
# Keep the target centred and square
|
120
|
+
def on_size(evt)
|
121
|
+
smaller = [ evt.size.width, evt.size.height ].min
|
122
|
+
@tgt.centre
|
123
|
+
@tgt.size = Wx::Size.new(smaller, smaller)
|
124
|
+
@tgt.refresh
|
125
|
+
end
|
126
|
+
|
127
|
+
# Toggle whether or not we are listening for events from the bulls-eye
|
128
|
+
# target
|
129
|
+
def on_toggle_connect
|
130
|
+
if @listening
|
131
|
+
# Remove :evt_target event handler for the @tgt
|
132
|
+
disconnect(@tgt.get_id, Wx::ID_ANY, :evt_target)
|
133
|
+
menu_bar.check(TOGGLE_LISTEN, false)
|
134
|
+
self.status_text = "Ignoring target events"
|
135
|
+
@listening = false
|
136
|
+
else
|
137
|
+
# Restore evt_target event handler for the @tgt
|
138
|
+
evt_target(@tgt.get_id) { | e | on_target(e) }
|
139
|
+
menu_bar.check(TOGGLE_LISTEN, true)
|
140
|
+
self.status_text = ''
|
141
|
+
@listening = true
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def on_about
|
146
|
+
msg = sprintf("This is the About dialog of the event handling sample.\n" \
|
147
|
+
"Welcome to wxRuby, version %s", Wx::WXRUBY_VERSION)
|
148
|
+
|
149
|
+
about_dlg = Wx::MessageDialog.new( self, msg, 'About Event Handling',
|
150
|
+
Wx::OK|Wx::ICON_INFORMATION )
|
151
|
+
about_dlg.show_modal
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
TOGGLE_LISTEN = 1001
|
156
|
+
def setup_menus
|
157
|
+
menu_file = Wx::Menu.new
|
158
|
+
menu_help = Wx::Menu.new
|
159
|
+
menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
160
|
+
evt_menu(Wx::ID_ABOUT) { on_about }
|
161
|
+
menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
|
162
|
+
evt_menu(Wx::ID_EXIT) { self.close }
|
163
|
+
menu_file.append_check_item(TOGGLE_LISTEN, "L&isten for events",
|
164
|
+
"Toggle listening for target events")
|
165
|
+
evt_menu(TOGGLE_LISTEN) { on_toggle_connect }
|
166
|
+
|
167
|
+
menu_bar = Wx::MenuBar.new
|
168
|
+
menu_bar.append(menu_file, "&File")
|
169
|
+
menu_bar.append(menu_help, "&Help")
|
170
|
+
|
171
|
+
self.menu_bar = menu_bar
|
172
|
+
menu_bar.check(TOGGLE_LISTEN, true)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
class TargetApp < Wx::App
|
177
|
+
def on_init
|
178
|
+
TargetFrame.new("Event Handling Sample").show
|
179
|
+
return true
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
a = TargetApp.new
|
184
|
+
a.main_loop()
|
data/samples/html/html.rb
CHANGED
@@ -78,9 +78,9 @@ class MyHtmlWindow < Wx::HtmlWindow
|
|
78
78
|
|
79
79
|
def on_cell_mouse_hover(cell, x, y)
|
80
80
|
if link = cell.get_link
|
81
|
-
|
81
|
+
related_frame.status_text = link.get_href, 1
|
82
82
|
else
|
83
|
-
|
83
|
+
related_frame.status_text = ''
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -95,8 +95,8 @@ class HtmlFrame < Wx::Frame
|
|
95
95
|
super(nil, -1, title, pos, size, style)
|
96
96
|
setup_menus
|
97
97
|
setup_panel
|
98
|
-
create_status_bar
|
99
|
-
|
98
|
+
create_status_bar
|
99
|
+
self.status_text = "Welcome to wxRuby!"
|
100
100
|
end
|
101
101
|
|
102
102
|
def setup_panel
|
@@ -127,6 +127,7 @@ class HtmlFrame < Wx::Frame
|
|
127
127
|
# in the correct platform-specific place
|
128
128
|
menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
|
129
129
|
menu_file.append(Wx::ID_OPEN, "&Open File...\tCtrl-O", "Open File")
|
130
|
+
menu_file.append(Wx::ID_HIGHEST + 1, "&Open URL...\tCtrl-U", "Open URL")
|
130
131
|
menu_file.append(Wx::ID_PRINT, "&Print...\tCtrl-P", "Print")
|
131
132
|
|
132
133
|
menu_file.append(Wx::ID_PREVIEW, "&Preview...\tCtrl-Shift-P",
|
@@ -137,13 +138,14 @@ class HtmlFrame < Wx::Frame
|
|
137
138
|
menu_bar.append(menu_file, "&File")
|
138
139
|
menu_bar.append(menu_help, "&Help")
|
139
140
|
# Assign the menus to this frame
|
140
|
-
|
141
|
+
self.menu_bar = menu_bar
|
141
142
|
# handle menu events
|
142
|
-
evt_menu
|
143
|
-
evt_menu
|
144
|
-
evt_menu
|
145
|
-
evt_menu
|
146
|
-
evt_menu
|
143
|
+
evt_menu Wx::ID_OPEN, :on_open_file
|
144
|
+
evt_menu Wx::ID_HIGHEST + 1, :on_open_url
|
145
|
+
evt_menu Wx::ID_PRINT, :on_print
|
146
|
+
evt_menu Wx::ID_PREVIEW, :on_preview
|
147
|
+
evt_menu Wx::ID_EXIT, :on_quit
|
148
|
+
evt_menu Wx::ID_ABOUT, :on_about
|
147
149
|
end
|
148
150
|
|
149
151
|
# end the application
|
@@ -153,16 +155,27 @@ class HtmlFrame < Wx::Frame
|
|
153
155
|
|
154
156
|
def on_open_file
|
155
157
|
f_dlg = Wx::FileDialog.new(self, "Open an HTML file", "", "",
|
156
|
-
"HTML files (*.html;*.htm)
|
158
|
+
"HTML files (*.html;*.htm)|*.html;*.htm)",
|
157
159
|
Wx::OPEN)
|
158
160
|
if not f_dlg.show_modal == Wx::ID_OK
|
159
161
|
return
|
160
162
|
end
|
161
163
|
html_file = f_dlg.get_path
|
162
|
-
|
164
|
+
if html_file.index("\\")
|
165
|
+
html_file = html_file.split("\\").join("/")
|
166
|
+
end
|
163
167
|
@html_win.load_file(html_file)
|
164
168
|
end
|
165
169
|
|
170
|
+
def on_open_url
|
171
|
+
url = Wx::get_text_from_user('Enter URL to open', 'Enter URL')
|
172
|
+
if not url.empty?
|
173
|
+
uri = URI.parse(url)
|
174
|
+
uri.path = '/' if uri.path.empty?
|
175
|
+
@html_win.load_page_from_uri(uri)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
166
179
|
# show an 'About' dialog
|
167
180
|
def on_about
|
168
181
|
msg = sprintf("This is the About dialog of the HTML sample.\n" \
|
@@ -13,69 +13,66 @@ rescue LoadError => no_wx_err
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
# This sample demonstrates the use of the listbook class.
|
17
|
-
# NB: This sample doesn't currently work on Linux (21/08/2006)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
16
|
#
|
22
17
|
# Basic Frame Class. This creates the dialog window
|
23
18
|
#
|
24
19
|
class SimpleFrame < Wx::Frame
|
25
20
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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')
|
36
31
|
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
# Create a new menu
|
33
|
+
bar = Wx::MenuBar.new
|
34
|
+
menu = Wx::Menu.new
|
40
35
|
menu.append(FILE_ABOUT,"About...")
|
41
36
|
menu.append_separator
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
37
|
+
menu.append(FILE_QUIT,"Quit")
|
38
|
+
bar.append(menu,"File")
|
39
|
+
|
40
|
+
set_menu_bar(bar)
|
41
|
+
|
42
|
+
# Assign the menu events
|
48
43
|
evt_menu(FILE_ABOUT) do
|
49
|
-
|
44
|
+
Wx::message_box("wxRuby Listbook sample\nby Sean Long", "About Listbook", Wx::OK | Wx::ICON_INFORMATION, self)
|
50
45
|
end
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
57
52
|
|
58
53
|
# Variables not in tabs
|
59
|
-
@listbook
|
60
|
-
@text_output =
|
54
|
+
@listbook = xrcid_to_window('ID_LISTBOOK')
|
55
|
+
@text_output = xrcid_to_window('ID_ORDER_TEXTCTRL')
|
61
56
|
|
62
57
|
# Variables for widgets in Pizza tab
|
63
|
-
@pizza_size
|
64
|
-
@pizza_crust
|
65
|
-
@pizza_sauce
|
66
|
-
@pizza_cheese =
|
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')
|
67
62
|
@pizza_toppings = []
|
68
63
|
3.times do |i|
|
69
|
-
@pizza_toppings <<
|
64
|
+
@pizza_toppings << xrcid_to_window("ID_PIZZA_TOPPING_#{i+1}_CHOICE")
|
70
65
|
end
|
71
66
|
|
72
67
|
# fill in toppings
|
73
|
-
toppings = ['pepperoni','sausage','
|
68
|
+
toppings = ['pepperoni','sausage','italian sausage','olives',
|
69
|
+
'mushrooms','artichoke','extra cheese','']
|
74
70
|
toppings.each do |top_name|
|
75
71
|
@pizza_toppings.each do |top_obj|
|
76
72
|
top_obj.append(top_name)
|
77
73
|
end
|
78
74
|
end
|
75
|
+
|
79
76
|
index = 0
|
80
77
|
@pizza_toppings.each do |obj|
|
81
78
|
obj.set_selection(index)
|
@@ -83,11 +80,10 @@ class SimpleFrame < Wx::Frame
|
|
83
80
|
end
|
84
81
|
|
85
82
|
# Events for pizza tab
|
86
|
-
evt_button(Wx::xrcid('ID_PIZZA_BUTTON')) do |event|
|
83
|
+
evt_button( Wx::xrcid('ID_PIZZA_BUTTON') ) do |event|
|
87
84
|
#get selections and add to order
|
88
85
|
order_string = @text_output.get_value
|
89
86
|
if order_string != "" then order_string << "\n" end
|
90
|
-
|
91
87
|
order_string << "One #{@pizza_size.get_string_selection} pizza with:\n"
|
92
88
|
order_string << @pizza_crust.get_string_selection + " crust" + "\n"
|
93
89
|
order_string << @pizza_sauce.get_string_selection + " sauce" +"\n"
|
@@ -99,8 +95,8 @@ class SimpleFrame < Wx::Frame
|
|
99
95
|
|
100
96
|
|
101
97
|
# Variables for widgets in Drink tab
|
102
|
-
@drink_size =
|
103
|
-
@drink_type =
|
98
|
+
@drink_size = xrcid_to_window('ID_DRINK_SIZE_CHOICE')
|
99
|
+
@drink_type = xrcid_to_window('ID_DRINK_TYPE_CHOICE')
|
104
100
|
|
105
101
|
# Events for drink tab
|
106
102
|
evt_button(Wx::xrcid('ID_DRINK_BUTTON')) do |event|
|
@@ -114,11 +110,12 @@ class SimpleFrame < Wx::Frame
|
|
114
110
|
end
|
115
111
|
|
116
112
|
# Variables for widgets in Ice Cream tab
|
117
|
-
@ice_cream_size =
|
118
|
-
@ice_cream_type =
|
113
|
+
@ice_cream_size = xrcid_to_window('ID_ICE_CREAM_SIZE_CHOICE')
|
114
|
+
@ice_cream_type = xrcid_to_window('ID_ICE_CREAM_TYPE_CHOICE')
|
119
115
|
@ice_cream_toppings = []
|
120
116
|
4.times do |i|
|
121
|
-
@ice_cream_toppings <<
|
117
|
+
@ice_cream_toppings <<
|
118
|
+
xrcid_to_window("ID_ICE_CREAM_TOPPING_#{i+1}_CHOICE")
|
122
119
|
end
|
123
120
|
|
124
121
|
toppings = ['','m&m\'s','chocolate chips','fudge','nuts','cherry','whip cream']
|
@@ -146,10 +143,15 @@ class SimpleFrame < Wx::Frame
|
|
146
143
|
order_string = @text_output.get_value
|
147
144
|
order_string << "moved to tab = #{@listbook.get_page_text(tab_number)} \n"
|
148
145
|
@text_output.set_value(order_string)
|
149
|
-
end
|
150
|
-
|
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)
|
151
153
|
end
|
152
|
-
|
154
|
+
|
153
155
|
end
|
154
156
|
|
155
157
|
#
|
@@ -157,27 +159,23 @@ end
|
|
157
159
|
#
|
158
160
|
class XrcApp < Wx::App
|
159
161
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
$xml = Wx::XmlResource.get();
|
165
|
-
$xml.init_all_handlers();
|
162
|
+
def on_init
|
163
|
+
# Create a resource handler
|
164
|
+
$xml = Wx::XmlResource.get();
|
165
|
+
$xml.init_all_handlers();
|
166
166
|
|
167
|
-
|
168
|
-
|
167
|
+
# Load a resource file from the script's directory
|
168
|
+
xrc_file = File.join( File.dirname( __FILE__ ), 'listbook.xrc' )
|
169
169
|
|
170
|
-
|
170
|
+
$xml.load(xrc_file)
|
171
171
|
|
172
|
-
#
|
173
|
-
# Show the main frame.
|
174
|
-
#
|
175
|
-
$main = SimpleFrame.new(self)
|
176
|
-
$main.show(true)
|
177
|
-
|
178
|
-
end
|
179
172
|
|
173
|
+
# Show the main frame.
|
174
|
+
$main = SimpleFrame.new(self)
|
175
|
+
$main.show(true)
|
176
|
+
|
177
|
+
end
|
180
178
|
end
|
181
|
-
|
182
|
-
|
179
|
+
|
180
|
+
|
183
181
|
XrcApp.new().main_loop()
|