wxruby-ruby19 1.9.10-x86-darwin-9 → 2.0.0-x86-darwin-9

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,297 +1,198 @@
1
- README for wxruby2
1
+ = README for wxRuby version 2.0
2
2
 
3
- Version 1.9.x
3
+ == Introduction
4
4
 
5
- This is wxruby2, the second generation of wxRuby, a library
6
- that allows Ruby programs to use the wxWidgets GUI toolkit.
7
- It is released under a permissive MIT-style license
8
- (see the LICENSE file for details).
5
+ wxRuby is a cross-platform GUI library for Ruby, based on the wxWidgets
6
+ GUI toolkit for C++. It uses native widgets wherever possible, providing
7
+ the correct look, feel and behaviour to GUI applications on Windows, OS
8
+ X and Linux/GTK. wxRuby aims to provide a comprehensive solution to
9
+ developing professional-standard desktop applications in Ruby.
9
10
 
10
- This version is a beta release, in preparation for a stable release of
11
- wxruby version 2.0.
11
+ == Installing wxRuby
12
12
 
13
- ------------------------FAQ---------------------------
13
+ wxRuby is distributed as pre-compiled binaries and source from the
14
+ project's site on Rubyforge: http://wxruby.rubyforge.org/
14
15
 
15
- - What platforms and operating systems are supported in wxRuby2?
16
+ For the majority of users, installation simply requires running 'gem
17
+ install wxruby' on the command line. See INSTALL for further
18
+ information.
16
19
 
17
- Currently the following are fully supported:
20
+ == wxRuby licence
18
21
 
19
- Windows NT/2000/XP/Vista (i686)
20
- OS X 10.4+ (i686 and PowerPc)
21
- Linux (i686 + AMD-64)
22
+ wxRuby is free and open-source. It is distributed under a liberal
23
+ licence which is compatible with both free and commercial development.
24
+ See LICENSE for more details.
22
25
 
23
- It is unlikely that support for old Windows OS's (3.1, 95, 98, ME)
24
- will be added to wxRuby2 in the near future, as these operating
25
- systems have very limited support for Unicode.
26
+ == FAQ
26
27
 
27
- - Why would I choose wxruby over FXRuby, Ruby/GTK, or one of the other
28
- GUI toolkits? Isn't wxruby arriving "too late"?
29
-
30
- There are several great GUI toolkits available for Ruby, but we
31
- like wxruby better because it has a combination of features that no
32
- other toolkit has:
33
-
34
- - Cross-platform (MSWindows, Mac OS X, Linux)
35
- - Native widgets when possible
36
- - Provides a wide selection of widgets
37
- - Simple license that is compatible with proprietary and Free Software
38
- - Mature foundation (wxWidgets has been around for over 10 years)
39
-
40
- The really big feature is native widgets. The only other cross-platform
41
- toolkits that use native widgets are either limited (Tk) or expensive if
42
- you want to develop proprietary software (Qt). We are not saying that
43
- those toolkits are bad! Just that wxruby offers a unique set of
44
- features.
45
-
46
- - Why are native widgets important or helpful?
47
-
48
- For one thing, it means that end-users do not have to adjust to a
49
- "foreign" interface. It also ensures maximum compatibility with
50
- "assistive technology" such as screen readers for blind users.
51
- It also allows apps to respect any themes the user may have chosen
52
- through their operating system. No matter how hard a toolkit may try
53
- to emulate a particular UI, there will always be differences in the
54
- look or behavior.
55
-
56
- - How does wxruby2 relate to wxruby (and the wxruby 0.6.0 release)?
28
+ === What platforms and operating systems are supported in wxRuby2?
57
29
 
58
- wxruby2 is the "next generation" of wxruby. It is being developed
59
- by the same wxruby team, and is intended to replace the older
60
- code base. wxruby2 is built using SWIG, a powerful tool that makes
61
- it much easier to create and maintain wrappers around C/C++ libraries.
62
-
63
- - Why should I use wxruby2 instead of wxruby?
30
+ Currently the following are fully supported:
64
31
 
