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)
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)
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()
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()