Xcos MVC: implement in_style / out_style / in_label / out_label / style
[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-en.txt
10  *
11  */
12
13 #include <string>
14 #include <iostream>
15 #include <sstream>
16 #include "scilabWrite.hxx"
17
18 #include "LoggerView.hxx"
19 #include "Controller.hxx"
20
21 namespace org_scilab_modules_scicos
22 {
23
24 LoggerView::LoggerView()
25 {
26 }
27
28 LoggerView::~LoggerView()
29 {
30 }
31
32 // generated with :
33 // awk ' $2 == "//!<" {sub(",","", $1); print "case " $1 ":\n    os << \"" $1 "\";\n    break;" }' ~/work/branches/YaSp/scilab/modules/scicos/includes/utilities.hxx
34
35 static std::ostream& operator<<(std::ostream& os, update_status_t u)
36 {
37     switch (u)
38     {
39         case SUCCESS:
40             os << "SUCCESS";
41             break;
42         case NO_CHANGES:
43             os << "NO_CHANGES";
44             break;
45         case FAIL:
46             os << "FAIL";
47             break;
48     }
49     return os;
50 }
51
52 static std::ostream& operator<<(std::ostream& os, kind_t k)
53 {
54     switch (k)
55     {
56         case ANNOTATION:
57             os << "ANNOTATION";
58             break;
59         case BLOCK:
60             os << "BLOCK";
61             break;
62         case DIAGRAM:
63             os << "DIAGRAM";
64             break;
65         case LINK:
66             os << "LINK";
67             break;
68         case PORT:
69             os << "PORT";
70             break;
71     }
72     return os;
73 }
74
75
76 static std::ostream& operator<<(std::ostream& os, object_properties_t p)
77 {
78     switch (p)
79     {
80         case PARENT_DIAGRAM:
81             os << "PARENT_DIAGRAM";
82             break;
83         case GEOMETRY:
84             os << "GEOMETRY";
85             break;
86         case DESCRIPTION:
87             os << "DESCRIPTION";
88             break;
89         case RELATED_TO:
90             os << "RELATED_TO";
91             break;
92         case INTERFACE_FUNCTION:
93             os << "INTERFACE_FUNCTION";
94             break;
95         case SIM_FUNCTION_NAME:
96             os << "SIM_FUNCTION_NAME";
97             break;
98         case SIM_FUNCTION_API:
99             os << "SIM_FUNCTION_API";
100             break;
101         case SIM_SCHEDULE:
102             os << "SIM_SCHEDULE";
103             break;
104         case ANGLE:
105             os << "ANGLE";
106             break;
107         case EXPRS:
108             os << "EXPRS";
109             break;
110         case INPUTS:
111             os << "INPUTS";
112             break;
113         case OUTPUTS:
114             os << "OUTPUTS";
115             break;
116         case EVENT_INPUTS:
117             os << "EVENT_INPUTS";
118             break;
119         case EVENT_OUTPUTS:
120             os << "EVENT_OUTPUTS";
121             break;
122         case PARENT_BLOCK:
123             os << "PARENT_BLOCK";
124             break;
125         case CHILDREN:
126             os << "CHILDREN";
127             break;
128         case PORT_REFERENCE:
129             os << "PORT_REFERENCE";
130             break;
131         case STYLE:
132             os << "STYLE";
133             break;
134         case LABEL:
135             os << "LABEL";
136             break;
137         case DESTINATION_PORT:
138             os << "DESTINATION_PORT";
139             break;
140         case SOURCE_PORT:
141             os << "SOURCE_PORT";
142             break;
143         case CONTROL_POINTS:
144             os << "CONTROL_POINTS";
145             break;
146         case DATATYPE:
147             os << "DATATYPE";
148             break;
149         case SOURCE_BLOCK:
150             os << "SOURCE_BLOCK";
151             break;
152         case PORT_KIND:
153             os << "PORT_KIND";
154             break;
155         case IMPLICIT:
156             os << "IMPLICIT";
157             break;
158         case PORT_NUMBER:
159             os << "PORT_NUMBER";
160             break;
161         case CONNECTED_SIGNALS:
162             os << "CONNECTED_SIGNALS";
163             break;
164     }
165     return os;
166 }
167
168 static const bool USE_SCILAB_WRITE = true;
169
170 void LoggerView::objectCreated(const ScicosID& uid, kind_t k)
171 {
172     std::stringstream ss;
173
174     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
175
176     if (USE_SCILAB_WRITE)
177     {
178         scilabForcedWrite(ss.str().data());
179     }
180     else
181     {
182         std::cerr << ss.str();
183     }
184 }
185
186 void LoggerView::objectDeleted(const ScicosID& uid)
187 {
188     std::stringstream ss;
189
190     ss << __FUNCTION__ << "( " << uid << " )" << std::endl;
191
192     if (USE_SCILAB_WRITE)
193     {
194         scilabForcedWrite(ss.str().data());
195     }
196     else
197     {
198         std::cerr << ss.str();
199     }
200 }
201
202 void LoggerView::objectUpdated(const ScicosID& uid, kind_t k)
203 {
204     std::stringstream ss;
205
206     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
207
208     if (USE_SCILAB_WRITE)
209     {
210         scilabForcedWrite(ss.str().data());
211     }
212     else
213     {
214         std::cerr << ss.str();
215     }
216 }
217
218 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p)
219 {
220     // do not log anything on success; the message has already been logged
221 }
222
223 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p,
224                                  update_status_t u)
225 {
226     std::stringstream ss;
227
228     ss << __FUNCTION__ << "( " << uid << " , " << k << " , " << p << " ) : " << u << std::endl;
229
230     if (USE_SCILAB_WRITE)
231     {
232         scilabForcedWrite(ss.str().data());
233     }
234     else
235     {
236         std::cerr << ss.str();
237     }
238 }
239
240 } /* namespace org_scilab_modules_scicos */