Preferences: add static methods in ScilabPreference.java to retrieve toolboxes ... 09/5009/2
Calixte DENIZET [Thu, 22 Sep 2011 13:31:56 +0000 (15:31 +0200)]
Change-Id: I27729ba28c9dd638f6ce09ca79feba759ffd48cb

28 files changed:
scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton.quit
scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton.start
scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton_preferences.xml [new file with mode: 0644]
scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton_preferences.xsl [new file with mode: 0644]
scilab/etc/modules.xml.in
scilab/etc/scilab.start
scilab/modules/Makefile.am
scilab/modules/Makefile.in
scilab/modules/core/includes/callinterf.h
scilab/modules/core/src/c/callinterf.c
scilab/modules/core/src/c/dynamic_gateways.c
scilab/modules/core/src/c/dynamic_gateways.h
scilab/modules/preferences/Makefile.am
scilab/modules/preferences/Makefile.in
scilab/modules/preferences/includes/dynlib_preferences_scilab.h [new file with mode: 0644]
scilab/modules/preferences/includes/gw_preferences.h [new file with mode: 0644]
scilab/modules/preferences/sci_gateway/c/gw_preferences.c [new file with mode: 0644]
scilab/modules/preferences/sci_gateway/cpp/sci_addToolboxInfos.cpp [new file with mode: 0644]
scilab/modules/preferences/sci_gateway/cpp/sci_removeToolboxInfos.cpp [new file with mode: 0644]
scilab/modules/preferences/sci_gateway/preferences_gateway.xml [new file with mode: 0644]
scilab/modules/preferences/src/java/org/scilab/modules/preferences/ScilabPreferences.java [new file with mode: 0644]
scilab/modules/preferences/src/jni/GiwsException.cpp [new file with mode: 0644]
scilab/modules/preferences/src/jni/GiwsException.hxx [new file with mode: 0644]
scilab/modules/preferences/src/jni/ScilabPreferences.cpp [new file with mode: 0644]
scilab/modules/preferences/src/jni/ScilabPreferences.giws.xml [new file with mode: 0644]
scilab/modules/preferences/src/jni/ScilabPreferences.hxx [new file with mode: 0644]
scilab/modules/preferences/src/nopreferences/nopreferences.c [new file with mode: 0644]
scilab/modules/preferences/src/nopreferences/nopreferences.h [new file with mode: 0644]

index 19b8a25..615d458 100644 (file)
@@ -1,3 +1,10 @@
 // This file is released under the 3-clause BSD license. See COPYING-BSD.
 
 // Some specific hooks can be specify here when the module is unloaded.
