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.
- data/lib/wx.rb +42 -0
- data/lib/wx/accessors.rb +52 -0
- data/lib/wx/classes/app.rb +25 -0
- data/lib/wx/classes/artprovider.rb +31 -0
- data/lib/wx/classes/bitmap.rb +23 -0
- data/lib/wx/classes/choice.rb +4 -0
- data/lib/wx/classes/clientdc.rb +13 -0
- data/lib/wx/classes/colour.rb +47 -0
- data/lib/wx/classes/combobox.rb +4 -0
- data/lib/wx/classes/evthandler.rb +828 -0
- data/lib/wx/classes/font.rb +118 -0
- data/lib/wx/classes/grid.rb +130 -0
- data/lib/wx/classes/helpcontroller.rb +5 -0
- data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
- data/lib/wx/classes/htmlwindow.rb +6 -0
- data/lib/wx/classes/icon.rb +14 -0
- data/lib/wx/classes/image.rb +14 -0
- data/lib/wx/classes/listbox.rb +4 -0
- data/lib/wx/classes/locale.rb +28 -0
- data/lib/wx/classes/object.rb +7 -0
- data/lib/wx/classes/paintdc.rb +12 -0
- data/lib/wx/classes/point.rb +48 -0
- data/lib/wx/classes/previewframe.rb +13 -0
- data/lib/wx/classes/rect.rb +5 -0
- data/lib/wx/classes/size.rb +49 -0
- data/lib/wx/classes/styledtextctrl.rb +92 -0
- data/lib/wx/classes/textctrl.rb +14 -0
- data/lib/wx/classes/texturlevent.rb +6 -0
- data/lib/wx/classes/timer.rb +69 -0
- data/lib/wx/classes/window.rb +42 -0
- data/lib/wx/classes/xmlresource.rb +16 -0
- data/lib/wx/keyword_ctors.rb +219 -0
- data/lib/wx/keyword_defs.rb +455 -0
- data/lib/wx/version.rb +3 -0
- data/lib/wxruby2.bundle +0 -0
- data/samples/SAMPLES-LICENSE.TXT +18 -0
- data/samples/aui/aui.rb +1353 -0
- data/samples/bigdemo/About.rbw +39 -0
- data/samples/bigdemo/ColorPanel.rbw +25 -0
- data/samples/bigdemo/GridSimple.rbw +80 -0
- data/samples/bigdemo/MDIDemo.rbw +59 -0
- data/samples/bigdemo/PopupMenu.rbw +151 -0
- data/samples/bigdemo/ShapedWindow.rbw +135 -0
- data/samples/bigdemo/Sizers.rbw +545 -0
- data/samples/bigdemo/bigdemo.rb +826 -0
- data/samples/bigdemo/demoTemplate.rbw +37 -0
- data/samples/bigdemo/helpfile.htb +0 -0
- data/samples/bigdemo/icons/Test 015.jpg +0 -0
- data/samples/bigdemo/icons/Test 015.png +0 -0
- data/samples/bigdemo/icons/choice.bmp +0 -0
- data/samples/bigdemo/icons/choice.xpm +27 -0
- data/samples/bigdemo/icons/combo.bmp +0 -0
- data/samples/bigdemo/icons/combo.xpm +27 -0
- data/samples/bigdemo/icons/copy.xpm +25 -0
- data/samples/bigdemo/icons/cut.xpm +24 -0
- data/samples/bigdemo/icons/gauge.bmp +0 -0
- data/samples/bigdemo/icons/gauge.xpm +27 -0
- data/samples/bigdemo/icons/help.xpm +25 -0
- data/samples/bigdemo/icons/list.bmp +0 -0
- data/samples/bigdemo/icons/list.xpm +27 -0
- data/samples/bigdemo/icons/mondrian.ico +0 -0
- data/samples/bigdemo/icons/mondrian.xpm +44 -0
- data/samples/bigdemo/icons/new.xpm +24 -0
- data/samples/bigdemo/icons/ogl.ico +0 -0
- data/samples/bigdemo/icons/ogl.xpm +45 -0
- data/samples/bigdemo/icons/open.xpm +26 -0
- data/samples/bigdemo/icons/paste.bmp +0 -0
- data/samples/bigdemo/icons/paste.xpm +38 -0
- data/samples/bigdemo/icons/pointy.png +0 -0
- data/samples/bigdemo/icons/preview.xpm +26 -0
- data/samples/bigdemo/icons/print.xpm +26 -0
- data/samples/bigdemo/icons/radio.bmp +0 -0
- data/samples/bigdemo/icons/radio.xpm +27 -0
- data/samples/bigdemo/icons/robert.xpm +415 -0
- data/samples/bigdemo/icons/ruby.png +0 -0
- data/samples/bigdemo/icons/sashtest.ico +0 -0
- data/samples/bigdemo/icons/save.xpm +25 -0
- data/samples/bigdemo/icons/smiles.bmp +0 -0
- data/samples/bigdemo/icons/smiles.xpm +39 -0
- data/samples/bigdemo/icons/smiley.ico +0 -0
- data/samples/bigdemo/icons/smiley.xpm +42 -0
- data/samples/bigdemo/icons/stattext.xpm +24 -0
- data/samples/bigdemo/icons/test2.bmp +0 -0
- data/samples/bigdemo/icons/test2.png +0 -0
- data/samples/bigdemo/icons/test2.xpm +79 -0
- data/samples/bigdemo/icons/text.bmp +0 -0
- data/samples/bigdemo/icons/text.xpm +27 -0
- data/samples/bigdemo/icons/tog1.bmp +0 -0
- data/samples/bigdemo/icons/tog1.xpm +38 -0
- data/samples/bigdemo/icons/tog2.bmp +0 -0
- data/samples/bigdemo/icons/tog2.xpm +38 -0
- data/samples/bigdemo/icons/wxwin.ico +0 -0
- data/samples/bigdemo/icons/wxwin16x16.png +0 -0
- data/samples/bigdemo/icons/wxwin16x16.xpm +25 -0
- data/samples/bigdemo/icons/wxwin32x32.png +0 -0
- data/samples/bigdemo/icons/wxwin48x48.png +0 -0
- data/samples/bigdemo/run.rb +94 -0
- data/samples/bigdemo/tips.txt +7 -0
- data/samples/bigdemo/utils.rb +12 -0
- data/samples/bigdemo/wxArtProvider.rbw +285 -0
- data/samples/bigdemo/wxBitmapButton.rbw +64 -0
- data/samples/bigdemo/wxButton.rbw +66 -0
- data/samples/bigdemo/wxCalendarCtrl.rbw +72 -0
- data/samples/bigdemo/wxCheckBox.rbw +52 -0
- data/samples/bigdemo/wxCheckListBox.rbw +77 -0
- data/samples/bigdemo/wxChoice.rbw +49 -0
- data/samples/bigdemo/wxChoicebook.rbw +80 -0
- data/samples/bigdemo/wxColourDialog.rbw +34 -0
- data/samples/bigdemo/wxComboBox.rbw +79 -0
- data/samples/bigdemo/wxCursor.rbw +140 -0
- data/samples/bigdemo/wxDialog.rbw +92 -0
- data/samples/bigdemo/wxDirDialog.rbw +32 -0
- data/samples/bigdemo/wxDragImage.rbw +74 -0
- data/samples/bigdemo/wxFileDialog.rbw +39 -0
- data/samples/bigdemo/wxFileDialog_Save.rbw +38 -0
- data/samples/bigdemo/wxFindReplaceDialog.rbw +85 -0
- data/samples/bigdemo/wxFontDialog.rbw +176 -0
- data/samples/bigdemo/wxFrame.rbw +55 -0
- data/samples/bigdemo/wxGauge.rbw +73 -0
- data/samples/bigdemo/wxGenericDirCtrl.rbw +78 -0
- data/samples/bigdemo/wxGrid.rbw +68 -0
- data/samples/bigdemo/wxHtmlHelpController.rbw +57 -0
- data/samples/bigdemo/wxListBox.rbw +142 -0
- data/samples/bigdemo/wxListCtrl_virtual.rbw +109 -0
- data/samples/bigdemo/wxMDIWindows.rbw +52 -0
- data/samples/bigdemo/wxMenu.rbw +238 -0
- data/samples/bigdemo/wxMessageDialog.rbw +30 -0
- data/samples/bigdemo/wxMiniFrame.rbw +74 -0
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +34 -0
- data/samples/bigdemo/wxNotebook.rbw +138 -0
- data/samples/bigdemo/wxProgressDialog.rbw +45 -0
- data/samples/bigdemo/wxRadioBox.rbw +74 -0
- data/samples/bigdemo/wxRadioButton.rbw +127 -0
- data/samples/bigdemo/wxSashWindow.rbw +155 -0
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +59 -0
- data/samples/bigdemo/wxScrolledWindow.rbw +196 -0
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +35 -0
- data/samples/bigdemo/wxSlider.rbw +44 -0
- data/samples/bigdemo/wxSpinButton.rbw +52 -0
- data/samples/bigdemo/wxSpinCtrl.rbw +53 -0
- data/samples/bigdemo/wxSplitterWindow.rbw +65 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +53 -0
- data/samples/bigdemo/wxStaticText.rbw +57 -0
- data/samples/bigdemo/wxStatusBar.rbw +128 -0
- data/samples/bigdemo/wxTextCtrl.rbw +151 -0
- data/samples/bigdemo/wxTextEntryDialog.rbw +34 -0
- data/samples/bigdemo/wxToggleButton.rbw +51 -0
- data/samples/bigdemo/wxToolBar.rbw +133 -0
- data/samples/bigdemo/wxTreeCtrl.rbw +192 -0
- data/samples/calendar/calendar.rb +275 -0
- data/samples/caret/caret.rb +296 -0
- data/samples/caret/mondrian.xpm +44 -0
- data/samples/controls/controls.rb +1140 -0
- data/samples/controls/get_item_sample.rb +87 -0
- data/samples/controls/icons/choice.xpm +27 -0
- data/samples/controls/icons/combo.xpm +27 -0
- data/samples/controls/icons/gauge.xpm +27 -0
- data/samples/controls/icons/list.xpm +27 -0
- data/samples/controls/icons/radio.xpm +27 -0
- data/samples/controls/icons/stattext.xpm +24 -0
- data/samples/controls/icons/text.xpm +27 -0
- data/samples/controls/mondrian.ico +0 -0
- data/samples/controls/mondrian.xpm +44 -0
- data/samples/controls/test2.bmp +0 -0
- data/samples/dialogs/dialogs.rb +724 -0
- data/samples/dialogs/tips.txt +18 -0
- data/samples/etc/activation.rb +108 -0
- data/samples/etc/choice.rb +72 -0
- data/samples/etc/miniframe.rb +84 -0
- data/samples/etc/sash.rb +135 -0
- data/samples/etc/scrollwin.rb +116 -0
- data/samples/etc/system_settings.rb +258 -0
- data/samples/etc/wizard.rb +81 -0
- data/samples/event/event.rb +184 -0
- data/samples/grid/grid.rb +201 -0
- data/samples/html/html.rb +251 -0
- data/samples/images/Thumbs.db +0 -0
- data/samples/images/images.rb +48 -0
- data/samples/images/paperclip.png +0 -0
- data/samples/listbook/listbook.rb +183 -0
- data/samples/listbook/listbook.xrc +370 -0
- data/samples/mdi/mdi.rb +87 -0
- data/samples/minimal/minimal.rb +83 -0
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +46 -0
- data/samples/minimal/text.rb +35 -0
- data/samples/printing/mondrian.ico +0 -0
- data/samples/printing/mondrian.xpm +44 -0
- data/samples/printing/printing.rb +484 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +44 -0
- data/samples/text/scintilla.rb +174 -0
- data/samples/text/textctrl.rb +124 -0
- data/samples/text/unicode.rb +238 -0
- data/samples/text/utf8.txt +15 -0
- data/samples/treectrl/icon1.xpm +79 -0
- data/samples/treectrl/icon2.xpm +53 -0
- data/samples/treectrl/icon3.xpm +79 -0
- data/samples/treectrl/icon4.xpm +43 -0
- data/samples/treectrl/icon5.xpm +79 -0
- data/samples/treectrl/treectrl.rb +1210 -0
- data/samples/xrc/samples.xrc +46 -0
- data/samples/xrc/xrc_sample.rb +107 -0
- 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()
|