Merge remote-tracking branch 'origin/master' into gsoc2012-interactions 42/12042/1
Vincent COUVERT [Tue, 16 Jul 2013 13:38:14 +0000 (15:38 +0200)]
Conflicts:
scilab/CHANGES_5.5.X
scilab/modules/api_scilab/locales/pt_BR.po
scilab/modules/arnoldi/locales/pt_BR.po
scilab/modules/fileio/macros/%_listvarinfile.sci
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Mark.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/ColorMap.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/legend/Legend.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/polyline/Polyline.java
scilab/modules/graphics/macros/%h_load.sci
scilab/modules/graphics/macros/%h_p.sci
scilab/modules/graphics/macros/%h_save.sci
scilab/modules/graphics/macros/datatips/datatipCreate.sci
scilab/modules/graphics/macros/datatips/datatipRemove.sci
scilab/modules/graphics/macros/datatips/datatipRemoveAll.sci
scilab/modules/graphics/macros/datatips/datatipSetInterp.sci
scilab/modules/graphics/macros/datatips/datatipSetOrientation.sci
scilab/modules/gui/etc/graphics_menubar.xml
scilab/modules/gui/etc/graphics_toolbar.xml
scilab/modules/gui/locales/pt_BR.po
scilab/modules/gui/sci_gateway/c/gw_gui.c
scilab/modules/gui/sci_gateway/gui_gateway.xml
scilab/modules/gui/src/java/org/scilab/modules/gui/events/GlobalMouseEventWatcher.java
scilab/modules/gui/src/java/org/scilab/modules/gui/filechooser/Juigetfile.java
scilab/modules/gui/src/java/org/scilab/modules/gui/utils/ImageExportRenderer.java
scilab/modules/io/macros/%_save.sci
scilab/modules/io/macros/%_sodload.sci
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/DrawerVisitor.java
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/axes/ruler/UserDefineGraduation.java
scilab/modules/signal_processing/locales/pt_BR.po
scilab/modules/time/locales/pt_BR.po

Change-Id: I236ccb6cd335e88f7219b72f09097904ef2d4f6c

30 files changed:
1  2 
scilab/modules/graphic_objects/Makefile.am
scilab/modules/graphic_objects/Makefile.in
scilab/modules/graphic_objects/src/c/graphic_objects.vcxproj
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/legend/Legend.java
scilab/modules/graphics/Makefile.am
scilab/modules/graphics/Makefile.in
scilab/modules/graphics/graphics.vcxproj
scilab/modules/graphics/graphics.vcxproj.filters
scilab/modules/graphics/macros/%h_p.sci
scilab/modules/graphics/macros/datatips/datatipSetOrientation.sci
scilab/modules/gui/Makefile.am
scilab/modules/gui/Makefile.in
scilab/modules/gui/etc/graphics_menubar.xml
scilab/modules/gui/etc/graphics_toolbar.xml
scilab/modules/gui/src/c/gui.vcxproj
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/tab/SwingScilabTab.java
scilab/modules/gui/src/java/org/scilab/modules/gui/events/ScilabEventListener.java
scilab/modules/io/macros/%_save.sci
scilab/modules/io/macros/%_sodload.sci
scilab/modules/renderer/src/java/org/scilab/modules/renderer/CallRenderer.java
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/DrawerVisitor.java
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/axes/AxesDrawer.java
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/interaction/InteractionManager.java
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/legend/LegendDrawer.java
scilab/modules/renderer/src/java/org/scilab/modules/renderer/JoGLView/text/TextManager.java
scilab/modules/scicos/src/modelica_compiler/compilation.mli
scilab/modules/scicos/src/modelica_compiler/graphNodeSet.mli
scilab/modules/scicos/src/modelica_compiler/scicosCodeGeneration.mli
scilab/modules/scicos/src/modelica_compiler/xMLCodeGeneration.mli
scilab/modules/ui_data/locales/pt_BR.po

@@@ -98,9 -93,8 +97,8 @@@ libscigraphic_objects_la_CPPFLAGS = $(J
  
  # Without the graphic_objects module
  libscigraphic_objects_disable_la_CPPFLAGS = -I$(srcdir)/includes/ \
-                       -I$(top_srcdir)/libs/MALLOC/includes/ \
                        -I$(top_srcdir)/modules/localization/includes/ \
 -                      -I$(top_srcdir)/modules/output_stream/includes/ \
 +                      -I$(top_srcdir)/modules/output_stream/includes/ 
                        $(AM_CPPFLAGS)
  
  GRAPHIC_OBJECTS_DISABLE_C_SOURCES = src/nographic_objects/nographic_objects.c
@@@ -148,12 -148,9 +148,11 @@@ am_libscigraphic_objects_disable_la_OBJ
  libscigraphic_objects_disable_la_OBJECTS =  \
        $(am_libscigraphic_objects_disable_la_OBJECTS)
  libscigraphic_objects_la_DEPENDENCIES =  \
-       $(top_builddir)/libs/MALLOC/libscimalloc.la \
        $(top_builddir)/modules/output_stream/libscioutput_stream.la
  am__objects_2 = libscigraphic_objects_la-DataLoader_wrap.lo \
 -      libscigraphic_objects_la-ScilabNativeView_wrap.lo
 +      libscigraphic_objects_la-ScilabNativeView_wrap.lo \
 +      libscigraphic_objects_la-PolylineData_wrap.lo \
 +      libscigraphic_objects_la-SurfaceData_wrap.lo
  am__objects_3 = libscigraphic_objects_la-CallGraphicController.lo \
        libscigraphic_objects_la-GraphicObjectBuilder.lo
  am__objects_4 = libscigraphic_objects_la-createGraphicObject.lo \
@@@ -649,9 -641,9 +648,8 @@@ libscigraphic_objects_la_CPPFLAGS = $(J
  
  # Without the graphic_objects module
  libscigraphic_objects_disable_la_CPPFLAGS = -I$(srcdir)/includes/ \
-                       -I$(top_srcdir)/libs/MALLOC/includes/ \
                        -I$(top_srcdir)/modules/localization/includes/ \
 -                      -I$(top_srcdir)/modules/output_stream/includes/ \
 -                      $(AM_CPPFLAGS)
 +                      -I$(top_srcdir)/modules/output_stream/includes/ 
  
  GRAPHIC_OBJECTS_DISABLE_C_SOURCES = src/nographic_objects/nographic_objects.c
  libscigraphic_objects_disable_la_SOURCES = $(GRAPHIC_OBJECTS_DISABLE_C_SOURCES)
@@@ -665,13 -657,9 +663,11 @@@ INCLUDE_FLAGS = $(libscigraphic_objects
  
  #### SWIG Declaration ####
  SWIG_WRAPPERS = src/jni/DataLoader.i \
 -                              src/jni/ScilabNativeView.i
 +                              src/jni/ScilabNativeView.i \
 +                              src/jni/PolylineData.i \
 +                src/jni/SurfaceData.i
  
- libscigraphic_objects_la_LIBADD = $(top_builddir)/libs/MALLOC/libscimalloc.la \
- $(top_builddir)/modules/output_stream/libscioutput_stream.la
+ libscigraphic_objects_la_LIBADD = $(top_builddir)/modules/output_stream/libscioutput_stream.la
  
  #### graphic_objects : gateway declaration ####
  libscigraphic_objects_la_sci_gatewaydir = $(mydatadir)/sci_gateway
Simple merge
Simple merge
@@@ -8,13 -8,22 +8,23 @@@
  // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  
  function datatipSetOrientation(tip_handle,o)
+     if argn(2)<>2 then
+         error(msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),...
+         "datatipSetOrientation",2))
+     end
+     orientations=["automatic" "upper left" "upper right", "lower left","lower right"]
+     if type(tip_handle)<>9|size(tip_handle,"*")<>1|or(tip_handle.type<>"Compound") then
+         error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),...
+         "datatipSetOrientation",1,"datatip"))
+     end
 -    k=find(orientations==convstr(o))
 -    if k<>[] then
 -        string_handle=tip_handle.children(2)
 -        point_handle=tip_handle.children(1)
 -        string_handle.user_data(1)=k-1
 -        setStringPosition(tip_handle, point_handle.data)
 -        drawnow()
 +    if o == "upper left" then
 +        tip_handle.tip_orientation = 0;
 +    elseif o == "upper right" then
 +        tip_handle.tip_orientation = 1;
 +    elseif o == "lower left" then
 +        tip_handle.tip_orientation = 2;
 +    elseif o == "lower right" then
 +        tip_handle.tip_orientation = 3;
      end
  endfunction
