bool PropertiesHandler::handleURI(URI& uri) { if (uri.action != "properties") return false; MetadataItemPropertiesPanel* parent = dynamic_cast< MetadataItemPropertiesPanel*>(getParentWindow(uri)); if (!parent) return true; DatabasePtr db = parent->getObservedObject()->getDatabase(); if (!db) return true; NodeType n = getTypeByName(uri.getParam("object_type")); MetadataItem* object = db->findByNameAndType(n, uri.getParam("object_name")); if (!object) { ::wxMessageBox( _("Cannot find destination object\nThis should never happen."), _("Error"), wxICON_ERROR); return true; } if (uri.getParam("target") == "new_tab") { MetadataItemPropertiesFrame::openNewPropertyPageInTab(object, parent->getParentFrame()); } else if (uri.getParam("target") == "new") MetadataItemPropertiesFrame::openNewPropertyPageInFrame(object); else MetadataItemPropertiesFrame::showPropertyPage(object); return true; }
bool TParam::addChild(const TParam &n) { if (n.name.empty()) { std::cerr << "Error in " << __PRETTY_FUNCTION__ << ": Empty names are not allowed\n"; return false; } if (n.name.find(" ") != std::string::npos) { std::cerr << "Error in " << __PRETTY_FUNCTION__ << ": White spaces in names are not allowed. Got '" << n.name << "'.\n"; return false; } if (n.name.find("/") != std::string::npos) { std::cerr << "Error in " << __PRETTY_FUNCTION__ << ": Slashes '/' in names are not allowed. Got '" << n.name << "'.\n"; return false; } if (getTypeByName(n.name) != Invalid) { std::cerr << "Error in " << __PRETTY_FUNCTION__ << ": Names of Variant Types are not allowed. Got '" << n.name << "'.\n"; return false; } if (getType() != Invalid) { std::cerr << "Error in " << __PRETTY_FUNCTION__ << ": Trying to add a child to leaf node.\n"; return false; } if (children.count(n.name) > 0) { if (children[n.name]->getType() != n.getType()) { std::cerr << "Error in " << __PRETTY_FUNCTION__ << ": Trying to replace Param " << n.name << " of type " << children[n.name]->getTypeName() << " by type " << n.getTypeName() << "\n"; return false; } delete children[n.name]; } children[n.name] = new TParam(n); children[n.name]->parent = this; return true; }
RTObject * RTType::newInstance(const std::string &name) { const RTType *type = getTypeByName( name ); if ( type == NULL ) { return NULL; } else { return type->newInstance(); } }
const RTType * RTType::readType(SENode &node) { std::string name; node[0] >> name; return getTypeByName( name ); }
const RTType * RTType::readType(FILE *f) { std::string name = readString( f ); return getTypeByName( name ); }