Ejemplo n.º 1
0
    def __init__(self):
        self.perspectives = self._loadPerspectives()
        self.perspectiveId = self._getStartupPerspective()
        self.perspective = self._createPerspective(self.perspectiveId)
        self.startupActions = self._loadStartupActions()
        self.shutdownActions = self._loadShutdownActions()
        self.iconBundle = getResourceRegistry().getIconBundle(ICON_IMAGES)
        self.trayIconPrefs = ZRavenTrayIconPrefsAccessor()
        self.trayIcon = None

        size = self._getWindowSize()
        pos = self._getWindowPos()
        ZBaseWindow.__init__(self, None, u"Zoundry Raven", size=size,
                             pos=pos)  #$NON-NLS-1$

        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        isMax = userPrefs.getUserPreferenceBool(
            IZBlogAppUserPrefsKeys.APPWIN_MAXIMIZED, False)
        if isMax:
            self.Maximize()

        self.SetIcons(self.iconBundle)
        self.Show(True)

        self._createTrayIcon()
        if self.trayIconPrefs.isAlwaysShowTrayIcon():
            self._showTrayIcon()

        self._registerAsSingletonListener()
        self._doCmdLineBlogThis()

        fireUIExecEvent(ZStartupActionRunner(self), self)
Ejemplo n.º 2
0
    def __init__(self):
        self.perspectives = self._loadPerspectives()
        self.perspectiveId = self._getStartupPerspective()
        self.perspective = self._createPerspective(self.perspectiveId)
        self.startupActions = self._loadStartupActions()
        self.shutdownActions = self._loadShutdownActions()
        self.iconBundle = getResourceRegistry().getIconBundle(ICON_IMAGES)
        self.trayIconPrefs = ZRavenTrayIconPrefsAccessor()
        self.trayIcon = None

        size = self._getWindowSize()
        pos = self._getWindowPos()
        ZBaseWindow.__init__(self, None, u"Zoundry Raven", size = size, pos = pos) #$NON-NLS-1$

        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        isMax = userPrefs.getUserPreferenceBool(IZBlogAppUserPrefsKeys.APPWIN_MAXIMIZED, False)
        if isMax:
            self.Maximize()

        self.SetIcons(self.iconBundle)
        self.Show(True)

        self._createTrayIcon()
        if self.trayIconPrefs.isAlwaysShowTrayIcon():
            self._showTrayIcon()

        self._registerAsSingletonListener()
        self._doCmdLineBlogThis()

        fireUIExecEvent(ZStartupActionRunner(self), self)
