* Bug #10812 fixed - cos and cosf files loading did not used a direct handler. 22/6622/1
Clément DAVID [Wed, 7 Mar 2012 13:14:37 +0000 (14:14 +0100)]
Change-Id: Id94604790bd0e783e75c0a689598157983e8cc51

38 files changed:
scilab/CHANGES_5.4.X
scilab/modules/xcos/Makefile.am
scilab/modules/xcos/Makefile.in
scilab/modules/xcos/includes/callxcos.h [deleted file]
scilab/modules/xcos/macros/%diagram_xcos.sci
scilab/modules/xcos/sci_gateway/c/gw_xcos.c
scilab/modules/xcos/sci_gateway/cpp/sci_Xcos.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_closeXcosFromScilab.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_warnBlockByUID.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosAddToolsMenu.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosConfigureXmlFile.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosDiagramToScilab.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosPalCategoryAdd.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosPalDelete.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosPalDisable.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosPalEnable.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosPalGenerateIcon.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosPalLoad.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosPalMove.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosUpdateBlock.cpp
scilab/modules/xcos/src/c/xcos.vcxproj
scilab/modules/xcos/src/c/xcos.vcxproj.filters
scilab/modules/xcos/src/cpp/callxcos.cpp [deleted file]
scilab/modules/xcos/src/java/org/scilab/modules/xcos/Xcos.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/actions/NewDiagramAction.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/actions/OpenAction.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/actions/OpenInSciAction.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/actions/RecentFileAction.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/XcosDiagram.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/io/scicos/ScilabDirectHandler.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/utils/XcosFileType.java
scilab/modules/xcos/src/jni/Xcos.cpp
scilab/modules/xcos/src/jni/Xcos.giws.xml
scilab/modules/xcos/src/jni/Xcos.hxx
scilab/modules/xcos/tests/unit_tests/%diagram_xcos.dia.ref [deleted file]
scilab/modules/xcos/tests/unit_tests/%diagram_xcos.tst [deleted file]
scilab/modules/xcos/tests/unit_tests/xcos.dia.ref
scilab/modules/xcos/tests/unit_tests/xcos.tst

index 42ed1a8..5b51f75 100644 (file)
@@ -104,6 +104,8 @@ Xcos
 
 * Bug #10800 fixed - xcosPalAddBlock help example did not work.
 
+* Bug #10812 fixed - cos and cosf files loading did not used a direct handler.
+
 
 Unitary testing
 ===============
index 1ab06c9..5288227 100644 (file)
@@ -36,8 +36,7 @@ libscixcos_la_etc_DATA = \
 
 XCOS_C_SOURCES =
 
-XCOS_CPP_SOURCES =     src/cpp/callxcos.cpp \
-                       src/jni/Xcos.cpp \
+XCOS_CPP_SOURCES =     src/jni/Xcos.cpp \
                        src/jni/Xcos.hxx \
                        src/jni/Palette.cpp \
                        src/jni/Palette.hxx \
index 8f5be69..eec75a5 100644 (file)
@@ -126,8 +126,7 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)" \
 LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
 libscixcos_algo_la_LIBADD =
 am__objects_1 =
-am__objects_2 = libscixcos_algo_la-callxcos.lo \
-       libscixcos_algo_la-Xcos.lo libscixcos_algo_la-Palette.lo \
+am__objects_2 = libscixcos_algo_la-Xcos.lo libscixcos_algo_la-Palette.lo \
        libscixcos_algo_la-Modelica.lo \
        libscixcos_algo_la-xcosUtilities.lo
 am_libscixcos_algo_la_OBJECTS = $(am__objects_1) $(am__objects_2)
@@ -470,8 +469,7 @@ libscixcos_la_etc_DATA = \
        etc/XConfiguration-xcos.xml
 
 XCOS_C_SOURCES = 
-XCOS_CPP_SOURCES = src/cpp/callxcos.cpp \
-                       src/jni/Xcos.cpp \
+XCOS_CPP_SOURCES = src/jni/Xcos.cpp \
                        src/jni/Xcos.hxx \
                        src/jni/Palette.cpp \
                        src/jni/Palette.hxx \
@@ -984,7 +982,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscixcos_algo_la-Modelica.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscixcos_algo_la-Palette.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscixcos_algo_la-Xcos.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscixcos_algo_la-callxcos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscixcos_algo_la-xcosUtilities.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscixcos_disable_la-noxcos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscixcos_la-gw_xcos.Plo@am__quote@
@@ -1059,13 +1056,6 @@ libscixcos_la-gw_xcos.lo: sci_gateway/c/gw_xcos.c
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
 
-libscixcos_algo_la-callxcos.lo: src/cpp/callxcos.cpp
-@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscixcos_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscixcos_algo_la-callxcos.lo -MD -MP -MF $(DEPDIR)/libscixcos_algo_la-callxcos.Tpo -c -o libscixcos_algo_la-callxcos.lo `test -f 'src/cpp/callxcos.cpp' || echo '$(srcdir)/'`src/cpp/callxcos.cpp
-@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscixcos_algo_la-callxcos.Tpo $(DEPDIR)/libscixcos_algo_la-callxcos.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/cpp/callxcos.cpp' object='libscixcos_algo_la-callxcos.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscixcos_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscixcos_algo_la-callxcos.lo `test -f 'src/cpp/callxcos.cpp' || echo '$(srcdir)/'`src/cpp/callxcos.cpp
-
 libscixcos_algo_la-Xcos.lo: src/jni/Xcos.cpp
 @am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscixcos_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscixcos_algo_la-Xcos.lo -MD -MP -MF $(DEPDIR)/libscixcos_algo_la-Xcos.Tpo -c -o libscixcos_algo_la-Xcos.lo `test -f 'src/jni/Xcos.cpp' || echo '$(srcdir)/'`src/jni/Xcos.cpp
 @am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscixcos_algo_la-Xcos.Tpo $(DEPDIR)/libscixcos_algo_la-Xcos.Plo
diff --git a/scilab/modules/xcos/includes/callxcos.h b/scilab/modules/xcos/includes/callxcos.h
deleted file mode 100644 (file)
index 7347f23..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- *  Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
- * 
- *  This file must be used under the terms of the CeCILL.
- *  This source file is licensed as described in the file COPYING, which
- *  you should have received as part of this distribution.  The terms
- *  are also available at
- *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- * 
- */
-
-#ifndef __CALLXCOS_H__
-#define __CALLXCOS_H__
-/*--------------------------------------------------------------------------*/
-#include <wchar.h>
-#include "dynlib_xcos.h"
-/*--------------------------------------------------------------------------*/
-/**
-* call Xcos from C
-* @param[in] _filenames to open
-* @param[in] size of _wcfilenames
-* @return 0
-*/
-XCOS_IMPEXP int callXcos(char **_filenames, int _nbfiles);
-/*--------------------------------------------------------------------------*/
-/**
-* call Xcos from C (Wide Char as input filesname)
-* used by Windows for localized files name
-* @param[in] _wcfilenames wide char encoding (filenames to open)
-* @param[in] size of _wcfilenames
-* @return 0
-*/
-XCOS_IMPEXP int callXcosW(wchar_t **_wcfilenames, int _nbfiles);
-/*--------------------------------------------------------------------------*/
-#endif /* __CALLXCOS_H__ */
index 74834aa..c0372a1 100644 (file)
@@ -20,19 +20,8 @@ function %diagram_xcos(scs_m)
 // Parameters
 //  scs_m: the diagram instance
 
