Bug #10041 fixed - WFILE_f block was not declared as deprecated
[scilab.git] / scilab / modules / scicos_blocks / macros / Sinks / WFILE_f.sci
1 //  Xcos
2 //
3 //  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
4 //  Copyright 2011 - Bernard DUJARDIN <bernard.dujardin@contrib.scilab.org>
5 //
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 //
20 // See the file ../license.txt
21 //
22
23 function [x,y,typ]=WFILE_f(job,arg1,arg2)
24 x=[];y=[];typ=[]
25 select job
26 case 'plot' then
27   standard_draw(arg1)
28 case 'getinputs' then
29   [x,y,typ]=standard_inputs(arg1)
30 case 'getoutputs' then
31   x=[];y=[];typ=[];
32 case 'getorigin' then
33   [x,y]=standard_origin(arg1)
34 case 'set' then
35   warnobsolete('WRITEC_f', '6.0.0');
36   warnMessage = msprintf(_("Feature %s is obsolete."), 'WFILE_f');
37   warnAdvise = msprintf(_("Please use %s instead."), 'WRITEC_f');
38   warnXcosMessage = msprintf("%s %s", warnMessage, warnAdvise);
39   warnBlockByUID(arg1.model.label, warnXcosMessage);
40   x=arg1;
41   graphics=arg1.graphics;exprs=graphics.exprs
42   model=arg1.model;
43   dstate=model.dstate
44   lunit=dstate(2)
45   fname=exprs(2)
46   frmt=exprs(3)
47   while %t do
48       [ok,in,fname1,frmt1,N,exprs] = scicos_getvalue([msprintf(gettext("Set %s block parameters"), "WFILE_f");" "; gettext("Write to output file"); " "; ..
49         gettext("Write is done on:"); gettext("&nbsp; - A binary file if no format given"); ..
50         gettext("&nbsp; - A formatted text file if a  format (Fortran type) is given")], [gettext("Input Size"); gettext("Output File Name"); ..
51         gettext("Output Format"); gettext("Buffer Size")], list('vec',1,'str',1,'str',1,'vec',1),exprs)
52
53     if ~ok then break,end //user cancel modification
54     in=int(in)
55
56     nin=in
57
58     fname1 = pathconvert(stripblanks(fname1), %f, %t) // File name expansion
59     frmt1=stripblanks(frmt1)
60
61     if lunit > 0 & min(length(frmt),1) <> min(length(frmt1),1) then
62       block_parameter_error(gettext("Simulation running !!! You cannot switch<br />between formatted and unformatted when running"), gettext("End current simulation first."));
63       ok=%f
64     elseif lunit > 0 & fname1 <> fname then
65       block_parameter_error(gettext("You cannot modify ''Output File Name'' when running."), gettext("End current simulation first."));
66       ok=%f
67     elseif fname1 == "" then
68       block_parameter_error(gettext("Wrong value for ''Output File Name'' parameter"), gettext("You must provide a filename."));
69       ok=%f
70     //Check if directory exist
71     elseif fileparts(fname1) ~= "" then
72       [pa, fn, ex] = fileparts(fname1)
73       if ~isdir(pa) then
74         block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter."), gettext("Output File Name")), ..
75           msprintf(gettext("Directory ''%s'' does not exist"), pa ));
76         ok=%f
77       end
78     // Simple check for including of the format's string  in parenthesis
79     elseif frmt1 ~= "" &  (part(frmt1, 1) ~= "(" | part(frmt1, length(frmt1)) ~= ")")
80       block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %s."), gettext("Input Format"), frmt1), ..
81         gettext("You must enclose the format''s string between parentheses."));
82       ok=%f
83     elseif N < 2 then
84       block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Buffer Size"), N), ..
85         gettext("Must be greater than 1."));
86       ok=%f
87     elseif in <= 0 then
88       block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Input Size"), in), ..
89         gettext("Strictly positive integer expected."));
90       ok=%f
91     end
92
93     if ok then
94       ipar=[length(fname1);length(frmt1);0;N;_str2code(fname1);_str2code(frmt1)]
95       if prod(size(dstate))<>(nin+1)*N+2 then
96         dstate=[-1;lunit;zeros((nin+1)*N,1)]
97       end
98       model.in=nin
99       model.dstate=dstate;model.ipar=ipar
100       model.dep_ut=[%t %f] //compatibility
101       graphics.exprs=exprs;
102       x.graphics=graphics;x.model=model
103       break
104     end
105   end
106 case 'define' then
107   in=1;nin=sum(in)
108   frmt='(7(e10.3,1x))'
109   fname='foo'
110   lunit=0
111   N=2;
112
113   model=scicos_model()
114   model.sim='writef'
115   model.in=in
116   model.evtin=1
117   model.dstate=[-1;lunit;zeros((nin+1)*N,1)]
118   model.ipar=[length(fname);length(frmt);0;N;_str2code(fname);_str2code(frmt)]
119   model.blocktype='d'
120   model.dep_ut=[%t %f]
121   
122   exprs=[sci2exp(in);
123         fname;
124         frmt;
125         string(N)]
126   gr_i=['txt=[''write to'';''output file''];';
127     'xstringb(orig(1),orig(2),txt,sz(1),sz(2),''fill'')']
128   x=standard_define([3 2],model,exprs,gr_i)
129 end
130 endfunction