module Fox # # An FXPseudoMouse object provides a simple means to operate widgets # programmatically, to aid test driven design. An FXPseudoMouse instance # can be pointed at an FXObject and will manage the sending of events to # it. # # For example: # # canvas = FXCanvas.new(...) # pm = FXPseudoMouse.new(canvas) # pm.doLeftButtonPress # sends a SEL_LEFTBUTTONPRESS message to the canvas # class FXPseudoMouse < FXObject attr_accessor :target def initialize(tgt=nil) @target = tgt end def doMotion unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_MOTION @target.handle(self, Fox.FXSEL(Fox::SEL_MOTION, 0), evt) end end def doMouseWheel unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_MOUSEWHEEL @target.handle(self, Fox.FXSEL(Fox::SEL_MOUSEWHEEL, 0), evt) end end def doLeftButtonPress unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_LEFTBUTTONPRESS @target.handle(self, Fox.FXSEL(Fox::SEL_LEFTBUTTONPRESS, 0), evt) end end def doLeftButtonRelease unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_LEFTBUTTONRELEASE @target.handle(self, Fox.FXSEL(Fox::SEL_LEFTBUTTONRELEASE, 0), evt) end end def doMiddleButtonPress unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_MIDDLEBUTTONPRESS @target.handle(self, Fox.FXSEL(Fox::SEL_MIDDLEBUTTONPRESS, 0), evt) end end def doMiddleButtonRelease unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_MIDDLEBUTTONRELEASE @target.handle(self, Fox.FXSEL(Fox::SEL_MIDDLEBUTTONRELEASE, 0), evt) end end def doRightButtonPress unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_RIGHTBUTTONPRESS @target.handle(self, Fox.FXSEL(Fox::SEL_RIGHTBUTTONPRESS, 0), evt) end end def doRightButtonRelease unless @target.nil? evt = FXEvent.new evt.type = Fox::SEL_RIGHTBUTTONRELEASE @target.handle(self, Fox.FXSEL(Fox::SEL_RIGHTBUTTONRELEASE, 0), evt) end end end end