home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 June / maximum-cd-2009-06.iso / DiscContents / digsby_setup.exe / lib / gui / app / mainMenuEvents.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-02-26  |  15.8 KB  |  441 lines

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