def remove_item(self, widget): """ Remove the selected item from the queue """ # get the selected iter selected_iter = get_treeview_selection(self.queue_tree) path = self.queue_model.get_path(selected_iter)[0] # find if this item is still in our process list name = get_treeview_selection(self.queue_tree, self.queue_model.column['name']) if selected_iter: id = get_treeview_selection(self.queue_tree, self.queue_model.column['id']) debug.dprint("TERM_QUEUE: remove_item(); id = " + str(id) + " next_id = " + str(self.next_id) + " paused_id = " + str(self.paused_id)) self.queue_model.remove(selected_iter) # iters are no longer valid. reset them if self.process_id: self.locate_id(self.process_id) self.process_iter = self.locate_iter.copy() self.last_run_iter = self.locate_iter.copy() if self.queue_paused: self.paused_iter = self.queue_model.get_iter(self.paused_path) self.next_id -= 1 if id < self.next_id: self.renum_ids(path, id) if id == self.paused_id: self.set_icon(PAUSED, id, path) self.set_menu_state() # We're done del name, id, selected_iter, path
def move_item_top(self, widget): debug.dprint("TERM_QUEUE: move_item_top()") # pause the queue so it does not get messed up while we are moving things paused = self.pause() my_paused_id = self.queue_model.get_value( self.paused_iter, self.queue_model.column['id']) debug.dprint( "TERM_QUEUE: move_item_top(); back from paused, paused_iter, id = " + str(self.paused_iter) + ", " + str(my_paused_id)) # get the selected iter selected_iter = get_treeview_selection(self.queue_tree) if not selected_iter: debug.dprint( "TERM_QUEUE: move_item_top(); selected_iter == None, returning, no selection active" ) return False #path = self.queue_model.get_path(selected_iter)[0] try: self.queue_model.move_before(selected_iter, self.paused_iter) except: debug.dprint( "TERM_QUEUE: move_item_top(); exception moving selected_iter before paused_iter" ) debug.dprint("TERM_QUEUE: move_item_top(); paused_id, paused_path = " + str(self.paused_id) + ", " + str(self.paused_path)) self.set_icon(PENDING, self.paused_id, self.paused_path + 1) self.paused_iter = selected_iter.copy() debug.dprint("TERM_QUEUE: move_item_top(); renumber id's") self.renum_ids(self.paused_path, self.paused_id) self.set_icon(PAUSED, self.paused_id, self.paused_path) # We're done, reset queue moves result = self.clicked(self.queue_tree) del paused, selected_iter
def move_item_bottom(self, widget): debug.dprint("TERM_QUEUE: move_item_bottom()") # pause the queue so it does not get messed up while we are moving things paused = self.pause() my_paused_id = self.queue_model.get_value( self.paused_iter, self.queue_model.column['id']) debug.dprint( "TERM_QUEUE: move_item_bottom(); back from paused, paused_iter, id = " + str(self.paused_iter) + ", " + str(my_paused_id)) # get the selected iter selected_iter = get_treeview_selection(self.queue_tree) if not selected_iter: debug.dprint( "TERM_QUEUE: move_item_top(); selected_iter == None, returning, no selection active" ) return False path = self.queue_model.get_path(selected_iter)[0] try: id = self.queue_model.get_value(selected_iter, self.queue_model.column['id']) end_iter = self.queue_model.get_iter(self.next_id - 2) self.queue_model.move_after(selected_iter, end_iter) except Exception, e: debug.dprint( "TERM_QUEUE: move_item_bottom(); exception moving selected_iter, exception :" + str(e))
def emerge(self, menuitem_widget, pretend=None, sudo=None): emergestring = ['emerge'] if pretend: emergestring.append('pretend') if sudo: emergestring.append('sudo') self.dispatch(emergestring, {'caller': "DependsView: emerge()", 'package': utils.get_treeview_selection(self, 2)})
def add_keyword(self, widget): arch = "~" + portage_lib.get_arch() name = utils.get_treeview_selection(self, MODEL_ITEM["package"]).full_name string = name + " " + arch + "\n" debug.dprint("VIEWS: Package view add_keyword(); %s" %string) def callback(): self.mainwindow_callback("refresh", {'caller': 'VIEWS: Package view add_keyword()'}) db.userconfigs.set_user_config('KEYWORDS', name=name, add=arch, callback=callback)
def add_keyword(self, widget): arch = "~" + portage_lib.get_arch() name = utils.get_treeview_selection(self, 2).full_name string = name + " " + arch + "\n" debug.dprint("DependsView: dependsview add_keyword(); %s" % string) db.userconfigs.set_user_config('KEYWORDS', name=name, add=arch, callback=None)
def add_keyword(self, widget): arch = "~" + backends.portage_lib.get_arch() name = utils.get_treeview_selection(self, 2).full_name string = name + " " + arch + "\n" debug.dprint("VIEWS: Package view add_keyword(); %s" % string) def callback(): global mainwindow_callback mainwindow_callback("refresh") backends.portage_lib.set_user_config('package.keywords', name=name, add=arch, callback=callback)
def items_switch(self, direction): """ Switch two adjacent queue items; direction is either 1 [down] or -1 [up] """ debug.dprint("TERM_QUEUE: Switching queue items.") # get the selected iter selected_iter = get_treeview_selection(self.queue_tree) # get its path path = self.queue_model.get_path(selected_iter)[0] # only move up if it's not the first entry, # only move down if it's not the last entry if (not direction and path > 0) or \ (direction and path < len(self.queue_model)): # get the adjacent values destination_iter = self.queue_model.get_iter(path + direction) destination_id = self.queue_model.get_value( destination_iter, self.queue_model.column['id']) destination_icon = self.queue_model.get_value( destination_iter, self.queue_model.column['icon']) sel_id = self.queue_model.get_value(selected_iter, self.queue_model.column['id']) sel_icon = self.queue_model.get_value( selected_iter, self.queue_model.column['icon']) # switch places and make sure the original is still selected self.queue_model.swap(selected_iter, destination_iter) self.queue_model.set_value(selected_iter, self.queue_model.column['id'], destination_id) self.queue_model.set_value(destination_iter, self.queue_model.column['id'], sel_id) if self.paused_path == path or self.paused_path == path + direction: self.queue_model.set_value(selected_iter, self.queue_model.column['icon'], destination_icon) self.queue_model.set_value(destination_iter, self.queue_model.column['icon'], sel_icon) self.paused_iter = self.queue_model.get_iter(self.paused_path) self.queue_tree.get_selection().select_path(path + direction) else: debug.dprint("TERM_QUEUE: cannot move first or last item") # We're done, reset queue moves result = self.clicked(self.queue_tree) del path, selected_iter, destination_iter, sel_id, sel_icon, destination_id, destination_icon
def move_item_bottom(self, widget): debug.dprint("TERM_QUEUE: move_item_bottom()") # pause the queue so it does not get messed up while we are moving things paused = self.pause() my_paused_id = self.queue_model.get_value( self.paused_iter, self.queue_model.column['id']) debug.dprint( "TERM_QUEUE: move_item_bottom(); back from paused, paused_iter, id = " + str(self.paused_iter) + ", " + str(my_paused_id)) # get the selected iter selected_iter = get_treeview_selection(self.queue_tree) if not selected_iter: debug.dprint( "TERM_QUEUE: move_item_top(); selected_iter == None, returning, no selection active" ) return False path = self.queue_model.get_path(selected_iter)[0] try: _id = self.queue_model.get_value(selected_iter, self.queue_model.column['id']) end_iter = self.queue_model.get_iter(self.next_id - 2) self.queue_model.move_after(selected_iter, end_iter) except Exception as e: debug.dprint( "TERM_QUEUE: move_item_bottom(); exception moving selected_iter, exception :" + str(e)) if path == self.paused_path: debug.dprint( "TERM_QUEUE: move_item_bottom(); detected paused item moved, resetting paused_iter, etc., path, paused_path = " + str(path) + ", " + str(self.paused_path)) self.set_icon(PAUSED, self.paused_id, self.paused_path) try: self.queue_model.set_value(selected_iter, self.queue_model.column['icon'], None) self.paused_iter = self.queue_model.get_iter(self.paused_path) except Exception as e: debug.dprint( "TERM_QUEUE: move_item_bottom(); exception resetting paused_iter, exception :" + str(e)) self.renum_ids(path, _id) # We're done, reset queue moves result = self.clicked(self.queue_tree) del end_iter, selected_iter, _id, path, paused
def _clicked(self, treeview, *args): """ Handles treeview clicks """ debug.dprint("VIEWS: Package view _clicked() signal caught") # get the selection package = utils.get_treeview_selection(treeview, MODEL_ITEM["package"]) #debug.dprint("VIEWS: package = %s" % package.full_name) if (not package and not self.toggle) or package.full_name == _("None"): self.mainwindow_callback("package changed", { 'package': None, 'caller': 'VIEWS: Package view _clicked()' }) return False if self.toggle != None: # for upgrade view iter = self.get_model().get_iter(self.toggle) check = self.view_model[MODEL_NAMES[self.current_view]].get_value( iter, MODEL_ITEM["checkbox"]) check = not check self.view_model[MODEL_NAMES[self.current_view]].set_value( iter, MODEL_ITEM["checkbox"], check) package.is_checked = check #~ if self.view_model[MODEL_NAMES[self.current_view]].get_value(iter, MODEL_ITEM["package"]) == None: #~ #debug.dprint("VIEWS: _clicked(): Toggling all upgradable deps") #~ # package == None for "Upgradable Dependencies" row #~ # so select or deselect all deps #~ iter = self.view_model[MODEL_NAMES[self.current_view]].iter_children(iter) #~ while iter: #~ self.view_model[MODEL_NAMES[self.current_view]].set_value(iter, MODEL_ITEM["checkbox"], check) #~ iter = self.view_model[MODEL_NAMES[self.current_view]].iter_next(iter) self.dopopup = False # don't popup menu if clicked on checkbox self.toggle = None return True # we've got it sorted else: self.mainwindow_callback("package changed", { 'package': package, 'caller': 'VIEWS: Package view _clicked()' }) self._last_selected = package.full_name #pop up menu if was rmb-click if self.dopopup: if utils.is_root(): if package.get_best_ebuild() != package.get_latest_ebuild( ): # i.e. no ~arch keyword self.popup_menuitems["add-keyword"].show() else: self.popup_menuitems["add-keyword"].hide() installed = package.get_installed() havebest = False if installed: self.popup_menuitems["unmerge"].show() if package.get_best_ebuild() in installed: havebest = True else: self.popup_menuitems["unmerge"].hide() if havebest: self.popup_menuitems["emerge"].hide() self.popup_menuitems["pretend-emerge"].hide() else: self.popup_menuitems["emerge"].show() self.popup_menuitems["pretend-emerge"].show() self.popup_menuitems["sudo-emerge"].hide() self.popup_menuitems["sudo-unmerge"].hide() else: self.popup_menuitems["emerge"].hide() self.popup_menuitems["unmerge"].hide() if utils.can_gksu() and \ (package.get_best_ebuild() != package.get_latest_ebuild()): self.popup_menuitems["add-keyword"].show() else: self.popup_menuitems["add-keyword"].hide() installed = package.get_installed() havebest = False if installed and utils.can_sudo(): self.popup_menuitems["sudo-unmerge"].show() if package.get_best_ebuild() in installed: havebest = True else: self.popup_menuitems["sudo-unmerge"].hide() if havebest: self.popup_menuitems["sudo-emerge"].hide() self.popup_menuitems["pretend-emerge"].hide() else: if utils.can_sudo(): self.popup_menuitems["sudo-emerge"].show() else: self.popup_menuitems["sudo-emerge"].hide() self.popup_menuitems["pretend-emerge"].show() self.popup_menu.popup(None, None, None, None, self.event.button, self.event.time) self.dopopup = False self.event = None return True
def clicked(self, *widget): """Handle clicks to the queue treeview""" debug.dprint("TERM_QUEUE: clicked()") # get the selected iter selected_iter = get_treeview_selection(self.queue_tree) # get its path try: path = self.queue_model.get_path(selected_iter)[0] except: debug.dprint("TERM_QUEUE: Couldn't get queue view treeiter path, " \ "there is probably nothing selected.") del selected_iter return False # if the item is already run # don't make the controls sensitive and return name = get_treeview_selection(self.queue_tree, self.queue_model.column['name']) killed = get_treeview_selection(self.queue_tree, self.queue_model.column['killed']) id = get_treeview_selection(self.queue_tree, self.queue_model.column['id']) #in_list = 0 if id <= self.process_id: #not in_list or in_list == 1: state = [False, False, False, False] if id == self.process_id and not killed: state.append(False) else: state.append(True) self.set_queue_moves(state) debug.dprint("TERM_QUEUE: clicked(); finished... returning") del selected_iter, id, name, killed, state return True # if we reach here it's still needs to be processed # set the correct directions sensitive # shouldn't be able to move the top item up, etc... debug.dprint("TERM_QUEUE: clicked(); id = " + str(id) + " next_id = " + str(self.next_id) + " process_id = " + str(self.process_id)) if id == self.process_id + 1 or path == 0: # set move_top and move_up state = [False, False] debug.dprint( "TERM_QUEUE: clicked(); 550 set top,up to False,False") if id == self.next_id - 1: # set move_down and move_bottom state += [False, False] debug.dprint( "TERM_QUEUE: clicked(); 554 set down,bottom to False,False" ) else: state += [True, True] debug.dprint( "TERM_QUEUE: clicked(); 557 set down,bottom to True,True") elif id == self.next_id - 1: state = [True, True, False, False] debug.dprint( "TERM_QUEUE: clicked();560 set top,up,down,bottom to True,True,False,False" ) else: # enable moving the item state = [True, True, True, True] debug.dprint( "TERM_QUEUE: clicked(); 564 set full move True,True,True,True") # activate the delete item in state state.append(True) self.set_queue_moves(state) #debug.dprint("TERM_QUEUE: clicked(); finished... returning") del selected_iter, id, name, killed, state return True
def unmerge_btn(self, widget, sudo=False): """callback for the Unmerge button and menu entry to unmerge the currently selected package.""" if not self.process_selection("emerge --unmerge"): package = utils.get_treeview_selection(self.package_view, 2) self.unmerge_package(package, sudo)
def adv_emerge_btn(self, *widget): """Advanced emerge of the currently selected package.""" package = utils.get_treeview_selection(self.package_view, 2) self.adv_emerge_package(package)
def emerge_btn(self, widget, sudo=False): """callback for the emerge toolbutton and menu entries""" if not self.process_selection("emerge"): package = utils.get_treeview_selection(self.package_view, 2) self.emerge_package(package, sudo)
def adv_emerge(self, widget): self.dispatch( "adv_emerge", { 'caller': "DependsView: emerge()", 'package': utils.get_treeview_selection(self, 2) })
def _clicked(self, treeview, *args): """ Handles treeview clicks """ debug.dprint("VIEWS: Package view _clicked() signal caught") # get the selection package = utils.get_treeview_selection(treeview, 2) #debug.dprint("VIEWS: package = %s" % package.full_name) #pop up menu if was rmb-click if self.dopopup: if utils.utils.is_root(): if package.get_best_ebuild() != package.get_latest_ebuild( ): # i.e. no ~arch keyword self.popup_menuitems["add-keyword"].show() else: self.popup_menuitems["add-keyword"].hide() installed = package.get_installed() havebest = False if installed: self.popup_menuitems["unmerge"].show() if package.get_best_ebuild() in installed: havebest = True else: self.popup_menuitems["unmerge"].hide() if havebest: self.popup_menuitems["emerge"].hide() self.popup_menuitems["pretend-emerge"].hide() else: self.popup_menuitems["emerge"].show() self.popup_menuitems["pretend-emerge"].show() self.popup_menuitems["sudo-emerge"].hide() self.popup_menuitems["sudo-unmerge"].hide() else: self.popup_menuitems["emerge"].hide() self.popup_menuitems["unmerge"].hide() if utils.can_gksu() and \ (package.get_best_ebuild() != package.get_latest_ebuild()): self.popup_menuitems["add-keyword"].show() else: self.popup_menuitems["add-keyword"].hide() installed = package.get_installed() havebest = False if installed and utils.can_sudo(): self.popup_menuitems["sudo-unmerge"].show() if package.get_best_ebuild() in installed: havebest = True else: self.popup_menuitems["sudo-unmerge"].hide() if havebest: self.popup_menuitems["sudo-emerge"].hide() self.popup_menuitems["pretend-emerge"].hide() else: if utils.can_sudo(): self.popup_menuitems["sudo-emerge"].show() else: self.popup_menuitems["sudo-emerge"].hide() self.popup_menuitems["pretend-emerge"].show() self.popup_menu.popup(None, None, None, self.event.button, self.event.time) self.dopopup = False self.event = None return True