def __action_callback(self, src, x, y, stamp, action, event): self.detect_enter(stamp) call = self.get_action_call(action) if (call): self.__action_queue.append((action, x, y, event)) utils.request_idle_call(self.__process_actions)
def child_observer(self, src, cmd): if (cmd == src.OBS_GEOMETRY): x, y, w, h = self.__group.get_geometry() ux, uy = self.__group.get_user_geometry()[:2] if (ux.is_unset() or uy.is_unset()): utils.request_idle_call(self.update_observer, self.OBS_GEOMETRY, UNSET_COORD, UNSET_COORD, w.as_px(), h.as_px()) else: self.__save_position() utils.request_idle_call(self.update_observer, self.OBS_GEOMETRY, x.as_px(), y.as_px(), w.as_px(), h.as_px())
def send_event(self, etype, *args): if (not self.__is_sensitive): return w, h = self.__group.get_widget().size_request() lx, ly = self.__pointer_pos self.__action_stamp += 1 actions = [] if (etype == self.EVENT_MOTION): x, y = args utils.request_idle_call(self.__queue_motion, x, y, w, h, False) return elif (etype == self.EVENT_LEAVE): utils.request_idle_call(self.__queue_motion, 0, 0, w, h, True) return elif (etype == self.EVENT_PRESS): button, x, y, counter = args self.__pointer_pos = (x, y) if (counter == 1): action = DisplayTarget.ACTION_PRESS else: action = DisplayTarget.ACTION_DOUBLECLICK event = Struct(button = button, _args = [button]) actions.append((action, event)) elif (etype == self.EVENT_RELEASE): button, x, y = args if (button == 1): if (abs(lx - x) < 10 and abs(ly - y) < 10): action = DisplayTarget.ACTION_CLICK event = Struct(button = button, _args = [button]) actions.append((action, event)) action = DisplayTarget.ACTION_RELEASE elif (button == 2): return elif (button == 3): action = DisplayTarget.ACTION_MENU else: return event = Struct(button = button, _args = [button]) actions.append((action, event)) elif (etype == self.EVENT_SCROLL): direction, x, y = args if (direction == gtk.gdk.SCROLL_UP): direction = 0 elif (direction == gtk.gdk.SCROLL_DOWN): direction = 1 else: direction = -1 action = DisplayTarget.ACTION_SCROLL event = Struct(direction = direction, _args = [direction]) actions.append((action, event)) elif (etype == self.EVENT_KEY_PRESS): key, x, y = args action = DisplayTarget.ACTION_KEY_PRESS event = Struct(key = key) actions.append((action, event)) elif (etype == self.EVENT_KEY_RELEASE): key, x, y = args action = DisplayTarget.ACTION_KEY_RELEASE event = Struct(key = key) actions.append((action, event)) else: # what kind of event did we get there? import traceback; traceback.print_exc() for action, event in actions: self.__group.get_layout_object().send_action( Unit.Unit(x, Unit.UNIT_PX), Unit.Unit(y, Unit.UNIT_PX), self.__action_stamp, action, event) # extend the menu or create one if there's none if (action == DisplayTarget.ACTION_MENU): utils.request_idle_call(self.open_menu, [])