XmlElement* ComponentTypeHandler::createXmlFor (Component* comp, const ComponentLayout* layout) { XmlElement* e = new XmlElement (getXmlTagName()); e->setAttribute ("name", comp->getName()); e->setAttribute ("id", String::toHexString (getComponentId (comp))); e->setAttribute ("memberName", comp->getProperties() ["memberName"].toString()); e->setAttribute ("virtualName", comp->getProperties() ["virtualName"].toString()); e->setAttribute ("explicitFocusOrder", comp->getExplicitFocusOrder()); RelativePositionedRectangle pos (getComponentPosition (comp)); pos.updateFromComponent (*comp, layout); pos.applyToXml (*e); SettableTooltipClient* const ttc = dynamic_cast <SettableTooltipClient*> (comp); if (ttc != 0 && ttc->getTooltip().isNotEmpty()) e->setAttribute ("tooltip", ttc->getTooltip()); for (int i = 0; i < colours.size(); ++i) { if (comp->isColourSpecified (colours[i]->colourId)) { e->setAttribute (colours[i]->xmlTagName, colourToHex (comp->findColour (colours[i]->colourId))); } } return e; }
bool ComponentTypeHandler::restoreFromXml (const XmlElement& xml, Component* comp, const ComponentLayout* layout) { jassert (xml.hasTagName (getXmlTagName())); if (! xml.hasTagName (getXmlTagName())) return false; comp->setName (xml.getStringAttribute ("name", comp->getName())); setComponentId (comp, xml.getStringAttribute ("id").getHexValue64()); comp->getProperties().set ("memberName", xml.getStringAttribute ("memberName")); comp->getProperties().set ("virtualName", xml.getStringAttribute ("virtualName")); comp->setExplicitFocusOrder (xml.getIntAttribute ("explicitFocusOrder")); RelativePositionedRectangle currentPos (getComponentPosition (comp)); currentPos.updateFromComponent (*comp, layout); RelativePositionedRectangle rpr; rpr.restoreFromXml (xml, currentPos); jassert (layout != 0); setComponentPosition (comp, rpr, layout); SettableTooltipClient* const ttc = dynamic_cast <SettableTooltipClient*> (comp); if (ttc != 0) ttc->setTooltip (xml.getStringAttribute ("tooltip")); for (int i = 0; i < colours.size(); ++i) { const String col (xml.getStringAttribute (colours[i]->xmlTagName, String::empty)); if (col.isNotEmpty()) { comp->setColour (colours[i]->colourId, Colour (col.getHexValue32())); } } return true; }
void LoadILLSANS::moveDetectorVertical(double shift, const std::string &componentName) { API::IAlgorithm_sptr mover = createChildAlgorithm("MoveInstrumentComponent"); V3D pos = getComponentPosition(componentName); try { mover->setProperty<MatrixWorkspace_sptr>("Workspace", m_localWorkspace); mover->setProperty("ComponentName", componentName); mover->setProperty("X", pos.X()); mover->setProperty("Y", shift); mover->setProperty("Z", pos.Z()); mover->setProperty("RelativePosition", false); mover->executeAsChildAlg(); g_log.debug() << "Moving component '" << componentName << "' to Y = " << shift << '\n'; } catch (std::exception &e) { g_log.error() << "Cannot move the component '" << componentName << "' to Y = " << shift << '\n'; g_log.error() << e.what() << '\n'; } }