home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / gui / app / mainMenuEvents.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  15.2 KB  |  420 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import wx
  5. import sys
  6. import actionIDs
  7. from peak.util.imports import lazyModule
  8. common = lazyModule('common')
  9. from eventStack import AppEventHandlerMixin
  10. config = lazyModule('config')
  11. from weakref import WeakValueDictionary
  12.  
  13. def stub():
  14.     pass
  15.  
  16.  
  17. def tracecall(fn):
  18.     
  19.     def trace(*args):
  20.         if getattr(wx.GetApp(), 'testing', False):
  21.             wx.GetApp().event_fired = fn
  22.             print 'function %r fired' % fn
  23.             return stub
  24.         return fn(*args)
  25.  
  26.     return trace
  27.  
  28. sorts = {
  29.     actionIDs.SortByNone: 'none',
  30.     actionIDs.SortByStatus: 'status',
  31.     actionIDs.SortByName: 'name',
  32.     actionIDs.SortByLogSize: 'log',
  33.     actionIDs.SortByService: 'service' }
  34. hwndMap = WeakValueDictionary()
  35. menuTitles = { }
  36. buddylist_panel_names = dict(status = _('Status Panel'), blist = _('Buddy List'), elist = _('Email Accounts'), slist = _('Social Networks'), clist = _('Connections'))
  37.  
  38. class MainMenuEventHandler(AppEventHandlerMixin):
  39.     
  40.     def __init__(self):
  41.         AppEventHandlerMixin.__init__(self)
  42.  
  43.     
  44.     def register_handlers(self):
  45.         self.AddHandlerForID(actionIDs.NewStatusMessage, self.new_status_message)
  46.         self.AddHandlerForID(actionIDs.EditStatusMessage, self.edit_status_message)
  47.         self.AddHandlerForID(actionIDs.MyAccounts, self.accounts)
  48.         self.AddHandlerForID(actionIDs.NewIM, self.new_im)
  49.         self.AddHandlerForID(actionIDs.AddContact, self.add_contact)
  50.         self.AddHandlerForID(actionIDs.AddGroup, self.add_group)
  51.         self.AddHandlerForID(actionIDs.RenameSelection, self.rename_selection)
  52.         self.AddHandlerForID(actionIDs.DeleteSelection, self.delete_selection)
  53.         self.AddHandlerForID(actionIDs.SignOff, self.sign_off)
  54.         self.AddHandlerForID(actionIDs.AlwaysOnTop, self.always_on_top)
  55.         self.AddHandlerForID(actionIDs.Skins, self.skins)
  56.         self.AddHandlerForID(actionIDs.MenuBar, self.show_menubar)
  57.         self.AddHandlerForID(actionIDs.StatusPanel, self.show_status_panel)
  58.         self.AddHandlerForID(actionIDs.ArrangePanels, self.arrange_panels)
  59.         self.AddHandlerForID(actionIDs.ShowMobileContacts, self.show_mobile_contacts)
  60.         self.AddHandlerForID(actionIDs.ShowOfflineContacts, self.show_offline_contacts)
  61.         self.AddHandlerForID(actionIDs.GroupOfflineContacts, self.group_offline_contacts)
  62.         self.AddHandlerForID(actionIDs.HideOfflineGroups, self.hide_offline_groups)
  63.         self.AddHandlerForID(actionIDs.SortByNone, self.sort_by)
  64.         self.AddHandlerForID(actionIDs.SortByStatus, self.sort_by)
  65.         self.AddHandlerForID(actionIDs.SortByName, self.sort_by)
  66.         self.AddHandlerForID(actionIDs.SortByLogSize, self.sort_by)
  67.         self.AddHandlerForID(actionIDs.SortByService, self.sort_by)
  68.         self.AddHandlerForID(actionIDs.SortByAdvanced, self.sort_by)
  69.         self.AddHandlerForID(actionIDs.Preferences, self.show_preferences)
  70.         self.AddHandlerForID(actionIDs.FileTransferHistory, self.show_file_transfer_history)
  71.         self.AddHandlerForID(actionIDs.ChatHistory, self.show_chat_history)
  72.         self.AddHandlerForID(actionIDs.Documentation, self.show_documentation)
  73.         self.AddHandlerForID(actionIDs.SupportForums, self.show_support_forums)
  74.         self.AddHandlerForID(actionIDs.SubmitBugReport, self.submit_bug_report)
  75.         self.AddHandlerForID(actionIDs.SuggestAFeature, self.suggest_a_feature)
  76.         self.AddHandlerForID(actionIDs.ShowDebugConsole, self.show_debug_console)
  77.         self.AddHandlerForID(actionIDs.InviteYourFriends, self.invite_your_friends)
  78.         if 'wxMSW' in wx.PlatformInfo:
  79.             parentFrame = self.get_buddy_list_frame()
  80.             parentFrame.Bind(wx.EVT_MENU_OPEN, self.update_menu)
  81.         else:
  82.             self.Bind(wx.EVT_MENU_OPEN, self.update_menu)
  83.  
  84.     
  85.     def fire_event_for_action(self, action, target = None):
  86.         return fire_action_event(action, target)
  87.  
  88.     
  89.     def get_buddy_list_frame(self):
  90.         buddylist = None
  91.         app = wx.GetApp()
  92.         if app:
  93.             buddylist = app.buddy_frame
  94.         
  95.         return buddylist
  96.  
  97.     
  98.     def get_buddy_list_panel(self):
  99.         buddylist = self.get_buddy_list_frame()
  100.         if buddylist:
  101.             return buddylist.buddyListPanel
  102.         return None
  103.  
  104.     
  105.     def update_menu(self, event):
  106.         menu = event.Menu
  107.         if config.platformName == 'mac':
  108.             menubar = self.get_buddy_list_frame().MenuBar
  109.         else:
  110.             menubar = self.get_buddy_list_panel().menubar
  111.         if menubar:
  112.             title = None
  113.             if menu in menuTitles:
  114.                 title = menuTitles[menu]
  115.             else:
  116.                 for i in xrange(menubar.MenuCount):
  117.                     iter_menu = menubar.GetMenu(i)
  118.                     if iter_menu == menu:
  119.                         title = menuTitles[menu] = menubar.GetMenuLabel(i)
  120.                         continue
  121.                     for item in iter_menu.MenuItems:
  122.                         if item.IsSubMenu() and menu == item.SubMenu:
  123.                             title = menuTitles[menu] = item.GetItemLabel()
  124.                             continue
  125.                     
  126.                 
  127.             if title == _('&Digsby'):
  128.                 self.update_digsby_menu(menu)
  129.             elif title == _('&Sort By'):
  130.                 self.update_sort_menu(menu)
  131.             elif title == _('&View'):
  132.                 self.update_view_menu(menu)
  133.             
  134.         
  135.  
  136.     
  137.     def update_digsby_menu(self, menu):
  138.         buddylist = self.get_buddy_list_panel()
  139.         if buddylist:
  140.             b = buddylist.blist.SelectedItem
  141.             OfflineGroup = OfflineGroup
  142.             import contacts.buddylistfilters
  143.             allow_add = any((lambda .0: for x in .0:
  144. x.allow_contact_add)(common.profile.account_manager.connected_accounts))
  145.             menu.Enable(actionIDs.NewIM, allow_add)
  146.             menu.Enable(actionIDs.AddContact, allow_add)
  147.             menu.Enable(actionIDs.AddGroup, allow_add)
  148.             renameitem = menu.FindItemById(actionIDs.RenameSelection)
  149.             deleteitem = menu.FindItemById(actionIDs.DeleteSelection)
  150.             if b is None and getattr(b, 'iswidget', False) or isinstance(b, OfflineGroup):
  151.                 renameitem.SetItemLabel(_('&Rename Selection'))
  152.                 deleteitem.SetItemLabel(_('&Delete Selection'))
  153.                 renameitem.Enable(False)
  154.                 deleteitem.Enable(False)
  155.             else:
  156.                 renameitem.SetItemLabel(_('&Rename %s') % getattr(b, 'alias', b.name))
  157.                 deleteitem.SetItemLabel(_('&Delete %s') % getattr(b, 'alias', b.name))
  158.                 renameitem.Enable(True)
  159.                 deleteitem.Enable(True)
  160.         
  161.  
  162.     
  163.     def update_sort_menu(self, menu):
  164.         checkedOne = False
  165.         sortby = common.pref('buddylist.sortby', 'none none')
  166.         for item in menu.MenuItems:
  167.             
  168.             try:
  169.                 if item.Id in sorts:
  170.                     sorttypes = sorts[item.Id] + ' none'
  171.                 else:
  172.                     sorttypes = object()
  173.             except IndexError:
  174.                 sorttypes = object()
  175.  
  176.             if item.Kind == wx.ITEM_CHECK:
  177.                 val = sorttypes == sortby
  178.                 item.Check(val)
  179.                 if val:
  180.                     checkedOne = True
  181.                 
  182.             val
  183.         
  184.         if not checkedOne:
  185.             list(menu.MenuItems)[-1].Check(True)
  186.         
  187.  
  188.     
  189.     def update_view_menu(self, menu):
  190.         sortstatus = common.pref('buddylist.sortby').startswith('*status')
  191.         showoff = common.pref('buddylist.show_offline')
  192.         showmob = common.pref('buddylist.show_mobile')
  193.         hidegroups = common.pref('buddylist.hide_offline_groups')
  194.         groupoff = common.pref('buddylist.group_offline')
  195.         showstat = common.pref('buddylist.show_status')
  196.         showmenu = common.pref('buddylist.show_menubar')
  197.         ontop = menu.FindItemById(actionIDs.AlwaysOnTop)
  198.         showmobile = menu.FindItemById(actionIDs.ShowMobileContacts)
  199.         showoffline = menu.FindItemById(actionIDs.ShowOfflineContacts)
  200.         groupoffline = menu.FindItemById(actionIDs.GroupOfflineContacts)
  201.         hideoffline = menu.FindItemById(actionIDs.HideOfflineGroups)
  202.         statuspanel = menu.FindItemById(actionIDs.StatusPanel)
  203.         menubar = menu.FindItemById(actionIDs.MenuBar)
  204.         showmobile.Check(showmob)
  205.         showoffline.Check(showoff)
  206.         statuspanel.Check(showstat)
  207.         if menubar:
  208.             menubar.Check(showmenu)
  209.         
  210.         buddy_frame = self.get_buddy_list_frame()
  211.         if buddy_frame:
  212.             ontop.Check(buddy_frame.HasFlag(wx.STAY_ON_TOP))
  213.         
  214.         if not sortstatus:
  215.             pass
  216.         groupoffline.Enable(showoff)
  217.         if groupoff and not sortstatus:
  218.             pass
  219.         groupoffline.Check(showoff)
  220.         hideoffline.Enable(not sortstatus)
  221.         if (sortstatus or not showoff) and not sortstatus:
  222.             pass
  223.         hideoffline.Check(hidegroups)
  224.  
  225.     
  226.     def new_status_message(self, event = None):
  227.         new_custom_status = new_custom_status
  228.         import gui.status
  229.         new_custom_status(None, save_checkbox = True)
  230.  
  231.     new_status_message = tracecall(new_status_message)
  232.     
  233.     def edit_status_message(self, event = None):
  234.         import gui.pref.prefsdialog as prefsdialog
  235.         prefsdialog.show('status')
  236.  
  237.     edit_status_message = tracecall(edit_status_message)
  238.     
  239.     def accounts(self, event = None):
  240.         prefsdialog.show('accounts')
  241.  
  242.     accounts = tracecall(accounts)
  243.     
  244.     def update_bool_pref(self, pref):
  245.         common.profile.prefs[pref] = not common.profile.prefs[pref]
  246.  
  247.     update_bool_pref = tracecall(update_bool_pref)
  248.     
  249.     def update_check_pref(self, item, value):
  250.         item.Check(value)
  251.  
  252.     
  253.     def new_im(self, event = None):
  254.         ShowNewIMDialog = ShowNewIMDialog
  255.         import gui.imdialogs
  256.         ShowNewIMDialog()
  257.  
  258.     new_im = tracecall(new_im)
  259.     
  260.     def add_contact(self, event = None):
  261.         AddContactDialog = AddContactDialog
  262.         import gui.addcontactdialog
  263.         AddContactDialog.MakeOrShow()
  264.  
  265.     add_contact = tracecall(add_contact)
  266.     
  267.     def add_group(self, event = None):
  268.         import gui.protocols as gui
  269.         gui.protocols.add_group()
  270.  
  271.     add_group = tracecall(add_group)
  272.     
  273.     def rename_selection(self, event = None):
  274.         buddylist = self.get_buddy_list_panel()
  275.         if buddylist:
  276.             buddylist.blist.rename_selected()
  277.         
  278.  
  279.     rename_selection = tracecall(rename_selection)
  280.     
  281.     def delete_selection(self, event = None):
  282.         buddylist = self.get_buddy_list_panel()
  283.         if buddylist:
  284.             buddylist.blist.delete_blist_item(buddylist.blist.SelectedItem)
  285.         
  286.  
  287.     delete_selection = tracecall(delete_selection)
  288.     
  289.     def sign_off(self, event = None):
  290.         common.profile.signoff()
  291.  
  292.     sign_off = tracecall(sign_off)
  293.     
  294.     def always_on_top(self, event = None):
  295.         self.update_bool_pref('buddylist.always_on_top')
  296.  
  297.     always_on_top = tracecall(always_on_top)
  298.     
  299.     def skins(self, event = None):
  300.         prefsdialog.show('appearance')
  301.  
  302.     skins = tracecall(skins)
  303.     
  304.     def show_menubar(self, event = None):
  305.         pref = 'buddylist.show_menubar'
  306.         self.update_bool_pref(pref)
  307.         if not common.profile.prefs[pref]:
  308.             wx.MessageBox(_('You can bring back the menubar by right clicking on the digsby icon in the task tray.'), _('Hide Menu Bar'))
  309.         
  310.  
  311.     show_menubar = tracecall(show_menubar)
  312.     
  313.     def show_status_panel(self, event = None):
  314.         self.update_bool_pref('buddylist.show_status')
  315.  
  316.     show_status_panel = tracecall(show_status_panel)
  317.     
  318.     def arrange_panels(self, event = None):
  319.         VisualListEditor = VisualListEditor
  320.         import gui.visuallisteditor
  321.         if VisualListEditor.RaiseExisting():
  322.             return None
  323.         buddylist = self.get_buddy_list_panel()
  324.         editor = VisualListEditor(buddylist, common.profile.prefs['buddylist.order'], buddylist_panel_names, (lambda l: common.setpref('buddylist.order', l)), _('Arrange Panels'))
  325.         editor.Show()
  326.  
  327.     arrange_panels = tracecall(arrange_panels)
  328.     
  329.     def show_mobile_contacts(self, event = None):
  330.         self.update_bool_pref('buddylist.show_mobile')
  331.  
  332.     show_mobile_contacts = tracecall(show_mobile_contacts)
  333.     
  334.     def show_offline_contacts(self, event = None):
  335.         self.update_bool_pref('buddylist.show_offline')
  336.  
  337.     show_offline_contacts = tracecall(show_offline_contacts)
  338.     
  339.     def group_offline_contacts(self, event = None):
  340.         self.update_bool_pref('buddylist.group_offline')
  341.  
  342.     group_offline_contacts = tracecall(group_offline_contacts)
  343.     
  344.     def hide_offline_groups(self, event = None):
  345.         self.update_bool_pref('buddylist.hide_offline_groups')
  346.  
  347.     hide_offline_groups = tracecall(hide_offline_groups)
  348.     
  349.     def sort_by(self, event):
  350.         if event.GetId() in sorts:
  351.             common.setpref('buddylist.sortby', sorts[event.GetId()] + ' none')
  352.         else:
  353.             prefsdialog.show('contact_list')
  354.  
  355.     sort_by = tracecall(sort_by)
  356.     
  357.     def show_preferences(self, event = None):
  358.         prefsdialog.show('accounts')
  359.  
  360.     show_preferences = tracecall(show_preferences)
  361.     
  362.     def show_file_transfer_history(self, event = None):
  363.         FileTransferDialog = FileTransferDialog
  364.         import gui.filetransfer
  365.         FileTransferDialog.Display()
  366.  
  367.     show_file_transfer_history = tracecall(show_file_transfer_history)
  368.     
  369.     def show_chat_history(self, event = None):
  370.         PastBrowser = PastBrowser
  371.         import gui.pastbrowser
  372.         PastBrowser.MakeOrShow()
  373.  
  374.     show_chat_history = tracecall(show_chat_history)
  375.     
  376.     def show_documentation(self, event = None):
  377.         wx.LaunchDefaultBrowser('http://wiki.digsby.com')
  378.  
  379.     show_documentation = tracecall(show_documentation)
  380.     
  381.     def show_support_forums(self, event = None):
  382.         wx.LaunchDefaultBrowser('http://forum.digsby.com')
  383.  
  384.     show_support_forums = tracecall(show_support_forums)
  385.     
  386.     def submit_bug_report(self, event = None):
  387.         do_diagnostic = do_diagnostic
  388.         import util.diagnostic
  389.         do_diagnostic()
  390.  
  391.     submit_bug_report = tracecall(submit_bug_report)
  392.     
  393.     def suggest_a_feature(self, event = None):
  394.         createEmail = createEmail
  395.         import gui.native.helpers
  396.         createEmail('mailto:features@digsby.com')
  397.  
  398.     suggest_a_feature = tracecall(suggest_a_feature)
  399.     
  400.     def show_debug_console(self, event = None):
  401.         wx.GetApp().toggle_crust()
  402.  
  403.     show_debug_console = tracecall(show_debug_console)
  404.     
  405.     def invite_your_friends(self, event = None):
  406.         wx.LaunchDefaultBrowser('http://www.digsby.com/invite')
  407.  
  408.     invite_your_friends = tracecall(invite_your_friends)
  409.  
  410.  
  411. def fire_action_event(action, target = None):
  412.     if not target:
  413.         target = wx.GetApp()
  414.     
  415.     if target:
  416.         event = wx.CommandEvent(wx.wxEVT_COMMAND_MENU_SELECTED, action)
  417.         target.ProcessEvent(event)
  418.     
  419.  
  420.