wxruby 1.9.3-i386-mswin32 → 1.9.4-i386-mswin32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. data/LICENSE +53 -53
  2. data/README +299 -299
  3. data/lib/wx/classes/evthandler.rb +9 -0
  4. data/lib/wx/classes/timer.rb +25 -0
  5. data/lib/wx/version.rb +1 -1
  6. data/lib/wx.rb +42 -42
  7. data/lib/wxruby2.exp +0 -0
  8. data/lib/wxruby2.lib +0 -0
  9. data/lib/wxruby2.so +0 -0
  10. data/samples/SAMPLES-LICENSE.TXT +17 -17
  11. data/samples/bigdemo/About.rbw +39 -39
  12. data/samples/bigdemo/ColorPanel.rbw +25 -25
  13. data/samples/bigdemo/GridSimple.rbw +80 -80
  14. data/samples/bigdemo/MDIDemo.rbw +59 -59
  15. data/samples/bigdemo/PopupMenu.rbw +151 -151
  16. data/samples/bigdemo/Sizers.rbw +545 -545
  17. data/samples/bigdemo/bigdemo.rb +826 -826
  18. data/samples/bigdemo/demoTemplate.rbw +37 -37
  19. data/samples/bigdemo/icons/choice.xpm +27 -27
  20. data/samples/bigdemo/icons/combo.xpm +27 -27
  21. data/samples/bigdemo/icons/copy.xpm +25 -25
  22. data/samples/bigdemo/icons/cut.xpm +24 -24
  23. data/samples/bigdemo/icons/gauge.xpm +27 -27
  24. data/samples/bigdemo/icons/help.xpm +25 -25
  25. data/samples/bigdemo/icons/list.xpm +27 -27
  26. data/samples/bigdemo/icons/mondrian.xpm +44 -44
  27. data/samples/bigdemo/icons/new.xpm +24 -24
  28. data/samples/bigdemo/icons/ogl.ico +0 -0
  29. data/samples/bigdemo/icons/ogl.xpm +45 -45
  30. data/samples/bigdemo/icons/open.xpm +26 -26
  31. data/samples/bigdemo/icons/paste.xpm +38 -38
  32. data/samples/bigdemo/icons/preview.xpm +26 -26
  33. data/samples/bigdemo/icons/print.xpm +26 -26
  34. data/samples/bigdemo/icons/radio.xpm +27 -27
  35. data/samples/bigdemo/icons/robert.xpm +415 -415
  36. data/samples/bigdemo/icons/save.xpm +25 -25
  37. data/samples/bigdemo/icons/smiles.xpm +39 -39
  38. data/samples/bigdemo/icons/smiley.xpm +42 -42
  39. data/samples/bigdemo/icons/stattext.xpm +24 -24
  40. data/samples/bigdemo/icons/test2.bmp +0 -0
  41. data/samples/bigdemo/icons/test2.xpm +79 -79
  42. data/samples/bigdemo/icons/text.xpm +27 -27
  43. data/samples/bigdemo/icons/tog1.xpm +38 -38
  44. data/samples/bigdemo/icons/tog2.xpm +38 -38
  45. data/samples/bigdemo/icons/wxwin16x16.xpm +25 -25
  46. data/samples/bigdemo/tips.txt +7 -7
  47. data/samples/bigdemo/utils.rb +11 -11
  48. data/samples/bigdemo/wxButton.rbw +66 -66
  49. data/samples/bigdemo/wxCalendarCtrl.rbw +72 -72
  50. data/samples/bigdemo/wxCheckBox.rbw +52 -52
  51. data/samples/bigdemo/wxCheckListBox.rbw +77 -77
  52. data/samples/bigdemo/wxChoice.rbw +49 -49
  53. data/samples/bigdemo/wxColourDialog.rbw +34 -34
  54. data/samples/bigdemo/wxComboBox.rbw +79 -79
  55. data/samples/bigdemo/wxDialog.rbw +92 -92
  56. data/samples/bigdemo/wxDirDialog.rbw +32 -32
  57. data/samples/bigdemo/wxFileDialog.rbw +39 -39
  58. data/samples/bigdemo/wxFileDialog_Save.rbw +38 -38
  59. data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -85
  60. data/samples/bigdemo/wxFontDialog.rbw +176 -176
  61. data/samples/bigdemo/wxFrame.rbw +55 -55
  62. data/samples/bigdemo/wxGauge.rbw +73 -73
  63. data/samples/bigdemo/wxGrid.rbw +68 -68
  64. data/samples/bigdemo/wxListBox.rbw +142 -142
  65. data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -109
  66. data/samples/bigdemo/wxMDIWindows.rbw +52 -52
  67. data/samples/bigdemo/wxMenu.rbw +238 -238
  68. data/samples/bigdemo/wxMessageDialog.rbw +30 -30
  69. data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -34
  70. data/samples/bigdemo/wxNotebook.rbw +138 -138
  71. data/samples/bigdemo/wxProgressDialog.rbw +45 -45
  72. data/samples/bigdemo/wxRadioBox.rbw +74 -74
  73. data/samples/bigdemo/wxRadioButton.rbw +127 -127
  74. data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -59
  75. data/samples/bigdemo/wxScrolledWindow.rbw +201 -201
  76. data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -35
  77. data/samples/bigdemo/wxSlider.rbw +44 -44
  78. data/samples/bigdemo/wxSpinButton.rbw +52 -52
  79. data/samples/bigdemo/wxSpinCtrl.rbw +53 -53
  80. data/samples/bigdemo/wxSplitterWindow.rbw +65 -65
  81. data/samples/bigdemo/wxStaticBitmap.rbw +53 -53
  82. data/samples/bigdemo/wxStaticText.rbw +57 -57
  83. data/samples/bigdemo/wxStatusBar.rbw +128 -128
  84. data/samples/bigdemo/wxTextCtrl.rbw +151 -151
  85. data/samples/bigdemo/wxTextEntryDialog.rbw +34 -34
  86. data/samples/bigdemo/wxToggleButton.rbw +51 -51
  87. data/samples/bigdemo/wxToolBar.rbw +133 -133
  88. data/samples/bigdemo/wxTreeCtrl.rbw +192 -192
  89. data/samples/calendar/calendar.rb +275 -275
  90. data/samples/caret/caret.rb +286 -286
  91. data/samples/caret/mondrian.xpm +44 -44
  92. data/samples/controls/controls.rb +1140 -1140
  93. data/samples/controls/get_item_sample.rb +87 -87
  94. data/samples/controls/icons/choice.xpm +27 -27
  95. data/samples/controls/icons/combo.xpm +27 -27
  96. data/samples/controls/icons/gauge.xpm +27 -27
  97. data/samples/controls/icons/list.xpm +27 -27
  98. data/samples/controls/icons/radio.xpm +27 -27
  99. data/samples/controls/icons/stattext.xpm +24 -24
  100. data/samples/controls/icons/text.xpm +27 -27
  101. data/samples/controls/mondrian.xpm +44 -44
  102. data/samples/dialogs/dialogs.rb +724 -724
  103. data/samples/dialogs/tips.txt +18 -18
  104. data/samples/drawing/graphics_drawing.rb +22 -18
  105. data/samples/drawing/images.rb +48 -48
  106. data/samples/etc/activation.rb +108 -108
  107. data/samples/etc/choice.rb +72 -72
  108. data/samples/etc/miniframe.rb +84 -84
  109. data/samples/etc/sash.rb +135 -135
  110. data/samples/etc/scrollwin.rb +116 -116
  111. data/samples/etc/system_settings.rb +258 -258
  112. data/samples/etc/threaded.rb +5 -8
  113. data/samples/etc/wizard.rb +79 -79
  114. data/samples/html/html.rb +14 -10
  115. data/samples/listbook/listbook.rb +181 -181
  116. data/samples/listbook/listbook.xrc +370 -370
  117. data/samples/mdi/mdi.rb +87 -87
  118. data/samples/minimal/minimal.rb +85 -85
  119. data/samples/minimal/nothing.rb +21 -21
  120. data/samples/text/textctrl.rb +124 -124
  121. data/samples/text/unicode.rb +238 -238
  122. data/samples/text/utf8.txt +14 -14
  123. data/samples/treectrl/treectrl.rb +1180 -1180
  124. data/samples/xrc/samples.xrc +46 -46
  125. data/samples/xrc/xrc_sample.rb +107 -107
  126. metadata +3 -3
@@ -1,258 +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()
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()
@@ -65,14 +65,11 @@ class GaugeApp < Wx::App
65
65
  # Get a guaranteed-unique id
66
66
  THREAD_TIMER_ID = Wx::ID_HIGHEST + 1
67
67
  def on_init
68
- # Create a global application timer
69
- t = Wx::Timer.new(self, THREAD_TIMER_ID)
70
- # When the timer "ticks", switch control to other ruby threads
71
- evt_timer(THREAD_TIMER_ID) { Thread.pass }
72
- # Start the timer to run every 1/40 second (25ms); higher values
73
- # will make the other threads run more often, but will eventually
74
- # degrade the responsiveness of the GUI.
75
- t.start(25)
68
+ # Create a global application timer that passes control to other
69
+ # ruby threads. The timer will run every 1/40 second (25ms). Higher
70
+ # values will make the other threads run more often, but will
71
+ # eventually degrade the responsiveness of the GUI.
72
+ Wx::Timer.every(25) { Thread.pass }
76
73
  prog = ProgressFrame.new
77
74
  prog.show
78
75
  end