index d5b9bcb,bc0b04e..6373fcb
mode 100755,100644..100755
@@@ -362,11 -343,13 +361,10 @@@ images/icons/16x16/status/folder-open.p
  images/icons/16x16/status/line-found.png \
  images/icons/16x16/status/scilab-folder-open.png \
  images/icons/16x16/status/user-home-open.png \
 -images/icons/256x256/apps/accessories-text-editor.png \
 -images/icons/256x256/apps/puffin.png \
 -images/icons/256x256/apps/rrze_table.png \
 -images/icons/256x256/apps/system-search.png \
 -images/icons/256x256/apps/utilities-system-monitor.png \
  images/icons/32x32/actions/edit-clear.png \
 +images/icons/32x32/actions/tree-diagramm.png \
 +images/icons/32x32/actions/tree-diagramm-delete.png \
  images/icons/32x32/apps/accessories-text-editor.png \
- images/icons/32x32/apps/datatips.png \
  images/icons/32x32/apps/graphic-window.png \
  images/icons/32x32/apps/rrze_table.png \
  images/icons/32x32/apps/scilab.png \
@@@ -868,11 -868,13 +896,10 @@@ images/icons/16x16/status/folder-open.p
  images/icons/16x16/status/line-found.png \
  images/icons/16x16/status/scilab-folder-open.png \
  images/icons/16x16/status/user-home-open.png \
 -images/icons/256x256/apps/accessories-text-editor.png \
 -images/icons/256x256/apps/puffin.png \
 -images/icons/256x256/apps/rrze_table.png \
 -images/icons/256x256/apps/system-search.png \
 -images/icons/256x256/apps/utilities-system-monitor.png \
  images/icons/32x32/actions/edit-clear.png \
 +images/icons/32x32/actions/tree-diagramm.png \
 +images/icons/32x32/actions/tree-diagramm-delete.png \
  images/icons/32x32/apps/accessories-text-editor.png \
- images/icons/32x32/apps/datatips.png \
  images/icons/32x32/apps/graphic-window.png \
  images/icons/32x32/apps/rrze_table.png \
  images/icons/32x32/apps/scilab.png \
          </submenu>
          <separator/>
          <submenu label="&amp;Start datatip manager" icon="datatips">
 -            <callback instruction='datatipManagerMode([SCILAB_FIGURE_ID],"on");' type="0"/>
 +            <callback instruction='datatipManagerMode(get_figure_handle([SCILAB_FIGURE_ID]), %t)' type="-2"/>
          </submenu>
          <submenu label="Stop datatip manager">
 -            <callback instruction='datatipManagerMode([SCILAB_FIGURE_ID],"off");' type="0"/>
 +            <callback instruction='datatipManagerMode(get_figure_handle([SCILAB_FIGURE_ID]), %f)' type="-2"/>
          </submenu>
 +        
 +        <submenu label="Start curve data modify" icon="data_modify">
 +            <callback instruction='useeditor([SCILAB_FIGURE_ID], %t);' type="0"/>
 +        </submenu>
 +        <submenu label="Stop curve data modify">
 +            <callback instruction='useeditor([SCILAB_FIGURE_ID], %f);' type="0"/>
 +        </submenu>
 +        
 +        <submenu label="Plot Browser">
 +            <callback instruction="plotbrowser([SCILAB_FIGURE_ID])" type="-2"/>
 +        </submenu>
 +        
 +        <submenu label="Scilab Graphic Editor - GED">
 +            <submenu label="&amp;Quick Editor">
 +                <callback instruction="openged([SCILAB_FIGURE_ID])" type="-2"/>
 +            </submenu>
 +        </submenu>
-         
++
      </menu>
      
      <!--
      <separator/>
      <!-- Datatips -->
      <button icon="datatips" tooltiptext="toggle datatip mode">
 -        <callback instruction="datatipManagerMode([SCILAB_FIGURE_ID],&quot;toggle&quot;);" type="-2"/>
 +        <callback instruction="datatipManagerMode(get_figure_handle([SCILAB_FIGURE_ID]))" type="-2"/>
      </button>
 +    <!-- Scilab Graphic Editor -->
 +    <button icon="plot" tooltiptext="Open the graphics editor">
 +        <callback instruction="openged([SCILAB_FIGURE_ID])" type="-2"/>
 +    </button>
 +    <button icon="data_modify" tooltiptext="Toggle curve data modify">
 +        <callback instruction="useeditor([SCILAB_FIGURE_ID])" type="-2"/>
 +    </button>
