def show(self):
        '''Show application view.'''
        # Remove child widgets first.
        utils.containerRemoveAll(self.box)
        self.itemDict.clear()

        if self.appNum != 0:
            # Get application list.
            sortType = self.getSortTypeFunc()
            appList = self.getListFunc(
                self.category, sortType,
                (self.pageIndex - 1) * self.defaultRows,
                min(self.pageIndex * self.defaultRows, self.appNum))

            # Create application view.
            self.box.pack_start(self.createAppList(appList))

            # Create index view.
            indexbar = self.createIndexbar()
            if not indexbar == None:
                self.box.pack_start(indexbar)

            # Show all.
            self.box.show_all()

            # Request vote data.
            self.fetchVoteCallback(
                PAGE_REPO,
                map(lambda appInfo: utils.getPkgName(appInfo.pkg), appList))

        # Scroll ScrolledWindow to top after render.
        utils.scrollToTop(self.scrolledwindow)
def initActionStatus(appAdditionBox, progress, feedback):
    '''Init action status.'''
    APP_RIGHT_PADDING_X = 20
    PROGRESS_WIDTH = 170
    
    # Clean right box first.
    utils.containerRemoveAll(appAdditionBox)
    
    # Add progress.
    progressbar = drawProgressbar(PROGRESS_WIDTH)
    progressbar.setProgress(progress)
    appAdditionBox.pack_start(progressbar.box)
    
    # Alignment box.
    alignBox = gtk.HBox()
    alignBox.set_size_request(ACTION_BUTTON_WIDTH, -1)
    appAdditionBox.pack_start(alignBox, False, False, ACTION_BUTTON_PADDING_X)
    
    # Add feedback label.
    feedbackLabel = gtk.Label()
    feedbackLabel.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, feedback))
    feedbackLabel.set_ellipsize(pango.ELLIPSIZE_END)
    feedbackLabel.set_alignment(0.5, 0.5)
    alignBox.pack_start(feedbackLabel)
    
    return (progressbar, feedbackLabel)