-    // generate a unique temp path
-    timestamp = getdate();
-    tempfile = TMPDIR + filesep() + "xcos_scs_m_" + string(timestamp(10)) + ".h5";
-    while isfile(tempfile)
-        timestamp = timestamp + 1;
-        tempfile = TMPDIR + filesep() + "xcos_scs_m_" + string(timestamp(10)) + ".h5";
-    end
-
-    // export to hdf5
-    if export_to_hdf5(tempfile, "scs_m") then
-        // load the exported diagram
-        xcos(tempfile);
-    else
-        error(msprintf(gettext("%s: Unable to export %s to %s.\n"), "xcos", "`scs_m''", tempfile));
-    end
+    // allocate a local copy
+    scs_m = scs_m;
+    // call xcos with the copy and name
+    xcos(scs_m, "scs_m");
 endfunction
index 10570e2..ebe3e1c 100644 (file)
@@ -62,12 +62,12 @@ int gw_xcos(void)
     }
 
 
-    if(pvApiCtx == NULL)
-       {
-               pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx));
-       }
+    if (pvApiCtx == NULL)
+    {
+        pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx));
+    }
 
-       pvApiCtx->pstName = (char*)Tab[Fin-1].name;
+    pvApiCtx->pstName = (char*)Tab[Fin - 1].name;
     callFunctionFromGateway(Tab, SIZE_CURRENT_GENERIC_TABLE(Tab));
     return 0;
 }
index e115af6..f2ab61a 100644 (file)
 /*
-* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-* Copyright (C) 2009 - DIGITEO - Allan CORNET
-*
-* This file must be used under the terms of the CeCILL.
-* This source file is licensed as described in the file COPYING, which
-* you should have received as part of this distribution.  The terms
-* are also available at
-* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-*
-*/
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Allan CORNET
+ * Copyright (C) 2012 - Scilab Enterprises - Clement DAVID
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
 /*--------------------------------------------------------------------------*/
-extern "C"
-{
+#include "Xcos.hxx"
+#include "GiwsException.hxx"
+
+extern "C" {
 #include "gw_xcos.h"
-#include "callxcos.h"
+#include "MALLOC.h"
+#include "freeArrayOfString.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
-#include "MALLOC.h"
-#include "freeArrayOfString.h"
-#include "getFullFilename.h"
-#include "loadOnUseClassPath.h"
+#include "getScilabJavaVM.h"
 }
+
+using namespace org_scilab_modules_xcos;
+
+static int callXcos(char* fname, char* file, char* var);
+
 /*--------------------------------------------------------------------------*/
-int sci_Xcos(char *fname,unsigned long fname_len)
+int sci_Xcos(char *fname, unsigned long fname_len)
 {
-       CheckRhs(0,1);
-       CheckLhs(0,1);
-
-       if (Rhs == 0)
-       {
-               callXcos(NULL, 0);
-               loadOnUseClassPath(const_cast<char*>("xcos_block_rendering"));
-       }
-       else
-       {
-               int m1 = 0, n1 = 0;
-               int *piAddressVarOne = NULL;
-               int i = 0;
-               int lw = 1;
-               int iType = 0;
-               SciErr sciErr;
-
-               sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
-               if(sciErr.iErr)
-               {
-                       printError(&sciErr, 0);
-            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
-                       return 0;
-               }
-
-               sciErr = getVarType(pvApiCtx, piAddressVarOne, &iType);
-               if(sciErr.iErr)
-               {
-                       printError(&sciErr, 0);
-            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
-                       return 0;
-               }
-
-               if ( iType == sci_strings )
-               {
-                       char **pStVarOne = NULL;
-                       int *lenStVarOne = NULL;
-                       char **pStFullFilenames = NULL;
-
-                       /* get dimensions */
-                       sciErr = getMatrixOfString(pvApiCtx, piAddressVarOne, &m1, &n1, lenStVarOne, pStVarOne);
-                       if(sciErr.iErr)
-                       {
-                               printError(&sciErr, 0);
-                Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
-                               return 0;
-                       }
-
-                       lenStVarOne = (int*)MALLOC(sizeof(int)*(m1 * n1));
-                       if (lenStVarOne == NULL)
-                       {
-                               Scierror(999,_("%s: No more memory.\n"), fname);
-                               return 0;
-                       }
-
-                       /* get lengths */
-                       sciErr = getMatrixOfString(pvApiCtx, piAddressVarOne, &m1, &n1, lenStVarOne, pStVarOne);
-                       if(sciErr.iErr)
-                       {
-                               if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
-                               printError(&sciErr, 0);
-                Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
-                               return 0;
-                       }
-
-                       pStVarOne = (char **)MALLOC(sizeof(char*)*(m1*n1));
-                       if (pStVarOne == NULL)
-                       {
-                               if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
-                               Scierror(999,_("%s: No more memory.\n"), fname);
-                               return 0;
-                       }
-
-                       pStFullFilenames = (char **)MALLOC(sizeof(char*)*(m1*n1));
-                       if (pStFullFilenames == NULL)
-                       {
-                               if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
-                               freeArrayOfString(pStVarOne, m1 * n1);
-                               Scierror(999,_("%s: No more memory.\n"), fname);
-                               return 0;
-                       }
-
-                       for(i = 0; i < m1 * n1; i++)
-                       {
-                               pStVarOne[i] = (char*)MALLOC(sizeof(char*) * (lenStVarOne[i] + 1));
-                       }
-
-                       /* get strings */
-                       sciErr = getMatrixOfString(pvApiCtx, piAddressVarOne, &m1, &n1, lenStVarOne, pStVarOne);
-                       if(sciErr.iErr)
-                       {
-                               freeArrayOfString(pStFullFilenames, m1 * n1);
-                               freeArrayOfString(pStVarOne, m1 * n1);
-                               if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
-                               printError(&sciErr, 0);
-                Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
-                               return 0;
-                       }
-
-                       /* Expand paths */
-                       for(i = 0; i < m1 * n1; i++)
-                       {
-                               pStFullFilenames[i] = getFullFilename(pStVarOne[i]);
-                       }
-
-                       if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
-                       freeArrayOfString(pStVarOne, m1 * n1);
-
-                       callXcos(pStFullFilenames, m1 * n1);
-                       loadOnUseClassPath(const_cast<char*>("xcos_block_rendering"));
-
-                       freeArrayOfString(pStFullFilenames, m1 * n1);
-               }
-               else if (iType == sci_mlist)
-               {
-                       C2F(overload)(&lw, fname, fname_len);
-                       return 0;
-               }
-               else
-               {
-                       Scierror(999,_("%s: Wrong type for input argument #%d: A string expected.\n"),fname,1);
-                       return 0;
-               }
-       }
-
-       LhsVar(1) = 0;
-       PutLhsVar();
-       return 0;
+    CheckRhs(0, 2);
+    CheckLhs(0, 1);
+
+    int *piAddressVar = NULL;
+    int iType = 0;
+    SciErr sciErr;
+
+    /*
+     * xcos() call
+     */
+    if (Rhs == 0)
+    {
+        LhsVar(1) = 0;
+        PutLhsVar();
+
+        return callXcos(fname, NULL, NULL);
+    }
+
+    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVar);
+    if (sciErr.iErr)
+    {
+        printError(&sciErr, 0);
+        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+        return 0;
+    }
+
+    sciErr = getVarType(pvApiCtx, piAddressVar, &iType);
+    if (sciErr.iErr)
+    {
+        printError(&sciErr, 0);
+        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+        return 0;
+    }
+
+    /*
+     * xcos("file.xcos") or xcos(["file.xcos" "foo.xcos"]) call
+     */
+    if (Rhs == 1 && iType == sci_strings)
+    {
+        int i;
+        int m = 0, n = 0;
+        int* len = NULL;
+        char **var = NULL;
+
+        sciErr = getMatrixOfString(pvApiCtx, piAddressVar, &m, &n, NULL, NULL);
+        if (sciErr.iErr)
+        {
+            printError(&sciErr, 0);
+            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname,
+                     1);
+            return 0;
+        }
+
+        len = (int*) MALLOC(sizeof(int) * (m * n));
+        if (len == NULL)
+        {
+            Scierror(999, _("%s: No more memory.\n"), fname);
+            return 0;
+        }
+
+        sciErr = getMatrixOfString(pvApiCtx, piAddressVar, &m, &n, len, NULL);
+        if (sciErr.iErr)
+        {
+            FREE(len);
+
+            printError(&sciErr, 0);
+            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname,
+                     1);
+            return 0;
+        }
+
+        var = (char**) MALLOC(sizeof(char*) * (m * n));
+        if (var == NULL)
+        {
+            Scierror(999, _("%s: No more memory.\n"), fname);
+            return 0;
+        }
+
+        for (i = 0; i < m * n; i++)
+        {
+            var[i] = (char*) MALLOC(sizeof(char) * (len[i] + 1));
+            if (var[i] == NULL)
+            {
+                FREE(len);
+                freeArrayOfString(var, i);
+
+                Scierror(999, _("%s: No more memory.\n"), fname);
+                return 0;
+            }
+        }
+
+        sciErr = getMatrixOfString(pvApiCtx, piAddressVar, &m, &n, len,
+                                   var);
+        if (sciErr.iErr)
+        {
+            FREE(len);
+            freeArrayOfString(var, m * n);
+
+            printError(&sciErr, 0);
+            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname,
+                     1);
+            return 0;
+        }
+
+        for (i = m * n - 1; i >= 0; i--)
+        {
+            if (callXcos(fname, var[i], NULL))
+            {
+                FREE(len);
+                freeArrayOfString(var, i);
+                return 1;
+            }
+        }
+
+        FREE(len);
+        FREE(var);
+
+        LhsVar(1) = 0;
+        PutLhsVar();
+        return 0;
+    }
+
+    /*
+     * xcos(scs_m) call
+     */
+    if (Rhs == 1 && iType == sci_mlist)
+    {
+        int lw = 1;
+
+        // overloaded by %diagram_xcos.sci
+        C2F(overload)(&lw, fname, fname_len);
+
+        LhsVar(1) = 0;
+        PutLhsVar();
+        return 0;
+    }
+
+    /*
+     * xcos(scs_m, "scs_m") call (usually from the overload macro)
+     */
+    if (Rhs == 2 && iType == sci_mlist)
+    {
+        char* variable = NULL;
+
+        sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddressVar);
+        if (sciErr.iErr)
+        {
+            printError(&sciErr, 0);
+            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname,
+                     2);
+            return 0;
+        }
+
+        if (getAllocatedSingleString(pvApiCtx, piAddressVar, &variable))
+        {
+            Scierror(999, _("%s: No more memory.\n"), fname);
+            return 0;
+        }
+
+        LhsVar(1) = 0;
+        PutLhsVar();
+        return callXcos(fname, NULL, variable);
+    }
+
+    /*
+     * if not returned yet, disp the error message.
+     */
+    Scierror(999,
+             _("%s: Wrong type for input argument #%d: A string expected.\n"),
+             fname, 1);
+    return 0;
 }
 /*--------------------------------------------------------------------------*/
