Xcos MVC: implement params wpar / title / tol / tf / context
[scilab.git] / scilab / modules / scicos / src / cpp / view_scilab / DiagramAdapter.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 <string>
14 #include <sstream>
15
16 #include "internal.hxx"
17 #include "list.hxx"
18 #include "tlist.hxx"
19 #include "string.hxx"
20 #include "types.hxx"
21 #include "user.hxx"
22
23 #include "Controller.hxx"
24 #include "DiagramAdapter.hxx"
25 #include "ParamsAdapter.hxx"
26
27 extern "C" {
28 #include "version.h"
29 }
30
31 namespace org_scilab_modules_scicos
32 {
33 namespace view_scilab
34 {
35 namespace
36 {
37
38 struct props
39 {
40
41     static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& controller)
42     {
43         ParamsAdapter localAdaptor = ParamsAdapter(adaptor.getAdaptee());
44         return localAdaptor.getAsTList(new types::TList(), controller);
45     }
46
47     static bool set(DiagramAdapter& adaptor, types::InternalType* v, Controller& controller)
48     {
49         ParamsAdapter localAdaptor = ParamsAdapter(adaptor.getAdaptee());
50         return localAdaptor.setAsTList(v, controller);
51     }
52 };
53
54 struct objs
55 {
56
57     static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& controller)
58     {
59
60         return 0;
61     }
62
63     static bool set(DiagramAdapter& adaptor, types::InternalType* v, Controller& controller)
64     {
65         return false;
66     }
67 };
68
69 struct version
70 {
71
72     static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& controller)
73     {
74         std::stringstream str;
75         str << SCI_VERSION_MAJOR << '.' << SCI_VERSION_MINOR << '.' << SCI_VERSION_MAINTENANCE;
76
77         return new types::String(str.str().c_str());
78     }
79
80     static bool set(DiagramAdapter& adaptor, types::InternalType* v, Controller& controller)
81     {
82         //FIXME: handle version upgrade of the whole model
83         return true;
84     }
85 };
86
87 struct contrib
88 {
89
90     static types::InternalType* get(const DiagramAdapter& adaptor, const Controller& controller)
91     {
92         return 0;
93     }
94
95     static bool set(DiagramAdapter& adaptor, types::InternalType* v, Controller& controller)
96     {
97         return false;
98     }
99 };
100
101 } /* namespace */
102
103 template<> property<DiagramAdapter>::props_t property<DiagramAdapter>::fields = property<DiagramAdapter>::props_t();
104
105 DiagramAdapter::DiagramAdapter(const DiagramAdapter& o) :
106     BaseAdapter<DiagramAdapter, org_scilab_modules_scicos::model::Diagram>(o), contrib(o.contrib) {}
107
108 DiagramAdapter::DiagramAdapter(org_scilab_modules_scicos::model::Diagram* o) :
109     BaseAdapter<DiagramAdapter, org_scilab_modules_scicos::model::Diagram>(o), contrib(0)
110 {
111     if (property<DiagramAdapter>::properties_have_not_been_set())
112     {
113         property<DiagramAdapter>::fields.reserve(4);
114         property<DiagramAdapter>::add_property(L"props", &props::get, &props::set);
115         property<DiagramAdapter>::add_property(L"objs", &objs::get, &objs::set);
116         property<DiagramAdapter>::add_property(L"version", &version::get, &version::set);
117         property<DiagramAdapter>::add_property(L"contrib", &contrib::get, &contrib::set);
118     }
119 }
120
121 DiagramAdapter::~DiagramAdapter()
122 {
123 }
124
125 std::wstring DiagramAdapter::getTypeStr()
126 {
127     return getSharedTypeStr();
128 }
129 std::wstring DiagramAdapter::getShortTypeStr()
130 {
131     return getSharedTypeStr();
132 }
133
134 types::InternalType* DiagramAdapter::getContrib() const
135 {
136     return contrib;
137 }
138
139 void DiagramAdapter::setContrib(types::InternalType* contrib)
140 {
141     this->contrib = contrib;
142 }
143
144 } /* namespace view_scilab */
145 } /* namespace org_scilab_modules_scicos */