Enable export via driver/xinit/xend
[scilab.git] / scilab / modules / graphic_export / sci_gateway / cpp / sci_driver.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Scilab Enterprises - 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 <string.h>
14
15 extern "C"
16 {
17 #include "getScilabJavaVM.h"
18 #include "Scierror.h"
19 #include "api_scilab.h"
20 #include "localization.h"
21
22 #include "gw_graphic_export.h"
23 }
24
25 #include "SwingView.hxx"
26 #include "Driver.hxx"
27
28 #if _MSC_VER
29 #define strcasecmp _stricmp
30 #endif
31
32 /*--------------------------------------------------------------------------*/
33 int sci_driver(char * fname, unsigned long fname_len )
34 {
35     SciErr err;
36     int * addr = 0;
37     char * driver = 0;
38     bool ok = true;
39
40     CheckRhs(1, 1);
41
42     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
43     if (err.iErr)
44     {
45         printError(&err, 0);
46         Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
47         return 0;
48     }
49
50     if (!isStringType(pvApiCtx, addr) || !checkVarDimension(pvApiCtx, addr, 1, 1))
51     {
52         Scierror(999, gettext("%s: Wrong type for input argument #%d: A string expected.\n"), fname, 1);
53         return 0;
54     }
55
56     if (getAllocatedSingleString(pvApiCtx, addr, &driver) != 0)
57     {
58         Scierror(999, _("%s: No more memory.\n"), fname);
59         return 0;
60     }
61
62     ok = org_scilab_modules_graphic_export::Driver::setDriver(getScilabJavaVM(), driver);
63     if (!ok)
64     {
65         Scierror(999, _("%s: Invalid driver: %s.\n"), fname, driver);
66         freeAllocatedSingleString(driver);
67         return 0;
68     }
69
70     org_scilab_modules_gui::SwingView::setHeadless(getScilabJavaVM(), strcasecmp(driver, "X11") && strcasecmp(driver, "Rec"));
71
72     freeAllocatedSingleString(driver);
73
74     LhsVar(1) = 0;
75     PutLhsVar();
76     return 0;
77 }
78 /*--------------------------------------------------------------------------*/