load: avoid creation of double axes in figure
[scilab.git] / scilab / modules / gui / sci_gateway / cpp / sci_datatip_toggle.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 "DatatipManager.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 "CurrentFigure.h"
27 }
28
29 using namespace org_scilab_modules_gui_datatip;
30
31 int sci_datatip_toggle(char *fname, void* pvApiCtx)
32 {
33     int iFigureUID      = 0;
34
35     int iErr            = 0;
36     bool enabled        = false;
37     long long llHandle  = 0;
38     int* piAddr         = 0;
39
40     SciErr sciErr;
41     CheckInputArgument(pvApiCtx, 0, 1);
42     CheckOutputArgument(pvApiCtx, 0, 1);
43
44     if (nbInputArgument(pvApiCtx) == 0)
45     {
46         iFigureUID = getCurrentFigure();
47         if (iFigureUID)
48         {
49             enabled = DatatipManager::isEnabled(getScilabJavaVM(), iFigureUID);
50             DatatipManager::setEnabled(getScilabJavaVM(), iFigureUID, (!enabled));
51         }
52     }
53     else if (nbInputArgument(pvApiCtx) == 1)
54     {
55         sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
56         if (sciErr.iErr)
57         {
58             printError(&sciErr, 0);
59             return 1;
60         }
61
62         iErr = getScalarHandle(pvApiCtx, piAddr, &llHandle);
63         if (iErr)
64         {
65             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
66             return 1;
67         }
68
69         if (checkInputArgumentType(pvApiCtx, 1, sci_handles))
70         {
71             iFigureUID = getObjectFromHandle((unsigned long) llHandle);
72             enabled = DatatipManager::isEnabled(getScilabJavaVM(), iFigureUID);
73             DatatipManager::setEnabled(getScilabJavaVM(), iFigureUID, (!enabled));
74         }
75         else
76         {
77             Scierror(999, _("%s: Wrong type for input argument #%d: A '%s' handle expected.\n"), fname, 1, "Datatip");
78             return 1;
79         }
80     }
81     else
82     {
83         Scierror(999, _("%s: Wrong number for input argument: %d or %d expected.\n"), fname, 0, 1);
84         return 1;
85     }
86
87     AssignOutputVariable(pvApiCtx, 1) = 0;
88     ReturnArguments(pvApiCtx);
89     return 0;
90 }