wxruby 1.9.0-i686-linux

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 (199) hide show
  1. data/lib/wx.rb +35 -0
  2. data/lib/wx/classes/app.rb +25 -0
  3. data/lib/wx/classes/artprovider.rb +31 -0
  4. data/lib/wx/classes/bitmap.rb +23 -0
  5. data/lib/wx/classes/choice.rb +4 -0
  6. data/lib/wx/classes/clientdc.rb +13 -0
  7. data/lib/wx/classes/colour.rb +47 -0
  8. data/lib/wx/classes/combobox.rb +4 -0
  9. data/lib/wx/classes/evthandler.rb +824 -0
  10. data/lib/wx/classes/font.rb +118 -0
  11. data/lib/wx/classes/grid.rb +130 -0
  12. data/lib/wx/classes/helpcontroller.rb +5 -0
  13. data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
  14. data/lib/wx/classes/htmlwindow.rb +6 -0
  15. data/lib/wx/classes/icon.rb +14 -0
  16. data/lib/wx/classes/image.rb +14 -0
  17. data/lib/wx/classes/listbox.rb +4 -0
  18. data/lib/wx/classes/locale.rb +28 -0
  19. data/lib/wx/classes/object.rb +7 -0
  20. data/lib/wx/classes/paintdc.rb +12 -0
  21. data/lib/wx/classes/point.rb +5 -0
  22. data/lib/wx/classes/previewframe.rb +13 -0
  23. data/lib/wx/classes/rect.rb +5 -0
  24. data/lib/wx/classes/size.rb +5 -0
  25. data/lib/wx/classes/texturlevent.rb +6 -0
  26. data/lib/wx/classes/timer.rb +69 -0
  27. data/lib/wx/classes/window.rb +38 -0
  28. data/lib/wx/classes/xmlresource.rb +16 -0
  29. data/lib/wx/version.rb +3 -0
  30. data/lib/wxruby2.so +0 -0
  31. data/samples/SAMPLES-LICENSE.TXT +18 -0
  32. data/samples/aui/aui.rb +1352 -0
  33. data/samples/bigdemo/About.rbw +39 -0
  34. data/samples/bigdemo/ColorPanel.rbw +25 -0
  35. data/samples/bigdemo/GridSimple.rbw +80 -0
  36. data/samples/bigdemo/MDIDemo.rbw +59 -0
  37. data/samples/bigdemo/PopupMenu.rbw +151 -0
  38. data/samples/bigdemo/ShapedWindow.rbw +135 -0
  39. data/samples/bigdemo/Sizers.rbw +545 -0
  40. data/samples/bigdemo/bigdemo.rb +826 -0
  41. data/samples/bigdemo/demoTemplate.rbw +37 -0
  42. data/samples/bigdemo/helpfile.htb +0 -0
  43. data/samples/bigdemo/icons/Test 015.jpg +0 -0
  44. data/samples/bigdemo/icons/Test 015.png +0 -0
  45. data/samples/bigdemo/icons/choice.bmp +0 -0
  46. data/samples/bigdemo/icons/choice.xpm +27 -0
  47. data/samples/bigdemo/icons/combo.bmp +0 -0
  48. data/samples/bigdemo/icons/combo.xpm +27 -0
  49. data/samples/bigdemo/icons/copy.xpm +25 -0
  50. data/samples/bigdemo/icons/cut.xpm +24 -0
  51. data/samples/bigdemo/icons/gauge.bmp +0 -0
  52. data/samples/bigdemo/icons/gauge.xpm +27 -0
  53. data/samples/bigdemo/icons/help.xpm +25 -0
  54. data/samples/bigdemo/icons/list.bmp +0 -0
  55. data/samples/bigdemo/icons/list.xpm +27 -0
  56. data/samples/bigdemo/icons/mondrian.ico +0 -0
  57. data/samples/bigdemo/icons/mondrian.xpm +44 -0
  58. data/samples/bigdemo/icons/new.xpm +24 -0
  59. data/samples/bigdemo/icons/ogl.ico +0 -0
  60. data/samples/bigdemo/icons/ogl.xpm +45 -0
  61. data/samples/bigdemo/icons/open.xpm +26 -0
  62. data/samples/bigdemo/icons/paste.bmp +0 -0
  63. data/samples/bigdemo/icons/paste.xpm +38 -0
  64. data/samples/bigdemo/icons/pointy.png +0 -0
  65. data/samples/bigdemo/icons/preview.xpm +26 -0
  66. data/samples/bigdemo/icons/print.xpm +26 -0
  67. data/samples/bigdemo/icons/radio.bmp +0 -0
  68. data/samples/bigdemo/icons/radio.xpm +27 -0
  69. data/samples/bigdemo/icons/robert.xpm +415 -0
  70. data/samples/bigdemo/icons/ruby.png +0 -0
  71. data/samples/bigdemo/icons/sashtest.ico +0 -0
  72. data/samples/bigdemo/icons/save.xpm +25 -0
  73. data/samples/bigdemo/icons/smiles.bmp +0 -0
  74. data/samples/bigdemo/icons/smiles.xpm +39 -0
  75. data/samples/bigdemo/icons/smiley.ico +0 -0
  76. data/samples/bigdemo/icons/smiley.xpm +42 -0
  77. data/samples/bigdemo/icons/stattext.xpm +24 -0
  78. data/samples/bigdemo/icons/test2.bmp +0 -0
  79. data/samples/bigdemo/icons/test2.png +0 -0
  80. data/samples/bigdemo/icons/test2.xpm +79 -0
  81. data/samples/bigdemo/icons/text.bmp +0 -0
  82. data/samples/bigdemo/icons/text.xpm +27 -0
  83. data/samples/bigdemo/icons/tog1.bmp +0 -0
  84. data/samples/bigdemo/icons/tog1.xpm +38 -0
  85. data/samples/bigdemo/icons/tog2.bmp +0 -0
  86. data/samples/bigdemo/icons/tog2.xpm +38 -0
  87. data/samples/bigdemo/icons/wxwin.ico +0 -0
  88. data/samples/bigdemo/icons/wxwin16x16.png +0 -0
  89. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
  90. data/samples/bigdemo/icons/wxwin32x32.png +0 -0
  91. data/samples/bigdemo/icons/wxwin48x48.png +0 -0
  92. data/samples/bigdemo/run.rb +94 -0
  93. data/samples/bigdemo/tips.txt +7 -0
  94. data/samples/bigdemo/utils.rb +12 -0
  95. data/samples/bigdemo/wxArtProvider.rbw +285 -0
  96. data/samples/bigdemo/wxBitmapButton.rbw +64 -0
  97. data/samples/bigdemo/wxButton.rbw +66 -0
  98. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
  99. data/samples/bigdemo/wxCheckBox.rbw +52 -0
  100. data/samples/bigdemo/wxCheckListBox.rbw +77 -0
  101. data/samples/bigdemo/wxChoice.rbw +49 -0
  102. data/samples/bigdemo/wxChoicebook.rbw +80 -0
  103. data/samples/bigdemo/wxColourDialog.rbw +34 -0
  104. data/samples/bigdemo/wxComboBox.rbw +79 -0
  105. data/samples/bigdemo/wxCursor.rbw +140 -0
  106. data/samples/bigdemo/wxDialog.rbw +92 -0
  107. data/samples/bigdemo/wxDirDialog.rbw +32 -0
  108. data/samples/bigdemo/wxDragImage.rbw +74 -0
  109. data/samples/bigdemo/wxFileDialog.rbw +39 -0
  110. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
  111. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
  112. data/samples/bigdemo/wxFontDialog.rbw +176 -0
  113. data/samples/bigdemo/wxFrame.rbw +55 -0
  114. data/samples/bigdemo/wxGauge.rbw +73 -0
  115. data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
  116. data/samples/bigdemo/wxGrid.rbw +68 -0
  117. data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
  118. data/samples/bigdemo/wxListBox.rbw +142 -0
  119. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
  120. data/samples/bigdemo/wxMDIWindows.rbw +52 -0
  121. data/samples/bigdemo/wxMenu.rbw +238 -0
  122. data/samples/bigdemo/wxMessageDialog.rbw +30 -0
  123. data/samples/bigdemo/wxMiniFrame.rbw +74 -0
  124. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
  125. data/samples/bigdemo/wxNotebook.rbw +138 -0
  126. data/samples/bigdemo/wxProgressDialog.rbw +45 -0
  127. data/samples/bigdemo/wxRadioBox.rbw +74 -0
  128. data/samples/bigdemo/wxRadioButton.rbw +127 -0
  129. data/samples/bigdemo/wxSashWindow.rbw +155 -0
  130. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
  131. data/samples/bigdemo/wxScrolledWindow.rbw +196 -0
  132. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
  133. data/samples/bigdemo/wxSlider.rbw +44 -0
  134. data/samples/bigdemo/wxSpinButton.rbw +52 -0
  135. data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
  136. data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
  137. data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
  138. data/samples/bigdemo/wxStaticText.rbw +57 -0
  139. data/samples/bigdemo/wxStatusBar.rbw +128 -0
  140. data/samples/bigdemo/wxTextCtrl.rbw +151 -0
  141. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
  142. data/samples/bigdemo/wxToggleButton.rbw +51 -0
  143. data/samples/bigdemo/wxToolBar.rbw +133 -0
  144. data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
  145. data/samples/calendar/calendar.rb +275 -0
  146. data/samples/caret/caret.rb +296 -0
  147. data/samples/caret/mondrian.xpm +44 -0
  148. data/samples/controls/controls.rb +1140 -0
  149. data/samples/controls/get_item_sample.rb +87 -0
  150. data/samples/controls/icons/choice.xpm +27 -0
  151. data/samples/controls/icons/combo.xpm +27 -0
  152. data/samples/controls/icons/gauge.xpm +27 -0
  153. data/samples/controls/icons/list.xpm +27 -0
  154. data/samples/controls/icons/radio.xpm +27 -0
  155. data/samples/controls/icons/stattext.xpm +24 -0
  156. data/samples/controls/icons/text.xpm +27 -0
  157. data/samples/controls/mondrian.ico +0 -0
  158. data/samples/controls/mondrian.xpm +44 -0
  159. data/samples/controls/test2.bmp +0 -0
  160. data/samples/dialogs/dialogs.rb +724 -0
  161. data/samples/dialogs/tips.txt +18 -0
  162. data/samples/etc/activation.rb +108 -0
  163. data/samples/etc/choice.rb +72 -0
  164. data/samples/etc/miniframe.rb +84 -0
  165. data/samples/etc/sash.rb +135 -0
  166. data/samples/etc/scrollwin.rb +116 -0
  167. data/samples/etc/system_settings.rb +258 -0
  168. data/samples/etc/wizard.rb +81 -0
  169. data/samples/grid/grid.rb +201 -0
  170. data/samples/html/html.rb +251 -0
  171. data/samples/images/Thumbs.db +0 -0
  172. data/samples/images/images.rb +48 -0
  173. data/samples/images/paperclip.png +0 -0
  174. data/samples/listbook/listbook.rb +183 -0
  175. data/samples/listbook/listbook.xrc +370 -0
  176. data/samples/mdi/mdi.rb +87 -0
  177. data/samples/minimal/minimal.rb +95 -0
  178. data/samples/minimal/mondrian.ico +0 -0
  179. data/samples/minimal/mondrian.xpm +44 -0
  180. data/samples/minimal/nothing.rb +46 -0
  181. data/samples/minimal/text.rb +35 -0
  182. data/samples/printing/mondrian.ico +0 -0
  183. data/samples/printing/mondrian.xpm +44 -0
  184. data/samples/printing/printing.rb +484 -0
  185. data/samples/text/mondrian.ico +0 -0
  186. data/samples/text/mondrian.xpm +44 -0
  187. data/samples/text/scintilla.rb +180 -0
  188. data/samples/text/textctrl.rb +124 -0
  189. data/samples/text/unicode.rb +238 -0
  190. data/samples/text/utf8.txt +15 -0
  191. data/samples/treectrl/icon1.xpm +79 -0
  192. data/samples/treectrl/icon2.xpm +53 -0
  193. data/samples/treectrl/icon3.xpm +79 -0
  194. data/samples/treectrl/icon4.xpm +43 -0
  195. data/samples/treectrl/icon5.xpm +79 -0
  196. data/samples/treectrl/treectrl.rb +1210 -0
  197. data/samples/xrc/samples.xrc +46 -0
  198. data/samples/xrc/xrc_sample.rb +107 -0
  199. metadata +264 -0
