//<Script type="text/javascript">
-var Gio = imports.gi.Gio;
-var GLib = imports.gi.GLib;
+var Gio = imports.gi.Gio;
+var GLib = imports.gi.GLib;
+var XObject = imports.XObject.XObject;
+var File = imports.File.File;
/**
* Monitor class - handles monitor managment for a large tree...
+ *
+ *
+ * This
*
* usage :
* x = new Monitor({
*
*/
-
function Monitor(cfg){
for (var i in cfg) {
this[i] = cfg[i];
*/
start : function()
{
- this.top.forEach(this.monitor, this);
+ for(var i =0;i < this.top.length; i++) {
+ this.monitor(this.top[i]);
+ }
},
/**
* stop / pause monitoring
*/
stop : function()
{
- this.monitors.forEach(function(m) {
- m.cancel();
- })
+
+ for(var i =0;i < this.monitors.length; i++) {
+ this.monitors[i].cancel();
+ }
this.monitors = [];
},
/**
_this.onEvent(fm, f, of, event_type, uh);
}
- // if we are not at top level.. and there is a .git directory (it's a submodule .. ignore)
- if (depth > 1 && GLib.file_test(path + '/.git' , GLib.FileTest.IS_DIR)) {
- return;
- }
-
-
-
-
+
var f = Gio.file_new_for_path(path);
//var cancel = new Gio.Cancellable ();
if (depth > 0) {
+
var fm = f.monitor(2,null); //Gio.FileMonitorFlags.SEND_MOVED
- fm.signal.changed.connect(fn);
+
+
+
+ XObject.isSeed ? fm.signal.changed.connect(fn) : fm.connect('changed',fn);
this.monitors.push(fm);
// print("ADD path " + depth + ' ' + path);
}
// iterate children?
-
- if (GLib.file_test(path + '/.git' , GLib.FileTest.IS_DIR) && this.initRepo) {
+ // - this is not used.
+ //if (GLib.file_test(path + '/.git' , GLib.FileTest.IS_DIR) && this.initRepo) {
- this.initRepo(path);
- }
-
+ // this.initRepo(path);
+ //}
- var file_enum = f.enumerate_children(
+ var file_enum = f.enumerate_children(
Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME + ','+
Gio.FILE_ATTRIBUTE_STANDARD_TYPE,
Gio.FileQueryInfoFlags.NONE,
null);
-
+ var next_file;
while ((next_file = file_enum.next_file(null)) != null) {
+ //print("got a file " + next_file.sudo () + '?=' + Gio.FileType.DIRECTORY);
+
if (next_file.get_file_type() != Gio.FileType.DIRECTORY) {
+ next_file = null;
continue;
}
if (next_file.get_file_type() == Gio.FileType.SYMBOLIC_LINK) {
+ next_file = null;
continue;
}
if (next_file.get_display_name()[0] == '.') {
+ next_file = null;
continue;
}
var sp = path+'/'+next_file.get_display_name();
// skip modules.
-
+ //print("got a file : " + sp);
+
+ next_file = null;
+
+
+
+ this.monitor(sp, fn, depth + 1);
- this.monitor(sp, fn, depth + 1)
}
file_enum.close(null);
}
if (GLib.file_test(file.get_path(), GLib.FileTest.EXISTS)) {
- var rp = imports.os.realpath(file.get_path());
+ var rp = File.realpath(file.get_path());
return Gio.file_new_for_path(rp);
}
var ar = file.get_path().split('/');
ar.pop();
var dirname = ar.join('/');
- var rp = imports.os.realpath(dirname);
+ var rp = File.realpath(dirname);
return Gio.file_new_for_path(rp + '/' + bn);
-
},
+
+
dir : GLib.path_get_dirname(of.get_path())
}
}
-
+ var event_name = 'UKNOWN';;
for(var i in Gio.FileMonitorEvent) {
if (Gio.FileMonitorEvent[i] == event_type) {
}
}
- //print ("got event: " +event_name);
+ //print (JSON.stringify([event_name , f.get_path(), of ? of.get_path() : false ] ));
//print ("got src: " + src.toString());
//print ("got event: " + src.toString());
try {