diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2012-06-15 01:23:46 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2012-06-15 01:23:46 (GMT) |
commit | 94ed81d6c7faa7ec0e76a7be11599c947841e99d (patch) | |
tree | c9f7066ab5d315e6cb060656151d7eb9f2a4e7e5 | |
parent | 335a2594e34ae997b1a5f20b94cce4cc22228866 (diff) |
Implement file monitoring in logviewer using gio
Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
-rw-r--r-- | develop-activity/PENDING | 4 | ||||
-rw-r--r-- | develop-activity/logviewer.py | 40 |
2 files changed, 21 insertions, 23 deletions
diff --git a/develop-activity/PENDING b/develop-activity/PENDING index 9415417..0abbd31 100644 --- a/develop-activity/PENDING +++ b/develop-activity/PENDING @@ -1,11 +1,7 @@ PENDING - - * In logviewer.py, there are comments referencing activities (copy/pasted code) -* In logviewer.py, file monitoring is commented because used gnomevfs - * Icons to "show sources" and "show log" buttons. * In the treeviews, sort first the directories and next the files. diff --git a/develop-activity/logviewer.py b/develop-activity/logviewer.py index 14549c7..5b0ec3b 100644 --- a/develop-activity/logviewer.py +++ b/develop-activity/logviewer.py @@ -23,7 +23,7 @@ import logging from gettext import gettext as _ import gtk -#import gnomevfs +import gio import activity_model from sourceview_editor import TabLabel @@ -56,7 +56,7 @@ class LogMinder(gtk.VBox): extra_files.append("/var/log/syslog") extra_files.append("/var/log/messages") - self._logs_path = path + self._logs_path = path + '/' self._active_log = None self._extra_files = extra_files self._namefilter = namefilter @@ -82,33 +82,36 @@ class LogMinder(gtk.VBox): self._tv_menu.set_model(self._model) self._logs = {} + self._monitors = [] # Activities menu - self.activity.treenotebook.append_page(gtk.Label(_("Log")), scrolled) + self.activity.treenotebook.add_page(_("Log"), scrolled) - # TODO: gnomevfs is deprecated - #self._configure_watcher() + self._configure_watcher() def _configure_watcher(self): - gnomevfs.monitor_add('file://' + self._logs_path, - gnomevfs.MONITOR_DIRECTORY, - self._log_file_changed_cb) + logging.error('Monitor directory %s', self._logs_path) + dir_monitor = gio.File(self._logs_path).monitor_directory() + dir_monitor.set_rate_limit(2000) + dir_monitor.connect('changed', self._log_file_changed_cb) + self._monitors.append(dir_monitor) for f in self._extra_files: - gnomevfs.monitor_add('file://' + f, - gnomevfs.MONITOR_FILE, - self._log_file_changed_cb) + logging.error('Monitor file %s', f) + file_monitor = gio.File(f).monitor_file() + file_monitor.set_rate_limit(2000) + file_monitor.connect('changed', self._log_file_changed_cb) + self._monitors.append(file_monitor) - def _log_file_changed_cb(self, monitor_uri, info_uri, event): - path = info_uri.split('file://')[-1] - dir, logfile = os.path.split(path) + def _log_file_changed_cb(self, monitor, path1, path2, event): + _directory, logfile = os.path.split(str(path1)) - if event == gnomevfs.MONITOR_EVENT_CHANGED: + if event == gio.FILE_MONITOR_EVENT_CHANGED: for log in self._openlogs: if logfile in log.logpath: log.update() - elif (event == gnomevfs.MONITOR_EVENT_DELETED - or event == gnomevfs.MONITOR_EVENT_CREATED): + elif (event == gio.FILE_MONITOR_EVENT_DELETED + or event == gio.FILE_MONITOR_EVENT_CREATED): self._model.refresh() #If the log is open, just leave it that way @@ -137,8 +140,7 @@ class LogMinder(gtk.VBox): gtk.POLICY_AUTOMATIC) scrollwnd.add(newlogview) scrollwnd.page = newlogview - tablabel = TabLabel(label=node["name"]) - tablabel.page = newlogview + tablabel = TabLabel(newlogview, label=node["name"]) self.activity.editor.append_page(scrollwnd, tablabel) self.activity.editor.set_current_page(-1) |