+
+static int callXcos(char *fname, char* file, char* var)
+{
+    try
+    {
+        Xcos::xcos(getScilabJavaVM(), file, var);
+    }
+    catch (GiwsException::JniCallMethodException exception)
+    {
+        Scierror(999, "%s: %s\n", fname,
+                 exception.getJavaDescription().c_str());
+
+        if (file)
+        {
+            FREE(file);
+        }
+        if (var)
+        {
+            FREE(var);
+        }
+        return 1;
+    }
+    catch (GiwsException::JniException exception)
+    {
+        Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
+
+        if (file)
+        {
+            FREE(file);
+        }
+        if (var)
+        {
+            FREE(var);
+        }
+        return 1;
+    }
+
+    if (file)
+    {
+        FREE(file);
+    }
+    if (var)
+    {
+        FREE(var);
+    }
+    return 0;
+}
index 24acd23..522281e 100644 (file)
@@ -18,7 +18,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -43,12 +42,12 @@ int sci_closeXcosFromScilab(char *fname, unsigned long fname_len)
         {
             Xcos::closeXcosFromScilab(getScilabJavaVM());
         }
-        catch(GiwsException::JniCallMethodException exception)
+        catch (GiwsException::JniCallMethodException exception)
         {
             Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
             return 0;
         }
-        catch(GiwsException::JniException exception)
+        catch (GiwsException::JniException exception)
         {
             Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
             return 0;
index 7a5fded..158010b 100644 (file)
@@ -16,7 +16,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -27,45 +26,48 @@ extern "C"
 /*--------------------------------------------------------------------------*/
 using namespace org_scilab_modules_xcos;
 /*--------------------------------------------------------------------------*/
-int sci_warnBlockByUID(char *fname,unsigned long fname_len)
+int sci_warnBlockByUID(char *fname, unsigned long fname_len)
 {
-       int i;
+    int i;
 
-       CheckRhs(2,2);
-       CheckLhs(0,1);
+    CheckRhs(2, 2);
+    CheckLhs(0, 1);
 
-       char** path = NULL;
-       int pathLength = 0;
+    char** path = NULL;
+    int pathLength = 0;
 
-       char* msg;
+    char* msg;
 
-       /** read UID **/
+    /** read UID **/
     if (readVectorString(pvApiCtx, 1, &path, &pathLength, fname))
     {
         return 0;
     }
 
-       /* read msg */
-    if (readSingleString(pvApiCtx, 2, &msg, fname)) {
-       for (i=0; i<pathLength; i++) {
-               FREE(path[i]);
-       }
-       FREE(path);
-               return 0;
-       }
+    /* read msg */
+    if (readSingleString(pvApiCtx, 2, &msg, fname))
+    {
+        for (i = 0; i < pathLength; i++)
+        {
+            FREE(path[i]);
+        }
+        FREE(path);
+        return 0;
+    }
 
     /* call the implementation */
-       Xcos::warnCellByUID(getScilabJavaVM(), path, pathLength, msg);
+    Xcos::warnCellByUID(getScilabJavaVM(), path, pathLength, msg);
 
-       for (i=0; i<pathLength; i++) {
-               FREE(path[i]);
-       }
-       FREE(path);
-       freeAllocatedSingleString(msg);
+    for (i = 0; i < pathLength; i++)
+    {
+        FREE(path[i]);
+    }
+    FREE(path);
+    freeAllocatedSingleString(msg);
 
     LhsVar(1) = 0;
     PutLhsVar();
 
-       return 0;
+    return 0;
 }
 /*--------------------------------------------------------------------------*/
index 669c0bf..ab01268 100644 (file)
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
index 131a6c9..9fc8c4c 100644 (file)
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
index 47f76e1..e8bec55 100644 (file)
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
index 41d0c18..2406212 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) DIGITEO - 2010-2010 - Clément DAVID <clement.david@scilab.org>
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -61,12 +60,12 @@ int sci_xcosPalCategoryAdd(char *fname, unsigned long fname_len)
     {
         Palette::addCategory(getScilabJavaVM(), name, nameLength, visible);
     }
-    catch(GiwsException::JniCallMethodException exception)
+    catch (GiwsException::JniCallMethodException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 0;
     }
-    catch(GiwsException::JniException exception)
+    catch (GiwsException::JniException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
         return 0;
index c1787df..bc90b7d 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) DIGITEO - 2010-2010 - Clément DAVID <clement.david@scilab.org>
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -46,12 +45,12 @@ int sci_xcosPalDelete(char *fname, unsigned long fname_len)
     {
         Palette::remove(getScilabJavaVM(), name, nameLength);
     }
-    catch(GiwsException::JniCallMethodException exception)
+    catch (GiwsException::JniCallMethodException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 0;
     }