def initActionStatus(appAdditionBox, progress, feedback, withoutBorder=False):
    '''Init action status.'''
    APP_RIGHT_PADDING_X = 20
    PROGRESS_WIDTH = 170

    # Clean right box first.
    utils.containerRemoveAll(appAdditionBox)

    # Add progress.
    if withoutBorder:
        progressbar = drawProgressbarWithoutBorder(PROGRESS_WIDTH)
    else:
        progressbar = drawProgressbar(PROGRESS_WIDTH)
    progressbar.setProgress(progress)
    appAdditionBox.pack_start(progressbar.box)

    # Alignment box.
    alignBox = gtk.HBox()
    alignBox.set_size_request(ACTION_BUTTON_WIDTH, -1)
    appAdditionBox.pack_start(alignBox, False, False, ACTION_BUTTON_PADDING_X)

    # Add feedback label.
    feedbackLabel = gtk.Label()
    feedbackLabel.set_markup("<span size='%s'>%s</span>" %
                             (LABEL_FONT_SIZE, feedback))
    feedbackLabel.set_ellipsize(pango.ELLIPSIZE_END)
    feedbackLabel.set_alignment(0.5, 0.5)
    alignBox.pack_start(feedbackLabel)

    return (progressbar, feedbackLabel)
 def show(self, scrollToTop=True):
     '''Show application view.'''
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     self.itemDict.clear()
     
     if self.appNum != 0:
         # Get application list.
         appList = self.getListFunc((self.pageIndex - 1) * self.defaultRows,
                                    min(self.pageIndex * self.defaultRows, self.appNum)
                                    )
         
         # Create application view.
         self.box.pack_start(self.createAppList(appList))
         
         # Create index view.
         indexbar = self.createIndexbar()
         if not indexbar == None:
             self.box.pack_start(indexbar)
             
         self.box.show_all()
         
         # Request vote data.
         self.fetchVoteCallback(
             self.pageId, 
             map (lambda appInfo: utils.getPkgName(appInfo.pkg), appList),
             self.isSearchPage)
         
     # Scroll ScrolledWindow to top after render.
     if scrollToTop:
         utils.scrollToTop(self.scrolledwindow)
 def initNormalStatus(self):
     '''Init normal status.'''
     pkg = self.appInfo.pkg
     
     # Clean right box first.
     utils.containerRemoveAll(self.appAdditionBox)
     
     # Add application vote information.
     self.appVoteView = VoteView(
         self.appInfo, PAGE_UPGRADE, 
         self.sendVoteCallback)
     self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)
     
     # Add application size.
     size = utils.getPkgSize(pkg)
     appSize = gtk.Label()
     appSize.set_size_request(self.SIZE_LABEL_WIDTH, -1)
     appSize.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, utils.formatFileSize(size)))
     appSize.set_alignment(1.0, 0.5)
     self.appAdditionBox.pack_start(appSize, False, False, self.APP_RIGHT_PADDING_X)
     
     # Add ignore button.
     (ignoreLabel, ignoreEventBox) = setDefaultClickableDynamicLabel(
         __("Notify again"),
         "appIgnore",
         )
     ignoreEventBox.connect("button-press-event", 
                            lambda w, e: self.removeIgnorePkgCallback([utils.getPkgName(pkg)]))
     
     ignoreLabelPaddingX = 30
     ignoreAlign = gtk.Alignment()
     ignoreAlign.set(0.0, 0.5, 0.0, 0.0)
     ignoreAlign.set_padding(0, 0, ignoreLabelPaddingX, ignoreLabelPaddingX)
     ignoreAlign.add(ignoreEventBox)
     self.appAdditionBox.pack_start(ignoreAlign, False, False)
 def selectPage(self, pageId):
     '''Select recommend page.'''
     utils.containerRemoveAll(self.contentBox)
     
     self.navigatebar.pageId = pageId
     self.navigatebar.box.queue_draw()
     
     if self.detailViewDict.has_key(pageId):
         child = self.detailViewDict[pageId].scrolledWindow
     elif self.searchViewDict.has_key(pageId):
         child = self.searchViewDict[pageId].box
     else:
         if pageId == PAGE_RECOMMEND:
             child = self.recommendPage.scrolledwindow
         elif pageId == PAGE_REPO:
             child = self.repoPage.box
         elif pageId == PAGE_UPGRADE:
             child = self.updatePage.box
         elif pageId == PAGE_UNINSTALL:
             child = self.uninstallPage.box
         elif pageId == PAGE_COMMUNITY:
             child = self.communityPage.box
         else: 
             child = self.morePage.box
     
     self.contentBox.pack_start(child)
     self.contentBox.show_all()
 def initNormalStatus(self):
     '''Init normal status.'''
     pkg = self.appInfo.pkg
         
     # Clean right box first.
     utils.containerRemoveAll(self.appAdditionBox)
     
     # Add application installed size.
     size = utils.getPkgInstalledSize(pkg)
     appSize = gtk.Label()
     appSize.set_size_request(self.SIZE_LABEL_WIDTH, -1)
     appSize.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, utils.formatFileSize(size)))
     appSize.set_alignment(1.0, 0.5)
     self.appAdditionBox.pack_start(appSize, False, False, self.APP_RIGHT_PADDING_X)
     
     # Add application vote information.
     self.appVoteView = VoteView(
         self.appInfo, PAGE_UNINSTALL, 
         self.entryDetailCallback, 
         self.sendVoteCallback)
     self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)
     
     # Add action button.
     (actionButtonBox, actionButtonAlign) = createActionButton()
     self.appAdditionBox.pack_start(actionButtonAlign, False, False)
     
     if self.confirmUninstall:
         appUninstallLabel = gtk.Label()
         appUninstallLabel.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, "你确定要卸载吗?"))
         actionButtonBox.pack_start(appUninstallLabel, False, False)
         
         appUninstallBox = gtk.HBox()
         appUninstallAlign = gtk.Alignment()
         appUninstallAlign.set(0.5, 0.5, 1.0, 1.0)
         appUninstallAlign.set_padding(ACTION_BUTTON_PADDING_Y, ACTION_BUTTON_PADDING_Y, 0, 0)
         appUninstallAlign.add(appUninstallBox)
         actionButtonBox.pack_start(appUninstallAlign, False, False)
         
         (appConfirmButton, appConfirmAlign) = newActionButton(
             "uninstall_confirm", 0.0, 0.5, 
             "cell", False, "卸载", BUTTON_FONT_SIZE_SMALL
             )
         appConfirmButton.connect("button-release-event", lambda widget, event: self.switchToUninstalling())
         
         (appCancelButton, appCancelAlign) = newActionButton(
             "uninstall_confirm", 1.0, 0.5, 
             "cell", False, "取消", BUTTON_FONT_SIZE_SMALL
             )
         appCancelButton.connect("button-release-event", lambda widget, event: self.switchToNormal(False))
         
         appUninstallBox.pack_start(appConfirmAlign)
         appUninstallBox.pack_start(appCancelAlign)
     else:
         (appUninstallBox, appUninstallAlign) = newActionButton(
             "uninstall", 0.5, 0.5,
             "cell", False, "卸载", BUTTON_FONT_SIZE_SMALL
             )
         appUninstallBox.connect("button-release-event", lambda widget, event: self.switchToNormal(True))
         actionButtonBox.pack_start(appUninstallAlign)
 def show(self, scrollToTop=True):
     '''Show application view.'''
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     self.itemDict.clear()
     
     # If i don't re-connect self.eventbox and self.box,
     # update view will show nothing.
     # I still can't understand why?
     # Maybe this is bug of GtkEventBox?
     utils.containerRemoveAll(self.eventbox)
     self.eventbox.add(self.box)
     
     if self.appNum == 0:
         notifyBox = gtk.HBox()
         notifyAlign = gtk.Alignment()
         notifyAlign.set(0.5, 0.5, 0.0, 0.0)
         notifyAlign.add(notifyBox)
         self.box.pack_start(notifyAlign)
         
         notifyIconAlignX = 5
         notifyIcon = gtk.image_new_from_file("./icons/update/smile.gif")
         notifyIconAlign = gtk.Alignment()
         notifyIconAlign.set(0.5, 1.0, 0.0, 0.0)
         notifyIconAlign.set_padding(0, 0, notifyIconAlignX, notifyIconAlignX)
         notifyIconAlign.add(notifyIcon)
         notifyBox.pack_start(notifyIconAlign)
         
         notifyLabel = gtk.Label()
         notifyLabel.set_markup("<span foreground='#1A38EE' size='%s'>%s</span>" % (LABEL_FONT_XX_LARGE_SIZE, "你的系统已经是最新的. :)"))
         notifyBox.pack_start(notifyLabel, False, False)
         
         self.box.show_all()
     else:
         # Get application list.
         appList = self.getListFunc(
             (self.pageIndex - 1) * self.defaultRows,
             min(self.pageIndex * self.defaultRows, self.appNum)
             )
         
         # Create application view.
         self.box.pack_start(self.createAppList(appList))
         
         # Create index view.
         indexbar = self.createIndexbar()
         if not indexbar == None:
             self.box.pack_start(indexbar)
             
         self.box.show_all()
         
         # Request vote data.
         self.fetchVoteCallback(
             PAGE_UPGRADE, 
             map (lambda appInfo: utils.getPkgName(appInfo.pkg), appList))
         
     # Scroll ScrolledWindow to top after render.
     if scrollToTop:
         utils.scrollToTop(self.scrolledwindow)
 def show(self):
     '''Show application view.'''
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     self.itemDict.clear()
     
     if self.appNum == 0:
         if (getDefaultLanguage() == "default"):
             paddingX = 10
         else:
             paddingX = 45
         
         notifyBox = gtk.VBox()
         notifyAlign = gtk.Alignment()
         notifyAlign.set(0.5, 0.5, 0.0, 0.0)
         notifyAlign.add(notifyBox)
         self.box.pack_start(notifyAlign)
         
         tipImage = gtk.image_new_from_pixbuf(
             gtk.gdk.pixbuf_new_from_file("../icon/tips/%s/downloadTip.png" % (getDefaultLanguage())))
         tipAlign = gtk.Alignment()
         tipAlign.set_padding(0, 0, paddingX, 0)
         tipAlign.add(tipImage)
         notifyBox.pack_start(tipAlign)
         
         penguinImage = gtk.image_new_from_pixbuf(
             gtk.gdk.pixbuf_new_from_file("../icon/tips/penguin.png"))
         penguinAlign = gtk.Alignment()
         penguinAlign.set_padding(0, 0, 0, paddingX)
         penguinAlign.add(penguinImage)
         notifyBox.pack_start(penguinAlign)
         
         self.box.show_all()
     else:
         # Get application list.
         appList = self.getListFunc(
             (self.pageIndex - 1) * self.defaultRows,
             min(self.pageIndex * self.defaultRows, self.appNum)
             )
         
         # Create application view.
         self.box.pack_start(self.createAppList(appList))
         
         # Create index view.
         indexbar = self.createIndexbar()
         if not indexbar == None:
             self.box.pack_start(indexbar)
         
         # Show all.
         self.box.show_all()
         
         # Request vote data.
         self.fetchVoteCallback(
             PAGE_DOWNLOAD_MANAGE, 
             map (lambda appInfo: utils.getPkgName(appInfo.pkg), appList))
         
     # Scroll ScrolledWindow to top after render.
     utils.scrollToTop(self.scrolledwindow)
 def show(self):
     '''Show application view.'''
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     self.itemDict.clear()
     
     if self.appNum == 0:
         if (getDefaultLanguage() == "default"):
             paddingX = 10
         else:
             paddingX = 45
         
         notifyBox = gtk.VBox()
         notifyAlign = gtk.Alignment()
         notifyAlign.set(0.5, 0.5, 0.0, 0.0)
         notifyAlign.add(notifyBox)
         self.box.pack_start(notifyAlign)
         
         tipImage = gtk.image_new_from_pixbuf(
             gtk.gdk.pixbuf_new_from_file("../icon/tips/%s/downloadTip.png" % (getDefaultLanguage())))
         tipAlign = gtk.Alignment()
         tipAlign.set_padding(0, 0, paddingX, 0)
         tipAlign.add(tipImage)
         notifyBox.pack_start(tipAlign)
         
         penguinImage = gtk.image_new_from_pixbuf(
             gtk.gdk.pixbuf_new_from_file("../icon/tips/penguin.png"))
         penguinAlign = gtk.Alignment()
         penguinAlign.set_padding(0, 0, 0, paddingX)
         penguinAlign.add(penguinImage)
         notifyBox.pack_start(penguinAlign)
         
         self.box.show_all()
     else:
         # Get application list.
         appList = self.getListFunc(
             (self.pageIndex - 1) * self.defaultRows,
             min(self.pageIndex * self.defaultRows, self.appNum)
             )
         
         # Create application view.
         self.box.pack_start(self.createAppList(appList))
         
         # Create index view.
         indexbar = self.createIndexbar()
         if not indexbar == None:
             self.box.pack_start(indexbar)
         
         # Show all.
         self.box.show_all()
         
         # Request vote data.
         self.fetchVoteCallback(
             PAGE_DOWNLOAD_MANAGE, 
             map (lambda appInfo: utils.getPkgName(appInfo.pkg), appList))
         
     # Scroll ScrolledWindow to top after render.
     utils.scrollToTop(self.scrolledwindow)
    def drawFocusInit(self):
        '''Draw focus out.'''
        # Remove child first.
        utils.containerRemoveAll(self.starBox)

        # Add waiting label.
        waitingVoteLabel = gtk.Label()
        waitingVoteLabel.set_markup("")
        self.starBox.pack_start(waitingVoteLabel)
 def drawFocusInit(self):
     '''Draw focus out.'''
     # Remove child first.
     utils.containerRemoveAll(self.starBox)
     
     # Add waiting label.
     waitingVoteLabel = gtk.Label()
     waitingVoteLabel.set_markup("")
     self.starBox.pack_start(waitingVoteLabel)
 def drawFocusInit(self):
     '''Draw focus out.'''
     # Remove child first.
     utils.containerRemoveAll(self.starBox)
     utils.containerRemoveAll(self.voteBox)
     
     # Add waiting label.
     waitingVoteLabel = gtk.Label()
     waitingVoteLabel.set_markup("<span foreground='#1A3E88' size='%s'>读取评论数据...</span>" % (LABEL_FONT_SIZE))
     self.starBox.pack_start(waitingVoteLabel)
 def drawFocusStar(self):
     '''Draw focus star status.'''
     # Remove child first.
     utils.containerRemoveAll(self.starBox)
     utils.containerRemoveAll(self.voteBox)
     
     # Add application vote star.
     self.starView = StarView()
     self.starBox.pack_start(self.starView.eventbox)
     self.starView.eventbox.connect("button-press-event", lambda w, e: self.sendVote())
     self.starView.eventbox.connect("button-press-event", lambda w, e: self.switchFocusStatus(self.FOCUS_NORMAL))
 def updateIgnoreNum(self, ignoreNum):
     '''Update ignore number label.'''
     utils.containerRemoveAll(self.ignoreNumBox)
     
     if ignoreNum > 0:
         (ignoreLabel, ignoreEventBox) = setDefaultClickableDynamicLabel(
             __("No Notify UpdatePage") % (ignoreNum),
             "topbarButton",
             )
         ignoreEventBox.connect("button-press-event", lambda w, e: self.showIgnorePageCallback())
         self.ignoreNumBox.add(ignoreEventBox)
         self.ignoreNumBox.show_all()
    def initDownloadPauseStatus(self,
                                appAdditionBox,
                                withoutBorder=False,
                                color=None):
        if (color == None):
            color = appTheme.getDynamicColor("statusUpdate").getColor()
        '''Init download pause status.'''
        # Clean right box first.
        utils.containerRemoveAll(appAdditionBox)

        # Add progress.
        progress = self.appInfo.downloadingProgress
        if withoutBorder:
            progressbar = drawProgressbarWithoutBorder(self.PROGRESS_WIDTH)
        else:
            progressbar = drawProgressbar(self.PROGRESS_WIDTH)
        progressbar.setProgress(progress)
        appAdditionBox.pack_start(progressbar.box)

        # Alignment box.
        (actionBox, actionAlign) = createActionButton()
        appAdditionBox.pack_start(actionAlign)

        # Add play icon.
        buttonBox = gtk.HBox()
        buttonAlign = gtk.Alignment()
        buttonAlign.set(0.5, 0.5, 0.0, 0.0)
        buttonAlign.set_padding(ACTION_BUTTON_PADDING_Y,
                                ACTION_BUTTON_PADDING_Y, 0, 0)
        buttonAlign.add(buttonBox)
        actionBox.pack_start(buttonAlign)

        continueIcon = gtk.Button()
        drawSimpleButton(continueIcon, "continue")
        continueIcon.connect("button-release-event",
                             lambda widget, event: self.switchToDownloading())
        buttonBox.pack_start(continueIcon, False, False, self.BUTTON_PADDING_X)

        # Add stop icon.
        stopIcon = gtk.Button()
        drawSimpleButton(stopIcon, "stop")
        stopIcon.connect("button-release-event",
                         lambda widget, event: self.switchToNormal())
        buttonBox.pack_start(stopIcon, False, False, self.BUTTON_PADDING_X)

        # Add pause label.
        pauseLabel = gtk.Label()
        pauseLabel.set_markup("<span foreground='%s' size='%s'>%s</span>" %
                              (color, LABEL_FONT_SIZE, __("Action Pause")))
        pauseLabel.set_width_chars(self.PROGRESS_LABEL_WIDTH_CHARS)
        pauseLabel.set_ellipsize(pango.ELLIPSIZE_END)
        pauseLabel.set_alignment(0.5, 0.5)
        actionBox.pack_start(pauseLabel)
 def updateSubCategorybar(self, category, categoryList):
     '''Update sub category bar.'''
     # Update value.
     self.category = category
     self.categoryList = categoryList
     
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     
     # Show sub-category bar.
     rect = self.box.get_allocation()
     self.showSubCategorybar(rect.width)
    def updateIgnoreNum(self, ignoreNum):
        '''Update ignore number label.'''
        utils.containerRemoveAll(self.ignoreNumBox)

        if ignoreNum > 0:
            (ignoreLabel, ignoreEventBox) = setDefaultClickableDynamicLabel(
                __("No Notify UpdatePage") % (ignoreNum),
                "topbarButton",
            )
            ignoreEventBox.connect("button-press-event",
                                   lambda w, e: self.showIgnorePageCallback())
            self.ignoreNumBox.add(ignoreEventBox)
            self.ignoreNumBox.show_all()
 def drawFocusNormal(self):
     '''Draw focus normal status.'''
     # Remove child first.
     utils.containerRemoveAll(self.starBox)
     utils.containerRemoveAll(self.voteBox)
     
     # Add application vote star.
     starBox = createStarBox(self.starLevel, self.starSize)
     
     self.starBox.pack_start(starBox)
     
     self.voteLabel = gtk.Label()
     self.voteLabel.set_markup("<span foreground='#1A3E88' size='%s'>评分</span>" % (LABEL_FONT_SIZE))
     self.voteEventBox = gtk.EventBox()
     self.voteEventBox.set_visible_window(False)
     self.voteEventBox.add(self.voteLabel)
     self.voteEventBox.connect("button-press-event", lambda w, e: self.switchFocusStatus(self.FOCUS_STAR))
     self.voteBox.pack_start(self.voteEventBox)
     utils.setClickableLabel(
         self.voteEventBox,
         self.voteLabel,
         "<span foreground='#1A3E88' size='%s'>评分</span>" % (LABEL_FONT_SIZE),
         "<span foreground='#0084FF' size='%s'>评分</span>" % (LABEL_FONT_SIZE))
     
     self.rate = gtk.Label()
     self.rateEventBox = gtk.EventBox()
     self.rateEventBox.set_visible_window(False)
     self.rateEventBox.add(self.rate)
     self.rateEventBox.connect("button-press-event", 
                          lambda w, e: self.entryDetailCallback(self.pageId, self.appInfo))
     rateAlign = gtk.Alignment()
     rateAlign.set(1.0, 0.5, 0.0, 0.0)
     rateAlign.add(self.rateEventBox)
     self.voteBox.pack_start(rateAlign)
     
     if self.voteNum == 0:
         self.rate.set_markup("<span foreground='#1A3E88' size='%s'>抢沙发!</span>" % (LABEL_FONT_SIZE))
         
         utils.setClickableLabel(
             self.rateEventBox,
             self.rate,
             "<span foreground='#1A3E88' size='%s'>抢沙发!</span>" % (LABEL_FONT_SIZE),
             "<span foreground='#0084FF' size='%s'>抢沙发!</span>" % (LABEL_FONT_SIZE))
     else:
         self.rate.set_markup("<span foreground='#1A3E88' size='%s'>%s 评论</span>" % (LABEL_FONT_SIZE, self.voteNum))
         
         utils.setClickableLabel(
             self.rateEventBox,
             self.rate,
             "<span foreground='#1A3E88' size='%s'>%s 评论</span>" % (LABEL_FONT_SIZE, self.voteNum),
             "<span foreground='#0084FF' size='%s'>%s 评论</span>" % (LABEL_FONT_SIZE, self.voteNum))
    def initDownloadingStatus(self, appAdditionBox, withoutBorder=False):
        '''Init downloading status.'''
        # Clean right box first.
        utils.containerRemoveAll(appAdditionBox)

        # Add progress.
        progress = self.appInfo.downloadingProgress
        if withoutBorder:
            progressbar = drawProgressbarWithoutBorder(self.PROGRESS_WIDTH)
        else:
            progressbar = drawProgressbar(self.PROGRESS_WIDTH)
        progressbar.setProgress(progress)
        self.downloadingProgressbar = progressbar
        appAdditionBox.pack_start(progressbar.box)

        # Alignment box.
        (actionBox, actionAlign) = createActionButton()
        appAdditionBox.pack_start(actionAlign)

        # Add pause icon.
        buttonBox = gtk.HBox()
        buttonAlign = gtk.Alignment()
        buttonAlign.set(0.5, 0.5, 0.0, 0.0)
        buttonAlign.set_padding(ACTION_BUTTON_PADDING_Y,
                                ACTION_BUTTON_PADDING_Y, 0, 0)
        buttonAlign.add(buttonBox)
        actionBox.pack_start(buttonAlign)

        pauseIcon = gtk.Button()
        drawSimpleButton(pauseIcon, "pause")
        pauseIcon.connect("button-release-event",
                          lambda widget, event: self.switchToDownloadPause())
        buttonBox.pack_start(pauseIcon, False, False, self.BUTTON_PADDING_X)

        # Add stop icon.
        stopIcon = gtk.Button()
        drawSimpleButton(stopIcon, "stop")
        stopIcon.connect("button-release-event",
                         lambda widget, event: self.switchToNormal())
        buttonBox.pack_start(stopIcon, False, False, self.BUTTON_PADDING_X)

        # Add feedback label.
        feedbackLabel = gtk.Label()
        feedbackLabel.set_markup(
            "<span size='%s'>%s</span>" %
            (LABEL_FONT_SIZE, self.appInfo.downloadingFeedback))
        feedbackLabel.set_width_chars(self.PROGRESS_LABEL_WIDTH_CHARS)
        feedbackLabel.set_ellipsize(pango.ELLIPSIZE_END)
        feedbackLabel.set_alignment(0.5, 0.5)
        self.downloadingFeedbackLabel = feedbackLabel
        actionBox.pack_start(feedbackLabel)
 def onSizeAllocate(self, width):
     '''Call when signal 'size-allocate' emit.'''
     # When first time redraw, remove child and reset width. 
     if self.redrawCount == 0:
         self.redrawCount = self.redrawCount + 1
         utils.containerRemoveAll(self.box)
         self.box.set_size_request(1, -1)
     # When second time redraw, redraw with new width allocated.
     elif self.redrawCount == 1:
         self.redrawCount = self.redrawCount + 1
         self.showSubCategorybar(width)
     # When third time, reset redraw count, stop redraw.
     else:
         self.redrawCount = 0
 def drawFocusStar(self):
     '''Draw focus star status.'''
     # Remove child first.
     utils.containerRemoveAll(self.starBox)
     
     # Add application vote star.
     self.starView = StarView()
     self.starBox.pack_start(self.starView.eventbox)
     self.starView.eventbox.connect("button-press-event", lambda w, e: self.sendVote())
     self.starView.eventbox.connect("button-press-event", lambda w, e: self.switchFocusStatus(self.FOCUS_NORMAL))
     
     # Show help.
     utils.setHelpTooltip(self.starView.eventbox, __("Click Finish Vote"))
     setClickableCursor(self.starView.eventbox)
    def initNormalStatus(self):
        '''Init normal status.'''
        pkg = self.appInfo.pkg

        # Clean right box first.
        utils.containerRemoveAll(self.appAdditionBox)

        # Add application vote information.
        self.appVoteView = VoteView(self.appInfo, PAGE_UPGRADE,
                                    self.sendVoteCallback)
        self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)

        # Add application size.
        size = utils.getPkgSize(pkg)

        appSizeLabel = DynamicSimpleLabel(
            self.appAdditionBox,
            utils.formatFileSize(size),
            appTheme.getDynamicColor("appSize"),
            LABEL_FONT_SIZE,
        )
        appSize = appSizeLabel.getLabel()

        appSize.set_size_request(self.SIZE_LABEL_WIDTH, -1)
        appSize.set_alignment(1.0, 0.5)
        self.appAdditionBox.pack_start(appSize, False, False,
                                       self.APP_RIGHT_PADDING_X)

        # Add ignore button.
        (ignoreLabel, ignoreEventBox) = setDefaultClickableDynamicLabel(
            __("Don't Notify"),
            "appIgnore",
        )
        self.appAdditionBox.pack_start(ignoreEventBox, False, False)
        ignoreEventBox.connect(
            "button-press-event",
            lambda w, e: self.addIgnorePkgCallback(utils.getPkgName(pkg)))

        # Add action button.
        (actionButtonBox, actionButtonAlign) = createActionButton()
        self.appAdditionBox.pack_start(actionButtonAlign, False, False)

        (appButton, appButtonAlign) = newActionButton("update", 0.5, 0.5,
                                                      "cell", False,
                                                      __("Action Update"),
                                                      BUTTON_FONT_SIZE_SMALL,
                                                      "buttonFont")
        appButton.connect("button-release-event",
                          lambda widget, event: self.switchToDownloading())
        actionButtonBox.pack_start(appButtonAlign)
 def drawFocusNormal(self):
     '''Draw focus normal status.'''
     # Remove child first.
     utils.containerRemoveAll(self.starBox)
     # utils.containerRemoveAll(self.voteBox)
     
     # Add application vote star.
     starBox = createStarBox(self.starLevel, self.starSize)
     self.starBox.pack_start(starBox)
     
     starBox.connect("button-press-event", lambda w, e: self.switchFocusStatus(self.FOCUS_STAR))
     
     utils.setHelpTooltip(starBox, __("Click Start Vote"))
     setClickableCursor(starBox)
    def initDownloadPauseStatus(self, appAdditionBox, withoutBorder=False, color=None):
        if color == None:
            color = appTheme.getDynamicColor("statusUpdate").getColor()

        """Init download pause status."""
        # Clean right box first.
        utils.containerRemoveAll(appAdditionBox)

        # Add progress.
        progress = self.appInfo.downloadingProgress
        if withoutBorder:
            progressbar = drawProgressbarWithoutBorder(self.PROGRESS_WIDTH)
        else:
            progressbar = drawProgressbar(self.PROGRESS_WIDTH)
        progressbar.setProgress(progress)
        appAdditionBox.pack_start(progressbar.box)

        # Alignment box.
        (actionBox, actionAlign) = createActionButton()
        appAdditionBox.pack_start(actionAlign)

        # Add play icon.
        buttonBox = gtk.HBox()
        buttonAlign = gtk.Alignment()
        buttonAlign.set(0.5, 0.5, 0.0, 0.0)
        buttonAlign.set_padding(ACTION_BUTTON_PADDING_Y, ACTION_BUTTON_PADDING_Y, 0, 0)
        buttonAlign.add(buttonBox)
        actionBox.pack_start(buttonAlign)

        continueIcon = gtk.Button()
        drawSimpleButton(continueIcon, "continue")
        continueIcon.connect("button-release-event", lambda widget, event: self.switchToDownloading())
        buttonBox.pack_start(continueIcon, False, False, self.BUTTON_PADDING_X)

        # Add stop icon.
        stopIcon = gtk.Button()
        drawSimpleButton(stopIcon, "stop")
        stopIcon.connect("button-release-event", lambda widget, event: self.switchToNormal())
        buttonBox.pack_start(stopIcon, False, False, self.BUTTON_PADDING_X)

        # Add pause label.
        pauseLabel = gtk.Label()
        pauseLabel.set_markup(
            "<span foreground='%s' size='%s'>%s</span>" % (color, LABEL_FONT_SIZE, __("Action Pause"))
        )
        pauseLabel.set_width_chars(self.PROGRESS_LABEL_WIDTH_CHARS)
        pauseLabel.set_ellipsize(pango.ELLIPSIZE_END)
        pauseLabel.set_alignment(0.5, 0.5)
        actionBox.pack_start(pauseLabel)
    def drawFocusNormal(self):
        '''Draw focus normal status.'''
        # Remove child first.
        utils.containerRemoveAll(self.starBox)
        # utils.containerRemoveAll(self.voteBox)

        # Add application vote star.
        starBox = createStarBox(self.starLevel, self.starSize)
        self.starBox.pack_start(starBox)

        starBox.connect("button-press-event",
                        lambda w, e: self.switchFocusStatus(self.FOCUS_STAR))

        utils.setHelpTooltip(starBox, __("Click Start Vote"))
        setClickableCursor(starBox)
 def initNormalStatus(self):
     '''Init normal status.'''
     pkg = self.appInfo.pkg
         
     # Clean right box first.
     utils.containerRemoveAll(self.appAdditionBox)
     
     # Add application vote information.
     self.appVoteView = VoteView(
         self.appInfo, PAGE_DOWNLOAD_MANAGE, 
         self.sendVoteCallback)
     self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)
     
     # Add application size.
     size = utils.getPkgSize(pkg)
     appSize = gtk.Label()
     appSize.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, utils.formatFileSize(size)))
     appSize.set_alignment(1.0, 0.5)
     self.appAdditionBox.pack_start(appSize, False, False, self.LIKE_PADDING_X)
     
     # Add action button.
     (actionButtonBox, actionButtonAlign) = createActionButton()
     self.appAdditionBox.pack_start(actionButtonAlign, False, False)
     if self.appInfo.status == APP_STATE_NORMAL:
         (appButton, appButtonAlign) = newActionButton(
             "install", 0.5, 0.5, 
             "cell", False, __("Action Install"), BUTTON_FONT_SIZE_SMALL, "buttonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     elif self.appInfo.status == APP_STATE_UPGRADE:
         (appButton, appButtonAlign) = newActionButton(
             "update", 0.5, 0.5, 
             "cell", False, __("Action Update"), BUTTON_FONT_SIZE_SMALL, "buttonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     else:
         appInstalledDynamicLabel = DynamicSimpleLabel(
             actionButtonBox,
             __("Action Installed"),
             appTheme.getDynamicColor("installed"),
             LABEL_FONT_SIZE,
             )
         appInstalledLabel = appInstalledDynamicLabel.getLabel()
         buttonImage = appTheme.getDynamicPixbuf("cell/update_hover.png").getPixbuf()
         appInstalledLabel.set_size_request(buttonImage.get_width(), buttonImage.get_height())
         actionButtonBox.pack_start(appInstalledLabel)
 def initNormalStatus(self):
     '''Init normal status.'''
     pkg = self.appInfo.pkg
         
     # Clean right box first.
     utils.containerRemoveAll(self.appAdditionBox)
     
     # Add application vote information.
     self.appVoteView = VoteView(
         self.appInfo, PAGE_DOWNLOAD_MANAGE, 
         self.sendVoteCallback)
     self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)
     
     # Add application size.
     size = utils.getPkgSize(pkg)
     appSize = gtk.Label()
     appSize.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, utils.formatFileSize(size)))
     appSize.set_alignment(1.0, 0.5)
     self.appAdditionBox.pack_start(appSize, False, False, self.LIKE_PADDING_X)
     
     # Add action button.
     (actionButtonBox, actionButtonAlign) = createActionButton()
     self.appAdditionBox.pack_start(actionButtonAlign, False, False)
     if self.appInfo.status == APP_STATE_NORMAL:
         (appButton, appButtonAlign) = newActionButton(
             "install", 0.5, 0.5, 
             "cell", False, __("Action Install"), BUTTON_FONT_SIZE_SMALL, "buttonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     elif self.appInfo.status == APP_STATE_UPGRADE:
         (appButton, appButtonAlign) = newActionButton(
             "update", 0.5, 0.5, 
             "cell", False, __("Action Update"), BUTTON_FONT_SIZE_SMALL, "buttonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     else:
         appInstalledDynamicLabel = DynamicSimpleLabel(
             actionButtonBox,
             __("Action Installed"),
             appTheme.getDynamicColor("installed"),
             LABEL_FONT_SIZE,
             )
         appInstalledLabel = appInstalledDynamicLabel.getLabel()
         buttonImage = appTheme.getDynamicPixbuf("cell/update_hover.png").getPixbuf()
         appInstalledLabel.set_size_request(buttonImage.get_width(), buttonImage.get_height())
         actionButtonBox.pack_start(appInstalledLabel)
    def updateCommentNum(self, commentNum):
        '''Update comment num.'''
        if commentNum > 0:
            utils.containerRemoveAll(self.appCommentNumBox)
            appCommentLabel = DynamicSimpleLabel(
                self.appCommentNumBox,
                __("Comment") % commentNum,
                appTheme.getDynamicColor("appComment"),
                LABEL_FONT_SIZE,
            ).getLabel()
            appCommentLabel.set_single_line_mode(True)
            appCommentLabel.set_alignment(0.0, 1.0)

            self.appCommentNumBox.pack_start(appCommentLabel, True, True)

            self.align.show_all()
 def updateCommentNum(self, commentNum):
     '''Update comment num.'''
     if commentNum > 0:
         utils.containerRemoveAll(self.appCommentNumBox)
         appCommentLabel = DynamicSimpleLabel(
             self.appCommentNumBox,
             __("Comment") % commentNum,
             appTheme.getDynamicColor("appComment"),
             LABEL_FONT_SIZE,
             ).getLabel()
         appCommentLabel.set_single_line_mode(True)
         appCommentLabel.set_alignment(0.0, 1.0)
         
         self.appCommentNumBox.pack_start(appCommentLabel, True, True)
         
         self.align.show_all()
    def drawFocusStar(self):
        '''Draw focus star status.'''
        # Remove child first.
        utils.containerRemoveAll(self.starBox)

        # Add application vote star.
        self.starView = StarView()
        self.starBox.pack_start(self.starView.eventbox)
        self.starView.eventbox.connect("button-press-event",
                                       lambda w, e: self.sendVote())
        self.starView.eventbox.connect(
            "button-press-event",
            lambda w, e: self.switchFocusStatus(self.FOCUS_NORMAL))

        # Show help.
        utils.setHelpTooltip(self.starView.eventbox, __("Click Finish Vote"))
        setClickableCursor(self.starView.eventbox)
 def initDownloadingStatus(self, appAdditionBox, withoutBorder=False):
     '''Init downloading status.'''
     # Clean right box first.
     utils.containerRemoveAll(appAdditionBox)
     
     # Add progress.
     progress = self.appInfo.downloadingProgress
     if withoutBorder:
         progressbar = drawProgressbarWithoutBorder(self.PROGRESS_WIDTH)
     else:
         progressbar = drawProgressbar(self.PROGRESS_WIDTH)
     progressbar.setProgress(progress)
     self.downloadingProgressbar = progressbar
     appAdditionBox.pack_start(progressbar.box)
     
     # Alignment box.
     (actionBox, actionAlign) = createActionButton()
     appAdditionBox.pack_start(actionAlign)
     
     # Add pause icon.
     buttonBox = gtk.HBox()
     buttonAlign = gtk.Alignment()
     buttonAlign.set(0.5, 0.5, 0.0, 0.0)
     buttonAlign.set_padding(ACTION_BUTTON_PADDING_Y, ACTION_BUTTON_PADDING_Y, 0, 0)
     buttonAlign.add(buttonBox)
     actionBox.pack_start(buttonAlign)
     
     pauseIcon = gtk.Button()
     drawSimpleButton(pauseIcon, "pause")
     pauseIcon.connect("button-release-event", lambda widget, event: self.switchToDownloadPause())
     buttonBox.pack_start(pauseIcon, False, False, self.BUTTON_PADDING_X)
     
     # Add stop icon.
     stopIcon = gtk.Button()
     drawSimpleButton(stopIcon, "stop")
     stopIcon.connect("button-release-event", lambda widget, event: self.switchToNormal())
     buttonBox.pack_start(stopIcon, False, False, self.BUTTON_PADDING_X)
     
     # Add feedback label.
     feedbackLabel = gtk.Label()
     feedbackLabel.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, self.appInfo.downloadingFeedback))
     feedbackLabel.set_width_chars(self.PROGRESS_LABEL_WIDTH_CHARS)
     feedbackLabel.set_ellipsize(pango.ELLIPSIZE_END)
     feedbackLabel.set_alignment(0.5, 0.5)
     self.downloadingFeedbackLabel = feedbackLabel
     actionBox.pack_start(feedbackLabel)
    def initNormalStatus(self):
        '''Init normal status.'''
        pkg = self.appInfo.pkg
        
        # Clean right box first.
        utils.containerRemoveAll(self.appAdditionBox)
        
        # Add application vote information.
        self.appVoteView = VoteView(
            self.appInfo, PAGE_UPGRADE, 
            self.sendVoteCallback)
        self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)
        
        # Add application size.
        size = utils.getPkgSize(pkg)

        appSizeLabel = DynamicSimpleLabel(
            self.appAdditionBox,
            utils.formatFileSize(size),
            appTheme.getDynamicColor("appSize"),
            LABEL_FONT_SIZE,
            )
        appSize = appSizeLabel.getLabel()
        
        appSize.set_size_request(self.SIZE_LABEL_WIDTH, -1)
        appSize.set_alignment(1.0, 0.5)
        self.appAdditionBox.pack_start(appSize, False, False, self.APP_RIGHT_PADDING_X)
        
        # Add ignore button.
        (ignoreLabel, ignoreEventBox) = setDefaultClickableDynamicLabel(
            __("Don't Notify"),
            "appIgnore",
            )
        self.appAdditionBox.pack_start(ignoreEventBox, False, False)
        ignoreEventBox.connect("button-press-event", 
                               lambda w, e: self.addIgnorePkgCallback(utils.getPkgName(pkg)))
        
        # Add action button.
        (actionButtonBox, actionButtonAlign) = createActionButton()
        self.appAdditionBox.pack_start(actionButtonAlign, False, False)
        
        (appButton, appButtonAlign) = newActionButton(
            "update", 0.5, 0.5, "cell", False, __("Action Update"), BUTTON_FONT_SIZE_SMALL, "buttonFont")
        appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
        actionButtonBox.pack_start(appButtonAlign)
