ebe3e1c7d2f66289fa194db260887740b3526d56
[scilab.git] / scilab / modules / xcos / sci_gateway / c / gw_xcos.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) DIGITEO - 2009-2010 - Allan CORNET <allan.cornet@scilab.org>
4  * Copyright (C) DIGITEO - 2010-2010 - ClĂ©ment DAVID <clement.david@scilab.org>
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13 /*--------------------------------------------------------------------------*/
14 #include "gw_xcos.h"
15 #include "api_scilab.h"
16 #include "MALLOC.h"
17 #include "callFunctionFromGateway.h"
18 #include "BOOL.h"
19 #include "scilabmode.h"
20 #include "localization.h"
21 #include "Scierror.h"
22 #include "BOOL.h"
23 #include "loadOnUseClassPath.h"
24 /*--------------------------------------------------------------------------*/
25 static BOOL loadedDep = FALSE;
26
27 /*--------------------------------------------------------------------------*/
28 static gw_generic_table Tab[] =
29 {
30     {sci_Xcos, "xcos"},
31     {sci_warnBlockByUID, "warnBlockByUID"},
32     {sci_closeXcosFromScilab, "closeXcos"},
33     {sci_xcosDiagramToScilab, "xcosDiagramToScilab"},
34     {sci_xcosPalLoad, "xcosPalLoad"},
35     {sci_xcosPalCategoryAdd, "xcosPalCategoryAdd"},
36     {sci_xcosPalDelete, "xcosPalDelete"},
37     {sci_xcosPalMove, "xcosPalMove"},
38     {sci_xcosPalEnable, "xcosPalEnable"},
39     {sci_xcosPalDisable, "xcosPalDisable"},
40     {sci_xcosPalGenerateIcon, "xcosPalGenerateIcon"},
41     {sci_xcosConfigureXmlFile, "xcosConfigureXmlFile"},
42     {sci_xcosAddToolsMenu, "xcosAddToolsMenu"},
43     {sci_xcosUpdateBlock, "xcosUpdateBlock"}
44 };
45
46 /*--------------------------------------------------------------------------*/
47 int gw_xcos(void)
48 {
49     Rhs = Max(0, Rhs);
50
51     if (getScilabMode() == SCILAB_NWNI)
52     {
53         Scierror(999, _("Scilab '%s' module disabled in -nogui or -nwni mode.\n"), "xcos");
54         return 0;
55     }
56
57     if (!loadedDep              // never reload
58             && Tab[Fin - 1].f != sci_closeXcosFromScilab)   // do not load on close
59     {
60         loadOnUseClassPath("Xcos");
61         loadedDep = TRUE;
62     }
63
64
65     if (pvApiCtx == NULL)
66     {
67         pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx));
68     }
69
70     pvApiCtx->pstName = (char*)Tab[Fin - 1].name;
71     callFunctionFromGateway(Tab, SIZE_CURRENT_GENERIC_TABLE(Tab));
72     return 0;
73 }
74
75 /*--------------------------------------------------------------------------*/
76 int xcosStarted(void)
77 {
78     return loadedDep;
79 }
80
81 /*--------------------------------------------------------------------------*/