示例#1
0
文件: standard.py 项目: mpm2050/Raven
class ZStandardPerspective(IZPerspective):

    def __init__(self):
        self.currentViewSelection = None
        self.panel = None
        self.splitterWindow = None
        self.navView = None
        self.ctxView = None
        self.sizer = None
    # end __init__()

    def destroy(self):
        self._saveLayout()

        self.navView.destroy()
        self.ctxView.destroy()
    # end destroy()

    def createUIPanel(self, parent):
        self.panel = ZTransparentPanel(parent, wx.ID_ANY)
        self.splitterWindow = ZSplitterWindow(self.panel)

        self._createToolBar(self.panel)
        self._createNavigatorView(self.splitterWindow)
        self._createContextInfoView(self.splitterWindow)

        self._doSplit()

        self._bindViewEvents()

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.toolBar, 0, wx.EXPAND)
        self.sizer.Add(self.toolBarStaticLine, 0, wx.EXPAND)
        self.sizer.Add(self.splitterWindow, 1, wx.EXPAND | wx.ALL, 5)

        self.panel.SetAutoLayout(True)
        self.panel.SetSizer(self.sizer)

        self.panel.Layout()
        self._restoreLayout()
        return self.panel
    # end createUI()

    def _doSplit(self):
        self.splitterWindow.SplitVertically(self.navView, self.ctxView)
        self.splitterWindow.SetMinimumPaneSize(100)
        self.splitterWindow.SetSashSize(8)
        self.splitterWindow.SetSashGravity(0.0)
    # end _doSplit()

    def _createToolBar(self, parent):
        self.toolBarModel = self._createToolBarModel()
        self.toolBarContext = ZStandardPerspectiveToolBarActionContext(parent, self.currentViewSelection)
        contentProvider = ZModelBasedToolBarContentProvider(self.toolBarModel, self.toolBarContext)
        eventHandler = ZModelBasedToolBarEventHandler(self.toolBarModel, self.toolBarContext)
        self.toolBar = ZPersistentToolBar(self._getUserPrefsKey() + u".toolbar", contentProvider, eventHandler, parent, ZToolBar.STYLE_SHOW_TEXT) #$NON-NLS-1$
        self.toolBarStaticLine = wx.StaticLine(parent, wx.ID_ANY)
    # end _createToolBar()

    def _createToolBarModel(self):
        model = ZPluginToolBarModel(IZBlogAppToolBarIds.ZID_STANDARD_PERSPECTIVE_TOOLBAR)
        model.setDefaultToolSize(24)

        # 'Write' Tool
        toolId = model.addItemWithAction(_extstr(u"standard.Write"), 1, ZWriteToolBarAction()) #$NON-NLS-1$
        model.addToolBitmap(toolId, 24, getToolbarBitmap(24, u"file", u"write"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 32, getToolbarBitmap(32, u"file", u"write"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolDisabledBitmap(toolId, 24, getToolbarBitmap(24, u"file", u"write_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.addToolDisabledBitmap(toolId, 32, getToolbarBitmap(32, u"file", u"write_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.setToolDescription(toolId, _extstr(u"standard.Author_some_new_content_")) #$NON-NLS-1$

        # 'New Account' Tool
        toolId = model.addItemWithAction(_extstr(u"standard.AddAccount"), 3, ZNewAccountToolBarAction()) #$NON-NLS-1$
        model.addToolBitmap(toolId, 24, getToolbarBitmap(24, u"file", u"addAccount"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 32, getToolbarBitmap(32, u"file", u"addAccount"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.setToolDescription(toolId, _extstr(u"standard.AddAccountDescriton")) #$NON-NLS-1$

        # 'New Storage' Tool
        toolId = model.addItemWithAction(_extstr(u"standard.AddStorage"), 3, ZNewMediaStorageToolBarAction()) #$NON-NLS-1$
        model.addToolBitmap(toolId, 24, getToolbarBitmap(24, u"file", u"addStorage"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 32, getToolbarBitmap(32, u"file", u"addStorage"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.setToolDescription(toolId, _extstr(u"standard.AddStorageDescription")) #$NON-NLS-1$

        model.addSeparator(10)

        # 'Publish' Tool
        toolId = model.addItemWithAction(_extstr(u"standard.Publish"), 15, ZPublishToolBarAction()) #$NON-NLS-2$ #$NON-NLS-3$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 24, getToolbarBitmap(24, u"api", u"publish"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 32, getToolbarBitmap(32, u"api", u"publish"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolDisabledBitmap(toolId, 24, getToolbarBitmap(24, u"api", u"publish_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.addToolDisabledBitmap(toolId, 32, getToolbarBitmap(32, u"api", u"publish_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.setToolDescription(toolId, _extstr(u"standard.Publish_some_content_")) #$NON-NLS-1$

        # 'Download' Tool
        toolId = model.addDropDownItemWithAction(_extstr(u"standard.Download"), 20, ZDownloadToolBarAction()) #$NON-NLS-2$ #$NON-NLS-3$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 24, getToolbarBitmap(24, u"api", u"download"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 32, getToolbarBitmap(32, u"api", u"download"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolDisabledBitmap(toolId, 24, getToolbarBitmap(24, u"api", u"download_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.addToolDisabledBitmap(toolId, 32, getToolbarBitmap(32, u"api", u"download_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.setToolDescription(toolId, _extstr(u"standard.Download_content_")) #$NON-NLS-1$

        # 'View (online)' Tool
        toolId = model.addItemWithAction(_extstr(u"standard.ViewOnline"), 25, ZViewOnlineToolBarAction()) #$NON-NLS-1$
        model.addToolBitmap(toolId, 24, getToolbarBitmap(24, u"api", u"viewOnline"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 32, getToolbarBitmap(32, u"api", u"viewOnline"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolDisabledBitmap(toolId, 24, getToolbarBitmap(24, u"api", u"viewOnline_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.addToolDisabledBitmap(toolId, 32, getToolbarBitmap(32, u"api", u"viewOnline_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.setToolDescription(toolId, _extstr(u"standard.ViewOnlineDescription")) #$NON-NLS-1$

        model.addSeparator(50)

        # 'Delete' Tool
        toolId = model.addItemWithAction(_extstr(u"standard.Delete"), 55, ZDeleteToolBarAction()) #$NON-NLS-2$ #$NON-NLS-3$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 24, getToolbarBitmap(24, u"file", u"delete"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolBitmap(toolId, 32, getToolbarBitmap(32, u"file", u"delete"))  #$NON-NLS-2$ #$NON-NLS-1$
        model.addToolDisabledBitmap(toolId, 24, getToolbarBitmap(24, u"file", u"delete_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.addToolDisabledBitmap(toolId, 32, getToolbarBitmap(32, u"file", u"delete_disabled")) #$NON-NLS-1$ #$NON-NLS-2$
        model.setToolDescription(toolId, _extstr(u"standard.DeleteDescription")) #$NON-NLS-1$

        return model
    # end _createToolBarModel()

    def _createContextInfoView(self, parent):
        self.ctxView = ZContextInfoView(parent)
    # end _createContextInfoView()

    def _createNavigatorView(self, parent):
        self.navView = ZNavigatorView(parent)
    # end _createNavigatorView()

    def _bindViewEvents(self):
        self.toolBar.Bind(ZEVT_TOOLBAR_RESIZE, self.onToolBarResize, self.toolBar)
        ZEVT_VIEW_SELECTION_CHANGED(self.navView, self.onViewSelectionChanged)
    # end _bindViewEvents()

    def onToolBarResize(self, event):
        self.panel.Layout()
        self.panel.Refresh()
        event.Skip()
    # end onToolBarResize()

    def onViewSelectionChanged(self, event):
        self.toolBarContext.setViewSelection(event.getSelection())
        self.toolBar.refresh()
        event.Skip()
    # end onViewSelectionChanged()

    def _saveLayout(self):
        if self.panel.IsShown():
            key = self._getUserPrefsKey() + u".sash-width" #$NON-NLS-1$
            userPrefs = getApplicationModel().getUserProfile().getPreferences()
            userPrefs.setUserPreference(key, self.splitterWindow.GetSashPosition())
    # end _saveLayout()

    def _restoreLayout(self):
        key = self._getUserPrefsKey() + u".sash-width" #$NON-NLS-1$
        userPrefs = getApplicationModel().getUserProfile().getPreferences()
        sashPos = userPrefs.getUserPreferenceInt(key, 200)
        self.splitterWindow.SetSashPosition(sashPos)
    # end _restoreLayout()

    def _getUserPrefsKey(self):
        return IZBlogAppUserPrefsKeys.STANDARD_PERSPECTIVE_LAYOUT