wxruby 1.9.1-powerpc-darwin8.3.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.
Files changed (204) hide show
  1. data/lib/wx.rb +42 -0
  2. data/lib/wx/accessors.rb +52 -0
  3. data/lib/wx/classes/app.rb +25 -0
  4. data/lib/wx/classes/artprovider.rb +31 -0
  5. data/lib/wx/classes/bitmap.rb +23 -0
  6. data/lib/wx/classes/choice.rb +4 -0
  7. data/lib/wx/classes/clientdc.rb +13 -0
  8. data/lib/wx/classes/colour.rb +47 -0
  9. data/lib/wx/classes/combobox.rb +4 -0
  10. data/lib/wx/classes/evthandler.rb +828 -0
  11. data/lib/wx/classes/font.rb +118 -0
  12. data/lib/wx/classes/grid.rb +130 -0
  13. data/lib/wx/classes/helpcontroller.rb +5 -0
  14. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  15. data/lib/wx/classes/htmlwindow.rb +6 -0
  16. data/lib/wx/classes/icon.rb +14 -0
  17. data/lib/wx/classes/image.rb +14 -0
  18. data/lib/wx/classes/listbox.rb +4 -0
  19. data/lib/wx/classes/locale.rb +28 -0
  20. data/lib/wx/classes/object.rb +7 -0
  21. data/lib/wx/classes/paintdc.rb +12 -0
  22. data/lib/wx/classes/point.rb +48 -0
  23. data/lib/wx/classes/previewframe.rb +13 -0
  24. data/lib/wx/classes/rect.rb +5 -0
  25. data/lib/wx/classes/size.rb +49 -0
  26. data/lib/wx/classes/styledtextctrl.rb +92 -0
  27. data/lib/wx/classes/textctrl.rb +14 -0
  28. data/lib/wx/classes/texturlevent.rb +6 -0
  29. data/lib/wx/classes/timer.rb +69 -0
  30. data/lib/wx/classes/window.rb +42 -0
  31. data/lib/wx/classes/xmlresource.rb +16 -0
  32. data/lib/wx/keyword_ctors.rb +219 -0
  33. data/lib/wx/keyword_defs.rb +455 -0
  34. data/lib/wx/version.rb +3 -0
  35. data/lib/wxruby2.bundle +0 -0
  36. data/samples/SAMPLES-LICENSE.TXT +18 -0
  37. data/samples/aui/aui.rb +1353 -0
  38. data/samples/bigdemo/About.rbw +39 -0
  39. data/samples/bigdemo/ColorPanel.rbw +25 -0
  40. data/samples/bigdemo/GridSimple.rbw +80 -0
  41. data/samples/bigdemo/MDIDemo.rbw +59 -0
  42. data/samples/bigdemo/PopupMenu.rbw +151 -0
  43. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  44. data/samples/bigdemo/Sizers.rbw +545 -0
  45. data/samples/bigdemo/bigdemo.rb +826 -0
  46. data/samples/bigdemo/demoTemplate.rbw +37 -0
  47. data/samples/bigdemo/helpfile.htb +0 -0
  48. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  49. data/samples/bigdemo/icons/Test 015.png +0 -0
  50. data/samples/bigdemo/icons/choice.bmp +0 -0
  51. data/samples/bigdemo/icons/choice.xpm +27 -0
  52. data/samples/bigdemo/icons/combo.bmp +0 -0
  53. data/samples/bigdemo/icons/combo.xpm +27 -0
  54. data/samples/bigdemo/icons/copy.xpm +25 -0
  55. data/samples/bigdemo/icons/cut.xpm +24 -0
  56. data/samples/bigdemo/icons/gauge.bmp +0 -0
  57. data/samples/bigdemo/icons/gauge.xpm +27 -0
  58. data/samples/bigdemo/icons/help.xpm +25 -0
  59. data/samples/bigdemo/icons/list.bmp +0 -0
  60. data/samples/bigdemo/icons/list.xpm +27 -0
  61. data/samples/bigdemo/icons/mondrian.ico +0 -0
  62. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  63. data/samples/bigdemo/icons/new.xpm +24 -0
  64. data/samples/bigdemo/icons/ogl.ico +0 -0
  65. data/samples/bigdemo/icons/ogl.xpm +45 -0
  66. data/samples/bigdemo/icons/open.xpm +26 -0
  67. data/samples/bigdemo/icons/paste.bmp +0 -0
  68. data/samples/bigdemo/icons/paste.xpm +38 -0
  69. data/samples/bigdemo/icons/pointy.png +0 -0
  70. data/samples/bigdemo/icons/preview.xpm +26 -0
  71. data/samples/bigdemo/icons/print.xpm +26 -0
  72. data/samples/bigdemo/icons/radio.bmp +0 -0
  73. data/samples/bigdemo/icons/radio.xpm +27 -0
  74. data/samples/bigdemo/icons/robert.xpm +415 -0
  75. data/samples/bigdemo/icons/ruby.png +0 -0
  76. data/samples/bigdemo/icons/sashtest.ico +0 -0
  77. data/samples/bigdemo/icons/save.xpm +25 -0
  78. data/samples/bigdemo/icons/smiles.bmp +0 -0
  79. data/samples/bigdemo/icons/smiles.xpm +39 -0
  80. data/samples/bigdemo/icons/smiley.ico +0 -0
  81. data/samples/bigdemo/icons/smiley.xpm +42 -0
  82. data/samples/bigdemo/icons/stattext.xpm +24 -0
  83. data/samples/bigdemo/icons/test2.bmp +0 -0
  84. data/samples/bigdemo/icons/test2.png +0 -0
  85. data/samples/bigdemo/icons/test2.xpm +79 -0
  86. data/samples/bigdemo/icons/text.bmp +0 -0
  87. data/samples/bigdemo/icons/text.xpm +27 -0
  88. data/samples/bigdemo/icons/tog1.bmp +0 -0
  89. data/samples/bigdemo/icons/tog1.xpm +38 -0
  90. data/samples/bigdemo/icons/tog2.bmp +0 -0
  91. data/samples/bigdemo/icons/tog2.xpm +38 -0
  92. data/samples/bigdemo/icons/wxwin.ico +0 -0
  93. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  94. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  95. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  96. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  97. data/samples/bigdemo/run.rb +94 -0
  98. data/samples/bigdemo/tips.txt +7 -0
  99. data/samples/bigdemo/utils.rb +12 -0
  100. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  101. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  102. data/samples/bigdemo/wxButton.rbw +66 -0
  103. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  104. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  105. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  106. data/samples/bigdemo/wxChoice.rbw +49 -0
  107. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  108. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  109. data/samples/bigdemo/wxComboBox.rbw +79 -0
  110. data/samples/bigdemo/wxCursor.rbw +140 -0
  111. data/samples/bigdemo/wxDialog.rbw +92 -0
  112. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  113. data/samples/bigdemo/wxDragImage.rbw +74 -0
  114. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  115. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  116. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  117. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  118. data/samples/bigdemo/wxFrame.rbw +55 -0
  119. data/samples/bigdemo/wxGauge.rbw +73 -0
  120. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  121. data/samples/bigdemo/wxGrid.rbw +68 -0
  122. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  123. data/samples/bigdemo/wxListBox.rbw +142 -0
  124. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  125. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  126. data/samples/bigdemo/wxMenu.rbw +238 -0
  127. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  128. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  129. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  130. data/samples/bigdemo/wxNotebook.rbw +138 -0
  131. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  132. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  133. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  134. data/samples/bigdemo/wxSashWindow.rbw +155 -0
  135. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  136. data/samples/bigdemo/wxScrolledWindow.rbw +196 -0
  137. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  138. data/samples/bigdemo/wxSlider.rbw +44 -0
  139. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  140. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  141. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  142. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  143. data/samples/bigdemo/wxStaticText.rbw +57 -0
  144. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  145. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  146. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  147. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  148. data/samples/bigdemo/wxToolBar.rbw +133 -0
  149. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  150. data/samples/calendar/calendar.rb +275 -0
  151. data/samples/caret/caret.rb +296 -0
  152. data/samples/caret/mondrian.xpm +44 -0
  153. data/samples/controls/controls.rb +1140 -0
  154. data/samples/controls/get_item_sample.rb +87 -0
  155. data/samples/controls/icons/choice.xpm +27 -0
  156. data/samples/controls/icons/combo.xpm +27 -0
  157. data/samples/controls/icons/gauge.xpm +27 -0
  158. data/samples/controls/icons/list.xpm +27 -0
  159. data/samples/controls/icons/radio.xpm +27 -0
  160. data/samples/controls/icons/stattext.xpm +24 -0
  161. data/samples/controls/icons/text.xpm +27 -0
  162. data/samples/controls/mondrian.ico +0 -0
  163. data/samples/controls/mondrian.xpm +44 -0
  164. data/samples/controls/test2.bmp +0 -0
  165. data/samples/dialogs/dialogs.rb +724 -0
  166. data/samples/dialogs/tips.txt +18 -0
  167. data/samples/etc/activation.rb +108 -0
  168. data/samples/etc/choice.rb +72 -0
  169. data/samples/etc/miniframe.rb +84 -0
  170. data/samples/etc/sash.rb +135 -0
  171. data/samples/etc/scrollwin.rb +116 -0
  172. data/samples/etc/system_settings.rb +258 -0
  173. data/samples/etc/wizard.rb +81 -0
  174. data/samples/event/event.rb +184 -0
  175. data/samples/grid/grid.rb +201 -0
  176. data/samples/html/html.rb +251 -0
  177. data/samples/images/Thumbs.db +0 -0
  178. data/samples/images/images.rb +48 -0
  179. data/samples/images/paperclip.png +0 -0
  180. data/samples/listbook/listbook.rb +183 -0
  181. data/samples/listbook/listbook.xrc +370 -0
  182. data/samples/mdi/mdi.rb +87 -0
  183. data/samples/minimal/minimal.rb +83 -0
  184. data/samples/minimal/mondrian.png +0 -0
  185. data/samples/minimal/nothing.rb +46 -0
  186. data/samples/minimal/text.rb +35 -0
  187. data/samples/printing/mondrian.ico +0 -0
  188. data/samples/printing/mondrian.xpm +44 -0
  189. data/samples/printing/printing.rb +484 -0
  190. data/samples/text/mondrian.ico +0 -0
  191. data/samples/text/mondrian.xpm +44 -0
  192. data/samples/text/scintilla.rb +174 -0
  193. data/samples/text/textctrl.rb +124 -0
  194. data/samples/text/unicode.rb +238 -0
  195. data/samples/text/utf8.txt +15 -0
  196. data/samples/treectrl/icon1.xpm +79 -0
  197. data/samples/treectrl/icon2.xpm +53 -0
  198. data/samples/treectrl/icon3.xpm +79 -0
  199. data/samples/treectrl/icon4.xpm +43 -0
  200. data/samples/treectrl/icon5.xpm +79 -0
  201. data/samples/treectrl/treectrl.rb +1210 -0
  202. data/samples/xrc/samples.xrc +46 -0
  203. data/samples/xrc/xrc_sample.rb +107 -0
  204. metadata +263 -0
