load: avoid creation of double axes in figure
[scilab.git] / scilab / modules / gui / sci_gateway / cpp / sci_datatip_set_interp.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2013 - Gustavo Barbosa Libotte <gustavolibotte@gmail.com>
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 #include "DatatipCreate.hxx"
17
18 extern "C"
19 {
20 #include "api_scilab.h"
21 #include "getScilabJavaVM.h"
22 #include "localization.h"
23 #include "Scierror.h"
24 #include "gw_gui.h"
25 #include "HandleManagement.h"
26 #include "getGraphicObjectProperty.h"
27 #include "setGraphicObjectProperty.h"
28 #include "graphicObjectProperties.h"
29 }
30
31 using namespace org_scilab_modules_gui_datatip;
32
33 int sci_datatip_set_interp(char *fname, void* pvApiCtx)
34 {
35     int iDatatipUID     = 0;
36     int* piAddr         = NULL;
37     long long llHandle  = 0;
38     int interpIntBool   = 0;
39     int iErr            = 0;
40
41     int iType = 0;
42     int *piType = &iType;
43
44     SciErr sciErr;
45     CheckInputArgument(pvApiCtx, 2, 2);
46     CheckOutputArgument(pvApiCtx, 0, 1);
47
48     if (nbInputArgument(pvApiCtx) == 2)
49     {
50         sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
51         if (sciErr.iErr)
52         {
53             printError(&sciErr, 0);
54             return 1;
55         }
56
57         iErr = getScalarHandle(pvApiCtx, piAddr, &llHandle);
58         if (iErr)
59         {
60             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
61             return 1;
62         }
63
64         iDatatipUID = getObjectFromHandle((unsigned long) llHandle);
65
66         if (checkInputArgumentType(pvApiCtx, 1, sci_handles))
67         {
68             getGraphicObjectProperty(iDatatipUID, __GO_TYPE__, jni_int, (void**) &piType);
69             if (iType == __GO_DATATIP__ || iType == __GO_POLYLINE__)
70             {
71                 if (checkInputArgumentType(pvApiCtx, 2, sci_boolean))
72                 {
73                     sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddr);
74                     if (sciErr.iErr)
75                     {
76                         printError(&sciErr, 0);
77                         return 1;
78                     }
79
80                     iErr = getScalarBoolean(pvApiCtx, piAddr, &interpIntBool);
81                     if (iErr)
82                     {
83                         Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 2);
84                         return 1;
85                     }
86
87                     DatatipCreate::datatipSetInterp(getScilabJavaVM(), iDatatipUID, interpIntBool != 0);
88                 }
89                 else
90                 {
91                     Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), fname, 2);
92                     return 1;
93                 }
94             }
95             else
96             {
97                 Scierror(999, _("%s: Wrong type for input argument #%d: A '%s' handle expected.\n"), fname, 1, "Datatip");
98                 return 1;
99             }
100         }
101         else
102         {
103             Scierror(999, _("%s: Wrong type for input argument #%d: A '%s' handle expected.\n"), fname, 1, "Datatip");
104             return 1;
105         }
106     }
107     else
108     {
109         Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 2);
110         return 1;
111     }
112
113     AssignOutputVariable(pvApiCtx, 1) = 0;
114     ReturnArguments(pvApiCtx);
115     return 0;
116 }