-    catch(GiwsException::JniException exception)
+    catch (GiwsException::JniException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
         return 0;
index a9ee713..59a66de 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) DIGITEO - 2010-2010 - Clément DAVID <clement.david@scilab.org>
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -46,12 +45,12 @@ int sci_xcosPalDisable(char *fname, unsigned long fname_len)
     {
         Palette::enable(getScilabJavaVM(), name, nameLength, false);
     }
-    catch(GiwsException::JniCallMethodException exception)
+    catch (GiwsException::JniCallMethodException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 0;
     }
-    catch(GiwsException::JniException exception)
+    catch (GiwsException::JniException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
         return 0;
index 8d0a7be..72fc29c 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) DIGITEO - 2010-2010 - Clément DAVID <clement.david@scilab.org>
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -47,12 +46,12 @@ int sci_xcosPalEnable(char *fname, unsigned long fname_len)
     {
         Palette::enable(getScilabJavaVM(), name, nameLength, true);
     }
-    catch(GiwsException::JniCallMethodException exception)
+    catch (GiwsException::JniCallMethodException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 0;
     }
-    catch(GiwsException::JniException exception)
+    catch (GiwsException::JniException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
         return 0;
index 988dd1c..20e6fb6 100644 (file)
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -53,12 +52,12 @@ int sci_xcosPalGenerateIcon(char *fname, unsigned long fname_len)
     {
         Palette::generatePaletteIcon(getScilabJavaVM(), blockPath, iconPath);
     }
-    catch(GiwsException::JniCallMethodException exception)
+    catch (GiwsException::JniCallMethodException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 0;
     }
-    catch(GiwsException::JniException exception)
+    catch (GiwsException::JniException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
         return 0;
index 72d1625..7d50aa5 100644 (file)
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -64,12 +63,12 @@ int sci_xcosPalLoad(char *fname, unsigned long fname_len)
             Palette::loadPal(getScilabJavaVM(), path, category, lenCategory);
         }
     }
-    catch(GiwsException::JniCallMethodException exception)
+    catch (GiwsException::JniCallMethodException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 0;
     }
-    catch(GiwsException::JniException exception)
+    catch (GiwsException::JniException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
         return 0;
index 3a05f85..312558d 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) DIGITEO - 2010-2010 - Clément DAVID <clement.david@scilab.org>
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
@@ -55,12 +54,12 @@ int sci_xcosPalMove(char *fname, unsigned long fname_len)
     {
         Palette::move(getScilabJavaVM(), source, sourceLength, target, targetLength);
     }
-    catch(GiwsException::JniCallMethodException exception)
+    catch (GiwsException::JniCallMethodException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.getJavaDescription().c_str());
         return 0;
     }
