Example #1
0
    XmlNodeRef State_t::SaveToXmlNode(Agent* pAgent) const
    {
        XmlNodeRef xmlInfo = CreateXmlNode("AgentState");

        CTextNode node(xmlInfo);

        CSerializationID  attrId("agentType");
        node.setAttr(attrId, this->m_agentType);

        if (pAgent)
        {
            CSerializationID  membersId("members");
            ISerializableNode* membersNode = node.newChild(membersId);
            pAgent->Save(membersNode);
        }

        this->m_vars.Save(&node);

        if (this->m_bt)
        {
            this->m_bt->Save(&node);
        }

        return xmlInfo;
    }
Example #2
0
	bool State_t::SaveToFile(IFile* file) const
	{
		XmlNodeRef xmlInfo = CreateXmlNode("AgentState");

        CTextNode node(xmlInfo);
        
		this->m_vars.Save(&node);

        return xmlInfo->saveToFile(file);
	}
Example #3
0
struct sCbData * sQtGenerateDesignerFile(sXformsNode *head,xmlDoc *modelDocPtr,CallBackInterfaceFunction func )
{
    xmlDoc *doc = NULL;
    xmlNode *root_node = NULL;
    xmlNode *current_node = NULL;
    /* required for every window */
    doc = xmlNewDoc(BAD_CAST"1.0");  // create a new document
    root_node = xmlNewNode(NULL,BAD_CAST"ui");  // root node
    CreateNodeAttribute(root_node,"version","4.0");
    xmlDocSetRootElement(doc, root_node); // set root node
    xmlNode *classname = Create1ObjectNode(root_node,"class", "SimpleUiQt"); // create main window
    xmlNode * classwidget = Create1WidgetNodeWithStringProp(root_node,"classwidget","QWidget","windowTitle",sQT_MAIN_WINDOW_NAME);
    Create1GeometryProp(classwidget,"0","0",QT_WINDOW_WIDTH, QT_WINDOW_HEIGHT);
    xmlNode *main_layout = CreateLayout(classwidget,"QVBoxLayout","verticalLayout_2");
     xmlNode *ContentItem = CreateItemNode(main_layout,0,0,0);
      xmlNode *gridLayout = CreateLayout(ContentItem,"QGridLayout","gridLayout_1");
       xmlNode *lowerBarItem = CreateItemNode(main_layout,0,0,0);
       xmlNode *horizontalLayout2 = CreateLayout(lowerBarItem,"QHBoxLayout","horizontalLayout2");
       xmlNode *horizontalLayout2Item = CreateItemNode(horizontalLayout2,0,0,0);
       xmlNode *horizontalLayout = CreateLayout(horizontalLayout2Item,"QHBoxLayout","horizontalLayout");
       xmlNode *spacer = CreateSpacer(horizontalLayout,"horizontalSpacer","Qt::Horizontal","40","20", 0,0 );
       xmlNode *DoneBtnItem = CreateItemNode(horizontalLayout,0,0,0);
       xmlNode *DoneBtn = Create1WidgetNodeWithStringProp(DoneBtnItem,sQT_CLOSE_BUTTON,"QPushButton","text","Done");
    
    xmlNode *layoutdefault = CreateXmlNode(NULL,"layoutdefault");
    CreateNodeAttribute(layoutdefault,"spacing","6");
    CreateNodeAttribute(layoutdefault,"margin","11");
    xmlNode *resources = CreateXmlNode(NULL,"resources");

    struct sCbData *temp = (struct sCbData  *)0;
    sQtGenerateUIFromTree(head,gridLayout,&temp,modelDocPtr,func);
    // main content area
    xmlSaveFormatFileEnc(sQT_UI_FILE, doc, "UTF-8", 1); // save file
    xmlFreeDoc(doc);  // free document
    xmlCleanupParser();  //clean parse
    //AppendNode(&temp,"NULL-REFERENCE", "NULL-INITVAL","NULL-VAL",sQT_CLOSE_BUTTON,"QPushButton",modelDocPtr,func);
    return temp;
}
Example #4
0
	bool State_t::LoadFromFile(const char* fileName)
	{
		XmlNodeRef xmlInfo = CreateXmlNode("AgentState");

		CTextNode node(xmlInfo);

		if (node.LoadFromFile(fileName))
		{
			this->m_vars.Load(&node);

			return true;
		}

		return false;
	}
Example #5
0
    bool State_t::LoadFromFile(IFile* file, Agent* pAgent)
    {
        XmlNodeRef xmlInfo = CreateXmlNode("AgentState");

        CTextNode node(xmlInfo);

        if (node.LoadFromFile(file))
        {
            this->LoadFromXmlNode(node, pAgent);

            return true;
        }

        return false;
    }
Example #6
0
	bool State_t::SaveToFile(const char* fileName) const
	{
		XmlNodeRef xmlInfo = CreateXmlNode("AgentState");

        CTextNode node(xmlInfo);
		
		this->m_vars.Save(&node);

		if (this->m_bt)
		{
			this->m_bt->Save(&node);
		}

        CFileSystem::MakeSureDirectoryExist(fileName);
        return xmlInfo->saveToFile(fileName);
	}
