]> gitweb @ CieloNegro.org - Rakka.git/blob - js/localFile.js
Eliminated <input type
[Rakka.git] / js / localFile.js
1 (function () {
2
3      Rakka.canAccessLocalFile = function () {
4          return $.browser.mozilla;
5      };
6
7      var loadBin_mozilla = function (path) {
8          try {
9              netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
10          }
11          catch (e) {
12              alert("Permission to read local file was denied. " +
13                    "Open about:config and check that " +
14                    "signed.applets.codebase_principal_support is set to true.");
15          }
16
17          var localFile
18              = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
19          localFile.initWithPath(path);
20
21          var stream
22              = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
23          stream.init(localFile, 0x01, 00004, null);
24
25          var bstream
26              = Components.classes["@mozilla.org/network/buffered-input-stream;1"].getService();
27          bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
28          bstream.init(stream, 1000);
29          bstream.QueryInterface(Components.interfaces.nsIInputStream);
30
31          var binary
32              = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
33          binary.setInputStream(stream);
34
35          return binary.readBytes(binary.available());
36      };
37
38      var selectFile_mozilla = function (title, mode) {
39          try {
40              netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
41          }
42          catch (e) {
43              alert("Permission to select local file was denied. " +
44                    "Open about:config and check that " +
45                    "signed.applets.codebase_principal_support is set to true.");
46          }
47
48          var nsIFilePicker = Components.interfaces.nsIFilePicker;
49
50          var modeID;
51          if (mode == "open") {
52              modeID = nsIFilePicker.modeOpen;
53          }
54          else if (mode == "save") {
55              modeID = nsIFilePicker.modeSave;
56          }
57          else if (mode == "getFolder") {
58              modeID = nsIFilePicker.modeGetFolder;
59          }
60          else if (mode == "modeOpenMultiple") {
61              modeID = nsIFilePicker.modeOpenMultiple;
62          }
63          else {
64              throw new Error("Unknown file picker mode: " + mode);
65          }
66
67          var picker = Components
68                           .classes["@mozilla.org/filepicker;1"]
69                               .createInstance(nsIFilePicker);
70          picker.init(window, title, modeID);
71          picker.appendFilters(nsIFilePicker.filterAll);
72
73          var ret = picker.show();
74          if (ret == nsIFilePicker.returnOK || ret == nsIFilePicker.returnReplace) {
75              return picker.file.path;
76          }
77          else {
78              return null;
79          }
80      };
81
82      Rakka.selectFile = function (title, mode) {
83          if ($.browser.mozilla) {
84              return selectFile_mozilla(title, mode);
85          }
86          else {
87              throw new Error("It's not possible to select local files using JavaScript with your browser. Consider using Firefox.");
88          }
89      };
90
91      Rakka.loadLocalBinaryFile = function (path) {
92          if ($.browser.mozilla) {
93              return loadBin_mozilla(path);
94          }
95          else {
96              throw new Error("It's not possible to load local files using JavaScript with your browser. Consider using Firefox.");
97          }
98      };
99
100 })();