Esempio n. 1
0
    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()
Esempio n. 2
0
    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()
Esempio n. 3
0
 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()
Esempio n. 4
0
 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()
Esempio n. 5
0
 def test_NavigationKeyEvent_ctor(self):
     evt = wx.NavigationKeyEvent()
Esempio n. 6
0
    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()