Class: Qt::Signal

Inherits:
Object show all
Defined in:
lib/qt_connect/qt_sugar.rb,
lib/qt_connect/qt_jbindings.rb

Overview

signal=Qt::Signal.new(pushbutton,‘clicked()’) signalemitter can perform (internal) emit; this constructor

normally used internally

signal=Qt::Signal.new only emit through signal.emit

Instance Method Summary collapse

Constructor Details

#initialize(sender = nil) ⇒ Signal

Returns a new instance of Signal.



52
53
54
55
56
# File 'lib/qt_connect/qt_sugar.rb', line 52

def initialize(signalemitter=nil,signature=nil)
  @signature=signature
  @signalemitter=signalemitter
  @actions=[]
end

Instance Method Details

#connect(a1 = nil, a2 = nil, &block) ⇒ Object

E: Qt::Signal#connect{ |*args| .….…. } connect this signal emitter to a Ruby Block F: Qt::Signal#connect(self,:my_method) connect this signal emitter to a receiver/method G: Qt::Signal#connect(Qt::Signal signal2) connect this signal to another Qt::Signal instance H: Qt::Signal#connect(QtJambi::AbstractSignal signal2) connect this signal to a QtJambi::AbstractSignal instance



61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/qt_connect/qt_sugar.rb', line 61

def connect(receiver=nil,method=nil,&block)
  if @signalemitter
    if receiver && (receiver.kind_of?(Qt::Signal))
      @signalemitter.connect(SIGNAL(@signature)){|*args| receiver.emit(*args)}
      return
    end
    @signalemitter.connect(SIGNAL(@signature),receiver,method) if receiver && method
    @signalemitter.connect(SIGNAL(@signature),&block) if block_given?
  else
    @actions << [receiver,method,block]
  end
end

#disconnect(a1 = nil, a2 = nil, &block) ⇒ Object

disconnect() disconnects all connections originating in this signal emitter disconnect(object) disconnects all connections made from this signal emitter to a specific receiver disconnect(object,method) disconnects all connections made from this signal emitter to a specific receiver method



88
89
90
91
# File 'lib/qt_connect/qt_sugar.rb', line 88

def disconnect
  @signalemitter.disconnect(SIGNAL(@signature)) if @signalemitter
  @actions=[]
end

#emit(*args) ⇒ Object

(Qt::Signal signal).emit(*args)



151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/qt_connect/qt_jbindings.rb', line 151

def emit(*args)
  if @signalemitter
    sig=@signature.gsub(/[(].*[)]/,"").to_sym
    #n.b. arguments passed in a block are passed to the superclass version(e.g. original) of the signal method
    @signalemitter.send(sig){args}
  else
    @actions.each{ |action| receiver,method,block=action
      block.call(*args) if block
      receiver.send(method,*args) if receiver && method
    }
  end
end

#setargs(*args) ⇒ Object



146
147
148
# File 'lib/qt_connect/qt_jbindings.rb', line 146

def setargs(*args)
  @args=args
end