void GuiInspectorDynamicField::_executeSelectedCallback() { ConsoleBaseType* type = mDynField->type; if ( type ) { mInspector->onFieldSelected_callback( mDynField->slotName, type->getTypeName(), "" ); } else { mInspector->onFieldSelected_callback( mDynField->slotName, "TypeDynamicField", "" ); } }
void XMLExport::exportBaseTypes() { mXML->pushNewElement("BaseTypes"); ConsoleBaseType *walk = ConsoleBaseType::getListHead(); while( walk != NULL ) { mXML->pushNewElement("BaseType"); mXML->setAttribute("name", walk->getTypeName()); mXML->setAttribute("id", avar("%i",walk->getTypeID())); mXML->setAttribute("size", avar("%i",walk->getTypeSize())); mXML->setAttribute("doc", walk->getDocString() ? walk->getDocString() : "" ); mXML->popElement(); // Basetype walk = walk->getListNext(); } mXML->popElement(); // Basetypes }
// ----------------------------------------------------------------------------- // Set attribute of top stack element to given value. // ----------------------------------------------------------------------------- void SimXMLDocument::setObjectAttributes(const char* objectID) { if( !objectID || !objectID[0] ) return; if(m_paNode.empty()) return; SimObject *pObject = Sim::findObject( objectID ); if( pObject == NULL ) return; const int iLastElement = m_paNode.size() - 1; TiXmlElement* pElement = m_paNode[iLastElement]; if(!pElement) return; char textbuf[1024]; TiXmlElement field( "Field" ); TiXmlElement group( "FieldGroup" ); pElement->SetAttribute( "Name", pObject->getName() ); // Iterate over our filed list and add them to the XML document... AbstractClassRep::FieldList fieldList = pObject->getFieldList(); AbstractClassRep::FieldList::iterator itr; for(itr = fieldList.begin(); itr != fieldList.end(); itr++) { if( itr->type == AbstractClassRep::DepricatedFieldType || itr->type == AbstractClassRep::StartGroupFieldType || itr->type == AbstractClassRep::EndGroupFieldType) continue; // Not an Array if(itr->elementCount == 1) { // get the value of the field as a string. ConsoleBaseType *cbt = ConsoleBaseType::getType(itr->type); const char *val = Con::getData(itr->type, (void *) (((const char *)pObject) + itr->offset), 0, itr->table, itr->flag); // Make a copy for the field check. if (!val) continue; FrameTemp<char> valCopy( dStrlen( val ) + 1 ); dStrcpy( (char *)valCopy, val ); if (!pObject->writeField(itr->pFieldname, valCopy)) continue; val = valCopy; expandEscape(textbuf, val); if( !pObject->writeField( itr->pFieldname, textbuf ) ) continue; field.SetValue( "Property" ); field.SetAttribute( "name", itr->pFieldname ); if( cbt != NULL ) field.SetAttribute( "type", cbt->getTypeName() ); else field.SetAttribute( "type", "TypeString" ); field.SetAttribute( "data", textbuf ); pElement->InsertEndChild( field ); continue; } } //// IS An Array //for(U32 j = 0; S32(j) < f->elementCount; j++) //{ // // If the start of a group create an element for the group and // // the our chache to it // const char *val = Con::getData(itr->type, (void *) (((const char *)pObject) + itr->offset), j, itr->table, itr->flag); // // Make a copy for the field check. // if (!val) // continue; // FrameTemp<char> valCopy( dStrlen( val ) + 1 ); // dStrcpy( (char *)valCopy, val ); // if (!pObject->writeField(itr->pFieldname, valCopy)) // continue; // val = valCopy; // // get the value of the field as a string. // ConsoleBaseType *cbt = ConsoleBaseType::getType(itr->type); // const char * dstr = Con::getData(itr->type, (void *)(((const char *)pObject) + itr->offset), 0, itr->table, itr->flag); // if(!dstr) // dstr = ""; // expandEscape(textbuf, dstr); // if( !pObject->writeField( itr->pFieldname, dstr ) ) // continue; // field.SetValue( "Property" ); // field.SetAttribute( "name", itr->pFieldname ); // if( cbt != NULL ) // field.SetAttribute( "type", cbt->getTypeName() ); // else // field.SetAttribute( "type", "TypeString" ); // field.SetAttribute( "data", textbuf ); // pElement->InsertEndChild( field ); //} }