def _ns_other_event(self, ns_event): #print "PyGUI_NS_EventHandler._ns_other_event for", self ### event = Event(ns_event) component = self.pygui_component if component: #print "...passing", event.kind, "to", component ### component.handle_event(event)
def _handle_gtk_key_event(self, gtk_event): """Convert a Gtk key-press or key-release event into an Event object and pass it up the message path.""" #print "Component._handle_gtk_key_event for", self ### global _gtk_last_keyval_down if Event._gtk_key_event_of_interest(gtk_event): event = Event._from_gtk_key_event(gtk_event) if event.kind == 'key_down': this_keyval = gtk_event.keyval if _gtk_last_keyval_down == this_keyval: event.auto = 1 _gtk_last_keyval_down = this_keyval else: _gtk_last_keyval_down = None #if event.kind == 'key_down': ### # print event ### return self._event_custom_handled(event)
def ns_process_key_event(self, ns_event): # Perform menu setup before command-key events. # Send non-command key events to associated window if any, # otherwise pass them to the pygui application. This is necessary # because otherwise there is no way of receiving key events when # there are no windows. if ns_event.modifierFlags() & NSCommandKeyMask: NSApplication.sendEvent_(self._ns_app, ns_event) else: ns_window = ns_event.window() if ns_window: ns_window.sendEvent_(ns_event) else: event = Event(ns_event) self.handle(event.kind, event)
def _gtk_button_press_event_signal(self, gtk_event): if gtk_event.type == gdk.BUTTON_PRESS: # don't want 2BUTTON or 3BUTTON event = Event._from_gtk_mouse_event(gtk_event) last_time = self._last_mouse_down_time this_time = event.time num_clicks = self._click_count if this_time - last_time <= 0.25: num_clicks += 1 else: num_clicks = 1 event.num_clicks = num_clicks self._click_count = num_clicks self._last_mouse_down_time = this_time #print "Component._gtk_button_press_event_signal:" ### #print event ### return self._event_custom_handled(event)
def _gtk_enter_leave_event_signal(self, gtk_event): #print "Component._gtk_enter_leave_event_signal:" ### event = Event._from_gtk_mouse_event(gtk_event) return self._event_custom_handled(event)
def _gtk_button_release_event_signal(self, gtk_event): event = Event._from_gtk_mouse_event(gtk_event) self._mouse_event = event return self._event_custom_handled(event)
def _gtk_motion_notify_event_signal(self, gtk_event): event = Event._from_gtk_mouse_event(gtk_event) self._mouse_event = event return self._event_custom_handled(event)
def win_message_to_event(message, target = None): hwnd, msg, wParam, lParam, milliseconds, gpos = message kind, button = win_message_map[msg] time = milliseconds / 1000.0 if kind == 'mouse_move' and wParam & win_button_flags <> 0: kind = 'mouse_drag' if target: lpos = target.global_to_local(gpos) else: lpos = gpos event = Event() event.kind = kind event.global_position = gpos event.position = lpos event.time = time event.button = button shift = api.GetKeyState(wc.VK_SHIFT) & 0x80 <> 0 control = api.GetKeyState(wc.VK_CONTROL) & 0x80 <> 0 option = api.GetKeyState(wc.VK_MENU) & 0x80 <> 0 event.shift = event.extend_contig = shift event.control = event.extend_noncontig = control event.option = option vkey = None if kind == 'mouse_down': global win_last_mouse_down last = win_last_mouse_down if last and last.button == button and time - last.time <= win_dbl_time: x0, y0 = last.global_position x1, y1 = gpos if abs(x1 - x0) <= win_dbl_xdist and abs(y1 - y0) <= win_dbl_ydist: event.num_clicks = last.num_clicks + 1 win_last_mouse_down = event elif kind == 'key_down' or kind == 'key_up': event.unichars = ui.TranslateVirtualKey(wParam) event.char = event.unichars.decode('ascii') event._keycode = wParam if wParam == 0x0d: if (lParam & 0x1000000): event.key = 'enter' else: event.key = 'return' else: event.key = win_special_keys.get(wParam) or event.char if kind == 'key_down': event.auto = lParam & win_prev_key_state <> 0 return event
def _ns_mouse_event_to_event(self, ns_event): event = Event(ns_event) event.position = tuple(self._ns_event_position(ns_event)) return event
def win_message_to_event(message, target=None): hwnd, msg, wParam, lParam, milliseconds, gpos = message kind, button = win_message_map[msg] time = milliseconds / 1000.0 if kind == 'mouse_move' and wParam & win_button_flags <> 0: kind = 'mouse_drag' if target: lpos = target.global_to_local(gpos) else: lpos = gpos event = Event() event.kind = kind event.global_position = gpos event.position = lpos event.time = time event.button = button shift = api.GetKeyState(wc.VK_SHIFT) & 0x80 <> 0 control = api.GetKeyState(wc.VK_CONTROL) & 0x80 <> 0 option = api.GetKeyState(wc.VK_MENU) & 0x80 <> 0 event.shift = event.extend_contig = shift event.control = event.extend_noncontig = control event.option = option vkey = None if kind == 'mouse_down': global win_last_mouse_down last = win_last_mouse_down if last and last.button == button and time - last.time <= win_dbl_time: x0, y0 = last.global_position x1, y1 = gpos if abs(x1 - x0) <= win_dbl_xdist and abs(y1 - y0) <= win_dbl_ydist: event.num_clicks = last.num_clicks + 1 win_last_mouse_down = event elif kind == 'key_down' or kind == 'key_up': event.unichars = ui.TranslateVirtualKey(wParam) event.char = event.unichars.decode('ascii') event._keycode = wParam if wParam == 0x0d: if (lParam & 0x1000000): event.key = 'enter' else: event.key = 'return' else: event.key = win_special_keys.get(wParam) or event.char if kind == 'key_down': event.auto = lParam & win_prev_key_state <> 0 return event