summaryrefslogtreecommitdiff
path: root/portato/gui/windows/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'portato/gui/windows/main.py')
-rw-r--r--portato/gui/windows/main.py35
1 files changed, 26 insertions, 9 deletions
diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py
index 87a13dc..8d5e5ae 100644
--- a/portato/gui/windows/main.py
+++ b/portato/gui/windows/main.py
@@ -26,18 +26,20 @@ from ...backend import flags, system # must be the first to avoid circular deps
from ... import get_listener, plugin
from ...helper import debug, warning, error, info, unique_array
from ...session import Session
+from ...db import Database
from ...constants import CONFIG_LOCATION, VERSION, APP_ICON, ICON_DIR
-from ...backend.exceptions import PackageNotFoundException, BlockedException
+from ...backend.exceptions import PackageNotFoundException, BlockedException, VersionsNotFoundException
# more GUI stuff
-from ..utils import Database, Config, GtkThread, get_color
+from ..utils import Config, GtkThread, get_color
from ..queue import EmergeQueue
from ..session import SESSION_VERSION, SessionException, OldSessionException, NewSessionException
from ..wrapper import GtkTree, GtkConsole
from ..views import LogView, HighlightView, InstalledOnlyView, LazyStoreView
from ..dialogs import (blocked_dialog, changed_flags_dialog, io_ex_dialog,
nothing_found_dialog, queue_not_empty_dialog, remove_deps_dialog,
- remove_queue_dialog, remove_updates_dialog, unmask_dialog)
+ remove_queue_dialog, remove_updates_dialog, unmask_dialog,
+ no_versions_dialog)
from ..exceptions import PreReqError
# even more GUI stuff
@@ -748,14 +750,18 @@ class MainWindow (Window):
store.clear()
if name:
- for cat, pkg, is_inst in self.db.get_cat(name, self.sortPkgListByName):
- if is_inst:
+ for pkg in self.db.get_cat(name, self.sortPkgListByName):
+ if pkg.disabled:
+ warning(_("Package '%s/%s' is disabled."), pkg.cat, pkg.pkg)
+ continue
+
+ if pkg.inst:
icon = self.icons["installed"]
elif not self.showAll:
continue # ignore not installed packages
else:
icon = None
- store.append([icon, pkg, cat])
+ store.append([icon, pkg.pkg, pkg.cat])
def build_version_list (self):
store = gtk.ListStore(gtk.gdk.Pixbuf, str, str)
@@ -809,6 +815,8 @@ class MainWindow (Window):
self.slotcol.set_visible(False)
packages = system.sort_package_list(system.find_packages(cp, masked=True))
+ if not packages:
+ raise VersionsNotFoundException(cp)
# append versions
for vers, inst, slot in ((x.get_version(), x.is_installed(), get_slot(x)) for x in packages):
@@ -1344,8 +1352,17 @@ class MainWindow (Window):
"""
store, it = selection.get_selected()
if it:
+ oldcp = self.selCP
+
self.selCP = "%s/%s" % (store.get_value(it, 2), store.get_value(it, 1))
- self.fill_version_list(self.selCP)
+ try:
+ self.fill_version_list(self.selCP)
+ except VersionsNotFoundException, e:
+ warning(_("No versions of package '%s' found!.") % self.selCP)
+ no_versions_dialog(self.selCP)
+ self.db.disable(self.selCP)
+ self.selCP = oldcp
+
return True
def cb_pkg_list_header_clicked(self, col):
@@ -1832,8 +1849,8 @@ class MainWindow (Window):
self.__save_queue = (ret == gtk.RESPONSE_YES)
self.queue.kill_emerge()
- # write session
- self.session.save()
+ # write sessions
+ Session.close()
return False