Example #7
0
XmlNodeRef cloneXmlNodeFrom(xml_node<>* xmlnode)
{
    XmlNodeRef node = CreateXmlNode(xmlnode->name());

    for (xml_attribute<>* attr = xmlnode->first_attribute();
            attr; attr = attr->next_attribute())
    {
        node->setAttrText(attr->name(), attr->value());
    }

    for (xml_node<>* subNode = xmlnode->first_node(); subNode; subNode = subNode->next_sibling())
    {
        XmlNodeRef sub = cloneXmlNodeFrom(subNode);
        node->addChild(sub);
    }

    return node;
}
Example #8
0
    behaviac::CMethodBase* Action::LoadMethod(const char* value_)
    {
        //Self.test_ns::AgentActionTest::Action2(0)
        char agentIntanceName[kNameLength];
        char agentClassName[kNameLength];
        char methodName[kNameLength];

        const char* pBeginP = ParseMethodNames(value_, agentIntanceName, agentClassName, methodName);

        //propertyName = FormatString("%s::%s", agentClassName, methodName);
        CStringID agentClassId(agentClassName);
        CStringID methodId(methodName);

        behaviac::CMethodBase* method = Agent::CreateMethod(agentClassId, methodId);

        if (!method)
        {
            BEHAVIAC_LOGWARNING("No Method %s::%s registered\n", agentClassName, methodName);
            BEHAVIAC_ASSERT(0, "No Method %s::%s registered\n", agentClassName, methodName);
        }
        else
        {
            //if (Agent::IsInstanceNameRegistered(agentIntanceName))
            {
                method->SetInstanceNameString(agentIntanceName, PT_INSTANCE);
            }

            BEHAVIAC_ASSERT(method, "No Method %s::%s registered", agentClassName, methodName);
            const char* params = pBeginP;

            BEHAVIAC_ASSERT(params[0] == '(');

            behaviac::vector<behaviac::string> tokens;

            {
                size_t len = strlen(params);

                BEHAVIAC_ASSERT(params[len - 1] == ')');

                behaviac::string text = behaviac::string(params + 1, len - 2);
                //behaviac::StringUtils::SplitIntoArray(text, ",", tokens);
                ParseForParams(text, tokens);
            }

            if (tokens.size() > 0)
            {
                XmlNodeRef xmlNode = CreateXmlNode("Method");

                for (uint32_t i = 0; i < tokens.size(); ++i)
                {
                    const behaviac::string& token = tokens[i];
					char attriName[1024];
					string_sprintf(attriName, "param%d", i + 1);
                    xmlNode->setAttr(attriName, token);
                }

                CTextNode node(xmlNode);
                method->LoadFromXML(0, node);
            }
        }

        return method;
    }
Example #9
0
        XmlNodeRef MakeXmlNodeStruct(const char* str, const behaviac::string& typeNameT)
        {
            behaviac::string src = str;

            //{color=0;id=;type={bLive=false;name=0;weight=0;};}
            //the first char is '{'
            //the last char is '}'
            behaviac::string::size_type posCloseBrackets = behaviac::StringUtils::Private::SkipPairedBrackets(src);
            BEHAVIAC_ASSERT(posCloseBrackets != behaviac::string::npos);

            bool bIsStructMember = false;
            XmlNodeRef xmlNode = CreateXmlNode(typeNameT.c_str());

            //{color=0;id=;type={bLive=false;name=0;weight=0;};}
			//{color=0;id=;type={bLive=false;name=0;weight=0;};transit_points=3:{coordX=0;coordY=0;}|{coordX=0;coordY=0;}|{coordX=0;coordY=0;};}
            behaviac::string::size_type posBegin = 1;
            behaviac::string::size_type posEnd = src.find_first_of(';', posBegin);

            while (posEnd != behaviac::string::npos)
            {
                BEHAVIAC_ASSERT(src[posEnd] == ';');

                //the last one might be empty
                if (posEnd > posBegin)
                {
                    behaviac::string::size_type posEqual = src.find_first_of('=', posBegin);
                    BEHAVIAC_ASSERT(posEqual > posBegin);

					size_t length = posEqual - posBegin;
                    behaviac::string memmberName = src.substr(posBegin, length);
                    behaviac::string memmberValue;
                    char c = src[posEqual + 1];

                    if (c != '{')
                    {
						//to check if it is an array
						if (IsArrayString(src, posEqual + 1, posEnd))
						{
							length = posEnd - posEqual - 1;
							memmberValue = src.substr(posEqual + 1, length);
						}
						else
						{
							length = posEnd - posEqual - 1;
							memmberValue = src.substr(posEqual + 1, length);
						}
                    }
                    else
                    {
                        bIsStructMember = true;

                        const char* pStructBegin = src.c_str();
                        pStructBegin += posEqual + 1;
                        const char* posCloseBrackets_ = behaviac::StringUtils::Private::SkipPairedBrackets(pStructBegin);
                        length = posCloseBrackets_ - pStructBegin + 1;

                        memmberValue = src.substr(posEqual + 1, length);

                        posEnd = posEqual + 1 + length;
                    }

                    if (bIsStructMember)
                    {
                        XmlNodeRef memberNode = MakeXmlNodeStruct(memmberValue.c_str(), memmberName);

                        xmlNode->addChild(memberNode);
                    }
                    else
                    {
                        //behaviac::string memmberNameFull = typeNameT + "::" + memmberName;
                        //xmlNode->setAttr(memmberNameFull.c_str(), memmberValue.c_str());
                        xmlNode->setAttr(memmberName.c_str(), memmberValue.c_str());
                    }
                }

                bIsStructMember = false;

                //skip ';'
                posBegin = posEnd + 1;

                //{color=0;id=;type={bLive=false;name=0;weight=0;};transit_points=3:{coordX=0;coordY=0;}|{coordX=0;coordY=0;}|{coordX=0;coordY=0;};}
                posEnd = src.find_first_of(';', posBegin);

                if (posEnd > posCloseBrackets)
                {
                    break;
                }
            }

            return xmlNode;
        }