Exemple #1
0
    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()
Exemple #2
0
    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()
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
    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()
Exemple #6
0
    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()
Exemple #7
0
    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()
Exemple #8
0
    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()
Exemple #9
0
 def on_show(e):
     # hiding the buddylist triggers paging out RAM
     e.Skip()
     if not e.GetShow(): memory_event()
Exemple #10
0
    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()
Exemple #11
0
 def on_show(e):
     # hiding the buddylist triggers paging out RAM
     e.Skip()
     if not e.GetShow(): memory_event()
Exemple #12
0
    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()