]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - js/localFile.js
Eliminated <input type
[Rakka.git] / js / localFile.js
index 1a6fbfec73a012872318dbefc2ab58daa52a14b9..40d4ac8376c8c43e9d219887703176f21b09473f 100644 (file)
 (function () {
 
-    Rakka.canAccessLocalFile = function () {
-        return $.browser.mozilla;
-    };
-
-    var loadBin_mozilla = function (path) {
-        try {
-            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-        }
-        catch (e) {
-            alert("Permission to read local file was denied. " +
-                  "Open about:config and check that " +
-                  "signed.applets.codebase_principal_support is set to true.");
-        }
-
-        var localFile
-            = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
-        localFile.initWithPath(path);
-
-        var stream
-            = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
-        stream.init(localFile, 0x01, 00004, null);
-
-        var bstream
-            = Components.classes["@mozilla.org/network/buffered-input-stream;1"].getService();
-        bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
-        bstream.init(stream, 1000);
-        bstream.QueryInterface(Components.interfaces.nsIInputStream);
-
-        var binary
-            = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
-        binary.setInputStream(stream);
-
-        return binary.readBytes(binary.available());
-    };
-
-    Rakka.loadLocalBinaryFile = function (path) {
-        if ($.browser.mozilla) {
-            return loadBin_mozilla(path);
-        }
-    };
-    
+     Rakka.canAccessLocalFile = function () {
+         return $.browser.mozilla;
+     };
+
+     var loadBin_mozilla = function (path) {
+         try {
+             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+         }
+         catch (e) {
+             alert("Permission to read local file was denied. " +
+                   "Open about:config and check that " +
+                   "signed.applets.codebase_principal_support is set to true.");
+         }
+
+         var localFile
+             = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+         localFile.initWithPath(path);
+
+         var stream
+             = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
+         stream.init(localFile, 0x01, 00004, null);
+
+         var bstream
+             = Components.classes["@mozilla.org/network/buffered-input-stream;1"].getService();
+         bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
+         bstream.init(stream, 1000);
+         bstream.QueryInterface(Components.interfaces.nsIInputStream);
+
+         var binary
+             = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
+         binary.setInputStream(stream);
+
+         return binary.readBytes(binary.available());
+     };
+
+     var selectFile_mozilla = function (title, mode) {
+         try {
+             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+         }
+         catch (e) {
+             alert("Permission to select local file was denied. " +
+                   "Open about:config and check that " +
+                   "signed.applets.codebase_principal_support is set to true.");
+         }
+
+         var nsIFilePicker = Components.interfaces.nsIFilePicker;
+
+         var modeID;
+         if (mode == "open") {
+             modeID = nsIFilePicker.modeOpen;
+         }
+         else if (mode == "save") {
+             modeID = nsIFilePicker.modeSave;
+         }
+         else if (mode == "getFolder") {
+             modeID = nsIFilePicker.modeGetFolder;
+         }
+         else if (mode == "modeOpenMultiple") {
+             modeID = nsIFilePicker.modeOpenMultiple;
+         }
+         else {
+             throw new Error("Unknown file picker mode: " + mode);
+         }
+
+         var picker = Components
+                          .classes["@mozilla.org/filepicker;1"]
+                             .createInstance(nsIFilePicker);
+         picker.init(window, title, modeID);
+         picker.appendFilters(nsIFilePicker.filterAll);
+
+         var ret = picker.show();
+         if (ret == nsIFilePicker.returnOK || ret == nsIFilePicker.returnReplace) {
+             return picker.file.path;
+         }
+         else {
+             return null;
+         }
+     };
+
+     Rakka.selectFile = function (title, mode) {
+         if ($.browser.mozilla) {
+             return selectFile_mozilla(title, mode);
+         }
+         else {
+             throw new Error("It's not possible to select local files using JavaScript with your browser. Consider using Firefox.");
+         }
+     };
+
+     Rakka.loadLocalBinaryFile = function (path) {
+         if ($.browser.mozilla) {
+             return loadBin_mozilla(path);
+         }
+         else {
+             throw new Error("It's not possible to load local files using JavaScript with your browser. Consider using Firefox.");
+         }
+     };
+
 })();
\ No newline at end of file