@@ -0,0 +1,201 @@
1
+ #!/usr/bin/env ruby
2
+ begin
3
+ require 'wx'
4
+ rescue LoadError => no_wx_err
5
+ begin
6
+ require 'rubygems'
7
+ load 'wx'
8
+ rescue
9
+ raise no_wx_err
10
+ end
11
+ end
12
+
13
+
14
+ class GridFrame < Wx::Frame
15
+
16
+ def initialize(parent, id = -1, title = "MyFrame",
17
+ pos = Wx::DEFAULT_POSITION,
18
+ size = Wx::DEFAULT_SIZE,
19
+ style = Wx::DEFAULT_FRAME_STYLE)
20
+
21
+ super(parent, id, title, pos, size, style)
22
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
23
+ create_status_bar()
24
+ set_status_text(Wx::VERSION_STRING)
25
+
26
+ # panel = Wx::Panel.new(self)
27
+ sel_menu = Wx::Menu.new
28
+ sel_menu.append(1002, 'Select all', 'Select all')
29
+ evt_menu(1002) { @grid.select_all }
30
+ sel_menu.append(1003, 'Select row 2', 'Select row 2')
31
+ evt_menu(1003) { @grid.select_row(1) }
32
+ sel_menu.append(1004, 'Select column 4', 'Select col 4')
33
+ evt_menu(1004) { @grid.select_col(3) }
34
+ sel_menu.append(1005, 'Select block', 'Select block')
35
+ evt_menu(1005) { @grid.select_block(1, 1, 6, 3) }
36
+ menu_bar = Wx::MenuBar.new
37
+ menu_bar.append(sel_menu, 'Select')
38
+ set_menu_bar(menu_bar)
39
+
40
+ make_grid(self)
41
+ sizer.add(@grid, 1, Wx::ALL|Wx::GROW, 4)
42
+ set_sizer(sizer)
43
+
44
+ evt_grid_cell_left_click() do |evt|
45
+ set_status_text("#{evt.get_row} x #{evt.get_col} is clicked")
46
+ evt.skip
47
+ end
48
+
49
+ evt_grid_cell_right_click() do |evt|
50
+ set_status_text("#{evt.get_row} x #{evt.get_col} is right clicked")
51
+ evt.skip
52
+ end
53
+
54
+ evt_grid_cell_left_dclick() do |evt|
55
+ set_status_text("#{evt.get_row} x #{evt.get_col} is double clicked")
56
+ evt.skip
57
+ end
58
+
59
+ evt_grid_cell_right_dclick() do |evt|
60
+ set_status_text("#{evt.get_row} x #{evt.get_col} is right double clicked")
61
+ evt.skip
62
+ end
63
+
64
+ evt_grid_label_left_click() do |evt|
65
+ set_status_text("#{evt.get_row} x #{evt.get_col} label is clicked")
66
+ evt.skip
67
+ end
68
+
69
+ evt_grid_label_right_click() do |evt|
70
+ set_status_text("#{evt.get_row} x #{evt.get_col} label is right clicked")
71
+ evt.skip
72
+ end
73
+
74
+ evt_grid_label_left_dclick() do |evt|
75
+ set_status_text("#{evt.get_row} x #{evt.get_col} labelis double clicked")
76
+ evt.skip
77
+ end
78
+
79
+ evt_grid_label_right_dclick() do |evt|
80
+ set_status_text("#{evt.get_row} x #{evt.get_col} label is right double clicked")
81
+ evt.skip
82
+ end
83
+
84
+ evt_grid_select_cell() do |evt|
85
+ set_status_text("#{evt.get_row} x #{evt.get_col} cell is selected")
86
+ evt.skip
87
+ end
88
+
89
+ evt_grid_row_size do |evt|
90
+ set_status_text("Row #{evt.get_row_or_col} size changed")
91
+ evt.skip
92
+ end
93
+
94
+ evt_grid_col_size do |evt|
95
+ set_status_text("Column #{evt.get_row_or_col} size changed")
96
+ evt.skip
97
+ end
98
+
99
+ evt_grid_editor_shown do |evt|
100
+ set_status_text("Begin editing")
101
+ evt.skip
102
+ end
103
+
104
+ evt_grid_editor_hidden do |evt|
105
+ set_status_text("End editing")
106
+ evt.skip
107
+ end
108
+
109
+ evt_grid_range_select do |evt|
110
+ top = evt.get_top_left_coords
111
+ bottom = evt.get_bottom_right_coords
112
+ set_status_text("[ #{top[0].to_s} x #{top[1].to_s} ] to [ #{bottom[0].to_s} x #{bottom[1].to_s} ] is selected")
113
+ end
114
+
115
+ evt_grid_editor_created do |evt|
116
+ set_status_text("Control #{evt.get_control} created")
117
+ evt.skip
118
+ end
119
+
120
+ evt_grid_cell_change() do |evt|
121
+ set_status_text("Cell #{evt.get_row} x #{evt.get_col} has changed")
122
+ end
123
+ end
124
+
125
+ # Create a wxGrid object
126
+ def make_grid(panel)
127
+ @grid = Wx::Grid.new(panel, -1)
128
+
129
+ # Then we call CreateGrid to set the dimensions of the grid
130
+ # (11 rows and 12 columns in this example)
131
+ @grid.create_grid( 20, 12 )
132
+ @grid.set_default_cell_background_colour(Wx::WHITE)
133
+ # We can set the sizes of individual rows and columns
134
+ # in pixels, and the label value string
135
+ @grid.set_row_size( 0, 60 )
136
+ @grid.set_row_label_value( 0, "Row1" )
137
+ @grid.set_row_label_alignment(Wx::ALIGN_CENTRE, Wx::ALIGN_CENTRE)
138
+
139
+ @grid.set_col_size( 0, 120 )
140
+ @grid.set_col_label_value( 0, "Col1" )
141
+ @grid.set_col_label_alignment(Wx::ALIGN_CENTRE, Wx::ALIGN_CENTRE)
142
+
143
+ # And set grid cell contents as strings
144
+ @grid.set_cell_value( 0, 0, "wxGrid is good" )
145
+
146
+ # We can specify that some cells are read-only
147
+ @grid.set_cell_value( 0, 2, "Read-only" )
148
+ @grid.set_read_only( 0, 2 )
149
+
150
+ # Colours can be specified for grid cell contents
151
+ @grid.set_cell_value(1, 1, "white on red")
152
+ @grid.set_cell_text_colour(1, 1, Wx::WHITE)
153
+ @grid.set_cell_background_colour(1, 1, Wx::RED)
154
+
155
+ # We can specify the some cells will store numeric
156
+ # values rather than strings. Here we set grid column 6
157
+ # to hold floating point values displayed with width
158
+ # of 2 and precision of 2. The column is highlighted in light grey
159
+ cell_attr = Wx::GridCellAttr.new
160
+ cell_attr.set_background_colour( Wx::LIGHT_GREY )
161
+ cell_attr.set_renderer( Wx::GridCellFloatRenderer.new(2, 2) )
162
+
163
+ @grid.set_col_attr(5, cell_attr)
164
+ @grid.set_cell_value(0, 5, "3.1415")
165
+ @grid.set_cell_value(0, 6,
166
+ "The whole column to the left uses float format")
167
+
168
+ # Custom Editors Can be used
169
+ editor = Wx::GridCellNumberEditor.new(5, 20)
170
+ @grid.set_cell_value(3, 1, 'Number editor below')
171
+ @grid.set_cell_editor(4, 1, editor)
172
+
173
+ editor = Wx::GridCellFloatEditor.new(4, 2)
174
+ @grid.set_cell_value(3, 2, 'Float editor below')
175
+ @grid.set_cell_editor(4, 2, editor)
176
+
177
+ editor = Wx::GridCellChoiceEditor.new(['foo', 'bar', 'baz'])
178
+ @grid.set_cell_value(3, 3, 'Choice editor below')
179
+ @grid.set_cell_editor(4, 3, editor)
180
+
181
+ @grid.auto_size_row(3, true)
182
+
183
+ # Display of cells can be customised
184
+ @grid.set_cell_renderer(6, 0, Wx::GridCellBoolRenderer.new)
185
+ @grid.set_cell_value(6, 1, 'Cell to the left displayed as boolean')
186
+ end
187
+
188
+ end
189
+
190
+ class GridApp < Wx::App
191
+ def on_init
192
+ frame = GridFrame.new(nil, -1, "Grid Sample",
193
+ Wx::Point.new(10, 100),
194
+ Wx::Size.new(630,400))
195
+
196
+ set_top_window(frame)
197
+ frame.show()
198
+ end
199
+ end
200
+
201
+ GridApp.new.main_loop()
@@ -0,0 +1,251 @@
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
+ require 'net/http'
17
+ require 'uri'
18
+
19
+ class MyHtmlWindow < Wx::HtmlWindow
20
+ attr_reader :html_src
21
+ def load_page_from_uri(uri)
22
+ case uri
23
+ when URI::HTTP
24
+ Wx::BusyCursor.busy do
25
+ begin
26
+ res = Net::HTTP.start(uri.host, uri.port) do | http |
27
+ http.get(uri.path)
28
+ end
29
+ @loaded_uri = uri
30
+ set_page(res.body)
31
+ rescue => err
32
+ msg = "Could not load page:\n#{err}"
33
+ Wx::MessageDialog.new(nil, msg, 'Error loading page',
34
+ Wx::OK|Wx::ICON_ERROR).show_modal
35
+ return ''
36
+ end
37
+ end
38
+ return @loaded_uri
39
+ when URI::Generic
40
+ if @loaded_uri and @loaded_uri.kind_of?(URI::HTTP)
41
+ return load_page_from_uri( @loaded_uri.merge(uri) )
42
+ elsif @loaded_uri # current viewing a file
43
+ if uri.to_s =~ /^\//
44
+ return load_file(uri.path)
45
+ elsif not uri.path.empty?
46
+ local_file = File.join( File.dirname(@loaded_uri.path), uri.path)
47
+ return load_file( local_file )
48
+ end
49
+ end
50
+ end
51
+
52
+ dlg = Wx::MessageDialog.new(nil, "Can't load link",
53
+ "Unable to load the link #{uri}",
54
+ Wx::ICON_ERROR)
55
+ dlg.show_modal
56
+ end
57
+
58
+ def load_file(file)
59
+ @loaded_uri = URI.parse("file:////" + file)
60
+ super file
61
+ @loaded_uri
62
+ end
63
+
64
+ def set_page(html)
65
+ super html
66
+ @html_src = html
67
+ get_related_frame.addr_bar.set_value(@loaded_uri.to_s)
68
+ end
69
+
70
+ def on_link_clicked(link)
71
+ href = link.get_href
72
+ if href =~ /^#/
73
+ super(link)
74
+ end
75
+ link_uri = URI.parse(href)
76
+ @loaded_uri = load_page_from_uri(link_uri)
77
+ end
78
+
79
+ def on_cell_mouse_hover(cell, x, y)
80
+ if link = cell.get_link
81
+ get_related_frame.set_status_text(link.get_href)
82
+ else
83
+ get_related_frame.set_status_text('')
84
+ end
85
+ end
86
+ end
87
+
88
+ # The frame or self-contained window for this application
89
+ class HtmlFrame < Wx::Frame
90
+ attr_reader :html_win, :addr_bar
91
+
92
+ def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
93
+ # A main application frame has no parent (nil)
94
+ # -1 means this frame will be supplied a default id
95
+ super(nil, -1, title, pos, size, style)
96
+ setup_menus
97
+ setup_panel
98
+ create_status_bar(2)
99
+ set_status_text("Welcome to wxRuby!")
100
+ end
101
+
102
+ def setup_panel
103
+ panel = Wx::Panel.new(self, -1)
104
+
105
+ sizer = Wx::BoxSizer.new(Wx::VERTICAL)
106
+ top_sizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
107
+
108
+ @go_butt = Wx::StaticText.new(panel, -1, 'Location:')
109
+ top_sizer.add(@go_butt, 0, Wx::ALL, 4)
110
+ @addr_bar = Wx::TextCtrl.new(panel, -1, 'HOME', Wx::DEFAULT_POSITION,
111
+ Wx::DEFAULT_SIZE, Wx::TE_READONLY)
112
+ top_sizer.add(@addr_bar, 1, Wx::ALL, 4)
113
+ sizer.add(top_sizer, 0, Wx::EXPAND|Wx::TOP|Wx::BOTTOM, 4)
114
+
115
+ @html_win = MyHtmlWindow.new(panel, -1)
116
+ @html_win.set_related_frame(self, 'HTML Window: %s')
117
+ @html_win.set_related_status_bar(2)
118
+ @html_win.set_page(DATA.read)
119
+ sizer.add(@html_win, 1, Wx::ALL|Wx::GROW, 4)
120
+ panel.set_sizer(sizer)
121
+ end
122
+
123
+ def setup_menus
124
+ menu_file = Wx::Menu.new()
125
+ menu_help = Wx::Menu.new()
126
+ # Using Wx::ID_ABOUT default id means the menu item will be placed
127
+ # in the correct platform-specific place
128
+ menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
129
+ menu_file.append(Wx::ID_OPEN, "&Open File...\tCtrl-O", "Open File")
130
+ menu_file.append(Wx::ID_PRINT, "&Print...\tCtrl-P", "Print")
131
+
132
+ menu_file.append(Wx::ID_PREVIEW, "&Preview...\tCtrl-Shift-P",
133
+ "Print Preview")
134
+ menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
135
+
136
+ menu_bar = Wx::MenuBar.new()
137
+ menu_bar.append(menu_file, "&File")
138
+ menu_bar.append(menu_help, "&Help")
139
+ # Assign the menus to this frame
140
+ set_menu_bar(menu_bar)
141
+ # handle menu events
142
+ evt_menu(Wx::ID_OPEN) { on_open_file }
143
+ evt_menu(Wx::ID_PRINT) { on_print }
144
+ evt_menu(Wx::ID_PREVIEW) { on_preview }
145
+ evt_menu(Wx::ID_EXIT) { on_quit }
146
+ evt_menu(Wx::ID_ABOUT) { on_about }
147
+ end
148
+
149
+ # end the application
150
+ def on_quit
151
+ close
152
+ end
153
+
154
+ def on_open_file
155
+ f_dlg = Wx::FileDialog.new(self, "Open an HTML file", "", "",
156
+ "HTML files (*.html;*.htm)|.html;.htm)",
157
+ Wx::OPEN)
158
+ if not f_dlg.show_modal == Wx::ID_OK
159
+ return
160
+ end
161
+ html_file = f_dlg.get_path
162
+
163
+ @html_win.load_file(html_file)
164
+ end
165
+
166
+ # show an 'About' dialog
167
+ def on_about
168
+ msg = sprintf("This is the About dialog of the HTML sample.\n" \
169
+ "Welcome to wxRuby, version %s", Wx::WXRUBY_VERSION)
170
+
171
+ # create a simple message dialog with OK button
172
+ about_dlg = Wx::MessageDialog.new( self, msg, 'About WxRuby HTML',
173
+ Wx::OK|Wx::ICON_INFORMATION )
174
+ about_dlg.show_modal()
175
+ about_dlg.destroy()
176
+ end
177
+
178
+ def on_preview
179
+ print = Wx::HtmlEasyPrinting.new('Print HTML', self)
180
+ print.preview_text(@html_win.html_src)
181
+ end
182
+
183
+ def on_print
184
+ print = Wx::HtmlEasyPrinting.new('Print HTML', self)
185
+ print.print_text(@html_win.html_src)
186
+ end
187
+
188
+ # utility function to find an icon relative to this ruby script
189
+ def local_icon_file(icon_name)
190
+ File.join( File.dirname(__FILE__), icon_name)
191
+ end
192
+ end
193
+
194
+ # Wx::App is the container class for any wxruby app - only a single
195
+ # instance is required
196
+ class HtmlApp < Wx::App
197
+ def on_init
198
+ frame = HtmlFrame.new("Minimal wxRuby App",
199
+ Wx::Point.new(50, 50),
200
+ Wx::Size.new(450, 340))
201
+ set_app_name('HtmlDemo')
202
+ # required
203
+ frame.show()
204
+ end
205
+ end
206
+
207
+ # Create an instance ...
208
+ app = HtmlApp.new
209
+ # ... and run the application
210
+ app.main_loop()
211
+
212
+ __END__
213
+ <html>
214
+ <head>
215
+ <title>WxRuby HTML Demo</title>
216
+ </head>
217
+
218
+ <body bgcolor="#ffffff">
219
+ <h1>The HtmlWindow widget</h1>
220
+ <p>This is a very simple demonstration of
221
+ <strong>Wx::HtmlWindow</strong>, a control for displaying hypertext. The
222
+ control understands most HTML tags, including links, tables, images,
223
+ lists and the venerable FONT tag. It does not know about CSS or
224
+ Javascript; it is not really intended for building a general-purpose
225
+ web browser.</p>
226
+ <h2>This demo</h2>
227
+ <p>In this demo you can open local files for viewing (by choosing the
228
+ File / Open). If you have an internet connection http:// links will be
229
+ downloaded as well. Its features are otherwise limited - for example,
230
+ this example doesn't know about HTML anchor targets, because it has
231
+ over-ridden default link handling to show how to subclass and
232
+ specialise HtmlWindow in Ruby.</a>
233
+ <h2>Html Easy Printing</h2>
234
+ <p>A useful feature included with WxRuby is a simple interface for
235
+ printing HTML. You can see this in action by choosing 'Print' or
236
+ 'Preview' from the File menu.</p>
237
+ <h3>Further information</h3>
238
+ <p>Here's a table with some links</p>
239
+ <table border="1">
240
+ <tr>
241
+ <td>WxRuby online documentation</td>
242
+ <td><a href="http://wxruby.rubyforge.org/doc/">http://wxruby.rubyforge.org/doc/</a></td>
243
+ </tr>
244
+ <tr>
245
+ <td>WxRuby Wiki</td>
246
+ <td><a href="http://wxruby.rubyforge.org/wiki/wiki.pl">http://wxruby.rubyforge.org/wiki/wiki.pl</a></td>
247
+ </tr>
248
+ </table>
249
+
250
+ </body>
251
+ </html>