def OnKeyDown(self, event): """Key down event handler.""" if not self.hasFocus: event.Skip() return key_code = event.GetKeyCode() if key_code == wx.WXK_TAB: forward = not event.ShiftDown() ne = wx.NavigationKeyEvent() ne.SetDirection(forward) ne.SetCurrentFocus(self) ne.SetEventObject(self) self.GetParent().GetEventHandler().ProcessEvent(ne) event.Skip() return self.shiftkey = event.ShiftDown() self.ctrlkey = event.ControlDown() self.click = 'KEY' delta = None if key_code == wx.WXK_UP: delta = -7 elif key_code == wx.WXK_DOWN: delta = 7 elif key_code == wx.WXK_LEFT: delta = -1 elif key_code == wx.WXK_RIGHT: delta = 1 elif key_code == wx.WXK_HOME: curDate = wx.DateTime.FromDMY(int(self.cal_days[self.sel_key]), self.month - 1, self.year) curDate.SetHour( 12) # leave a margin for the occasional DST crossing newDate = wx.DateTime.Today().SetHour(12) ts = newDate - curDate delta = ts.GetDays() if delta is not None: curDate = wx.DateTime.FromDMY(int(self.cal_days[self.sel_key]), self.month - 1, self.year) curDate.SetHour( 12) # leave a margin for the occasional DST crossing timeSpan = wx.TimeSpan.Days(delta) newDate = curDate + timeSpan if curDate.GetMonth() == newDate.GetMonth(): self.set_day = self.day = newDate.GetDay() key = self.sel_key + delta self.SelectDay(key) else: self.month = newDate.GetMonth() + 1 self.year = newDate.GetYear() self.set_day = self.day = newDate.GetDay() self.sel_key = None self.Refresh() self._EmitCalendarEvent() event.Skip()
def OnKeyDown(self, event): """Key down event handler.""" if not self.hasFocus: event.Skip() return key_code = event.GetKeyCode() if key_code == wx.WXK_TAB: forward = not event.ShiftDown() ne = wx.NavigationKeyEvent() ne.SetDirection(forward) ne.SetCurrentFocus(self) ne.SetEventObject(self) self.GetParent().GetEventHandler().ProcessEvent(ne) event.Skip() return delta = None if key_code == wx.WXK_UP: delta = -7 elif key_code == wx.WXK_DOWN: delta = 7 elif key_code == wx.WXK_LEFT: delta = -1 elif key_code == wx.WXK_RIGHT: delta = 1 elif key_code == wx.WXK_HOME: curDate = wx.DateTime.FromDMY(int(self.cal_days[self.sel_key]), self.month - 1, self.year) newDate = wx.DateTime.Now() ts = newDate - curDate delta = ts.GetDays() if delta is not None: curDate = wx.DateTime.FromDMY(int(self.cal_days[self.sel_key]), self.month - 1, self.year) timeSpan = wx.TimeSpan.Days(delta) newDate = curDate + timeSpan if curDate.GetMonth() == newDate.GetMonth(): self.set_day = newDate.GetDay() key = self.sel_key + delta self.SelectDay(key) else: self.month = newDate.GetMonth() + 1 self.year = newDate.GetYear() self.set_day = newDate.GetDay() self.sel_key = None self.DoDrawing(wx.ClientDC(self)) event.Skip()
def OnTabTraversal(self, evt): focus = evt.GetCurrentFocus() print("tab: %s, focus = %s" % (evt.IsFromTab(), focus)) if evt.IsFromTab(): if focus == self.find: new_focus = self.replace elif focus == self.replace: new_focus = self.command elif focus == self.command: new_focus = self.find else: print("Unknown focus!!!") new_focus = None if new_focus: myevt = wx.NavigationKeyEvent() #myevt.SetCurrentFocus(new_focus) myevt.SetFromTab(False) self.GetEventHandler().AddPendingEvent(myevt) else: evt.Skip()
def on_key_down(self, event): keycode = event.GetKeyCode() cmd_down = event.CmdDown() shift_down = event.ShiftDown() ################ # # Left Arrow # ################ if keycode in (wx.WXK_LEFT, wx.WXK_NUMPAD_LEFT): if self.__cursor_pos > 0: self.move_cursor_pos(self.__cursor_pos - 1, not shift_down) ################ # # Right Arrow # ################ elif keycode in (wx.WXK_RIGHT, wx.WXK_NUMPAD_RIGHT): if self.__cursor_pos < len(self.__tokens): self.move_cursor_pos(self.__cursor_pos + 1, not shift_down) ################ # # Down arrow (next metadata item) # ################ elif keycode in (wx.WXK_DOWN, wx.WXK_NUMPAD_DOWN): pos = self.__cursor_pos if pos < len(self.__tokens) and isinstance(self.__tokens[pos], self.MetadataToken): token = self.__tokens[pos] try: idx = self.__metadata_choices.index(token.value) + 1 idx %= len(self.__metadata_choices) except ValueError: idx = 0 if len(self.__metadata_choices): token.value = self.__metadata_choices[idx] self.on_token_change() ################# # # Up arrow (prev metadata item) # ################# elif keycode in (wx.WXK_UP, wx.WXK_NUMPAD_UP): pos = self.__cursor_pos if pos < len(self.__tokens) and isinstance(self.__tokens[pos], self.MetadataToken): token = self.__tokens[pos] try: idx = self.__metadata_choices.index(token.value) - 1 if idx < 0: idx = len(self.__metadata_choices) - 1 except ValueError: idx = 0 if len(self.__metadata_choices): token.value = self.__metadata_choices[idx] self.on_token_change() ################# # # Insert (add metadata item) # ################# elif keycode in (wx.WXK_INSERT, wx.WXK_NUMPAD_INSERT): pos = self.__cursor_pos token = self.MetadataToken() token.value = self.__metadata_choices[0] self.__tokens.insert(pos, token) self.on_token_change() ################# # # Backspace # ################# elif keycode == wx.WXK_BACK: pos = self.__cursor_pos if pos > 0: pos -= 1 self.move_cursor_pos(pos) del self.__tokens[pos] self.on_token_change() ################## # # Delete # ################## elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE): if self.selection[0] == self.selection[1]: pos = self.__cursor_pos if pos < len(self.__tokens): del self.__tokens[pos] self.on_token_change() else: self.delete_selection() ################# # # Home # ################# elif keycode in (wx.WXK_HOME, wx.WXK_NUMPAD_HOME): self.move_cursor_pos(0, not shift_down) ################# # # End # ################# elif keycode in (wx.WXK_END, wx.WXK_NUMPAD_END): self.move_cursor_pos(len(self.__tokens), not shift_down) ################# # # Context menu # ################# elif keycode == wx.WXK_WINDOWS_MENU: self.on_context_menu(event) ################# # # Tab # ################# elif keycode == wx.WXK_TAB: # # Code adapted from wx.lib.calendar: author Lorne White # forward = not event.ShiftDown() ne = wx.NavigationKeyEvent() ne.SetDirection(forward) ne.SetCurrentFocus(self) ne.SetEventObject(self) self.GetParent().GetEventHandler().ProcessEvent(ne) # # Seems to be confused about the focus # if self.FindFocus() != self and self.__caret is not None: self.__caret.Hide() del self.__caret self.__caret = None ################## # # Paste # ################## elif (keycode == ord("V")) and cmd_down: # Cribbed from the WX drag and drop demo if wx.TheClipboard.Open(): try: data_object = wx.TextDataObject() success = wx.TheClipboard.GetData(data_object) finally: wx.TheClipboard.Close() if success: self.delete_selection() self.__tokens = (self.__tokens[0:self.__cursor_pos] + list(data_object.GetText()) + self.__tokens[self.__cursor_pos:]) self.move_cursor_pos(self.__cursor_pos + len(data_object.GetText())) self.on_token_change() ################ # # Cut / copy # ################ elif (keycode in (ord("C"), ord("X"))) and cmd_down: if self.selection[0] == self.selection[1]: return selection = list(self.selection) selection.sort() text = self.get_text(selection[0], selection[1]) if wx.TheClipboard.Open(): try: self.__clipboard_text = wx.TextDataObject() self.__clipboard_text.SetText(text) wx.TheClipboard.SetData(self.__clipboard_text) finally: wx.TheClipboard.Close() if keycode == ord("X"): self.delete_selection() else: event.Skip()
def test_NavigationKeyEvent_ctor(self): evt = wx.NavigationKeyEvent()
def OnChar(self, event): """ Handles The wx.EVT_CHAR For The Underline wx.TextCtrl. """ modifier = FixedPoint(str(1.0), 20) if event.m_shiftDown: modifier = modifier * 2.0 if event.m_controlDown: modifier = modifier * 10.0 if event.m_altDown: modifier = modifier * 100.0 keycode = event.GetKeyCode() if keycode == wx.WXK_UP: if self._textctrl and self._textctrl.IsModified(): self.SyncSpinToText(False) self.SetValue(self._value + self._increment * modifier) self.DoSendEvent() elif keycode == wx.WXK_DOWN: if self._textctrl and self._textctrl.IsModified(): self.SyncSpinToText(False) self.SetValue(self._value - self._increment * modifier) self.DoSendEvent() elif keycode == wx.WXK_PRIOR: if self._textctrl and self._textctrl.IsModified(): self.SyncSpinToText(False) self.SetValue(self._value + 10.0 * self._increment * modifier) self.DoSendEvent() elif keycode == wx.WXK_NEXT: if self._textctrl and self._textctrl.IsModified(): self.SyncSpinToText(False) self.SetValue(self._value - 10.0 * self._increment * modifier) self.DoSendEvent() elif keycode == wx.WXK_SPACE: self.SetValue(self._value) event.Skip(False) elif keycode == wx.WXK_ESCAPE: self.SetToDefaultValue() self.DoSendEvent() elif keycode == wx.WXK_TAB: new_event = wx.NavigationKeyEvent() new_event.SetEventObject(self.GetParent()) new_event.SetDirection(not event.ShiftDown()) # CTRL-TAB changes the (parent) window, i.e. switch notebook page new_event.SetWindowChange(event.ControlDown()) new_event.SetCurrentFocus(self) self.GetParent().GetEventHandler().ProcessEvent(new_event) else: if keycode not in self._validkeycode: return event.Skip()