+
+etc_tlbx  = get_absolute_file_path("toolbox_skeleton.quit");   
+etc_tlbx  = getshortpathname(etc_tlbx);
+root_tlbx = strncpy( etc_tlbx, length(etc_tlbx)-length("\etc\") );
+removeToolboxInfos(root_tlbx);
+
+clear etc_tlbx root_tlbx
index 634d356..67dec1a 100644 (file)
@@ -50,6 +50,8 @@ function toolbox_skeletonlib = startModule()
     add_demo(toolbox_name, pathdemos);
   end
 
+  addToolboxInfos(toolbox_name, root_tlbx, etc_tlbx + "toolbox_skeleton_preferences.xml");
+
 endfunction
 
 toolbox_skeletonlib = startModule();
diff --git a/scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton_preferences.xml b/scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton_preferences.xml
new file mode 100644 (file)
index 0000000..2f7fcdb
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<toolbox_skeleton>
+  <body maturity="B">
+    <environment foo="bar" />
+    <save bar="true" />
+  </body>
+</toolbox_skeleton>
diff --git a/scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton_preferences.xsl b/scilab/contrib/toolbox_skeleton/etc/toolbox_skeleton_preferences.xsl
new file mode 100644 (file)
index 0000000..70f1cf0
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='utf-8'?>
+<xsl:stylesheet version ="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:import href="XCommon.xsl"/>
+
+  <xsl:template match="environment" mode="tooltip">Environment</xsl:template>
+  <xsl:template match="environment">
+    <VSpace height="25"/>
+    <Title text="Environment">
+      <HBox>
+        Foo:
+        <xsl:call-template name="Select">
+          <xsl:with-param name="among">
+            <option foo="bar"/>
+            <option foo="barbar"/>
+            <option foo="barbarbar"/>
+          </xsl:with-param>
+        </xsl:call-template>
+      </HBox>
+    </Title>
+  </xsl:template>
+
+  <xsl:template match="save">
+    <VSpace height="25"/>
+    <Title text="Save">
+      <HBox>
+        <Checkbox listener="ActionListener">
+          <xsl:if test="@bar='true'">
+            <xsl:attribute name="checked">checked</xsl:attribute>
+          </xsl:if>
+          <actionPerformed set="bar" value="true">
+            <xsl:call-template name="context"/>
+          </actionPerformed>
+        </Checkbox>
+        Save:
+      </HBox>
+    </Title>
+  </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
index 9dc4173..12de085 100644 (file)
@@ -87,5 +87,6 @@
 <module name="parallel" activate="yes"/>
 <module name="modules_manager" activate="yes"/>
 <module name="history_browser" activate="@JAVA_ENABLE@"/>
+<module name="preferences" activate="@GUI_ENABLE@"/>
 </modules>
 
index 3cb5977..9e99ba6 100644 (file)
@@ -157,6 +157,5 @@ if getscilabmode() == "STD" then
   setmenu(gettext("&Toolboxes"));
   toolbar(-1, "on");
 end
-
 // ====================================================================
 clear ans
index 2e3fbb0..8104373 100644 (file)
@@ -211,7 +211,8 @@ ENGINE_LIBS_DYNAMIC_LOAD = \
        $(top_builddir)/modules/umfpack/libsciumfpack.la \
        $(top_builddir)/modules/matio/libscimatio.la \
        $(top_builddir)/modules/helptools/libscihelptools.la \
-       $(top_builddir)/modules/parallel/libsciparallel.la
+       $(top_builddir)/modules/parallel/libsciparallel.la \
+       $(top_builddir)/modules/preferences/libscipreferences.la
 
 
 # Core modules
index dd3ff27..8c4b89c 100644 (file)
@@ -550,7 +550,8 @@ ENGINE_LIBS_DYNAMIC_LOAD = \
        $(top_builddir)/modules/umfpack/libsciumfpack.la \
        $(top_builddir)/modules/matio/libscimatio.la \
        $(top_builddir)/modules/helptools/libscihelptools.la \
-       $(top_builddir)/modules/parallel/libsciparallel.la
+       $(top_builddir)/modules/parallel/libsciparallel.la \
+       $(top_builddir)/modules/preferences/libscipreferences.la
 
 
 # Core modules
index ffe2ba5..980202a 100644 (file)
@@ -89,6 +89,7 @@
 /* 65 */                                               #include "dynamic_gateways.h" /* action_binding */
 /* 66 */                        #include "dynamic_parallel.h" /* parallel */
 /* 67 */                        #include "dynamic_gateways.h" /* ui_data */
+/* 68 */                        #include "dynamic_gateways.h" /* preferences */
 
 
 
index b7ca5a5..8163029 100644 (file)
@@ -34,7 +34,7 @@ jmp_buf jmp_env;
  ** Watch out the positions are crutial !!!
  ** @TODO : Make this less crappy...
  **/
-#define INTERFACES_MAX 67
+#define INTERFACES_MAX 68
 static OpTab Interfaces[INTERFACES_MAX] = {
     /* 01  */ {gw_user}, /* free position may be used */
     /* 02  */ {gw_linear_algebra},
@@ -102,7 +102,8 @@ static OpTab Interfaces[INTERFACES_MAX] = {
     /* 64  */ {gw_dynamic_xcos},
     /* 65  */ {gw_dynamic_action_binding},
     /* 66  */ {gw_dynamic_parallel},
-    /* 67  */ {gw_dynamic_ui_data}
+    /* 67  */ {gw_dynamic_ui_data},
+    /* 68  */ {gw_dynamic_preferences},
 };
 /*--------------------------------------------------------------------------*/
 /**
index d2f8bcf..499eb61 100644 (file)
@@ -385,6 +385,22 @@ int gw_dynamic_ui_data(void)
         &ptr_gw_ui_data);
 }
 /*--------------------------------------------------------------------------*/
+/* preferences module */
+#define PREFERENCES_MODULE_NAME "preferences"
+static DynLibHandle hPreferencesLib = NULL;
+static PROC_GATEWAY ptr_gw_preferences = NULL;
+static char* dynlibname_preferences = NULL;
+static char* gatewayname_preferences = NULL;
+/*--------------------------------------------------------------------------*/
+int gw_dynamic_preferences(void)
+{
+    return gw_dynamic_generic(PREFERENCES_MODULE_NAME,
+        &dynlibname_preferences,
+        &gatewayname_preferences,
+        &hPreferencesLib,
+        &ptr_gw_preferences);
+}
+/*--------------------------------------------------------------------------*/
 void freeAllDynamicGateways(void)
 {
     freeDynamicGateway(&dynlibname_special_functions,
@@ -492,6 +508,11 @@ void freeAllDynamicGateways(void)
         &gatewayname_ui_data,
         &hUi_dataLib,
         &ptr_gw_ui_data);
+
+    freeDynamicGateway(&dynlibname_preferences,
+        &gatewayname_preferences,
+        &hPreferencesLib,
+        &ptr_gw_preferences);
 }
 /*--------------------------------------------------------------------------*/
 
index 0546480..f912617 100644 (file)
@@ -168,6 +168,13 @@ int gw_dynamic_graphic_export(void);
 */
 int gw_dynamic_action_binding(void);
 
+/**
+* preferences gateway
+* preferences is loaded dynamically at runtime
+* load gw_preferences in SCI/modules/preferences/sci_gateway/gw_preferences.c
+*/
+int gw_dynamic_preferences(void);
+
 #endif /* __DYNAMIC_GATEWAYS_H__ */
 /*--------------------------------------------------------------------------*/
 
index 4ec4508..774a18f 100644 (file)
@@ -25,22 +25,23 @@ libscipreferences_la_etc_DATA =
 include $(top_srcdir)/Makefile.incl.am
 
 
-PREFERENCES_JNI_SOURCES = 
+PREFERENCES_JNI_SOURCES = src/jni/ScilabPreferences.cpp
 
-PREFERENCES_C_SOURCES = 
+PREFERENCES_C_SOURCES =
 
-PREFERENCES_CPP_SOURCES = 
+PREFERENCES_CPP_SOURCES =
 
-GIWS_WRAPPERS = 
+GIWS_WRAPPERS = src/jni/ScilabPreferences.giws.xml
 
 if GIWS
     BUILT_SOURCES=giws
 endif
 
 
-GATEWAY_C_SOURCES = 
+GATEWAY_C_SOURCES = sci_gateway/c/gw_preferences.c
 
-GATEWAY_CPP_SOURCES = 
+GATEWAY_CPP_SOURCES = sci_gateway/cpp/sci_addToolboxInfos.cpp \
+                      sci_gateway/cpp/sci_removeToolboxInfos.cpp
 
 libscipreferences_la_CFLAGS= $(JAVA_JNI_INCLUDE) \
     -I$(top_srcdir)/libs/MALLOC/includes/ \
@@ -67,9 +68,11 @@ libscipreferences_la_CPPFLAGS = $(JAVA_JNI_INCLUDE) \
 libscipreferences_disable_la_CFLAGS = -Iincludes/ \
     -I$(top_srcdir)/modules/output_stream/includes
 
-PREFERENCES_DISABLE_C_SOURCES = 
+PREFERENCES_DISABLE_C_SOURCES = src/nopreferences/nopreferences.c
+libscipreferences_disable_la_LDFLAGS = -version-number $(SCILAB_LIBRARY_VERSION) $(LD_FLAGS)
+libscipreferences_disable_la_SOURCES = $(PREFERENCES_DISABLE_C_SOURCES)
 
-pkglib_LTLIBRARIES = 
+pkglib_LTLIBRARIES = libscipreferences-disable.la
 
 if GUI
     pkglib_LTLIBRARIES += libscipreferences.la 
@@ -89,7 +92,7 @@ INCLUDE_FLAGS = $(libscipreferences_la_CFLAGS)
 
 
 #### SWIG Declaration ####
-SWIG_WRAPPERS = src/jni/ScilabKeywords.i 
+SWIG_WRAPPERS = 
 
 if SWIG
     BUILT_SOURCES=swig
@@ -103,7 +106,7 @@ libscipreferences_la_LIBADD = libscipreferences-algo.la \
 
 #### preferences : gateway declaration ####
 libscipreferences_la_sci_gatewaydir = $(mydatadir)/sci_gateway
-libscipreferences_la_sci_gateway_DATA = 
+libscipreferences_la_sci_gateway_DATA = sci_gateway/preferences_gateway.xml
 
 if GUI
     USEANT=1
index 4d2cff0..7a8d2c7 100644 (file)
@@ -117,27 +117,38 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)" \
 LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
 libscipreferences_algo_la_LIBADD =
 am__objects_1 =
+am__objects_2 = libscipreferences_algo_la-ScilabPreferences.lo
 am_libscipreferences_algo_la_OBJECTS = $(am__objects_1) \
-       $(am__objects_1) $(am__objects_1)
+       $(am__objects_2) $(am__objects_1)
 libscipreferences_algo_la_OBJECTS =  \
        $(am_libscipreferences_algo_la_OBJECTS)
-libscipreferences_algo_la_LINK = $(LIBTOOL) --tag=CC \
-       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-       $(libscipreferences_algo_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-       $(LDFLAGS) -o $@
 @GUI_TRUE@am_libscipreferences_algo_la_rpath =
+libscipreferences_disable_la_LIBADD =
+am__objects_3 = libscipreferences_disable_la-nopreferences.lo
+am_libscipreferences_disable_la_OBJECTS = $(am__objects_3)
+libscipreferences_disable_la_OBJECTS =  \
+       $(am_libscipreferences_disable_la_OBJECTS)
+libscipreferences_disable_la_LINK = $(LIBTOOL) --tag=CC \
+       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+       $(libscipreferences_disable_la_CFLAGS) $(CFLAGS) \
+       $(libscipreferences_disable_la_LDFLAGS) $(LDFLAGS) -o $@
 libscipreferences_la_DEPENDENCIES = libscipreferences-algo.la \
        $(top_builddir)/libs/MALLOC/libscimalloc.la \
        $(top_builddir)/modules/jvm/libscijvm.la \
        $(top_builddir)/modules/output_stream/libscioutput_stream.la
-am_libscipreferences_la_OBJECTS = $(am__objects_1) $(am__objects_1)
+am__objects_4 = libscipreferences_la-gw_preferences.lo
+am__objects_5 = libscipreferences_la-sci_addToolboxInfos.lo \
+       libscipreferences_la-sci_removeToolboxInfos.lo
+am_libscipreferences_la_OBJECTS = $(am__objects_4) $(am__objects_5)
 libscipreferences_la_OBJECTS = $(am_libscipreferences_la_OBJECTS)
-libscipreferences_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-       $(libscipreferences_la_CFLAGS) $(CFLAGS) \
-       $(libscipreferences_la_LDFLAGS) $(LDFLAGS) -o $@
+libscipreferences_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+       $(CXXFLAGS) $(libscipreferences_la_LDFLAGS) $(LDFLAGS) -o $@
 @GUI_TRUE@am_libscipreferences_la_rpath = -rpath $(pkglibdir)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -147,13 +158,26 @@ CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
        --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
        $(LDFLAGS) -o $@
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
 SOURCES = $(libscipreferences_algo_la_SOURCES) \
+       $(libscipreferences_disable_la_SOURCES) \
        $(libscipreferences_la_SOURCES)
 DIST_SOURCES = $(libscipreferences_algo_la_SOURCES) \
+       $(libscipreferences_disable_la_SOURCES) \
        $(libscipreferences_la_SOURCES)
 DATA = $(libscipreferences_la_etc_DATA) \
        $(libscipreferences_la_root_DATA) \
        $(libscipreferences_la_sci_gateway_DATA)
+ETAGS = etags
+CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -477,14 +501,16 @@ JARMASK = *.jar
 HELP_CHAPTERDIR = help/
 HELP_CHAPTERFILE = addchapter.sce
 HELP_CHAPTERLANG = en_US fr_FR pt_BR
-PREFERENCES_JNI_SOURCES = 
+PREFERENCES_JNI_SOURCES = src/jni/ScilabPreferences.cpp
 PREFERENCES_C_SOURCES = 
 PREFERENCES_CPP_SOURCES = 
-GIWS_WRAPPERS = 
+GIWS_WRAPPERS = src/jni/ScilabPreferences.giws.xml
 @GIWS_TRUE@BUILT_SOURCES = giws
 @SWIG_TRUE@BUILT_SOURCES = swig
-GATEWAY_C_SOURCES = 
-GATEWAY_CPP_SOURCES = 
+GATEWAY_C_SOURCES = sci_gateway/c/gw_preferences.c
+GATEWAY_CPP_SOURCES = sci_gateway/cpp/sci_addToolboxInfos.cpp \
+                      sci_gateway/cpp/sci_removeToolboxInfos.cpp
+
 libscipreferences_la_CFLAGS = $(JAVA_JNI_INCLUDE) \
     -I$(top_srcdir)/libs/MALLOC/includes/ \
     -I$(top_srcdir)/modules/jvm/includes/ \
@@ -511,8 +537,10 @@ libscipreferences_la_CPPFLAGS = $(JAVA_JNI_INCLUDE) \
 libscipreferences_disable_la_CFLAGS = -Iincludes/ \
     -I$(top_srcdir)/modules/output_stream/includes
 
-PREFERENCES_DISABLE_C_SOURCES = 
-pkglib_LTLIBRARIES = $(am__append_2)
+PREFERENCES_DISABLE_C_SOURCES = src/nopreferences/nopreferences.c
+libscipreferences_disable_la_LDFLAGS = -version-number $(SCILAB_LIBRARY_VERSION) $(LD_FLAGS)
+libscipreferences_disable_la_SOURCES = $(PREFERENCES_DISABLE_C_SOURCES)
+pkglib_LTLIBRARIES = libscipreferences-disable.la $(am__append_2)
 @GUI_TRUE@noinst_LTLIBRARIES = libscipreferences-algo.la 
 libscipreferences_la_LDFLAGS = -version-number $(SCILAB_LIBRARY_VERSION) $(LD_FLAGS)  $(X_LIBS) $(X_EXTRA_LIBS)
 libscipreferences_algo_la_SOURCES = $(PREFERENCES_C_SOURCES) $(PREFERENCES_JNI_SOURCES) $(PREFERENCES_CPP_SOURCES)
@@ -525,7 +553,7 @@ CHECK_SRC = $(PREFERENCES_C_SOURCES) $(GATEWAY_C_SOURCES)
 INCLUDE_FLAGS = $(libscipreferences_la_CFLAGS)
 
 #### SWIG Declaration ####
-SWIG_WRAPPERS = src/jni/ScilabKeywords.i 
+SWIG_WRAPPERS = 
 libscipreferences_la_LIBADD = libscipreferences-algo.la \
     $(top_builddir)/libs/MALLOC/libscimalloc.la \
     $(top_builddir)/modules/jvm/libscijvm.la \
@@ -534,13 +562,13 @@ libscipreferences_la_LIBADD = libscipreferences-algo.la \
 
 #### preferences : gateway declaration ####
 libscipreferences_la_sci_gatewaydir = $(mydatadir)/sci_gateway
-libscipreferences_la_sci_gateway_DATA = 
+libscipreferences_la_sci_gateway_DATA = sci_gateway/preferences_gateway.xml
 @GUI_TRUE@USEANT = 1
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .sci .bin
+.SUFFIXES: .sci .bin .c .cpp .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -612,7 +640,9 @@ clean-pkglibLTLIBRARIES:
          rm -f "$${dir}/so_locations"; \
        done
 libscipreferences-algo.la: $(libscipreferences_algo_la_OBJECTS) $(libscipreferences_algo_la_DEPENDENCIES) 
-       $(libscipreferences_algo_la_LINK) $(am_libscipreferences_algo_la_rpath) $(libscipreferences_algo_la_OBJECTS) $(libscipreferences_algo_la_LIBADD) $(LIBS)
+       $(CXXLINK) $(am_libscipreferences_algo_la_rpath) $(libscipreferences_algo_la_OBJECTS) $(libscipreferences_algo_la_LIBADD) $(LIBS)
+libscipreferences-disable.la: $(libscipreferences_disable_la_OBJECTS) $(libscipreferences_disable_la_DEPENDENCIES) 
+       $(libscipreferences_disable_la_LINK) -rpath $(pkglibdir) $(libscipreferences_disable_la_OBJECTS) $(libscipreferences_disable_la_LIBADD) $(LIBS)
 libscipreferences.la: $(libscipreferences_la_OBJECTS) $(libscipreferences_la_DEPENDENCIES) 
        $(libscipreferences_la_LINK) $(am_libscipreferences_la_rpath) $(libscipreferences_la_OBJECTS) $(libscipreferences_la_LIBADD) $(LIBS)
 
@@ -622,6 +652,89 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscipreferences_algo_la-ScilabPreferences.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscipreferences_disable_la-nopreferences.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscipreferences_la-gw_preferences.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscipreferences_la-sci_addToolboxInfos.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscipreferences_la-sci_removeToolboxInfos.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+libscipreferences_disable_la-nopreferences.lo: src/nopreferences/nopreferences.c
+@am__fastdepCC_TRUE@   $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscipreferences_disable_la_CFLAGS) $(CFLAGS) -MT libscipreferences_disable_la-nopreferences.lo -MD -MP -MF $(DEPDIR)/libscipreferences_disable_la-nopreferences.Tpo -c -o libscipreferences_disable_la-nopreferences.lo `test -f 'src/nopreferences/nopreferences.c' || echo '$(srcdir)/'`src/nopreferences/nopreferences.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/libscipreferences_disable_la-nopreferences.Tpo $(DEPDIR)/libscipreferences_disable_la-nopreferences.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/nopreferences/nopreferences.c' object='libscipreferences_disable_la-nopreferences.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscipreferences_disable_la_CFLAGS) $(CFLAGS) -c -o libscipreferences_disable_la-nopreferences.lo `test -f 'src/nopreferences/nopreferences.c' || echo '$(srcdir)/'`src/nopreferences/nopreferences.c
+
+libscipreferences_la-gw_preferences.lo: sci_gateway/c/gw_preferences.c
+@am__fastdepCC_TRUE@   $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscipreferences_la_CPPFLAGS) $(CPPFLAGS) $(libscipreferences_la_CFLAGS) $(CFLAGS) -MT libscipreferences_la-gw_preferences.lo -MD -MP -MF $(DEPDIR)/libscipreferences_la-gw_preferences.Tpo -c -o libscipreferences_la-gw_preferences.lo `test -f 'sci_gateway/c/gw_preferences.c' || echo '$(srcdir)/'`sci_gateway/c/gw_preferences.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/libscipreferences_la-gw_preferences.Tpo $(DEPDIR)/libscipreferences_la-gw_preferences.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/gw_preferences.c' object='libscipreferences_la-gw_preferences.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscipreferences_la_CPPFLAGS) $(CPPFLAGS) $(libscipreferences_la_CFLAGS) $(CFLAGS) -c -o libscipreferences_la-gw_preferences.lo `test -f 'sci_gateway/c/gw_preferences.c' || echo '$(srcdir)/'`sci_gateway/c/gw_preferences.c
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+libscipreferences_algo_la-ScilabPreferences.lo: src/jni/ScilabPreferences.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscipreferences_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscipreferences_algo_la-ScilabPreferences.lo -MD -MP -MF $(DEPDIR)/libscipreferences_algo_la-ScilabPreferences.Tpo -c -o libscipreferences_algo_la-ScilabPreferences.lo `test -f 'src/jni/ScilabPreferences.cpp' || echo '$(srcdir)/'`src/jni/ScilabPreferences.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscipreferences_algo_la-ScilabPreferences.Tpo $(DEPDIR)/libscipreferences_algo_la-ScilabPreferences.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/jni/ScilabPreferences.cpp' object='libscipreferences_algo_la-ScilabPreferences.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) $(libscipreferences_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscipreferences_algo_la-ScilabPreferences.lo `test -f 'src/jni/ScilabPreferences.cpp' || echo '$(srcdir)/'`src/jni/ScilabPreferences.cpp
+
+libscipreferences_la-sci_addToolboxInfos.lo: sci_gateway/cpp/sci_addToolboxInfos.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscipreferences_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscipreferences_la-sci_addToolboxInfos.lo -MD -MP -MF $(DEPDIR)/libscipreferences_la-sci_addToolboxInfos.Tpo -c -o libscipreferences_la-sci_addToolboxInfos.lo `test -f 'sci_gateway/cpp/sci_addToolboxInfos.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_addToolboxInfos.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscipreferences_la-sci_addToolboxInfos.Tpo $(DEPDIR)/libscipreferences_la-sci_addToolboxInfos.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sci_gateway/cpp/sci_addToolboxInfos.cpp' object='libscipreferences_la-sci_addToolboxInfos.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) $(libscipreferences_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscipreferences_la-sci_addToolboxInfos.lo `test -f 'sci_gateway/cpp/sci_addToolboxInfos.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_addToolboxInfos.cpp
+
+libscipreferences_la-sci_removeToolboxInfos.lo: sci_gateway/cpp/sci_removeToolboxInfos.cpp
+@am__fastdepCXX_TRUE@  $(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscipreferences_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libscipreferences_la-sci_removeToolboxInfos.lo -MD -MP -MF $(DEPDIR)/libscipreferences_la-sci_removeToolboxInfos.Tpo -c -o libscipreferences_la-sci_removeToolboxInfos.lo `test -f 'sci_gateway/cpp/sci_removeToolboxInfos.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_removeToolboxInfos.cpp
+@am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/libscipreferences_la-sci_removeToolboxInfos.Tpo $(DEPDIR)/libscipreferences_la-sci_removeToolboxInfos.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='sci_gateway/cpp/sci_removeToolboxInfos.cpp' object='libscipreferences_la-sci_removeToolboxInfos.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) $(libscipreferences_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libscipreferences_la-sci_removeToolboxInfos.lo `test -f 'sci_gateway/cpp/sci_removeToolboxInfos.cpp' || echo '$(srcdir)/'`sci_gateway/cpp/sci_removeToolboxInfos.cpp
+
 mostlyclean-libtool:
        -rm -f *.lo
 
@@ -687,12 +800,58 @@ uninstall-libscipreferences_la_sci_gatewayDATA:
        test -n "$$files" || exit 0; \
        echo " ( cd '$(DESTDIR)$(libscipreferences_la_sci_gatewaydir)' && rm -f" $$files ")"; \
        cd "$(DESTDIR)$(libscipreferences_la_sci_gatewaydir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
 tags: TAGS
-TAGS:
 
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
 ctags: CTAGS
-CTAGS:
-
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -766,9 +925,10 @@ clean-am: clean-generic clean-libtool clean-local \
        clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-local
+       distclean-local distclean-tags
 
 dvi: dvi-am
 
@@ -814,6 +974,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -837,16 +998,16 @@ uninstall-am: uninstall-libscipreferences_la_etcDATA \
 
 .MAKE: all check check-am install install-am install-strip
 
-.PHONY: all all-am all-local check check-am check-local clean \
-       clean-generic clean-libtool clean-local \
-       clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES distclean \
-       distclean-compile distclean-generic distclean-libtool \
-       distclean-local distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am \
-       install-data-local install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am \
-       install-html-local install-info install-info-am \
-       install-libscipreferences_la_etcDATA \
+.PHONY: CTAGS GTAGS all all-am all-local check check-am check-local \
+       clean clean-generic clean-libtool clean-local \
+       clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-local distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-data-local install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-html-local install-info \
+       install-info-am install-libscipreferences_la_etcDATA \
        install-libscipreferences_la_rootDATA \
        install-libscipreferences_la_sci_gatewayDATA install-man \
        install-pdf install-pdf-am install-pkglibLTLIBRARIES \
@@ -854,7 +1015,8 @@ uninstall-am: uninstall-libscipreferences_la_etcDATA \
        installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       uninstall uninstall-am uninstall-libscipreferences_la_etcDATA \
+       tags uninstall uninstall-am \
+       uninstall-libscipreferences_la_etcDATA \
        uninstall-libscipreferences_la_rootDATA \
        uninstall-libscipreferences_la_sci_gatewayDATA \
        uninstall-pkglibLTLIBRARIES
diff --git a/scilab/modules/preferences/includes/dynlib_preferences_scilab.h b/scilab/modules/preferences/includes/dynlib_preferences_scilab.h
new file mode 100644 (file)
index 0000000..d04bfb2
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) DIGITEO - 2011 - Calixte DENIZET
+* 
+* 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 __DYNLIB_PREFERENCES_SCILAB_H__
+#define __DYNLIB_PREFERENCES_SCILAB_H__
+
+#ifdef _MSC_VER
+       #ifdef PREFERENCES_SCILAB_EXPORTS
+               #define PREFERENCES_SCILAB_IMPEXP __declspec(dllexport)
+       #else
+               #define PREFERENCES_SCILAB_IMPEXP __declspec(dllimport)
+       #endif
+#else
+       #define PREFERENCES_SCILAB_IMPEXP
+#endif
+
+#endif /* __DYNLIB_PREFERENCES_SCILAB_H__ */
+/*--------------------------------------------------------------------------*/ 
diff --git a/scilab/modules/preferences/includes/gw_preferences.h b/scilab/modules/preferences/includes/gw_preferences.h
new file mode 100644 (file)
index 0000000..f6e98bf
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2011 - DIGITEO - Calixte DENIZET
+* 
+* 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 __GW_PREFERENCES__
+#define __GW_PREFERENCES__
+/*--------------------------------------------------------------------------*/
+#include "dynlib_preferences_scilab.h"
+/*--------------------------------------------------------------------------*/
+PREFERENCES_SCILAB_IMPEXP int gw_preferences(void);
+int sci_addToolboxInfos(char * fname, unsigned long l);
+int sci_removeToolboxInfos(char * fname, unsigned long l);
+/*--------------------------------------------------------------------------*/
+#endif /* __GW_PREFERENCES__ */
+/*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/preferences/sci_gateway/c/gw_preferences.c b/scilab/modules/preferences/sci_gateway/c/gw_preferences.c
new file mode 100644 (file)
index 0000000..13b387c
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2011 - DIGITEO - Calixte DENIZET
+ *
+ *  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 "gw_preferences.h"
+#include "stack-c.h"
+#include "callFunctionFromGateway.h"
+#include "BOOL.h"
+#include "scilabmode.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "BOOL.h"
+#include "loadOnUseClassPath.h"
+/*--------------------------------------------------------------------------*/
+static BOOL loadedDep = FALSE;
+/*--------------------------------------------------------------------------*/
+static gw_generic_table Tab[]=
+{
+    {sci_addToolboxInfos, "addToolboxInfos"},
+    {sci_removeToolboxInfos, "removeToolboxInfos"}
+};
+/*--------------------------------------------------------------------------*/
+int gw_preferences(void)
+{
+    Rhs = Max(0, Rhs);
+
+    if ( getScilabMode() == SCILAB_NWNI)
+    {
+        Scierror(999,_("Scilab '%s' module disabled in -nogui or -nwni mode.\n"), "preferences");
+        return 0;
+    }
+
+    if (!loadedDep)
+    {
+        loadOnUseClassPath("preferences");
+        loadedDep = TRUE;
+    }
+    callFunctionFromGateway(Tab, SIZE_CURRENT_GENERIC_TABLE(Tab));
+    return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/preferences/sci_gateway/cpp/sci_addToolboxInfos.cpp b/scilab/modules/preferences/sci_gateway/cpp/sci_addToolboxInfos.cpp
new file mode 100644 (file)
index 0000000..33b22d0
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
+ *
+ * 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 "ScilabPreferences.hxx"
+#include "GiwsException.hxx"
+
+extern "C"
+{
+#include "gw_preferences.h"
+#include "stack-c.h"
+#include "Scierror.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "getScilabJavaVM.h"
+#include "expandPathVariable.h"
+#include "MALLOC.h"
+}
+
+using namespace org_scilab_modules_preferences;
+
+/*--------------------------------------------------------------------------*/
+int sci_addToolboxInfos(char * fname, unsigned long fname_len)
+{
+    SciErr err;
+    int * addr = 0;
+    char * tbxName = 0;
+    char * tbxPath = 0;
+    char * expTbxPath = 0;
+    char * tbxPrefFile = 0;
+    char * expTbxPrefFile = 0;
+    char ** array[] = {&tbxName, &tbxPath, &tbxPrefFile};
+    bool error = false;
+
+    CheckLhs(1, 1);
+    CheckRhs(3, 3);
+
+    for (int i = 0; i < Rhs; i++)
+    {
+        err = getVarAddressFromPosition(pvApiCtx, i + 1, &addr);
+        if (err.iErr)
+        {
+            printError(&err, 0);
+            return 0;
+        }
+
+        if (!isStringType(pvApiCtx, addr))
+        {
+            Scierror(999, gettext("%s: Wrong type for input argument #%i: A string expected.\n"), fname, i + 1);
+            for (int j = 0; j < i; j++)
+            {
+                if (array[j])
+                {
+                    freeAllocatedSingleString(*(array[j]));
+                }
+            }
+            return 0;
+       }
+       
+       getAllocatedSingleString(pvApiCtx, addr, array[i]);
+    }
+
+    expTbxPath = expandPathVariable(const_cast<char *>(tbxPath));
+    expTbxPrefFile = expandPathVariable(const_cast<char *>(tbxPrefFile));
+
+    try
+    {
+        ScilabPreferences::addToolboxInfos(getScilabJavaVM(), tbxName, expTbxPath, expTbxPrefFile);
+    }
+    catch (const GiwsException::JniException & e)
+    {
+        Scierror(999, _("%s: A Java exception arised:\n%s"), fname, e.what());
+        error = true;
+    }
+
+    for (int i = 0; i < Rhs; i++)
+    {
+        if (array[i])
+        {
+            freeAllocatedSingleString(*(array[i]));
+        }
+    }
+    FREE(expTbxPath);
+    FREE(expTbxPrefFile);
+
+    if (!error)
+    {
+        LhsVar(1) = 0;
+        PutLhsVar();
+    }
+
+    return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/preferences/sci_gateway/cpp/sci_removeToolboxInfos.cpp b/scilab/modules/preferences/sci_gateway/cpp/sci_removeToolboxInfos.cpp
new file mode 100644 (file)
index 0000000..e9e6a98
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
+ *
+ * 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 "ScilabPreferences.hxx"
+#include "GiwsException.hxx"
+
+extern "C"
+{
+#include "gw_preferences.h"
+#include "stack-c.h"
+#include "Scierror.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "getScilabJavaVM.h"
+}
+
+using namespace org_scilab_modules_preferences;
+
+/*--------------------------------------------------------------------------*/
+int sci_removeToolboxInfos(char * fname, unsigned long fname_len)
+{
+    SciErr err;
+    int * addr = 0;
+    char * tbxName = 0;
+    bool error = false;
+
+    CheckLhs(1, 1);
+    CheckRhs(1, 1);
+
+    err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
+    if (err.iErr)
+    {
+        printError(&err, 0);
+        return 0;
+    }
+
+    if (!isEmptyMatrix(pvApiCtx, addr))
+    {
+        if (!isStringType(pvApiCtx, addr))
+        {
+            Scierror(999, gettext("%s: Wrong type for input argument #%i: A string expected.\n"), fname, 1);
+        }
+        getAllocatedSingleString(pvApiCtx, addr, &tbxName);
+    }
+
+    try
+    {
+        ScilabPreferences::removeToolboxInfos(getScilabJavaVM(), tbxName);
+    }
+    catch (const GiwsException::JniException & e)
+    {
+        Scierror(999, _("%s: A Java exception arised:\n%s"), fname, e.what());
+        error = true;
+    }
+
+    if (tbxName)
+    {
+        freeAllocatedSingleString(tbxName);
+    }
+
+    if (!error)
+    {
+        LhsVar(1) = 0;
+        PutLhsVar();
+    }
+
+    return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/preferences/sci_gateway/preferences_gateway.xml b/scilab/modules/preferences/sci_gateway/preferences_gateway.xml
new file mode 100644 (file)
index 0000000..64f0d1e
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
+<GATEWAY name="preferences">
+<!-- =================== -->
+<!--
+ Scilab
+ Interface description. In this file, we define the list of the function which
+ will be available into Scilab and the link to the "native" function.
+
+ gatewayId is the position in the hashtable 'Interfaces' defined in the
+ file SCI/modules/core/src/c/callinterf.h
+
+ primitiveId is the position in the hashtable '<module>Table Tab[]' defined
+ in the file modules/<module>/sci_gateway/c/gw_<module>.c
+
+ primitiveName is the name of the Scilab function
+
+ @author Allan CORNET
+ @date DIGITEO 2009
+ ===================
+ Don't touch if you do not know what you are doing
+-->
+<!-- =================== -->
+<PRIMITIVE gatewayId="68" primitiveId="1" primitiveName="addToolboxInfos" />
+<PRIMITIVE gatewayId="68" primitiveId="2" primitiveName="removeToolboxInfos" />
+</GATEWAY>
diff --git a/scilab/modules/preferences/src/java/org/scilab/modules/preferences/ScilabPreferences.java b/scilab/modules/preferences/src/java/org/scilab/modules/preferences/ScilabPreferences.java
new file mode 100644 (file)
index 0000000..d02d864
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
+ *
+ * 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
+ *
+ */
+
+package org.scilab.modules.preferences;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Class to get the toolboxes informations
+ * @author Calixte DENIZET
+ */
+public class ScilabPreferences {
+
+    private static Map<String, ToolboxInfos> tbxs = new HashMap<String, ToolboxInfos>();
+
+    /**
+     * @param name the toolbox name
+     * @param path the toolbox path
+     * @param prefFile the toolbox preference file path
+     */
+    public static void addToolboxInfos(String name, String path, String prefFile) {
+        tbxs.put(path, new ToolboxInfos(name, path, prefFile));
+    }
+
+    /**
+     * @return a list of the toolboxes infos
+     */
+    public static List<ToolboxInfos> getToolboxesInfos() {
+        return new ArrayList<ToolboxInfos>(tbxs.values());
+    }
+
+    /**
+     * @param path the toolbox to remove
+     */
+    public static void removeToolboxInfos(String path) {
+        tbxs.remove(path);
+    }
+
+    /**
+     * Toolbox infos
+     */
+    public static class ToolboxInfos {
+
+        private String name;
+        private String path;
+        private String prefFile;
+
+        /**
+         * Default constructor
+         * @param name the toolbox name
+         * @param path the toolbox path
+         * @param prefFile the toolbox preference file path
+         */
+        public ToolboxInfos(String name, String path, String prefFile) {
+            this.name = name;
+            this.path = path;
+            this.prefFile = prefFile;
+        }
+
+        /**
+         * @return the toolbox name
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * @return the toolbox path
+         */
+        public String getPath() {
+            return path;
+        }
+
+        /**
+         * @return the toolbox preference file path
+         */
+        public String getPrefFile() {
+            return prefFile;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        public String toString() {
+            return "Toolbox: " + name + "\nPath: "+ path + "\nPreference file: " + prefFile;
+        }
+    }
+}
diff --git a/scilab/modules/preferences/src/jni/GiwsException.cpp b/scilab/modules/preferences/src/jni/GiwsException.cpp
new file mode 100644 (file)
index 0000000..7355cce
--- /dev/null
@@ -0,0 +1,354 @@
+/* Generated by GIWS (version 1.0.4) */
+/*
+
+Copyright 2007-2008 INRIA
+
+Author : Sylvestre Ledru & others
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+#include "GiwsException.hxx" 
+namespace GiwsException {
+
+
+
+/**
+* Each subclass of JniExcpetion should call the super constructor
+* and the setErrorMessage function to set the message.
+* @param curEnv java envirnonment where the exception occured.
+*/
+JniException::JniException(JNIEnv * curEnv) throw() : exception()
+{
+// retrieve information about the exception
+javaException = curEnv->ExceptionOccurred();
+/* Clear the Java Exception to avoid calling it again & again */
+curEnv->ExceptionClear();
+m_oJavaMessage = this->retrieveExceptionMessage(curEnv);
+m_oJavaStackTrace = this->retrieveStackTrace(curEnv);
+m_oJavaExceptionName = this->retrieveExceptionName(curEnv);
+
+// by default JniExceptions display teh stack trace
+setErrorMessage(m_oJavaMessage + "\n" + m_oJavaStackTrace);
+curEnv->DeleteLocalRef(javaException);
+closeException(curEnv);
+}
+
+JniException::~JniException(void) throw()
+{
+m_oErrorMessage.clear();
+}
+
+/**
+* @return a description of the exception
+*/
+const char * JniException::what(void) const throw()
+{
+return m_oErrorMessage.c_str();
+}
+
+/**
+* @return Java description of the exception.
+*/
+std::string JniException::getJavaDescription(void) const throw()
+{
+return m_oJavaMessage;
+}
+
+/**
+* @return Java stack trace where the exception occured.
+*/
+std::string JniException::getJavaStackTrace(void) const throw()
+{
+return m_oJavaStackTrace;
+}
+
+/**
+* Get the name of the exception (ie its class name).
+*/
+std::string JniException::getJavaExceptionName(void) const throw()
+{
+return m_oJavaExceptionName;
+}
+
+
+/**
+* Set the error message that the exception should print.
+*/
+void JniException::setErrorMessage(const std::string & errorMessage)
+{
+m_oErrorMessage = errorMessage;
+}
+
+/**
+* Get the message that the exception will print.
+*/
+std::string JniException::getErrorMessage(void) const
+{
+return m_oErrorMessage;
+}
+
+/**
+* @return error message of the exception.
+*/
+std::string JniException::retrieveExceptionMessage(JNIEnv * curEnv)
+{
+// return the result of the getLocalizedMessage method
+
+// retrieve information from the exception.
+// get method id
+jmethodID getLocalizedMessageId = curEnv->GetMethodID(curEnv->GetObjectClass(javaException),
+                                               "getLocalizedMessage",
+                                               "()Ljava/lang/String;");
+
+// call getLocalizedMessage
+jstring description = (jstring) curEnv->CallObjectMethod(javaException, getLocalizedMessageId);
+
+    if (description == NULL)
+    {
+      return "";
+    }
+
+    std::string res = convertJavaString(curEnv, description);
+
+    // release java ressources
+    curEnv->DeleteLocalRef(description);
+
+    return res;
+  }
+
+  /**
+   * @return full stack trace when the exception occured.
+   */
+  std::string JniException::retrieveStackTrace(JNIEnv * curEnv)
+  {
+
+
+    // return the result of the getStackTrace method
+
+    // retrieve information from the exception.
+    // get method id
+    // getStackTrace returns an array of StackTraceElement
+    jmethodID getStackTraceId = curEnv->GetMethodID(curEnv->GetObjectClass(javaException),
+                                                    "getStackTrace",
+                                                    "()[Ljava/lang/StackTraceElement;");
+
+    // call getStackTrace
+    jobjectArray stackTrace = (jobjectArray) curEnv->CallObjectMethod(javaException, getStackTraceId);
+
+    if (stackTrace == NULL)
+    {
+      return "";
+    }
+
+    // get length of the array
+    jsize stackTraceLength = curEnv->GetArrayLength(stackTrace);
+    std::string res = "";
+
+    // get toString methodId of StackTraceElement class
+    jclass stackTraceElementClass = curEnv->FindClass("java/lang/StackTraceElement");
+    jmethodID toStringId = curEnv->GetMethodID(stackTraceElementClass, "toString", "()Ljava/lang/String;");
+
+    for (jsize i = 0; i < stackTraceLength; i++)
+    {
+      // add the result of toString method of each element in the result
+      jobject curStackTraceElement = curEnv->GetObjectArrayElement(stackTrace, i);
+
+      // call to string on the object
+      jstring stackElementString = (jstring) curEnv->CallObjectMethod(curStackTraceElement, toStringId);
+
+      if (stackElementString == NULL)
+      {
+        curEnv->DeleteLocalRef(stackTraceElementClass);
+        curEnv->DeleteLocalRef(stackTrace);
+        curEnv->DeleteLocalRef(curStackTraceElement);
+        return res;
+      }
+
+      // add a line to res
+      res += " at " + convertJavaString(curEnv, stackElementString) + "\n";
+
+      curEnv->DeleteLocalRef(curStackTraceElement);
+      curEnv->DeleteLocalRef(stackElementString);
+    }
+
+    // release java ressources
+    curEnv->DeleteLocalRef(stackTraceElementClass);
+    curEnv->DeleteLocalRef(stackTrace);
+
+
+    return res;
+  }
+
+  /**
+   * @return string containing the name of the exception (ie its class name).
+   */
+  std::string JniException::retrieveExceptionName(JNIEnv * curEnv)
+  {
+
+    // then get its class
+    jclass exceptionClass = curEnv->GetObjectClass(javaException);
+
+    // get the Class class
+    // we could also use curEnv->FindClass("Class");
+    jclass classClass = curEnv->GetObjectClass(exceptionClass);
+
+    // get the getName method
+    jmethodID getNameId = curEnv->GetMethodID(classClass, "getName", "()Ljava/lang/String;");
+
+    // call the getName function
+    jstring javaName = (jstring) curEnv->CallObjectMethod(exceptionClass, getNameId);
+
+    if (javaName == NULL)
+    {
+      return "";
+    }
+
+    std::string res = convertJavaString(curEnv, javaName);
+
+    // release java ressources
+    curEnv->DeleteLocalRef(exceptionClass);
+    curEnv->DeleteLocalRef(classClass);
+    curEnv->DeleteLocalRef(javaName);
+
+    return res;
+  }
+
+  /**
+   * To be called when all the information about the exceptions have been
+   * retrived.
+   * Remove the exception from the environment.
+   */
+  void JniException::closeException(JNIEnv * curEnv)
+  {
+    // remove the exception from the environment
+    // Beware, the exception is no longer reachable
+    curEnv->ExceptionClear();
+  }
+
+  /**
+   * Convert a Java string (jstring) into a C++ string
+   */
+  std::string JniException::convertJavaString(JNIEnv * curEnv, jstring javaString)
+  {
+    // get a pointer on a C string
+    const char * tempString = curEnv->GetStringUTFChars(javaString, 0);
+
+    // convert the C string into a C++ string
+    std::string res(tempString);
+
+    // release pointer
+    curEnv->ReleaseStringUTFChars(javaString, tempString);
+
+    return res;
+  }
+
+
+  /**
+  * Exception that should be thrown when allocation of Java ressources from C++
+  * code fails (sur as NewDoubleArray or NewStringUTF).
+  */
+  
+  JniBadAllocException::JniBadAllocException(JNIEnv * curEnv) throw() : JniException(curEnv)
+  {
+  std::string message = "Error no more memory.";
+  setErrorMessage(message);
+  }
+  
+  JniBadAllocException::~JniBadAllocException(void) throw() {}
+
+
+  /**
+  * Exception that should be thrown when a call to a Java method
+  * using Jni throw an exception.
+  * If possible, user should try to avoid this sitution because of the loss
+  * of information.
+  */
+  
+  /**
+  * @param curEnv java environment where the exception occured.
+  */
+  JniCallMethodException::JniCallMethodException(JNIEnv * curEnv) throw() : JniException(curEnv)
+  {
+  std::string errorMessage = "Exception when calling Java method : ";
+  errorMessage += getJavaDescription() + "\n" + getJavaStackTrace();
+  errorMessage += what();
+  setErrorMessage(errorMessage);
+  }
+  
+  JniCallMethodException::~JniCallMethodException(void) throw() {}
+  /**
+  * @param className name of the class which haven't been found
+  */
+  JniClassNotFoundException::JniClassNotFoundException(JNIEnv * curEnv, const std::string & className) throw() : JniException(curEnv)
+  {
+std::string errorMessage = "Could not get the Class " + className + ".";
+setErrorMessage(errorMessage);
+  }
+
+  JniClassNotFoundException::~JniClassNotFoundException(void) throw() {}
+
+  /**
+   * @param className name of the method which haven't been found
+   */
+  JniMethodNotFoundException::JniMethodNotFoundException(JNIEnv * curEnv, const std::string & methodName) throw() : JniException(curEnv)
+  {
+std::string errorMessage = "Could not access to the method " + methodName + ".";
+setErrorMessage(errorMessage);
+  }
+
+  JniMethodNotFoundException::~JniMethodNotFoundException(void) throw() {}
+  
+  /**
+   * @param curEnv java envirnonment where the exception occured.
+   */
+  JniObjectCreationException::JniObjectCreationException(JNIEnv * curEnv, const std::string & className) throw() : JniException(curEnv)
+  {
+std::string errorMessage = "Could not instantiate the object " + className + ".";
+setErrorMessage(errorMessage);
+  }
+
+  JniObjectCreationException::~JniObjectCreationException(void) throw() {}
+
+  /**
+   * @param curEnv java envirnonment where the exception occured.
+   */
+  JniMonitorException::JniMonitorException(JNIEnv * curEnv, const std::string & className) throw() : JniException(curEnv)
+  {
+std::string errorMessage = "Error in the access (Enter or exit) or a Java env monitor of class " + className + ".";
+setErrorMessage(errorMessage);
+  }
+
+  JniMonitorException::~JniMonitorException(void) throw() {}
+
+
+
+}
+
diff --git a/scilab/modules/preferences/src/jni/GiwsException.hxx b/scilab/modules/preferences/src/jni/GiwsException.hxx
new file mode 100644 (file)
index 0000000..12ddc76
--- /dev/null
@@ -0,0 +1,243 @@
+/* Generated by GIWS (version 1.0.4) */
+/*
+
+Copyright 2007-2008 INRIA
+
+Author : Sylvestre Ledru & others
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+
+#ifndef __GIWSEXCEPTION__
+#define __GIWSEXCEPTION__
+#include <iostream>
+#include <string>
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+#include <exception>
+
+namespace GiwsException {
+
+
+/**
+* Parent class for exceptions which may occure in JNI code.
+*/
+class JniException : public std::exception
+{
+
+/** Error message to display */
+std::string m_oErrorMessage;
+
+/** Java description of the exception*/
+std::string m_oJavaMessage;
+
+/** Java stackTrace when the exception occured */
+std::string m_oJavaStackTrace;
+
+/** Name of the exception (ie class name).*/
+std::string m_oJavaExceptionName;
+
+/** The exception itself ... we store as a member otherwise JNI
+complains about 'WARNING in native method: JNI call made with
+exception pending' */
+jthrowable javaException;
+
+public:
+
+/**
+* Each subclass of JniExcpetion should call the super constructor
+* and the setErrorMessage function to set the message.
+* @param curEnv java environment where the exception occured.
+*/
+JniException(JNIEnv * curEnv) throw() ;
+
+virtual ~JniException(void) throw();
+
+/**
+* @return a description of the exception
+*/
+virtual const char * what(void) const throw();
+
+/**
+* @return Java description of the exception.
+*/
+std::string getJavaDescription(void) const throw();
+
+/**
+* @return Java stack trace where the exception occured.
+*/
+std::string getJavaStackTrace(void) const throw();
+
+/**
+* Get the name of the exception (ie its class name).
+*/
+std::string getJavaExceptionName(void) const throw();
+
+protected:
+
+/**
+* Set the error message that the exception should print.
+*/
+void setErrorMessage(const std::string & errorMessage);
+
+/**
+* Get the message that the exception will print.
+*/
+std::string getErrorMessage(void) const;
+
+private:
+  /**
+* @return error message of the exception.
+*/
+std::string retrieveExceptionMessage(JNIEnv * curEnv);
+/**
+* @return full stack trace when the exception occured.
+*/
+std::string retrieveStackTrace(JNIEnv * curEnv);
+
+/**
+* @return string containing the name of the exception (ie its class name).
+*/
+std::string retrieveExceptionName(JNIEnv * curEnv);
+/**
+* To be called when all the information about the exceptions have been
+* retrived.
+* Remove the exception from the environment.
+*/
+void closeException(JNIEnv * curEnv);
+
+/**
+* Convert a Java string (jstring) into a C++ string
+*/
+std::string convertJavaString(JNIEnv * curEnv, jstring javaString);
+};
+
+/**
+* Exception that should be thrown when allocation of Java resources from C++
+* code fails (sur as NewDoubleArray or NewStringUTF).
+*/
+class JniBadAllocException : public JniException
+{
+public:
+
+JniBadAllocException(JNIEnv * curEnv) throw();
+virtual ~JniBadAllocException(void) throw();
+};
+
+/**
+* Exception that should be thrown when a call to a Java method
+* using Jni throw an exception.
+* If possible, user should try to avoid this sitution because of the loss
+* of information.
+*/
+class JniCallMethodException : public JniException
+{
+public:
+
+  /**
+   * @param curEnv java envirnonment where the exception occured.
+   */
+  JniCallMethodException(JNIEnv * curEnv) throw();
+
+  virtual ~JniCallMethodException(void) throw();
+};
+
+/**
+* Exception that should be thrown when Jni code could not find a Java class
+*/
+class JniClassNotFoundException : public JniException
+{
+public:
+
+/**
+* @param className name of the class which haven't been found
+*/
+JniClassNotFoundException(JNIEnv * curEnv, const std::string & className) throw();
+
+virtual ~JniClassNotFoundException(void) throw();
+
+};
+
+/**
+* Exception that should be thrown when Jni code could not find a Java method
+*/
+class JniMethodNotFoundException : public JniException
+{
+public:
+
+/**
+* @param className name of the method which haven't been found
+*/
+JniMethodNotFoundException(JNIEnv * curEnv, const std::string & methodName) throw();
+virtual ~JniMethodNotFoundException(void) throw();
+
+};
+
+/**
+* Exception that should be thrown when a call to a Java method
+* using Jni throw an exception.
+* If possible, user should try to avoid this sitution because of the loss
+* of information.
+*/
+class JniObjectCreationException : public JniException
+{
+public:
+
+/**
+* @param curEnv java envirnonment where the exception occured.
+*/
+JniObjectCreationException(JNIEnv * curEnv, const std::string & className) throw();
+virtual ~JniObjectCreationException(void) throw();
+
+};
+
+
+/**
+* Exception that should be thrown when a call to the Java monitor
+* failed
+*/
+class JniMonitorException : public JniException
+{
+public:
+
+/**
+* @param curEnv java envirnonment where the exception occured.
+*/
+JniMonitorException(JNIEnv * curEnv, const std::string & className) throw();
+virtual ~JniMonitorException(void) throw();
+
+};
+
+
+}
+#endif
+
diff --git a/scilab/modules/preferences/src/jni/ScilabPreferences.cpp b/scilab/modules/preferences/src/jni/ScilabPreferences.cpp
new file mode 100644 (file)
index 0000000..b986944
--- /dev/null
@@ -0,0 +1,220 @@
+#include "ScilabPreferences.hxx"
+/* Generated by GIWS (version 1.3.0) */
+/*
+
+Copyright 2007-2008 INRIA
+Copyright 2008-2011 DIGITEO
+
+Author : Sylvestre Ledru & others
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+namespace org_scilab_modules_preferences {
+
+// Returns the current env
+
+JNIEnv * ScilabPreferences::getCurrentEnv() {
+JNIEnv * curEnv = NULL;
+jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+if (res != JNI_OK) {
+throw GiwsException::JniException(getCurrentEnv());
+}
+return curEnv;
+}
+// Destructor
+
+ScilabPreferences::~ScilabPreferences() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+
+curEnv->DeleteGlobalRef(this->instance);
+curEnv->DeleteGlobalRef(this->instanceClass);
+}
+// Constructors
+ScilabPreferences::ScilabPreferences(JavaVM * jvm_) {
+jmethodID constructObject = NULL ;
+jobject localInstance ;
+jclass localClass ;
+const std::string construct="<init>";
+const std::string param="()V";
+jvm=jvm_;
+
+JNIEnv * curEnv = getCurrentEnv();
+
+localClass = curEnv->FindClass( this->className().c_str() ) ;
+if (localClass == NULL) {
+  throw GiwsException::JniClassNotFoundException(curEnv, this->className());
+}
+
+this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+
+/* localClass is not needed anymore */
+curEnv->DeleteLocalRef(localClass);
+
+if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+
+constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
+if(constructObject == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
+if(localInstance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+this->instance = curEnv->NewGlobalRef(localInstance) ;
+if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+/* localInstance not needed anymore */
+curEnv->DeleteLocalRef(localInstance);
+
+                /* Methods ID set to NULL */
+voidaddToolboxInfosjstringjava_lang_Stringjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
+voidremoveToolboxInfosjstringjava_lang_StringID=NULL;
+
+
+}
+
+ScilabPreferences::ScilabPreferences(JavaVM * jvm_, jobject JObj) {
+        jvm=jvm_;
+
+        JNIEnv * curEnv = getCurrentEnv();
+
+jclass localClass = curEnv->GetObjectClass(JObj);
+        this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+        curEnv->DeleteLocalRef(localClass);
+
+        if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+        }
+
+        this->instance = curEnv->NewGlobalRef(JObj) ;
+        if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+        }
+        /* Methods ID set to NULL */
+        voidaddToolboxInfosjstringjava_lang_Stringjstringjava_lang_Stringjstringjava_lang_StringID=NULL;
+voidremoveToolboxInfosjstringjava_lang_StringID=NULL;
+
+
+}
+
+// Generic methods
+
+void ScilabPreferences::synchronize() {
+if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "ScilabPreferences");
+}
+}
+
+void ScilabPreferences::endSynchronize() {
+if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "ScilabPreferences");
+}
+}
+// Method(s)
+
+void ScilabPreferences::addToolboxInfos (JavaVM * jvm_, char * name, char * path, char * prefFile){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voidaddToolboxInfosjstringjava_lang_Stringjstringjava_lang_Stringjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "addToolboxInfos", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" ) ;
+if (voidaddToolboxInfosjstringjava_lang_Stringjstringjava_lang_Stringjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "addToolboxInfos");
+}
+
+jstring name_ = curEnv->NewStringUTF( name );
+if (name != NULL && name_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jstring path_ = curEnv->NewStringUTF( path );
+if (path != NULL && path_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jstring prefFile_ = curEnv->NewStringUTF( prefFile );
+if (prefFile != NULL && prefFile_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+                         curEnv->CallStaticVoidMethod(cls, voidaddToolboxInfosjstringjava_lang_Stringjstringjava_lang_Stringjstringjava_lang_StringID ,name_, path_, prefFile_);
+                        curEnv->DeleteLocalRef(name_);
+curEnv->DeleteLocalRef(path_);
+curEnv->DeleteLocalRef(prefFile_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+void ScilabPreferences::removeToolboxInfos (JavaVM * jvm_, char * path){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = curEnv->FindClass( className().c_str() );
+
+jmethodID voidremoveToolboxInfosjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "removeToolboxInfos", "(Ljava/lang/String;)V" ) ;
+if (voidremoveToolboxInfosjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "removeToolboxInfos");
+}
+
+jstring path_ = curEnv->NewStringUTF( path );
+if (path != NULL && path_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+                         curEnv->CallStaticVoidMethod(cls, voidremoveToolboxInfosjstringjava_lang_StringID ,path_);
+                        curEnv->DeleteLocalRef(path_);
+curEnv->DeleteLocalRef(cls);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+}
diff --git a/scilab/modules/preferences/src/jni/ScilabPreferences.giws.xml b/scilab/modules/preferences/src/jni/ScilabPreferences.giws.xml
new file mode 100644 (file)
index 0000000..e9b9f39
--- /dev/null
@@ -0,0 +1,12 @@
+<package name="org.scilab.modules.preferences">
+    <object name="ScilabPreferences">
+        <method name="addToolboxInfos" returnType="void" modifier="static">
+           <parameter name="name" type="String"/>
+           <parameter name="path" type="String"/>
+           <parameter name="prefFile" type="String"/>
+        </method>
+       <method name="removeToolboxInfos" returnType="void" modifier="static">
+           <parameter name="path" type="String"/>
+        </method>
+    </object>
+</package>
diff --git a/scilab/modules/preferences/src/jni/ScilabPreferences.hxx b/scilab/modules/preferences/src/jni/ScilabPreferences.hxx
new file mode 100644 (file)
index 0000000..67bfbad
--- /dev/null
@@ -0,0 +1,144 @@
+/* Generated by GIWS (version 1.3.0) */
+/*
+
+Copyright 2007-2008 INRIA
+Copyright 2008-2011 DIGITEO
+
+Author : Sylvestre Ledru & others
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software.  You can  use, 
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info". 
+
+As a counterpart to the access to the source code and  rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty  and the software's author,  the holder of the
+economic rights,  and the successive licensors  have only  limited
+liability. 
+
+In this respect, the user's attention is drawn to the risks associated
+with loading,  using,  modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean  that it is complicated to manipulate,  and  that  also
+therefore means  that it is reserved for developers  and  experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or 
+data to be ensured and,  more generally, to use and operate it in the 
+same conditions as regards security. 
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+
+#ifndef __ORG_SCILAB_MODULES_PREFERENCES_SCILABPREFERENCES__
+#define __ORG_SCILAB_MODULES_PREFERENCES_SCILABPREFERENCES__
+#include <iostream>
+#include <string>
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+
+#include "GiwsException.hxx"
+
+#ifndef _MSC_VER /* Defined anyway with Visual */
+#if !defined(byte)
+typedef signed char byte;
+#else
+#pragma message("Byte has been redefined elsewhere. Some problems can happen")
+#endif
+#endif
+
+namespace org_scilab_modules_preferences {
+class ScilabPreferences {
+
+private:
+JavaVM * jvm;
+
+protected:
+jmethodID voidaddToolboxInfosjstringjava_lang_Stringjstringjava_lang_Stringjstringjava_lang_StringID; // cache method id
+jmethodID voidremoveToolboxInfosjstringjava_lang_StringID; // cache method id
+
+
+
+jobject instance;
+jclass instanceClass; // cache class
+
+
+/**
+* Get the environment matching to the current thread.
+*/
+virtual JNIEnv * getCurrentEnv();
+
+public:
+// Constructor
+/**
+* Create a wrapping of the object from a JNIEnv.
+* It will call the default constructor
+* @param JEnv_ the Java Env
+*/
+ScilabPreferences(JavaVM * jvm_);
+
+/**
+* Create a wrapping of an already existing object from a JNIEnv.
+* The object must have already been instantiated
+* @param JEnv_ the Java Env
+* @param JObj the object
+*/
+ScilabPreferences(JavaVM * jvm_, jobject JObj);
+
+
+/** 
+* This is a fake constructor to avoid the constructor
+* chaining when dealing with extended giws classes 
+*/
+#ifdef FAKEGIWSDATATYPE
+ScilabPreferences(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
+#endif
+
+// Destructor
+~ScilabPreferences();
+
+// Generic method
+// Synchronization methods
+/**
+* Enter monitor associated with the object.
+* Equivalent of creating a "synchronized(obj)" scope in Java.
+*/
+void synchronize();
+
+/**
+* Exit monitor associated with the object.
+* Equivalent of ending a "synchronized(obj)" scope.
+*/
+void endSynchronize();
+
+// Methods
+static void addToolboxInfos(JavaVM * jvm_, char * name, char * path, char * prefFile);
+
+static void removeToolboxInfos(JavaVM * jvm_, char * path);
+
+
+                        /**
+                        * Get class name to use for static methods
+                        * @return class name to use for static methods
+                        */
+                        
+                static const std::string className()
+                {
+                return "org/scilab/modules/preferences/ScilabPreferences";
+                }
+                
+};
+
+
+}
+#endif
diff --git a/scilab/modules/preferences/src/nopreferences/nopreferences.c b/scilab/modules/preferences/src/nopreferences/nopreferences.c
new file mode 100644 (file)
index 0000000..744c7c2
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
+ *
+ * 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 "nopreferences.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+int gw_preferences(void)
+{
+    Scierror(999,_("Scilab '%s' module not installed.\n"), "preferences");
+    return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/preferences/src/nopreferences/nopreferences.h b/scilab/modules/preferences/src/nopreferences/nopreferences.h
new file mode 100644 (file)
index 0000000..4767df4
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
+ *
+ * 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
+ *
+ */
+/*--------------------------------------------------------------------------*/
+int gw_preferences(void);
+/*--------------------------------------------------------------------------*/