bug 12934 fix 44/12644/3
serge.steer [Tue, 24 Sep 2013 07:13:44 +0000 (09:13 +0200)]
Change-Id: I86b20293dbaca7c32d28f5671ff431b9c128a21f

scilab/CHANGES_5.5.X
scilab/modules/scicos_blocks/macros/Sources/IN_f.sci
scilab/modules/xcos/help/en_US/palettes/Portaction_pal/IN_f.xml
scilab/modules/xcos/help/fr_FR/palettes/Portaction_pal/IN_f.xml
scilab/modules/xcos/help/gui/portaction_pal/en_US/IN_f_gui.png
scilab/modules/xcos/help/gui/portaction_pal/fr_FR/IN_f_gui.png

index 2cfde95..48147c4 100644 (file)
@@ -224,6 +224,8 @@ Xcos
 
 * Bug #12924 fixed - Blocks type 2004 was not handled as a valid block type.
 
+* Bug #12934 fixed - Separate compilation of a super block might fail due to under determined signal sizes.
+
 
 Toolbox Skeleton
 =================
index 4125a4c..8eb7dcb 100644 (file)
 function [x,y,typ]=IN_f(job,arg1,arg2)
     x=[];y=[];typ=[]
     select job
-    case "plot" then
-
-        orig=arg1.graphics.orig;
-        sz=arg1.graphics.sz;
-        orient=arg1.graphics.flip;
-
-        prt=arg1.model.ipar
-        pat=xget("pattern");xset("pattern",default_color(1))
-        thick=xget("thickness");xset("thickness",2)
-        if orient then
-            x=orig(1)+sz(1)*[-1/6;-1/6;1/1.5;1;1/1.5]
-            y=orig(2)+sz(2)*[0;1;1; 1/2;0]
-            xo=orig(1);yo=orig(2)
-        else
-            x=orig(1)+sz(1)*[0;1/3;7/6;7/6;1/3]
-            y=orig(2)+sz(2)*[1/2;1;1;0;0]
-            xo=orig(1)+sz(1)/3;yo=orig(2)
-        end
-        gr_i=arg1.graphics.gr_i;
-        if type(gr_i)==15 then
-            coli=gr_i(2);pcoli=xget("pattern")
-            xfpolys(x,y,coli);
-            xset("pattern",coli)
-            xstringb(xo,yo,string(prt),sz(1)/1.5,sz(2))
-            xset("pattern",pcoli)
-            xstringb(xo,yo,string(prt),sz(1)/1.5,sz(2))
-        else
-            xstringb(xo,yo,string(prt),sz(1)/1.5,sz(2))
-            xpoly(x,y,"lines",1)
-        end
-        xset("thickness",thick)
-        xset("pattern",pat)
-
-        ident = arg1.graphics.id
-
-        if ident <> [] then
-            font=xget("font")
-            xset("font", options.ID(1)(1), options.ID(1)(2))
-            rectangle = xstringl(orig(1)+3/2*sz(1), orig(2), ident)
-            w = rectangle(3)
-            h = rectangle(4)
-            xstringb(orig(1) - sz(1) /2 - w, orig(2) + sz(2) * 0.5 , ident , w, h)
-            xset("font", font(1), font(2))
-        end
-        x=[];y=[]
-    case "getinputs" then
-        x=[];y=[];typ=[]
-    case "getoutputs" then
-        orig=arg1.graphics.orig;
-        sz=arg1.graphics.sz;
-        orient=arg1.graphics.flip;
-
-        if orient then
-            x=orig(1)+sz(1)
-            y=orig(2)+sz(2)/2
-        else
-            x=orig(1)
-            y=orig(2)+sz(2)/2
-        end
-        typ=ones(x)
-    case "getorigin" then
-        [x,y]=standard_origin(arg1)
     case "set" then
         x=arg1;
         graphics=arg1.graphics;
         model=arg1.model;
         exprs=graphics.exprs;
         if size(exprs,"*")==2 then exprs=exprs(1),end //compatibility
+        if size(exprs,"*")==1 then exprs=[exprs(1);"[-1 -2]";"-1"],end //compatibility
         while %t do
-            [ok,prt,exprs]=scicos_getvalue([msprintf(gettext("Set %s block parameters"), "IN_f");" "; ..
-            gettext("Regular input port")], "Port Number", ..
-            list("vec",1),exprs);
+            [ok,prt,otsz,ot,exprs]=getvalue(_("Set Input block parameters"),...
+            [_("Port number");
+            _("Outport size ([-1 -2] for inherit)");
+            _("Outport Type (-1 for inherit)")],...
+            list("vec",1,"vec",-1,"vec",1),exprs)
             if ~ok then break,end
