Version: 9.16.0
VisitorSaveGuiSchema.cxx
Go to the documentation of this file.
1// Copyright (C) 2006-2026 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
21#include "Proc.hxx"
22#include "QtGuiContext.hxx"
23#include "guiObservers.hxx"
24#include "SceneItem.hxx"
25#include "SceneNodeItem.hxx"
26
27#include <cassert>
28
29//#define _DEVDEBUG_
30#include "YacsTrace.hxx"
31
32using namespace std;
33using namespace YACS::HMI;
34using namespace YACS::ENGINE;
35
36VisitorSaveGuiSchema::VisitorSaveGuiSchema(YACS::ENGINE::Proc* proc)
37 : VisitorSaveSalomeSchema(proc), _proc(proc)
38{
39 DEBTRACE("VisitorSaveGuiSchema::VisitorSaveGuiSchema");
40}
41
43{
44 DEBTRACE("VisitorSaveGuiSchema::~VisitorSaveGuiSchema");
45}
46
48{
49 DEBTRACE("VisitorSaveGuiSchema::visitProc");
50 VisitorSaveSalomeSchema::visitProc(_proc);
52}
53
55{
56 DEBTRACE("VisitorSaveGuiSchema::writePresentation");
57 set<Node*> nodeSet = getAllNodes(_proc);
58
59 for (set<Node*>::iterator iter = nodeSet.begin(); iter != nodeSet.end(); ++iter)
60 {
61 Node* node = *iter;
64 YASSERT(item);
65 SceneNodeItem* inode = dynamic_cast<SceneNodeItem*>(item);
66 YASSERT(inode);
67 writeItem(_proc->getChildName(node), inode);
68 }
69
72 YASSERT(item);
73 SceneNodeItem* inode = dynamic_cast<SceneNodeItem*>(item);
74 YASSERT(inode);
75 writeItem("__ROOT__", inode);
76}
77
78 void VisitorSaveGuiSchema::writeItem(std::string name, SceneNodeItem* item)
79{
80 int depth = 1;
81 _out << indent(depth) << "<presentation";
82 _out << " name=\"" << name << "\"";
83 _out << " x=\"" << item->x() << "\"";
84 _out << " y=\"" << item->y() << "\"";
85 _out << " width=\"" << item->getWidth() << "\"";
86 _out << " height=\"" << item->getHeight() << "\"";
87 _out << " expanded=\"" << item->isExpanded() << "\"";
88 _out << " expx=\"" << item->getExpandedX() << "\"";
89 _out << " expy=\"" << item->getExpandedY() << "\"";
90 _out << " expWidth=\"" << item->getExpandedWidth() << "\"";
91 _out << " expHeight=\"" << item->getExpandedHeight() << "\"";
92 _out << " shownState=\"" << item->getShownState() << "\"";
93 _out << "/>" << endl;
94}
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
Definition: YacsTrace.hxx:59
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31
std::string getChildName(const Node *node) const
Base class for all nodes.
Definition: Node.hxx:70
Base class for all schema objects.
Definition: Proc.hxx:44
std::set< Node * > getAllNodes(ComposedNode *node)
std::map< YACS::ENGINE::Node *, YACS::HMI::SubjectNode * > _mapOfSubjectNode
Definition: guiContext.hxx:70
YACS::HMI::SubjectProc * getSubjectProc()
Definition: guiContext.hxx:52
static QtGuiContext * getQtCurrent()
std::map< YACS::HMI::Subject *, YACS::HMI::SceneItem * > _mapOfSceneItem
virtual void writeItem(std::string name, SceneNodeItem *item)