lib/knj/objects.rb in knjrbfw-0.0.34 vs lib/knj/objects.rb in knjrbfw-0.0.35
- old
+ new
@@ -123,32 +123,42 @@
#This connects a block to an event. When the event is called the block will be executed.
def connect(args, &block)
raise "No object given." if !args["object"]
raise "No signals given." if !args.key?("signal") and !args.key?("signals")
args["block"] = block if block_given?
- @callbacks[args["object"]] = {} if !@callbacks[args["object"]]
- conn_id = @callbacks[args["object"]].length.to_s
- @callbacks[args["object"]][conn_id] = args
+ @callbacks[args["object"].to_sym] = {} if !@callbacks[args["object"]]
+ conn_id = @callbacks[args["object"].to_sym].length.to_s
+ @callbacks[args["object"].to_sym][conn_id] = args
+ return conn_id
end
#Returns true if the given signal is connected to the given object.
def connected?(args)
raise "No object given." if !args["object"]
raise "No signal given." if !args.key?("signal")
- if @callbacks.key?(args["object"])
- @callbacks[args["object"]].clone.each do |ckey, callback|
+ if @callbacks.key?(args["object"].to_sym)
+ @callbacks[args["object"].to_sym].clone.each do |ckey, callback|
return true if callback.key?("signal") and callback["signal"] == args["signal"]
return true if callback.key?("signals") and callback["signals"].index(args["signal"]) != nil
end
end
return false
end
+ #Unconnects a connect by 'object' and 'conn_id'.
+ def unconnect(args)
+ raise "No object given." if !args["object"]
+ raise "No conn-ID given." if !args["conn_id"]
+ raise "Object doesnt exist: '#{args["object"]}'." if !@callbacks.key?(args["object"].to_sym)
+ raise "Conn ID doest exist: '#{args["conn_id"]}'." if !@callbacks[args["object"].to_sym].key?(args["conn_id"])
+ @callbacks[args["object"].to_sym].delete(args["conn_id"])
+ end
+
#This method is used to call the connected callbacks for an event.
def call(args, &block)
- classstr = args["object"].class.to_s.split("::").last
+ classstr = args["object"].class.classname.to_sym
if @callbacks.key?(classstr)
@callbacks[classstr].clone.each do |callback_key, callback|
docall = false
\ No newline at end of file