3d678e0c73aa3de90c8b35e90d2fe3596ab5a65f
[scilab.git] / scilab / modules / xcos / macros / loadXcosLibs.sci
1 //
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2009 - DIGITEO - Allan CORNET
4 // Copyright (C) 2011 - DIGITEO - ClĂ©ment DAVID
5 //
6 // Copyright (C) 2012 - 2016 - Scilab Enterprises
7 //
8 // This file is hereby licensed under the terms of the GNU GPL v2.0,
9 // pursuant to article 5.3.4 of the CeCILL v.2.1.
10 // This file was originally licensed under the terms of the CeCILL v2.1,
11 // and continues to be available under such terms.
12 // For more information, see the COPYING file which you should have received
13 // along with this program.
14 //
15 //
16 function loadXcosLibs()
17     // Extracted from initial_scicos_tables
18     scicos_pal_libs = ["Branching","Events","Misc","Sinks","Threshold","Linear","MatrixOp","NonLinear","Sources","Electrical","Hydraulics","PDE","IntegerOp"];
19     scicos_libs = ["scicos_scicos","scicos_utils","scicos_auto"];
20
21     // list of scicos libraries that we need at xcos launch
22     listlibsname = [];
23
24     for theLib = scicos_pal_libs
25         if isfile("SCI/modules/scicos_blocks/macros/" + theLib + "/lib") then
26             load("SCI/modules/scicos_blocks/macros/" + theLib + "/lib");
27             listlibsname = [listlibsname, theLib];
28         end
29     end
30
31     for theLib = scicos_libs
32         if isfile("SCI/modules/scicos/macros/" + theLib + "/lib") then
33             load("SCI/modules/scicos/macros/" + theLib + "/lib");
34             listlibsname = [listlibsname, theLib];
35         end
36     end
37
38     // name and libname
39     listlibsname(listlibsname == "MatrixOp") = "Matrixop";
40     listlibsname(listlibsname == "NonLinear") = "Nonlinear";
41     listlibsname(listlibsname == "IntegerOp") = "Integerop";
42
43     if listlibsname <> [] then
44         resumedLibs = listlibsname + "lib";
45     else
46         resumedLibs = string([]);
47     end
48
49     // Compatibility interface functions
50     function [x,y,typ]=COMPAT_BLOCK(job,arg1,arg2)
51         // Throw an error on block access
52         x=[];y=[];typ=[]
53         if ~exists("arg1") then
54             arg1 = mlist(["Block", "gui"], "COMPAT_BLOCK");
55         end
56         error(msprintf(gettext("%s: the block ""%s"" is no more available, please update the diagram with a compatible one."), "loadXcosLibs", arg1.gui));
57     endfunction
58
59     // removed blocks
60     removed = [
61     "AFFICH_f"
62     "RFILE"
63     "WFILE"];
64     prot = funcprot();
65     funcprot(0);
66     execstr(strcat(removed + "=COMPAT_BLOCK; "));
67     funcprot(prot);
68
69     resumedBlocks = removed';
70
71     // Put all resumed symbols into the parent scope
72     //    Take care: resume() will also return to the parent scope
73     execstr("[" + strcat([resumedLibs resumedBlocks], ", ") + "] = resume(" + strcat([resumedLibs resumedBlocks], ", ") + ");");
74 endfunction
75