1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 // This file is part of Open CASCADE Technology software library.
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
14 #include <APIHeaderSection_EditHeader.ixx>
15 #include <Interface_TypedValue.hxx>
17 #include <APIHeaderSection_MakeHeader.hxx>
19 static Standard_Boolean IsTimeStamp
20 (const Handle(TCollection_HAsciiString)& val)
22 if (val.IsNull()) return Standard_False;
23 if (val->Length() != 19) return Standard_False;
25 char dizmois = val->Value(6);
26 char dizjour = val->Value(9);
27 char dizheur = val->Value(12);
28 for (Standard_Integer i = 1; i <= 19; i ++) {
29 char uncar = val->Value(i);
31 case 1 : if (uncar != '1' && uncar != '2') return Standard_False; break;
34 case 4 : if (uncar < '0' || uncar > '9') return Standard_False; break;
35 case 5 : if (uncar != '-') return Standard_False;
36 case 6 : if (uncar != '0' && uncar != '1') return Standard_False; break;
37 case 7 : if (uncar < '0' || uncar > '9') return Standard_False;
38 if (dizmois == '1' && (uncar < '0' || uncar > '2')) return Standard_False; break;
39 case 8 : if (uncar != '-') return Standard_False;
40 case 9 : if (uncar < '0' || uncar > '3') return Standard_False; break;
41 case 10 : if (uncar < '0' || uncar > '9') return Standard_False;
42 if (dizjour == '3' && (uncar != '0' && uncar != '1')) return Standard_False; break;
43 case 11 : if (uncar != 'T') return Standard_False;
44 case 12 : if (uncar < '0' || uncar > '2') return Standard_False; break;
45 case 13 : if (uncar < '0' || uncar > '9') return Standard_False;
46 if (dizheur == '2' && (uncar < '0' || uncar > '3')) return Standard_False; break;
47 case 14 : if (uncar != ':') return Standard_False;
48 case 15 : if (uncar < '0' || uncar > '5') return Standard_False; break;
49 case 16 : if (uncar < '0' || uncar > '9') return Standard_False; break;
50 case 17 : if (uncar != ':') return Standard_False;
51 case 18 : if (uncar < '0' || uncar > '5') return Standard_False; break;
52 case 19 : if (uncar < '0' || uncar > '9') return Standard_False; break;
60 APIHeaderSection_EditHeader::APIHeaderSection_EditHeader ()
61 : IFSelect_Editor (10)
64 Handle(Interface_TypedValue) fn_name = new Interface_TypedValue("fn_name");
65 SetValue (1,fn_name,"name");
66 Handle(Interface_TypedValue) fn_time = new Interface_TypedValue("fn_time_stamp");
67 fn_time->SetSatisfies (IsTimeStamp,"IsTimeStamp");
68 SetValue (2,fn_time,"time");
69 Handle(Interface_TypedValue) fn_author = new Interface_TypedValue("fn_author");
70 SetValue (3,fn_author,"author"); // 1 seul (1er de liste)
71 Handle(Interface_TypedValue) fn_org = new Interface_TypedValue("fn_organization");
72 SetValue (4,fn_org,"org"); // 1 seul (1er de liste)
73 Handle(Interface_TypedValue) fn_preproc = new Interface_TypedValue("fn_preprocessor_version");
74 SetValue (5,fn_preproc,"preproc");
75 Handle(Interface_TypedValue) fn_orig = new Interface_TypedValue("fn_originating_system");
76 SetValue (6,fn_orig,"orig");
77 Handle(Interface_TypedValue) fn_autorize = new Interface_TypedValue("fn_authorization");
78 SetValue (7,fn_autorize,"autorize");
80 Handle(Interface_TypedValue) fs_schema = new Interface_TypedValue("fs_schema_identifiers");
81 SetValue (8,fs_schema,"schema"); // 1 seul (1er de liste)
83 Handle(Interface_TypedValue) fd_descr = new Interface_TypedValue("fd_description");
84 SetValue (9,fd_descr,"descr"); // 1 seul (1er de liste)
86 Handle(Interface_TypedValue) fd_level = new Interface_TypedValue("fd_implementation_level");
87 SetValue (10,fd_level,"level");
91 TCollection_AsciiString APIHeaderSection_EditHeader::Label () const
92 { return TCollection_AsciiString ("Step Header"); }
94 Standard_Boolean APIHeaderSection_EditHeader::Recognize
95 (const Handle(IFSelect_EditForm)& /*form*/) const
96 { return Standard_True; } // ??
98 Handle(TCollection_HAsciiString) APIHeaderSection_EditHeader::StringValue
99 (const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer num) const
102 return TypedValue(num)->HStringValue();
105 Standard_Boolean APIHeaderSection_EditHeader::Load
106 (const Handle(IFSelect_EditForm)& form,
107 const Handle(Standard_Transient)& /*ent*/,
108 const Handle(Interface_InterfaceModel)& model) const
110 Handle(StepData_StepModel) modl =
111 Handle(StepData_StepModel)::DownCast(model);
112 if (modl.IsNull()) return Standard_False;
114 APIHeaderSection_MakeHeader mkh (modl);
116 form->LoadValue (1 ,mkh.Name ());
117 form->LoadValue (2 ,mkh.TimeStamp ());
118 form->LoadValue (3 ,mkh.AuthorValue (1));
119 form->LoadValue (4 ,mkh.OrganizationValue (1));
120 form->LoadValue (5 ,mkh.PreprocessorVersion ());
121 form->LoadValue (6 ,mkh.OriginatingSystem ());
122 form->LoadValue (7 ,mkh.Authorisation ());
124 form->LoadValue (8 ,mkh.SchemaIdentifiersValue (1));
126 form->LoadValue (9 ,mkh.DescriptionValue (1));
127 form->LoadValue (10,mkh.ImplementationLevel ());
129 return Standard_True;
132 Standard_Boolean APIHeaderSection_EditHeader::Apply
133 (const Handle(IFSelect_EditForm)& form,
134 const Handle(Standard_Transient)& /*ent*/,
135 const Handle(Interface_InterfaceModel)& model) const
137 Handle(StepData_StepModel) modl =
138 Handle(StepData_StepModel)::DownCast(model);
139 if (modl.IsNull()) return Standard_False;
141 APIHeaderSection_MakeHeader mkh (modl);
143 if (form->IsModified(1)) mkh.SetName (form->EditedValue(1));
144 if (form->IsModified(2)) mkh.SetTimeStamp (form->EditedValue(2));
145 if (form->IsModified(3)) mkh.SetAuthorValue (1,form->EditedValue(3));
146 if (form->IsModified(4)) mkh.SetOrganizationValue (1,form->EditedValue(4));
147 if (form->IsModified(5)) mkh.SetPreprocessorVersion (form->EditedValue(5));
148 if (form->IsModified(6)) mkh.SetOriginatingSystem (form->EditedValue(6));
149 if (form->IsModified(7)) mkh.SetAuthorisation (form->EditedValue(7));
151 if (form->IsModified(8)) mkh.SetSchemaIdentifiersValue (1,form->EditedValue(8));
153 if (form->IsModified(9)) mkh.SetDescriptionValue (1,form->EditedValue(9));
154 if (form->IsModified(10)) mkh.SetImplementationLevel (form->EditedValue(10));
156 mkh.Apply( Handle(StepData_StepModel)::DownCast(model) );
158 return Standard_True;