summaryrefslogtreecommitdiff
path: root/portato/gui
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--portato/gui/gtk/views.py81
1 files changed, 60 insertions, 21 deletions
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 = (
/+293 2008-01-18 r655@Devoty: necoro | 2008-01-18 03:04:53 +0100Necoro1-1/+1 2008-01-18 r651@Devoty: necoro | 2008-01-18 02:41:51 +0100Necoro3-393/+513 2008-01-18 r643@Devoty: necoro | 2008-01-16 18:55:49 +0100Necoro14-249/+525 2008-01-14 r634@Devoty: necoro | 2008-01-14 23:48:24 +0100Necoro3-1/+4 2008-01-14 r632@Devoty: necoro | 2008-01-14 23:44:52 +0100Necoro3-175/+181 2008-01-14(no commit message)Necoro10-758/+1014 2008-01-14 r621@Devoty: necoro | 2008-01-14 20:21:40 +0100Necoro2-21/+61 2008-01-14 r618@Devoty: necoro | 2008-01-14 20:19:05 +0100Necoro2-35/+57 2008-01-14 r617@Devoty: necoro | 2008-01-14 19:12:59 +0100Necoro2-10/+10 2008-01-14 r609@Devoty: necoro | 2008-01-14 17:04:38 +0100Necoro9-394/+477 2008-01-14 r605@Devoty: necoro | 2008-01-14 11:43:34 +0100Necoro2-26/+129 2008-01-14 r603@Devoty: necoro | 2008-01-14 11:30:26 +0100Necoro4-26/+38 2008-01-11 r598@Devoty: necoro | 2008-01-10 16:36:29 +0100Necoro4-10/+50 2008-01-11 r597@Devoty: necoro | 2008-01-10 14:12:35 +0100Necoro1-3/+3 2008-01-10 r595@Devoty: necoro | 2008-01-10 04:04:15 +0100Necoro1-52/+3 2008-01-09 r586@Devoty: necoro | 2008-01-09 14:54:18 +0100Necoro1-1/+1 2007-12-06 r577@Devoty: necoro | 2007-12-06 20:37:36 +0100Necoro1-1/+1 2007-12-06 r572@Devoty: necoro | 2007-11-28 08:48:15 +0100Necoro1-0/+1 2007-11-27 r570@Devoty: necoro | 2007-11-27 02:08:21 +0100Necoro3-84/+108