47 unsigned pos = this->indexOf(uid);
48 if (pos != mLayouts.size())
55 std::vector<QString> retval;
56 for (
unsigned i = 0; i < mLayouts.size(); ++i)
58 retval.push_back(mLayouts[i].getUid());
65 unsigned pos = this->indexOf(data.
getUid());
66 if (pos == mLayouts.size())
67 mLayouts.push_back(data);
77 for (LayoutDataVector::const_iterator iter = mLayouts.begin(); iter != mLayouts.end(); ++iter)
80 count = iter->getUid().toInt() + 1;
87 mLayouts.erase(mLayouts.begin() + indexOf(uid));
91 unsigned LayoutRepository::indexOf(
const QString uid)
const
93 for (
unsigned i = 0; i < mLayouts.size(); ++i)
95 if (mLayouts[i].getUid() == uid)
98 return mLayouts.size();
103 bool isLayout =
false;
104 for (
unsigned i = 0; i < mLayouts.size(); ++i)
106 if (uid == mLayouts[i].getUid())
113 bool isDefaultLayout = std::count(mDefaultLayouts.begin(), mDefaultLayouts.end(), uid);
116 if (isLayout && !isDefaultLayout)
127 this->blockSignals(
true);
129 QDomElement layouts = file.
getElement(
"layouts");
130 QDomNode layout = layouts.firstChild();
131 for (; !layout.isNull(); layout = layout.nextSibling())
133 if (layout.toElement().tagName() !=
"layout")
145 this->blockSignals(
false);
147 for (
unsigned i=0; i<custom.size(); ++i)
155 for (LayoutDataVector::iterator iter = mLayouts.begin(); iter != mLayouts.end(); ++iter)
157 if (!this->
isCustom(iter->getUid()))
160 QDomElement layoutNode = file.
getDocument().createElement(
"layout");
161 layoutsNode.
getElement().appendChild(layoutNode);
162 iter->addXml(layoutNode);
169 void LayoutRepository::addDefaults()
171 mDefaultLayouts.clear();
207 this->addDefault(layout);
213 layout.setView(1,
ptAXIAL, LayoutRegion(0, 3));
214 layout.setView(1,
ptCORONAL, LayoutRegion(1, 3));
215 layout.setView(1,
ptSAGITTAL, LayoutRegion(2, 3));
216 this->addDefault(layout);
222 layout.setView(1,
ptANYPLANE, LayoutRegion(0, 3));
223 layout.setView(1,
ptSIDEPLANE, LayoutRegion(1, 3));
224 this->addDefault(layout);
228 LayoutData layout =
LayoutData::create(
"LAYOUT_3D_ACS_SINGLE",
"3D ACS Connected", 3, 4);
230 layout.setView(0,
ptAXIAL, LayoutRegion(0, 3));
231 layout.setView(0,
ptCORONAL, LayoutRegion(1, 3));
232 layout.setView(0,
ptSAGITTAL, LayoutRegion(2, 3));
233 this->addDefault(layout);
237 LayoutData layout =
LayoutData::create(
"LAYOUT_3D_AD_SINGLE",
"3D AnyDual Connected", 2, 4);
239 layout.setView(0,
ptANYPLANE, LayoutRegion(0, 3));
240 layout.setView(0,
ptSIDEPLANE, LayoutRegion(1, 3));
241 this->addDefault(layout);
249 LayoutData layout =
LayoutData::create(
"LAYOUT_OBLIQUE_3DAnyDual_x1",
"3D Any Dual x1", 1, 3);
251 layout.setView(1,
ptANYPLANE, LayoutRegion(0, 1));
252 layout.setView(1,
ptSIDEPLANE, LayoutRegion(0, 2));
253 this->addDefault(layout);
256 LayoutData layout =
LayoutData::create(
"LAYOUT_OBLIQUE_3DAnyDual_x2",
"3D Any Dual x2", 2, 3);
258 layout.setView(1,
ptANYPLANE, LayoutRegion(0, 1));
259 layout.setView(1,
ptSIDEPLANE, LayoutRegion(1, 1));
260 layout.setView(2,
ptANYPLANE, LayoutRegion(0, 2));
261 layout.setView(2,
ptSIDEPLANE, LayoutRegion(1, 2));
262 this->addDefault(layout);
265 LayoutData layout =
LayoutData::create(
"LAYOUT_OBLIQUE_AnyDual_x3",
"Any Dual x3", 2, 3);
266 layout.setView(0,
ptANYPLANE, LayoutRegion(0, 0));
267 layout.setView(0,
ptSIDEPLANE, LayoutRegion(1, 0));
268 layout.setView(1,
ptANYPLANE, LayoutRegion(0, 1));
269 layout.setView(1,
ptSIDEPLANE, LayoutRegion(1, 1));
270 layout.setView(2,
ptANYPLANE, LayoutRegion(0, 2));
271 layout.setView(2,
ptSIDEPLANE, LayoutRegion(1, 2));
272 this->addDefault(layout);
280 LayoutData layout =
LayoutData::create(
"LAYOUT_ORTHOGONAL_3DACS_x1",
"3D ACS x1", 2, 2);
282 layout.setView(1,
ptAXIAL, LayoutRegion(0, 1));
283 layout.setView(1,
ptCORONAL, LayoutRegion(1, 0));
284 layout.setView(1,
ptSAGITTAL, LayoutRegion(1, 1));
285 this->addDefault(layout);
288 LayoutData layout =
LayoutData::create(
"LAYOUT_ORTHOGONAL_3DACS_x2",
"3D ACS x2", 3, 3);
290 layout.setView(1,
ptAXIAL, LayoutRegion(0, 1));
291 layout.setView(1,
ptCORONAL, LayoutRegion(1, 1));
292 layout.setView(1,
ptSAGITTAL, LayoutRegion(2, 1));
293 layout.setView(2,
ptAXIAL, LayoutRegion(0, 2));
294 layout.setView(2,
ptCORONAL, LayoutRegion(1, 2));
295 layout.setView(2,
ptSAGITTAL, LayoutRegion(2, 2));
296 this->addDefault(layout);
300 layout.setView(0,
ptAXIAL, LayoutRegion(0, 0));
301 layout.setView(0,
ptCORONAL, LayoutRegion(1, 0));
302 layout.setView(0,
ptSAGITTAL, LayoutRegion(2, 0));
303 layout.setView(1,
ptAXIAL, LayoutRegion(0, 1));
304 layout.setView(1,
ptCORONAL, LayoutRegion(1, 1));
305 layout.setView(1,
ptSAGITTAL, LayoutRegion(2, 1));
306 layout.setView(2,
ptAXIAL, LayoutRegion(0, 2));
307 layout.setView(2,
ptCORONAL, LayoutRegion(1, 2));
308 layout.setView(2,
ptSAGITTAL, LayoutRegion(2, 2));
309 this->addDefault(layout);
319 this->addDefault(layout);
322 LayoutData layout =
LayoutData::create(
"LAYOUT_US_Acquisition",
"US Acquisition", 2, 3);
323 layout.setView(0,
ptANYPLANE, LayoutRegion(1, 2, 1, 1));
326 this->addDefault(layout);
330 void LayoutRepository::addDefault(LayoutData data)
332 mDefaultLayouts.push_back(data.getUid());
333 mLayouts.push_back(data);
QString qstring_cast(const T &val)
void insert(const LayoutData &data)
ptCORONAL
a slice seen from the front of the patient
static LayoutData createHeader(QString uid, QString name)
ptAXIAL
a slice seen from the top of the patient
QDomElement getElement()
return the current element
ptSAGITTAL
a slice seen from the side of the patient
LayoutData get(const QString uid) const
bool isCustom(const QString &uid) const
void layoutChanged(QString uid)
void setView(int group, PLANE_TYPE type, LayoutRegion region)
void parseXml(QDomNode node)
load state from xml
void save(XmlOptionFile file)
QDomDocument getDocument()
returns the document
void load(XmlOptionFile file)
void erase(const QString uid)
void removeChildren()
remove all child nodes of the current element.
ptANYPLANE
a plane aligned with the tool base plane
std::vector< QString > getAvailable() const
static LayoutData create(QString uid, QString name, int rows, int cols)
Helper class for xml files used to store ssc/cx data.
ptSIDEPLANE
z-rotated 90* relative to anyplane (dual anyplane)
XmlOptionFile descend(QString element) const
step one level down in the xml tree
QString generateUid() const