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 ])
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])