65
- First, because development on the original wxruby codebase has stopped.
66
- Everyone is working on wxruby2, so it will continue to improve. Beyond
67
- that, wxruby2 has these advantages over wxruby 0.6.0:
68
-
69
- - Available as binary gems for MSWindows, OS X, and Linux (GTK)
70
- - Support for more classes, and more methods within classes
71
- - Unicode support
72
- - Vastly improved support for OS X
73
- - Looks much better under Linux because it uses GTK+2
74
- - Simpler and more permissive license
75
- - Wraps wxWidgets 2.8.7 instead of the older 2.4 series
76
-
77
- - Is wxruby2 ready for "production" use?
78
-
79
- Yes, pretty much. This is a beta release, and there may be some bugs
80
- in some methods, or memory leaks. This release includes all the
81
- classes and features that are proposed for inclusion in wxruby 2.0.
82
-
83
- It is considerably more stable and fully-featured than the old 0.6.0
84
- release, which was never really stable enough for heavy-duty
85
- production use.
86
-
87
- - Does wxruby2 support the Xxx class?
32
+ * Windows NT/2000/XP/Vista (i686, MSVC and MingW)
33
+ * OS X 10.4+ (i686 and PowerPc)
34
+ * Linux (i686 + AMD-64)
88
35
 
89
- See the "Documentation" section of the README file, or check the
90
- wxruby web site: http://wxruby.org
36
+ Support for other platforms is not being actively developed at present,
37
+ but patches are welcome. It is likely to be much simpler to get wxRuby
38
+ working on similar modern systems (eg FreeBSD or Solaris with GTK) than
39
+ on legacy systems (eg Windows 98, Mac OS 9).
40
+
41
+ === Why would I choose wxruby over FXRuby, Ruby/GTK, Shoes etc?
91
42
 
92
- - How are the wxruby 0.6.0 and wxruby2 licenses different?
93
-
94
- wxruby 0.6.0 was released under the wxWindows license, which is a
95
- modified LGPL. It is a good, fair license, allowing use in both Free
96
- Software and proprietary applications. However, it is long and complex,
97
- and is more appropriate for compiled code. wxruby2 is available under a
98
- *very* simple MIT-style license, which allows just about any use with
99
- very few restrictions.
43
+ There are several fine GUI toolkits available for Ruby, but we consider
44
+ that wxRuby offers a combination of features that no other toolkit can match:
100
45
 