Beispiel #34
0
    def initNormalStatus(self):
        '''Init normal status.'''
        # Clean right box first.
        utils.containerRemoveAll(self.appAdditionBox)

        # Add action button.
        (actionButtonBox, actionButtonAlign) = createActionButton()
        self.appAdditionBox.pack_start(actionButtonAlign, False, False)
        if self.appInfo.status == APP_STATE_NORMAL:
            (appButton, appButtonAlign) = newActionButton(
                "search", 0.5, 0.5, "cell", False, __("Action Install"),
                BUTTON_FONT_SIZE_LARGE, "bigButtonFont")
            appButton.connect("button-release-event",
                              lambda widget, event: self.switchToDownloading())
            actionButtonBox.pack_start(appButtonAlign)
        elif self.appInfo.status == APP_STATE_UPGRADE:
            (appButton, appButtonAlign) = newActionButton(
                "search", 0.5, 0.5, "cell", False, __("Action Update"),
                BUTTON_FONT_SIZE_LARGE, "bigButtonFont")
            appButton.connect("button-release-event",
                              lambda widget, event: self.switchToDownloading())
            actionButtonBox.pack_start(appButtonAlign)
        else:
            execPath = self.appInfo.execPath
            if execPath:
                (appButton, appButtonAlign) = newActionButton(
                    "search", 0.5, 0.5, "cell", False, __("Action Startup"),
                    BUTTON_FONT_SIZE_LARGE, "bigButtonFont")
                appButton.connect(
                    "button-release-event", lambda widget, event: self.
                    launchApplicationCallback(execPath))
                actionButtonBox.pack_start(appButtonAlign)
            else:
                appInstalledDynamicLabel = DynamicSimpleLabel(
                    actionButtonBox,
                    __("Action Installed"),
                    appTheme.getDynamicColor("slideText"),
                    LABEL_FONT_LARGE_SIZE,
                )
                appInstalledLabel = appInstalledDynamicLabel.getLabel()
                buttonImage = appTheme.getDynamicPixbuf(
                    "cell/update_hover.png").getPixbuf()
                appInstalledLabel.set_size_request(buttonImage.get_width(),
                                                   buttonImage.get_height())
                actionButtonBox.pack_start(appInstalledLabel)
 def initNormalStatus(self):
     '''Init normal status.'''
     pkg = self.appInfo.pkg
         
     # Clean right box first.
     utils.containerRemoveAll(self.appAdditionBox)
     
     # Add application size.
     size = utils.getPkgSize(pkg)
     appSize = gtk.Label()
     appSize.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, utils.formatFileSize(size)))
     appSize.set_alignment(1.0, 0.5)
     self.appAdditionBox.pack_start(appSize, False, False, self.LIKE_PADDING_X)
     
     # Add application vote information.
     self.appVoteView = VoteView(
         self.appInfo, PAGE_REPO, 
         self.entryDetailCallback,
         self.sendVoteCallback)
     self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)
     
     # Add action button.
     (actionButtonBox, actionButtonAlign) = createActionButton()
     self.appAdditionBox.pack_start(actionButtonAlign, False, False)
     if self.appInfo.status == APP_STATE_NORMAL:
         (appButton, appButtonAlign) = newActionButton(
             "install", 0.5, 0.5, 
             "cell", False, "安装", BUTTON_FONT_SIZE_SMALL
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     elif self.appInfo.status == APP_STATE_UPGRADE:
         (appButton, appButtonAlign) = newActionButton(
             "update", 0.5, 0.5, 
             "cell", False, "升级", BUTTON_FONT_SIZE_SMALL
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     else:
         appInstalledLabel = gtk.Label()
         appInstalledLabel.set_markup("<span foreground='#1A3E88' size='%s'>%s</span>" % (LABEL_FONT_SIZE, "已安装"))
         buttonImage = gtk.gdk.pixbuf_new_from_file("./icons/cell/update_hover.png")
         appInstalledLabel.set_size_request(buttonImage.get_width(), buttonImage.get_height())
         actionButtonBox.pack_start(appInstalledLabel)
Beispiel #36
0
 def initUpgradingStatus(self):
     '''Init upgrading status.'''
     # Clean summary box first.
     utils.containerRemoveAll(self.appStatusBox)
     
     # Create status box.
     statusPaddingY = 5
     statusBox = gtk.HBox()
     statusAlign = gtk.Alignment()
     statusAlign.set(0.0, 0.5, 0.0, 0.0)
     statusAlign.set_padding(statusPaddingY, 0, 0, 0)
     statusAlign.add(statusBox)
     self.appStatusBox.pack_start(statusAlign)
     
     # Add progressbar.
     progress = self.appInfo.downloadingProgress
     progressbar = drawProgressbar(self.PROGRESS_WIDTH)
     progressbar.setProgress(progress)
     statusBox.pack_start(progressbar.box)
     self.upgradingProgressbar = progressbar
     
     # Add action box.
     utils.containerRemoveAll(self.appActionBox)
     
     actionBox = gtk.VBox()
     actionAlign = gtk.Alignment()
     actionAlign.set(0.5, 0.5, 0.0, 0.0)
     actionAlign.add(actionBox)
     self.appActionBox.pack_start(actionAlign)
     
     # Add feedback label.
     feedbackPaddingY = 6
     feedbackLabel = gtk.Label()
     feedbackLabel.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, self.appInfo.upgradingFeedback))
     feedbackLabel.set_alignment(0.0, 0.5)
     feedbackAlign = gtk.Alignment()
     feedbackAlign.set(0.0, 0.5, 0.0, 0.0)
     feedbackAlign.set_padding(feedbackPaddingY, 0, 0, 0)
     feedbackAlign.add(feedbackLabel)
     self.upgradingFeedbackLabel = feedbackLabel
     actionBox.pack_start(feedbackAlign)
 def initNormalStatus(self):
     '''Init normal status.'''
     # Clean right box first.
     utils.containerRemoveAll(self.appAdditionBox)
     
     # Add action button.
     (actionButtonBox, actionButtonAlign) = createActionButton()
     self.appAdditionBox.pack_start(actionButtonAlign, False, False)
     if self.appInfo.status == APP_STATE_NORMAL:
         (appButton, appButtonAlign) = newActionButton(
             "search", 0.5, 0.5,  "cell", False, __("Action Install"), BUTTON_FONT_SIZE_LARGE, "bigButtonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     elif self.appInfo.status == APP_STATE_UPGRADE:
         (appButton, appButtonAlign) = newActionButton(
             "search", 0.5, 0.5, 
             "cell", False, __("Action Update"), BUTTON_FONT_SIZE_LARGE, "bigButtonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         actionButtonBox.pack_start(appButtonAlign)
     else:
         execPath = self.appInfo.execPath
         if execPath:
             (appButton, appButtonAlign) = newActionButton(
                 "search", 0.5, 0.5, 
                 "cell", False, __("Action Startup"), BUTTON_FONT_SIZE_LARGE, "bigButtonFont"
                 )
             appButton.connect("button-release-event", lambda widget, event: self.launchApplicationCallback(execPath))
             actionButtonBox.pack_start(appButtonAlign)
         else:
             appInstalledDynamicLabel = DynamicSimpleLabel(
                 actionButtonBox,
                 __("Action Installed"),
                 appTheme.getDynamicColor("slideText"),
                 LABEL_FONT_LARGE_SIZE,
                 )
             appInstalledLabel = appInstalledDynamicLabel.getLabel()
             buttonImage = appTheme.getDynamicPixbuf("cell/update_hover.png").getPixbuf()
             appInstalledLabel.set_size_request(buttonImage.get_width(), buttonImage.get_height())
             actionButtonBox.pack_start(appInstalledLabel)
 def show(self, scrollToTop=True):
     '''Show application view.'''
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     self.itemDict.clear()
     
     # If i don't re-connect self.eventbox and self.box,
     # update view will show nothing.
     # I still can't understand why?
     # Maybe this is bug of GtkEventBox?
     utils.containerRemoveAll(self.eventbox)
     self.eventbox.add(self.box)
     
     if self.appNum != 0:
         # Get application list.
         appList = self.getListFunc((self.pageIndex - 1) * self.defaultRows,
                                    min(self.pageIndex * self.defaultRows, self.appNum)
                                    )
         
         # Create application view.
         self.box.pack_start(self.createAppList(appList))
         
         # Create index view.
         indexbar = self.createIndexbar()
         if not indexbar == None:
             self.box.pack_start(indexbar)
             
         self.box.show_all()
         
         # Request vote data.
         self.fetchVoteCallback(
             self.pageId, 
             map (lambda appInfo: utils.getPkgName(appInfo.pkg), appList),
             self.isSearchPage)
         
     # Scroll ScrolledWindow to top after render.
     if scrollToTop:
         utils.scrollToTop(self.scrolledwindow)
 def show(self, scrollToTop=True):
     '''Show application view.'''
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     self.itemDict.clear()
     
     # If i don't re-connect self.eventbox and self.box,
     # update view will show nothing.
     # I still can't understand why?
     # Maybe this is bug of GtkEventBox?
     utils.containerRemoveAll(self.eventbox)
     self.eventbox.add(self.box)
     
     if self.appNum != 0:
         # Get application list.
         appList = self.getListFunc((self.pageIndex - 1) * self.defaultRows,
                                    min(self.pageIndex * self.defaultRows, self.appNum)
                                    )
         
         # Create application view.
         self.box.pack_start(self.createAppList(appList))
         
         # Create index view.
         indexbar = self.createIndexbar()
         if not indexbar == None:
             self.box.pack_start(indexbar)
             
         self.box.show_all()
         
         # Request vote data.
         self.fetchVoteCallback(
             self.pageId, 
             map (lambda appInfo: utils.getPkgName(appInfo.pkg), appList),
             self.isSearchPage)
         
     # Scroll ScrolledWindow to top after render.
     if scrollToTop:
         utils.scrollToTop(self.scrolledwindow)
    def initNormalStatus(self):
        '''Init normal status.'''
        pkg = self.appInfo.pkg

        # Clean right box first.
        utils.containerRemoveAll(self.appAdditionBox)

        # Add application vote information.
        self.appVoteView = VoteView(self.appInfo, PAGE_UPGRADE,
                                    self.sendVoteCallback)
        self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)

        # Add application size.
        size = utils.getPkgSize(pkg)
        appSize = gtk.Label()
        appSize.set_size_request(self.SIZE_LABEL_WIDTH, -1)
        appSize.set_markup("<span size='%s'>%s</span>" %
                           (LABEL_FONT_SIZE, utils.formatFileSize(size)))
        appSize.set_alignment(1.0, 0.5)
        self.appAdditionBox.pack_start(appSize, False, False,
                                       self.APP_RIGHT_PADDING_X)

        # Add ignore button.
        (ignoreLabel, ignoreEventBox) = setDefaultClickableDynamicLabel(
            __("Notify again"),
            "appIgnore",
        )
        ignoreEventBox.connect(
            "button-press-event",
            lambda w, e: self.removeIgnorePkgCallback([utils.getPkgName(pkg)]))

        ignoreLabelPaddingX = 30
        ignoreAlign = gtk.Alignment()
        ignoreAlign.set(0.0, 0.5, 0.0, 0.0)
        ignoreAlign.set_padding(0, 0, ignoreLabelPaddingX, ignoreLabelPaddingX)
        ignoreAlign.add(ignoreEventBox)
        self.appAdditionBox.pack_start(ignoreAlign, False, False)
Beispiel #41
0
 def initNormalStatus(self):
     '''Init normal status.'''
     pkg = self.appInfo.pkg
     
     # Clean feedback box.
     utils.containerRemoveAll(self.appFeedbackBox)
     utils.containerRemoveAll(self.appActionBox)
     utils.containerRemoveAll(self.appStatusBox)
     
     # Add summary.
     self.appStatusBox.pack_start(self.appSummaryBox, False, False)
     
     # Add action button.
     appButtonBox = gtk.VBox()
     self.appActionBox.pack_start(appButtonBox, False, False, self.APP_RIGHT_PADDING_X)
     if self.appInfo.status == APP_STATE_NORMAL:
         (appButton, appButtonAlign) = newActionButton(
             "install", 0.5, 0.5, 
             "cell", False, __("Action Install"), BUTTON_FONT_SIZE_SMALL, "buttonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         appButtonBox.pack_start(appButtonAlign)
     elif self.appInfo.status == APP_STATE_UPGRADE:
         (appButton, appButtonAlign) = newActionButton(
             "update", 0.5, 0.5, 
             "cell", False, __("Action Update"), BUTTON_FONT_SIZE_SMALL, "buttonFont"
             )
         appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
         appButtonBox.pack_start(appButtonAlign)
     else:
         execPath = self.appInfo.execPath
         if execPath:
             (appButton, appButtonAlign) = newActionButton(
                 "update", 0.5, 0.5, 
                 "cell", False, __("Action Startup"), BUTTON_FONT_SIZE_SMALL, "buttonFont"
                 )
             appButton.connect("button-release-event", lambda widget, event: self.launchApplicationCallback(execPath))
             appButtonBox.pack_start(appButtonAlign)
         else:
             appInstalledDynamicLabel = DynamicSimpleLabel(
                 appButtonBox,
                 __("Action Installed"),
                 appTheme.getDynamicColor("installed"),
                 LABEL_FONT_SIZE,
                 )
             appInstalledLabel = appInstalledDynamicLabel.getLabel()
             buttonImage = appTheme.getDynamicPixbuf("cell/update_hover.png").getPixbuf()
             appInstalledLabel.set_size_request(buttonImage.get_width(), buttonImage.get_height())
             appButtonBox.pack_start(appInstalledLabel)
    def initNormalStatus(self):
        '''Init normal status.'''
        pkg = self.appInfo.pkg

        # Clean right box first.
        utils.containerRemoveAll(self.appAdditionBox)

        # Add application vote information.
        self.appVoteView = VoteView(self.appInfo, PAGE_UNINSTALL,
                                    self.sendVoteCallback)
        self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)

        # Add application installed size.
        size = utils.getPkgInstalledSize(pkg)

        appSizeLabel = DynamicSimpleLabel(
            self.appAdditionBox,
            utils.formatFileSize(size),
            appTheme.getDynamicColor("appSize"),
            LABEL_FONT_SIZE,
        )
        appSize = appSizeLabel.getLabel()

        appSize.set_size_request(self.SIZE_LABEL_WIDTH, -1)
        appSize.set_alignment(1.0, 0.5)
        self.appAdditionBox.pack_start(appSize, False, False,
                                       self.APP_RIGHT_PADDING_X)

        # Add action button.
        (actionButtonBox, actionButtonAlign) = createActionButton()
        self.appAdditionBox.pack_start(actionButtonAlign, False, False)

        if self.confirmUninstall:
            appUninstallLabel = gtk.Label()
            appUninstallLabel.set_markup(
                "<span foreground='%s' size='%s'>%s</span>" %
                (appTheme.getDynamicColor("uninstallConfirm").getColor(),
                 LABEL_FONT_SIZE, __("Are you sure uninstall?")))
            actionButtonBox.pack_start(appUninstallLabel, False, False)

            appUninstallBox = gtk.HBox()
            appUninstallAlign = gtk.Alignment()
            appUninstallAlign.set(0.5, 0.5, 1.0, 1.0)
            appUninstallAlign.set_padding(ACTION_BUTTON_PADDING_Y,
                                          ACTION_BUTTON_PADDING_Y, 0, 0)
            appUninstallAlign.add(appUninstallBox)
            actionButtonBox.pack_start(appUninstallAlign, False, False)

            if getDefaultLanguage() == "default":
                buttonName = "uninstall_confirm"
            else:
                buttonName = "uninstall_confirm_cn"

            (appConfirmButton, appConfirmAlign) = newActionButton(
                buttonName, 0.0, 0.5, "cell", False, __("Action Uninstall"),
                BUTTON_FONT_SIZE_SMALL, "buttonFont")
            appConfirmButton.connect(
                "button-release-event",
                lambda widget, event: self.switchToUninstalling())

            (appCancelButton, appCancelAlign) = newActionButton(
                buttonName, 1.0, 0.5, "cell", False, __("Action Cancel"),
                BUTTON_FONT_SIZE_SMALL, "buttonFont")
            appCancelButton.connect(
                "button-release-event",
                lambda widget, event: self.switchToNormal(False))

            appUninstallBox.pack_start(appConfirmAlign)
            appUninstallBox.pack_start(appCancelAlign)
        else:
            (appUninstallBox, appUninstallAlign) = newActionButton(
                "uninstall", 0.5, 0.5, "cell", False, __("Action Uninstall"),
                BUTTON_FONT_SIZE_SMALL, "buttonFont")
            appUninstallBox.connect(
                "button-release-event",
                lambda widget, event: self.switchToNormal(True))
            actionButtonBox.pack_start(appUninstallAlign)
 def updateSlideItem(self):
     '''Update slide item.'''
     utils.containerRemoveAll(self.slideItemBox)        
     self.slideItemBox.pack_start(self.getSlideItem(self.targetIndex).itemFrame)
 def initNormalStatus(self):
     '''Init normal status.'''
     pkg = self.appInfo.pkg
     
     # Clean right box first.
     utils.containerRemoveAll(self.appAdditionBox)
     
     # Add application version.
     currentVersion = pkg.installed.version
     if len(pkg.versions) == 0:
         upgradeVersion = "错误的版本, 请报告错误!"
     else:
         upgradeVersion = pkg.versions[0].version
         
     versionBox = gtk.VBox()
     versionAlign = gtk.Alignment()        
     versionAlign.set(0.0, 0.5, 0.0, 0.0)
     versionAlign.add(versionBox)
     self.appAdditionBox.pack_start(versionAlign, True, True, self.APP_RIGHT_PADDING_X)
     
     currentVersionBox = gtk.HBox()
     versionBox.pack_start(currentVersionBox, False, False)
     
     currentVersionName = gtk.Label()
     currentVersionName.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, "当前版本: "))
     currentVersionBox.pack_start(currentVersionName, False, False)
     
     currentVersionNum = gtk.Label()
     currentVersionNum.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
     currentVersionNum.set_markup("<span foreground='#333333' size='%s'>%s</span>" % (LABEL_FONT_SIZE, currentVersion))
     currentVersionNum.set_size_request(self.VERSION_LABEL_WIDTH, -1)
     currentVersionNum.set_alignment(0.0, 0.5)
     currentVersionBox.pack_start(currentVersionNum, False, False)
     
     upgradeVersionBox = gtk.HBox()
     versionBox.pack_start(upgradeVersionBox, False, False)
     
     upgradeVersionName = gtk.Label()
     upgradeVersionName.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, "升级版本: "))
     upgradeVersionBox.pack_start(upgradeVersionName, False, False)
     
     upgradeVersionNum = gtk.Label()
     upgradeVersionNum.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
     upgradeVersionNum.set_markup("<span foreground='#00BB00' size='%s'>%s</span>" % (LABEL_FONT_SIZE, upgradeVersion))
     upgradeVersionNum.set_size_request(self.VERSION_LABEL_WIDTH, -1)
     upgradeVersionNum.set_alignment(0.0, 0.5)
     upgradeVersionBox.pack_start(upgradeVersionNum, False, False)
         
     # Add application size.
     size = utils.getPkgSize(pkg)
     appSize = gtk.Label()
     appSize.set_size_request(self.SIZE_LABEL_WIDTH, -1)
     appSize.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, utils.formatFileSize(size)))
     appSize.set_alignment(1.0, 0.5)
     self.appAdditionBox.pack_start(appSize, False, False, self.APP_RIGHT_PADDING_X)
     
     # Add application vote information.
     self.appVoteView = VoteView(
         self.appInfo, PAGE_UPGRADE, 
         self.entryDetailCallback,
         self.sendVoteCallback)
     self.appAdditionBox.pack_start(self.appVoteView.eventbox, False, False)
     
     # Add action button.
     (actionButtonBox, actionButtonAlign) = createActionButton()
     self.appAdditionBox.pack_start(actionButtonAlign, False, False)
     
     (appButton, appButtonAlign) = newActionButton(
         "update", 0.5, 0.5, "cell", False, "升级", BUTTON_FONT_SIZE_SMALL)
     appButton.connect("button-release-event", lambda widget, event: self.switchToDownloading())
     actionButtonBox.pack_start(appButtonAlign)
 def show(self, scrollToTop=True):
     '''Show application view.'''
     # Remove child widgets first.
     utils.containerRemoveAll(self.box)
     self.itemDict.clear()
     
     # If i don't re-connect self.eventbox and self.box,
     # update view will show nothing.
     # I still can't understand why?
     # Maybe this is bug of GtkEventBox?
     utils.containerRemoveAll(self.eventbox)
     self.eventbox.add(self.box)
     
     if self.appNum == 0:
         if (getDefaultLanguage() == "default"):
             paddingX = 10
         else:
             paddingX = 0
         
         notifyBox = gtk.VBox()
         notifyAlign = gtk.Alignment()
         notifyAlign.set(0.5, 0.5, 0.0, 0.0)
         notifyAlign.add(notifyBox)
         self.box.pack_start(notifyAlign)
         
         tipImage = gtk.image_new_from_pixbuf(
             gtk.gdk.pixbuf_new_from_file("../icon/tips/%s/updateTip.png" % (getDefaultLanguage())))
         tipAlign = gtk.Alignment()
         tipAlign.set_padding(0, 0, paddingX, 0)
         tipAlign.add(tipImage)
         notifyBox.pack_start(tipAlign)
         
         penguinImage = gtk.image_new_from_pixbuf(
             gtk.gdk.pixbuf_new_from_file("../icon/tips/penguin.png"))
         penguinAlign = gtk.Alignment()
         penguinAlign.set_padding(0, 0, 0, paddingX)
         penguinAlign.add(penguinImage)
         notifyBox.pack_start(penguinAlign)
         
         self.box.show_all()
     else:
         # Get application list.
         appList = self.getListFunc(
             (self.pageIndex - 1) * self.defaultRows,
             min(self.pageIndex * self.defaultRows, self.appNum)
             )
         
         # Create application view.
         self.box.pack_start(self.createAppList(appList))
         
         # Create index view.
         indexbar = self.createIndexbar()
         if not indexbar == None:
             self.box.pack_start(indexbar)
             
         self.box.show_all()
         
         # Request vote data.
         self.fetchVoteCallback(
             PAGE_UPGRADE, 
             map (lambda appInfo: utils.getPkgName(appInfo.pkg), appList))
         
     # Scroll ScrolledWindow to top after render.
     if scrollToTop:
         utils.scrollToTop(self.scrolledwindow)
