def resort(self, mock = False): assert on_thread('sorter').now rootgroups = [display_copy(g) for g in self.rootgroups if isinstance(g, GroupTypes)] self.personalities = self.track_personalities(rootgroups) metacontacts = self.safe_metacontacts(rootgroups) # Always collect metacontacts, but exit early here if sorting is paused. if self.sorting_paused:# or not profile.prefs_loaded: return metrics.event('Buddylist Sort') self._setup_blist_sorter() # invalidate all sorter knowledge of contacts. # results in more CPU usage, but until we put metacontact combining into the sorter # this might be necessary. self.new_sorter.removeAllContacts() newroots = rootgroups[:] + [metacontacts] for i, root in enumerate(newroots): root.name = "Root" + str(i) root._root = True root = DGroup('none', [], [], newroots) if mock: self.mock_root = make_mocklist(root) self.new_sorter.set_root(root) view = get_view_from_sorter(self.new_sorter) if getattr(self, '_search_by', ''): if len(view) > 0: contacts_group = view[0] # don't allow renaming, etc of the search "Contacts" group contacts_group._disallow_actions = True num_contacts = len(contacts_group) else: num_contacts = -1 self._search_results = self._search_results[1], num_contacts else: if pref('buddylist.hide_offline_dependant', False, bool): hide_offline_groups = not pref('buddylist.show_offline') and pref('buddylist.hide_offline_groups') else: hide_offline_groups = pref('buddylist.hide_offline_groups') if hide_offline_groups: view[:] = filter((lambda g: not offline_nonempty_group_re.match(g.display_string)), view) for g in view: remove_duplicate_contacts(g) self.add_search_entries(view) hooks.notify('buddylist.sorted', view) return view
def __init__(self, parent, initial_tab=default_selected_tab): wx.Frame.__init__(self, parent, title=_('Digsby Preferences'), size=self.default_size, style=prefs_dialog_style, name='Preferences Window') self.loaded_panels = {} self.SetMinSize(self.default_size) metrics.event('Prefs Dialog Opened') self.create_gui() self.bind_events() self.layout_gui() self.exithooks = Delegate() with traceguard: from gui import skin self.SetFrameIcon(skin.get('AppDefaults.TaskbarIcon')) if not wxMac: self.BackgroundColour = wx.WHITE self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.Bind(wx.EVT_PAINT, self.OnPaint) # Fake a first selection self.tabs.SetSelection(initial_tab) self.on_tab_selected(initial_tab) self.tabnames = names = [ module_name for module_name, nice_name in tabnames ] self.Bind(wx.EVT_CLOSE, self.on_close) self._loaded = 0 # Obey the windows.sticky prreference snap_pref(self) profile.prefs.add_observer(self.incoming_network_prefs) from gui.uberwidgets.keycatcher import KeyCatcher k = self._keycatcher = KeyCatcher(self) k.OnDown('ctrl+w', self.Close) k.OnDown('escape', self.Close)
def __init__(self, parent, initial_tab = default_selected_tab): wx.Frame.__init__(self, parent, title = _('Digsby Preferences'), size = self.default_size, style = prefs_dialog_style, name = 'Preferences Window') self.loaded_panels = {} self.SetMinSize(self.default_size) metrics.event('Prefs Dialog Opened') self.create_gui() self.bind_events() self.layout_gui() self.exithooks = Delegate() with traceguard: from gui import skin self.SetFrameIcon(skin.get('AppDefaults.TaskbarIcon')) if not wxMac: self.BackgroundColour = wx.WHITE self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.Bind(wx.EVT_PAINT, self.OnPaint) # Fake a first selection self.tabs.SetSelection(initial_tab) self.on_tab_selected(initial_tab) self.tabnames = names = [module_name for module_name, nice_name in tabnames] self.Bind(wx.EVT_CLOSE, self.on_close) self._loaded = 0 # Obey the windows.sticky prreference snap_pref(self) profile.prefs.add_observer(self.incoming_network_prefs) from gui.uberwidgets.keycatcher import KeyCatcher k = self._keycatcher = KeyCatcher(self) k.OnDown('ctrl+w', self.Close) k.OnDown('escape', self.Close)
def test_Context(self): log_data = StringIO.StringIO() handler = logging.StreamHandler(log_data) handler.setLevel(logging.INFO) handler.setFormatter(formatter) logger.addHandler(handler) start = time() with metrics.Context(a=5) as c: self.assertEquals(c['a'], 5) c['b'] = 6 self.assertEquals(c['b'], 6) with metrics.Timer('foo', d=7) as t: self.assertEquals(t['d'], 7) t['e'] = 8 self.assertEquals(t['e'], 8) self.assertEquals(len(metrics.context.events), 1) metrics.event('bar', f=9) self.assertEquals(len(metrics.context.events), 2) duration = time()-start logger.removeHandler(handler) data = json.loads(log_data.getvalue()) from pprint import pprint pprint(data) self.assertEquals(data['a'], 5) self.assertEquals(data['b'], 6) self.assertAlmostEquals(data['start'], start, 2) self.assertAlmostEquals(data['duration'], duration, 2) self.assertEquals(len(data['events']), 2) e0 = data['events'][0] self.assertAlmostEquals(e0['start'], start, 2) self.assertAlmostEquals(e0['duration'], duration, 2) self.assertEquals(e0['name'], 'foo') self.assertEquals(e0['d'], 7) self.assertEquals(e0['e'], 8) e1 = data['events'][1] self.assertAlmostEquals(e1['start'], start, 2) self.assertEquals(e1['name'], 'bar') self.assertEquals(e1['f'], 9)
def __init__(self, parent, initialContents = '', url = None): metrics.event('IE Window Created') iewin.IEHtmlWindow.__init__(self, parent, style = wx.NO_BORDER) self.OnNav = Delegate() # Called for NavigateComplete2 events self.OnBeforeNav = Delegate() # Called for Navigate2 events self.OnDoc = Delegate() # Called for DocumentComplete events # allow security popups to appear self._set_Silent(False) if url is not None: self.seturl = url assert isinstance(url, basestring) self.LoadUrl(url) else: s = initialContents or '' if s: self.SetPage(s)
def __init__(self, parent, pos = wx.DefaultPosition): wx.Panel.__init__(self, parent, pos = (-300, -300)) InstanceTracker.track(self) self.BackgroundStyle = wx.BG_STYLE_CUSTOM self.Sizer = BoxSizer(VERTICAL) self.showncontrol = None self.link_observers() self.construct_gui() self.setup_delegation() ImWinCtrl.__init__(self) imwinmenu.add_menus(self) metrics.event('IM Window Opened') self.UpdateSkin() self.IMControl.OnSelection += self.on_im_to_changed self.Bind(wx.EVT_SIZE, self.OnSize)
def on_state_change(self, state): log.info('on_state_change: %r', state) if state == 'online': self.change_state(self.Statuses.ONLINE) self._on_online.call_and_clear() elif state == 'autherror': self.set_offline(self.Reasons.BAD_PASSWORD) elif state == 'oautherror': if self._should_retry_oauth(): log.warning('negotiating new OAuth token') metrics.event('Twitter OAuth Refresh Token') self.Disconnect(set_state=False) self.oauth_token = None self.Connect() else: self.set_offline(self.Reasons.BAD_PASSWORD) elif state == 'connfail': self.set_offline(self.Reasons.CONN_FAIL) self.Disconnect(set_state=False)
def test_no_context(self): """Without a context, we shouldn't see any exceptions, although the log will complain.""" with metrics.Timer('foo') as t: pass metrics.event('bar')