コード例 #1
0
ファイル: buddylistmenu.py プロジェクト: AlexUlrich/digsby
def metacontact_buddy_menu(menu, mc):
    lenmc = len(mc)

    for contact in mc:
        # add a service specific menu for each contact in the metacontact
        contact_menu = Menu(menu.Window)

        # search_bases = False means we'll get the actions specific to the buddy's service
        actions.menu(menu.Window, contact, contact_menu, search_bases = False)

        if contact_menu[0].IsSeparator():
            contact_menu.RemoveItem(contact_menu[0])

        if lenmc > 2:
            contact_menu.AddSep()
            contact_menu.AddItem(_('&Remove from Merged Contact'),
                                 callback = lambda contact=contact:
                                 mc.manager.remove(mc, contact))

        # use the contact's service icon for the submenu (greyed out if offline)
        icon = contact.serviceicon
        if not contact.online:
            icon = icon.Greyed

        menu.AddSubMenu(contact_menu, contact.name, bitmap = icon)
コード例 #2
0
    def OnRightUp(self, event):
        """
            Generate and open menu on right click
        """
        if self.Selection >= 0:
            # populate the popup menu with actions
            self.menu.RemoveAllItems()

            acct = self.active[self.Selection]
            if hasattr(getattr(acct, 'menu_actions', None), '__call__'):
                acct.menu_actions(self.menu)
            elif isinstance(acct, EmailAccount):
                #HAX: an ugly hack until Email-specific actions are removed from EmailAccount.
                actions.menu(wx.FindWindowByName('Buddy List'),
                             acct,
                             menu=self.menu,
                             search_bases=False,
                             cls=EmailAccount)
            else:
                actions.menu(wx.FindWindowByName('Buddy List'),
                             acct,
                             menu=self.menu)

            self.menu.AddSep()

            #            if self.prefkey is not None:
            #                unlockitem = self.menu.AddCheckItem(_('Allow Rearrange'), callback = self.ToggleOrderLock)
            #                unlockitem.Check(self.unlocked)

            self.menu.PopupMenu()
コード例 #3
0
ファイル: buddylistmenu.py プロジェクト: sgricci/digsby
def im_account_menu(parent, menu, account):
    'Builds a menu for an IM account.'

    menu.RemoveAllItems()

    # Sign On / Sign Off
    if account.connected:
        menu.AddItem(_('&Sign Off'), callback=account.disconnect)
    else:
        menu.AddItem(_('&Sign On'), callback=account.connect)

    # Edit Account
    menu.AddItem(_('&Edit Account...'),
                 callback=lambda: profile.account_manager.edit(account))

    # if connected, append more action menu items
    if account.connected:
        menu.AddSep()

        # grab actions for the connection (ignoring Connect and Disconnect methods, since
        # we already have "Sign On/Off" above)
        actions.menu(parent,
                     account.connection,
                     menu,
                     filter=lambda func: func.__name__ not in
                     ('Disconnect', 'Connect'))

        actions.menu(parent, account, menu)
コード例 #4
0
ファイル: buddylistmenu.py プロジェクト: sgricci/digsby
def metacontact_buddy_menu(menu, mc):
    lenmc = len(mc)

    for contact in mc:
        # add a service specific menu for each contact in the metacontact
        contact_menu = Menu(menu.Window)

        # search_bases = False means we'll get the actions specific to the buddy's service
        actions.menu(menu.Window, contact, contact_menu, search_bases=False)

        if contact_menu[0].IsSeparator():
            contact_menu.RemoveItem(contact_menu[0])

        if lenmc > 2:
            contact_menu.AddSep()
            contact_menu.AddItem(_('&Remove from Merged Contact'),
                                 callback=lambda contact=contact: mc.manager.
                                 remove(mc, contact))

        # use the contact's service icon for the submenu (greyed out if offline)
        icon = contact.serviceicon
        if not contact.online:
            icon = icon.Greyed

        menu.AddSubMenu(contact_menu, contact.name, bitmap=icon)
コード例 #5
0
    def on_context_menu(self, e):
        # ensure the selection is underneath the mouse cursor
        self.context_menu_event_selection(e)

        menu = self.context_menu
        menu.RemoveAllItems()

        i = self.GetSelection()

        if i != -1:
            obj = self.model[i]
            if hasattr(obj, '_disallow_actions'):
                return

            # The mouse is over a group or buddy
            import common.actions as actions
            actions.menu(self, self.model[i], self.context_menu)
        else:
            # The mouse is over an empty space in the buddylist
            #
            # Only show "Add Group" if you are connected to an IM account (other than Digsby)
            # OR if you have the "digsby.allow_add" preference set.
            if not any(x.allow_contact_add
                       for x in profile.account_manager.connected_accounts):
                return

            from gui.protocols import add_group
            menu.AddItem(_('&Add Group'), callback=add_group)

        menu.PopupMenu()