Beispiel #46
0
 def updateSlideItem(self):
     '''Update slide item.'''
     utils.containerRemoveAll(self.slideItemBox)
     self.slideItemBox.pack_start(
         self.getSlideItem(self.targetIndex).itemFrame)
    def show(self, scrollToTop=True):
        '''Show application view.'''
        # Remove child widgets first.
        utils.containerRemoveAll(self.box)
        self.itemDict.clear()

        # If i don't re-connect self.eventbox and self.box,
        # update view will show nothing.
        # I still can't understand why?
        # Maybe this is bug of GtkEventBox?
        utils.containerRemoveAll(self.eventbox)
        self.eventbox.add(self.box)

        if self.appNum == 0:
            if (getDefaultLanguage() == "default"):
                paddingX = 10
            else:
                paddingX = 0

            notifyBox = gtk.VBox()
            notifyAlign = gtk.Alignment()
            notifyAlign.set(0.5, 0.5, 0.0, 0.0)
            notifyAlign.add(notifyBox)
            self.box.pack_start(notifyAlign)

            tipImage = gtk.image_new_from_pixbuf(
                gtk.gdk.pixbuf_new_from_file("../icon/tips/%s/updateTip.png" %
                                             (getDefaultLanguage())))
            tipAlign = gtk.Alignment()
            tipAlign.set_padding(0, 0, paddingX, 0)
            tipAlign.add(tipImage)
            notifyBox.pack_start(tipAlign)

            penguinImage = gtk.image_new_from_pixbuf(
                gtk.gdk.pixbuf_new_from_file("../icon/tips/penguin.png"))
            penguinAlign = gtk.Alignment()
            penguinAlign.set_padding(0, 0, 0, paddingX)
            penguinAlign.add(penguinImage)
            notifyBox.pack_start(penguinAlign)

            self.box.show_all()
        else:
            # Get application list.
            appList = self.getListFunc((self.pageIndex - 1) * self.defaultRows,
                                       min(self.pageIndex * self.defaultRows,
                                           self.appNum))

            # Create application view.
            self.box.pack_start(self.createAppList(appList))

            # Create index view.
            indexbar = self.createIndexbar()
            if not indexbar == None:
                self.box.pack_start(indexbar)

            self.box.show_all()

            # Request vote data.
            self.fetchVoteCallback(
                PAGE_UPGRADE,
                map(lambda appInfo: utils.getPkgName(appInfo.pkg), appList))

        # Scroll ScrolledWindow to top after render.
        if scrollToTop:
            utils.scrollToTop(self.scrolledwindow)