-
             prt=int(prt)
-            if prt <=0 then
-                block_parameter_error(msprintf(gettext("Wrong value for ''Port Number'' parameter: %d."),prt), ..
-                gettext("Strictly positive integer expected."));
+            if prt<=0 then
+                message(_("Port number must be a positive integer"))
+            elseif ~isequal(size(otsz,"*"),2) then
+                message(_("Outport Size must be a 2 elements vector"))
+            elseif ((ot<1|ot>9)&(ot<>-1)) then
+                message(_("Outport type must be a number between 1 and 9, or -1 for inheritance."))
             else
                 if model.ipar<>prt then needcompile=4;y=needcompile,end
                 model.ipar=prt
-                model.firing=[];model.out=-1//compatibility
+                model.firing=[];
+                model.out=otsz(1)
+                model.out2=otsz(2)
+                model.outtyp=ot;
                 graphics.exprs=exprs
                 x.graphics=graphics
                 x.model=model
@@ -112,7 +58,6 @@ function [x,y,typ]=IN_f(job,arg1,arg2)
             end
         end
     case "define" then
-        in=-1
         prt=1
         model=scicos_model()
         model.sim="input"
index 7e6358d..a44571f 100644 (file)
                 <para> An integer defining the port number.</para>
                 <para> Properties : Type 'vec' of size 1.</para>
             </listitem>
+            <listitem>
+                <para>
+                    <emphasis role="bold">Output port size</emphasis>
+                </para>
+                <para> An vector of two integers defining the expected
+                signal dimensions ([#rows #columns]).  By default this
+                field is set to [-1 -2] which means that the
+                dimensions are inherited from the upper level. It
+                should be useful to assign fixed values for separate
+                compilation of the super block (Code Generation
+                ). </para>
+                <para> Properties : Type 'vec' of size -1.</para>
+            </listitem>
+            <listitem>
+                <para>
+                    <emphasis role="bold">Output port type</emphasis>
+                </para>
+                <para> An  integer defining the expected signal type.
+                By default this
+                field is set to 1 which means that the type
+                is inherited from the upper level. It
+                should be useful to assign a fix value for separate
+                compilation of the super block (Code Generation
+                ).</para>
+                <para> Properties : Type 'vec' of size 1.</para>
+            </listitem>
+
         </itemizedlist>
     </refsection>
     <refsection id="Defaultproperties_IN_f">
index 58c4bcd..947bd7d 100644 (file)
                 <para> Un entier définissant le numéro de port.</para>
                 <para> Propriétés : Type 'vec' de taille 1.</para>
             </listitem>
+            <listitem>
+                <para>
+                    <emphasis role="bold">Output port size</emphasis>
+                </para>
+                <para> Un vecteur de deux entiers qui définit les
+                dimensions attendues du signal ([#lignes #colones]).
+                Par défaut la valeur de ce champ est [-1 -2] ce qui
+                signifie que les dimensions du signal sont héritées du
+                niveau supérieur. Il peut être nécéssaire d'imposer
+                les valeurs effectives des dimensions pour la
+                compilation séparée du super bloc (Génération de code,
+                ...). </para>
+                <para> Properties : Type 'vec' of size -1.</para>
+            </listitem>
+            <listitem>
+                <para>
+                    <emphasis role="bold">Output port type</emphasis>
+                </para>
+                <para> Un entier qui spécifie le type de signal attendu sur ce port.
+                 Par défaut la valeur de ce champ est -1 ce qui
+                signifie que le type du signal est hérité du
+                niveau supérieur. Il peut être nécéssaire d'imposer
+                une valeur effective du type pour la
+                compilation séparée du super bloc (Génération de code,
+                ...). 
+                ).</para>
+                <para> Properties : Type 'vec' of size 1.</para>
+            </listitem>
         </itemizedlist>
     </refsection>
     <refsection id="Defaultproperties_IN_f">
index 9b6fd8b..74dd826 100644 (file)
Binary files a/scilab/modules/xcos/help/gui/portaction_pal/en_US/IN_f_gui.png and b/scilab/modules/xcos/help/gui/portaction_pal/en_US/IN_f_gui.png differ
index 6b17f6f..649c985 100644 (file)
Binary files a/scilab/modules/xcos/help/gui/portaction_pal/fr_FR/IN_f_gui.png and b/scilab/modules/xcos/help/gui/portaction_pal/fr_FR/IN_f_gui.png differ