diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2013-04-29 12:55:55 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2013-04-29 14:13:29 (GMT) |
commit | ff20e276c5bd5545e20e32128d394d121be11a7a (patch) | |
tree | b94a23642fa24ae53748656e4775fbd5f251632d | |
parent | 3fe8f45eb9f5cec83fd3b369d8e1407630e7fff3 (diff) |
Allow the user to see previous logs directories - SL#2735
http://www.google-melange.com/gci/task/view/google/gci2012/8011208
Signed-off-by: Agustin Zubiaga <aguz@sugarlabs.org>
-rw-r--r-- | logviewer.py | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/logviewer.py b/logviewer.py index 1faa64d..18b43f7 100644 --- a/logviewer.py +++ b/logviewer.py @@ -81,7 +81,8 @@ class MultiLogView(Gtk.Paned): self._treeview.connect('cursor-changed', self._cursor_changed_cb) self._treeview.set_enable_search(False) - self._treemodel = Gtk.TreeStore(GObject.TYPE_STRING) + self._treemodel = Gtk.TreeStore(GObject.TYPE_STRING, + GObject.TYPE_STRING) # README: https://bugzilla.gnome.org/show_bug.cgi?id=680009 sorted = self._treemodel.sort_new_with_model() @@ -93,12 +94,17 @@ class MultiLogView(Gtk.Paned): col = Gtk.TreeViewColumn(_('Log Files'), renderer, text=0) self._treeview.append_column(col) + renderer = Gtk.CellRendererText() + col = Gtk.TreeViewColumn('', renderer, text=1) + self._treeview.append_column(col) + col.props.visible = False + self.path_iter = {} for p in self.paths: - self.path_iter[p] = self._treemodel.append(None, [p]) + self.path_iter[p] = self._treemodel.append(None, [p, '']) if len(self.extra_files): - self.extra_iter = self._treemodel.append(None, [_('Other')]) + self.extra_iter = self._treemodel.append(None, [_('Other'), '']) self.list_scroll = Gtk.ScrolledWindow() self.list_scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) @@ -163,6 +169,8 @@ class MultiLogView(Gtk.Paned): monitor.connect('changed', self._log_file_changed_cb) self._gio_monitors.append(monitor) + # We don't need monitor old logs, them will no change + for f in self.extra_files: monitor = Gio.File.new_for_path(f)\ .monitor_file(Gio.FileMonitorFlags.NONE, None) @@ -186,7 +194,7 @@ class MultiLogView(Gtk.Paned): if selection is not None: treestore, text_iter = selection.get_selected() if text_iter is not None: - self._show_log(treestore.get_value(text_iter, 0)) + self._show_log(treestore.get_value(text_iter, 1)) if treestore.iter_has_child(text_iter): path = treestore.get_path(text_iter) if treeview.row_expanded(path): @@ -219,8 +227,12 @@ class MultiLogView(Gtk.Paned): self._treeview.expand_all() - def _add_log_file(self, path): + def _add_log_file(self, path, parent=None, _dir=None): if os.path.isdir(path): + pdir, _dir = os.path.split(path) + if pdir == self.paths[0]: + self._add_old_logs_dir(pdir, _dir) + return False if not os.path.exists(path): @@ -234,14 +246,20 @@ class MultiLogView(Gtk.Paned): return False directory, logfile = os.path.split(path) + name = logfile - if not logfile in self.logs: - parent = self.extra_iter - if directory in self.path_iter: - parent = self.path_iter[directory] - tree_iter = self._treemodel.append(parent, [logfile]) + if _dir: + logfile = '%s/%s' % (_dir, logfile) + + if not logfile in self.logs or _dir: + if not parent: + parent = self.extra_iter + if directory in self.path_iter: + parent = self.path_iter[directory] + tree_iter = self._treemodel.append(parent, [name, logfile]) model = LogBuffer(path, tree_iter) + self.logs[logfile] = model log = self.logs[logfile] @@ -259,6 +277,16 @@ class MultiLogView(Gtk.Paned): self._textview.scroll_to_mark( log.get_insert(), 0, use_align=False, xalign=0.5, yalign=0.5) + def _add_old_logs_dir(self, path, _dir): + # Add a directory with their respective logs + complete = os.path.join(path, _dir) + name = time.ctime(float(_dir)) + parent = self._treemodel.append(self.path_iter[path], [name, '']) + for p in os.listdir(complete): + self._add_log_file(os.path.join(complete, p), parent, _dir) + + return parent + def _remove_log_file(self, logfile): log = self.logs[logfile] self._treemodel.remove(log.iter) |