# How to use menuitems

**URL:** <https://www.ruby-forum.com/t/how-to-use-menuitems/226052>\
**Category:** wxRuby\
**Created:** [October 12, 2009, 5:14am UTC](https://www.ruby-forum.com/t/how-to-use-menuitems/226052 "2009-10-12T05:14:45Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![pnomolos](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/85f322/32.png) [@pnomolos](https://www.ruby-forum.com/u/pnomolos)\
**Post date:** [October 12, 2009, 5:14am UTC](https://www.ruby-forum.com/t/how-to-use-menuitems/226052/1 "2009-10-12T05:14:45Z")

</div>

When I try to work with menus I get the following error message after  
selecting “Red” from the colour menu. The following code produces the  
following error message. What am I doing wrong and how do I fix it.  
Thank you in advance.

- Philip

EtestApp.rb:57:in `do_Red': undefined method ===>`check’\<==== for  
109:Fixnum (NoMethodError)  
from EtestApp.rb:34:in `initialize’  
(now line 125)

Etest.rb

# This class was automatically generated from XRC source. It is not

# recommended that this file is edited directly; instead, inherit from

# this class and extend its behaviour there.

# 

# Source file: Etest.xrc

# Generated at: Sun Oct 11 20:05:09 -0600 2009

class EyesFrame \< Wx::Frame

attr\_reader :m\_statictext7, :m\_textrednumber, :m\_statictext9,  
:m\_textgreennumber, :m\_statictext11, :m\_textbluenumber,  
:m\_buttonchange, :m\_menubar1, :m\_menu1, :m\_miexit,  
:m\_menucolour, :m\_mired, :m\_migreen, :m\_miblue,  
:m\_miwhite

def initialize(parent = nil)  
super()  
xml = Wx::XmlResource.get  
xml.flags = 2 # Wx::XRC\_NO\_SUBCLASSING  
xml.init\_all\_handlers  
xml.load(“Etest.xrc”)  
xml.load\_frame\_subclass(self, parent, “MyFrame”)

```
finder = lambda do | x |
  int_id = Wx::xrcid(x)
  begin
    Wx::Window.find_window_by_id(int_id, self) || int_id
  # Temporary hack to work around regression in 1.9.2; remove
  # begin/rescue clause in later versions
  rescue RuntimeError
    int_id
  end
end

@m_statictext7 = finder.call("m_staticText7")
@m_textrednumber = finder.call("m_textRedNumber")
@m_statictext9 = finder.call("m_staticText9")
@m_textgreennumber = finder.call("m_textGreenNumber")
@m_statictext11 = finder.call("m_staticText11")
@m_textbluenumber = finder.call("m_textBlueNumber")
@m_buttonchange = finder.call("m_buttonchange")
@m_menubar1 = finder.call("m_menubar1")
@m_menu1 = finder.call("m_menu1")
@m_miexit = finder.call("m_miexit")
@m_menucolour = finder.call("m_menuColour")
@m_mired = finder.call("m_miRed")
@m_migreen = finder.call("m_miGreen")
@m_miblue = finder.call("m_miBlue")
@m_miwhite = finder.call("m_miwhite")
if self.class.method_defined? "on_init"
  self.on_init()
end

```

end  
end

Etest.App.rb

begin  
require ‘rubygems’  
rescue LoadError  
end  
require ‘wx’  
require ‘Etest.rb’

class AppFrame \< EyesFrame

# Inherit from the generated base class and set up event handlers

# set up pen and brush colours

@red\_value = 0  
@green\_value = 0  
@blue\_value = 0

# Create Needed Brushes and Pens

BG\_BRUSH = Wx::Brush.new  
@fg\_pen = Wx::Pen.new

@font = Wx::NULL\_FONT  
@text\_colour = Wx::NULL\_COLOUR

def initialize()  
super()  
@font = Wx::Font.new(50,Wx::FONTFAMILY\_TELETYPE,  
Wx::FONTSTYLE\_NORMAL,Wx::FONTWEIGHT\_NORMAL)  
BG\_BRUSH.set\_colour(255,0, 0)  
# Setup the actual data to be stored in Brushes and Pens

```
  do_rndValues
  evt_button(@m_buttonchange) { do_rndValues }
  evt_paint { on_paint }
  evt_menu(@m_mired) { do_Red}
  evt_menu(@m_migreen) { do_Green }
  evt_menu(@m_miblue) { do_Blue }
  evt_menu(@m_miwhite) { do_white }

```

end

def do\_rndValues  
@red\_value = rand(255)  
@green\_value = rand(255)  
@blue\_value = rand(255)  
@m\_textrednumber.label = @red\_value.to\_s  
@m\_textgreennumber.label = @green\_value.to\_s  
@m\_textbluenumber.label = @blue\_value.to\_s  
refresh()  
end

def do\_Red()  
@red\_value = 255  
@green\_value = 0  
@blue\_value = 0  
@m\_textrednumber.label = @red\_value.to\_s  
@m\_textgreennumber.label = @green\_value.to\_s  
@m\_textbluenumber.label = @blue\_value.to\_s  
@m\_mired.check(true)  
@m\_migreen.check(false)  
@m\_miblue.check(false)  
@m\_miwhite.check(false)

```
  refresh()

```

end

def on\_paint  
# We do our drawing now  
rect = self.get\_client\_size  
paint do |dc|  
gdc = Wx::GraphicsContext.create(dc)

```
    # draw rectangle
    temp_brush = gdc.create_brush(BG_BRUSH)
    gdc.set_brush(temp_brush)

    x = 0
    y = 0
    w = 300
    h = 260
    gdc.draw_rectangle(x,y,w,h)
 end # paint do

```

end # on paint  
end

Wx::App.run do  
AppFrame.new.show  
end

---

<div class="post-metadata">

**Author:** ![pnomolos](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/85f322/32.png) [@pnomolos](https://www.ruby-forum.com/u/pnomolos)\
**Post date:** [October 13, 2009, 2:27am UTC](https://www.ruby-forum.com/t/how-to-use-menuitems/226052/2 "2009-10-13T02:27:19Z")

</div>

The problem that you are running into, is the fact that when dealing  
with  
XRC Files, the lookup method returns the Integer ID for the Menu Items,  
instead of the Actual Instance of MenuItem class. What you need to do,  
is  
something along the lines of this:  
self.get\_menu\_bar.find\_item(@m\_mired).check(true)

The same with the ones that you want to uncheck.

hth,

Mario
