[Ironruby-core] Mismatch in cases of names of events

Tomas Matousek Tomas.Matousek at microsoft.com
Fri Feb 15 12:14:15 EST 2008


Have you tried mouse_enter?

Tomas

-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Robert Brotherus
Sent: Friday, February 15, 2008 12:10 AM
To: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Mismatch in cases of names of events

I have made a test app with XAML + WPF + IronRuby event handlers
(IronRuby revision 76). The code of the Ruby-part (EventManager.rb) is
below. Due to lack of other working mechanisms of connecting the
Ruby-methods to the WPF-events, I ended up in passing the widget
reference to Ruby in a global variable and then using the closure-syntax
to connect the delegates on Ruby-side.

All three events work ok and the App runs, but only with following event
names:

CLR name of the event         Name of event seen in IronRuby
"Click"                         "click"
"Loaded"                                "loaded"
"MouseEnter"                    "MouseEnter"

Notice that whereas "Click" and "Loaded" mapped to their lower-case
equivalents, the "MouseEnter" event connected only if it was written in
the original capital form "MouseEnter" on IronRuby-side. The most
logical alternative "mouseEnter" caused MethodMissing. I suspect such
inconsistency in the name-mapping cannot be intentional.

Robert Brotherus
Software architect
Email: Robert.Brotherus at napa.fi
www.napa.fi


------------------------- EventManager.rb: -------------------------


# Reference the WPF assemblies
require 'PresentationFramework, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'
require 'PresentationCore, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'

SolidColorBrush = System::Windows::Media::SolidColorBrush
Colors = System::Windows::Media::Colors

module NWS

  module COLOURBUTTON

    class WidgetEventManager
      def initialize(widget)
        widget.click { |sender,args| self.click(sender,args) }
# CLR name: Click
        widget.loaded { |sender,args| self.loaded(sender) }
# CLR name: Loaded
        widget.MouseEnter { |sender,args| self.mouse_enter(sender,args)
}       # CRL name: MouseEnter
      end
      def click(widget, args)
        widget.content = widget.content.to_s + "X"
      end
      def mouse_enter(widget, args)
        widget.background = SolidColorBrush.new(Colors.Red)
      end
      def loaded(widget)
        widget.background = SolidColorBrush.new(Colors.Yellow)
      end
    end

  end

end

WidgetEventManager.new($widget)
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core


More information about the Ironruby-core mailing list