Example #1
0
    def __init__(self, parent):
        self.indexService = getApplicationModel().getService(IZBlogAppServiceIDs.DOCUMENT_INDEX_SERVICE_ID)
        self.accountStore = getApplicationModel().getService(IZBlogAppServiceIDs.ACCOUNT_STORE_SERVICE_ID)
        self.model = ZContextInfoTagsModel(ZTagSearchFilter())

        self.tagCloudsView = None
        self.searchTextBox = None

        ZBoxedView.__init__(self, parent)

        self._registerAsIndexListener()
Example #2
0
    def refreshContent(self, selection):
        (accountId, blogId) = selection.getData()

        filter = ZTagSearchFilter()
        if blogId is not None:
            account = self.accountStore.getAccountById(accountId)
            self.blog = account.getBlogById(blogId)
            filter.setAccountIdCriteria(accountId)
            filter.setBlogIdCriteria(blogId)
        else:
            self.blog = None
            filter.setAccountIdCriteria(IZTagSearchFilter.UNPUBLISHED_ACCOUNT_ID)
            filter.setBlogIdCriteria(IZTagSearchFilter.UNPUBLISHED_BLOG_ID)

        self.model = ZContextInfoTagsModel(filter)
        self.tagCloudsView.setBlog(self.blog)
        self.tagCloudsView.setModel(self.model)
        self.tagCloudsView.refresh()
        fireViewUnselectionEvent()
Example #3
0
class ZTagsView(ZBoxedView, IZDocumentIndexListener):

    def __init__(self, parent):
        self.indexService = getApplicationModel().getService(IZBlogAppServiceIDs.DOCUMENT_INDEX_SERVICE_ID)
        self.accountStore = getApplicationModel().getService(IZBlogAppServiceIDs.ACCOUNT_STORE_SERVICE_ID)
        self.model = ZContextInfoTagsModel(ZTagSearchFilter())

        self.tagCloudsView = None
        self.searchTextBox = None

        ZBoxedView.__init__(self, parent)

        self._registerAsIndexListener()
    # end __init__()

    def getViewId(self):
        return IZViewIds.TAG_CLOUD_VIEW
    # end getViewId()

    def _getHeaderBitmap(self):
        return getResourceRegistry().getBitmap(u"images/perspectives/standard/tags.png") #$NON-NLS-1$
    # end _getHeaderBitmap()

    def _getHeaderLabel(self):
        return _extstr(u"tagsview.Tags") #$NON-NLS-1$
    # end _getHeaderLabel()

    def _createHeaderWidgets(self, parent, widgetList):
        choices = self._getSearchBoxChoices()
        bitmap = getResourceRegistry().getBitmap(u"images/perspectives/standard/contextinfo/linksview/search.png") #$NON-NLS-1$
        self.searchTextBox = ZAdvancedTextBox(parent, bitmap, choices, False)
        self.searchTextBox.setCurrentChoice(SEARCH_TAG)
        self.searchTextBox.SetSizeHints(220, -1)

        widgetList.append(self.searchTextBox)
    # end _createHeaderWidgets()

    def _createContentWidgets(self, parent):
        self.tagCloudsView = ZInfoTagCloudPanel(parent, self.model)
    # end _createContentWidgets()

    def _layoutContentWidgets(self):
        box = wx.BoxSizer(wx.VERTICAL)
        box.Add(self.tagCloudsView, 1, wx.EXPAND)
        return box
    # end _layoutContentWidgets()

    def _bindWidgetEvents(self):
        ZBoxedView._bindWidgetEvents(self)
        self.Bind(ZEVT_REFRESH, self.onZoundryRefresh, self)
        self.Bind(wx.EVT_TEXT_ENTER, self.onSearchText, self.searchTextBox)
        self.Bind(ZEVT_VIEW_SELECTION_CHANGED, self.onViewSelectionChanged)
    # end _bindWidgetEvents()

    def _getSearchBoxChoices(self):
        return [
                (u"Tag", None, SEARCH_TAG), #$NON-NLS-1$
        ]
    # end _getSearchBoxChoices()

    def onSearchText(self, event):
        self.model.setTagCriteria(event.GetString())
        self.model.refresh()
        self.tagCloudsView.refresh()
        self.onInvalidSelection()

        fireViewEvent(ZViewEvent(VIEWTAGSFILTERCHANGEDEVENT, self))
        event.Skip()
    # end onSearchText()

    def _updateModel(self, refreshData):
        (eventType, tagIDO) = refreshData
        shouldRefresh = False
        if eventType == IZDocIndexEvent.DOCINDEX_EVENTTYPE_ADD:
            shouldRefresh = self.model.addTag(tagIDO)
        elif eventType == IZDocIndexEvent.DOCINDEX_EVENTTYPE_REMOVE:
            shouldRefresh = self.model.removeTag(tagIDO)
        elif eventType == IZDocIndexEvent.DOCINDEX_EVENTTYPE_UPDATE:
            shouldRefresh = self.model.updateTag(tagIDO)
        return shouldRefresh
    # end _updateModel()

    def onIndexChange(self, event):
        if event.getDataType() == IZDocIndexEvent.DOCINDEX_DATATYPE_TAG:
            refreshData = (event.getEventType(), event.getTagIDO())
            fireRefreshEvent(self, refreshData)
    # end onIndexChange()

    def onZoundryRefresh(self, event): #@UnusedVariable
        if self._updateModel(event.getData()):
            self.tagCloudsView.refresh()
        event.Skip()
    # end onZoundryRefresh()

    def onInvalidSelection(self):
        pass
    # end onInvalidSelection()

    def onViewSelectionChanged(self, event):
        selection = event.getSelection()
        if selection.getType() == IZViewSelectionTypes.BLOG_TAGS_SELECTION:
            self.refreshContent(selection)
    # end onViewSelectionChanged()

    def refreshContent(self, selection):
        (accountId, blogId) = selection.getData()

        filter = ZTagSearchFilter()
        if blogId is not None:
            account = self.accountStore.getAccountById(accountId)
            self.blog = account.getBlogById(blogId)
            filter.setAccountIdCriteria(accountId)
            filter.setBlogIdCriteria(blogId)
        else:
            self.blog = None
            filter.setAccountIdCriteria(IZTagSearchFilter.UNPUBLISHED_ACCOUNT_ID)
            filter.setBlogIdCriteria(IZTagSearchFilter.UNPUBLISHED_BLOG_ID)

        self.model = ZContextInfoTagsModel(filter)
        self.tagCloudsView.setBlog(self.blog)
        self.tagCloudsView.setModel(self.model)
        self.tagCloudsView.refresh()
        fireViewUnselectionEvent()
    # end refreshContent()

    def destroy(self):
        self._unregisterAsIndexListener()
    # end destroy()

    def _registerAsIndexListener(self):
        self.indexService.addListener(self)
    # end _registerAsIndexListener()

    def _unregisterAsIndexListener(self):
        self.indexService.removeListener(self)