### In Files

- wx/accessors.rb
- wx/classes/functions.rb
- wx/helpers.rb
- wx/keyword_defs.rb
- wx/keyword_ctors.rb
- wx/version.rb

### Namespace

- Module Wx::KeywordConstructor
- Class Wx::AcceleratorTable
- Class Wx::Animation
- Class Wx::App
- Class Wx::ArtProvider
- Class Wx::AuiNotebook
- Class Wx::Bitmap
- Class Wx::BusyCursor
- Class Wx::CheckListBox
- Class Wx::Choice
- Class Wx::ClientDC
- Class Wx::Clipboard
- Class Wx::Colour
- Class Wx::ComboBox
- Class Wx::CommandEvent
- Class Wx::ControlWithItems
- Class Wx::DC
- Class Wx::Event
- Class Wx::EvtHandler
- Class Wx::Font
- Class Wx::Grid
- Class Wx::HelpController
- Class Wx::HelpControllerHelpProvider
- Class Wx::HelpProvider
- Class Wx::HtmlHelpController
- Class Wx::HtmlWindow
- Class Wx::Icon
- Class Wx::IconBundle
- Class Wx::Image
- Class Wx::ImageList
- Class Wx::ListBox
- Class Wx::ListCtrl
- Class Wx::Locale
- Class Wx::MediaCtrl
- Class Wx::Menu
- Class Wx::MenuItem
- Class Wx::Notebook
- Class Wx::Object
- Class Wx::PaintDC
- Class Wx::Point
- Class Wx::PreviewFrame
- Class Wx::Rect
- Class Wx::RichTextCtrl
- Class Wx::SimpleHelpProvider
- Class Wx::Size
- Class Wx::Sizer
- Class Wx::Sound
- Class Wx::StandardPaths
- Class Wx::TextCtrl
- Class Wx::TextUrlEvent
- Class Wx::Timer
- Class Wx::ToolBar
- Class Wx::ToolBarTool
- Class Wx::TreeCtrl
- Class Wx::Window
- Class Wx::XmlResource

### Methods

- args_as_list
- define_keyword_ctors

### Included Modules

- Wx::KeywordConstructor

### Files

- wxruby2.lib

### Class Index

Quicksearch

- Wx
- Wx::AcceleratorTable
- Wx::Animation
- Wx::App
- Wx::ArtProvider
- Wx::AuiNotebook
- Wx::Bitmap
- Wx::BusyCursor
- Wx::CheckListBox
- Wx::Choice
- Wx::ClientDC
- Wx::Clipboard
- Wx::Colour
- Wx::ComboBox
- Wx::CommandEvent
- Wx::ControlWithItems
- Wx::DC
- Wx::Event
- Wx::EvtHandler
- Wx::Font
- Wx::Grid
- Wx::HelpController
- Wx::HelpControllerHelpProvider
- Wx::HelpProvider
- Wx::HtmlHelpController
- Wx::HtmlWindow
- Wx::Icon
- Wx::IconBundle
- Wx::Image
- Wx::ImageList
- Wx::KeywordConstructor
- Wx::KeywordConstructor::ClassMethods
- Wx::ListBox
- Wx::ListCtrl
- Wx::Locale
- Wx::MediaCtrl
- Wx::Menu
- Wx::MenuItem
- Wx::Notebook
- Wx::Object
- Wx::PaintDC
- Wx::Point
- Wx::PreviewFrame
- Wx::Rect
- Wx::RichTextCtrl
- Wx::SimpleHelpProvider
- Wx::Size
- Wx::Sizer
- Wx::Sound
- Wx::StandardPaths
- Wx::TextCtrl
- Wx::TextUrlEvent
- Wx::Timer
- Wx::ToolBar
- Wx::ToolBarTool
- Wx::TreeCtrl
- Wx::Window
- Wx::XmlResource
- Rumix
- Rumix::Application
- Rumix::Config
- Rumix::Registry
- Rumix::Widget
- Rumix::Widget::CheckOptionPanel
- Rumix::Widget::OptionItem
- Rumix::Widget::OptionPanel
- Rumix::Widget::RadioOptionPanel
- Rumix::Widget::TitleText
- ROpt
- ROpt::ArgumentParser
- ROpt::ParseResult
- Uconv
- Uconv::Error
- Enumerable
- File
- Ini
- Kernel
- Module
- Object
- Pathname
- WxConstructor
- WxRubyStyleAccessors

No matching classes.

# Wx

Allow Wx-global functions to be accessed with nice syntax

Tweaks to the global module functions

Various non-GUI helper functions

# WxSugar - Keyword Constructors Classes

This extension defines the keyword parameters for `new` methods for widgets, windows and frames. It’s for use with *Keyword Constructors* and is no use on its own - except if you are looking for a bug or want to add a missing class.

For each class, the parameters must be declared in the order that they are supplied to wxRuby. A parameter is specified by a symbol name, and, optionally, a default argument which will of whatever type the wxRuby core library accepts. Because hashes are unordered in Ruby 1.8, if a default argument is specified, this must be the last in a list of parameters.

Some common parameters to constructors such as size, position, title, id and so forth always have a standard default argumnet, which is defined in keyword_ctors. In these cases, it is not necessary to supply the default argument in the definition.

# WxRuby Extensions - Keyword Constructors

The *Keyword Constructors* extension allows the use of Ruby hash-style keyword arguments in constructors of common WxWidgets Windows, Frame, Dialog and Control classes.

## Introduction

Building a GUI in WxWidgets involves lots of calls to `new`, but these methods often have long parameter lists. Often the default values for many of these parameters are correct. For example, if you’re using a sizer-based layout, you usually don’t want to specify a size for widgets, but you still have to type

     Wx::TreeCtrl.new( parent, -1, Wx::DEFAULT_POSITION, Wx::DEFAULT_SIZE,
                       Wx::NO_BUTTONS )

just to create a standard TreeCtrl with the ‘no buttons’ style. If you want to specify the ‘NO BUTTONS’ style, you can’t avoid all the typing of DEFAULT_POSITION etc.

## Basic Keyword Constructors

With keyword_constructors, you could write the above as

     TreeCtrl.new(parent, :style => Wx::NO_BUTTONS)

And it will assume you want the default id (-1), and the default size and position. If you want to specify an explicit size, you can do so:

     TreeCtrl.new(parent, :size => Wx::Size.new(100, 300))

For brevity, this module also allows you to specify positions and sizes using a a two-element array:

     TreeCtrl.new(parent, :size => [100, 300])

Similarly with position:

     TreeCtrl.new(parent, :pos => Wx::Point.new(5, 25))

     TreeCtrl.new(parent, :pos => [5, 25])

You can have multiple keyword arguments:

     TreeCtrl.new(parent, :pos => [5, 25], :size => [100, 300] )

## No ID required

As with position and size, you usually don’t want to deal with assigning unique ids to every widget and frame you create - it’s a C++ hangover that often seems clunky in Ruby. The *Event Connectors* extension allows you to set up event handling without having to use ids, and if no :id argument is supplied to a constructor, the default (-1) will be passed.

There are occasions when a specific ID does need to be used - for example, to tell WxWidgets that a button is a ‘stock’ item, so that it can be displayed using platform-standard text and icon. To do this, simply pass an :id argument to the constructor - here, the system’s standard ‘preview’ button

     Wx::Button.new(parent, :id => Wx::ID_PREVIEW)

## Class-specific arguments

The arguments :size, :pos and :style are common to many WxWidgets window classes. The `new` methods of these classes also have parameters that are specific to those classes; for example, the text label on a button, or the initial value of a text control.

     Wx::Button.new(parent, :label => 'press me')
     Wx::TextCtrl.new(parent, :value => 'type some text here')

The keyword names of these arguments can be found by looking at the WxRuby documentation, in the relevant class’s `new` method. You can also get a string description of the class’s `new` method parameters within Ruby by doing:

     puts Wx::TextCtrl.describe_constructor()

This will print a list of the argument names expected by the class’s `new` method, and the correct type for them.

## Mixing positional and keyword arguments

To support existing code, and to avoid forcing the use of more verbose keyword-style arguments where they’re not desired, you can mix positional and keyword arguments, omitting or including +id+s as desired.

     Wx::Button.new(parent, 'press me', :style => Wx::BU_RIGHT)

### Constants

Parameter
  A named parameter in a Wx named-arg parameter list
WXRUBY_VERSION
  (Not documented)

### Public Class Methods

args_as_list(param_spec, *mixed_args) click to toggle source

Convert mixed positional / named args into a list to be passed to an underlying API method. `param_spec` is an Array of Parameter structs containing the keyword name and default value for each possible argument. `mixed_args` is an array which may optionally end with a set of named arguments

    # File wx/helpers.rb, line 12
      def self.args_as_list(param_spec, *mixed_args)
        # get keyword arguments from mixed args if supplied, else empty
        kwa = mixed_args.last.kind_of?(Hash) ? mixed_args.pop : {}
        out_args = []
        param_spec.each_with_index do | param, i |
          if arg = mixed_args[i] # use the supplied list arg
            out_args << arg
          elsif kwa.key?(param.name) # use the keyword arg
            out_args << kwa[param.name]
          else # use the default argument
            out_args << param.default
          end
        end
        out_args
      rescue
        Kernel.raise ArgumentError,
                     "Bad arg composition of #{mixed_args.inspect}"
      end

define_keyword_ctors(klass_name, &block) click to toggle source

accepts a string unadorned name of a WxWidgets class, and block, which defines the constructor parameters and style flags for that class. If the named class exists in the available WxRuby, the block is run and the class may use keyword constructors. If the class is not available, the block is ignored.

    # File wx/keyword_defs.rb, line 27
      def self.define_keyword_ctors(klass_name, &block)
        # check this class hasn't already been defined
        if @defined_kw_classes[klass_name]
          raise ArgumentError, "Keyword ctor for #{klass_name} already defined"
        else
          @defined_kw_classes[klass_name] = true
        end

        begin
          klass =  Wx::const_get(klass_name)
        rescue NameError
          return nil
        end
        klass.module_eval { include Wx::KeywordConstructor }
        klass.instance_eval(&block)
      end

Disabled; run with $DEBUG to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.