Module: WxRubyStyleAccessors
- Included in:
- Wx
- Defined in:
- lib/wx/accessors.rb
Overview
WxSugar - Accessors
The default WxRuby interface has lots and lots of methods like
* get_position()
* set_size(a_size)
* is_checked()
* can_undo()
* has_style(a_style)
and so on. Methods that retrieve set, or query attributes of an object are more normally in Ruby called simply by the attribute name, or, in other cases, with a predicate method:
* pos = my_widget.position
* my_widget.size = a_size
* my_widget.checked?
* my_widget.can_undo?
* my_widget.has_style?
This extension creates an alias for every WxRuby instance method that begins with get_
, set_
, is_
, can_
and has_
. Note that if you are calling a ‘setter’ method on self, you must explicitly send the message to self:
# set's self size to be 100px by 100px
self.size = Wx::Size.new(100, 100)
# only sets the value of a local variable 'size'
size = Wx::Size.new
Instance Method Summary collapse
-
#method_missing(sym, *args) ⇒ Object
Ruby-style method named are implemented by method-missing; if an unknown method is called, see if it is a rubyish name for a real method.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args) ⇒ Object
Ruby-style method named are implemented by method-missing; if an unknown method is called, see if it is a rubyish name for a real method. In principle it would be possible to set up real aliases for them at start-up, but in practice this is far too slow for all the classes that need to be started up.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/wx/accessors.rb', line 36 def method_missing(sym, *args) case sym.to_s when /^(\w+)\=$/ meth = "set_#{$1}" when /^((?:has|can)\w+)\?$/ meth = $1 when /^(\w+)\?$/ meth = "is_#{$1}" else meth = "get_#{sym}" end if respond_to?(meth) send(meth, *args) else super end end |