wxruby 1.9.6-x86-mingw32
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/LICENSE +53 -0
- data/README +297 -0
- data/lib/wx/accessors.rb +52 -0
- data/lib/wx/classes/acceleratortable.rb +28 -0
- data/lib/wx/classes/animation.rb +18 -0
- data/lib/wx/classes/app.rb +45 -0
- data/lib/wx/classes/artprovider.rb +31 -0
- data/lib/wx/classes/bitmap.rb +28 -0
- data/lib/wx/classes/busycursor.rb +12 -0
- data/lib/wx/classes/checklistbox.rb +45 -0
- data/lib/wx/classes/choice.rb +4 -0
- data/lib/wx/classes/clientdc.rb +13 -0
- data/lib/wx/classes/clipboard.rb +16 -0
- data/lib/wx/classes/colour.rb +47 -0
- data/lib/wx/classes/combobox.rb +4 -0
- data/lib/wx/classes/commandevent.rb +7 -0
- data/lib/wx/classes/controlwithitems.rb +10 -0
- data/lib/wx/classes/dc.rb +57 -0
- data/lib/wx/classes/event.rb +5 -0
- data/lib/wx/classes/evthandler.rb +921 -0
- data/lib/wx/classes/font.rb +118 -0
- data/lib/wx/classes/functions.rb +44 -0
- data/lib/wx/classes/gauge.rb +12 -0
- data/lib/wx/classes/grid.rb +138 -0
- data/lib/wx/classes/helpcontroller.rb +5 -0
- data/lib/wx/classes/htmlhelpcontroller.rb +5 -0
- data/lib/wx/classes/htmlwindow.rb +14 -0
- data/lib/wx/classes/icon.rb +21 -0
- data/lib/wx/classes/iconbundle.rb +3 -0
- data/lib/wx/classes/image.rb +31 -0
- data/lib/wx/classes/imagelist.rb +3 -0
- data/lib/wx/classes/listbox.rb +4 -0
- data/lib/wx/classes/listctrl.rb +21 -0
- data/lib/wx/classes/locale.rb +28 -0
- data/lib/wx/classes/mediactrl.rb +22 -0
- data/lib/wx/classes/menu.rb +62 -0
- data/lib/wx/classes/menuitem.rb +7 -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 +10 -0
- data/lib/wx/classes/size.rb +49 -0
- data/lib/wx/classes/sound.rb +23 -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 +94 -0
- data/lib/wx/classes/toolbartool.rb +4 -0
- data/lib/wx/classes/treectrl.rb +44 -0
- data/lib/wx/classes/window.rb +82 -0
- data/lib/wx/classes/xmlresource.rb +37 -0
- data/lib/wx/keyword_ctors.rb +222 -0
- data/lib/wx/keyword_defs.rb +492 -0
- data/lib/wx/version.rb +3 -0
- data/lib/wx.rb +42 -0
- data/lib/wxruby2.so +0 -0
- data/samples/SAMPLES-LICENSE.TXT +18 -0
- data/samples/aui/aui.rb +1356 -0
- data/samples/bigdemo/About.rbw +39 -0
- data/samples/bigdemo/ColorPanel.rbw +23 -0
- data/samples/bigdemo/GridSimple.rbw +78 -0
- data/samples/bigdemo/MDIDemo.rbw +57 -0
- data/samples/bigdemo/PopupMenu.rbw +149 -0
- data/samples/bigdemo/ShapedWindow.rbw +131 -0
- data/samples/bigdemo/Sizers.rbw +543 -0
- data/samples/bigdemo/bigdemo.rb +823 -0
- data/samples/bigdemo/demoTemplate.rbw +33 -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 +90 -0
- data/samples/bigdemo/tips.txt +7 -0
- data/samples/bigdemo/utils.rb +12 -0
- data/samples/bigdemo/wxArtProvider.rbw +281 -0
- data/samples/bigdemo/wxBitmapButton.rbw +65 -0
- data/samples/bigdemo/wxButton.rbw +64 -0
- data/samples/bigdemo/wxCalendarCtrl.rbw +60 -0
- data/samples/bigdemo/wxCheckBox.rbw +50 -0
- data/samples/bigdemo/wxCheckListBox.rbw +75 -0
- data/samples/bigdemo/wxChoice.rbw +47 -0
- data/samples/bigdemo/wxChoicebook.rbw +78 -0
- data/samples/bigdemo/wxColourDialog.rbw +31 -0
- data/samples/bigdemo/wxComboBox.rbw +77 -0
- data/samples/bigdemo/wxCursor.rbw +136 -0
- data/samples/bigdemo/wxDialog.rbw +74 -0
- data/samples/bigdemo/wxDirDialog.rbw +29 -0
- data/samples/bigdemo/wxDragImage.rbw +70 -0
- data/samples/bigdemo/wxFileDialog.rbw +37 -0
- data/samples/bigdemo/wxFileDialog_Save.rbw +35 -0
- data/samples/bigdemo/wxFindReplaceDialog.rbw +82 -0
- data/samples/bigdemo/wxFontDialog.rbw +173 -0
- data/samples/bigdemo/wxFrame.rbw +53 -0
- data/samples/bigdemo/wxGauge.rbw +71 -0
- data/samples/bigdemo/wxGenericDirCtrl.rbw +74 -0
- data/samples/bigdemo/wxGrid.rbw +66 -0
- data/samples/bigdemo/wxHtmlHelpController.rbw +52 -0
- data/samples/bigdemo/wxListBox.rbw +140 -0
- data/samples/bigdemo/wxListCtrl_virtual.rbw +107 -0
- data/samples/bigdemo/wxMDIWindows.rbw +50 -0
- data/samples/bigdemo/wxMenu.rbw +236 -0
- data/samples/bigdemo/wxMessageDialog.rbw +27 -0
- data/samples/bigdemo/wxMiniFrame.rbw +70 -0
- data/samples/bigdemo/wxMultipleChoiceDialog.rbw +32 -0
- data/samples/bigdemo/wxNotebook.rbw +136 -0
- data/samples/bigdemo/wxProgressDialog.rbw +43 -0
- data/samples/bigdemo/wxRadioBox.rbw +72 -0
- data/samples/bigdemo/wxRadioButton.rbw +125 -0
- data/samples/bigdemo/wxSashWindow.rbw +141 -0
- data/samples/bigdemo/wxScrolledMessageDialog.rbw +57 -0
- data/samples/bigdemo/wxScrolledWindow.rbw +199 -0
- data/samples/bigdemo/wxSingleChoiceDialog.rbw +33 -0
- data/samples/bigdemo/wxSlider.rbw +42 -0
- data/samples/bigdemo/wxSpinButton.rbw +50 -0
- data/samples/bigdemo/wxSpinCtrl.rbw +51 -0
- data/samples/bigdemo/wxSplitterWindow.rbw +63 -0
- data/samples/bigdemo/wxStaticBitmap.rbw +51 -0
- data/samples/bigdemo/wxStaticText.rbw +55 -0
- data/samples/bigdemo/wxStatusBar.rbw +126 -0
- data/samples/bigdemo/wxTextCtrl.rbw +149 -0
- data/samples/bigdemo/wxTextEntryDialog.rbw +31 -0
- data/samples/bigdemo/wxToggleButton.rbw +49 -0
- data/samples/bigdemo/wxToolBar.rbw +131 -0
- data/samples/bigdemo/wxTreeCtrl.rbw +190 -0
- data/samples/calendar/calendar.rb +271 -0
- data/samples/caret/caret.rb +282 -0
- data/samples/caret/mondrian.xpm +44 -0
- data/samples/controls/controls.rb +1136 -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 +723 -0
- data/samples/dialogs/tips.txt +18 -0
- data/samples/drawing/graphics_drawing.rb +235 -0
- data/samples/drawing/images.rb +37 -0
- data/samples/drawing/paperclip.png +0 -0
- data/samples/etc/activation.rb +102 -0
- data/samples/etc/choice.rb +67 -0
- data/samples/etc/miniframe.rb +79 -0
- data/samples/etc/sash.rb +130 -0
- data/samples/etc/scrollwin.rb +110 -0
- data/samples/etc/system_settings.rb +252 -0
- data/samples/etc/threaded.rb +72 -0
- data/samples/etc/wizard.rb +74 -0
- data/samples/event/event.rb +182 -0
- data/samples/grid/grid.rb +198 -0
- data/samples/grid/gridtablebase.rb +134 -0
- data/samples/html/html.rb +262 -0
- data/samples/listbook/listbook.rb +174 -0
- data/samples/listbook/listbook.xrc +370 -0
- data/samples/mdi/mdi.rb +82 -0
- data/samples/media/mediactrl.rb +167 -0
- data/samples/minimal/minimal.rb +77 -0
- data/samples/minimal/mondrian.ico +0 -0
- data/samples/minimal/mondrian.png +0 -0
- data/samples/minimal/nothing.rb +16 -0
- data/samples/opengl/cube.rb +117 -0
- data/samples/printing/mondrian.ico +0 -0
- data/samples/printing/mondrian.xpm +44 -0
- data/samples/printing/printing.rb +310 -0
- data/samples/sockets/SocketPackets.rb +27 -0
- data/samples/sockets/res/message-new.png +0 -0
- data/samples/sockets/res/user.png +0 -0
- data/samples/sockets/wxClient.rb +395 -0
- data/samples/sockets/wxServer.rb +422 -0
- data/samples/sockets/wxSocketGUI.rb +97 -0
- data/samples/text/mondrian.ico +0 -0
- data/samples/text/mondrian.xpm +44 -0
- data/samples/text/scintilla.rb +169 -0
- data/samples/text/textctrl.rb +113 -0
- data/samples/text/unicode.rb +242 -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 +1174 -0
- data/samples/xrc/samples.xrc +46 -0
- data/samples/xrc/xrc_sample.rb +96 -0
- metadata +313 -0
@@ -0,0 +1,118 @@
|
|
1
|
+
class Wx::Font
|
2
|
+
# String names of the constants provided by C++
|
3
|
+
# (enum is originally defined inc include/wx/fontenc.h)
|
4
|
+
ENCODING_NAMES = %w[
|
5
|
+
DEFAULT
|
6
|
+
|
7
|
+
ISO-8859-1
|
8
|
+
ISO-8859-2
|
9
|
+
ISO-8859-3
|
10
|
+
ISO-8859-4
|
11
|
+
ISO-8859-5
|
12
|
+
ISO-8859-6
|
13
|
+
ISO-8859-7
|
14
|
+
ISO-8859-8
|
15
|
+
ISO-8859-9
|
16
|
+
ISO-8859-10
|
17
|
+
ISO-8859-11
|
18
|
+
ISO-8859-12
|
19
|
+
ISO-8859-13
|
20
|
+
ISO-8859-14
|
21
|
+
ISO-8859-15
|
22
|
+
ISO-8859-MAX
|
23
|
+
|
24
|
+
KOI8
|
25
|
+
KOI8-U
|
26
|
+
ALTERNATIVE
|
27
|
+
BULGARIAN
|
28
|
+
|
29
|
+
CP437
|
30
|
+
CP850
|
31
|
+
CP852
|
32
|
+
CP855
|
33
|
+
CP866
|
34
|
+
|
35
|
+
CP874
|
36
|
+
CP932
|
37
|
+
CP936
|
38
|
+
CP949
|
39
|
+
CP950
|
40
|
+
CP1250
|
41
|
+
CP1251
|
42
|
+
CP1252
|
43
|
+
CP1253
|
44
|
+
CP1254
|
45
|
+
CP1255
|
46
|
+
CP1256
|
47
|
+
CP1257
|
48
|
+
CP12-MAX
|
49
|
+
|
50
|
+
UTF7
|
51
|
+
UTF8
|
52
|
+
EUC-JP
|
53
|
+
UTF16BE
|
54
|
+
UTF16LE
|
55
|
+
UTF32BE
|
56
|
+
UTF32LE
|
57
|
+
|
58
|
+
MACROMAN
|
59
|
+
MACJAPANESE
|
60
|
+
MACCHINESETRAD
|
61
|
+
MACKOREAN
|
62
|
+
MACARABIC
|
63
|
+
MACHEBREW
|
64
|
+
MACGREEK
|
65
|
+
MACCYRILLIC
|
66
|
+
MACDEVANAGARI
|
67
|
+
MACGURMUKHI
|
68
|
+
MACGUJARATI
|
69
|
+
MACORIYA
|
70
|
+
MACBENGALI
|
71
|
+
MACTAMIL
|
72
|
+
MACTELUGU
|
73
|
+
MACKANNADA
|
74
|
+
MACMALAJALAM
|
75
|
+
MACSINHALESE
|
76
|
+
MACBURMESE
|
77
|
+
MACKHMER
|
78
|
+
MACTHAI
|
79
|
+
MACLAOTIAN
|
80
|
+
MACGEORGIAN
|
81
|
+
MACARMENIAN
|
82
|
+
MACCHINESESIMP
|
83
|
+
MACTIBETAN
|
84
|
+
MACMONGOLIAN
|
85
|
+
MACETHIOPIC
|
86
|
+
MACCENTRALEUR
|
87
|
+
MACVIATNAMESE
|
88
|
+
MACARABICEXT
|
89
|
+
MACSYMBOL
|
90
|
+
MACDINGBATS
|
91
|
+
MACTURKISH
|
92
|
+
MACCROATIAN
|
93
|
+
MACICELANDIC
|
94
|
+
MACROMANIAN
|
95
|
+
MACCELTIC
|
96
|
+
MACGAELIC
|
97
|
+
MACKEYBOARD
|
98
|
+
MAX
|
99
|
+
]
|
100
|
+
|
101
|
+
class << self
|
102
|
+
# Returns the name of the platform's default font encoding
|
103
|
+
def get_default_encoding_name
|
104
|
+
ENCODING_NAMES[ get_default_encoding ]
|
105
|
+
end
|
106
|
+
|
107
|
+
# Sets the default encoding to be +enc+, which may be the string
|
108
|
+
# name of an encoding (eg 'UTF8') or an internal WxWidgets flag
|
109
|
+
# (eg Wx::FONTENCODING_UTF8).
|
110
|
+
def set_default_encoding_name(enc)
|
111
|
+
if flag_int = ENCODING_NAMES.index(enc.upcase)
|
112
|
+
set_default_encoding(flag_int)
|
113
|
+
else
|
114
|
+
raise ArgumentError, "Unknown font encoding name '#{enc}'"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# Tweaks to the global module functions
|
2
|
+
|
3
|
+
module Wx
|
4
|
+
class << self
|
5
|
+
# Allow this to be called with keyword parameters, and avoid
|
6
|
+
# segfaults on OS X with bad params
|
7
|
+
wx_about_box = self.instance_method(:about_box)
|
8
|
+
define_method(:about_box) do | info |
|
9
|
+
# If AboutDialogInfo has no version, it segfaults on OS X 10.5
|
10
|
+
no_version = ArgumentError.new("Must supply a version for AboutDialog")
|
11
|
+
case info
|
12
|
+
when Wx::AboutDialogInfo
|
13
|
+
unless info.has_version
|
14
|
+
Kernel.raise no_version
|
15
|
+
end
|
16
|
+
|
17
|
+
ab_info = info
|
18
|
+
when Hash
|
19
|
+
ab_info = Wx::AboutDialogInfo.new
|
20
|
+
ab_info.name = info[:name] || 'wxRuby application'
|
21
|
+
ab_info.version = info[:version] || Kernel.raise(no_version)
|
22
|
+
|
23
|
+
ab_info.description = info[:description] || ''
|
24
|
+
ab_info.copyright = info[:copyright] || ''
|
25
|
+
ab_info.licence = info[:licence] || ''
|
26
|
+
ab_info.developers = info[:developers] || []
|
27
|
+
ab_info.doc_writers = info[:doc_writers] || []
|
28
|
+
ab_info.artists = info[:artists] || []
|
29
|
+
ab_info.translators = info[:translators] || []
|
30
|
+
if info.key?(:website)
|
31
|
+
ab_info.set_website(*info[:website])
|
32
|
+
end
|
33
|
+
if info.key?(:icon)
|
34
|
+
ab_info.icon = info[:icon]
|
35
|
+
end
|
36
|
+
|
37
|
+
else
|
38
|
+
Kernel.raise ArgumentError,
|
39
|
+
"Can't use #{info.inspect} for AboutDialogInfo"
|
40
|
+
end
|
41
|
+
wx_about_box.bind(self).call(ab_info)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Gauge : presents a progress bar
|
2
|
+
#
|
3
|
+
# On the C++ side, the actual class name of wxGauge under Windows is
|
4
|
+
# wxGauge95. So when a Gauge is loaded from XRC, and we try to wrap the
|
5
|
+
# object in a ruby class by calling obj->ClassInfo()->ClassName(), it
|
6
|
+
# seeks for a ruby class (Wx::Gauge95) that doesn't exist (see
|
7
|
+
# swig/shared/get_ruby_object.i).
|
8
|
+
#
|
9
|
+
# To fix this, make Wx::Gauge95 an alias.
|
10
|
+
if Wx::PLATFORM == 'WXMSW'
|
11
|
+
Wx::Gauge95 = Wx::Gauge
|
12
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
# A data-oriented editable table control.
|
2
|
+
class Wx::Grid
|
3
|
+
# The following extensions are all to prevent crashes associated with
|
4
|
+
# garbage collection of Grid-related classes; they do not extend the
|
5
|
+
# public functionality of the class in any way.
|
6
|
+
#
|
7
|
+
# GridTableBase, and the GridCellRenderers and GridCellEditors pose a
|
8
|
+
# problem for ruby's GC, in that Wx makes them owned by the grid once
|
9
|
+
# they have been set for a cell or group of cells. However, because
|
10
|
+
# they are SWIG directors we cannot allow the ruby object they are
|
11
|
+
# originally associated with to be swept by GC, as C++ method calls
|
12
|
+
# are routed to ruby method calls.
|
13
|
+
#
|
14
|
+
# The code below stores Ruby redefines all methods that may
|
15
|
+
# potentially set a GridTableBase, Editor or Renderer, and stores a
|
16
|
+
# reference to them in an instance variable, so they are not disposed
|
17
|
+
# of up when GC sweeps.
|
18
|
+
|
19
|
+
# These all need to be set up as private methods which default to an
|
20
|
+
# array. This can't be done in initialize b/c that may not be called
|
21
|
+
# when a Grid is loaded from XRC
|
22
|
+
%w| __cell_editors __col_editors __row_editors
|
23
|
+
__cell_renderers __col_renderers __row_renderers |.each do | meth |
|
24
|
+
define_method(meth) do
|
25
|
+
instance_variable_get("@#{meth}") ||
|
26
|
+
instance_variable_set("@#{meth}", [])
|
27
|
+
end
|
28
|
+
private meth
|
29
|
+
end
|
30
|
+
|
31
|
+
# Set a grid table base to provide data
|
32
|
+
alias :__set_table :set_table
|
33
|
+
def set_table(table, sel_mode = Wx::Grid::GridSelectCells)
|
34
|
+
__set_table(table, sel_mode)
|
35
|
+
@__grid_table = table
|
36
|
+
end
|
37
|
+
|
38
|
+
# store default editor
|
39
|
+
wx_set_default_editor = self.instance_method(:set_default_editor)
|
40
|
+
define_method(:set_default_editor) do | editr |
|
41
|
+
wx_set_default_editor.bind(self).call(editr)
|
42
|
+
@__default_editor = editr
|
43
|
+
end
|
44
|
+
|
45
|
+
# store default renderer
|
46
|
+
wx_set_default_renderer = self.instance_method(:set_default_renderer)
|
47
|
+
define_method(:set_default_renderer) do | rendr |
|
48
|
+
wx_set_default_renderer.bind(self).call(rendr)
|
49
|
+
@__default_renderer = rendr
|
50
|
+
end
|
51
|
+
|
52
|
+
# store cell editors
|
53
|
+
wx_set_cell_editor = self.instance_method(:set_cell_editor)
|
54
|
+
define_method(:set_cell_editor) do | row, col, editr |
|
55
|
+
wx_set_cell_editor.bind(self).call(row, col, editr)
|
56
|
+
__cell_editors[row] ||= []
|
57
|
+
__cell_editors[row][col] = editr
|
58
|
+
end
|
59
|
+
|
60
|
+
# store cell renderer
|
61
|
+
wx_set_cell_renderer = self.instance_method(:set_cell_renderer)
|
62
|
+
define_method(:set_cell_renderer) do | row, col, rendr |
|
63
|
+
wx_set_cell_renderer.bind(self).call(row, col, rendr)
|
64
|
+
__cell_renderers[row] ||= []
|
65
|
+
__cell_renderers[row][col] = rendr
|
66
|
+
end
|
67
|
+
|
68
|
+
# Store an editor and/or renderer for a whole column
|
69
|
+
wx_set_col_attr = self.instance_method(:set_col_attr)
|
70
|
+
define_method(:set_col_attr) do | col, attr |
|
71
|
+
wx_set_col_attr.bind(self).call(col, attr)
|
72
|
+
if attr.has_editor
|
73
|
+
__col_editors[col] = attr.get_editor(self, 0, col)
|
74
|
+
end
|
75
|
+
if attr.has_renderer
|
76
|
+
__col_renderers[col] = attr.get_renderer(self, 0, col)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Store an editor and/or renderer for a whole row
|
81
|
+
wx_set_row_attr = self.instance_method(:set_row_attr)
|
82
|
+
define_method(:set_row_attr) do | row, attr |
|
83
|
+
wx_set_row_attr.bind(self).call(row, attr)
|
84
|
+
if attr.has_editor
|
85
|
+
__row_editors[row] = attr.get_editor(self, row, 0)
|
86
|
+
end
|
87
|
+
if attr.has_renderer
|
88
|
+
__row_renderers[row] = attr.get_renderer(self, row, 0)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# This and the following methods do a bit of book-keeping - as rows
|
93
|
+
# and columns are deleted and inserted, the position of the columns
|
94
|
+
# and rows with stored editors and renderers may move.
|
95
|
+
alias :__insert_rows :insert_rows
|
96
|
+
def insert_rows(pos = 0, num = 1, update_labels = true)
|
97
|
+
__insert_rows(pos, num, update_labels)
|
98
|
+
num.times { __row_editors.insert(pos, nil) }
|
99
|
+
num.times { __row_renderers.insert(pos, nil) }
|
100
|
+
num.times { __cell_editors.insert(pos, []) }
|
101
|
+
num.times { __cell_renderers.insert(pos, []) }
|
102
|
+
end
|
103
|
+
|
104
|
+
alias :__insert_cols :insert_cols
|
105
|
+
def insert_cols(pos = 0, num = 1, update_labels = true)
|
106
|
+
__insert_cols(pos, num, update_labels)
|
107
|
+
num.times { __col_editors.insert(pos, nil) }
|
108
|
+
num.times { __col_renderers.insert(pos, nil) }
|
109
|
+
num.times do
|
110
|
+
__cell_editors.map { | col | col.insert(pos, []) if col }
|
111
|
+
end
|
112
|
+
num.times do
|
113
|
+
__cell_renderers.map { | col | col.insert(pos, []) if col }
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
alias :__delete_rows :delete_rows
|
118
|
+
def delete_rows(pos = 0, num = 1, update_labels = true)
|
119
|
+
__delete_rows(pos, num, update_labels)
|
120
|
+
__row_editors.slice!(pos, num)
|
121
|
+
__row_renderers.slice!(pos, num)
|
122
|
+
__cell_editors.slice!(pos, num)
|
123
|
+
__cell_renderers.slice!(pos, num)
|
124
|
+
end
|
125
|
+
|
126
|
+
alias :__delete_cols :delete_cols
|
127
|
+
def delete_cols(pos = 0, num = 1, update_labels = true)
|
128
|
+
__delete_cols(pos, num, update_labels)
|
129
|
+
__col_editors.slice!(pos, num)
|
130
|
+
__col_renderers.slice!(pos, num)
|
131
|
+
num.times do
|
132
|
+
__cell_editors.map { | col | col.slice!(pos, num) if col }
|
133
|
+
end
|
134
|
+
num.times do
|
135
|
+
__cell_renderers.map { | col | col.slice!(pos, num) if col }
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Wx::HtmlWindow
|
2
|
+
# imitate the in-built LoadFile method
|
3
|
+
def load_file(file)
|
4
|
+
set_page( File.read(file) )
|
5
|
+
end
|
6
|
+
|
7
|
+
# This is called from within wxWidgets whenever a URL is being
|
8
|
+
# opened. The method may return true, to signal that the opening
|
9
|
+
# should be permitted, false or nil to signal that it should be
|
10
|
+
# blocked, or a string URL to which it should be redirected
|
11
|
+
def on_opening_url(url)
|
12
|
+
true
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Wx::Icon
|
2
|
+
# Analogous to Image.from_bitmap
|
3
|
+
def self.from_bitmap(bmp)
|
4
|
+
ico = new
|
5
|
+
ico.copy_from_bitmap(bmp)
|
6
|
+
ico
|
7
|
+
end
|
8
|
+
|
9
|
+
# Redefine the initialize method so it raises an exception if a
|
10
|
+
# non-existent file is given to the constructor; otherwise, wx Widgets
|
11
|
+
# just carries on with an empty icon, which may cause faults later
|
12
|
+
wx_init = self.instance_method(:initialize)
|
13
|
+
define_method(:initialize) do | *args |
|
14
|
+
if args[0].kind_of? String
|
15
|
+
if not File.exist?( File.expand_path(args[0]) )
|
16
|
+
Kernel.raise(ArgumentError, "Icon file does not exist: #{args[0]}")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
wx_init.bind(self).call(*args)
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class Wx::Image
|
2
|
+
# Load a new image from an IO-like object that supports "read"
|
3
|
+
def self.read(an_io, type_or_mime, index = -1)
|
4
|
+
img = new
|
5
|
+
img.load_stream(an_io, type_or_mime, index)
|
6
|
+
img
|
7
|
+
end
|
8
|
+
|
9
|
+
# Create a new image from Wx::Bitmap, preserving mask information
|
10
|
+
def self.from_bitmap(bmp)
|
11
|
+
bmp.convert_to_image
|
12
|
+
end
|
13
|
+
|
14
|
+
# Redefine the initialize method so it raises an exception if a
|
15
|
+
# non-existent file is given to the constructor; otherwise, wx Widgets
|
16
|
+
# just carries on with an invalid image, which may cause faults later
|
17
|
+
wx_init = self.instance_method(:initialize)
|
18
|
+
define_method(:initialize) do | *args |
|
19
|
+
if args[0].kind_of? String
|
20
|
+
if not File.exist?( File.expand_path(args[0]) )
|
21
|
+
Kernel.raise(ArgumentError, "Image file does not exist: #{args[0]}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
wx_init.bind(self).call(*args)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Convert to bitmap
|
28
|
+
def convert_to_bitmap
|
29
|
+
Wx::Bitmap.from_image(self)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Multi-item control with numerous possible view styles
|
2
|
+
class Wx::ListCtrl
|
3
|
+
# Make these ruby enumerables so find, find_all, map are available
|
4
|
+
include Enumerable
|
5
|
+
# Passes each valid item index into the passed block
|
6
|
+
def each
|
7
|
+
0.upto(item_count - 1) { | i | yield i }
|
8
|
+
end
|
9
|
+
|
10
|
+
# Stub version for LC_VIRTUAL controls that does nothing; may be
|
11
|
+
# overridden in subclasses.
|
12
|
+
def on_get_item_attr(i)
|
13
|
+
nil
|
14
|
+
end
|
15
|
+
|
16
|
+
# Stub version for LC_VIRTUAL|LC_REPORT controls that does nothing;
|
17
|
+
# may be overridden in subclasses.
|
18
|
+
def on_get_item_column_image(i, col)
|
19
|
+
-1
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Wx::Locale
|
2
|
+
class << self
|
3
|
+
def get_system_language_name
|
4
|
+
get_language_name( get_system_language )
|
5
|
+
end
|
6
|
+
|
7
|
+
def get_system_encoding_name
|
8
|
+
Wx::Font::ENCODING_NAMES[ get_system_encoding ]
|
9
|
+
end
|
10
|
+
|
11
|
+
# Set the current locale by a name, canonical name, or Wx::LANGUAGE_
|
12
|
+
# constant; mainly here because it seems a bit strange in Ruby to
|
13
|
+
# have global side-effects in a constructor
|
14
|
+
def set_locale(locale)
|
15
|
+
if locale.kind_of?(Fixnum)
|
16
|
+
new(locale)
|
17
|
+
elsif locale.kind_of?(String) and lang_info = find_language_info(locale)
|
18
|
+
new(lang_info.language)
|
19
|
+
else
|
20
|
+
raise ArgumentError, "Unknown language #{locale}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_language_name
|
26
|
+
self.class.get_language_name(get_language)
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Functionality here must be loaded first to add custom events
|
2
|
+
require 'wx/classes/evthandler'
|
3
|
+
|
4
|
+
# These event handlers should only be defined if MediaCtrl is actually
|
5
|
+
# available; some builds may not include it
|
6
|
+
if defined?(Wx::MediaCtrl)
|
7
|
+
evt_type = Wx::EvtHandler::EventType
|
8
|
+
mediactrl_event_types = [
|
9
|
+
evt_type['evt_media_finished', 1,
|
10
|
+
Wx::EVT_MEDIA_FINISHED,
|
11
|
+
Wx::MediaEvent],
|
12
|
+
evt_type['evt_media_stop', 1,
|
13
|
+
Wx::EVT_MEDIA_STOP,
|
14
|
+
Wx::MediaEvent],
|
15
|
+
evt_type['evt_media_loaded', 1,
|
16
|
+
Wx::EVT_MEDIA_LOADED,
|
17
|
+
Wx::MediaEvent]
|
18
|
+
]
|
19
|
+
mediactrl_event_types.each do | ev_type |
|
20
|
+
Wx::EvtHandler.register_event_type(ev_type)
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# A single labelled list within a drop-down menu, or a popup menu
|
2
|
+
class Wx::Menu
|
3
|
+
|
4
|
+
# In the standard WxWidgets API, the methods append, prepend, insert
|
5
|
+
# (and their variants) require a constant integer id as the identifier
|
6
|
+
# of the menu item. This is then used in event handling.
|
7
|
+
#
|
8
|
+
# In WxRuby the use of explicit ids can be avoided in most cases,
|
9
|
+
# being a most unruby-ish practice. So, by analogy with the general
|
10
|
+
# use of Wx::Window classes and event handlers, where the id is
|
11
|
+
# implicit in the constructor, and the window can be passed direct to
|
12
|
+
# the event handler setup method, the below sets up a similar facility
|
13
|
+
# for adding items to Wx::Menu.
|
14
|
+
#
|
15
|
+
# For all these methods, the only required argument is the string name
|
16
|
+
# of the menu item; a system-default id will be supplied if no
|
17
|
+
# explicit one is given. The return value of these methods in all
|
18
|
+
# cases is a Wx::MenuItem object, which can be passed directly as the
|
19
|
+
# first argument to an evt_menu handler.
|
20
|
+
def self.methods_with_optional_ids(*meth_names)
|
21
|
+
class_eval do
|
22
|
+
meth_names.each do | meth |
|
23
|
+
old_meth = instance_method(meth)
|
24
|
+
define_method(meth) do | *args |
|
25
|
+
case args.first
|
26
|
+
when Fixnum then old_meth.bind(self).call(*args)
|
27
|
+
when String then old_meth.bind(self).call(Wx::ID_ANY, *args)
|
28
|
+
when Wx::MenuItem then old_meth.bind(self).call(args.first)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Create the optional-id methods
|
36
|
+
methods_with_optional_ids :append, :prepend,
|
37
|
+
:append_check_item, :prepend_check_item,
|
38
|
+
:append_radio_item, :prepend_radio_item
|
39
|
+
|
40
|
+
# This is much the same as above, except for insert and variants,
|
41
|
+
# which take an additional first argument, the position at which to
|
42
|
+
# insert the new item.
|
43
|
+
def self.methods_with_optional_ids_and_pos(*meth_names)
|
44
|
+
class_eval do
|
45
|
+
meth_names.each do | meth |
|
46
|
+
old_meth = instance_method(meth)
|
47
|
+
define_method(meth) do | pos, *args |
|
48
|
+
case args.first
|
49
|
+
when Fixnum then old_meth.bind(self).call(pos, *args)
|
50
|
+
when String then old_meth.bind(self).call(pos, Wx::ID_ANY, *args)
|
51
|
+
when Wx::MenuItem then old_meth.bind(self).call(pos, args.first)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Create the optional-id methods
|
59
|
+
methods_with_optional_ids_and_pos :insert,
|
60
|
+
:insert_check_item,
|
61
|
+
:insert_radio_item
|
62
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Device Context to paint within an on_paint handler
|
2
|
+
class Wx::PaintDC
|
3
|
+
# This class should not be instantiated directly in wxRuby; it should
|
4
|
+
# always be used via Window#paint, which takes a block receiving the
|
5
|
+
# DC. This ensures that the DC is cleaned up at the correct time,
|
6
|
+
# preventing serious errors on some platforms.
|
7
|
+
define_method(:initialize) do | *args |
|
8
|
+
Kernel.raise RuntimeError,
|
9
|
+
"Do not instantiate PaintDC directly; use Window#paint",
|
10
|
+
caller[1..-1]
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class Wx::Point
|
2
|
+
# More informative output when converted to string
|
3
|
+
def to_s
|
4
|
+
"#<Wx::Point: (#{x}, #{y})>"
|
5
|
+
end
|
6
|
+
|
7
|
+
# Return a new Wx::Point with the x and y parameters both divided by
|
8
|
+
# parameter +div+, which should be a Numeric
|
9
|
+
def /(div)
|
10
|
+
self.class.new( (get_x / div).to_i, (get_y / div).to_i )
|
11
|
+
end
|
12
|
+
|
13
|
+
# Return a new Wx::Point with the x and y values both multiplied by
|
14
|
+
# parameter +mul+, which should be a Numeric
|
15
|
+
def *(mul)
|
16
|
+
self.class.new( (get_x * mul).to_i, (get_y * mul).to_i )
|
17
|
+
end
|
18
|
+
|
19
|
+
# Return a new Wx::Point with the x and y values both reduced by
|
20
|
+
# parameter +arg+. If +arg+ is another Wx::Point, reduce x by the
|
21
|
+
# other's x and y by the other's y; if +arg+ is a numeric value,
|
22
|
+
# reduce x and y both by that value.
|
23
|
+
def -(arg)
|
24
|
+
case arg
|
25
|
+
when self.class
|
26
|
+
self.class.new( get_x - arg.get_x, get_y - arg.get_y )
|
27
|
+
when Numeric
|
28
|
+
self.class.new( (get_x - arg).to_i, (get_y - arg).to_i )
|
29
|
+
else
|
30
|
+
Kernel.raise TypeError, "Cannot add #{arg} to #{self.inspect}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Return a new Wx::Point with the x and y values both increased by
|
35
|
+
# parameter +arg+. If +arg+ is another Wx::Point, increase x by the
|
36
|
+
# other's x and y by the other's y; if +arg+ is a numeric value,
|
37
|
+
# increase both x and y by that value.
|
38
|
+
def +(arg)
|
39
|
+
case arg
|
40
|
+
when self.class
|
41
|
+
self.class.new( get_x + arg.get_x, get_y + arg.get_y )
|
42
|
+
when Numeric
|
43
|
+
self.class.new( (get_x + arg).to_i, (get_y + arg).to_i )
|
44
|
+
else
|
45
|
+
Kernel.raise TypeError, "Cannot add #{arg} to #{self.inspect}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Frame that displays a print preview
|
2
|
+
class Wx::PreviewFrame
|
3
|
+
# a PreviewFrame has a preview associated with it that must be
|
4
|
+
# protected from Ruby's GC. However, there is no C++ method to access
|
5
|
+
# the Wx::PrintPreview (only a protected member), so instead we have
|
6
|
+
# to assign it to an instance variable so it is marked correctly when
|
7
|
+
# the frame displaying it is marked.
|
8
|
+
wx_init = self.instance_method(:initialize)
|
9
|
+
define_method(:initialize) do | *args |
|
10
|
+
wx_init.bind(self).call(*args)
|
11
|
+
@__preview = args[0]
|
12
|
+
end
|
13
|
+
end
|