Salome HOME
155e2ec717de9571baf1c04c8cc8abd565f6b5fb
[modules/yacs.git] / src / ydfx_gui / YDFXGUIPortsValidator.cxx
1 // Copyright (C) 2016-2023  CEA, EDF
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 // Author : Anthony Geay (EDF R&D)
20
21 #include "YDFXGUIPortsValidator.hxx"
22
23 #include <QIntValidator>
24 #include <QDoubleValidator>
25
26 #include "YACSEvalPort.hxx"
27 #include "YACSEvalSeqAny.hxx"
28
29 QValidator *BuildValidatorFromPort(QObject *parent, YACSEvalPort *port)
30 {
31   if(!port)
32     return 0;
33   std::string tod(port->getTypeOfData());
34   if(tod==YACSEvalAnyDouble::TYPE_REPR)
35     return new QDoubleValidator(parent);
36   if(tod==YACSEvalAnyInt::TYPE_REPR)
37     return new QIntValidator(parent);
38   return 0;
39 }
40
41 YACSEvalAny *BuildAnyFromString(const QString& text, YACSEvalPort *port)
42 {
43   if(!port)
44     return 0;
45   std::string tod(port->getTypeOfData());
46   if(tod==YACSEvalAnyDouble::TYPE_REPR)
47     {
48       bool isok;
49       double val(text.toDouble(&isok));
50       if(!isok)
51         return 0;
52       return new YACSEvalAnyDouble(val);
53     }
54   if(tod==YACSEvalAnyInt::TYPE_REPR)
55     {
56       bool isok;
57       int val(text.toInt(&isok));
58       if(!isok)
59         return 0;
60       return new YACSEvalAnyInt(val);
61     }
62   return 0;
63 }
64
65 QString BuidStringFromAny(YACSEvalAny *val)
66 {
67   if(!val)
68     return QString();
69   if(val->getTypeOfData()==YACSEvalAnyDouble::TYPE_REPR)
70     {
71       YACSEvalAnyDouble *valc(static_cast<YACSEvalAnyDouble *>(val));
72       return QString::number(valc->toDouble(),'g',16);
73     }
74   if(val->getTypeOfData()==YACSEvalAnyInt::TYPE_REPR)
75     {
76       YACSEvalAnyInt *valc(static_cast<YACSEvalAnyInt *>(val));
77       return QString::number(valc->toInt());
78     }
79   return QString();
80 }
81
82 YACSEvalSeqAny *BuildEmptySeqFromPort(YACSEvalPort *port)
83 {
84   std::string tod(port->getTypeOfData());
85   if(tod==YACSEvalAnyDouble::TYPE_REPR)
86     {
87       std::vector<double> v;
88       return new YACSEvalSeqAnyDouble(v);
89     }
90   if(tod==YACSEvalAnyInt::TYPE_REPR)
91     {
92       std::vector<int> v;
93       return new YACSEvalSeqAnyInt(v);
94     }
95   return 0;
96 }