101
- - I am getting an error trying to compile wxruby2
102
-
103
- Please double-check the requirements. You may be using the wrong
104
- version of SWIG, wxWidgets, or some other tool. Double-check the
105
- instructions on the wxRuby wiki (http://wxruby.rubyforge.org/)
106
-
107
- If you need help, please ask your question on the wxruby mailing list
108
- (see the link at http://wxruby.org).
109
-
110
- - I am getting an error trying to run any wxruby2 application, such as
111
- the samples that are included in the gem.
112
-
113
- If you are using Linux, be sure you have configured your system to
114
- have RUBYOPT=-rubygems. This can be done in .bashrc or /etc/environment,
115
- depending on your distribution and preferences. [More details to follow].
116
-
117
- - Why aren't the wx network, file, date, database and other non-GUI
118
- classes supported?
119
-
120
- Because Ruby has its own versions of each of them, providing
121
- cross-platform abstractions of these functions with familiar syntax
122
- and methods. We assume you are writing your application in Ruby, so it
123
- makes sense to keep as much code as possible in Ruby. We have only
124
- wrapped the wx classes that are necessary to write GUI code.
125
-
126
- There may be some advantages to porting the Wx network classes into
127
- ruby, if they work better with multi-(native)-threaded code. This is
128
- currently under evaluation.
129
-
130
- - Why has it taken so long for wxruby2 to be released?
131
-
132
- Nobody is getting paid to develop wxruby, so each of the wxruby developers
133
- are limited in the amount of time they can dedicate to the project. We are
134
- always looking for more volunteers to help code, test, document, manage
135
- the bug list, handle publicity, or do other necessary chores.
136
-
137
- Wrapping wx is a big project that requires a wide variety of skills. As of
138
- February 2008, the wxRuby project has over 100,000 lines of code, including
139
- ruby, C++, and SWIG scripts. If we weren't using SWIG it would be far bigger.
140
-
141
-
142
- For more details, see the project home page:
143
- http://wxruby.org/
144
-
145
-
146
- ------------------------USING WXRUBY---------------------------
147
- INSTALLING:
148
-
149
- wxRuby is available as binary gems for MS Windows, Mac OS X, and Linux
150
- with GTK+ 2. Unless you wish to work on wxRuby itself, we strongly
151
- recommend installing the gem rather than building from source.
152
-
153
- REQUIREMENTS TO CREATE AND RUN WXRUBY APPS:
154
-
155
- - Ruby 1.8
156
- - MS Windows NT/2000/XP/Vista, Mac OS X 10.4+, or Linux with GTK+ 2,
157
-
158
- - On Windows, gdiplus.pll and msvcp71.dll. These are available on most
159
- systems, but can be downloaded and installed for free from the
160
- internet
161
- - On Linux, libgstreamer. This can be installed from most package sources
162
-
163
- SAMPLES:
164
-
165
- There is a samples/ directory containing many small sample wxRuby apps
166
- that demonstrate how to use various classes. A few samples do not work
167
- across all platforms at this time.
168
-
169
- The bigdemo sample is fairly comprehensive, but not all of the
170
- sections work on all platforms.
171
-
172
-
173
- WRITING YOUR OWN WXRUBY APP:
174
-
175
- To use wxruby-swig in your app, use:
176
- require 'wx'
177
-
178
- samples/minimal.rb can be used as a template for creating your
179
- own wxruby application.
180
-
181
-
182
- DOCUMENTATION:
183
-
184
- - wxRuby-specific API documentation can be found here:
185
-
186
- http://wxruby.org/doc/
187
-
188
- (Note: This documentation is auto-generated from the C++ wxWidgets API
189
- docs. There are some broken links, some sample code in C++, and some
190
- sections which do not apply to ruby. The documentation is continually
191
- being improved.)
192
-
193
- - The latest version of the documentation can be downloaded from the
194
- wxRuby 'Files' section on Rubyforge.
195
-
196
- http://www.rubyforge.org/frs/?group_id=35
197
-
198
- - Tables summarizing which wx classes are and are not supported can
199
- be found here:
200
-
201
- http://wxruby.org/wiki/wiki.pl?ClassesSupportedByCategory
202
-
203
- - Most wxWidgets and wxPython tutorials and references can also be used, if
204
- you remember that wxRuby uses ruby_style_naming for methods and variables
205
- instead of MixedCase as used by wxWidgets.
206
-
207
-
208
-
209
- API DIFFERENCES FROM WXWIDGETS:
210
- - In many cases, wxRuby follows the lead of wxPython (or in some cases,
211
- wxPerl), adjusting certain method calls when the C++ style doesn't fit
212
- dynamic languages.
213
- - Since initialize is reserved in ruby, use SplitterWindow#init instead.
214
- - Many wx classes have not been wrapped because native ruby classes work
215
- as well or better. These include wxDateTime, wxString, networking
216
- classes, database classes.
217
- - log_message and log_status take a single string parameter,
218
- rather than a format string followed by additional values
219
- to be inserted. Use Ruby's sprintf if required.
220
-
221
- ----------------------COMPILING WXRUBY--------------------------
222
- REQUIREMENTS TO COMPILE/BUILD WXRUBY ITSELF
223
-
224
- - rake
225
- - SWIG, version 1.3.32 or later. Earlier versions will not work correctly.
226
- - wxWidgets 2.8.x SDK. See further information on the wxruby website for
227
- recommended compile-time options for wxWidgets.
228
-
229
-
230
- OBTAINING THE SOURCE:
231
-
232
- Source code is hosted in Subversion at rubyforge.org. See the links on
233
- the wxruby web site (http://wxruby.org). Check out the wxruby2
234
- Subversion module (not the old wxruby module).
235
-
236
-
237
- BUILDING:
238
-
239
- From the top-level directory (typically wxruby2/),
240
- just start the rake build with the command:
241
-
242
- rake
243
-
244
- There is no ./configure step, nor do you need to run ruby extconf.rb.
245
-
246
-
247
- INSTALLING THE LIBRARY:
248
-
249
- You can install the library using:
250
- rake install
251
-
252
- Note that on some systems you may need to be "root" to do this.
253
- To manually install, copy all the files in the lib/ subdirectory
254
- to somewhere on your ruby library path, such as a ruby extensions
255
- directory.
256
-
257
-
258
- PORTING TO OTHER PLATFORMS
259
-
260
- Platform-dependent rakefiles are used to set up compiler-specific
261
- settings. The following platforms are currently fully supported:
262
-
263
- Mac OSX (gcc): rakemacosx.rb
264
- MS Windows (VC++): rakemswin.rb
265
- Linux (GTK2 + gcc): rakelinux.rb
266
-
267
- For other platforms, you may need to edit the appropriate
268
- platform-dependent rake file if your system is not yet supported, or if
269
- it is unusual. These files are found in the rake subdirectory:
270
-
271
- MS Windows BC++: rakebccwin.rb
272
- MS Windows MingGW: rakemingw.rb
273
- MS Windows Cygwin: rakecygwin.rb
274
- NetBSD: rakenetbsd.rb
275
-
276
- When editing a platform-dependent rakefile, you might
277
- merely need to set one or more of the following variables:
278
-
279
- $extra_cppflags
280
- $extra_ldflags
281
- $extra_objs
282
- $extra_libs
283
-
284
-
285
- CREDITS
286
-
287
- Kevin Smith set up the wxruby2 project using SWIG and did much of the
288
- work that still forms the core of the library in its present form. Over
289
- the years dozens of volunteers have contributed invaluable patches and
290
- new functionality. The list is too long to give here, but their
291
- contributions are recorded in the wxruby mailing list archives.
292
-
293
- -----------------------------------------------------------
294
-
295
- LEAD MAINTAINER:
296
- Alex Fenton
297
- alex at pressure dot to
46
+ * Cross-platform (MS Windows, Mac OS X, Linux)
47
+ * Real native widgets wherever possible
48
+ * Provides a comprehensive selection of widgets and other GUI features
49
+ * Useful non-GUI support classes, eg for Images and internationalisation
50
+ * Simple licence that is compatible with proprietary and Free Software
51
+ * Mature and actively developed foundation in wxWidgets
52
+ * Easy to install and redistribute
53
+
54
+ === Why are native widgets important or helpful?
55
+
56
+ The really important feature among the above is, for many people, native
57
+ widgets. Several toolkits are to some degree able to simulate the native
58
+ appearance of widgets, but wxRuby widgets are actually native widgets -
59
+ so they behave and interact exactly according to the desktop's GUI
60
+ conventions.
61
+
62
+ For one thing, this means that end-users do not have to adjust to a
63
+ "foreign" interface. It ensures maximum compatibility with "assistive
64
+ technology" such as screen readers for blind users. It also allows apps
65
+ to respect any themes the user may have chosen through their operating
66
+ system.
67
+
68
+ Desktop conventions go beyond widget appearance, to the labelling and
69
+ positioning of items in standard dialogs and menus. wxRuby offers
70
+ features to help with these too.
71
+
72
+ == Where can I ask a question, or report a bug?
73
+
74
+ The main mailing list for those using wxRuby for GUI development is
75
+ wxruby-users. General questions and queries of all sorts are appropriate
76
+ for this list, and new users are welcome.
77
+
78
+ When asking a question, if something is not working as you expect,
79
+ please provide a *minimal*, *runnable* sample of code that demonstrates
80
+ the problem, and say what you expected to happen, and what actually
81
+ happened. Please also provide basic details of your platform, ruby and
82
+ wxruby version, and make a reasonable effort to find answers in the
83
+ archive and documentation before posting. People on the list are happy
84
+ to help, but it's too much to expect them to guess what you're trying to
85
+ do, or try and debug 1,000 lines of your application.
86
+
87
+ There is a bug-tracker and feature-request system on the rubyforge
88
+ project pages for wxRuby. Using these helps ensure that a bug is
89
+ followed through and resolved. You're strongly encouraged to post to
90
+ these logged-in to rubyforge and not anonymously. You won't receive any
91
+ requests for follow-up information on anonymous items, and so these can
92
+ end up being closed without being resolved if needed information isn't
93
+ supplied.
94
+
95
+ wxruby-development is a secondary mailing list for all those interested
96
+ in the current and future development of wxRuby. The discussion on this
97
+ list tends to deal more with the internals of the library.
98
+
99
+ == How can I learn to use wxRuby?
100
+
101
+ wxRuby is a large API and takes some time to learn. The wxRuby
102
+ distribution comes with numerous samples which illustrate how to use
103
+ many specific parts of the API. A good one to start with is the
104
+ 'minimal' sample, which provides an application skeleton. All the
105
+ bundled samples are expected to work with current wxRuby 2.0, although
106
+ some use a more modern coding style than others.
107
+
108
+ Complete wxRuby API documentation can downloaded separately; this tends
109
+ to focus on how to use specific classes and methods, rather than on how
110
+ to construct an application overall.
111
+
112
+ There are also tutorials on the wiki, as well as on third-party
113
+ websites. These typically provide in-depth view of a particular topic,
114
+ but some may be out-of-date.
115
+
116
+ One of the advantages of wxRuby is the much larger ecosystem of
117
+ wxWidgets and wxPython resources out there. There is a book for
118
+ wxWidgets,"Cross-Platform Programming in wxWidgets", whcih can be freely
119
+ downloaded as a PDF. This provides very comprehensive coverage of the
120
+ wxWidgets API in C++. The code may not be directly useful, but the
121
+ descriptions of how widgets and events and so forth work are almost
122
+ always relevant to wxRuby.
123
+
124
+ When using a search engine to find answers about a wxRuby class, it can
125
+ be worth searching for the same term but with 'wx' prepended. For
126
+ example, if you wanted answers about the "Grid" class, try searching for
127
+ "wxGrid" as this will turn up results relating to wxWidgets and wxPython
128
+ which may be relevant.
129
+
130
+ == What wxWidgets features are supported by wxRuby?
131
+
132
+ wxRuby supports almost all of the wxWidgets 2.8.9 GUI API, around 300
133
+ classes in total. wxWidgets classes that provide general programming
134
+ support features, such as strings, networking, threading and database
135
+ access are not and will never be ported, as it's assumed that in all
136
+ these cases it's preferable to use a Ruby library.
137
+
138
+ If you know of a feature in wxWidgets that you would like to see
139
+ supported in wxRuby
140
+
141
+ == How does wxRuby 2.0 relate to the wxruby 0.6.0 release?
142
+
143
+ wxRuby 0.6.0 was the last in a series of releases developed using a
144
+ different approach in the early days of wxRuby. Work on this series
145
+ stopped in early 2005, in favour of what is now wxRuby 2.0. Several
146
+ years of development have gone into wxRuby since, making it vastly more
147
+ capable and correct than the 0.6.0 release, which is only offered for
148
+ legacy applications.
149
+
150
+ == I am getting an error trying to install or compile wxRuby
151
+
152
+ Please double-check the INSTALL documents, and search the mailing list
153
+ archives. If this doesn't help, please post your question on the wxruby
154
+ mailing list (http://wxruby.rubyforge.org/wiki/wiki.pl?MailingLists)
155
+
156
+ = Credits
157
+
158
+ Kevin Smith established the wxRuby 2.0 project using SWIG in 2005. Since
159
+ then it has benefitted from the input of dozens of volunteers, who have
160
+ contributed code, documentation, testing, bug reports and feature
161
+ requests.
162
+
163
+ The alphabetic list shows (some of) those who've contributed code to
164
+ wxRuby 2.0.
165
+
166
+ Albin Holmgren
167
+ Alex Fenton
168
+ Artur Kuptel
169
+ Cezar Espinola
170
+ Chauk-Mean Proum
171
+ Christophe Bludau
172
+ Curt Hibbs
173
+ Dale Edmons
174
+ Daniel Savarese
175
+ David Whetstone
176
+ Dirk Traulsen
177
+ Hawley Waldman
178
+ Jani Monoses
179
+ Joe Seeley
180
+ Jonathan Maasland
181
+ Kevin Smith
182
+ Mario Steele
183
+ Nic
184
+ Pascal Hurni
185
+ Robert Carlin
186
+ Roy Sutton
187
+ Ryuichi Sakamoto
188
+ Sean Lindsay
189
+ Sean Long
190
+ Tobias Gruetzmacher
191
+ Zach Dennis
192
+
193
+ If your name is missing and should be here, please get in touch
194
+ with the current development team.
195
+
196
+ == Lead Maintainer
197
+
198
+ Alex Fenton: alex at pressure dot to
data/lib/wx/accessors.rb CHANGED
@@ -5,16 +5,21 @@
5
5
  # * get_position()
6
6
  # * set_size(a_size)
7
7
  # * is_checked()
8
+ # * can_undo()
9
+ # * has_style(a_style)
8
10
  #
9
11
  # and so on. Methods that retrieve set, or query attributes of an object
10
- # are more normally in Ruby called simply by the attribute name:
12
+ # are more normally in Ruby called simply by the attribute name, or, in
13
+ # other cases, with a predicate method:
11
14
  #
12
- # * position()
13
- # * size = a_size
14
- # * checked?
15
+ # * pos = my_widget.position
16
+ # * my_widget.size = a_size
17
+ # * my_widget.checked?
18
+ # * my_widget.can_undo?
19
+ # * my_widget.has_style?
15
20
  #
16
21
  # This extension creates an alias for every WxRuby instance method that
17
- # begins with +get_+, +set_+ or +is_+. Note that if you are calling a
22
+ # begins with +get_+, +set_+, +is_+, +can_+ and +has_+. Note that if you are calling a
18
23
  # 'setter' method on self, you must explicitly send the message to self:
19
24
  #
20
25
  # # set's self size to be 100px by 100px
@@ -23,11 +28,18 @@
23
28
  # size = Wx::Size.new
24
29
 
25
30
  module WxRubyStyleAccessors
31
+ # Ruby-style method named are implemented by method-missing; if an
32
+ # unknown method is called, see if it is a rubyish name for a real
33
+ # method. In principle it would be possible to set up real aliases for
34
+ # them at start-up, but in practice this is far too slow for all the
35
+ # classes that need to be started up.
26
36
  def method_missing(sym, *args)
27
37
  case sym.to_s
28
- when /^(.*)\=$/
38
+ when /^(\w+)\=$/
29
39
  meth = "set_#{$1}"
30
- when /^(.*)\?$/
40
+ when /^((?:has|can)\w+)\?$/
41
+ meth = $1
42
+ when /^(\w+)\?$/
31
43
  meth = "is_#{$1}"
32
44
  else
33
45
  meth = "get_#{sym}"
@@ -25,6 +25,9 @@ class Wx::Bitmap
25
25
  new(img, depth)
26
26
  end
27
27
 
28
+ # Ruby methods that switch class are conventionally named to_foo
29
+ alias :to_image :convert_to_image
30
+
28
31
  # Redefine the initialize method so it raises an exception if a
29
32
  # non-existent file is given to the constructor; otherwise, wx Widgets
30
33
  # just carries on with an empty bitmap, which may cause faults
@@ -1,8 +1,4 @@
1
1
  class Wx::Clipboard
2
- # See if we like these better
3
- alias :place :set_data
4
- alias :fetch :get_data
5
-
6
2
  class << self
7
3
  # This is provided internally by the SWIG interface file, but all
8
4
  # public access should be via Clipboard.open; see below
@@ -29,4 +25,32 @@ class Wx::Clipboard
29
25
  clip.close if clip
30
26
  end
31
27
  end
28
+
29
+ # Need to do some internal record-keeping to protect data objects on
30
+ # the clipboard from garbage collection
31
+ @@__clip_data = []
32
+
33
+ # These methods affect the clipboard contents; each time, update the
34
+ # record with the changed data contents
35
+ wx_add_data = instance_method(:add_data)
36
+ define_method(:add_data) do | the_data |
37
+ @@__clip_data << the_data
38
+ wx_add_data.bind(self).call(the_data)
39
+ end
40
+
41
+ wx_clear = instance_method(:clear)
42
+ define_method(:clear) do
43
+ @@__clip_data.clear
44
+ wx_clear.bind(self).call
45
+ end
46
+
47
+ wx_set_data = instance_method(:set_data)
48
+ define_method(:set_data) do | the_data |
49
+ @@__clip_data = [ the_data ]
50
+ wx_set_data.bind(self).call(the_data)
51
+ end
52
+
53
+ # Aliases, more clearly expressive?
54
+ alias :place :set_data
55
+ alias :fetch :get_data
32
56
  end
@@ -17,6 +17,11 @@ class Wx::Image
17
17
  bmp.convert_to_image
18
18
  end
19
19
 
20
+ # Ruby methods that switch class are conventionally named to_foo
21
+ def to_bitmap
22
+ Wx::Bitmap.from_image(self)
23
+ end
24
+
20
25
  # Redefine the initialize method so it raises an exception if a
21
26
  # non-existent file is given to the constructor; otherwise, wx Widgets
22
27
  # just carries on with an invalid image, which may cause faults
@@ -2,20 +2,23 @@
2
2
  class Wx::ToolBar
3
3
  # Generic method to add items, supporting positional and named
4
4
  # arguments
5
- ADD_ITEM_PARAMS = [ Wx::Parameter[ :position, -1 ],
5
+ ADD_ITEM_PARAMS = [
6
+ Wx::Parameter[ :bitmap2, Wx::NULL_BITMAP ],
7
+ Wx::Parameter[ :position, -1 ],
6
8
  Wx::Parameter[ :id, -1 ],
7
9
  Wx::Parameter[ :label, "" ],
8
- Wx::Parameter[ :bitmap2, Wx::NULL_BITMAP ],
9
10
  Wx::Parameter[ :kind, Wx::ITEM_NORMAL ],
10
11
  Wx::Parameter[ :short_help, "" ],
11
12
  Wx::Parameter[ :long_help, "" ],
12
13
  Wx::Parameter[ :client_data, nil ] ]
13
14
 
14
- def add_item(bitmap, *mixed_args)
15
+ def add_item(bitmap1, *mixed_args)
15
16
  args = Wx::args_as_list(ADD_ITEM_PARAMS, *mixed_args)
16
17
 
18
+ bitmap2 = args.shift
17
19
  pos = args.shift
18
- args.insert(2, bitmap)
20
+ args.insert(2, bitmap1)
21
+ args.insert(3, bitmap2)
19
22
 
20
23
  # Call add_tool to append if default position
21
24
  if pos == -1
@@ -0,0 +1,7 @@
1
+ class Wx::Validator
2
+ # Default implementation of clone, may need to be over-ridden in
3
+ # custom subclasses should state variables need to be copied
4
+ def clone
5
+ self.class.new
6
+ end
7
+ end