コード例 #6
0
ファイル: buddylist.py プロジェクト: AlexUlrich/digsby
    def on_context_menu(self, e):
        # ensure the selection is underneath the mouse cursor
        self.context_menu_event_selection(e)

        menu = self.context_menu
        menu.RemoveAllItems()

        i = self.GetSelection()

        if i != -1:
            obj = self.model[i]
            if hasattr(obj, '_disallow_actions'):
                return

            # The mouse is over a group or buddy
            import common.actions as actions
            actions.menu(self, self.model[i], self.context_menu)
        else:
            # The mouse is over an empty space in the buddylist
            #
            # Only show "Add Group" if you are connected to an IM account (other than Digsby)
            # OR if you have the "digsby.allow_add" preference set.
            if not any(x.allow_contact_add for x in profile.account_manager.connected_accounts):
                return

            from gui.protocols import add_group
            menu.AddItem(_('&Add Group'), callback = add_group)

        menu.PopupMenu()
コード例 #7
0
    def update_menu(self, event=None):
        from common.emailaccount import EmailAccount

        self._menu.RemoveAllItems()
        actions.menu(wx.FindWindowByName('Buddy List'),
                     self.acct,
                     cls=EmailAccount,
                     search_bases=False,
                     menu=self._menu)
コード例 #8
0
ファイル: status.py プロジェクト: sgricci/digsby
    def popup(self):
        if hasattr(self, '_menu') and self._menu: self._menu.Destroy()
        menu = UMenu(self)

        menu.AddItem(_('&Edit'),   callback = lambda: self.on_edit())
        menu.AddItem(_('&Remove'), callback = lambda: self.on_delete())

        menu.AddSep()
        actions.menu(self, self.data, menu)

        self._menu = menu
        return menu
コード例 #9
0
ファイル: connectionlist.py プロジェクト: AlexUlrich/digsby
    def OnMenu(self, e = None):
        if e: e.Skip()
        menu    = self.Parent.menu
        account = self.account

        menu.RemoveAllItems()
        menu.AddItem(_('&Edit'), callback = lambda: profile.account_manager.edit(account))
        menu.AddSep()

        if account.connection:
            actions.menu(self, account.connection, menu)
            actions.menu(self, account, menu)
        else:
            menu.AddItem(_('&Connect'), callback = lambda: account.connect())

        menu.PopupMenu()
コード例 #10
0
    def OnMenu(self, e=None):
        if e: e.Skip()
        menu = self.Parent.menu
        account = self.account

        menu.RemoveAllItems()
        menu.AddItem(_('&Edit'),
                     callback=lambda: profile.account_manager.edit(account))
        menu.AddSep()

        if account.connection:
            actions.menu(self, account.connection, menu)
            actions.menu(self, account, menu)
        else:
            menu.AddItem(_('&Connect'), callback=lambda: account.connect())

        menu.PopupMenu()
コード例 #11
0
ファイル: buddylistmenu.py プロジェクト: AlexUlrich/digsby
def im_account_menu(parent, menu, account):
    'Builds a menu for an IM account.'

    menu.RemoveAllItems()

    # Sign On / Sign Off
    if account.connected: menu.AddItem(_('&Sign Off'), callback = account.disconnect)
    else:                 menu.AddItem(_('&Sign On'),  callback = account.connect)

    # Edit Account
    menu.AddItem(_('&Edit Account...'), callback = lambda: profile.account_manager.edit(account))

    # if connected, append more action menu items
    if account.connected:
        menu.AddSep()

        # grab actions for the connection (ignoring Connect and Disconnect methods, since
        # we already have "Sign On/Off" above)
        actions.menu(parent, account.connection, menu,
                     filter = lambda func: func.__name__ not in ('Disconnect', 'Connect'))

        actions.menu(parent, account, menu)
コード例 #12
0
ファイル: accountlist.py プロジェクト: AlexUlrich/digsby
    def OnRightUp(self, event):
        """
            Generate and open menu on right click
        """
        if self.Selection >= 0:
            # populate the popup menu with actions
            self.menu.RemoveAllItems()

            acct = self.active[self.Selection]
            if hasattr(getattr(acct, 'menu_actions', None), '__call__'):
                acct.menu_actions(self.menu)
            elif isinstance(acct, EmailAccount):
                #HAX: an ugly hack until Email-specific actions are removed from EmailAccount.
                actions.menu(wx.FindWindowByName('Buddy List'), acct, menu = self.menu, search_bases = False, cls = EmailAccount)
            else:
                actions.menu(wx.FindWindowByName('Buddy List'), acct, menu = self.menu)

            self.menu.AddSep()

#            if self.prefkey is not None:
#                unlockitem = self.menu.AddCheckItem(_('Allow Rearrange'), callback = self.ToggleOrderLock)
#                unlockitem.Check(self.unlocked)

            self.menu.PopupMenu()
コード例 #13
0
ファイル: accounttray.py プロジェクト: AlexUlrich/digsby
 def update_menu(self, event=None):
     self._menu.RemoveAllItems()
     actions.menu(wx.FindWindowByName('Buddy List'), self.acct, cls = type(self.acct), menu = self._menu)
コード例 #14
0
ファイル: accounttray.py プロジェクト: AlexUlrich/digsby
    def update_menu(self, event=None):
        from common.emailaccount import EmailAccount

        self._menu.RemoveAllItems()
        actions.menu(wx.FindWindowByName('Buddy List'), self.acct, cls = EmailAccount, search_bases = False,
                     menu = self._menu)
コード例 #15
0
 def update_menu(self, event=None):
     self._menu.RemoveAllItems()
     actions.menu(wx.FindWindowByName('Buddy List'),
                  self.acct,
                  cls=type(self.acct),
                  menu=self._menu)