-    catch(GiwsException::JniException exception)
+    catch (GiwsException::JniException exception)
     {
         Scierror(999, "%s: %s\n", fname, exception.whatStr().c_str());
         return 0;
index 27525ac..bce8a27 100644 (file)
@@ -17,7 +17,6 @@
 extern "C"
 {
 #include "gw_xcos.h"
-#include "callxcos.h"
 #include "api_scilab.h"
 #include "localization.h"
 #include "Scierror.h"
index 71d09d6..0fc053b 100644 (file)
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClCompile Include="..\cpp\callxcos.cpp" />
     <ClCompile Include="DllmainXCOS.c" />
     <ClCompile Include="..\..\sci_gateway\c\gw_xcos.c" />
     <ClCompile Include="..\jni\Modelica.cpp" />
     <ClCompile Include="..\cpp\xcosUtilities.cpp" />
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\includes\callxcos.h" />
     <ClInclude Include="..\..\includes\dynlib_xcos.h" />
     <ClInclude Include="..\..\includes\gw_xcos.h" />
     <ClInclude Include="..\jni\Modelica.hxx" />
index b4b2db9..60112fa 100644 (file)
@@ -23,9 +23,6 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="..\cpp\callxcos.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="DllmainXCOS.c">
       <Filter>Source Files</Filter>
     </ClCompile>
       <Filter>Resource Files</Filter>
     </ResourceCompile>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/scilab/modules/xcos/src/cpp/callxcos.cpp b/scilab/modules/xcos/src/cpp/callxcos.cpp
deleted file mode 100644 (file)
index fab27bd..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- *  Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
- *  Copyright (C) 2010-2010 - DIGITEO - Clément DAVID
- *
- *  This file must be used under the terms of the CeCILL.
- *  This source file is licensed as described in the file COPYING, which
- *  you should have received as part of this distribution. The terms
- *  are also available at
- *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-#include "Xcos.hxx"
-#include "GiwsException.hxx"
-
-extern "C"
-{
-#include "callxcos.h"
-#include "charEncoding.h"
-#include "getScilabJavaVM.h"
-#include "charEncoding.h"
-#include "Scierror.h"
-#include "MALLOC.h"
-#include "freeArrayOfString.h"
-}
-/*--------------------------------------------------------------------------*/
-using namespace org_scilab_modules_xcos;
-
-/*--------------------------------------------------------------------------*/
-int callXcos(char **_filenames, int _nbfiles)
-{
-    try
-    {
-        if ((_filenames) && (_nbfiles > 0))
-        {
-            int i = 0;
-
-            for (i = 0; i < _nbfiles; i++)
-            {
-                Xcos::xcos(getScilabJavaVM(), _filenames[i]);
-            }
-        }
-        else
-        {
-            Xcos::xcos(getScilabJavaVM());
-        }
-    }
-    catch(GiwsException::JniCallMethodException exception)
-    {
-        Scierror(999, "%s: %s\n", "xcos", exception.getJavaDescription().c_str());
-        return 0;
-    }
-    catch(GiwsException::JniException exception)
-    {
-        Scierror(999, "%s: %s\n", "xcos", exception.whatStr().c_str());
-        return 0;
-    }
-
-    return 0;
-}
-
-/*--------------------------------------------------------------------------*/
-int callXcosW(wchar_t ** _wcfilenames, int _nbfiles)
-{
-    try
-    {
-        if ((_wcfilenames) && (_nbfiles > 0))
-        {
-            int i = 0;
-            char **filesname = (char **)MALLOC(sizeof(wchar_t *) * _nbfiles);
-
-            if (filesname)
-            {
-                for (i = 0; i < _nbfiles; i++)
-                {
-                    filesname[i] = wide_string_to_UTF8(_wcfilenames[i]);
-                }
-                callXcos(filesname, _nbfiles);
-                freeArrayOfString(filesname, _nbfiles);
-            }
-        }
-    }
-    catch(GiwsException::JniCallMethodException exception)
-    {
-        Scierror(999, "%s: %s\n", "xcos", exception.getJavaDescription().c_str());
-        return 0;
-    }
-    catch(GiwsException::JniException exception)
-    {
-        Scierror(999, "%s: %s\n", "xcos", exception.whatStr().c_str());
-        return 0;
-    }
-
-    return 0;
-}
-
-/*--------------------------------------------------------------------------*/
index 657752e..3f9f429 100644 (file)
@@ -362,12 +362,14 @@ public final class Xcos {
      * Open a file from it's filename.
      *
      * This method must be called on the EDT thread. For other use, please use
-     * the {@link #xcos(String)} method.
+     * the {@link #xcos(String, String)} method.
      *
-     * @param filename
+     * @param file
      *            the file to open. If null an empty diagram is created.
+     * @param variable
+     *            the variable to decode. If null no decode is performed.
      */
-    public void open(final File filename) {
+    public void open(final String file, final String variable) {
         if (!SwingUtilities.isEventDispatchThread()) {
             LOG.severe(CALLED_OUTSIDE_THE_EDT_THREAD);
         }
@@ -375,25 +377,31 @@ public final class Xcos {
         /*
          * If it is the first window opened, then open the palette first.
          */
-        if (filename == null && openedDiagrams().isEmpty()) {
+        if (file == null && variable == null && openedDiagrams().isEmpty()) {
             PaletteManager.setVisible(true);
         }
 
         XcosDiagram diag = null;
+        final File f;
+        if (file != null) {
+            f = new File(file);
+        } else {
+            f = null;
+        }
 
-        if (filename != null && filename.exists()) {
-            configuration.addToRecentFiles(filename);
+        if (f != null && f.exists()) {
+            configuration.addToRecentFiles(f);
         }
 
         /*
          * looking for an already opened diagram
          */
-        final Collection<XcosDiagram> diags = diagrams.get(filename);
+        final Collection<XcosDiagram> diags = diagrams.get(f);
         if (diags != null && !diags.isEmpty()) {
             diag = diags.iterator().next();
         }
         // if unsaved and empty, reuse it. Allocate otherwise.
-        if (filename == null && diag != null && diag.getModel().getChildCount(diag.getDefaultParent()) > 0) {
+        if (f == null && diag != null && diag.getModel().getChildCount(diag.getDefaultParent()) > 0) {
             diag = null;
         }
         if (diag != null) {
@@ -419,12 +427,17 @@ public final class Xcos {
             }
 
             /*
-             * Load the file if applicable
+             * Ask for file creation
              */
-            if (filename != null) {
-                diag = diag.openDiagramFromFile(filename);
+            if (f != null && !f.exists()) {
+                diag.askForFileCreation(f);
             }
 
+            /*
+             * Load the file
+             */
+            diag.transformAndLoadFile(file, variable);
+
             if (diag != null) {
                 addDiagram(diag.getSavedFile(), diag);
             }
@@ -730,44 +743,20 @@ public final class Xcos {
      */
 
     /**
-     * Entry popint without filename.
-     *
-     * This method invoke Xcos operation on the EDT thread.
-     */
-    @ScilabExported(module = "xcos", filename = "Xcos.giws.xml")
-    public static void xcos() {
-        final Xcos instance = getInstance();
-
-        /* load scicos libraries (macros) */
-        InterpreterManagement.requestScilabExec(LOAD_XCOS_LIBS_LOAD_SCICOS);
-
-        /*
-         * Open an empty file
-         */
-        SwingUtilities.invokeLater(new Runnable() {
-            @Override
-            public void run() {
-                // open on EDT
-                instance.open(null);
-            }
-        });
-    }
-
-    /**
-     * Entry point with filename
+     * Main entry point
      *
      * This method invoke Xcos operation on the EDT thread.
      *
-     * @param fileName
-     *            The filename
+     * @param file
+     *            The filename (can be null)
+     * @param variable
+     *            The Scilab variable to load (can be null)
      */
     @ScilabExported(module = "xcos", filename = "Xcos.giws.xml")
-    public static void xcos(final String fileName) {
+    public static void xcos(final String file, final String variable) {
         final Xcos instance = getInstance();
         instance.lastError = null;
 
-        final File filename = new File(fileName);
-
         /* load scicos libraries (macros) */
         InterpreterManagement.requestScilabExec(LOAD_XCOS_LIBS_LOAD_SCICOS);
 
@@ -779,15 +768,15 @@ public final class Xcos {
                 @Override
                 public void run() {
                     // open on EDT
-                    instance.open(filename);
+                    instance.open(file, variable);
                 }
             });
 
             /*
-             * Wait loading and fail on error
+             * Wait loading and fail on error only if the variable is readeable
              */
             try {
-                while (instance.lastError == null) {
+                while (variable != null && instance.lastError == null) {
                     instance.wait();
                 }
             } catch (InterruptedException e) {
index 04a710a..581bbd1 100644 (file)
@@ -2,11 +2,11 @@
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2009 - DIGITEO - Vincent COUVERT
  * Copyright (C) 2010 - DIGITEO - Clement DAVID
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
@@ -35,12 +35,11 @@ public final class NewDiagramAction extends DefaultAction {
     /** Mnemonic key of the action */
     public static final int MNEMONIC_KEY = KeyEvent.VK_N;
     /** Accelerator key for the action */
-    public static final int ACCELERATOR_KEY = Toolkit.getDefaultToolkit()
-            .getMenuShortcutKeyMask();
+    public static final int ACCELERATOR_KEY = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
 
     /**
      * Constructor
-     * 
+     *
      * @param scilabGraph
      *            associated Scilab Graph
      */
@@ -50,7 +49,7 @@ public final class NewDiagramAction extends DefaultAction {
 
     /**
      * Create a menu item for the graph menubar
-     * 
+     *
      * @param scilabGraph
      *            associated Scilab Graph
      * @return the menu item
@@ -61,7 +60,7 @@ public final class NewDiagramAction extends DefaultAction {
 
     /**
      * Create a button for the graph toolbar
-     * 
+     *
      * @param scilabGraph
      *            associated Scilab Graph
      * @return the button
@@ -77,7 +76,7 @@ public final class NewDiagramAction extends DefaultAction {
      */
     @Override
     public void actionPerformed(ActionEvent e) {
-        Xcos.getInstance().open(null);
+        Xcos.getInstance().open(null, null);
     }
 
 }
index 8165276..64dbd23 100644 (file)
@@ -17,6 +17,7 @@ import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.io.File;
+import java.io.IOException;
 
 import javax.swing.JFileChooser;
 import javax.swing.filechooser.FileFilter;
@@ -90,7 +91,11 @@ public final class OpenAction extends DefaultAction {
         configureFileFilters(fc);
         ConfigurationManager.configureCurrentDirectory(fc);
 
-        displayAndOpen(fc, getGraph(e).getAsComponent());
+        try {
+            displayAndOpen(fc, getGraph(e).getAsComponent());
+        } catch (IOException e1) {
+            e1.printStackTrace();
+        }
     }
 
     /*
@@ -116,7 +121,7 @@ public final class OpenAction extends DefaultAction {
         fc.setFileFilter(filters[0]);
     }
 
-    protected static void displayAndOpen(final SwingScilabFileChooser fc, final java.awt.Component component) {
+    protected static void displayAndOpen(final SwingScilabFileChooser fc, final java.awt.Component component) throws IOException {
         final int status = fc.showOpenDialog(component);
         if (status != JFileChooser.APPROVE_OPTION) {
             return;
@@ -124,13 +129,13 @@ public final class OpenAction extends DefaultAction {
 
         final File onlySelected = fc.getSelectedFile();
         if (onlySelected != null) {
-            Xcos.getInstance().open(onlySelected);
+            Xcos.getInstance().open(onlySelected.getCanonicalPath(), null);
         }
 
         final File[] multiSelected = fc.getSelectedFiles();
         for (File file : multiSelected) {
             if (file != onlySelected) {
-                Xcos.getInstance().open(file);
+                Xcos.getInstance().open(file.getCanonicalPath(), null);
             }
         }
     }
index aa38f73..2a9b86b 100644 (file)
@@ -14,6 +14,7 @@ package org.scilab.modules.xcos.actions;
 
 import java.awt.event.ActionEvent;
 import java.io.File;
+import java.io.IOException;
 
 import org.scilab.modules.commons.CommonFileUtils;
 import org.scilab.modules.graph.ScilabGraph;
@@ -81,6 +82,10 @@ public final class OpenInSciAction extends DefaultAction {
         OpenAction.configureFileFilters(fc);
         fc.setCurrentDirectory(new File(CommonFileUtils.getCWD()));
 
-        OpenAction.displayAndOpen(fc, getGraph(e).getAsComponent());
+        try {
+            OpenAction.displayAndOpen(fc, getGraph(e).getAsComponent());
+        } catch (IOException e1) {
+            e1.printStackTrace();
+        }
     }
 }
index dab727e..ff5f02a 100644 (file)
@@ -16,6 +16,7 @@ import java.awt.event.ActionEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.io.File;
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -76,7 +77,11 @@ public final class RecentFileAction extends DefaultAction implements PropertyCha
      */
     @Override
     public void actionPerformed(ActionEvent e) {
-        Xcos.getInstance().open(recentFile);
+        try {
+            Xcos.getInstance().open(recentFile.getCanonicalPath(), null);
+        } catch (IOException e1) {
+            e1.printStackTrace();
+        }
     };
 
     /**
index 69c51f2..f95648a 100644 (file)
@@ -13,8 +13,6 @@
 
 package org.scilab.modules.xcos.graph;
 
-import static org.scilab.modules.xcos.utils.FileUtils.exists;
-
 import java.awt.Color;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -1894,59 +1892,48 @@ public class XcosDiagram extends ScilabGraph {
     }
 
     /**
-     * Read a diagram from an HDF5 file (ask for creation if the file does not
-     * exist)
+     * Popup a dialog to ask for a file creation
      *
-     * @param diagram
-     *            file to open
-     * @return the diagram instance or null on error
+     * @param f
+     *            the file to create
      */
-    public XcosDiagram openDiagramFromFile(final File diagram) {
-        info(XcosMessages.LOADING_DIAGRAM);
-
-        if (diagram.exists()) {
-            try {
-                transformAndLoadFile(diagram.getCanonicalPath());
-            } catch (IOException e) {
-                LOG.severe(e.toString());
-            }
-        } else {
-            AnswerOption answer;
-            try {
-                answer = ScilabModalDialog.show(getAsComponent(), new String[] { String.format(XcosMessages.FILE_DOESNT_EXIST, diagram.getCanonicalFile()) },
-                                                XcosMessages.XCOS, IconType.QUESTION_ICON, ButtonType.YES_NO);
-            } catch (final IOException e) {
-                LOG.severe(e.toString());
-                answer = AnswerOption.YES_OPTION;
-            }
-
-            if (answer == AnswerOption.YES_OPTION) {
-                saveDiagramAs(diagram);
-            }
-
-            info(XcosMessages.EMPTY_INFO);
+    public void askForFileCreation(final File f) {
+        AnswerOption answer;
+        try {
+            answer = ScilabModalDialog.show(getAsComponent(), new String[] { String.format(XcosMessages.FILE_DOESNT_EXIST, f.getCanonicalFile()) },
+                                            XcosMessages.XCOS, IconType.QUESTION_ICON, ButtonType.YES_NO);
+        } catch (final IOException e) {
+            LOG.severe(e.toString());
+            answer = AnswerOption.YES_OPTION;
         }
 
-        return this;
+        if (answer == AnswerOption.YES_OPTION) {
+            saveDiagramAs(f);
+        }
     }
 
     /**
      * Load a file with different method depending on it extension
      *
      * @param file
-     *            File to load
-     * @param wait
-     *            wait end transform
-     * @return the status of the operation
-     */
-    protected boolean transformAndLoadFile(final String file) {
-        final XcosFileType filetype = XcosFileType.findFileType(file);
-
-        if (!exists(file) || filetype == null) {
-            XcosDialogs.couldNotLoadFile(this);
-            return false;
+     *            File to load (can be null)
+     * @param variable
+     *            the variable to decode (can be null)
+     */
+    public void transformAndLoadFile(final String file, final String variable) {
+        final XcosFileType filetype;
+        if (file != null) {
+            filetype = XcosFileType.findFileType(file);
+        } else {
+            filetype = null;
         }
 
+        final File f;
+        if (file != null) {
+            f = new File(file);
+        } else {
+            f = null;
+        }
         new SwingWorker<XcosDiagram, ActionEvent>() {
             int counter = 0;
             final Timer t = new Timer(1000, new ActionListener() {
@@ -1962,6 +1949,8 @@ public class XcosDiagram extends ScilabGraph {
             @Override
             protected XcosDiagram doInBackground() {
                 t.start();
+
+                final Xcos instance = Xcos.getInstance();
                 XcosDiagram diag = XcosDiagram.this;
 
                 diag.setReadOnly(true);
@@ -1969,18 +1958,24 @@ public class XcosDiagram extends ScilabGraph {
                 /*
                  * Load, log errors and notify
                  */
-                final Xcos instance = Xcos.getInstance();
-                try {
-                    filetype.load(file, diag);
-                    instance.setLastError("");
-                } catch (Exception e) {
-                    Throwable ex = e;
-                    while (ex instanceof RuntimeException) {
-                        ex = ex.getCause();
-                    }
-                    instance.setLastError(ex.getMessage());
-                }
                 synchronized (instance) {
+                    try {
+
+                        if (f != null && filetype != null) {
+                            filetype.load(file, XcosDiagram.this);
+                        }
+                        if (variable != null) {
+                            new ScilabDirectHandler().readDiagram(XcosDiagram.this, variable);
+                        }
+                        instance.setLastError("");
+                    } catch (Exception e) {
+                        Throwable ex = e;
+                        while (ex instanceof RuntimeException) {
+                            ex = ex.getCause();
+                        }
+                        instance.setLastError(ex.getMessage());
+                        ScilabModalDialog.show(null, ex.getMessage());
+                    }
                     instance.notify();
                 }
 
@@ -1996,12 +1991,13 @@ public class XcosDiagram extends ScilabGraph {
                 /*
                  * Load has finished
                  */
-                postLoad(new File(file));
+                if (f != null) {
+                    postLoad(f);
+                }
                 XcosDiagram.this.info(XcosMessages.EMPTY_INFO);
             }
 
         } .execute();
-        return true;
     }
 
     /**
index 86d9a8d..47723b4 100644 (file)
@@ -127,7 +127,11 @@ public class ScilabDirectHandler implements Handler {
     }
 
     @Override
-    public synchronized XcosDiagram readDiagram(final XcosDiagram instance) {
+    public XcosDiagram readDiagram(final XcosDiagram instance) {
+        return readDiagram(instance, SCS_M);
+    }
+
+    public synchronized XcosDiagram readDiagram(final XcosDiagram instance, final String variable) {
         LOG.entering("ScilabDirectHandler", "readDiagram");
         final DiagramElement element = new DiagramElement();
 
@@ -142,9 +146,9 @@ public class ScilabDirectHandler implements Handler {
 
         ScilabType data;
         try {
-            data = Scilab.getInCurrentScilabSession(SCS_M);
+            data = Scilab.getInCurrentScilabSession(variable);
         } catch (JavasciException e) {
-            return null;
+            throw new RuntimeException(e);
         }
 
         // fail safely
index 4c77456..d4e13ae 100644 (file)
@@ -31,6 +31,7 @@ import org.scilab.modules.commons.xml.ScilabTransformerFactory;
 import org.scilab.modules.xcos.graph.XcosDiagram;
 import org.scilab.modules.xcos.io.XcosCodec;
 import org.scilab.modules.xcos.io.scicos.H5RWHandler;
+import org.scilab.modules.xcos.io.scicos.ScilabDirectHandler;
 
 /**
  * All the filetype recognized by Xcos.
@@ -41,16 +42,6 @@ public enum XcosFileType {
      */
     XCOS("xcos", XcosMessages.FILE_XCOS) {
         @Override
-        public String exportToHdf5(String file) throws TransformerException, IOException {
-            XcosDiagram diag = new XcosDiagram();
-            load(file, diag);
-
-            final String exportedFile = FileUtils.createTempFile();
-            new H5RWHandler(exportedFile).writeDiagram(diag);
-            return exportedFile;
-        }
-
-        @Override
         public void load(String file, XcosDiagram into) throws TransformerException {
             final XcosCodec codec = new XcosCodec();
             final TransformerFactory tranFactory = ScilabTransformerFactory.newInstance();
@@ -68,29 +59,18 @@ public enum XcosFileType {
      */
     COSF("cosf", XcosMessages.FILE_COSF) {
         @Override
-        public String exportToHdf5(String arg0) {
-            return loadScicosDiagram(arg0);
-        }
-
-        @Override
         public void load(String file, XcosDiagram into) throws Exception {
-            final String h5File = exportToHdf5(file);
-            HDF5.load(h5File, into);
+            loadScicosDiagram(file, into);
         }
     },
     /**
      * Represent the old Scicos binary format.
      */
     COS("cos", XcosMessages.FILE_COS) {
-        @Override
-        public String exportToHdf5(String arg0) {
-            return loadScicosDiagram(arg0);
-        }
 
         @Override
         public void load(String file, XcosDiagram into) throws Exception {
-            final String h5File = exportToHdf5(file);
-            HDF5.load(h5File, into);
+            loadScicosDiagram(file, into);
         }
     },
     /**
@@ -98,11 +78,6 @@ public enum XcosFileType {
      */
     HDF5("h5", XcosMessages.FILE_HDF5) {
         @Override
-        public String exportToHdf5(String arg0) {
-            return arg0;
-        }
-
-        @Override
         public void load(String file, XcosDiagram into) {
             new H5RWHandler(file).readDiagram(into);
         }
@@ -229,24 +204,6 @@ public enum XcosFileType {
     }
 
     /**
-     * @return the Scilab default filetype
-     */
-    public static XcosFileType getScilabFileType() {
-        return XcosFileType.HDF5;
-    }
-
-    /**
-     * Convert the file passed as an argument to Hdf5.
-     *
-     * @param file
-     *            The file to convert
-     * @return The created file
-     * @throws Exception
-     *             in case of problem
-     */
-    public abstract String exportToHdf5(String file) throws Exception;
-
-    /**
      * Load a file into an XcosDiagram instance
      *
      * @param file
@@ -302,38 +259,21 @@ public enum XcosFileType {
     }
 
     /**
-     * Convert a Scicos diagram (scs_m scilab script) to an hdf5 file
-     *
-     * @param filename
-     *            The file to execute in scilab.
-     * @return The exported data in hdf5.
+     * Load a Scicos diagram file int a diagram
      */
-    public static String loadScicosDiagram(String filename) {
-        String tempOutput = null;
+    private static void loadScicosDiagram(final String filename, final XcosDiagram into) {
+        final StringBuilder cmd = new StringBuilder();
+        cmd.append(ScilabDirectHandler.SCS_M);
+        cmd.append(" = importScicosDiagram(\"");
+        cmd.append(filename);
+        cmd.append("\");");
+
         try {
-            tempOutput = FileUtils.createTempFile();
-
-            StringBuilder cmd = new StringBuilder();
-            cmd.append("scs_m = importScicosDiagram(\"");
-            cmd.append(filename);
-            cmd.append("\");");
-            cmd.append("result = export_to_hdf5(\"");
-            cmd.append(tempOutput);
-            cmd.append("\", \"scs_m\");");
-
-            cmd.append("if result <> %t then deletefile(\"");
-            cmd.append(tempOutput);
-            cmd.append("\"); end; ");
-
-            try {
-                ScilabInterpreterManagement.synchronousScilabExec(cmd.toString());
-            } catch (InterpreterException e) {
-                e.printStackTrace();
-            }
-        } catch (IOException e) {
+            ScilabInterpreterManagement.synchronousScilabExec(cmd.toString());
+        } catch (InterpreterException e) {
             e.printStackTrace();
         }
 
-        return tempOutput;
+        new ScilabDirectHandler().readDiagram(into);
     }
 }
index cb157ac..db0ca2b 100644 (file)
@@ -115,8 +115,7 @@ Xcos::Xcos(JavaVM * jvm_)
     curEnv->DeleteLocalRef(localInstance);
 
     /* Methods ID set to NULL */
-    voidxcosID = NULL;
-    voidxcosjstringjava_lang_StringID = NULL;
+    voidxcosjstringjava_lang_Stringjstringjava_lang_StringID = NULL;
     voidwarnCellByUIDjobjectArray_java_lang_Stringjstringjava_lang_StringID = NULL;
     voidcloseXcosFromScilabID = NULL;
     jintxcosDiagramToScilabjstringjava_lang_StringID = NULL;
@@ -149,8 +148,7 @@ Xcos::Xcos(JavaVM * jvm_, jobject JObj)
         throw GiwsException::JniObjectCreationException(curEnv, this->className());
     }
     /* Methods ID set to NULL */
-    voidxcosID = NULL;
-    voidxcosjstringjava_lang_StringID = NULL;
+    voidxcosjstringjava_lang_Stringjstringjava_lang_StringID = NULL;
     voidwarnCellByUIDjobjectArray_java_lang_Stringjstringjava_lang_StringID = NULL;
     voidcloseXcosFromScilabID = NULL;
     jintxcosDiagramToScilabjstringjava_lang_StringID = NULL;
@@ -181,49 +179,36 @@ void Xcos::endSynchronize()
 }
 // Method(s)
 
-void Xcos::xcos (JavaVM * jvm_)
+void Xcos::xcos (JavaVM * jvm_, char * file, char * variable)
 {
 
     JNIEnv * curEnv = NULL;
     jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
     jclass cls = curEnv->FindClass( className().c_str() );
 
-    jmethodID voidxcosID = curEnv->GetStaticMethodID(cls, "xcos", "()V" ) ;
-    if (voidxcosID == NULL)
+    jmethodID voidxcosjstringjava_lang_Stringjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "xcos", "(Ljava/lang/String;Ljava/lang/String;)V" ) ;
+    if (voidxcosjstringjava_lang_Stringjstringjava_lang_StringID == NULL)
     {
         throw GiwsException::JniMethodNotFoundException(curEnv, "xcos");
     }
 
-    curEnv->CallStaticVoidMethod(cls, voidxcosID );
-    curEnv->DeleteLocalRef(cls);
-    if (curEnv->ExceptionCheck())
+    jstring file_ = curEnv->NewStringUTF( file );
+    if (file != NULL && file_ == NULL)
     {
-        throw GiwsException::JniCallMethodException(curEnv);
+        throw GiwsException::JniBadAllocException(curEnv);
     }
-}
-
-void Xcos::xcos (JavaVM * jvm_, char * fileName)
-{
 
-    JNIEnv * curEnv = NULL;
-    jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
-    jclass cls = curEnv->FindClass( className().c_str() );
-
-    jmethodID voidxcosjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "xcos", "(Ljava/lang/String;)V" ) ;
-    if (voidxcosjstringjava_lang_StringID == NULL)
-    {
-        throw GiwsException::JniMethodNotFoundException(curEnv, "xcos");
-    }
 
-    jstring fileName_ = curEnv->NewStringUTF( fileName );
-    if (fileName != NULL && fileName_ == NULL)
+    jstring variable_ = curEnv->NewStringUTF( variable );
+    if (variable != NULL && variable_ == NULL)
     {
         throw GiwsException::JniBadAllocException(curEnv);
     }
 
 
-    curEnv->CallStaticVoidMethod(cls, voidxcosjstringjava_lang_StringID , fileName_);
-    curEnv->DeleteLocalRef(fileName_);
+    curEnv->CallStaticVoidMethod(cls, voidxcosjstringjava_lang_Stringjstringjava_lang_StringID , file_, variable_);
+    curEnv->DeleteLocalRef(file_);
+    curEnv->DeleteLocalRef(variable_);
     curEnv->DeleteLocalRef(cls);
     if (curEnv->ExceptionCheck())
     {
index 7ed1337..e8f5d56 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <package name="org.scilab.modules.xcos">
   <object name="Xcos">
-    <method name="xcos" returnType="void" modifier="static"/>
     <method name="xcos" returnType="void" modifier="static">
-      <parameter name="fileName" type="String"/>
+      <parameter name="file" type="String"/>
+      <parameter name="variable" type="String"/>
     </method>
     <method name="warnCellByUID" returnType="void" modifier="static">
       <parameter name="uids" type="String[]"/>
index 9c0ffdd..b114e6b 100644 (file)
@@ -79,8 +79,7 @@ private:
     JavaVM * jvm;
 
 protected:
-    jmethodID voidxcosID; // cache method id
-    jmethodID voidxcosjstringjava_lang_StringID; // cache method id
+    jmethodID voidxcosjstringjava_lang_Stringjstringjava_lang_StringID; // cache method id
     jmethodID voidwarnCellByUIDjobjectArray_java_lang_Stringjstringjava_lang_StringID; // cache method id
     jclass stringArrayClass;
     jmethodID voidcloseXcosFromScilabID; // cache method id
@@ -145,9 +144,7 @@ public:
     void endSynchronize();
 
     // Methods
-    static void xcos(JavaVM * jvm_);
-
-    static void xcos(JavaVM * jvm_, char * fileName);
+    static void xcos(JavaVM * jvm_, char * file, char * variable);
 
     static void warnCellByUID(JavaVM * jvm_, char ** uids, int uidsSize, char * message);
 
diff --git a/scilab/modules/xcos/tests/unit_tests/%diagram_xcos.dia.ref b/scilab/modules/xcos/tests/unit_tests/%diagram_xcos.dia.ref
deleted file mode 100644 (file)
index 2ab4e82..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) DIGITEO - 2010-2010 - Clément DAVID <clement.david@scilab.org>
-//
-// This file is distributed under the same license as the Scilab package.
-// <-- TEST WITH XCOS -->
-//
-// <-- Short Description -->
-// White-box test for the %diagram_xcos overload macro.
-// overload called methods
-prot = funcprot();
-funcprot(0);
-function xcos(h5path)
-    global callWithPath;
-    callWithPath = h5path;
-endfunction
-funcprot(prot);
-// global declaration
-global callWithPath;
-callWithPath = "";
-loadXcosLibs();
-// test with an empty diagram
-scs_m = scicos_diagram();
-%diagram_xcos(scs_m);
-scs_m_2 = scs_m;
-status = import_from_hdf5(callWithPath);
-if ~status | scs_m <> scs_m_2 then bugmes();quit;end
-// test with a diagram containing a block
-scs_m = scicos_diagram();
-scs_m.objs(1) = SUM_f("define");
-%diagram_xcos(scs_m);
-scs_m_2 = scs_m;
-status = import_from_hdf5(callWithPath);
-if ~status | scs_m <> scs_m_2 then bugmes();quit;end
diff --git a/scilab/modules/xcos/tests/unit_tests/%diagram_xcos.tst b/scilab/modules/xcos/tests/unit_tests/%diagram_xcos.tst
deleted file mode 100644 (file)
index a312531..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) DIGITEO - 2010-2010 - Clément DAVID <clement.david@scilab.org>
-//
-// This file is distributed under the same license as the Scilab package.
-
-// <-- TEST WITH XCOS -->
-//
-// <-- Short Description -->
-// White-box test for the %diagram_xcos overload macro.
-
-// overload called methods
-prot = funcprot();
-funcprot(0);
-function xcos(h5path)
-    global callWithPath;
-    callWithPath = h5path;
-endfunction
-funcprot(prot);
-
-// global declaration
-global callWithPath;
-callWithPath = "";
-
-loadXcosLibs();
-
-// test with an empty diagram
-scs_m = scicos_diagram();
-%diagram_xcos(scs_m);
-
-scs_m_2 = scs_m;
-status = import_from_hdf5(callWithPath);
-if ~status | scs_m <> scs_m_2 then pause, end
-
-// test with a diagram containing a block
-scs_m = scicos_diagram();
-scs_m.objs(1) = SUM_f("define");
-%diagram_xcos(scs_m);
-
-scs_m_2 = scs_m;
-status = import_from_hdf5(callWithPath);
-if ~status | scs_m <> scs_m_2 then pause, end
-
index a90358d..a4aeed2 100644 (file)
@@ -1,32 +1,24 @@
 // ============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2009 - DIGITEO
+// Copyright (C) 2012 - Scilab Enterprises - Clement DAVID
 //
 //  This file is distributed under the same license as the Scilab package.
 // ============================================================================
+// <-- TEST WITH GRAPHIC -->
 // <-- NO CHECK ERROR OUTPUT -->
-defaultlibs = ['Branching',
-'Branching',
-'Events',
-'Misc',
-'Sinks',
-'Threshold',
-'Linear',
-'Matrixop',
-'Nonlinear',
-'Sources',
-'Electrical',
-'Hydraulics',
-'PDE'];
-defaultlibs = defaultlibs + 'lib';
-for i = size(defaultlibs,'*')
- if isdef(defaultlibs(i)) then bugmes();quit;end
-end
-// check that macros are loaded @ scilab startup
-if whereis('shape') <> [] then bugmes();quit;end
+// libs are not loaded at startup
+if isdef('BIGSOM_f') then bugmes();quit;end
 // we launch xcos then libs should be loaded
 xcos();
-if whereis('shape') <> "PDElib" then bugmes();quit;end
-for i = size(defaultlibs,'*')
- if ~isdef(defaultlibs(i)) then bugmes();quit;end
-end
+if ~isdef('BIGSOM_f') then bugmes();quit;end
+// we launch xcos with an xcos demo file
+xcos(SCI + "/modules/xcos/demos/Simple_Demo.xcos");
+// we launch xcos with cos file
+xcos(SCI + "/modules/xcos/tests/nonreg_tests/Antrieb3.cos");
+// we launch xcos with cosf file
+xcos(SCI + "/modules/scicos/palettes/Branching.cosf");
+// we launch xcos with a scs_m instance
+scs_m = scicos_diagram();
+scs_m.objs($+1) = BIGSOM_f("define");
+xcos(scs_m);
index 9940255..c8b5b1d 100644 (file)
@@ -1,39 +1,34 @@
 // ============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2009 - DIGITEO
+// Copyright (C) 2012 - Scilab Enterprises - Clement DAVID
 //
 //  This file is distributed under the same license as the Scilab package.
 // ============================================================================
 
+// <-- TEST WITH GRAPHIC -->
 // <-- NO CHECK ERROR OUTPUT -->
 
-defaultlibs = ['Branching',
-'Branching',
-'Events',
-'Misc',
-'Sinks',
-'Threshold',
-'Linear',
-'Matrixop',
-'Nonlinear',
-'Sources',
-'Electrical',
-'Hydraulics',
-'PDE'];
-
-defaultlibs = defaultlibs + 'lib';
-for i = size(defaultlibs,'*')
- if isdef(defaultlibs(i)) then pause,end
-end
-
-// check that macros are loaded @ scilab startup
-if whereis('shape') <> [] then pause,end
+// libs are not loaded at startup
+if isdef('BIGSOM_f') then pause, end
 
 // we launch xcos then libs should be loaded
 xcos();
-if whereis('shape') <> "PDElib" then pause,end
+if ~isdef('BIGSOM_f') then pause, end
+
+// we launch xcos with an xcos demo file
+xcos(SCI + "/modules/xcos/demos/Simple_Demo.xcos");
+
+// we launch xcos with cos file
+xcos(SCI + "/modules/xcos/tests/nonreg_tests/Antrieb3.cos");
+
+// we launch xcos with cosf file
+xcos(SCI + "/modules/scicos/palettes/Branching.cosf");
+
+// we launch xcos with a scs_m instance
+scs_m = scicos_diagram();
+scs_m.objs($+1) = BIGSOM_f("define");
+xcos(scs_m);
+
 
-for i = size(defaultlibs,'*')
- if ~isdef(defaultlibs(i)) then pause,end
-end