@@ -0,0 +1,118 @@
1
+ class Wx::Font
2
+ # String names of the constants provided by C++
3
+ # (enum is originally defined inc include/wx/fontenc.h)
4
+ ENCODING_NAMES = %w[
5
+ DEFAULT
6
+
7
+ ISO-8859-1
8
+ ISO-8859-2
9
+ ISO-8859-3
10
+ ISO-8859-4
11
+ ISO-8859-5
12
+ ISO-8859-6
13
+ ISO-8859-7
14
+ ISO-8859-8
15
+ ISO-8859-9
16
+ ISO-8859-10
17
+ ISO-8859-11
18
+ ISO-8859-12
19
+ ISO-8859-13
20
+ ISO-8859-14
21
+ ISO-8859-15
22
+ ISO-8859-MAX
23
+
24
+ KOI8
25
+ KOI8-U
26
+ ALTERNATIVE
27
+ BULGARIAN
28
+
29
+ CP437
30
+ CP850
31
+ CP852
32
+ CP855
33
+ CP866
34
+
35
+ CP874
36
+ CP932
37
+ CP936
38
+ CP949
39
+ CP950
40
+ CP1250
41
+ CP1251
42
+ CP1252
43
+ CP1253
44
+ CP1254
45
+ CP1255
46
+ CP1256
47
+ CP1257
48
+ CP12-MAX
49
+
50
+ UTF7
51
+ UTF8
52
+ EUC-JP
53
+ UTF16BE
54
+ UTF16LE
55
+ UTF32BE
56
+ UTF32LE
57
+
58
+ MACROMAN
59
+ MACJAPANESE
60
+ MACCHINESETRAD
61
+ MACKOREAN
62
+ MACARABIC
63
+ MACHEBREW
64
+ MACGREEK
65
+ MACCYRILLIC
66
+ MACDEVANAGARI
67
+ MACGURMUKHI
68
+ MACGUJARATI
69
+ MACORIYA
70
+ MACBENGALI
71
+ MACTAMIL
72
+ MACTELUGU
73
+ MACKANNADA
74
+ MACMALAJALAM
75
+ MACSINHALESE
76
+ MACBURMESE
77
+ MACKHMER
78
+ MACTHAI
79
+ MACLAOTIAN
80
+ MACGEORGIAN
81
+ MACARMENIAN
82
+ MACCHINESESIMP
83
+ MACTIBETAN
84
+ MACMONGOLIAN
85
+ MACETHIOPIC
86
+ MACCENTRALEUR
87
+ MACVIATNAMESE
88
+ MACARABICEXT
89
+ MACSYMBOL
90
+ MACDINGBATS
91
+ MACTURKISH
92
+ MACCROATIAN
93
+ MACICELANDIC
94
+ MACROMANIAN
95
+ MACCELTIC
96
+ MACGAELIC
97
+ MACKEYBOARD
98
+ MAX
99
+ ]
100
+
101
+ class << self
102
+ # Returns the name of the platform's default font encoding
103
+ def get_default_encoding_name
104
+ ENCODING_NAMES[ get_default_encoding ]
105
+ end
106
+
107
+ # Sets the default encoding to be +enc+, which may be the string
108
+ # name of an encoding (eg 'UTF8') or an internal WxWidgets flag
109
+ # (eg Wx::FONTENCODING_UTF8).
110
+ def set_default_encoding_name(enc)
111
+ if flag_int = ENCODING_NAMES.index(enc.upcase)
112
+ set_default_encoding(flag_int)
113
+ else
114
+ raise ArgumentError, "Unknown font encoding name '#{enc}'"
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,130 @@
1
+ # A data-oriented editable table control.
2
+ class Wx::Grid
3
+ # The following extensions are all to prevent crashes associated with
4
+ # garbage collection of Grid-related classes; they do not extend the
5
+ # public functionality of the class in any way.
6
+ #
7
+ # The GridCellRenderers and GridCellEditors pose a problem for ruby's
8
+ # GC, in that Wx makes them owned by the grid once they have been set
9
+ # for a cell or group of cells. However, because they are SWIG
10
+ # directors we cannot allow the ruby object they are originally
11
+ # associated with to be swept by GC.
12
+ #
13
+ # The code below stores Ruby redefines all methods that may
14
+ # potentially set an Editor or Renderer, and stores a reference to
15
+ # it in an instance variable, so they are not disposed of up when GC sweeps.
16
+ wx_init = self.instance_method(:initialize)
17
+ define_method(:initialize) do | *args |
18
+ wx_init.bind(self).call(*args)
19
+ @__default_editor = nil
20
+ @__default_renderer = nil
21
+
22
+ @__cell_editors = []
23
+ @__cell_renderers = []
24
+
25
+ @__col_renderers = []
26
+ @__col_editors = []
27
+ @__row_renderers = []
28
+ @__row_editors = []
29
+ end
30
+
31
+ # store default editor
32
+ wx_set_default_editor = self.instance_method(:set_default_editor)
33
+ define_method(:set_default_editor) do | editr |
34
+ wx_set_default_editor.bind(self).call(editr)
35
+ @__default_editor = editr
36
+ end
37
+
38
+ # store default renderer
39
+ wx_set_default_renderer = self.instance_method(:set_default_renderer)
40
+ define_method(:set_default_renderer) do | rendr |
41
+ wx_set_default_renderer.bind(self).call(rendr)
42
+ @__default_renderer = rendr
43
+ end
44
+
45
+ # store cell editors
46
+ wx_set_cell_editor = self.instance_method(:set_cell_editor)
47
+ define_method(:set_cell_editor) do | row, col, editr |
48
+ wx_set_cell_editor.bind(self).call(row, col, editr)
49
+ @__cell_editors[row] ||= []
50
+ @__cell_editors[row][col] = editr
51
+ end
52
+
53
+ # store cell renderer
54
+ wx_set_cell_renderer = self.instance_method(:set_cell_renderer)
55
+ define_method(:set_cell_renderer) do | row, col, rendr |
56
+ wx_set_cell_renderer.bind(self).call(row, col, rendr)
57
+ @__cell_renderers[row] ||= []
58
+ @__cell_renderers[row][col] = rendr
59
+ end
60
+
61
+ wx_set_col_attr = self.instance_method(:set_col_attr)
62
+ define_method(:set_col_attr) do | col, attr |
63
+ wx_set_col_attr.bind(self).call(col, attr)
64
+ if attr.has_editor
65
+ @__col_editors[col] = attr.get_editor(self, 0, col)
66
+ end
67
+ if attr.has_renderer
68
+ @__col_renderers[col] = attr.get_renderer(self, 0, col)
69
+ end
70
+ end
71
+
72
+ wx_set_row_attr = self.instance_method(:set_row_attr)
73
+ define_method(:set_row_attr) do | row, attr |
74
+ wx_set_row_attr.bind(self).call(row, attr)
75
+ if attr.has_editor
76
+ @__row_editors[row] = attr.get_editor(self, row, 0)
77
+ end
78
+
79
+ if attr.has_renderer
80
+ @__row_renderers[row] = attr.get_renderer(self, row, 0)
81
+ end
82
+ end
83
+
84
+ # This and the following methods do a bit of book-keeping - as rows
85
+ # and columns are deleted and inserted, the position of the columns
86
+ # and rows with stored editors and renderers may move.
87
+ wx_insert_rows = self.instance_method(:insert_rows)
88
+ define_method(:insert_rows) do | pos, num |
89
+ wx_insert_rows.bind(self).call(pos, num)
90
+ num.times { @__row_editors.insert(pos, nil) }
91
+ num.times { @__row_renderers.insert(pos, nil) }
92
+ num.times { @__cell_editors.insert(pos, []) }
93
+ num.times { @__cell_renderers.insert(pos, []) }
94
+ end
95
+
96
+ wx_insert_cols = self.instance_method(:insert_cols)
97
+ define_method(:insert_cols) do | pos, num |
98
+ wx_insert_cols.bind(self).call(pos, num)
99
+ num.times { @__col_editors.insert(pos, nil) }
100
+ num.times { @__col_renderers.insert(pos, nil) }
101
+ num.times do
102
+ @__cell_editors.map { | col | col.insert(pos, []) if col }
103
+ end
104
+ num.times do
105
+ @__cell_renderers.map { | col | col.insert(pos, []) if col }
106
+ end
107
+ end
108
+
109
+ wx_delete_rows = self.instance_method(:delete_rows)
110
+ define_method(:delete_rows) do | pos, num |
111
+ wx_delete_rows.bind(self).call(pos, num)
112
+ @__row_editors.slice!(pos, num)
113
+ @__row_renderers.slice!(pos, num)
114
+ @__cell_editors.slice!(pos, num)
115
+ @__cell_renderers.slice!(pos, num)
116
+ end
117
+
118
+ wx_delete_cols = self.instance_method(:delete_cols)
119
+ define_method(:delete_cols) do | pos, num |
120
+ wx_delete_cols.bind(self).call(pos, num)
121
+ @__col_editors.slice!(pos, num)
122
+ @__col_renderers.slice!(pos, num)
123
+ num.times do
124
+ @__cell_editors.map { | col | col.slice!(pos, num) if col }
125
+ end
126
+ num.times do
127
+ @__cell_renderers.map { | col | col.slice!(pos, num) if col }
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,5 @@
1
+ class Wx::HelpController
2
+ def self.instance(*args)
3
+ @instance ||= new(*args)
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Wx::HtmlHelpController
2
+ def self.instance(*args)
3
+ @instance ||= new(*args)
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class Wx::HtmlWindow
2
+ # imitate the in-built LoadFile method
3
+ def load_file(file)
4
+ set_page( File.read(file) )
5
+ end
6
+ end
@@ -0,0 +1,14 @@
1
+ class Wx::Icon
2
+ # Redefine the initialize method so it raises an exception if a
3
+ # non-existent file is given to the constructor; otherwise, wx Widgets
4
+ # just carries on with an empty icon, which may cause faults later
5
+ wx_init = self.instance_method(:initialize)
6
+ define_method(:initialize) do | *args |
7
+ if args[0].kind_of? String
8
+ if not File.exist?( File.expand_path(args[0]) )
9
+ Kernel.raise(ArgumentError, "Icon file does not exist: #{args[0]}")
10
+ end
11
+ end
12
+ wx_init.bind(self).call(*args)
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ class Wx::Image
2
+ # Redefine the initialize method so it raises an exception if a
3
+ # non-existent file is given to the constructor; otherwise, wx Widgets
4
+ # just carries on with an invalid image, which may cause faults later
5
+ wx_init = self.instance_method(:initialize)
6
+ define_method(:initialize) do | *args |
7
+ if args[0].kind_of? String
8
+ if not File.exist?( File.expand_path(args[0]) )
9
+ Kernel.raise(ArgumentError, "Image file does not exist: #{args[0]}")
10
+ end
11
+ end
12
+ wx_init.bind(self).call(*args)
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ class Wx::ListBox
2
+ alias :get_item_data :get_client_data
3
+ alias :set_item_data :set_client_data
4
+ end
@@ -0,0 +1,28 @@
1
+ class Wx::Locale
2
+ class << self
3
+ def get_system_language_name
4
+ get_language_name( get_system_language )
5
+ end
6
+
7
+ def get_system_encoding_name
8
+ Wx::Font::ENCODING_NAMES[ get_system_encoding ]
9
+ end
10
+
11
+ # Set the current locale by a name, canonical name, or Wx::LANGUAGE_
12
+ # constant; mainly here because it seems a bit strange in Ruby to
13
+ # have global side-effects in a constructor
14
+ def set_locale(locale)
15
+ if locale.kind_of?(Fixnum)
16
+ new(locale)
17
+ elsif locale.kind_of?(String) and lang_info = find_language_info(locale)
18
+ new(lang_info.language)
19
+ else
20
+ raise ArgumentError, "Unknown language #{locale}"
21
+ end
22
+ end
23
+ end
24
+
25
+ def get_language_name
26
+ self.class.get_language_name(get_language)
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ # The root class for most (not all) WxRuby classes
2
+ class Wx::Object
3
+ # massage the output of inspect to show the public module name (Wx)
4
+ def to_s
5
+ super.sub('ruby2', '')
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ # Device Context to paint within an on_paint handler
2
+ class Wx::PaintDC
3
+ # This class should not be instantiated directly in wxRuby; it should
4
+ # always be used via Window#paint, which takes a block receiving the
5
+ # DC. This ensures that the DC is cleaned up at the correct time,
6
+ # preventing serious errors on some platforms.
7
+ def initialize(*args)
8
+ Kernel.raise RuntimeError,
9
+ "Do not instantiate PaintDC directly; use Window#paint",
10
+ caller[1..-1]
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ class Wx::Point
2
+ def to_s
3
+ "#<Wx::Point: (#{x}, #{y})>"
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ # Frame that displays a print preview
2
+ class Wx::PreviewFrame
3
+ # a PreviewFrame has a preview associated with it that must be
4
+ # protected from Ruby's GC. However, there is no C++ method to access
5
+ # the Wx::PrintPreview (only a protected member), so instead we have
6
+ # to assign it to an instance variable so it is marked correctly when
7
+ # the frame displaying it is marked.
8
+ wx_init = self.instance_method(:initialize)
9
+ define_method(:initialize) do | *args |
10
+ wx_init.bind(self).call(*args)
11
+ @__preview = args[0]
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class Wx::Rect
2
+ def to_s
3
+ "#<Wx::Rect: (#{get_left}, #{get_top}) (#{get_right}, #{get_bottom})>"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Wx::Size
2
+ def to_s
3
+ "#<Wx::Size: (#{get_width}, #{get_height})>"
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class Wx::TextUrlEvent
2
+ # Returns the string URL that is being interacted with in this event
3
+ def get_url
4
+ get_event_object.get_value[get_url_start .. get_url_end]
5
+ end
6
+ end
@@ -0,0 +1,69 @@
1
+ # Class allowing periodic or timed events to be fired
2
+ class Wx::Timer
3
+ # This class can be linked to an owner - an instance of a class
4
+ # derived from EvtHandler which will receive Timer events. However,
5
+ # event if a Wx::Timer is attached to a Wx::Window, it is (unlike most
6
+ # classes) NOT automatically deleted when the window is destroyed. If
7
+ # the Timer continues ticking, it will send events to the
8
+ # now-destroyed window, causing segfaults. So the little acrobatics
9
+ # below set up a hook when a Timer's owner is set, and then ensure the
10
+ # timer is stopped when the window is destroyed.
11
+
12
+ # Redefine initialize
13
+ wx_init = self.instance_method(:initialize)
14
+ define_method(:initialize) do | *args |
15
+ setup_owner_destruction_hook(args[0])
16
+ wx_init.bind(self).call(*args)
17
+ end
18
+
19
+ # Redefine set_owner
20
+ wx_set_owner = self.instance_method(:set_owner)
21
+ define_method(:set_owner) do | *args |
22
+ setup_owner_destruction_hook(args[0])
23
+ wx_set_owner.bind(self).call(*args)
24
+ end
25
+
26
+ private
27
+ # This method notes in Ruby the ownership of the timer, from both
28
+ # sides, and sets up an event hook if needed for the window's
29
+ # destruction.
30
+ def setup_owner_destruction_hook(new_owner)
31
+ this_timer = self
32
+
33
+ # Class-wide list of global (unowned) timers
34
+ @@__unowned_timers__ ||= []
35
+
36
+ # remove from list of previous owner
37
+ if @__owner__
38
+ @__owner__.instance_eval { @__owned_timers__.delete(this_timer) }
39
+ end
40
+
41
+ # If becoming global unowned timer, add to list of those timers
42
+ if not new_owner
43
+ @__owner__ = nil
44
+ @@__unowned_timers__ << self
45
+ return
46
+ end
47
+
48
+ # Otherwise, if previously unowned, remove from global owned
49
+ @@__unowned_timers__.delete(self)
50
+ @__owner__ = new_owner
51
+
52
+ # Then add to list of new owner, setting destructor hook if required
53
+ new_owner.instance_eval do
54
+ if not @__owned_timers__
55
+ @__owned_timers__ = []
56
+ unless self.kind_of?(Wx::App) # Don't set up hook on App
57
+ evt_window_destroy do | evt |
58
+ # If it's the owning window being destroyed...
59
+ if evt.get_event_object == self
60
+ @__owned_timers__.each { | timer | timer.stop }
61
+ end
62
+ evt.skip
63
+ end
64
+ end
65
+ end
66
+ @__owned_timers__ << this_timer
67
+ end
68
+ end
69
+ end