-      
++
      <separator/>
      <!-- Help -->
      <button icon="help-browser" tooltiptext="Help Browser">
@@@ -29,158 -29,157 +29,155 @@@ import org.scilab.modules.gui.utils.Sci
   */
  public class ScilabEventListener implements KeyListener, MouseListener, MouseMotionListener {
  
-       private String callback;
-       private String windowsUID;
-       private int mouseX = 0;
-       private int mouseY = 0;
-       private SciTranslator eventTranslator = new SciTranslator();
-       private boolean freedom = true;
-       private boolean inCanvas = false;
-       public ScilabEventListener(String callback, String windowsUID) {
-               eventTranslator.setClickAction(SciTranslator.UNMANAGED);
-               this.callback = callback;
-               this.windowsUID = windowsUID;
-       }
-       private void callScilab() {
-               // @FIXME : choose to send it to scilab or to display it
-               //
-           int windowsId = (Integer) GraphicController.getController().getProperty(windowsUID, __GO_ID__);
-               InterpreterManagement.requestScilabExec(callback+'('+windowsId+','+mouseX+','+mouseY+','+eventTranslator.getClickAction()+')');
-               //
-               //System.out.println("call " + callback+'('+windowsId+','+mouseX+','+mouseY+','+eventTranslator.getClickAction()+')');
-       }
-       private void invokeScilab() {
-               // @FIXME : choose to send it to scilab or to display it
-               //
-           int windowsId = (Integer) GraphicController.getController().getProperty(windowsUID, __GO_ID__);
-               InterpreterManagement.requestScilabExec(callback+'('+windowsId+','+mouseX+','+mouseY+','+eventTranslator.javaClick2Scilab()+')');
-               //
-               //System.out.println("invoke " + callback+'('+windowsId+','+mouseX+','+mouseY+','+eventTranslator.javaClick2Scilab()+')');
-       }
-       public void keyPressed(KeyEvent keyEvent) {
-               if (inCanvas) {
-                       if (Character.isJavaIdentifierStart(keyEvent.getKeyChar())) {
-                               eventTranslator.setClickAction(SciTranslator.javaKey2Scilab(keyEvent.getKeyChar(), keyEvent.isControlDown()));
-                               callScilab();
-                       }
-                       else {
-                               int keyChar;
-                               if (keyEvent.isShiftDown()) {
-                                       keyChar = keyEvent.getKeyCode();
-                               }
-                               else {
-                                       keyChar = Character.toLowerCase(keyEvent.getKeyCode());
-                                       callScilab();
-                               }
-                               eventTranslator.setClickAction(SciTranslator.javaKey2Scilab(keyChar,
-                                               keyEvent.isControlDown()));
-                               callScilab();
-                       }
-               }
-       }
-       public void keyReleased(KeyEvent arg0) {
-               if(inCanvas && eventTranslator.getClickAction() != SciTranslator.UNMANAGED) {
-                       eventTranslator.setClickAction(-eventTranslator.getClickAction());
-                       callScilab();
-                       eventTranslator.setClickAction(SciTranslator.UNMANAGED);
-               }
-       }
-       public void keyTyped(KeyEvent arg0) {
-               // Do nothing !!!
-       }
-       public void mouseClicked(MouseEvent arg0) {
-               mouseX = arg0.getX();
-               mouseY = arg0.getY();
-               if (arg0.getClickCount() == 1) {
-                       eventTranslator.setClickAction(
-                                       SciTranslator.javaButton2Scilab(
-                                                       arg0.getButton(),
-                                                       SciTranslator.CLICKED,
-                                                       arg0.isControlDown()));
-               }
-               else {
-                       /* Means mouseEvent.getClickCount() >= 2 */
-                       eventTranslator.setClickAction(
-                                       SciTranslator.javaButton2Scilab(
-                                                       arg0.getButton(),
-                                                       SciTranslator.DCLICKED,
-                                                       arg0.isControlDown()));
-                       // To unlock javaClick2Scilab done in launchfilter
-                       synchronized (eventTranslator) {
-                               eventTranslator.notify();
-                       }
-               }
-       }
-       public void mouseEntered(MouseEvent arg0) {
-               inCanvas = true;
-       }
-       public void mouseExited(MouseEvent arg0) {
-               inCanvas = false;
-       }
-       public void mousePressed(MouseEvent arg0) {
-               if (this.freedom) {
-                       this.freedom = false;
-                       mouseX = arg0.getX();
-                       mouseY = arg0.getY();
-                       eventTranslator.setClickAction(
-                                       SciTranslator.javaButton2Scilab(
-                                                       arg0.getButton(),
-                                                       SciTranslator.PRESSED,
-                                                       arg0.isControlDown()));
-                       Thread launchMe = new Thread() {
-                               public void run() {
-                                       invokeScilab();
-                                       freedom = true;
-                               }
-                       };
-                       launchMe.start();
-               }
-       }
-       public void mouseReleased(MouseEvent arg0) {
-               // TODO Auto-generated method stub
-               if (eventTranslator.getClickAction() == SciTranslator.UNMANAGED) {
-                       eventTranslator.setClickAction(
-                                       SciTranslator.javaButton2Scilab(arg0.getButton(),
-                                                       SciTranslator.RELEASED,
-                                                       arg0.isControlDown()));
-                       mouseX = arg0.getX();
-                       mouseY = arg0.getY();
-                       callScilab();
-               }
-       }
-       public void mouseDragged(MouseEvent arg0) {
-               if (eventTranslator.getClickAction() == eventTranslator.javaButton2Scilab(MouseEvent.BUTTON1, SciTranslator.PRESSED, false)) { /* If LEFT BUTTON PRESSED */
-                       this.freedom = false;
-                       mouseX = arg0.getX();
-                       mouseY = arg0.getY();
-                       callScilab();
-                       freedom = true;
-                       eventTranslator.setClickAction(SciTranslator.SCIMOVED);
-               } else {
-                       eventTranslator.setClickAction(SciTranslator.SCIMOVED);
-                       mouseX = arg0.getX();
-                       mouseY = arg0.getY();
-                       callScilab();
-               }
-       }
-       public void mouseMoved(MouseEvent arg0) {
-               eventTranslator.setClickAction(SciTranslator.SCIMOVED);
-               mouseX = arg0.getX();
-               mouseY = arg0.getY();
-               callScilab();
-       }
+     private String callback;
+     private String windowsUID;
+     private int mouseX = 0;
+     private int mouseY = 0;
+     private SciTranslator eventTranslator = new SciTranslator();
+     private boolean freedom = true;
+     private boolean inCanvas = false;
+     public ScilabEventListener(String callback, String windowsUID) {
+         eventTranslator.setClickAction(SciTranslator.UNMANAGED);
+         this.callback = callback;
+         this.windowsUID       = windowsUID;
+     }
+     private void callScilab() {
+         // @FIXME : choose to send it to scilab or to display it
+         //
+         int windowsId = (Integer) GraphicController.getController().getProperty(windowsUID, __GO_ID__);
+         InterpreterManagement.requestScilabExec(callback + '(' + windowsId + ',' + mouseX + ',' + mouseY + ',' + eventTranslator.getClickAction() + ')');
+         //
+         //System.out.println("call " + callback+'('+windowsId+','+mouseX+','+mouseY+','+eventTranslator.getClickAction()+')');
+     }
+     private void invokeScilab() {
+         // @FIXME : choose to send it to scilab or to display it
+         //
+         int windowsId = (Integer) GraphicController.getController().getProperty(windowsUID, __GO_ID__);
+         InterpreterManagement.requestScilabExec(callback + '(' + windowsId + ',' + mouseX + ',' + mouseY + ',' + eventTranslator.javaClick2Scilab() + ')');
+         //
+         //System.out.println("invoke " + callback+'('+windowsId+','+mouseX+','+mouseY+','+eventTranslator.javaClick2Scilab()+')');
+     }
+     public void keyPressed(KeyEvent keyEvent) {
+         if (inCanvas) {
+             if (Character.isJavaIdentifierStart(keyEvent.getKeyChar())) {
+                 eventTranslator.setClickAction(SciTranslator.javaKey2Scilab(keyEvent.getKeyChar(), keyEvent.isControlDown()));
+                 callScilab();
+             } else {
+                 int keyChar;
+                 if (keyEvent.isShiftDown()) {
+                     keyChar = keyEvent.getKeyCode();
+                 } else {
+                     keyChar = Character.toLowerCase(keyEvent.getKeyCode());
+                     callScilab();
+                 }
+                 eventTranslator.setClickAction(SciTranslator.javaKey2Scilab(keyChar,
+                                                keyEvent.isControlDown()));
+                 callScilab();
+             }
+         }
+     }
+     public void keyReleased(KeyEvent arg0) {
+         if (inCanvas && eventTranslator.getClickAction() != SciTranslator.UNMANAGED) {
+             eventTranslator.setClickAction(-eventTranslator.getClickAction());
+             callScilab();
+             eventTranslator.setClickAction(SciTranslator.UNMANAGED);
+         }
+     }
+     public void keyTyped(KeyEvent arg0) {
+         // Do nothing !!!
+     }
+     public void mouseClicked(MouseEvent arg0) {
+         mouseX = arg0.getX();
+         mouseY = arg0.getY();
+         if (arg0.getClickCount() == 1) {
+             eventTranslator.setClickAction(
+                 SciTranslator.javaButton2Scilab(
+                     arg0.getButton(),
+                     SciTranslator.CLICKED,
+                     arg0.isControlDown()));
+         } else {
+             /* Means mouseEvent.getClickCount() >= 2 */
+             eventTranslator.setClickAction(
+                 SciTranslator.javaButton2Scilab(
+                     arg0.getButton(),
+                     SciTranslator.DCLICKED,
+                     arg0.isControlDown()));
+             // To unlock javaClick2Scilab done in launchfilter
+             synchronized (eventTranslator) {
+                 eventTranslator.notify();
+             }
+         }
+     }
+     public void mouseEntered(MouseEvent arg0) {
+         inCanvas = true;
+     }
+     public void mouseExited(MouseEvent arg0) {
+         inCanvas = false;
+     }
+     public void mousePressed(MouseEvent arg0) {
+         if (this.freedom) {
+             this.freedom = false;
+             mouseX = arg0.getX();
+             mouseY = arg0.getY();
+             eventTranslator.setClickAction(
+                 SciTranslator.javaButton2Scilab(
+                     arg0.getButton(),
+                     SciTranslator.PRESSED,
+                     arg0.isControlDown()));
+             Thread launchMe = new Thread() {
+                 public void run() {
+                     invokeScilab();
+                     freedom = true;
+                 }
+             };
+             launchMe.start();
+         }
+     }
+     public void mouseReleased(MouseEvent arg0) {
+         // TODO Auto-generated method stub
+         if (eventTranslator.getClickAction() == SciTranslator.UNMANAGED) {
+             eventTranslator.setClickAction(
+                 SciTranslator.javaButton2Scilab(arg0.getButton(),
+                                                 SciTranslator.RELEASED,
+                                                 arg0.isControlDown()));
+             mouseX = arg0.getX();
+             mouseY = arg0.getY();
+             callScilab();
+         }
+     }
+     public void mouseDragged(MouseEvent arg0) {
+         if (eventTranslator.getClickAction() == eventTranslator.javaButton2Scilab(MouseEvent.BUTTON1, SciTranslator.PRESSED, false)) { /* If LEFT BUTTON PRESSED */
+             this.freedom = false;
+             mouseX = arg0.getX();
+             mouseY = arg0.getY();
+             callScilab();
+             freedom = true;
+             eventTranslator.setClickAction(SciTranslator.SCIMOVED);
+         } else {
+             eventTranslator.setClickAction(SciTranslator.SCIMOVED);
+             mouseX = arg0.getX();
+             mouseY = arg0.getY();
+             callScilab();
+         }
+     }
+     public void mouseMoved(MouseEvent arg0) {
+         eventTranslator.setClickAction(SciTranslator.SCIMOVED);
+         mouseX = arg0.getX();
+         mouseY = arg0.getY();
+         callScilab();
+     }
  
 -
 -
  }