Ejemplo n.º 3
0
class ZRavenApplicationWindow(ZBaseWindow, IZSingletonServiceListener):

    def __init__(self):
        self.perspectives = self._loadPerspectives()
        self.perspectiveId = self._getStartupPerspective()
        self.perspective = self._createPerspective(self.perspectiveId)
        self.startupActions = self._loadStartupActions()
        self.shutdownActions = self._loadShutdownActions()
        self.iconBundle = getResourceRegistry().getIconBundle(ICON_IMAGES)
        self.trayIconPrefs = ZRavenTrayIconPrefsAccessor()
        self.trayIcon = None

        size = self._getWindowSize()
        pos = self._getWindowPos()
        ZBaseWindow.__init__(self, None, u"Zoundry Raven", size = size, pos = pos) #$NON-NLS-1$

        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        isMax = userPrefs.getUserPreferenceBool(IZBlogAppUserPrefsKeys.APPWIN_MAXIMIZED, False)
        if isMax:
            self.Maximize()

        self.SetIcons(self.iconBundle)
        self.Show(True)

        self._createTrayIcon()
        if self.trayIconPrefs.isAlwaysShowTrayIcon():
            self._showTrayIcon()

        self._registerAsSingletonListener()
        self._doCmdLineBlogThis()

        fireUIExecEvent(ZStartupActionRunner(self), self)
    # end __init__()

    def _registerAsSingletonListener(self):
        service = getApplicationModel().getService(IZBlogAppServiceIDs.SINGLETON_SERVICE_ID)
        service.addListener(self)
    # end _registerAsSingletonListener()

    def _doCmdLineBlogThis(self):
        blogThisInfo = checkCmdLineForBlogThis()
        if blogThisInfo is not None:
            self.onBlogThis(blogThisInfo)
    # end _doCmdLineBlogThis()

    def _loadStartupActions(self):
        pluginReg = getApplicationModel().getPluginRegistry()
        extensions = pluginReg.getExtensions(IZBlogAppExtensionPoints.ZEP_STARTUP_ACTION)
        return map(ZExtensionPointBaseDef, extensions)
    # end _loadStartupActions()

    def _loadShutdownActions(self):
        pluginReg = getApplicationModel().getPluginRegistry()
        extensions = pluginReg.getExtensions(IZBlogAppExtensionPoints.ZEP_SHUTDOWN_ACTION)
        return map(ZExtensionPointBaseDef, extensions)
    # end _loadShutdownActions()

    def _loadPerspectives(self):
        pluginReg = getApplicationModel().getPluginRegistry()
        extensions = pluginReg.getExtensions(IZBlogAppExtensionPoints.ZEP_ZOUNDRY_PERSPECTIVE)
        return map(ZPerspectiveDef, extensions)
    # end _loadPerspectives()

    def _createTrayIcon(self):
        self.trayIcon = ZRavenTrayIcon(self)
    # end _createTrayIcon()

    def _showTrayIcon(self):
        if not self.trayIcon.IsIconInstalled():
            self.trayIcon.SetIcon(self.iconBundle.GetIcon(wx.Size(16, 16)), _extstr(u"ZoundryRaven")) #$NON-NLS-1$
    # end _showTrayIcon()

    def _hideTrayIcon(self):
        if self.trayIcon.IsIconInstalled():
            self.trayIcon.RemoveIcon()
    # end _hideTrayIcon()

    def _destroyTrayIcon(self):
        self.trayIcon.Destroy()
        del self.trayIcon
    # end _destroyTrayIcon()

    # Gets the perspective def for the given ID.
    def _getPerspectiveDef(self, perspectiveId):
        for pdef in self.perspectives:
            if pdef.getId() == perspectiveId:
                return pdef
        return None
    # end _getPerspectiveDef()

    def _getStartupPerspective(self):
        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        return userPrefs.getUserPreference(IZBlogAppUserPrefsKeys.APPWIN_DEFAULT_PERSPECTIVE, PERSPECTIVE_DEFAULT)
    # end _getStartupPerspective()

    def _createPerspective(self, perspectiveId):
        pdef = self._getPerspectiveDef(perspectiveId)
        if not pdef:
            pdef = self._getPerspectiveDef(PERSPECTIVE_DEFAULT)
        if not pdef:
            raise ZBlogAppException(_extstr(u"appwindow.FailedToLoadDefaultPerspective")) #$NON-NLS-1$
        pclass = pdef.getClass()
        perspective = pclass()
        return perspective
    # end _createPerspective()

    def _getWindowSize(self):
        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        width = userPrefs.getUserPreferenceInt(IZBlogAppUserPrefsKeys.APPWIN_WIDTH, 800)
        height = userPrefs.getUserPreferenceInt(IZBlogAppUserPrefsKeys.APPWIN_HEIGHT, 600)

        if width < 100:
            width = 800
        if height < 100:
            width = 600

        return wx.Size(width, height)
    # end _getWindowSize()

    def _getWindowPos(self):
        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        posX = userPrefs.getUserPreferenceInt(IZBlogAppUserPrefsKeys.APPWIN_X, -1)
        posY = userPrefs.getUserPreferenceInt(IZBlogAppUserPrefsKeys.APPWIN_Y, -1)

        if posX < 0:
            posX = -1
        if posY < 0:
            posY = -1
        displaySize = wx.GetDisplaySize()
        if posX >= displaySize.GetWidth() - 50:
            posX = -1
        if posY >= displaySize.GetHeight() - 50:
            posY = -1

        if posX != -1 and posY != -1:
            return wx.Point(posX, posY)
        return wx.DefaultPosition
    # end _getWindowPos()

    def _createWidgets(self):
        self._createMenuBar()
        self._createStatusBar()
        self._createPerspectiveUI()
        self._createAcceleratorTable()
    # end _createWidgets()

    def _createMenuBar(self):
        # FIXME (EPW) this should be supplied by the perspective
        menuContext = ZMenuActionContext(self)
        menuBarModel = ZBlogAppMainMenuBarModel(self.perspectives)
        provider = ZModelBasedMenuContentProvider(menuBarModel, menuContext)
        eventHandler = ZModelBasedMenuEventHandler(menuBarModel, menuContext)
        self.menuBar = ZMenuBar(self, provider, eventHandler)
        self.SetMenuBar(self.menuBar)
    # end _createMenuBar()

    def _createStatusBar(self):
        # FIXME (EPW) this should be supplied by the perspective
        self.statusBar = self.CreateStatusBar()
