rename to addModulePreferences and removeModulePreferences
[scilab.git] / scilab / modules / preferences / sci_gateway / cpp / sci_addModulePreferences.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #include "ScilabPreferences.hxx"
14 #include "GiwsException.hxx"
15
16 extern "C"
17 {
18 #include "gw_preferences.h"
19 #include "stack-c.h"
20 #include "Scierror.h"
21 #include "api_scilab.h"
22 #include "localization.h"
23 #include "getScilabJavaVM.h"
24 #include "expandPathVariable.h"
25 #include "MALLOC.h"
26 }
27
28 using namespace org_scilab_modules_preferences;
29
30 /*--------------------------------------------------------------------------*/
31 int sci_addModulePreferences(char * fname, unsigned long fname_len)
32 {
33     SciErr err;
34     int * addr = 0;
35     char * tbxName = 0;
36     char * tbxPath = 0;
37     char * expTbxPath = 0;
38     char * tbxPrefFile = 0;
39     char * expTbxPrefFile = 0;
40     char ** array[] = {&tbxName, &tbxPath, &tbxPrefFile};
41     bool error = false;
42
43     CheckLhs(1, 1);
44     CheckRhs(3, 3);
45
46     for (int i = 0; i < Rhs; i++)
47     {
48         err = getVarAddressFromPosition(pvApiCtx, i + 1, &addr);
49         if (err.iErr)
50         {
51             printError(&err, 0);
52             return 0;
53         }
54
55         if (!isStringType(pvApiCtx, addr))
56         {
57             Scierror(999, gettext("%s: Wrong type for input argument #%i: A string expected.\n"), fname, i + 1);
58             for (int j = 0; j < i; j++)
59             {
60                 if (array[j])
61                 {
62                     freeAllocatedSingleString(*(array[j]));
63                 }
64             }
65             return 0;
66         }
67         
68         getAllocatedSingleString(pvApiCtx, addr, array[i]);
69     }
70
71     expTbxPath = expandPathVariable(const_cast<char *>(tbxPath));
72     expTbxPrefFile = expandPathVariable(const_cast<char *>(tbxPrefFile));
73
74     try
75     {
76         ScilabPreferences::addToolboxInfos(getScilabJavaVM(), tbxName, expTbxPath, expTbxPrefFile);
77     }
78     catch (const GiwsException::JniException & e)
79     {
80         Scierror(999, _("%s: A Java exception arised:\n%s"), fname, e.what());
81         error = true;
82     }
83
84     for (int i = 0; i < Rhs; i++)
85     {
86         if (array[i])
87         {
88             freeAllocatedSingleString(*(array[i]));
89         }
90     }
91     FREE(expTbxPath);
92     FREE(expTbxPrefFile);
93
94     if (!error)
95     {
96         LhsVar(1) = 0;
97         PutLhsVar();
98     }
99
100     return 0;
101 }
102 /*--------------------------------------------------------------------------*/