Пример #1
0
 def _on_lowlevel_transactions_changed(self, watcher, current_tid,
                                       pending_tids):
     logging.debug("on_transaction_changed %s (%s)" % (current_tid,
         len(pending_tids)))
     self.clear()
     for tid in [current_tid] + pending_tids:
         if not tid:
             continue
         # we do this synchronous (it used to be a reply_handler)
         # otherwise we run into a race that
         # when we get two on_transaction_changed closely after each
         # other clear() is run before the "_append_transaction" handler
         # is run and we end up with two (or more) _append_transactions
         trans = self._transactions_watcher.get_transaction(tid)
         if trans:
             self._append_transaction(trans)
     # add pending purchases as pseudo transactions
     for pkgname in self.backend.pending_purchases:
         iconname = self.backend.pending_purchases[pkgname].iconname
         icon = get_icon_from_theme(self.icons, iconname=iconname,
             iconsize=self.ICON_SIZE)
         appname = self.backend.pending_purchases[pkgname].appname
         status_text = self._render_status_text(
             appname or pkgname, _(u'Installing purchase\u2026'))
         self.append([pkgname, icon, pkgname, status_text, float(0), 1,
             None])
 def _on_lowlevel_transactions_changed(self, watcher, current_tid,
                                       pending_tids):
     logging.debug("on_transaction_changed %s (%s)" %
                   (current_tid, len(pending_tids)))
     self.clear()
     for tid in [current_tid] + pending_tids:
         if not tid:
             continue
         # we do this synchronous (it used to be a reply_handler)
         # otherwise we run into a race that
         # when we get two on_transaction_changed closely after each
         # other clear() is run before the "_append_transaction" handler
         # is run and we end up with two (or more) _append_transactions
         trans = self._transactions_watcher.get_transaction(tid)
         if trans:
             self._append_transaction(trans)
     # add pending purchases as pseudo transactions
     for pkgname in self.backend.pending_purchases:
         iconname = self.backend.pending_purchases[pkgname].iconname
         icon = get_icon_from_theme(self.icons,
                                    iconname=iconname,
                                    iconsize=self.ICON_SIZE)
         appname = self.backend.pending_purchases[pkgname].appname
         status_text = self._render_status_text(
             appname or pkgname, _(u'Installing purchase\u2026'))
         self.append(
             [pkgname, icon, pkgname, status_text,
              float(0), 1, None])
    def _append_transaction(self, trans):
        """Extract information about the transaction and append it to the
        store.
        """
        logging.debug("_append_transaction %s (%s)" % (trans.tid, trans))
        self._signals.append(
            trans.connect("progress-details-changed",
                          self._on_progress_details_changed))
        self._signals.append(
            trans.connect("progress-changed", self._on_progress_changed))
        self._signals.append(
            trans.connect("status-changed", self._on_status_changed))
        self._signals.append(
            trans.connect("cancellable-changed", self._on_cancellable_changed))

        if "sc_appname" in trans.meta_data:
            appname = trans.meta_data["sc_appname"]
        elif "sc_pkgname" in trans.meta_data:
            appname = trans.meta_data["sc_pkgname"]
        else:
            #FIXME: Extract information from packages property
            appname = trans.get_role_description()
            self._signals.append(
                trans.connect("role-changed", self._on_role_changed))
        try:
            iconname = trans.meta_data["sc_iconname"]
        except KeyError:
            icon = get_icon_from_theme(self.icons, iconsize=self.ICON_SIZE)
        else:
            icon = get_icon_from_theme(self.icons,
                                       iconname=iconname,
                                       iconsize=self.ICON_SIZE)

        # if transaction is waiting, switch to indeterminate progress
        if trans.is_waiting():
            status = trans.status_details
            pulse = self.DO_PROGRESS_PULSE
        else:
            status = trans.get_status_description()
            pulse = self.STOP_PROGRESS_PULSE

        status_text = self._render_status_text(appname, status)
        cancel_icon = self._get_cancel_icon(trans.cancellable)
        self.append([
            trans.tid, icon, appname, status_text,
            float(trans.progress), pulse, cancel_icon
        ])
Пример #4
0
    def _append_transaction(self, trans):
        """Extract information about the transaction and append it to the
        store.
        """
        logging.debug("_append_transaction %s (%s)" % (trans.tid, trans))
        self._signals.append(
            trans.connect(
                "progress-details-changed", self._on_progress_details_changed))
        self._signals.append(
            trans.connect("progress-changed", self._on_progress_changed))
        self._signals.append(
            trans.connect("status-changed", self._on_status_changed))
        self._signals.append(
            trans.connect(
                "cancellable-changed", self._on_cancellable_changed))

        if "sc_appname" in trans.meta_data:
            appname = trans.meta_data["sc_appname"]
        elif "sc_pkgname" in trans.meta_data:
            appname = trans.meta_data["sc_pkgname"]
        else:
            #FIXME: Extract information from packages property
            appname = trans.get_role_description()
            self._signals.append(
                trans.connect("role-changed", self._on_role_changed))
        try:
            iconname = trans.meta_data["sc_iconname"]
        except KeyError:
            icon = get_icon_from_theme(self.icons, iconsize=self.ICON_SIZE)
        else:
            icon = get_icon_from_theme(self.icons, iconname=iconname,
                iconsize=self.ICON_SIZE)

        # if transaction is waiting, switch to indeterminate progress
        if trans.is_waiting():
            status = trans.status_details
            pulse = self.DO_PROGRESS_PULSE
        else:
            status = trans.get_status_description()
            pulse = self.STOP_PROGRESS_PULSE

        status_text = self._render_status_text(appname, status)
        cancel_icon = self._get_cancel_icon(trans.cancellable)
        self.append([trans.tid, icon, appname, status_text,
            float(trans.progress), pulse, cancel_icon])