*
*/
-public class Monitor : Object
+public abstract class gitMonitorBase : Object
+{
+ public abstract void monitor(string path, int depth = 0);
+}
+
+public class Monitor : gitMonitorBase
{
*
*
*/
- public void monitor(string path, int depth = 0)
+ public override void monitor(string path, int depth = 0)
{
- stdout.printf("ADD: (%d): %s\n", depth, path);
+ //GLib.debug("ADD: (%d): %s\n", depth, path);
//depth = typeof(depth) == 'number' ? depth *1 : 0;
depth = depth > 0 ? depth *1 : 0;
//fn = fn || function (fm, f, of, event_type, uh) {
// _this.onEvent(fm, f, of, event_type, uh);
//}
-
-
+
var f = File.new_for_path(path);
//var cancel = new Gio.Cancellable ();
if (depth > 0) {
try {
-
- var fm = f.monitor(FileMonitorFlags.SEND_MOVED,null); //Gio.FileMonitorFlags.SEND_MOVED
+ var fm = f.monitor(FileMonitorFlags.SEND_MOVED + FileMonitorFlags.WATCH_MOVES,null);
+ //var fm = f.monitor(FileMonitorFlags.WATCH_MOVES,null);
fm.changed.connect( this.onEvent );
this.monitors.append_val(fm);
} catch (Error e) {
+ GLib.debug("Error adding monitor: %s\n", e.message);
+ GLib.debug("Try: \n\nsudo su\necho 512 > /proc/sys/fs/inotify/max_user_instances\n");
// FIXME -- show error? do nothing..
}
// print("ADD path " + depth + ' ' + path);
return;
case FileMonitorEvent.MOVED: // eg. chmod/chatt
+ case FileMonitorEvent.MOVED_IN: // eg. chmod/chatt
+ case FileMonitorEvent.MOVED_OUT: // eg. chmod/chatt
+ case FileMonitorEvent.RENAMED: // eg. chmod/chatt
- var of = this.realpath(of_orig);
- var dest = new MonitorNamePathDir(
- of.get_basename(),
- of.get_path(),
- Path.get_dirname(of.get_path())
- );
-
+ var of = this.realpath(of_orig);
+ var dest = new MonitorNamePathDir(
+ of.get_basename(),
+ of.get_path(),
+ Path.get_dirname(of.get_path())
+ );
src.action = "moved";
dest.action = "moved";
this.onMoved(src,dest);
return;
+
+
default:
stdout.printf("event type not handled %u", event_type);
break;