Xcos: fix loadXcosLibs after a43c4fbb51
[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
20     // list of scicos libraries that we need at xcos launch
21     listlibsname = [];
22
23     for theLib = scicos_pal_libs
24         if isfile("SCI/modules/scicos_blocks/macros/" + theLib + "/lib") then
25             load("SCI/modules/scicos_blocks/macros/" + theLib + "/lib");
26             listlibsname = [listlibsname, theLib];
27         end
28     end
29     clear theLib;
30
31     if isfile("SCI/modules/scicos/macros/scicos_scicos/lib") then
32         load("SCI/modules/scicos/macros/scicos_scicos/lib");
33         listlibsname = [listlibsname, "scicos_scicos", "scicos_utils", "scicos_auto"];
34     end
35
36     // name and libname
37     listlibsname(listlibsname == "MatrixOp") = "Matrixop";
38     listlibsname(listlibsname == "NonLinear") = "Nonlinear";
39     listlibsname(listlibsname == "IntegerOp") = "Integerop";
40
41     if listlibsname <> [] then
42         resumedLibs = listlibsname + "lib";
43     else
44         resumedLibs = string([]);
45     end
46
47     // Compatibility interface functions
48     function [x,y,typ]=COMPAT_BLOCK(job,arg1,arg2)
49         // Throw an error on block access
50         x=[];y=[];typ=[]
51         if ~exists("arg1") then
52             arg1 = mlist(["Block", "gui"], "COMPAT_BLOCK");
53         end
54         error(msprintf(gettext("%s: the block ""%s"" is no more available, please update the diagram with a compatible one."), "loadXcosLibs", arg1.gui));
55     endfunction
56
57     // removed blocks
58     removed = [
59     "AFFICH_f"
60     "RFILE"
61     "WFILE"];
62     prot = funcprot();
63     funcprot(0);
64     execstr(strcat(removed + "=COMPAT_BLOCK; "));
65     funcprot(prot);
66
67     resumedBlocks = removed';
68
69     // Put all resumed symbols into the parent scope
70     //    Take care: resume() will also return to the parent scope
71     execstr("[" + strcat([resumedLibs resumedBlocks], ", ") + "] = resume(" + strcat([resumedLibs resumedBlocks], ", ") + ");");
72 endfunction
73