def add_to_install_queue(self, widget, data=None): tree = self.gld.get_widget("pacs_tree") model, l_iter = tree.get_selection().get_selected() name = model.get_value(l_iter, 2) if name in self.queues["add"]: return if name in self.database.holdPkg: dlg = holdpkg_dialog(name, self.icon) res = dlg.run() dlg.destroy() if res == RESPONSE_OK: pacs_queues = { "add": [self.database.get_by_name(name)], "remove": [] } retcode = self._confirm(pacs_queues) if retcode: stat_bar = self.gld.get_widget("statusbar") stat_bar.pop(self.stat_id) stat_bar.push(self.stat_id, _("Executing queued operations")) dlg = do_dialog(pacs_queues, self.icon) dlg.run() return if name in self.database.ignorePkg: dlg = ignorepkg_dialog(name, self.icon) res = dlg.run() dlg.destroy() if res is RESPONSE_NO: return if name in self.queues["remove"]: self.queues["remove"].remove(name) self.queues["add"].append(name) image = model.get_value(l_iter, 0) if image == "red": model.set_value(l_iter, 1, STOCK_ADD) else: model.set_value(l_iter, 1, STOCK_GO_UP) return
def execute(self, widget=None, data=None): pacs_queues = { "add": [], "remove": [] } for name in self.queues["add"]: try: pac = self.database.get_by_name(name) except NameError: dlg = error_dialog(self.gld.get_widget("main_win"), _("%s is not in the database.\nThis is probably a bug in gtkpacman. If you think it's so, please send me a bug report.") %name, self.icon) dlg.run() dlg.destroy() continue if not pac.prop_setted: self.database.set_pac_properties(pac) pacs_queues["add"].append(pac) deps = pac.dependencies.split(", ") for dep in deps: if dep.count(">="): dep = dep.split(">=")[0] try: dep_pac = self.database.get_by_name(dep) except NameError: dlg = error_dialog(self.gld.get_widget("main_win"), _("%(dep)s is not in the database. %(dep)s is required by %(pkg)s.\nThis maybe either an error in %(pkg)s packaging or a gtkpacman's bug.\nIf you think it's the first, contact the %(pkg)s maintainer, else fill a bug report for gtkpacman, please.") %{'dep': dep, "pkg": name}, self.icon) dlg.run() dlg.destroy() pacs_queues["add"].remove(pac) self.queues["add"].remove(name) break if not dep_pac.installed: pacs_queues["add"].append(dep_pac) continue for name in self.queues["remove"]: pac = self.database.get_by_name(name) if not pac.prop_setted: self.database.set_pac_properties(pac) pacs_queues["remove"].append(pac) if pac.req_by: req_pacs = [] for req in pac.req_by.split(", "): if not (req in self.queues["remove"]): req_pac = self.database.get_by_name(req) req_pacs.append(req_pac) if req_pacs: dlg = warning_dialog(self.gld.get_widget("main_win"), req_pacs, self.icon) if dlg.run() == RESPONSE_YES: pacs_queues["remove"].extend(req_pacs) else: self.queues["remove"].remove(name) pacs_queues["remove"].remove(pac) dlg.destroy() continue if not (pacs_queues["add"] or pacs_queues["remove"]): self._refresh_trees_and_queues() return retcode = self._confirm(pacs_queues) if retcode: stat_bar = self.gld.get_widget("statusbar") stat_bar.pop(self.stat_id) stat_bar.push(self.stat_id, _("Executing queued operations")) dlg = do_dialog(pacs_queues, self.icon) dlg.connect("destroy", self._refresh_trees_and_queues, pacs_queues) dlg.run() else: self.queues["add"] = [] self.queues["remove"] = [] self._refresh_trees_and_queues() return
def execute(self, widget=None, data=None): def _req_pac_check(to_check, flag): to_do = [] try: pac = self.database.get_by_name(to_check) except NameError: dlg = error_dialog(self.gld.get_widget("main_win"), _("%(dep)s is not in the database. %(dep)s is required by %(pkg)s.\nThis maybe either an error in %(pkg)s packaging or a gtkpacman's bug.\nIf you think it's the first, contact the %(pkg)s maintainer, else fill a bug report for gtkpacman, please.") %{'dep': dep, "pkg": name}, self.icon) dlg.run() dlg.destroy() pacs_queues["add"].remove(pac) self.queues["add"].remove(name) return try: if not pac.prop_setted: self.database.set_pac_properties(pac) except: return pac, to_do if flag == "req": for req in pac.req_by.split(", "): if len(req) >= 1: to_do.append(req) else: if not pac.installed: for dep in pac.dependencies.split(", "): if len(dep) >= 1: to_do.append(dep) else: pac = None return pac, to_do pac = None return pac, to_do pacs_queues = { "add": [], "remove": [] } deps = [] for name in self.queues["add"]: try: pac = self.database.get_by_name(name) except NameError: dlg = error_dialog(self.gld.get_widget("main_win"), _("%s is not in the database.\nThis is probably a bug in gtkpacman. If you think it's so, please send me a bug report.") %name, self.icon) dlg.run() dlg.destroy() continue if not pac.prop_setted: self.database.set_pac_properties(pac) pacs_queues["add"].append(pac) if pac.dependencies: dep_todo_list = [] dep_black_list = [] deps = pac.dependencies.split(", ") for dep in deps: if not dep in self.queues["add"]: dep_todo_list.append(dep) while dep_todo_list: dep = dep_todo_list.pop(0) if dep.count(">="): dep = dep.split(">=")[0] if not (dep in self.queues["add"]): done, to_do = _req_pac_check(dep, "dep") if done and not done in pacs_queues["add"]: pacs_queues["add"].append(done) for add in to_do: if not add in dep_black_list: dep_todo_list.append(add) dep_black_list.append(add) for name in self.queues["remove"]: pac = self.database.get_by_name(name) if not pac.prop_setted: self.database.set_pac_properties(pac) pacs_queues["remove"].append(pac) if pac.req_by: req_pacs = [] req_todo_list = [] req_black_list = [] for req in pac.req_by.split(", "): if not (req in self.queues["remove"]): req_todo_list.append(req) while req_todo_list: req = req_todo_list.pop(0) if not (req in self.queues["remove"]): done, to_do = _req_pac_check(req, "req") if done and not done in req_pacs: req_pacs.append(done) for add in to_do: if not add in req_black_list: req_todo_list.append(add) req_black_list.append(add) continue if req_pacs: dlg = warning_dialog(self.gld.get_widget("main_win"), req_pacs, self.icon) if dlg.run() == RESPONSE_YES: pacs_queues["remove"].extend(req_pacs) else: self.queues["remove"].remove(name) pacs_queues["remove"].remove(pac) dlg.destroy() continue if not (pacs_queues["add"] or pacs_queues["remove"]): self._refresh_trees_and_queues() return retcode = self._confirm(pacs_queues) if retcode: self._statusbar(_("Executing queued operations...")) dlg = do_dialog(pacs_queues, self.icon) dlg.connect("destroy", self._refresh_trees_and_queues, pacs_queues) dlg.run() else: self.queues["add"] = [] self.queues["remove"] = [] self._refresh_trees_and_queues() return
def execute(self, widget=None, data=None): pacs_queues = { "add": [], "remove": [] } deps = [] req_pacs = [] if self.queues['add']: pacs_queues['add'] = self._execute_queue_add() # Check if packages are listed as ignorePkg b_list = self._blacklist( pacs_queues['add'], 0x01) if b_list: dlg = ignorepkg_dialog( b_list, self.icon) res = dlg.run() dlg.destroy() if res == RESPONSE_NO: self._done(None) return if self.queues['remove']: pacs_queues['remove'], req_pacs = self._execute_queue_remove() #pacs_queues["remove"] = self._execute_queue_remove() # Check if packages are listed as holdPkg b_list = self._blacklist( pacs_queues['remove'], 0x02) if b_list: dlg = holdpkg_dialog( b_list, self.icon) res = dlg.run() dlg.destroy() if res == RESPONSE_NO: self._done(None) return if not (pacs_queues["add"] or pacs_queues["remove"]): self._refresh_trees_and_queues() return self.gld.get_widget("main_win").set_sensitive(False) if req_pacs: dlg = warning_dialog(self.gld.get_widget("main_win"), req_pacs, self.icon) if dlg.run() == RESPONSE_YES: pacs_queues["remove"].extend(req_pacs) dlg.destroy() else: dlg.destroy() # Open new dialog and execute commands ie. install/remove packages do_dlg = do_dialog( self.gld.get_widget("main_win"), self.icon, pacs_queues) do_dlg.connect("destroy", self._refresh_trees_and_queues) resp = do_dlg.run() if resp == RESPONSE_YES: self._statusbar(_("Executing queued operations...")) do_dlg.set_sensitive(False) if self._passwd_dlg_init(do_dlg): do_dlg.install() do_dlg.set_sensitive(True) # User clicked cancel else: do_dlg.destroy() self.queues["add"] = [] self.queues["remove"] = [] self._statusbar(_("Upgrade canceled")) self.gld.get_widget("main_win").set_sensitive(True) elif resp == RESPONSE_NO: do_dlg.destroy() self.queues["add"] = [] self.queues["remove"] = [] self._statusbar(_("Upgrade canceled")) self.gld.get_widget("main_win").set_sensitive(True)