Ejemplo n.º 1
0
 def test_SERIALISABLE_TYPE_SHORTCUT( self ):
     
     def test( obj, dupe_obj ):
         
         self.assertEqual( dupe_obj.__hash__(), ( dupe_obj._shortcut_type, dupe_obj._shortcut_key, tuple( dupe_obj._modifiers ) ).__hash__() )
         
         self.assertEqual( obj, dupe_obj )
         
     
     shortcuts = []
     
     shortcuts.append( ( ClientGUIShortcuts.Shortcut(), 'f7' ) )
     
     shortcuts.append( ( ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, wx.WXK_SPACE, [] ), 'space' ) )
     shortcuts.append( ( ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, ord( 'a' ), [ CC.SHORTCUT_MODIFIER_CTRL ] ), 'ctrl+a' ) )
     shortcuts.append( ( ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, ord( 'A' ), [ CC.SHORTCUT_MODIFIER_CTRL ] ), 'ctrl+a' ) )
     shortcuts.append( ( ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, wx.WXK_HOME, [ CC.SHORTCUT_MODIFIER_ALT, CC.SHORTCUT_MODIFIER_CTRL ] ), 'ctrl+alt+home' ) )
     
     shortcuts.append( ( ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_MOUSE, CC.SHORTCUT_MOUSE_LEFT, [] ), 'left-click' ) )
     shortcuts.append( ( ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_MOUSE, CC.SHORTCUT_MOUSE_MIDDLE, [ CC.SHORTCUT_MODIFIER_CTRL ] ), 'ctrl+middle-click' ) )
     shortcuts.append( ( ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_MOUSE, CC.SHORTCUT_MOUSE_SCROLL_DOWN, [ CC.SHORTCUT_MODIFIER_ALT, CC.SHORTCUT_MODIFIER_SHIFT ] ), 'alt+shift+scroll down' ) )
     
     for ( shortcut, s ) in shortcuts:
         
         self._dump_and_load_and_test( shortcut, test )
         
         self.assertEqual( shortcut.ToString(), s )
Ejemplo n.º 2
0
 def EventCharHook( self, event ):
     
     ( modifier, key ) = ClientGUIShortcuts.ConvertKeyEventToSimpleTuple( event )
     
     if key in ( wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER ):
         
         self._DoOK()
         
     else:
         
         event.Skip()
Ejemplo n.º 3
0
    def EventCharHook(self, event):

        (modifier,
         key) = ClientGUIShortcuts.ConvertKeyEventToSimpleTuple(event)

        if key == wx.WXK_ESCAPE:

            self.Close()

        else:

            event.Skip()
Ejemplo n.º 4
0
 def test_SERIALISABLE_TYPE_SHORTCUTS( self ):
     
     def test( obj, dupe_obj ):
         
         for ( shortcut, command ) in obj:
             
             self.assertEqual( dupe_obj.GetCommand( shortcut ).GetData(), command.GetData() )
             
         
     
     default_shortcuts = ClientDefaults.GetDefaultShortcuts()
     
     for shortcuts in default_shortcuts:
         
         self._dump_and_load_and_test( shortcuts, test )
         
     
     command_1 = ClientData.ApplicationCommand( CC.APPLICATION_COMMAND_TYPE_SIMPLE, 'archive_file' )
     command_2 = ClientData.ApplicationCommand( CC.APPLICATION_COMMAND_TYPE_CONTENT, ( HydrusData.GenerateKey(), HC.CONTENT_TYPE_MAPPINGS, HC.CONTENT_UPDATE_FLIP, 'test' ) )
     command_3 = ClientData.ApplicationCommand( CC.APPLICATION_COMMAND_TYPE_CONTENT, ( CC.LOCAL_TAG_SERVICE_KEY, HC.CONTENT_TYPE_MAPPINGS, HC.CONTENT_UPDATE_FLIP, 'test' ) )
     
     k_shortcut_1 = ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, wx.WXK_SPACE, [] )
     k_shortcut_2 = ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, ord( 'a' ), [ CC.SHORTCUT_MODIFIER_CTRL ] )
     k_shortcut_3 = ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, ord( 'A' ), [ CC.SHORTCUT_MODIFIER_CTRL ] )
     k_shortcut_4 = ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_KEYBOARD, wx.WXK_HOME, [ CC.SHORTCUT_MODIFIER_ALT, CC.SHORTCUT_MODIFIER_CTRL ] )
     
     m_shortcut_1 = ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_MOUSE, CC.SHORTCUT_MOUSE_LEFT, [] )
     m_shortcut_2 = ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_MOUSE, CC.SHORTCUT_MOUSE_MIDDLE, [ CC.SHORTCUT_MODIFIER_CTRL ] )
     m_shortcut_3 = ClientGUIShortcuts.Shortcut( CC.SHORTCUT_TYPE_MOUSE, CC.SHORTCUT_MOUSE_SCROLL_DOWN, [ CC.SHORTCUT_MODIFIER_ALT, CC.SHORTCUT_MODIFIER_SHIFT ] )
     
     shortcuts = ClientGUIShortcuts.Shortcuts( 'test' )
     
     shortcuts.SetCommand( k_shortcut_1, command_1 )
     shortcuts.SetCommand( k_shortcut_2, command_2 )
     shortcuts.SetCommand( k_shortcut_3, command_2 )
     shortcuts.SetCommand( k_shortcut_4, command_3 )
     
     shortcuts.SetCommand( m_shortcut_1, command_1 )
     shortcuts.SetCommand( m_shortcut_2, command_2 )
     shortcuts.SetCommand( m_shortcut_3, command_3 )
     
     self._dump_and_load_and_test( shortcuts, test )
     
     self.assertEqual( shortcuts.GetCommand( k_shortcut_1 ).GetData(), command_1.GetData() )
     
     shortcuts.SetCommand( k_shortcut_1, command_3 )
     
     self.assertEqual( shortcuts.GetCommand( k_shortcut_1 ).GetData(), command_3.GetData() )
