Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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))
Esempio n. 4
0
 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)})
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 7
0
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)
Esempio n. 8
0
    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
Esempio n. 9
0
 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
Esempio n. 10
0
    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
Esempio n. 11
0
 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
Esempio n. 12
0
 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)
Esempio n. 13
0
 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)
Esempio n. 14
0
 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)
Esempio n. 15
0
 def adv_emerge(self, widget):
     self.dispatch(
         "adv_emerge", {
             'caller': "DependsView: emerge()",
             'package': utils.get_treeview_selection(self, 2)
         })
Esempio n. 16
0
    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