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;
}
Exemple #2
0
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;
}
Exemple #3
0
RTObject * RTType::newInstance(const std::string &name)
{
	const RTType *type = getTypeByName( name );

	if ( type == NULL )
	{
		return NULL;
	}
	else
	{
		return type->newInstance();
	}
}
Exemple #4
0
const RTType * RTType::readType(SENode &node)
{
	std::string name;
	node[0]  >>  name;
	return getTypeByName( name );
}
Exemple #5
0
const RTType * RTType::readType(FILE *f)
{
	std::string name = readString( f );
	return getTypeByName( name );
}