Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-10-16 14:26:37 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-10-16 14:26:37 (GMT)
commit790129cb522e6cfe040a22bc4b42b9e29455331f (patch)
treedcf43213bfed00b9f223e3a2d2a6fdfa8c133a0c /shell
parent69647f75b7a0299434bb6cdc006ccc5d996a0feb (diff)
Add support for multiple logs
Diffstat (limited to 'shell')
-rwxr-xr-xshell/sugar-log-viewer61
1 files changed, 47 insertions, 14 deletions
diff --git a/shell/sugar-log-viewer b/shell/sugar-log-viewer
index 4408b20..68b88b8 100755
--- a/shell/sugar-log-viewer
+++ b/shell/sugar-log-viewer
@@ -32,9 +32,9 @@ class LogBuffer(gtk.TextBuffer):
self._logfile = logfile
self._pos = 0
- gobject.timeout_add(1000, self._update)
+ self.update()
- def _update(self):
+ def update(self):
f = open(self._logfile, 'r')
f.seek(self._pos)
@@ -45,6 +45,47 @@ class LogBuffer(gtk.TextBuffer):
return True
+class LogView(gtk.ScrolledWindow):
+ def __init__(self, model):
+ gtk.ScrolledWindow.__init__(self)
+
+ self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+
+ log_file = os.path.join(env.get_profile_path(), 'sugar.log')
+ textview = gtk.TextView(model)
+ textview.set_wrap_mode(gtk.WRAP_WORD)
+ textview.set_editable(False)
+
+ self.add(textview)
+ textview.show()
+
+class MultiLogView(gtk.Notebook):
+ def __init__(self, path):
+ gtk.Notebook.__init__(self)
+
+ self._logs_path = path
+ self._pages = {}
+
+ self._update()
+ gobject.timeout_add(1000, self._update)
+
+ def _add_page(self, logfile):
+ full_log_path = os.path.join(self._logs_path, logfile)
+ model = LogBuffer(full_log_path)
+
+ view = LogView(model)
+ self.append_page(view, gtk.Label(logfile))
+ view.show()
+
+ self._pages[logfile] = model
+
+ def _update(self):
+ for logfile in os.listdir(self._logs_path):
+ if self._pages.has_key(logfile):
+ self._pages[logfile].update()
+ else:
+ self._add_page(logfile)
+
window = gtk.Window()
window.set_default_size(gtk.gdk.screen_width() * 3 / 4,
gtk.gdk.screen_height() * 3 / 4)
@@ -52,18 +93,10 @@ window.set_default_size(gtk.gdk.screen_width() * 3 / 4,
window.realize()
window.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
-scrolled = gtk.ScrolledWindow()
-scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-
-log_file = os.path.join(env.get_profile_path(), 'sugar.log')
-textview = gtk.TextView(LogBuffer(log_file))
-textview.set_wrap_mode(gtk.WRAP_WORD)
-textview.set_editable(False)
-scrolled.add(textview)
-textview.show()
-
-window.add(scrolled)
-scrolled.show()
+path = os.path.join(env.get_profile_path(), 'logs')
+viewer = MultiLogView(path)
+window.add(viewer)
+viewer.show()
window.show()