void OSDoubleEdit::onEditingFinished() { if (m_modelObject) { std::string str = this->text().toStdString(); boost::regex autore("[aA][uU][tT][oO]"); ModelObject modelObject = m_modelObject.get(); if (str.empty()) { modelObject.resetAttribute(m_property); } else if (boost::regex_search(str,autore)) { if (m_isAutosizedProperty) { if (modelObject.isSettableAttribute(*m_isAutosizedProperty)) { modelObject.setAttribute(*m_isAutosizedProperty,true); } else { modelObject.resetAttribute(m_property); } } if (m_isAutocalculatedProperty) { if (modelObject.isSettableAttribute(*m_isAutocalculatedProperty)) { modelObject.setAttribute(*m_isAutocalculatedProperty,true); } else { modelObject.resetAttribute(m_property); } } } else { try { double value = boost::lexical_cast<double>(str); setPrecision(str); modelObject.setAttribute(m_property,value); } catch (...) {} } } }