예제 #1
0
class ZMediaBlogPostDetailsPanel(ZAbstractDetailsPanel):

    def __init__(self, parent):
        self.imageContentProvider = ZMediaListViewContentProvider()

        ZAbstractDetailsPanel.__init__(self, parent)
    # end __init__()

    def _createWidgets(self):
        style = wx.LC_VIRTUAL | wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_HRULES | wx.NO_BORDER
        self.imageListView = ZListViewEx(self.imageContentProvider, self, style = style)
    # end _createWidgets()

    def _bindWidgetEvents(self):
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onActivated, self.imageListView)
        self.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.onRightClick, self.imageListView)
    # end _bindWidgetEvents()

    def _layoutWidgets(self):
        imageSBSizer = wx.BoxSizer(wx.HORIZONTAL)
        imageSBSizer.Add(self.imageListView, 1, wx.EXPAND)

        box = wx.BoxSizer(wx.VERTICAL)
        box.AddSizer(imageSBSizer, 1, wx.EXPAND)
        self.SetAutoLayout(True)
        self.SetSizer(box)
    # end _layoutWidgets()

    def onSelectionChanged(self, document):
        self.imageContentProvider.setDocument(document)
        self.imageListView.refresh()
    # end onSelectionChanged()

    def onActivated(self, event):
        url = self.imageListView.GetItemText(event.GetIndex())
        if url:
            context = ZImageActionContext(self, url)
            openAction = getApplicationModel().getActionRegistry().findAction(IZAppActionIDs.OPEN_IMAGE_ACTION)
            openAction.runAction(context)
        event.Skip
    # end onActivated()

    def onRightClick(self, event):
        url = self.imageListView.GetItemText(event.GetIndex())
        if url:
            context = ZImageActionContext(self, url)
            menuModel = ZImageMenuModel()
            menu = ZModelBasedMenu(menuModel, context, self)
            self.PopupMenu(menu)
            menu.Destroy()
        event.Skip()
예제 #2
0
class ZLinkBlogPostDetailsPanel(ZAbstractDetailsPanel):
    def __init__(self, parent):
        self.selectedLink = None
        self.document = None
        # FIXME (EPW) need to update the value of self.blog in onSelectionChanged()
        self.blog = None
        self.linkContentProvider = ZLinkListViewContentProvider()

        ZAbstractDetailsPanel.__init__(self, parent)

    # end __init__()

    def _createWidgets(self):
        style = wx.LC_VIRTUAL | wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_HRULES | wx.NO_BORDER
        self.linkListView = ZListViewEx(self.linkContentProvider,
                                        self,
                                        style=style)

    # end _createWidgets()

    def _bindWidgetEvents(self):
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.onSelected,
                  self.linkListView)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.onActivated,
                  self.linkListView)
        self.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.onRightClick,
                  self.linkListView)

        wx.EVT_SET_FOCUS(self.linkListView, self.onFocus)
        wx.EVT_KILL_FOCUS(self.linkListView, self.onUnFocus)

    # end _bindWidgetEvents()

    def _layoutWidgets(self):
        linkSBSizer = wx.BoxSizer(wx.HORIZONTAL)
        linkSBSizer.Add(self.linkListView, 1, wx.EXPAND)

        box = wx.BoxSizer(wx.VERTICAL)
        box.AddSizer(linkSBSizer, 1, wx.EXPAND)
        self.SetAutoLayout(True)
        self.SetSizer(box)

    # end _layoutWidgets()

    def onSelectionChanged(self, document):
        self.document = document
        self.selectedLink = None
        self.linkContentProvider.setDocument(document)
        self.linkListView.refresh()

    # end onSelectionChanged()

    def onSelected(self, event):
        link = self.linkContentProvider.getLink(event.GetIndex())
        self.selectedLink = link
        self._fireLinkSelectionEvent(link)
        event.Skip()

    # end onSelected()

    def onActivated(self, event):
        url = self.linkListView.GetItemText(event.GetIndex())
        if url:
            context = ZLinkActionContext(self, url)
            openLinkAction = getApplicationModel().getActionRegistry(
            ).findAction(IZAppActionIDs.OPEN_LINK_ACTION)
            openLinkAction.runAction(context)
        event.Skip

    # end onActivated()

    def onRightClick(self, event):
        url = self.linkListView.GetItemText(event.GetIndex())
        if url:
            context = ZLinkActionContext(self, url)
            menuModel = ZLinkMenuModel()
            menu = ZModelBasedMenu(menuModel, context, self)
            self.PopupMenu(menu)
            menu.Destroy()
        event.Skip()

    # end onRightClick()

    def onFocus(self, event):
        self._fireLinkSelectionEvent(self.selectedLink)
        event.Skip()

    # end onFocus()

    def onUnFocus(self, event):
        fireViewUnselectionEvent()
        event.Skip()

    # end onUnFocus()

    def _fireLinkSelectionEvent(self, link):
        if link:
            linkIDO = ZLinkIDO(None, self.document.getId(), link.getHref())
            linkSelection = ZLinkSelection(linkIDO, self.blog)
            fireViewSelectionEvent(linkSelection, None)