def on_close(self, e=None, exiting = False): ''' Window has been asked to close by the user. (Alt-F4 or the X button on Windows.) ''' log.info('BuddylistFrame.on_close') autohidden = False if not exiting: with traceguard: autohidden = self.maybe_undock() if not autohidden: saveWindowPos(self) # FIXME: It's probably better for us to set wx.App.SetExitOnFrameDelete based on the # setting of this pref. However, for that to work, we need to make sure wx.App.SetTopWindow # refers to this window once the splash screen is gone. if not exiting and pref('buddylist.close_button_exits', False): wx.GetApp().DigsbyCleanupAndQuit() else: self.Show(False) memory_event()
def on_close(self, e=None, exiting=False): ''' Window has been asked to close by the user. (Alt-F4 or the X button on Windows.) ''' log.info('BuddylistFrame.on_close') autohidden = False if not exiting: with traceguard: autohidden = self.maybe_undock() if not autohidden: saveWindowPos(self) # FIXME: It's probably better for us to set wx.App.SetExitOnFrameDelete based on the # setting of this pref. However, for that to work, we need to make sure wx.App.SetTopWindow # refers to this window once the splash screen is gone. if not exiting and pref('buddylist.close_button_exits', False): wx.GetApp().DigsbyCleanupAndQuit() else: self.Show(False) memory_event()
def CloseAndSaveState(self, e): # Confirm multiple tab close tabcount = self.GetTabCount() if e.CanVeto() and tabcount > 1 and pref(WARN_PREF, True): with CloseTabsDialog(self, tabcount, True) as diag: diag.CenterOnParent() res = diag.ShowModal() if not diag.WarnMe: setpref(WARN_PREF, False) if res == wx.ID_CANCEL: return False self.Hide() saveWindowPos(self, uniqueId = self.posId) # Save our window position # Call each IMWin's on_close method. if not config.nativeIMWindow: for page in self.notebook.Pages(): page.Children[0].on_close() memory_event() return True
def CloseAndSaveState(self, e): # Confirm multiple tab close tabcount = self.GetTabCount() if e.CanVeto() and tabcount > 1 and pref(WARN_PREF, True): with CloseTabsDialog(self, tabcount, True) as diag: diag.CenterOnParent() res = diag.ShowModal() if not diag.WarnMe: setpref(WARN_PREF, False) if res == wx.ID_CANCEL: return False self.Hide() saveWindowPos(self, uniqueId=self.posId) # Save our window position # Call each IMWin's on_close method. if not config.nativeIMWindow: for page in self.notebook.Pages(): page.Children[0].on_close() memory_event() return True
def on_iconize(self, e): # Catch a minimize event so that if we're not showing in the taskbar, # we can hide the frame. (Otherwise it collapses to a mini # window above the taskbar) if e.Iconized(): memory_event() if not self.OnTaskbar: self.maybe_undock() self.Hide()
def on_close(self, e): self.Hide() e.Skip() # will Destroy the dialog from common import profile profile.prefs.remove_observer(self.incoming_network_prefs) self.exithooks() for panel in self.loaded_panels.itervalues(): if hasattr(panel, 'on_close'): with traceguard: panel.on_close() profile.save('prefs') profile.save('notifications') from gui.native import memory_event memory_event()
def on_show(e): # hiding the buddylist triggers paging out RAM e.Skip() if not e.GetShow(): memory_event()
def __init__(self, pos = None, size = None, startMinimized = False, posId = ''): if pref('imwin.ads', type = bool, default = False): defaultSize = wx.Size(490, 470) else: defaultSize = wx.Size(470, 390) wininfo, placement = preLoadWindowPos(ImFrame.WindowName, uniqueId = posId, defaultPos = wx.Point(200, 200), defaultSize = defaultSize) wininfo['style'] |= wx.DEFAULT_FRAME_STYLE setPos = pos is not None setSize = size is not None if setPos or setSize: wininfo['style'] &= ~wx.MAXIMIZE if startMinimized: wininfo['style'] |= wx.ICONIZE self._starting_minimized = True # see comment in imhub.py's frame_show function wininfo['style'] |= wx.FULL_REPAINT_ON_RESIZE wx.Frame.__init__(self, parent = None, name = ImFrame.WindowName, **wininfo) self.on_engaged_start = Delegate() self.on_engaged_end = Delegate() self.on_sent_message = Delegate() # FIXME: Currently the IM window appearance is set by a load-time switch, as I want to first test # to ensure altering appearance.skin for Mac doesn't have other side-effects. if config.nativeIMWindow: import gui.imwin.imwin_native self.notebookPanel = gui.imwin.imwin_native.NativeNotebookPanel(self, -1) self.eventHandler = gui.imwin.imwin_native.NativeIMFrameEventHandler(self) else: preview = None if config.platform == 'win': preview = ImTabController self.notebookPanel = SkinnedNotebookPanel(self, -1, preview=preview) self.eventHandler = SkinnedIMFrameEventHandler(self) from gui.imwin.imwin_ads import construct_ad_panel ad_panel = construct_ad_panel(self, self.notebookPanel, self.notebookPanel.notebook.did_add) self.notebook.winman = TabWindowManager(lambda pos, size=None: ImFrame(pos = pos, size=size)) if placement is not None and not (setPos or setSize): with traceguard: from gui.toolbox import SetWindowPlacement SetWindowPlacement(self, placement) if setPos: self.Position = pos if setSize: self.Size = size if not config.nativeIMWindow: self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.posId = posId self.EnsureInScreen() if pos is not None: wx.CallAfter(self.EnsureNotStacked) # obey always on top and snapping prefs profile.prefs.link(IMWIN_ALWAYS_ON_TOP_PREF, self.on_always_on_top, callnow=not startMinimized) snap_pref(self) self.iconizecallbacks = set() Bind = self.Bind Bind(wx.EVT_ICONIZE, self.OnIconize) memory_event() def gainfocus(e): if e.Active: self._startengage() else: self._endengage() e.Skip() Bind(wx.EVT_ACTIVATE, gainfocus) self.register_hooks()
def __init__(self, pos=None, size=None, startMinimized=False, posId=''): if pref('imwin.ads', type=bool, default=False): defaultSize = wx.Size(490, 470) else: defaultSize = wx.Size(470, 390) wininfo, placement = preLoadWindowPos(ImFrame.WindowName, uniqueId=posId, defaultPos=wx.Point(200, 200), defaultSize=defaultSize) wininfo['style'] |= wx.DEFAULT_FRAME_STYLE setPos = pos is not None setSize = size is not None if setPos or setSize: wininfo['style'] &= ~wx.MAXIMIZE if startMinimized: wininfo['style'] |= wx.ICONIZE self._starting_minimized = True # see comment in imhub.py's frame_show function wininfo['style'] |= wx.FULL_REPAINT_ON_RESIZE wx.Frame.__init__(self, parent=None, name=ImFrame.WindowName, **wininfo) self.on_engaged_start = Delegate() self.on_engaged_end = Delegate() self.on_sent_message = Delegate() # FIXME: Currently the IM window appearance is set by a load-time switch, as I want to first test # to ensure altering appearance.skin for Mac doesn't have other side-effects. if config.nativeIMWindow: import gui.imwin.imwin_native self.notebookPanel = gui.imwin.imwin_native.NativeNotebookPanel( self, -1) self.eventHandler = gui.imwin.imwin_native.NativeIMFrameEventHandler( self) else: preview = None if config.platform == 'win': preview = ImTabController self.notebookPanel = SkinnedNotebookPanel(self, -1, preview=preview) self.eventHandler = SkinnedIMFrameEventHandler(self) from gui.imwin.imwin_ads import construct_ad_panel ad_panel = construct_ad_panel(self, self.notebookPanel, self.notebookPanel.notebook.did_add) self.notebook.winman = TabWindowManager( lambda pos, size=None: ImFrame(pos=pos, size=size)) if placement is not None and not (setPos or setSize): with traceguard: from gui.toolbox import SetWindowPlacement SetWindowPlacement(self, placement) if setPos: self.Position = pos if setSize: self.Size = size if not config.nativeIMWindow: self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) self.posId = posId self.EnsureInScreen() if pos is not None: wx.CallAfter(self.EnsureNotStacked) # obey always on top and snapping prefs profile.prefs.link(IMWIN_ALWAYS_ON_TOP_PREF, self.on_always_on_top, callnow=not startMinimized) snap_pref(self) self.iconizecallbacks = set() Bind = self.Bind Bind(wx.EVT_ICONIZE, self.OnIconize) memory_event() def gainfocus(e): if e.Active: self._startengage() else: self._endengage() e.Skip() Bind(wx.EVT_ACTIVATE, gainfocus) self.register_hooks()