summaryrefslogtreecommitdiff
path: root/portato
diff options
context:
space:
mode:
Diffstat (limited to 'portato')
-rw-r--r--portato/backend/package.py4
-rw-r--r--portato/backend/portage/package.py33
-rw-r--r--portato/backend/portage/system.py2
-rw-r--r--portato/gui/gtk/windows.py11
4 files changed, 37 insertions, 13 deletions
diff --git a/portato/backend/package.py b/portato/backend/package.py
index 0039fc0..70773cc 100644
--- a/portato/backend/package.py
+++ b/portato/backend/package.py
@@ -260,9 +260,11 @@ class Package:
raise NotImplementedError
- def is_masked (self):
+ def is_masked (self, use_changed = True):
"""Returns True if either masked by package.mask or by profile.
+ @param use_changed: Controls, whether changes applied to masking keywords are taken into account.
+ @type use_changed: boolean
@returns: True if masked / False otherwise
@rtype: boolean"""
diff --git a/portato/backend/portage/package.py b/portato/backend/portage/package.py
index ed90db0..b455530 100644
--- a/portato/backend/portage/package.py
+++ b/portato/backend/portage/package.py
@@ -74,16 +74,29 @@ class PortagePackage (Package):
else:
return status
- def is_masked (self):
- status = flags.new_masking_status(self.get_cpv())
- if status != None: # we have locally changed it
- if status == "masked": return True
- elif status == "unmasked": return False
- else:
- debug("BUG in flags.new_masking_status. It returns",status)
- else: # we have not touched the status
- if self._status and ("profile" in self._status or "package.mask" in self._status):
- return True
+ def is_masked (self, use_changed = True):
+
+ if use_changed:
+ status = flags.new_masking_status(self.get_cpv())
+ if status != None: # we have locally changed it
+ if status == "masked": return True
+ elif status == "unmasked": return False
+ else:
+ debug("BUG in flags.new_masking_status. It returns",status)
+ else: # we have not touched the status
+ if self._status and ("profile" in self._status or "package.mask" in self._status):
+ return True
+ return False
+ else:
+ try:
+ masked = self._settings.settings.pmaskdict[self.get_cp()]
+ except KeyError: # key error: not masked
+ return False
+
+ for cpv in masked:
+ if self.matches(cpv):
+ return True
+
return False
def get_all_use_flags (self, installed = False):
diff --git a/portato/backend/portage/system.py b/portato/backend/portage/system.py
index 9cda5ab..3e0c539 100644
--- a/portato/backend/portage/system.py
+++ b/portato/backend/portage/system.py
@@ -207,7 +207,7 @@ class PortageSystem (SystemInterface):
t2 = unique_array(t2)
return self.geneticize_list(t2)
else:
- return t;
+ return t
def find_all_world_packages (self, name = None):
world = filter(self.find_lambda(name), [x.get_cpv() for x in self.find_world_packages()[0]])
diff --git a/portato/gui/gtk/windows.py b/portato/gui/gtk/windows.py
index 2de772f..5b89aba 100644
--- a/portato/gui/gtk/windows.py
+++ b/portato/gui/gtk/windows.py
@@ -571,12 +571,21 @@ class PackageTable:
if self.doEmerge:
self.emergeBtn.set_sensitive(True)
self.installedCheck.set_active(pkg.is_installed())
- self.maskedCheck.set_active(pkg.is_masked())
+
+ if pkg.is_masked(use_changed = False) and not pkg.is_masked(use_changed = True):
+ self.maskedCheck.set_label("<i>(Masked)</i>")
+ self.maskedCheck.get_child().set_use_markup(True)
+ else:
+ self.maskedCheck.set_label("Masked")
+
+ self.maskedCheck.set_active(pkg.is_masked(use_changed = False))
+
if pkg.is_testing(use_keywords = False) and not pkg.is_testing(use_keywords = True):
self.testingCheck.set_label("<i>(Testing)</i>")
self.testingCheck.get_child().set_use_markup(True)
else:
self.testingCheck.set_label("Testing")
+
self.testingCheck.set_active(pkg.is_testing(use_keywords = False))
if self.doEmerge: