0022735: Data races in BRepMesh working in parallel mode
[occt.git] / src / IFSelect / IFSelect_ParamEditor.cxx
1 #include <IFSelect_ParamEditor.ixx>
2 #include <Interface_Static.hxx>
3
4
5 IFSelect_ParamEditor::IFSelect_ParamEditor
6   (const Standard_Integer nbmax, const Standard_CString label)
7 : IFSelect_Editor (nbmax) , thelabel (label)
8 {
9   SetNbValues (0);
10   if (thelabel.Length() == 0) thelabel.AssignCat ("Param Editor");
11 }
12
13 void  IFSelect_ParamEditor::AddValue
14   (const Handle(Interface_TypedValue)& val, const Standard_CString shortname)
15 {
16   SetNbValues (NbValues() + 1);
17   SetValue (NbValues(), val, shortname);
18 }
19
20 void  IFSelect_ParamEditor::AddConstantText
21   (const Standard_CString val, const Standard_CString shortname,
22    const Standard_CString longname)
23 {
24   Handle(Interface_TypedValue) tv = new Interface_TypedValue
25     (longname[0] == '\0' ? shortname : longname);
26   tv->SetCStringValue (val);
27   SetNbValues (NbValues() + 1);
28   SetValue (NbValues(), tv, shortname, IFSelect_EditRead);
29 }
30
31
32 TCollection_AsciiString  IFSelect_ParamEditor::Label () const
33       {  return thelabel;  }
34
35 Standard_Boolean  IFSelect_ParamEditor::Recognize
36   (const Handle(IFSelect_EditForm)& form) const
37       {  return Standard_True;  }    // pas de contrainte
38
39 Handle(TCollection_HAsciiString)  IFSelect_ParamEditor::StringValue
40   (const Handle(IFSelect_EditForm)& form,const Standard_Integer num) const
41       {  return TypedValue(num)->HStringValue();  }
42
43
44 Standard_Boolean  IFSelect_ParamEditor::Load
45   (const Handle(IFSelect_EditForm)& form,
46    const Handle(Standard_Transient)& ent,
47    const Handle(Interface_InterfaceModel)& model) const
48 {
49   Standard_Integer i, nb = NbValues();
50   for (i = 1; i <= nb; i ++) form->LoadValue (i,TypedValue(i)->HStringValue());
51
52   return Standard_True;
53 }
54
55
56 Standard_Boolean  IFSelect_ParamEditor::Apply
57   (const Handle(IFSelect_EditForm)& form,
58    const Handle(Standard_Transient)& ent,
59    const Handle(Interface_InterfaceModel)& model) const
60 {
61   Standard_Integer i, nb = NbValues();
62   for (i = 1; i <= nb; i ++)
63     if (form->IsModified(i))
64       TypedValue (i)->SetHStringValue (form->EditedValue(i));
65
66   return Standard_True;
67 }
68
69 Handle(IFSelect_ParamEditor)  IFSelect_ParamEditor::StaticEditor
70   (const Handle(TColStd_HSequenceOfHAsciiString)& list,
71    const Standard_CString label)
72 {
73   Handle(IFSelect_ParamEditor) editor;
74   if (list.IsNull()) return editor;
75   Standard_Integer i,nb = list->Length();
76 //  if (nb == 0) return editor;
77   editor = new IFSelect_ParamEditor (nb+10,label);
78   for (i = 1; i <= nb; i ++) {
79     Handle(Interface_Static) val = Interface_Static::Static
80       (list->Value(i)->ToCString());
81     if (!val.IsNull()) editor->AddValue(val);
82   }
83   return editor;
84 }