Simple merge
@@@ -247,11 -243,6 +248,10 @@@ public class DrawerVisitor implements V
          return colorMap;
      }
  
 +    public DatatipTextDrawer getDatatipTextDrawer() {
 +        return datatipTextDrawer;
 +    }
 +
      /**
       * Returns the visitor corresponding to the Figure identifier.
       * @param figureId the figure identifier.
      }
  
      @Override
 +    public void visit(Datatip datatip) {
 +        if (datatip.isValid() && datatip.getVisible()) {
 +            axesDrawer.enableClipping(currentAxes, datatip.getClipProperty());
 +            try {
 +                datatipTextDrawer.draw(drawingTools, colorMap, datatip);
 +
 +                if (datatip.getMarkMode()) {
-                     Texture texture = markManager.getMarkSprite(datatip, colorMap);
++                    /* TODO: appearance can be not-null */
++                    Texture texture = markManager.getMarkSprite(datatip, colorMap, null);
 +                    drawingTools.draw(texture, AnchorPosition.CENTER, new Vector3d(datatip.getTipData()));
 +                }
 +            } catch (SciRendererException e) {
 +                invalidate((Text)datatip, e);
 +            }
 +            axesDrawer.disableClipping(datatip.getClipProperty());
 +        }
 +    }
 +
 +    @Override
      public void visit(Arrow arrow) {
          // TODO
          System.out.println("How can I draw an arrow ?");
@@@ -235,10 -235,10 +235,10 @@@ public class TextManager 
       * @param baseSpriteDimension the unscaled text texture's dimension (in pixels).
       * @return the minimum ratios (2 elements: text box to current texture and text box to unscaled texture ratios).
       */
 -    private double[] computeRatios(Transformation projection, Text text, Vector3d[] textBoxVectors, Dimension spriteDimension,
 +    protected double[] computeRatios(Transformation projection, Text text, Vector3d[] textBoxVectors, Dimension spriteDimension,
                                     Dimension baseSpriteDimension) {
          /* 1st element: ratio for the current texture, 2nd element: ratio for the unscaled texture */
-         double[] ratios = new double[]{1.0, 1.0};
+         double[] ratios = new double[] {1.0, 1.0};
  
          /* Ratios are relevant only to the filled text box mode */
          if (text.getTextBoxMode() == 2) {
       * @param parentAxes the Axes for which the coordinates are computed.
       * @return the corners of the text's bounding box in user coordinates (4-element array).
       */
 -    private Vector3d[] computeCorners(Transformation projection, Vector3d[] projCorners, Axes parentAxes) {
 +    protected Vector3d[] computeCorners(Transformation projection, Vector3d[] projCorners, Axes parentAxes) {
          Vector3d[] corners = new Vector3d[4];
-         boolean[] logFlags = new boolean[]{parentAxes.getXAxisLogFlag(), parentAxes.getYAxisLogFlag(), parentAxes.getZAxisLogFlag()};
+         boolean[] logFlags = new boolean[] {parentAxes.getXAxisLogFlag(), parentAxes.getYAxisLogFlag(), parentAxes.getZAxisLogFlag()};
  
          corners[0] = projection.unproject(projCorners[0]);
          corners[1] = projection.unproject(projCorners[1]);
       * @param textObject the given text object.
       * @return a new texture for the given text object.
       */
 -    private Texture createSprite(final ColorMap colorMap, final Text textObject) {
 +    protected Texture createSprite(final ColorMap colorMap, final Text textObject) {
          TextSpriteDrawer spriteDrawer = new TextSpriteDrawer(colorMap, textObject);
          Texture texture = textureManager.createTexture();
+         texture.setMagnificationFilter(Texture.Filter.LINEAR);
+         texture.setMinifyingFilter(Texture.Filter.LINEAR);
          texture.setDrawer(spriteDrawer);
          return texture;
      }
       * @param scaleFactor the scale factor to apply.
       * @return a new texture for the given text object.
       */
 -    private Texture createSprite(final ColorMap colorMap, final Text textObject, double scaleFactor) {
 +    protected Texture createSprite(final ColorMap colorMap, final Text textObject, double scaleFactor) {
          TextSpriteDrawer spriteDrawer = new TextSpriteDrawer(colorMap, textObject, scaleFactor);
          Texture texture = textureManager.createTexture();
+         texture.setMagnificationFilter(Texture.Filter.LINEAR);
+         texture.setMinifyingFilter(Texture.Filter.LINEAR);
          texture.setDrawer(spriteDrawer);
          return texture;
      }
--(*
-- *  Modelicac
-- *
-- *  Copyright (C) 2005 - 2007 Imagine S.A.
-- *  For more information or commercial use please contact us at www.amesim.com
-- *
-- *  This program is free software; you can redistribute it and/or
-- *  modify it under the terms of the GNU General Public License
-- *  as published by the Free Software Foundation; either version 2
-- *  of the License, or (at your option) any later version.
-- *
-- *  This program is distributed in the hope that it will be useful,
-- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- *  GNU General Public License for more details.
-- *
-- *  You should have received a copy of the GNU General Public License
-- *  along with this program; if not, write to the Free Software
-- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-- *
-- *)
--
--(** This module performs the compilation of a subset of the Modelica language.
--*)
--
++val opt_map : ('a -> 'b) -> 'a option -> 'b option
  exception InvalidModification
  exception TypeError
--
--type compiled_unit =
++type compilation_context =
++    ClassContext of compilation_context * compiled_class Lazy.t
++  | ForContext of compilation_context * string
++  | ModificationContext of compilation_context * compiled_class Lazy.t
++  | TopLevelContext of (string * compiled_unit) list
++and compiled_unit =
      CompiledClass of compiled_class Lazy.t
    | CompiledFunction of compiled_class Lazy.t
--(** The type of a compiled Modelica class *)
--
  and compiled_class = {
    ccl_public_cpnts : (string * compiled_component Lazy.t) list Lazy.t;
    ccl_initial_equs : compiled_equation list Lazy.t;
    ccl_equs : compiled_equation list Lazy.t;
  }
  and compiled_modification =
      CompiledModification of field * compiled_modification list *
        compiled_expression option
--
  and field = string * compiled_subscript array
--
  and compiled_reference =
      ParameterReference of level * path
    | VariableReference of level * path
    | LoopVariableReference of level
    | ClassReference of level * string list
--
  and path = field list
--
  and level = int
--
  and compiled_subscript = Indefinite | Definite of compiled_expression
--
  and parameter =
      IntegerParameter of parameter_attributes
    | StringParameter of parameter_attributes
    | RealParameter of parameter_attributes
--
  and parameter_attributes = {
    pat_dimensions : compiled_subscript array;
    pat_comment : string;
    pat_value : compiled_expression option;
--  pat_infos: variable_infos
++  pat_infos : variable_infos;
  }
--
  and variable =
      IntegerVariable of variable_attributes
    | StringVariable of variable_attributes
    | DiscreteVariable of variable_attributes
    | RealVariable of variable_attributes
    | CompoundVariable of compiled_class Lazy.t * variable_attributes
--
--and variable_attributes =
--  {
--    vat_dimensions : compiled_subscript array;
--    vat_nature : nature;
--    vat_inout : inout;
--    vat_comment : string;
--    vat_modifications : compiled_modification list;
--    vat_infos: variable_infos
--  }
--
++and variable_attributes = {
++  vat_dimensions : compiled_subscript array;
++  vat_nature : nature;
++  vat_inout : inout;
++  vat_comment : string;
++  vat_modifications : compiled_modification list;
++  vat_infos : variable_infos;
++}
  and compiled_component = Parameter of parameter | Variable of variable
--
  and nature = Flow | Potential
--
--and inout =
--  | Input
--  | Output
--  | Both
--
--and variable_infos =
--  {
--    var_name: string;
--    title: string;
--    unit: string;
--    quantity: string;
--    min: string;
--    max: string;
--    port_name: string;
--    port_type: string;
--    order: int;
--    io: int;
--    weight: float
--  }
--
++and inout = Input | Output | Both
++and variable_infos = {
++  var_name : string;
++  title : string;
++  unit : string;
++  quantity : string;
++  min : string;
++  max : string;
++  port_name : string;
++  port_type : string;
++  order : int;
++  io : int;
++  weight : float;
++}
  and compiled_equation =
      CompiledEquality of compiled_expression * compiled_expression
    | CompiledFlowConnection of compiled_expression * compiled_expression
        compiled_equation list
    | CompiledFor of compiled_expression * compiled_expression *
        compiled_expression * compiled_equation list
--  | CompiledWhen of (compiled_expression * compiled_when_expression list) list
--
++  | CompiledWhen of
++      (compiled_expression * compiled_when_expression list) list
  and compiled_when_expression =
--  | Reinit of compiled_reference * compiled_expression
++    Reinit of compiled_reference * compiled_expression
    | Assign of compiled_reference * compiled_expression
--
  and compiled_expression =
--  | Abs of compiled_expression
++    Abs of compiled_expression
    | Acos of compiled_expression
    | Acosh of compiled_expression
    | Addition of compiled_expression * compiled_expression
    | Equals of compiled_expression * compiled_expression
    | Exp of compiled_expression
    | ExternalFunctionCall of string list * compiled_class Lazy.t *
--    compiled_argument list
++      compiled_argument list
    | Floor of compiled_expression
    | GreaterEqualThan of compiled_expression * compiled_expression
    | GreaterThan of compiled_expression * compiled_expression
--  | If of (compiled_expression * compiled_expression) list * compiled_expression
++  | If of (compiled_expression * compiled_expression) list *
++      compiled_expression
    | Integer of int32
    | Log of compiled_expression
    | Max of compiled_expression * compiled_expression
    | Tanh of compiled_expression
    | Time
    | Vector of compiled_expression array
--
  and compiled_argument =
--  | ScalarArgument of compiled_expression
++    ScalarArgument of compiled_expression
    | ArrayArgument of int list * compiled_expression array
--
  val paths : string list ref
--(** Global variable used to store the paths where to find compiled Modelica
--classes. *)
--
--(*val read_class_file : string -> compiled_unit*)
--(** [read_class_file name] finds then loads the compiled class named [name].
--A compiled Modelica class named "Class" is usually stored in a file named
--"Class.moc". The search is performed in the file system using
--{!Compilation.path}. *)
--
++val read_class_file : string -> compiled_unit
++val last : 'a list -> 'a
  val write_class_file : string -> compiled_unit -> unit
--(** [write_class_file name cu] stores the compiled Modelica class [cu] in a file
--named [name]. See {!Compilation.read_class_file} for more information about file
--naming conventions. *)
--
--val compile_main_class : Precompilation.precompiled_class list -> string * compiled_unit
--(** [compile_main_class pcl] yields the compiled Modelica class associated to
--[pcl]. *)
++val create_filename : string list -> string -> string
++val get_compiled_class : compilation_context -> string list -> compiled_unit
++val compile_main_class :
++  Precompilation.precompiled_class list -> string * compiled_unit
++val compile_compound_class :
++  compilation_context ->
++  Precompilation.precompiled_class -> compiled_class Lazy.t
++val compile_components :
++  compilation_context ->
++  int ->
++  (ParseTree.ident * Precompilation.precompiled_component) list ->
++  (ParseTree.ident * compiled_component Lazy.t) list
++val compile_equation_clauses :
++  compilation_context ->
++  ParseTree.equation_clause list ->
++  compiled_equation list * compiled_equation list
++val compile_equation_or_annotation :
++  compilation_context ->
++  ParseTree.equation_or_annotation -> compiled_equation list
++val compile_equation :
++  compilation_context -> ParseTree.equation -> compiled_equation list
++val find_connector :
++  compilation_context -> ParseTree.component_reference -> variable
++val compile_connection :
++  compilation_context ->
++  ParseTree.component_reference ->
++  ParseTree.component_reference ->
++  compiled_class Lazy.t ->
++  variable_attributes ->
++  compiled_class Lazy.t -> variable_attributes -> compiled_equation list
++val compile_if_clause :
++  compilation_context ->
++  ParseTree.expression * ParseTree.equation list ->
++  compiled_expression * compiled_equation list
++val compile_when_clause :
++  compilation_context ->
++  ParseTree.expression * ParseTree.equation list ->
++  compiled_expression * compiled_when_expression list
++val compile_when_equation :
++  compilation_context -> ParseTree.equation -> compiled_when_expression
++val compile_for_clause :
++  compilation_context ->
++  ParseTree.for_indices -> ParseTree.equation list -> compiled_equation list
++val compile_expression :
++  compilation_context -> ParseTree.expression -> compiled_expression
++val to_argument : compiled_expression -> compiled_argument
++val compile_component_reference :
++  compilation_context -> ParseTree.component_reference -> compiled_reference
++val compile_component_path :
++  compilation_context ->
++  compilation_context ->
++  level -> ParseTree.component_reference -> compiled_reference
++val compile_subscripts :
++  compilation_context ->
++  ParseTree.array_subscripts -> compiled_subscript array
++val compile_modifications :
++  compilation_context ->
++  Precompilation.modification list -> compiled_modification list
++val compile_modification :
++  compilation_context -> Precompilation.modification -> compiled_modification
++val find_local_component_in :
++  compiled_class Lazy.t -> ParseTree.ident -> compiled_component
++val find_local_component_class_in :
++  compiled_class Lazy.t -> ParseTree.ident -> compiled_class Lazy.t
++val is_base_type_parameter_of :
++  compiled_class Lazy.t -> ParseTree.ident -> bool
++val is_base_type_variable_of :
++  compiled_class Lazy.t -> ParseTree.ident -> bool
++val compile_component_modification :
++  compilation_context -> Precompilation.modification -> compiled_modification
++val compile_base_type_variable_modifications :
++  compilation_context ->
++  Precompilation.modification list -> compiled_modification list
++val compile_component :
++  compilation_context ->
++  int ->
++  ParseTree.ident ->
++  Precompilation.precompiled_component -> compiled_component
++val compile_parameter :
++  compilation_context ->
++  int -> ParseTree.ident -> Precompilation.precompiled_component -> parameter
++val compile_variable :
++  compilation_context ->
++  int -> ParseTree.ident -> Precompilation.precompiled_component -> variable
++val start_modifications :
++  compiled_modification list -> compiled_modification list
++val compile_nature : ParseTree.flow option -> nature
++val compile_inout : ParseTree.inout option -> inout
++val compile_comment : ParseTree.comment -> string
++val compile_infos :
++  int ->
++  ParseTree.ident ->
++  ParseTree.comment -> compiled_modification list -> variable_infos
++val compile_annotation :
++  ParseTree.annotation -> float * ParseTree.ident * ParseTree.ident
@@@ -1,76 -1,76 +1,23 @@@
--(*
-- *  Modelicac
-- *
-- *  Copyright (C) 2005 - 2007 Imagine S.A.
-- *  For more information or commercial use please contact us at www.amesim.com
-- *
-- *  This program is free software; you can redistribute it and/or
-- *  modify it under the terms of the GNU General Public License
-- *  as published by the Free Software Foundation; either version 2
-- *  of the License, or (at your option) any later version.
-- *
-- *  This program is distributed in the hope that it will be useful,
-- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- *  GNU General Public License for more details.
-- *
-- *  You should have received a copy of the GNU General Public License
-- *  along with this program; if not, write to the Free Software
-- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-- *
-- *)
--
--(** This module provides a structure that allow object sharing in order to
--create DAGs. Weak pointers are used to avoid keeping into the collection
--some objects that are no longer used elsewhere. *)
--
--(** Functorial interface *)
--
--module type HashableType =
--  sig
--    type t
--    val hash: t -> int
--  end
--    (** A hashable type is a type provided with one function whose purpose is to
--       get an integer value that represents the hash code of objects, i.e. an
--       integer associated. *)
--
++val hash_param : int -> int -> 'a -> int
++val hash : 'a -> int
++module type HashableType = sig type t val hash : t -> int end
  module type S =
    sig
      type elt
--    (** The type of the elements in the weak collection. *)
      type 'a t
--    (** The type of the weak collection. *)
--    val create:
++    val create :
        int -> ('a -> elt -> bool) -> ('a -> int) -> ('a -> int -> elt) -> 'a t
--    (** The parameters of create are:
--           - the initial size of the collection;
--           - an equality function that does does create a new object but rather
--             uses some atoms;
--           - a hash function that computes the value from the atoms (without
--             creating a new object);
--           - a constructor that creates a new object, given the necessary atoms
--             plus a hash value. *)
--    val find_or_add: 'a -> 'a t -> elt
--    (** find_or_add either returns an existing object whose atoms are the same
--         as the ones given as the first argument, either builds a new object and
--         insert it into the collection before returning it. *)
--    val iter: (elt -> unit) -> 'a t -> unit
--    (** iter applies its first argument to every argument of the collection. *)
++    val find_or_add : 'a -> 'a t -> elt
++    val iter : (elt -> unit) -> 'a t -> unit
    end
--
--module Make:
--  functor (H: HashableType) ->
++module Make :
++  functor (H : HashableType) ->
      sig
        type elt = H.t
--      and 'a t
--      val create:
--        int -> ('a -> elt -> bool) -> ('a -> int) -> ('a -> int -> elt) -> 'a t
--      val find_or_add: 'a -> 'a t -> elt
--      val iter: (elt -> unit) -> 'a t -> unit
++      type 'a t
++      val create :
++        int ->
++        ('a -> elt -> bool) -> ('a -> int) -> ('a -> int -> elt) -> 'a t
++      val find_or_add : 'a -> 'a t -> elt
++      val iter : (elt -> unit) -> 'a t -> unit
      end
--
--val hash_param: int -> int -> 'a -> int
--(** See {!Hashtbl.hash_param}. *)
--val hash: 'a -> int
--(** See {!Hashtbl.hash}. *)
--(*
-- *  Modelicac
-- *
-- *  Copyright (C) 2005 - 2007 Imagine S.A.
-- *  For more information or commercial use please contact us at www.amesim.com
-- *
-- *  This program is free software; you can redistribute it and/or
-- *  modify it under the terms of the GNU General Public License
-- *  as published by the Free Software Foundation; either version 2
-- *  of the License, or (at your option) any later version.
-- *
-- *  This program is distributed in the hope that it will be useful,
-- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- *  GNU General Public License for more details.
-- *
-- *  You should have received a copy of the GNU General Public License
-- *  along with this program; if not, write to the Free Software
-- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-- *
-- *)
--
--(** This module provides functions that generate code for the Scicos target. *)
--
--val generate_code : string -> string -> string -> Optimization.model -> bool
--  -> bool -> string option * string option -> unit
--(** [generate_code path filename fun_name model jac only_outputs
--     init_filenames]
--generates the
--code that permits the numeric simulation of [model]. [path] is the path to the
--external functions referenced in [model]. [filename] is the name of the file
--where the code is generated. [fun_name] is the name of the entry point in the
--generated code. [jac] is a flag which true value indicates that a symbolic
--jacobian is requested. [only_outputs] indicates that only output variables
--have to be observed (this is the only possibility under Scicos so setting it
--to [false] has no effect on code generation). [init_filenames] gives the
--name of the initialization file so that initialization code is generated. *)
++module ExpressionElement :
++  sig
++    type t = SymbolicExpression.t
++    val equal : 'a -> 'a -> bool
++    val hash : SymbolicExpression.t -> int
++  end
++module ExpressionTable :
++  sig
++    type key = ExpressionElement.t
++    type 'a t = 'a Hashtbl.Make(ExpressionElement).t
++    val create : int -> 'a t
++    val clear : 'a t -> unit
++    val copy : 'a t -> 'a t
++    val add : 'a t -> key -> 'a -> unit
++    val remove : 'a t -> key -> unit
++    val find : 'a t -> key -> 'a
++    val find_all : 'a t -> key -> 'a list
++    val replace : 'a t -> key -> 'a -> unit
++    val mem : 'a t -> key -> bool
++    val iter : (key -> 'a -> unit) -> 'a t -> unit
++    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
++    val length : 'a t -> int
++  end
++val eq_array : 'a array -> 'a array -> bool
++module ArrayElement :
++  sig
++    type t = int list * SymbolicExpression.t array
++    val equal : 'a * 'b array -> 'a * 'b array -> bool
++    val hash : 'a * SymbolicExpression.t array -> int
++  end
++module ArrayStore :
++  sig
++    type key = ArrayElement.t
++    type 'a t = 'a Hashtbl.Make(ArrayElement).t
++    val create : int -> 'a t
++    val clear : 'a t -> unit
++    val copy : 'a t -> 'a t
++    val add : 'a t -> key -> 'a -> unit
++    val remove : 'a t -> key -> unit
++    val find : 'a t -> key -> 'a
++    val find_all : 'a t -> key -> 'a list
++    val replace : 'a t -> key -> 'a -> unit
++    val mem : 'a t -> key -> bool
++    val iter : (key -> 'a -> unit) -> 'a t -> unit
++    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
++    val length : 'a t -> int
++  end
++type model_info = {
++  model : Optimization.model;
++  final_index_of_integer_parameters : int array;
++  final_index_of_string_parameters : int array;
++  final_index_of_real_parameters : int array;
++  final_index_of_variables : int array;
++  surfaces : SymbolicExpression.t list;
++  occurrence_table : occurrence_record ExpressionTable.t;
++  mutable current_index : int;
++  mutable max_index : int;
++  code_buffer : Buffer.t;
++  real_array_store_size : int;
++  real_arrays : int ArrayStore.t;
++}
++and occurrence_record = {
++  mutable occurrences : int;
++  mutable label : int option;
++}
++val postprocess_residue : Optimization.model -> unit
++val next_index : model_info -> int
++val create_index_array : 'a array -> ('a -> bool) -> int array
++val final_index_of_integer_parameters : Optimization.model -> int array
++val final_index_of_string_parameters : Optimization.model -> int array
++val final_index_of_real_parameters : Optimization.model -> int array
++val final_index_of_variables : Optimization.model -> int array
++val collect_surfaces : Optimization.model -> SymbolicExpression.t list
++val is_atomic : SymbolicExpression.t -> bool
++val add_to_occurrence_table :
++  bool -> ExpressionTable.key -> model_info -> unit
++val has_multiple_occurrences : ExpressionTable.key -> model_info -> bool
++val has_alias_binding : ExpressionTable.key -> model_info -> bool
++val real_array_store_size : Optimization.model -> int
++val bufferize_float : float -> model_info -> unit
++val bufferize_rhs :
++  model_info -> int -> bool -> string -> ExpressionTable.key -> unit
++val bufferize_equations : model_info -> unit
++val bufferize_jacobian : int -> model_info -> unit
++val bufferize_outputs : model_info -> unit
++val bufferize_surface_expression : model_info -> SymbolicExpression.t -> unit
++val bufferize_surface_equation :
++  model_info -> int -> SymbolicExpression.t -> unit
++val bufferize_when_equations : model_info -> unit
++val bufferize_surfaces : model_info -> unit
++val bufferize_initializations :
++  string option * 'a -> int -> int -> int -> int -> model_info -> unit
++val bufferize_variable_store :
++  'a * string option -> 'b -> int -> int -> model_info -> unit
++val bufferize_work_deallocation : 'a option * 'b -> int -> model_info -> unit
++val bufferize_parameter_value : 'a option * 'b -> int -> model_info -> unit
++val bufferize_variable_nature : int -> model_info -> unit
++val last : 'a list -> 'a
++val string_of_c_type : Instantiation.expression_type -> string
++val generate_c_function_prototype :
++  out_channel ->
++  string ->
++  Instantiation.expression_type list ->
++  Instantiation.expression_type list -> unit
++val generate_code :
++  'a ->
++  string ->
++  string ->
++  Optimization.model -> bool -> 'b -> string option * string option -> unit
@@@ -1,28 -1,28 +1,23 @@@
--(*
-- *  Modelicac
-- *
-- *  Copyright (C) 2005 - 2007 Imagine S.A.
-- *  For more information or commercial use please contact us at www.amesim.com
-- *
-- *  This program is free software; you can redistribute it and/or
-- *  modify it under the terms of the GNU General Public License
-- *  as published by the Free Software Foundation; either version 2
-- *  of the License, or (at your option) any later version.
-- *
-- *  This program is distributed in the hope that it will be useful,
-- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- *  GNU General Public License for more details.
-- *
-- *  You should have received a copy of the GNU General Public License
-- *  along with this program; if not, write to the Free Software
-- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-- *
-- *)
--
--(** This module includes some utility functions for XML (experimental)
--   export of modelica models *)
--
++type 'a tree = Leaf of (string * 'a) | Node of string * 'a tree list
++val hide_spc : string -> string
++val insert : string list -> 'a -> 'a tree list -> 'a tree list
++val cut_on_dot : string -> string * string option
++val split : string -> string list
++type element = {
++  kind : element_kind;
++  id : string;
++  comment : string;
++  initial_value : SymbolicExpression.t option;
++  output : bool;
++}
++and element_kind = Input | Parameter | Variable | DiscreteVariable
++val build_tree : Optimization.model -> element tree list
++val print_expression :
++  out_channel -> Optimization.model -> SymbolicExpression.t -> unit
++val print_expression_option :
++  out_channel -> Optimization.model -> SymbolicExpression.t option -> unit
++val print_tree :
++  out_channel -> Optimization.model -> element tree list -> unit
++val print_equations : out_channel -> Optimization.model -> unit
++val print_when_clauses : out_channel -> Optimization.model -> unit
  val generate_XML : string -> string -> Optimization.model -> unit
--(** [generate_XML filename class_name model] generates an XML version
--of the Modelica model [model] with name [class_name] into [filename] *)