Ejemplo n.º 5
0
    def EventKeyDown(self, event):

        (modifier,
         key) = ClientGUIShortcuts.ConvertKeyEventToSimpleTuple(event)

        if key in CC.DELETE_KEYS:

            self.ProcessDeleteAction()

        elif key in (ord('A'), ord('a')) and modifier == wx.ACCEL_CTRL:

            self.SelectAll()

        else:

            event.Skip()
Ejemplo n.º 6
0
    def EventKeyDown(self, event):

        (modifier,
         key) = ClientGUIShortcuts.ConvertKeyEventToSimpleTuple(event)

        if key in CC.DELETE_KEYS:

            if self._delete_key_callback is not None:

                self._delete_key_callback()

        elif key in (ord('A'), ord('a')) and modifier == wx.ACCEL_CTRL:

            self.SelectAll()

        else:

            event.Skip()
Ejemplo n.º 7
0
    def EventKeyDown(self, event):

        (modifier,
         key) = ClientGUIShortcuts.ConvertKeyEventToSimpleTuple(event)

        if key in (wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER):

            text = self._text_input.GetValue()

            if text != '':

                self._add_callable((text, ))

            self._text_input.SetValue('')

        else:

            event.Skip()
Ejemplo n.º 8
0
    def __init__(self, parent, ok_on_these_commands=None):

        EditPanel.__init__(self, parent)

        self._control = None

        if ok_on_these_commands is None:

            ok_on_these_commands = set()

        self._ok_on_these_commands = set(ok_on_these_commands)

        #

        self._vbox = wx.BoxSizer(wx.VERTICAL)

        self.SetSizer(self._vbox)

        self._my_shortcuts_handler = ClientGUIShortcuts.ShortcutsHandler(
            self, ['media'])
Ejemplo n.º 9
0
    def __init__(self, parent, media):

        self._hashes = set()

        for m in media:
            self._hashes.update(m.GetHashes())

        (remember, position) = HC.options['rating_dialog_position']

        if remember and position is not None:

            my_position = 'custom'

            wx.CallAfter(self.SetPosition, position)

        else:

            my_position = 'topleft'

        ClientGUIDialogs.Dialog.__init__(
            self,
            parent,
            'manage ratings for ' + HydrusData.ToHumanInt(len(self._hashes)) +
            ' files',
            position=my_position)

        #

        like_services = HG.client_controller.services_manager.GetServices(
            (HC.LOCAL_RATING_LIKE, ), randomised=False)
        numerical_services = HG.client_controller.services_manager.GetServices(
            (HC.LOCAL_RATING_NUMERICAL, ), randomised=False)

        self._panels = []

        if len(like_services) > 0:

            self._panels.append(self._LikePanel(self, like_services, media))

        if len(numerical_services) > 0:

            self._panels.append(
                self._NumericalPanel(self, numerical_services, media))

        self._apply = wx.Button(self, id=wx.ID_OK, label='apply')
        self._apply.Bind(wx.EVT_BUTTON, self.EventOK)
        self._apply.SetForegroundColour((0, 128, 0))

        self._cancel = wx.Button(self, id=wx.ID_CANCEL, label='cancel')
        self._cancel.SetForegroundColour((128, 0, 0))

        #

        buttonbox = wx.BoxSizer(wx.HORIZONTAL)

        buttonbox.Add(self._apply, CC.FLAGS_VCENTER)
        buttonbox.Add(self._cancel, CC.FLAGS_VCENTER)

        vbox = wx.BoxSizer(wx.VERTICAL)

        for panel in self._panels:

            vbox.Add(panel, CC.FLAGS_EXPAND_PERPENDICULAR)

        vbox.Add(buttonbox, CC.FLAGS_BUTTON_SIZER)

        self.SetSizer(vbox)

        (x, y) = self.GetEffectiveMinSize()

        self.SetInitialSize((x, y))

        #

        self._my_shortcut_handler = ClientGUIShortcuts.ShortcutsHandler(
            self, ['media'])