summaryrefslogtreecommitdiff
path: root/portato/gui/windows/pkglist.py
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2009-10-05 15:09:41 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2009-10-05 15:09:41 +0200
commit7a38fcc10c89f401cdd2acb716f5200ad906fd9c (patch)
tree962a14a1ff3e2d2a652a50c6966d2261eb6d45fc /portato/gui/windows/pkglist.py
parent7a5d63304dbc17dccad6f98bcd22144b164d057f (diff)
downloadportato-7a38fcc10c89f401cdd2acb716f5200ad906fd9c.tar.gz
portato-7a38fcc10c89f401cdd2acb716f5200ad906fd9c.tar.bz2
portato-7a38fcc10c89f401cdd2acb716f5200ad906fd9c.zip
Added an PkgList window and rewrote UpdateWindow and WorldListWindow to use it
Diffstat (limited to '')
-rw-r--r--portato/gui/windows/pkglist.py (renamed from portato/gui/windows/update.py)61
1 files changed, 40 insertions, 21 deletions
diff --git a/portato/gui/windows/update.py b/portato/gui/windows/pkglist.py
index d77d257..bd1ded8 100644
--- a/portato/gui/windows/update.py
+++ b/portato/gui/windows/pkglist.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
-# File: portato/gui/windows/update.py
+# File: portato/gui/windows/pkglist.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
# Copyright (C) 2006-2009 René 'Necoro' Neumann
@@ -19,15 +19,22 @@ from ...backend import system
from ...backend.exceptions import PackageNotFoundException, BlockedException
from ...helper import debug
-class UpdateWindow (AbstractDialog):
+class PkgListWindow (AbstractDialog):
- def __init__ (self, parent, packages, queue, jump_to):
+ # need this, so it can be safely subclassed
+ __file__ = __window__ = "PkgListWindow"
+
+ def __init__ (self, title, parent, packages, queue, jump_to):
AbstractDialog.__init__(self, parent)
+ self.window.set_title(title)
+
+ self.installBtn = self.tree.get_widget("installBtn")
+ self.uninstallBtn = self.tree.get_widget("uninstallBtn")
+ self.all_selected = False
self.queue = queue
self.jump = jump_to
-
- self.packages = system.sort_package_list(packages)
+ self.packages = packages
self.build_list()
@@ -48,7 +55,7 @@ class UpdateWindow (AbstractDialog):
self.view.append_column(gtk.TreeViewColumn(_("Package"), cell, text = 1))
for p in self.packages:
- store.append([False, p.get_cpv()])
+ store.append([False, p])
def cb_set_size (self, *args):
"""
@@ -70,12 +77,12 @@ class UpdateWindow (AbstractDialog):
iter = model.get_iter_first()
while iter:
- model.set_value(iter, 0, True)
+ model.set_value(iter, 0, not self.all_selected)
iter = model.iter_next(iter)
return True
- def cb_install_clicked (self, btn):
+ def install_uninstall (self, type):
model = self.view.get_model()
iter = model.get_iter_first()
if iter is None: return
@@ -86,20 +93,30 @@ class UpdateWindow (AbstractDialog):
items.append(model.get_value(iter, 1))
iter = model.iter_next(iter)
- for item in items:
- try:
+ if type == "install":
+ for item in items:
try:
- self.queue.append(item, type = "install", oneshot = True)
- except PackageNotFoundException, e:
- if unmask_dialog(e[0]) == gtk.RESPONSE_YES :
- self.queue.append(item, type = "install", unmask = True, oneshot = True)
-
- except BlockedException, e:
- blocked_dialog(e[0], e[1])
+ try:
+ self.queue.append(item, "install", oneshot = True)
+ except PackageNotFoundException, e:
+ if unmask_dialog(e[0]) == gtk.RESPONSE_YES :
+ self.queue.append(item, "install", unmask = True, oneshot = True)
+
+ except BlockedException, e:
+ blocked_dialog(e[0], e[1])
+ else:
+ for item in items:
+ self.queue.append(item, "uninstall")
self.close()
return True
+ def cb_install_clicked (self, btn):
+ return self.install_uninstall("install")
+
+ def cb_uninstall_clicked (self, btn):
+ return self.install_uninstall("uninstall")
+
def cb_package_selected (self, view):
sel = view.get_selection()
store, it = sel.get_selected()
@@ -116,9 +133,11 @@ class UpdateWindow (AbstractDialog):
store[path][0] = not store[path][0]
return True
-class WorldListWindow (UpdateWindow):
- __file__ = __window__ = "UpdateWindow"
+class UpdateWindow (PkgListWindow):
+ def __init__ (self, *args, **kwargs):
+ PkgListWindow.__init__(self, _("Updatable Packages"), *args, **kwargs)
+class WorldListWindow (UpdateWindow):
def __init__ (self, *args, **kwargs):
- UpdateWindow.__init__(self, *args, **kwargs)
- self.window.set_title(_("World Packages"))
+ PkgListWindow.__init__(self, _("World Packages"), *args, **kwargs)
+ self.installBtn.hide()