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,258 @@
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
+ # This example lists the various system settings that WxRuby knows
17
+ # about. To use it, run it and use the 'View' menu to list the different
18
+ # groups of settings available.
19
+
20
+ # A class to display system settings in a spreadsheet-like table.
21
+ class SystemSettingsTable < Wx::Grid
22
+ def initialize(parent)
23
+ super(parent, -1)
24
+ max_length = [ COLOURS.length, FONTS.length, METRICS.length ].max
25
+ create_grid( max_length, 3)
26
+
27
+ set_row_label_size(0)
28
+ set_row_label_alignment(Wx::ALIGN_RIGHT, Wx::ALIGN_CENTRE)
29
+
30
+ set_col_label_value(0, 'Name')
31
+ set_col_size(0, 200)
32
+ set_col_label_value(1, 'Value')
33
+ set_col_size(1, 100)
34
+ set_col_label_value(2, 'Description')
35
+ set_col_size(2, 300)
36
+ end
37
+
38
+ # blank out all row labels from +from_row+ to the end of the grid.
39
+ def tidy_row_labels(from_row = 0)
40
+ from_row.upto( get_number_rows - 1 ) do | row |
41
+ set_row_label_value(row, '')
42
+ end
43
+ end
44
+
45
+ # display a settings constant name +const+, its value +value+ and a
46
+ # text description +desc+ of that setting in the row +row+
47
+ def list(row, const, val, desc)
48
+ set_cell_value(row, 0, const)
49
+ set_cell_value(row, 1, val.to_s() )
50
+ set_cell_value(row, 2, desc)
51
+ end
52
+
53
+ # List the elements of the system's colour scheme, giving each one's
54
+ # Wx constant name, its RGB value in hex, and the description of how it
55
+ # is used.
56
+ def list_colours
57
+ clear_grid()
58
+ COLOURS.each_with_index do | item, i |
59
+ constant_name, description = *item
60
+ const = Wx::const_get(constant_name)
61
+ # obtain a Wx::Colour object for the named constantb
62
+ colour = Wx::SystemSettings.get_colour(const)
63
+ colour_hex = '#%02X%02X%02X' %
64
+ [ colour.red, colour.green, colour.blue ]
65
+ list( i, constant_name, colour_hex, description )
66
+ end
67
+ tidy_row_labels(COLOURS.length)
68
+ end
69
+
70
+ # List the standard system fonts, giving each one's Wx contant name,
71
+ # the font's platform descriptor, and a description of its use.
72
+ def list_fonts
73
+ clear_grid()
74
+ FONTS.each_with_index do | item, i |
75
+ constant_name, description = *item
76
+ const = Wx::const_get(constant_name)
77
+ # obtain a standard system font
78
+ font = Wx::SystemSettings.get_font(const)
79
+ font_desc = "%s %ipt" %
80
+ [ font.get_face_name, font.get_point_size ]
81
+ list( i, constant_name, font_desc, description )
82
+ end
83
+ tidy_row_labels(FONTS.length)
84
+ end
85
+
86
+ # List various standard measurements of GUI elements and areas, such as
87
+ # the size of the screen, cursor, icons and window borders. For each
88
+ # one, the WxRuby constant name, the value (usually in pixels), and a
89
+ # short description of its use is given.
90
+ #
91
+ # Not all metrics are implemented in Wx on all platforms; undefined
92
+ # values are shown as '-1'.
93
+ def list_metrics
94
+ clear_grid()
95
+ METRICS.each_with_index do | item, i |
96
+ constant_name, description = *item
97
+ const = Wx::const_get(constant_name)
98
+ # obtain a standard system metric
99
+ metric = Wx::SystemSettings.get_metric(const)
100
+ list( i, constant_name, metric, description )
101
+ end
102
+ tidy_row_labels(METRICS.length)
103
+ end
104
+
105
+ # copied from WxWidgets 2.6.2 documentation
106
+ COLOURS = [
107
+ [ 'SYS_COLOUR_SCROLLBAR', 'The scrollbar grey area.' ],
108
+ [ 'SYS_COLOUR_BACKGROUND', 'The desktop colour.' ],
109
+ [ 'SYS_COLOUR_ACTIVECAPTION', 'Active window caption.' ],
110
+ [ 'SYS_COLOUR_INACTIVECAPTION', 'Inactive window caption.' ],
111
+ [ 'SYS_COLOUR_MENU', 'Menu background.' ],
112
+ [ 'SYS_COLOUR_WINDOW', 'Window background.' ],
113
+ [ 'SYS_COLOUR_WINDOWFRAME', 'Window frame.' ],
114
+ [ 'SYS_COLOUR_MENUTEXT', 'Menu text.' ],
115
+ [ 'SYS_COLOUR_WINDOWTEXT', 'Text in windows.' ],
116
+ [ 'SYS_COLOUR_CAPTIONTEXT', 'Text in caption, size box and scrollbar arrow box.' ],
117
+ [ 'SYS_COLOUR_ACTIVEBORDER', 'Active window border.' ],
118
+ [ 'SYS_COLOUR_INACTIVEBORDER', 'Inactive window border.' ],
119
+ [ 'SYS_COLOUR_APPWORKSPACE', 'Background colour MDI applications.' ],
120
+ [ 'SYS_COLOUR_HIGHLIGHT', 'Item(s) selected in a control.' ],
121
+ [ 'SYS_COLOUR_HIGHLIGHTTEXT', 'Text of item(s) selected in a control.' ],
122
+ [ 'SYS_COLOUR_BTNFACE', 'Face shading on push buttons.' ],
123
+ [ 'SYS_COLOUR_BTNSHADOW', 'Edge shading on push buttons.' ],
124
+ [ 'SYS_COLOUR_GRAYTEXT', 'Greyed (disabled) text.' ],
125
+ [ 'SYS_COLOUR_BTNTEXT', 'Text on push buttons.' ],
126
+ [ 'SYS_COLOUR_INACTIVECAPTIONTEXT', 'Colour of text in active captions.' ],
127
+ [ 'SYS_COLOUR_BTNHIGHLIGHT', 'Highlight colour for buttons (same as wxSYS_COLOUR_3DHILIGHT).' ],
128
+ [ 'SYS_COLOUR_3DDKSHADOW', 'Dark shadow for three-dimensional display elements.' ],
129
+ [ 'SYS_COLOUR_3DLIGHT', 'Light colour for three-dimensional display elements.' ],
130
+ [ 'SYS_COLOUR_INFOTEXT', 'Text colour for tooltip controls.' ],
131
+ [ 'SYS_COLOUR_INFOBK', 'Background colour for tooltip controls.' ],
132
+ [ 'SYS_COLOUR_DESKTOP', 'Same as wxSYS_COLOUR_BACKGROUND.' ],
133
+ [ 'SYS_COLOUR_3DFACE', 'Same as wxSYS_COLOUR_BTNFACE.' ],
134
+ [ 'SYS_COLOUR_3DSHADOW', 'Same as wxSYS_COLOUR_BTNSHADOW.' ],
135
+ [ 'SYS_COLOUR_3DHIGHLIGHT', 'Same as wxSYS_COLOUR_BTNHIGHLIGHT.' ],
136
+ [ 'SYS_COLOUR_3DHILIGHT', 'Same as wxSYS_COLOUR_BTNHIGHLIGHT.' ],
137
+ [ 'SYS_COLOUR_BTNHILIGHT', 'Same as wxSYS_COLOUR_BTNHIGHLIGHT.' ]
138
+ ]
139
+
140
+ # copied from WxWidgets 2.6.2 documentation
141
+ FONTS = [
142
+ [ 'SYS_OEM_FIXED_FONT', 'Original equipment manufacturer dependent fixed-pitch font.' ],
143
+ [ 'SYS_ANSI_FIXED_FONT', 'Windows fixed-pitch font.' ],
144
+ [ 'SYS_ANSI_VAR_FONT', 'Windows variable-pitch (proportional) font.' ],
145
+ [ 'SYS_SYSTEM_FONT', 'System font.' ],
146
+ [ 'SYS_DEVICE_DEFAULT_FONT', 'Device-dependent font (Windows NT only).' ],
147
+ [ 'SYS_DEFAULT_GUI_FONT', 'Default font for user interface objects such as menus and dialog boxes.' ]
148
+ ]
149
+
150
+ # copied from WxWidgets 2.6.2 documentation
151
+ METRICS = [
152
+ [ 'SYS_MOUSE_BUTTONS', 'Number of buttons on mouse, or zero if no mouse was installed.' ],
153
+ [ 'SYS_BORDER_X', 'Width of single border.' ],
154
+ [ 'SYS_BORDER_Y', 'Height of single border.' ],
155
+ [ 'SYS_CURSOR_X', 'Width of cursor.' ],
156
+ [ 'SYS_CURSOR_Y', 'Height of cursor.' ],
157
+ [ 'SYS_DCLICK_X', 'Width in pixels of rectangle within which two successive mouse clicks must fall to generate a double-click.' ],
158
+ [ 'SYS_DCLICK_Y', 'Height in pixels of rectangle within which two successive mouse clicks must fall to generate a double-click.' ],
159
+ [ 'SYS_DRAG_X', 'Width in pixels of a rectangle centered on a drag point to allow for limited movement of the mouse pointer before a drag operation begins.' ],
160
+ [ 'SYS_DRAG_Y', 'Height in pixels of a rectangle centered on a drag point to allow for limited movement of the mouse pointer before a drag operation begins.' ],
161
+ [ 'SYS_EDGE_X', 'Width of a 3D border, in pixels.' ],
162
+ [ 'SYS_EDGE_Y', 'Height of a 3D border, in pixels.' ],
163
+ [ 'SYS_HSCROLL_ARROW_X', 'Width of arrow bitmap on horizontal scrollbar.' ],
164
+ [ 'SYS_HSCROLL_ARROW_Y', 'Height of arrow bitmap on horizontal scrollbar.' ],
165
+ [ 'SYS_HTHUMB_X', 'Width of horizontal scrollbar thumb.' ],
166
+ [ 'SYS_ICON_X', 'The default width of an icon.' ],
167
+ [ 'SYS_ICON_Y', 'The default height of an icon.' ],
168
+ [ 'SYS_ICONSPACING_X', 'Width of a grid cell for items in large icon view, in pixels. Each item fits into a rectangle of this size when arranged.' ],
169
+ [ 'SYS_ICONSPACING_Y', 'Height of a grid cell for items in large icon view, in pixels. Each item fits into a rectangle of this size when arranged.' ],
170
+ [ 'SYS_WINDOWMIN_X', 'Minimum width of a window.' ],
171
+ [ 'SYS_WINDOWMIN_Y', 'Minimum height of a window.' ],
172
+ [ 'SYS_SCREEN_X', 'Width of the screen in pixels.' ],
173
+ [ 'SYS_SCREEN_Y', 'Height of the screen in pixels.' ],
174
+ [ 'SYS_FRAMESIZE_X', 'Width of the window frame for a wxTHICK_FRAME window.' ],
175
+ [ 'SYS_FRAMESIZE_Y', 'Height of the window frame for a wxTHICK_FRAME window.' ],
176
+ [ 'SYS_SMALLICON_X', 'Recommended width of a small icon (in window captions, and small icon view).' ],
177
+ [ 'SYS_SMALLICON_Y', 'Recommended height of a small icon (in window captions, and small icon view).' ],
178
+ [ 'SYS_HSCROLL_Y', 'Height of horizontal scrollbar in pixels.' ],
179
+ [ 'SYS_VSCROLL_X', 'Width of vertical scrollbar in pixels.' ],
180
+ [ 'SYS_VSCROLL_ARROW_X', 'Width of arrow bitmap on a vertical scrollbar.' ],
181
+ [ 'SYS_VSCROLL_ARROW_Y', 'Height of arrow bitmap on a vertical scrollbar.' ],
182
+ [ 'SYS_VTHUMB_Y', 'Height of vertical scrollbar thumb.' ],
183
+ [ 'SYS_CAPTION_Y', 'Height of normal caption area.' ],
184
+ [ 'SYS_MENU_Y', 'Height of single-line menu bar.' ],
185
+ [ 'SYS_NETWORK_PRESENT', '1 if there is a network present, 0 otherwise.' ],
186
+ [ 'SYS_PENWINDOWS_PRESENT', '1 if PenWindows is installed, 0 otherwise.' ],
187
+ [ 'SYS_SHOW_SOUNDS', 'Non-zero if the user requires an application to present information visually in situations where it would otherwise present the information only in audible form; zero otherwise.' ],
188
+ [ 'SYS_SWAP_BUTTONS', 'Non-zero if the meanings of the left and right mouse buttons are swapped; zero otherwise.' ]
189
+ ]
190
+ end
191
+
192
+
193
+ # A simple frame that just shows a table with the System Settings in it.
194
+ class SettingsFrame < Wx::Frame
195
+
196
+ def initialize(title, pos = Wx::DEFAULT_POSITION, size = Wx::DEFAULT_SIZE)
197
+ super(nil, -1, title, pos, size)
198
+ sizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
199
+ @table = SystemSettingsTable.new(self)
200
+ sizer.add(@table, 1, Wx::ADJUST_MINSIZE|Wx::GROW|Wx::ALL, 2)
201
+ self.set_sizer(sizer)
202
+ construct_menus()
203
+ @table.list_colours()
204
+ end
205
+
206
+ ID_SHOW_COLOURS = 1
207
+ ID_SHOW_FONTS = 2
208
+ ID_SHOW_METRICS = 3
209
+ def construct_menus()
210
+ menu_bar = Wx::MenuBar.new()
211
+
212
+ menu_file = Wx::Menu.new()
213
+ menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
214
+ menu_bar.append(menu_file, "&File")
215
+ evt_menu(Wx::ID_EXIT) { on_quit() }
216
+
217
+ menu_view = Wx::Menu.new()
218
+ menu_view.append(ID_SHOW_COLOURS,
219
+ "Show &Colours", "Show system colours")
220
+ evt_menu(ID_SHOW_COLOURS) { @table.list_colours() }
221
+ menu_view.append(ID_SHOW_FONTS,
222
+ "Show &Fonts", "Show system fonts")
223
+ evt_menu(ID_SHOW_FONTS) { @table.list_fonts() }
224
+ menu_view.append(ID_SHOW_METRICS,
225
+ "Show &Metrics", "Show system metrics")
226
+ evt_menu(ID_SHOW_METRICS) { @table.list_metrics() }
227
+ menu_bar.append(menu_view, "&View")
228
+
229
+ menu_help = Wx::Menu.new()
230
+ menu_help.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
231
+ evt_menu(Wx::ID_ABOUT) { on_about() }
232
+ menu_bar.append(menu_help, "&Help")
233
+
234
+ set_menu_bar(menu_bar)
235
+ end
236
+
237
+ def on_quit()
238
+ close(TRUE)
239
+ end
240
+
241
+ def on_about()
242
+ msg = sprintf("This is the About dialog of the minimal sample.\n" \
243
+ "Welcome to %s", Wx::VERSION_STRING)
244
+ Wx::message_box(msg, "About Minimal", Wx::OK|Wx::ICON_INFORMATION, self)
245
+ end
246
+ end
247
+
248
+ class MyApp < Wx::App
249
+ def on_init()
250
+ frame = SettingsFrame.new("System Settings",
251
+ Wx::DEFAULT_POSITION,
252
+ Wx::Size.new(600, 400) )
253
+ frame.show(TRUE)
254
+ end
255
+ end
256
+
257
+ # run the app
258
+ MyApp.new.main_loop()
@@ -0,0 +1,81 @@
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, style = Wx::DEFAULT_FRAME_STYLE)
18
+ super(nil, -1, title, pos, size, style)
19
+
20
+
21
+ menuFile = Wx::Menu.new()
22
+ helpMenu = Wx::Menu.new()
23
+ helpMenu.append(Wx::ID_ABOUT, "&About...\tF1", "Show about dialog")
24
+ menuFile.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit this program")
25
+ menuBar = Wx::MenuBar.new()
26
+ menuBar.append(menuFile, "&File")
27
+ menuBar.append(helpMenu, "&Help")
28
+ set_menu_bar(menuBar)
29
+
30
+ create_status_bar(2)
31
+ set_status_text("Welcome to wxRuby!")
32
+ s = Wx::StaticText.new(self, -1, 'The Wizard has completed')
33
+
34
+
35
+ evt_menu(Wx::ID_EXIT) { on_quit }
36
+ evt_menu(Wx::ID_ABOUT) { on_about }
37
+ w = Wx::Wizard.new(self, -1, 'The WxRuby Wizard')
38
+ p1 = Wx::WizardPageSimple.new(w)
39
+ s = Wx::StaticText.new(p1, -1, 'This is the first page')
40
+ p2 = Wx::WizardPageSimple.new(w, p1)
41
+ p1.set_next(p2)
42
+ s = Wx::StaticText.new(p2, -1, 'This is the second page')
43
+ p3 = Wx::WizardPageSimple.new(w, p2)
44
+ p2.set_next(p3)
45
+ s = Wx::StaticText.new(p3, -1, 'This is the final page')
46
+
47
+ evt_wizard_page_changed(w.get_id) { p "page changed" }
48
+ evt_wizard_page_changing(w.get_id) { p "page changing" }
49
+ evt_wizard_help(w.get_id) { p "wizard help" }
50
+ evt_wizard_cancel(w.get_id) { p "wizard cancelled" }
51
+ evt_wizard_finished(w.get_id) { p "wizard finished" }
52
+
53
+
54
+ w.run_wizard(p1)
55
+ end
56
+
57
+ def on_quit
58
+ close(true)
59
+ end
60
+
61
+ def on_about
62
+ msg = sprintf("This is the About dialog of the wizard sample.\n" \
63
+ "Welcome to %s", Wx::VERSION_STRING)
64
+ Wx::message_box(msg, "About Wizard", Wx::OK|Wx::ICON_INFORMATION, self)
65
+ end
66
+ end
67
+
68
+ class RbApp < Wx::App
69
+ def on_init
70
+ frame = MyFrame.new("Wizard wxRuby App",
71
+ Wx::Point.new(50, 50),
72
+ Wx::Size.new(450, 340))
73
+
74
+ frame.show(true)
75
+
76
+ end
77
+ end
78
+
79
+ app = RbApp.new
80
+ app.main_loop()
81
+
@@ -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()