Beispiel #48
0
 def initDownloadPauseStatus(self):
     '''Init download pause status.'''
     # Clean summary box first.
     utils.containerRemoveAll(self.appStatusBox)
     
     # Create status box.
     statusPaddingY = 5
     statusBox = gtk.HBox()
     statusAlign = gtk.Alignment()
     statusAlign.set(0.0, 0.5, 0.0, 0.0)
     statusAlign.set_padding(statusPaddingY, 0, 0, 0)
     statusAlign.add(statusBox)
     self.appStatusBox.pack_start(statusAlign)
     
     # Add progressbar.
     progress = self.appInfo.downloadingProgress
     progressbar = drawProgressbar(self.PROGRESS_WIDTH)
     progressbar.setProgress(progress)
     statusBox.pack_start(progressbar.box)
     self.downloadingProgressbar = progressbar
     
     # Add action box.
     utils.containerRemoveAll(self.appActionBox)
     
     actionBox = gtk.VBox()
     actionAlign = gtk.Alignment()
     actionAlign.set(0.5, 0.5, 0.0, 0.0)
     actionAlign.add(actionBox)
     self.appActionBox.pack_start(actionAlign)
     
     # Add pause icon.
     buttonPaddingY = 8
     buttonBox = gtk.HBox()
     buttonAlign = gtk.Alignment()
     buttonAlign.set(0.5, 0.0, 0.0, 0.0)
     buttonAlign.set_padding(buttonPaddingY, 0, 0, 0)
     buttonAlign.add(buttonBox)
     actionBox.pack_start(buttonAlign, False, False)
     
     continueIcon = gtk.Button()
     drawSimpleButton(continueIcon, "continue")
     continueIcon.connect("button-release-event", lambda widget, event: self.switchToDownloading())
     buttonBox.pack_start(continueIcon, False, False, self.BUTTON_PADDING_X)
     
     # Add stop icon.
     stopIcon = gtk.Button()
     drawSimpleButton(stopIcon, "stop")
     stopIcon.connect("button-release-event", lambda widget, event: self.switchToNormal())
     buttonBox.pack_start(stopIcon, False, False, self.BUTTON_PADDING_X)
     
     # Add feedback label.
     feedbackPaddingY = 5
     feedbackLabel = gtk.Label()
     feedbackLabel.set_markup("<span size='%s'>%s</span>" % (LABEL_FONT_SIZE, self.appInfo.downloadingFeedback))
     feedbackLabel.set_size_request(self.STATUS_WIDTH, -1)
     feedbackAlign = gtk.Alignment()
     feedbackAlign.set(1.0, 0.0, 0.0, 0.0)
     feedbackAlign.set_padding(feedbackPaddingY, 0, 0, 0)
     feedbackAlign.add(feedbackLabel)
     self.downloadingFeedbackLabel = feedbackLabel
     actionBox.pack_start(feedbackAlign)