#        self.statusBar = ZRavenApplicationStatusBar(self)
        self.SetStatusBar(self.statusBar)
    # end _createStatusBar()

    def _createPerspectiveUI(self):
        self.panel = self.perspective.createUIPanel(self)
    # end _createPerspectiveUI()

    def _createAcceleratorTable(self):
        self.acceleratorTable = ZRavenAppWindowAcceleratorTable()
        self.SetAcceleratorTable(self.acceleratorTable)
    # end _createAcceleratorTable()

    def _bindWidgetEvents(self):
        self.Bind(wx.EVT_CLOSE, self.onClose)
        self.Bind(wx.EVT_ICONIZE, self.onIconize)
        self.acceleratorTable.bindTo(self)
    # end _bindWidgetEvents()

    def getCurrentPerspectiveId(self):
        return self.perspectiveId
    # end getCurrentPerspectiveId()

    def onPerspectiveSwitch(self, perspectiveId):
        self.perspective.destroy()
        self.DestroyChildren()
        self.perspective = self._createPerspective(perspectiveId)
        self._createPerspectiveUI()
        self.perspectiveId = perspectiveId

        self._layoutWidgets()

        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        userPrefs.setUserPreference(IZBlogAppUserPrefsKeys.APPWIN_DEFAULT_PERSPECTIVE, perspectiveId)

        self.menuBar.refresh()
    # end onPerspectiveSwitch()

    def onIconize(self, event):
        if event.Iconized():
            if self.trayIconPrefs.isHideWhenMinimized():
                self._showTrayIcon()
                self.Show(False)
        else:
            self.Show(True)
        event.Skip()
    # end onIconize()

    def restoreFromMinimize(self):
        self.Show(True)
        self.Iconize(False)
        if not self.trayIconPrefs.isAlwaysShowTrayIcon():
            self._hideTrayIcon()
    # end restoreFromMinimize()

    def onClose(self, event):
        # Run all of the shutdown actions - if they all succeed, then exit.
        try:
            if self._runShutdownActions():
                self.perspective.destroy()
                self._destroyTrayIcon()
                event.Skip()
            else:
                event.Veto()
        except Exception, e:
            ZShowExceptionMessage(self, e)
            event.Skip()
