b311480e |
1 | // Created on: 1999-11-05 |
2 | // Created by: Denis PASCAL |
3 | // Copyright (c) 1999-1999 Matra Datavision |
4 | // Copyright (c) 1999-2012 OPEN CASCADE SAS |
5 | // |
6 | // The content of this file is subject to the Open CASCADE Technology Public |
7 | // License Version 6.5 (the "License"). You may not use the content of this file |
8 | // except in compliance with the License. Please obtain a copy of the License |
9 | // at http://www.opencascade.org and read it completely before using this file. |
10 | // |
11 | // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its |
12 | // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France. |
13 | // |
14 | // The Original Code and all software distributed under the License is |
15 | // distributed on an "AS IS" basis, without warranty of any kind, and the |
16 | // Initial Developer hereby disclaims all such warranties, including without |
17 | // limitation, any warranties of merchantability, fitness for a particular |
18 | // purpose or non-infringement. Please see the License for the specific terms |
19 | // and conditions governing the rights and limitations under the License. |
20 | |
7fd59977 |
21 | |
22 | |
23 | #include <DDataStd.ixx> |
24 | #include <DDF.hxx> |
25 | |
26 | #include <Draw.hxx> |
27 | #include <Draw_Appli.hxx> |
28 | #include <Draw_Drawable3D.hxx> |
29 | #include <Draw_Interpretor.hxx> |
30 | |
31 | #include <TDF_Data.hxx> |
32 | #include <TDF.hxx> |
33 | #include <TDF_Tool.hxx> |
34 | #include <TDF_Label.hxx> |
35 | |
36 | #include <DDataStd_TreeBrowser.hxx> |
37 | #include <TDataStd_TreeNode.hxx> |
38 | #include <TDataStd_ChildNodeIterator.hxx> |
39 | |
40 | #include <Standard_GUID.hxx> |
41 | #include <TCollection_AsciiString.hxx> |
42 | #include <TCollection_ExtendedString.hxx> |
43 | |
44 | #include <stdio.h> |
45 | |
46 | |
47 | //======================================================================= |
48 | //TreeNode : SetNode |
49 | //purpose : SetNode (DOC Entry [ID]) |
50 | //======================================================================= |
51 | |
52 | static Standard_Integer DDataStd_SetNode (Draw_Interpretor& di, |
53 | Standard_Integer n, |
54 | const char** a) |
55 | { |
56 | Handle(TDF_Data) DF; |
57 | if (!DDF::GetDF(a[1],DF)) return 1; |
58 | TDF_Label L; |
59 | Handle(TDataStd_TreeNode) TN; |
60 | DDF::AddLabel(DF,a[2],L); |
61 | if (n == 3) { |
62 | TN = TDataStd_TreeNode::Set(L); |
63 | DDF::ReturnLabel(di,TN->Label()); |
64 | return 0; |
65 | } else if (n == 4) { |
66 | if (!Standard_GUID::CheckGUIDFormat(a[3])) { |
67 | di<<"DDataStd_SetNode: The format of GUID is invalid"<<"\n"; |
68 | return 1; |
69 | } |
70 | const Standard_GUID ID(a[3]); |
71 | TN = TDataStd_TreeNode::Set(L, ID); |
72 | DDF::ReturnLabel(di,TN->Label()); |
73 | return 0; |
74 | } |
75 | di << "DDataStd_SetNode : Error" << "\n"; |
76 | return 1; |
77 | } |
78 | |
79 | //======================================================================= |
80 | //TreeNode : AppendNode |
81 | //purpose : AppendNode (DOC FatherEntry childEntry [fatherID]) |
82 | //======================================================================= |
83 | |
84 | static Standard_Integer DDataStd_AppendNode (Draw_Interpretor& di, |
85 | Standard_Integer n, |
86 | const char** a) |
87 | { |
88 | if (n >= 4) { |
89 | Handle(TDF_Data) DF; |
90 | if (!DDF::GetDF(a[1],DF))return 1; |
91 | Handle(TDataStd_TreeNode) father, child; |
92 | |
93 | Standard_GUID ID; |
94 | if (n==4) |
95 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
96 | else{ |
97 | if (!Standard_GUID::CheckGUIDFormat(a[4])) { |
98 | di<<"DDataStd_AppendNode: The format of GUID is invalid"<<"\n"; |
99 | return 1; |
100 | } |
101 | const Standard_GUID varID(a[4]); |
102 | ID=varID; |
103 | } |
104 | |
105 | if (!DDF::Find(DF,a[2],ID,father)) return 1; |
106 | |
107 | TDF_Label L; |
108 | DDF::AddLabel(DF,a[3],L); |
109 | if ( (L.FindAttribute(ID,child)) |
110 | &&(!child->IsRoot()) ){ |
111 | di << "DDataStd_AppendNode : Error : childTreeNode don't detach" << "\n"; |
112 | return 1; |
113 | } |
114 | child = TDataStd_TreeNode::Set(L,ID); |
115 | if (!father->Append(child)) return 1; |
116 | #ifdef DEB |
117 | di<<"AppendNode: OK"<<"\n"; |
118 | #endif |
119 | return 0; |
120 | } |
121 | di << "DDataStd_AppendNode : Error" << "\n"; |
122 | return 1; |
123 | } |
124 | |
125 | //======================================================================= |
126 | //TreeNode : PrependNode |
127 | //purpose : PrependNode (DOC FatherEntry childEntry [fatherID]) |
128 | //======================================================================= |
129 | |
130 | static Standard_Integer DDataStd_PrependNode (Draw_Interpretor& di, |
131 | Standard_Integer n, |
132 | const char** a) |
133 | { |
134 | if (n >= 4) { |
135 | Handle(TDF_Data) DF; |
136 | if (!DDF::GetDF(a[1],DF))return 1; |
137 | Handle(TDataStd_TreeNode) father, child; |
138 | |
139 | Standard_GUID ID; |
140 | if (n==4) |
141 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
142 | else{ |
143 | if (!Standard_GUID::CheckGUIDFormat(a[4])) { |
144 | di<<"DDataStd_PrependNode: The format of GUID is invalid"<<"\n"; |
145 | return 1; |
146 | } |
147 | const Standard_GUID varID(a[4]); |
148 | ID=varID; |
149 | } |
150 | |
151 | if (!DDF::Find(DF,a[2],ID,father)) return 1; |
152 | |
153 | TDF_Label L; |
154 | DDF::AddLabel(DF,a[3],L); |
155 | if ( (L.FindAttribute(ID,child)) |
156 | &&(!child->IsRoot()) ){ |
157 | di << "DDataStd_PrependNode : Error : childTreeNode don't detach" << "\n"; |
158 | return 1; |
159 | } |
160 | child = TDataStd_TreeNode::Set(L,ID); |
161 | if (!father->Prepend(child)) return 1; |
162 | #ifdef DEB |
163 | di<<"PrependNode: OK"<<"\n"; |
164 | #endif |
165 | return 0; |
166 | } |
167 | di << "DDataStd_PrependNode : Error" << "\n"; |
168 | return 1; |
169 | } |
170 | |
171 | //======================================================================= |
172 | //TreeNode : RootNode |
173 | //purpose : RootNode (DOC TreeNodeEntry [ID]) |
174 | //======================================================================= |
175 | |
176 | static Standard_Integer DDataStd_RootNode (Draw_Interpretor& di, |
177 | Standard_Integer n, |
178 | const char** a) |
179 | { |
180 | if (n >= 3) { |
181 | Handle(TDF_Data) DF; |
182 | if (!DDF::GetDF(a[1],DF)) return 1; |
183 | Handle(TDataStd_TreeNode) TN; |
184 | |
185 | Standard_GUID ID; |
186 | if (n==3) |
187 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
188 | else{ |
189 | if (!Standard_GUID::CheckGUIDFormat(a[3])) { |
190 | di<<"DDataStd_RootNode: The format of GUID is invalid"<<"\n"; |
191 | return 1; |
192 | } |
193 | const Standard_GUID varID(a[3]); |
194 | ID=varID; |
195 | } |
196 | |
197 | if (!DDF::Find(DF,a[2],ID,TN)) return 1; |
198 | DDF::ReturnLabel(di,TN->Root()->Label()); |
199 | return 0; |
200 | } |
201 | di << "DDataStd_RootNode : Error" << "\n"; |
202 | return 1; |
203 | } |
204 | |
205 | //======================================================================= |
206 | //TreeNode : InsertNodeBefore |
207 | //purpose : InsertNodeBefore (DOC TreeNodeEntry TreeNodeWhichHasToBeBefore [ID]) |
208 | //======================================================================= |
209 | |
210 | static Standard_Integer DDataStd_InsertNodeBefore(Draw_Interpretor& di, |
211 | Standard_Integer n, |
212 | const char** a) |
213 | { |
214 | if (n >= 4) { |
215 | Handle(TDF_Data) DF; |
216 | if (!DDF::GetDF(a[1],DF)) return 1; |
217 | Handle(TDataStd_TreeNode) current, TN; |
218 | |
219 | Standard_GUID ID; |
220 | if (n==4) |
221 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
222 | else{ |
223 | if (!Standard_GUID::CheckGUIDFormat(a[4])) { |
224 | di<<"DDataStd_InsertNodeBefore: The format of GUID is invalid"<<"\n"; |
225 | return 1; |
226 | } |
227 | const Standard_GUID varID(a[4]); |
228 | ID=varID; |
229 | } |
230 | |
231 | if (!DDF::Find(DF,a[2],ID,current)) return 1; |
232 | // if (!DDF::Find(DF,a[3],ID,TN)) return 1; |
233 | |
234 | TDF_Label L; |
235 | if (!DDF::FindLabel(DF,a[3],L)) return 1; |
236 | TN = TDataStd_TreeNode::Set(L,ID); |
237 | if (!current->InsertBefore(TN)) return 1; |
238 | return 0; |
239 | } |
240 | di << "DDataStd_InsertBefore : Error" << "\n"; |
241 | return 1; |
242 | } |
243 | |
244 | //======================================================================= |
245 | //TreeNode : InsertNodeAfter |
246 | //purpose : InsertNodeAfter (DOC TreeNodeEntry TreeNodeWhichHasToBeAfter [ID]) |
247 | //======================================================================= |
248 | |
249 | static Standard_Integer DDataStd_InsertNodeAfter(Draw_Interpretor& di, |
250 | Standard_Integer n, |
251 | const char** a) |
252 | { |
253 | if (n >= 4) { |
254 | Handle(TDF_Data) DF; |
255 | if (!DDF::GetDF(a[1],DF)) return 1; |
256 | Handle(TDataStd_TreeNode) current, TN; |
257 | |
258 | Standard_GUID ID; |
259 | if (n==4) |
260 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
261 | else{ |
262 | if (!Standard_GUID::CheckGUIDFormat(a[4])) { |
263 | di<<"DDataStd_InsertNodeAfter: The format of GUID is invalid"<<"\n"; |
264 | return 1; |
265 | } |
266 | const Standard_GUID varID(a[4]); |
267 | ID=varID; |
268 | } |
269 | |
270 | if (!DDF::Find(DF,a[2],ID,current)) return 1; |
271 | //if (!DDF::Find(DF,a[3],TDataStd_TreeNode::GetDefaultTreeID(),TN)) return 1; |
272 | TDF_Label L; |
273 | if (!DDF::FindLabel(DF,a[3],L)) return 1; |
274 | TN = TDataStd_TreeNode::Set(L); |
275 | if (!current->InsertAfter(TN)) return 1; |
276 | return 0; |
277 | } |
278 | di << "DDataStd_InsertNodeAfter : Error" << "\n"; |
279 | return 1; |
280 | } |
281 | |
282 | //======================================================================= |
283 | //TreeNode : DetachNode |
284 | //purpose : DetachNode (DOC TreeNodeEntry [ID]) |
285 | //======================================================================= |
286 | |
287 | static Standard_Integer DDataStd_DetachNode (Draw_Interpretor& di,Standard_Integer n, const char** a) |
288 | { |
289 | if (n >= 3) { |
290 | Handle(TDF_Data) DF; |
291 | if (!DDF::GetDF(a[1],DF)) return 1; |
292 | Handle(TDataStd_TreeNode) TN; |
293 | |
294 | Standard_GUID ID; |
295 | if (n==3) |
296 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
297 | else{ |
298 | if (!Standard_GUID::CheckGUIDFormat(a[3])) { |
299 | di<<"DDataStd_DetachNode: The format of GUID is invalid"<<"\n"; |
300 | return 1; |
301 | } |
302 | const Standard_GUID varID(a[3]); |
303 | ID=varID; |
304 | } |
305 | |
306 | if (!DDF::Find(DF,a[2],ID,TN)) return 1; |
307 | if (!TN->Remove()) |
308 | di << "Can't Detach the TreeNode" << "\n"; |
309 | return 0; |
310 | } |
311 | di << "DDataStd_DetachNode : Error" << "\n"; |
312 | return 1; |
313 | } |
314 | |
315 | //======================================================================= |
316 | //function : TreeBrowse |
317 | //purpose : |
318 | // arg 1 : DF name |
319 | // arg 2 : Entry |
320 | // [arg 3] : Browser name |
321 | //======================================================================= |
322 | |
323 | static Standard_Integer DDataStd_TreeBrowse (Draw_Interpretor& di, |
324 | Standard_Integer n, |
325 | const char** a) |
326 | { |
327 | if (n<3) return 1; |
328 | |
329 | Handle(TDF_Data) DF; |
330 | if (!DDF::GetDF (a[1], DF)) return 1; |
331 | |
332 | TDF_Label lab; |
333 | TDF_Tool::Label(DF,a[2],lab); |
334 | |
335 | Handle(DDataStd_TreeBrowser) NewTreeNode = new DDataStd_TreeBrowser (lab); |
336 | char *name = new char[50]; |
91322f44 |
337 | if (n == 4) Sprintf(name,"treebrowser_%s",a[3]); |
338 | else Sprintf(name,"treebrowser_%s",a[1]); |
7fd59977 |
339 | |
340 | Draw::Set(name, NewTreeNode); |
341 | TCollection_AsciiString inst1("treebrowser "); |
342 | inst1.AssignCat(name); |
343 | di.Eval(inst1.ToCString()); |
344 | return 0; |
345 | } |
346 | |
347 | |
348 | //======================================================================= |
349 | //function : OpenNode |
350 | //purpose : |
351 | // arg 1 : Browser name |
352 | // [arg 2] : Label entry |
353 | //======================================================================= |
354 | |
355 | static Standard_Integer DDataStd_OpenNode (Draw_Interpretor& di, |
356 | Standard_Integer n, |
357 | const char** a) |
358 | { |
359 | if (n < 2) return 1; |
360 | |
361 | Handle(DDataStd_TreeBrowser) browser = |
362 | Handle(DDataStd_TreeBrowser)::DownCast (Draw::Get(a[1], Standard_True)); |
363 | |
364 | TDF_Label lab; |
365 | if (n == 3) TDF_Tool::Label(browser->Label().Data(),a[2],lab); |
366 | |
367 | if (n == 2 || lab.IsNull()) { |
368 | TCollection_AsciiString list = browser->OpenRoot(); |
369 | di<<list.ToCString(); |
370 | } |
371 | else { |
372 | TCollection_AsciiString list = browser->OpenNode(lab); |
373 | di<<list.ToCString(); |
374 | } |
375 | return 0; |
376 | } |
377 | |
378 | //======================================================================= |
379 | //TreeNode : ChildNodeIterate |
380 | //purpose : ChildNodeIterate Doc TreeNode AllLevels [ID] |
381 | //======================================================================= |
382 | |
383 | static Standard_Integer DDataStd_ChildNodeIterate (Draw_Interpretor& di, |
384 | Standard_Integer n, |
385 | const char** a) |
386 | { |
387 | if (n >= 4) { |
388 | Handle(TDF_Data) DF; |
389 | if (!DDF::GetDF(a[1],DF)) return 1; |
91322f44 |
390 | const Standard_Boolean AllLevels(Draw::Atoi(a[3])); |
7fd59977 |
391 | Handle(TDataStd_TreeNode) TN, Value; |
392 | |
393 | Standard_GUID ID; |
394 | if (n==4) |
395 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
396 | else{ |
397 | if (!Standard_GUID::CheckGUIDFormat(a[4])) { |
398 | di<<"DDataStd_ChildNodeIterate: The format of GUID is invalid"<<"\n"; |
399 | return 1; |
400 | } |
401 | const Standard_GUID varID(a[4]); |
402 | ID=varID; |
403 | } |
404 | |
405 | if (!DDF::Find(DF, a[2], ID, TN)) return 1; |
406 | //di<<"TDataStd_ChildNodeIterator: "<<"\n"; |
407 | TDataStd_ChildNodeIterator itr(TN, AllLevels); |
408 | for (; itr.More(); itr.Next()) { |
409 | Value = itr.Value(); |
410 | TCollection_AsciiString entry; |
411 | TDF_Tool::Entry(Value->Label(), entry); |
412 | di<<entry<<"\n"; |
413 | //di<<entry; |
414 | //if(itr.More()==Standard_True) |
415 | //di<<" "; |
416 | } |
417 | di<<"\n"; |
418 | return 0; |
419 | } |
420 | di << "DDataStd_ChildNodeIterate : Error" << "\n"; |
421 | return 1; |
422 | } |
423 | |
424 | static TDataStd_ChildNodeIterator cni; |
425 | |
426 | //======================================================================= |
427 | //TreeNode : InitChildNodeIterator |
428 | //purpose : InitChildNodeIterator Doc TreeNode AllLevels [ID] |
429 | //======================================================================= |
430 | |
431 | static Standard_Integer DDataStd_InitChildNodeIterator (Draw_Interpretor& di, |
432 | Standard_Integer n, |
433 | const char** a) |
434 | { |
435 | if (n >= 4) { |
436 | Handle(TDF_Data) DF; |
437 | if (!DDF::GetDF(a[1],DF)) return 1; |
438 | Handle(TDataStd_TreeNode) TN, Value; |
439 | |
440 | Standard_GUID ID; |
441 | if (n==4) |
442 | ID=Standard_GUID(TDataStd_TreeNode::GetDefaultTreeID()); |
443 | else{ |
444 | if (!Standard_GUID::CheckGUIDFormat(a[4])) { |
445 | di<<"DDataStd_ChildNodeIterator: The format of GUID is invalid"<<"\n"; |
446 | return 1; |
447 | } |
448 | const Standard_GUID varID(a[4]); |
449 | ID=varID; |
450 | } |
451 | |
452 | if (!DDF::Find(DF, a[2], ID, TN)) return 1; |
91322f44 |
453 | const Standard_Boolean AllLevels(Draw::Atoi(a[3])); |
7fd59977 |
454 | cni.Initialize(TN, AllLevels); |
455 | return 0; |
456 | } |
457 | di << "DDataStd_InitChildNodeIterator : Error" << "\n"; |
458 | return 1; |
459 | } |
460 | |
461 | //======================================================================= |
462 | //TreeNode : ChildNodeMore |
463 | //purpose : ChildNodeMore |
464 | //======================================================================= |
465 | |
466 | static Standard_Integer DDataStd_ChildNodeMore (Draw_Interpretor& di, |
467 | Standard_Integer /*n*/, |
468 | const char** /*a*/) |
469 | { |
470 | if (cni.More()) { |
471 | //cout<<"TRUE"<<endl; |
472 | di<<"TRUE"<<"\n"; |
473 | } |
474 | else { |
475 | //cout<<"FALSE"<<endl; |
476 | di<<"FALSE"<<"\n"; |
477 | } |
478 | return 0; |
479 | } |
480 | |
481 | //======================================================================= |
482 | //TreeNode : ChildNodeNext |
483 | //purpose : ChildNodeNext |
484 | //======================================================================= |
485 | |
486 | static Standard_Integer DDataStd_ChildNodeNext (Draw_Interpretor& /*di*/, |
487 | Standard_Integer /*n*/, |
488 | const char** /*a*/) |
489 | { |
490 | cni.Next(); |
491 | return 0; |
492 | } |
493 | |
494 | //======================================================================= |
495 | //TreeNode : ChildNodeNextBrother |
496 | //purpose : ChildNodeNext Brother |
497 | //======================================================================= |
498 | |
499 | static Standard_Integer DDataStd_ChildNodeNextBrother (Draw_Interpretor& /*di*/, |
500 | Standard_Integer /*n*/, |
501 | const char** /*a*/) |
502 | { |
503 | cni.NextBrother(); |
504 | return 0; |
505 | } |
506 | |
507 | //======================================================================= |
508 | //TreeNode : ChildNodeValue |
509 | //purpose : ChildNodeValue |
510 | //======================================================================= |
511 | |
512 | static Standard_Integer DDataStd_ChildNodeValue (Draw_Interpretor& di, |
513 | Standard_Integer /*n*/, |
514 | const char** /*a*/) |
515 | { |
516 | TCollection_AsciiString entry; |
517 | TDF_Tool::Entry(cni.Value()->Label(), entry); |
518 | //cout<<entry<<endl; |
519 | di <<entry<<"\n"; |
520 | return 0; |
521 | } |
522 | |
523 | //======================================================================= |
524 | //TreeNode : TreeCommands |
525 | //purpose : |
526 | //======================================================================= |
527 | |
528 | void DDataStd::TreeCommands (Draw_Interpretor& theCommands) |
529 | { |
530 | static Standard_Boolean done = Standard_False; |
531 | if (done) return; |
532 | done = Standard_True; |
533 | |
534 | const char* g = "DData : Standard Attribute Commands"; |
535 | |
536 | // SET |
537 | |
538 | theCommands.Add ("SetNode", |
539 | "SetNode (DOC Entry [GUID])", |
540 | __FILE__, DDataStd_SetNode, g); |
541 | |
542 | // EDIT |
543 | |
544 | theCommands.Add ("AppendNode", |
545 | "AppendNode (DOC FatherEntry childEntry [fatherGUID])", |
546 | __FILE__, DDataStd_AppendNode, g); |
547 | |
548 | theCommands.Add ("PrependNode", |
549 | "PrependNode (DOC FatherEntry childEntry [fatherGUID])", |
550 | __FILE__, DDataStd_PrependNode, g); |
551 | |
552 | theCommands.Add ("InsertNodeBefore", |
553 | "InsertNodeBefore (DOC TreeNodeEntry TreeNodeWhichHasToBeBefore [GUID])", |
554 | __FILE__, DDataStd_InsertNodeBefore, g); |
555 | |
556 | theCommands.Add ("InsertNodeAfter", |
557 | "InsertNodeAfter (DOC TreeNodeEntry TreeNodeWhichHasToBeAfter [GUID])", |
558 | __FILE__, DDataStd_InsertNodeAfter, g); |
559 | |
560 | theCommands.Add ("DetachNode", |
561 | "DetachNode (DOC TreeNodeEntry [GUID])", |
562 | __FILE__, DDataStd_DetachNode, g); |
563 | |
564 | theCommands.Add ("RootNode", |
565 | "RootNode (DOC TreeNodeEntry [GUID])", |
566 | __FILE__, DDataStd_RootNode, g); |
567 | |
568 | |
569 | // TREE BROWSER |
570 | |
571 | theCommands.Add ("TreeBrowse", |
572 | "TreeBrowse dfname entry [browsername]", |
573 | __FILE__, DDataStd_TreeBrowse, g); |
574 | |
575 | theCommands.Add ("OpenNode", |
576 | "PRIVATE COMMAND FOR TREE BROWSER!\nReturns the list of sub-TreeNodes : OpenTreeNode browsername [entry]", |
577 | __FILE__, DDataStd_OpenNode, g); |
578 | |
579 | |
580 | |
581 | // TREE ITERATOR |
582 | |
583 | theCommands.Add ("ChildNodeIterate", |
584 | "ChildNodeIterate Doc TreeNode AllLevels [GUID]", |
585 | __FILE__, DDataStd_ChildNodeIterate, g); |
586 | |
587 | theCommands.Add ("InitChildNodeIterator", |
588 | "InitChildNodeIterator Doc TreeNode AllLevels [GUID]", |
589 | __FILE__, DDataStd_InitChildNodeIterator, g); |
590 | |
591 | theCommands.Add ("ChildNodeMore", |
592 | "ChildNodeMore", |
593 | __FILE__, DDataStd_ChildNodeMore, g); |
594 | |
595 | theCommands.Add ("ChildNodeNext", |
596 | "ChildNodeNext", |
597 | __FILE__, DDataStd_ChildNodeNext, g); |
598 | |
599 | theCommands.Add ("ChildNodeNextBrother", |
600 | "ChildNodeNextBrother", |
601 | __FILE__, DDataStd_ChildNodeNextBrother, g); |
602 | |
603 | theCommands.Add ("ChildNodeValue", |
604 | "ChildNodeValue", |
605 | __FILE__, DDataStd_ChildNodeValue, g); |
606 | |
607 | } |