int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); SimpleSwitch srcSwitch; // create simple switch QRemoteObjectHost srcNode(QUrl(QStringLiteral("local:replica"))); // create host node without Regsitry srcNode.enableRemoting(&srcSwitch); // enable remoting/Sharing return a.exec(); }
status_t copy_attributes(const entry_ref& source, const entry_ref& dest) { status_t err; unsigned char* buffer; buffer = new unsigned char[BUFFERLEN]; BNode srcNode(&source); if ((err = srcNode.InitCheck()) != B_NO_ERROR) return err; BNode destNode(&dest); if ((err = destNode.InitCheck()) != B_NO_ERROR) return err; char attrName[B_ATTR_NAME_LENGTH]; srcNode.RewindAttrs(); while ((err = srcNode.GetNextAttrName(attrName)) == B_NO_ERROR) { attr_info info; if ((err = srcNode.GetAttrInfo(attrName, &info)) != B_NO_ERROR) return err; ssize_t nRead; off_t offset = 0; while ((offset < info.size) && ((nRead = srcNode.ReadAttr(attrName, info.type, offset, buffer, BUFFERLEN)) > 0)) { err = destNode.WriteAttr(attrName, info.type, offset, buffer, nRead); if (err < 0) return err; offset += nRead; } } delete buffer; return B_OK; }
void Project::CopyTo(const wxString& new_path, const wxString& new_name, const wxString& description) { // first save the xml document to the destination folder wxString newFile = new_path + new_name + wxT(".project"); if ( !m_doc.Save( newFile ) ) { return; } // load the new xml and modify it wxXmlDocument doc; if ( !doc.Load( newFile ) ) { return; } // update the 'Name' property XmlUtils::UpdateProperty(doc.GetRoot(), wxT("Name"), new_name); // set description wxXmlNode *descNode(NULL); // update the description descNode = XmlUtils::FindFirstByTagName(doc.GetRoot(), wxT("Description")); if (!descNode) { descNode = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("Description")); doc.GetRoot()->AddChild(descNode); } XmlUtils::SetNodeContent(descNode, description); // Remove the 'Dependencies' wxXmlNode *deps = doc.GetRoot()->GetChildren(); while(deps) { if(deps->GetName() == wxT("Dependencies")) { doc.GetRoot()->RemoveChild(deps); delete deps; // restart the search from the begining deps = doc.GetRoot()->GetChildren(); } else { // try next child deps = deps->GetNext(); } } // add an empty deps node deps = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("Dependencies")); doc.GetRoot()->AddChild(deps); // Remove virtual folders wxXmlNode *vd = XmlUtils::FindFirstByTagName(doc.GetRoot(), wxT("VirtualDirectory")); while (vd) { doc.GetRoot()->RemoveChild( vd ); delete vd; vd = XmlUtils::FindFirstByTagName(doc.GetRoot(), wxT("VirtualDirectory")); } // add all files under this path std::vector<wxFileName> files; GetFiles(files, true); wxXmlNode *srcNode(NULL); wxXmlNode *headNode(NULL); wxXmlNode *rcNode(NULL); // copy the files to their new location for (size_t i=0; i<files.size(); i++) { wxFileName fn = files.at(i); wxCopyFile(fn.GetFullPath(), new_path + wxT("/") + fn.GetFullName()); wxXmlNode *file_node = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("File")); file_node->AddProperty(wxT("Name"), fn.GetFullName()); switch ( FileExtManager::GetType( fn.GetFullName() ) ) { case FileExtManager::TypeSourceC: case FileExtManager::TypeSourceCpp: // source file if ( !srcNode ) { srcNode = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("VirtualDirectory")); srcNode->AddProperty(wxT("Name"), wxT("src")); doc.GetRoot()->AddChild(srcNode); } srcNode->AddChild(file_node); break; case FileExtManager::TypeHeader: // header file if (!headNode) { headNode = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("VirtualDirectory")); headNode->AddProperty(wxT("Name"), wxT("include")); doc.GetRoot()->AddChild(headNode); } headNode->AddChild(file_node); break; default: // resource file if ( !rcNode ) { rcNode = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("VirtualDirectory")); rcNode->AddProperty(wxT("Name"), wxT("resources")); doc.GetRoot()->AddChild(rcNode); } rcNode->AddChild(file_node); break; } } doc.Save(newFile); }
void Helper4::addVariableBSDF( const std::string& param_name_as, const std::string& param_type_as, const std::string& param_name_maya ) { std::string param_value; const std::string plugName(param_name_maya); MString fullPlugName((m_nodename+"."+plugName).c_str()); int connected = liquidmaya::ShaderMgr::getSingletonPtr()->convertibleConnection(fullPlugName.asChar()); if( connected == 0 ) { if( isType("color", param_type_as) ) { MDoubleArray val; val.setLength(3); IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", val)); param_value = m_nodename+"_"+plugName; createColor3(m_assembly->colors(), param_value.c_str(), val[0], val[1], val[2]); } else if( isType("scalar", param_type_as) ) { MDoubleArray val; val.setLength(3); IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", val)); //val contains (r,b,g) value, but I only use val[0] for 'scalar' MString strVal0; strVal0.set(val[0]); param_value = strVal0.asChar(); } else { liquidMessage2(messageWarning,"only [color],[scalar] are handled for an unconnected plug in BSDF. " "the plug of %s is unhandled.", fullPlugName.asChar()); param_value = "unhandled"; } } else if(connected == 1)//the color plug is linked in. { if( isType("texture_instance", param_type_as) ) { MStringArray srcPlug; IfMErrorWarn(MGlobal::executeCommand("listConnections -source true -plugs true \""+fullPlugName+"\"", srcPlug)); assert(srcPlug.length()==1); MStringArray src; srcPlug[0].split('.',src); MString srcNode(src[0]); if( is2DTexture(srcNode) || is3DTexture(srcNode) ) { //visitFile(srcNode.asChar()); param_value = getTextureInstanceName(srcNode.asChar()); }else{ liquidMessage2(messageWarning,"type of [%s] is unhandled.(not 2Dtexture and 3Dtexture). [%s]", srcNode.asChar(), fullPlugName.asChar()); param_value = "unhandled"; } } else if( isType("bsdf", param_type_as) ) { //bsdf0 value MString srcBSDFModel; IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", srcBSDFModel)); MStringArray srcPlug; IfMErrorWarn(MGlobal::executeCommand("listConnections -source true -plugs true \""+fullPlugName+"\"", srcPlug)); assert(srcPlug.length()==1); MStringArray src; srcPlug[0].split('.',src); MString srcNode(src[0]); param_value = srcNode.asChar(); } else{ liquidMessage2(messageWarning,"only [texture_instance],[bsdf] are handled for a connected-in plug in BSDF." "the plug of %s is unhandled.", fullPlugName.asChar()); param_value = "unhandled"; } }else{// $(fullPlugName) is connected out // if $(fullPlugName) plug is connected out to "bsdf0"/"bsdf1" of a "bsdf_mix" node, // we also need to create this plug for appleseed // get destination node(s) MStringArray desNodePlug; IfMErrorWarn(MGlobal::executeCommand("listConnections -destination true -plugs true \""+fullPlugName+"\"", desNodePlug)); // check whether $(fullPlugName) is connected to a BSDF node bool isConnectedToA_BSDFMixNode = false; MString desPlug; for(std::size_t i = 0; i< desNodePlug.length(); ++i) { MStringArray des; desNodePlug[i].split('.',des); MString desNode(des[0]); //destination node BSDF type MString desNodeBSDFType; IfMErrorWarn(MGlobal::executeCommand( "getAttr \""+desNode+".rmanShaderType\"", desNodeBSDFType)); if(desNodeBSDFType == "bsdf_mix") { isConnectedToA_BSDFMixNode = true; desPlug = des[1]; } } // if $(fullPlugName) is connected out to "bsdf0"/"bsdf1" of a "bsdf_mix" node // we also need to create this plug for appleseed if( isConnectedToA_BSDFMixNode && (desPlug=="bsdf0" ||desPlug=="bsdf1") ) { if( isType("color", param_type_as) ) { MDoubleArray val; val.setLength(3); IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", val)); param_value = m_nodename+"_"+plugName; createColor3(m_assembly->colors(), param_value.c_str(), val[0], val[1], val[2]); } else if( isType("scalar", param_type_as) ) { MDoubleArray val; val.setLength(3); IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", val)); //val contains (r,b,g) value, but I only use val[0] for 'scalar' MString strVal0; strVal0.set(val[0]); param_value = strVal0.asChar(); } else if( isType("texture_instance", param_type_as) ) { MStringArray srcPlug; IfMErrorWarn(MGlobal::executeCommand("listConnections -source true -plugs true \""+fullPlugName+"\"", srcPlug)); assert(srcPlug.length()==1); MStringArray src; srcPlug[0].split('.',src); MString srcNode(src[0]); if( is2DTexture(srcNode) || is3DTexture(srcNode) ) { //visitFile(srcNode.asChar()); param_value = getTextureInstanceName(srcNode.asChar()); }else{ liquidMessage2(messageWarning,"type of [%s] is unhandled.(not 2Dtexture and 3Dtexture). [%s]", srcNode.asChar(), fullPlugName.asChar()); param_value = "unhandled"; } } else { liquidMessage2(messageWarning,"only [color],[scalar],[texture_instance] are handled for an connected-out plug in BSDF. " "the plug of %s is unhandled.", fullPlugName.asChar()); param_value = "unhandled"; } }//if( nodetype=="bsdf_mix" && (desPlug=="bsdf0" ||desPlug=="bsdf1") ) else { liquidMessage2(messageWarning,"[%s] is connected out. But not connected to brdf node, or not brdf0/brdf1 of a brdf node." " So I don't create the value for this plug.", fullPlugName.asChar()); } } // addVariableBSDF(param_name_as, param_value); }
void Helper4::addVariableSS(const std::string& param_name_as, const std::string& param_type_as, const std::string& param_name_maya ) { //std::string ss_name(getSurfaceShaderName(m_nodename,m_ss_model)); asr::ParamArray ss_params; { std::string param_value; const std::string plugName(param_name_maya); MString fullPlugName((m_nodename+"."+plugName).c_str()); int connected = liquidmaya::ShaderMgr::getSingletonPtr()->convertibleConnection(fullPlugName.asChar()); if(connected ==0) { if( isType("color", param_type_as) ) { MDoubleArray val; val.setLength(3); IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", val)); param_value = m_nodename+"_"+plugName; createColor3(m_assembly->colors(), param_value.c_str(), val[0], val[1], val[2]); } else if( isType("scalar", param_type_as) ) { MDoubleArray val; val.setLength(3); IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", val)); //val contains (r,b,g) value, but I only use val[0] for 'scalar' MString strVal0; strVal0.set(val[0]); param_value = strVal0.asChar(); } else if( isType("string", param_type_as)) { MString val; IfMErrorWarn(MGlobal::executeCommand("getAttr (\""+fullPlugName+"\")", val)); param_value = val.asChar(); } else { liquidMessage2(messageWarning,"only [color],[scalar],[string] are handled for an unconnected plug in Surface Shader. " "the plug of %s is unhandled.", fullPlugName.asChar()); param_value = "unhandled"; } } else if(connected == 1)//the plug is linked in. { if( isType("texture_instance", param_type_as) ) { MStringArray srcPlug; IfMErrorWarn(MGlobal::executeCommand("listConnections -source true -plugs true \""+fullPlugName+"\"", srcPlug)); assert(srcPlug.length()==1); MStringArray src; srcPlug[0].split('.',src); MString srcNode(src[0]); if( is2DTexture(srcNode) || is3DTexture(srcNode) ) { //visitFile(srcNode.asChar()); param_value = getTextureInstanceName(srcNode.asChar()); }else{ liquidMessage2(messageWarning,"only [texture2D],[texture3D] are handled for a texture_instance connected-in plug in Surface Shader." "the plug of %s is unhandled.", fullPlugName.asChar()); param_value = "unhandled"; } } else{ liquidMessage2(messageWarning,"only [texture_instance] is handled for a connected-in plug in Surface Shader." "the plug of %s is unhandled.", fullPlugName.asChar()); param_value = "unhandled"; } }else{ liquidMessage2(messageWarning,"[%s] is connected out.", fullPlugName.asChar()); } // addVariableSS(param_name_as, param_value); } }