208fdf9cf1086bbd51aa3705c3f3034eb75ea816
[scilab.git] / scilab / modules / preferences / macros / createXConfiguration.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9
10 // Create the XConfiguration.xml if it is not present in SCIHOME
11 // This function is useful when Scilab is launched in nwni mode for the first
12 // time (atoms could be used in this mode and need proxy settings which are
13 // stored in the prefs file).
14 //
15 function createXConfiguration()
16     path = SCIHOME + "/XConfiguration.xml";
17     if fileinfo(path) ~= [] then
18         return
19     end;
20
21     doc = xmlRead(SCI + "/modules/preferences/etc/XConfiguration.xml");
22     modules = ls(SCI + "/modules/*");
23     xmls = [];
24     for m = modules'
25         xmls = [xmls ; ls(m + "/etc/XConfiguration-*.xml")];
26     end
27
28     children = doc.root.children;
29
30     meta = "ctrl";
31     if getos() == "Darwin" then
32         meta = "meta";
33     end
34
35     for xml = xmls'
36         xdoc = xmlRead(xml);
37         if basename(xml) == "XConfiguration-general" then
38             xp = xmlXPath(xdoc, "//shortcuts/body/actions/action-folder/action[contains(@key,''OSSCKEY'')]");
39             for i = 1:xp.size
40                 e = xp(i);
41                 attr = e.attributes;
42                 attr.key = strsubst(attr.key, "OSSCKEY", meta);
43             end
44         end
45         pos = xmlXPath(doc, "count(//" + xdoc.root.name + "/preceding-sibling::*)+1");
46         if children(pos).name == xdoc.root.name then
47             children(pos) = xdoc.root;
48         end
49         xmlDelete(xdoc);
50     end
51
52     xmlWrite(doc, path, %T);
53     xmlDelete(doc);
54 endfunction
55