summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNecoro <>2008-01-14 20:02:41 +0000
committerNecoro <>2008-01-14 20:02:41 +0000
commit1f2f723d4f380055e078eb780267ad563158c65d (patch)
treeba464c65c2e875edba251c82dcd4078a849362ee
parentf034912bae2f6c5d5aa88de369a877c3cbe9d04d (diff)
downloadportato-1f2f723d4f380055e078eb780267ad563158c65d.tar.gz
portato-1f2f723d4f380055e078eb780267ad563158c65d.tar.bz2
portato-1f2f723d4f380055e078eb780267ad563158c65d.zip
r621@Devoty: necoro | 2008-01-14 20:21:40 +0100
adjust changelog r622@Devoty: necoro | 2008-01-14 21:01:11 +0100 Some new views
-rw-r--r--doc/Changelog1
-rw-r--r--portato/gui/gtk/views.py81
2 files changed, 61 insertions, 21 deletions
diff --git a/doc/Changelog b/doc/Changelog
index 7e54e6d..81e04ab 100644
--- a/doc/Changelog
+++ b/doc/Changelog
@@ -6,6 +6,7 @@ next:
- added scrollbars to the update window
- handle new "use defaults" correctly
- allowed the permanent change of a plugin status
+- added "ALL" category
0.8.6.2:
- changed the pipe version and use shm instead (fixes issues with kdesu)
diff --git a/portato/gui/gtk/views.py b/portato/gui/gtk/views.py
index 46f8c65..a559aee 100644
--- a/portato/gui/gtk/views.py
+++ b/portato/gui/gtk/views.py
@@ -14,9 +14,57 @@ from __future__ import absolute_import, with_statement
import pango
import gtksourceview2
+import gtk
import logging
-class HighlightView (gtksourceview2.View):
+class LazyView (object):
+ def __init__ (self):
+ self.connect("map", self.cb_mapped)
+
+ self.pkg = None
+ self.updated = False
+
+ def update (self, pkg):
+ self.pkg = pkg
+ self.updated = True
+
+ def cb_mapped (self, *args):
+ if self.updated and self.pkg:
+ self.set_text("".join(self._get_content(self.pkg)))
+
+ return False
+
+ def set_text (self, text):
+ raise NotImplementedError
+
+ def _get_content (self):
+ raise NotImplementedError
+
+class ListView (gtk.TextView, LazyView):
+
+ def __init__ (self, content_fn):
+ self.content_fn = content_fn
+
+ gtk.TextView.__init__(self)
+ LazyView.__init__(self)
+
+ def set_text (self, text):
+ self.get_buffer().set_text(text)
+
+ def _get_content (self):
+ return self.content_fn()
+
+class InstalledOnlyView (ListView):
+ def _get_content (self):
+ if self.pkg:
+ if not self.pkg.is_installed():
+ return _("Package is not installed")
+ else:
+ return ListView._get_content(self)
+ else:
+ return ""
+
+class HighlightView (gtksourceview2.View, LazyView):
def __init__ (self, get_file_fn, languages = []):
self.get_fn = get_file_fn
@@ -38,30 +86,21 @@ class HighlightView (gtksourceview2.View):
buf.set_language(language)
gtksourceview2.View.__init__(self, buf)
+ LazyView.__init__(self)
self.set_editable(False)
self.set_cursor_visible(False)
- self.connect("map", self.cb_mapped)
-
- self.pkg = None
- self.updated = False
-
- def update (self, pkg):
- self.pkg = pkg
- self.updated = True
-
- def cb_mapped (self, *args):
- if self.updated and self.pkg:
- try:
- with open(self.get_fn(self.pkg)) as f:
- lines = f.readlines()
- except IOError, e:
- lines = _("Error: %s") % e.strerror
-
- self.get_buffer().set_text("".join(lines))
-
- return False
+ def set_text (self, text):
+ self.get_buffer().set_text(text)
+
+ def _get_content (self, pkg):
+ try:
+ with open(self.get_fn(pkg)) as f:
+ return f.readlines()
+ except IOError, e:
+ return _("Error: %s") % e.strerror
+
class LogView (logging.Handler):
colors = (