The layout of the RadioBox in this code works as the docs describe:
radios = Wx::RadioBox.new(
panel, #parent
-1, #-1 => wxruby picks id
"Drinks", #label for box surrounding radio
buttons
Wx::Point.new(20, 5),
Wx::DEFAULT_SIZE,
drink_choices, #the labels for the radio buttons
1, #max number of columns
Wx::RA_SPECIFY_COLS #previous number applies to columns
)
When I run a program with that code in it, the RadioBox is a vertical
column with one radio button per line. But when I switch to keyword
arguments:
radios = Wx::RadioBox.new(
panel, #parent
:id => -1, #-1 => wxruby picks id
:label => "Drinks", #label for box surrounding
radios
:pos => Wx::Point.new(20, 5),
:size => Wx::DEFAULT_SIZE,
:choices => drink_choices, #the labels for the radio buttons
:majorDimension => 1, #max number of columns
:style => Wx::RA_SPECIFY_COLS #number applies to columns
)
...the RadioBox lays out as one row with all the radio buttons on one
line. If I change
Wx::RA_SPECIFY_COLS
to
Wx::RA_SPECIFY_ROWS
then the RadioBox lays out like the first example--in one vertical
column with a radio button on each line. Is that a bug?
wxruby 2.0
ruby 1.8.6
mac osx 10.4.11
Here''s the full program:
require "rubygems"
require "wx"
class MyFrame < Wx::Frame
def initialize
super(nil, #parent
:id => -1, #-1 => wxruby picks id
:title => "RadioBox Example", #displays on top of
window
:pos => Wx::Point.new(150, 25), #or Wx::DEFAULT_POSITION
:size => Wx::Size.new(300, 200) #or Wx::DEFAULT_SIZE
)
panel = Wx::Panel.new(
self, #parent, self refers to this frame
:id => -1 #-1 => wxruby picks the id
)
drink_choices = ["coffee", "tea", "juice",
"milk"]
radios = Wx::RadioBox.new(
panel, #parent
:id => -1, #-1 => wxruby picks id
:label => "Drinks", #label for box surrounding
radio
buttons
:pos => Wx::Point.new(20, 5),
:size => Wx::DEFAULT_SIZE,
:choices => drink_choices, #the labels for the radio buttons
:majorDimension => 1, #max number of columns
:style => Wx::RA_SPECIFY_COLS #number applies to columns
)
show #equivalent to self.show, makes the frame visible
end
end
class MyApp < Wx::App
def on_init
MyFrame.new
end
end
MyApp.new.main_loop
--
Posted via http://www.ruby-forum.com/.
Submitted as bug #24992 here:
http://rubyforge.org/tracker/index.php?group_id=35&atid=218
If you run the following program, it will show two RadioBoxes side by
side. One RadioBox will be laid out in one column, with one radio
button per line. The other RadioBox will be laid out in one row, with
all the radio buttons on one line. However, the only difference between
the code for the two RadioBox''s is that one uses positional args and
the
other uses keyword args.
require "rubygems"
require "wx"
class MyFramePosArgs < Wx::Frame
def initialize
super(nil, #parent
:id => -1, #-1 => wxruby picks id
:title => "RadioBox Example", #displays on top of
window
:pos => Wx::Point.new(150, 25), #or Wx::DEFAULT_POSITION
:size => Wx::Size.new(300, 200) #or Wx::DEFAULT_SIZE
)
panel = Wx::Panel.new(
self, #parent, self refers to this frame
:id => -1 #-1 => wxruby picks the id
)
drink_choices = ["coffee", "tea", "juice",
"milk"]
radios = Wx::RadioBox.new(
panel, #parent
-1, #-1 => wxruby picks id
"Drinks", #label for box surrounding radios
Wx::Point.new(20, 5),
Wx::DEFAULT_SIZE,
drink_choices, #the labels for the radio buttons
1, #max number of columns
Wx::RA_SPECIFY_COLS #preceding number applies to columns
)
show #equivalent to self.show, makes the frame visible
end
end
class MyFrameKeyWordArgs < Wx::Frame
def initialize
super(nil, #parent
:id => -1, #-1 => wxruby picks id
:title => "RadioBox Example", #displays on top of
window
:pos => Wx::Point.new(500, 25), #or Wx::DEFAULT_POSITION
:size => Wx::Size.new(300, 200) #or Wx::DEFAULT_SIZE
)
panel = Wx::Panel.new(
self, #parent, self refers to this frame
:id => -1 #-1 => wxruby picks the id
)
drink_choices = ["coffee", "tea", "juice",
"milk"]
radios = Wx::RadioBox.new(
panel, #parent
:id => -1, #-1 => wxruby picks id
:label => "Drinks", #label for box surrounding
radios
:pos => Wx::Point.new(20, 5),
:size => Wx::DEFAULT_SIZE,
:choices => drink_choices, #the labels for the radio buttons
:majorDimension => 1, #max number of columns
:style => Wx::RA_SPECIFY_COLS #number applies to columns
)
show #equivalent to self.show, makes the frame visible
end
end
class MyApp < Wx::App
def on_init
MyFramePosArgs.new
MyFrameKeyWordArgs.new
end
end
MyApp.new.main_loop
--
Posted via http://www.ruby-forum.com/.
7stud -- wrote:> The layout of the RadioBox in this code works as the docs describe: > > radios = Wx::RadioBox.new( > panel, #parent > -1, #-1 => wxruby picks id > "Drinks", #label for box surrounding radio buttons > Wx::Point.new(20, 5), > Wx::DEFAULT_SIZE, > drink_choices, #the labels for the radio buttons > 1, #max number of columns > Wx::RA_SPECIFY_COLS #previous number applies to columns > ) > > When I run a program with that code in it, the RadioBox is a vertical > column with one radio button per line. But when I switch to keyword > arguments: > > > radios = Wx::RadioBox.new( > panel, #parent > :id => -1, #-1 => wxruby picks id > :label => "Drinks", #label for box surrounding radios > :pos => Wx::Point.new(20, 5), > :size => Wx::DEFAULT_SIZE, > :choices => drink_choices, #the labels for the radio buttons > :majorDimension => 1, #max number of columns > :style => Wx::RA_SPECIFY_COLS #number applies to columns > ) > > ...the RadioBox lays out as one row with all the radio buttons on one > line. If I change >After your kind words about the docs, it''s a documentation bug. The "majorDimension" argument should be specified with ":major_dimension" - train_case not CamelCase. I think it works as expected if the parameter name is given correctly. Fixed in the documentation with SVN:2062 thanks for the report and sample alex
Alex Fenton wrote:> > After your kind words about the docs, it''s a documentation bug. The > "majorDimension" argument should be specified with ":major_dimension" - > train_case not CamelCase. I think it works as expected if the parameter > name is given correctly. >Yep, that works for me. Thanks for the response. -- Posted via http://www.ruby-forum.com/.