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