Ejemplo n.º 4
0
class ZRavenApplicationWindow(ZBaseWindow, IZSingletonServiceListener):
    def __init__(self):
        self.perspectives = self._loadPerspectives()
        self.perspectiveId = self._getStartupPerspective()
        self.perspective = self._createPerspective(self.perspectiveId)
        self.startupActions = self._loadStartupActions()
        self.shutdownActions = self._loadShutdownActions()
        self.iconBundle = getResourceRegistry().getIconBundle(ICON_IMAGES)
        self.trayIconPrefs = ZRavenTrayIconPrefsAccessor()
        self.trayIcon = None

        size = self._getWindowSize()
        pos = self._getWindowPos()
        ZBaseWindow.__init__(self, None, u"Zoundry Raven", size=size,
                             pos=pos)  #$NON-NLS-1$

        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        isMax = userPrefs.getUserPreferenceBool(
            IZBlogAppUserPrefsKeys.APPWIN_MAXIMIZED, False)
        if isMax:
            self.Maximize()

        self.SetIcons(self.iconBundle)
        self.Show(True)

        self._createTrayIcon()
        if self.trayIconPrefs.isAlwaysShowTrayIcon():
            self._showTrayIcon()

        self._registerAsSingletonListener()
        self._doCmdLineBlogThis()

        fireUIExecEvent(ZStartupActionRunner(self), self)

    # end __init__()

    def _registerAsSingletonListener(self):
        service = getApplicationModel().getService(
            IZBlogAppServiceIDs.SINGLETON_SERVICE_ID)
        service.addListener(self)

    # end _registerAsSingletonListener()

    def _doCmdLineBlogThis(self):
        blogThisInfo = checkCmdLineForBlogThis()
        if blogThisInfo is not None:
            self.onBlogThis(blogThisInfo)

    # end _doCmdLineBlogThis()

    def _loadStartupActions(self):
        pluginReg = getApplicationModel().getPluginRegistry()
        extensions = pluginReg.getExtensions(
            IZBlogAppExtensionPoints.ZEP_STARTUP_ACTION)
        return map(ZExtensionPointBaseDef, extensions)

    # end _loadStartupActions()

    def _loadShutdownActions(self):
        pluginReg = getApplicationModel().getPluginRegistry()
        extensions = pluginReg.getExtensions(
            IZBlogAppExtensionPoints.ZEP_SHUTDOWN_ACTION)
        return map(ZExtensionPointBaseDef, extensions)

    # end _loadShutdownActions()

    def _loadPerspectives(self):
        pluginReg = getApplicationModel().getPluginRegistry()
        extensions = pluginReg.getExtensions(
            IZBlogAppExtensionPoints.ZEP_ZOUNDRY_PERSPECTIVE)
        return map(ZPerspectiveDef, extensions)

    # end _loadPerspectives()

    def _createTrayIcon(self):
        self.trayIcon = ZRavenTrayIcon(self)

    # end _createTrayIcon()

    def _showTrayIcon(self):
        if not self.trayIcon.IsIconInstalled():
            self.trayIcon.SetIcon(self.iconBundle.GetIcon(wx.Size(16, 16)),
                                  _extstr(u"ZoundryRaven"))  #$NON-NLS-1$

    # end _showTrayIcon()

    def _hideTrayIcon(self):
        if self.trayIcon.IsIconInstalled():
            self.trayIcon.RemoveIcon()

    # end _hideTrayIcon()

    def _destroyTrayIcon(self):
        self.trayIcon.Destroy()
        del self.trayIcon

    # end _destroyTrayIcon()

    # Gets the perspective def for the given ID.
    def _getPerspectiveDef(self, perspectiveId):
        for pdef in self.perspectives:
            if pdef.getId() == perspectiveId:
                return pdef
        return None

    # end _getPerspectiveDef()

    def _getStartupPerspective(self):
        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        return userPrefs.getUserPreference(
            IZBlogAppUserPrefsKeys.APPWIN_DEFAULT_PERSPECTIVE,
            PERSPECTIVE_DEFAULT)

    # end _getStartupPerspective()

    def _createPerspective(self, perspectiveId):
        pdef = self._getPerspectiveDef(perspectiveId)
        if not pdef:
            pdef = self._getPerspectiveDef(PERSPECTIVE_DEFAULT)
        if not pdef:
            raise ZBlogAppException(
                _extstr(
                    u"appwindow.FailedToLoadDefaultPerspective"))  #$NON-NLS-1$
        pclass = pdef.getClass()
        perspective = pclass()
        return perspective

    # end _createPerspective()

    def _getWindowSize(self):
        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        width = userPrefs.getUserPreferenceInt(
            IZBlogAppUserPrefsKeys.APPWIN_WIDTH, 800)
        height = userPrefs.getUserPreferenceInt(
            IZBlogAppUserPrefsKeys.APPWIN_HEIGHT, 600)

        if width < 100:
            width = 800
        if height < 100:
            width = 600

        return wx.Size(width, height)

    # end _getWindowSize()

    def _getWindowPos(self):
        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        posX = userPrefs.getUserPreferenceInt(IZBlogAppUserPrefsKeys.APPWIN_X,
                                              -1)
        posY = userPrefs.getUserPreferenceInt(IZBlogAppUserPrefsKeys.APPWIN_Y,
                                              -1)

        if posX < 0:
            posX = -1
        if posY < 0:
            posY = -1
        displaySize = wx.GetDisplaySize()
        if posX >= displaySize.GetWidth() - 50:
            posX = -1
        if posY >= displaySize.GetHeight() - 50:
            posY = -1

        if posX != -1 and posY != -1:
            return wx.Point(posX, posY)
        return wx.DefaultPosition

    # end _getWindowPos()

    def _createWidgets(self):
        self._createMenuBar()
        self._createStatusBar()
        self._createPerspectiveUI()
        self._createAcceleratorTable()

    # end _createWidgets()

    def _createMenuBar(self):
        # FIXME (EPW) this should be supplied by the perspective
        menuContext = ZMenuActionContext(self)
        menuBarModel = ZBlogAppMainMenuBarModel(self.perspectives)
        provider = ZModelBasedMenuContentProvider(menuBarModel, menuContext)
        eventHandler = ZModelBasedMenuEventHandler(menuBarModel, menuContext)
        self.menuBar = ZMenuBar(self, provider, eventHandler)
        self.SetMenuBar(self.menuBar)

    # end _createMenuBar()

    def _createStatusBar(self):
        # FIXME (EPW) this should be supplied by the perspective
        self.statusBar = self.CreateStatusBar()
        #        self.statusBar = ZRavenApplicationStatusBar(self)
        self.SetStatusBar(self.statusBar)

    # end _createStatusBar()

    def _createPerspectiveUI(self):
        self.panel = self.perspective.createUIPanel(self)

    # end _createPerspectiveUI()

    def _createAcceleratorTable(self):
        self.acceleratorTable = ZRavenAppWindowAcceleratorTable()
        self.SetAcceleratorTable(self.acceleratorTable)

    # end _createAcceleratorTable()

    def _bindWidgetEvents(self):
        self.Bind(wx.EVT_CLOSE, self.onClose)
        self.Bind(wx.EVT_ICONIZE, self.onIconize)
        self.acceleratorTable.bindTo(self)

    # end _bindWidgetEvents()

    def getCurrentPerspectiveId(self):
        return self.perspectiveId

    # end getCurrentPerspectiveId()

    def onPerspectiveSwitch(self, perspectiveId):
        self.perspective.destroy()
        self.DestroyChildren()
        self.perspective = self._createPerspective(perspectiveId)
        self._createPerspectiveUI()
        self.perspectiveId = perspectiveId

        self._layoutWidgets()

        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        userPrefs.setUserPreference(
            IZBlogAppUserPrefsKeys.APPWIN_DEFAULT_PERSPECTIVE, perspectiveId)

        self.menuBar.refresh()

    # end onPerspectiveSwitch()

    def onIconize(self, event):
        if event.Iconized():
            if self.trayIconPrefs.isHideWhenMinimized():
                self._showTrayIcon()
                self.Show(False)
        else:
            self.Show(True)
        event.Skip()

    # end onIconize()

    def restoreFromMinimize(self):
        self.Show(True)
        self.Iconize(False)
        if not self.trayIconPrefs.isAlwaysShowTrayIcon():
            self._hideTrayIcon()

    # end restoreFromMinimize()

    def onClose(self, event):
        # Run all of the shutdown actions - if they all succeed, then exit.
        try:
            if self._runShutdownActions():
                self.perspective.destroy()
                self._destroyTrayIcon()
                event.Skip()
            else:
                event.Veto()
        except Exception, e:
            ZShowExceptionMessage(self, e)
            event.Skip()