Xcos MVC: implement xx / yy / id / thick / ct
[scilab.git] / scilab / modules / scicos / src / cpp / LoggerView.cpp
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014-2014 - Scilab Enterprises - Clement DAVID
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10  *
11  */
12
13 #include <iostream>
14 #include <sstream>
15 #include "scilabWrite.hxx"
16
17 #include "LoggerView.hxx"
18 #include "Controller.hxx"
19
20 namespace org_scilab_modules_scicos
21 {
22
23 LoggerView::LoggerView()
24 {
25 }
26
27 LoggerView::~LoggerView()
28 {
29 }
30
31 // generated with :
32 // awk ' $2 == "//!<" {sub(",","", $1); print "case " $1 ":\n    os << \"" $1 "\";\n    break;" }' ~/work/branches/YaSp/scilab/modules/scicos/includes/utilities.hxx
33
34 std::ostream& operator<<(std::ostream& os, update_status_t u)
35 {
36     switch (u)
37     {
38         case SUCCESS:
39             os << "SUCCESS";
40             break;
41         case NO_CHANGES:
42             os << "NO_CHANGES";
43             break;
44         case FAIL:
45             os << "FAIL";
46             break;
47     }
48     return os;
49 }
50
51 std::ostream& operator<<(std::ostream& os, kind_t k)
52 {
53     switch (k)
54     {
55         case ANNOTATION:
56             os << "ANNOTATION";
57             break;
58         case BLOCK:
59             os << "BLOCK";
60             break;
61         case DIAGRAM:
62             os << "DIAGRAM";
63             break;
64         case LINK:
65             os << "LINK";
66             break;
67         case PORT:
68             os << "PORT";
69             break;
70     }
71     return os;
72 }
73
74
75 std::ostream& operator<<(std::ostream& os, object_properties_t p)
76 {
77     switch (p)
78     {
79         case PARENT_DIAGRAM:
80             os << "PARENT_DIAGRAM";
81             break;
82         case GEOMETRY:
83             os << "GEOMETRY";
84             break;
85         case DESCRIPTION:
86             os << "DESCRIPTION";
87             break;
88         case RELATED_TO:
89             os << "RELATED_TO";
90             break;
91         case INTERFACE_FUNCTION:
92             os << "INTERFACE_FUNCTION";
93             break;
94         case SIM_FUNCTION_NAME:
95             os << "SIM_FUNCTION_NAME";
96             break;
97         case SIM_FUNCTION_API:
98             os << "SIM_FUNCTION_API";
99             break;
100         case SIM_SCHEDULE:
101             os << "SIM_SCHEDULE";
102             break;
103         case SIM_BLOCKTYPE:
104             os << "SIM_BLOCKTYPE";
105             break;
106         case SIM_DEP_UT:
107             os << "SIM_DEP_UT";
108             break;
109         case ANGLE:
110             os << "ANGLE";
111             break;
112         case EXPRS:
113             os << "EXPRS";
114             break;
115         case INPUTS:
116             os << "INPUTS";
117             break;
118         case OUTPUTS:
119             os << "OUTPUTS";
120             break;
121         case EVENT_INPUTS:
122             os << "EVENT_INPUTS";
123             break;
124         case EVENT_OUTPUTS:
125             os << "EVENT_OUTPUTS";
126             break;
127         case STATE:
128             os << "STATE";
129             break;
130         case DSTATE:
131             os << "DSTATE";
132             break;
133         case ODSTATE:
134             os << "ODSTATE";
135             break;
136         case NZCROSS:
137             os << "NZCROSS";
138             break;
139         case NMODE:
140             os << "NMODE";
141             break;;
142         case RPAR:
143             os << "RPAR";
144             break;
145         case IPAR:
146             os << "IPAR";
147             break;
148         case OPAR:
149             os << "OPAR";
150             break;
151         case EQUATIONS:
152             os << "EQUATIONS";
153             break;
154         case UID:
155             os << "UID";
156             break;
157         case PARENT_BLOCK:
158             os << "PARENT_BLOCK";
159             break;
160         case CHILDREN:
161             os << "CHILDREN";
162             break;
163         case PORT_REFERENCE:
164             os << "PORT_REFERENCE";
165             break;
166         case STYLE:
167             os << "STYLE";
168             break;
169         case LABEL:
170             os << "LABEL";
171             break;
172         case DESTINATION_PORT:
173             os << "DESTINATION_PORT";
174             break;
175         case SOURCE_PORT:
176             os << "SOURCE_PORT";
177             break;
178         case CONTROL_POINTS:
179             os << "CONTROL_POINTS";
180             break;
181         case THICK:
182             os << "THICK";
183             break;
184         case COLOR:
185             os << "COLOR";
186             break;
187         case KIND:
188             os << "KIND";
189             break;
190         case DATATYPE:
191             os << "DATATYPE";
192             break;
193         case DATATYPE_ROWS:
194             os << "DATATYPE_ROWS";
195             break;
196         case DATATYPE_COLS:
197             os << "DATATYPE_COLS";
198             break;
199         case DATATYPE_TYPE:
200             os << "DATATYPE_TYPE";
201             break;
202         case FIRING:
203             os << "FIRING";
204             break;
205         case SOURCE_BLOCK:
206             os << "SOURCE_BLOCK";
207             break;
208         case PORT_KIND:
209             os << "PORT_KIND";
210             break;
211         case IMPLICIT:
212             os << "IMPLICIT";
213             break;
214         case PORT_NUMBER:
215             os << "PORT_NUMBER";
216             break;
217         case CONNECTED_SIGNALS:
218             os << "CONNECTED_SIGNALS";
219             break;
220     }
221     return os;
222 }
223
224 static const bool USE_SCILAB_WRITE = true;
225
226 void LoggerView::objectCreated(const ScicosID& uid, kind_t k)
227 {
228     std::stringstream ss;
229
230     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
231
232     if (USE_SCILAB_WRITE)
233     {
234         scilabForcedWrite(ss.str().data());
235     }
236     else
237     {
238         std::cerr << ss.str();
239     }
240 }
241
242 void LoggerView::objectDeleted(const ScicosID& uid)
243 {
244     std::stringstream ss;
245
246     ss << __FUNCTION__ << "( " << uid << " )" << std::endl;
247
248     if (USE_SCILAB_WRITE)
249     {
250         scilabForcedWrite(ss.str().data());
251     }
252     else
253     {
254         std::cerr << ss.str();
255     }
256 }
257
258 void LoggerView::objectUpdated(const ScicosID& uid, kind_t k)
259 {
260     std::stringstream ss;
261
262     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
263
264     if (USE_SCILAB_WRITE)
265     {
266         scilabForcedWrite(ss.str().data());
267     }
268     else
269     {
270         std::cerr << ss.str();
271     }
272 }
273
274 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p)
275 {
276     // do not log anything on success; the message has already been logged
277 }
278
279 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p,
280                                  update_status_t u)
281 {
282     std::stringstream ss;
283
284     ss << __FUNCTION__ << "( " << uid << " , " << k << " , " << p << " ) : " << u << std::endl;
285
286     if (USE_SCILAB_WRITE)
287     {
288         scilabForcedWrite(ss.str().data());
289     }
290     else
291     {
292         std::cerr << ss.str();
293     }
294 }
295
296 } /* namespace org_scilab_modules_scicos */