/*! * Returns a QVersitDocumentWriter that can encode a QVersitDocument of type \a type. * The caller is responsible for deleting the object. */ QVersitDocumentWriter* QVersitWriterPrivate::writerForType(QVersitDocument::VersitType type, const QVersitDocument& document) { switch (type) { case QVersitDocument::InvalidType: { // Neither startWriting or the document provided the type. // Need to infer the type from the document's componentType QString componentType(document.componentType()); if (componentType == QLatin1String("VCARD")) { return new QVCard30Writer(QVersitDocument::VCard30Type); } else if (componentType == QLatin1String("VCALENDAR") || componentType == QLatin1String("VEVENT") || componentType == QLatin1String("VTODO") || componentType == QLatin1String("VJOURNAL") || componentType == QLatin1String("VTIMEZONE") || componentType == QLatin1String("VALARM")) { return new QVCard30Writer(QVersitDocument::ICalendar20Type); } else { return new QVCard30Writer(QVersitDocument::VCard30Type); } } case QVersitDocument::VCard21Type: return new QVCard21Writer(type); case QVersitDocument::VCard30Type: return new QVCard30Writer(type); default: return new QVCard30Writer(type); } }
std::string mtsComponentViewer::GetComponentInUDrawGraphFormat(const std::string &processName, const std::string &componentName, const mtsComponentState &componentState) const { std::string buffer("graph(update([new_node(\""); buffer.append(processName + ":" + componentName); buffer.append("\",\""); std::string componentType("USER"); if (mtsManagerComponentBase::IsManagerComponentServer(componentName) || mtsManagerComponentBase::IsManagerComponentClient(componentName)) componentType = "SYSTEM"; #if CISST_MTS_HAS_ICE else if (ShowProxies && mtsManagerGlobal::IsProxyComponent(componentName)) componentType = "PROXY"; #endif buffer.append(componentType); buffer.append("\",[a(\"OBJECT\",\""); buffer.append(componentName); buffer.append("\"), a(\"INFO\", \""); buffer.append(processName + ":" + componentName); buffer.append("\"), "); buffer.append(GetStateInUDrawGraphFormat(componentState)); std::vector<std::string> requiredList, providedList; ManagerComponentServices->GetNamesOfInterfaces(processName, componentName, requiredList, providedList); if ((componentType == "USER") || (requiredList.size() > 0) || (providedList.size() > 0)) { buffer.append(", m(["); // Only allow Start/Stop of user components (but not this component) if ((componentType == "USER") && (componentName != GetName())) buffer.append("menu_entry(\"start\", \"Start\"), menu_entry(\"stop\", \"Stop\"), blank"); MakeInterfaceList(buffer, "Required", requiredList); MakeInterfaceList(buffer, "Provided", providedList); buffer.append("])"); } buffer.append("])],[]))\n"); return buffer; }
bool EntityApp<E>::installPyModules() { Entities<E>::installScript(NULL); //Entity::installScript(g_script.getModule()); pEntities_ = new Entities<E>(); registerPyObjectToScript("entities", pEntities_); // 安装入口模块 PyObject *entryScriptFileName = NULL; if(componentType() == BASEAPP_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getBaseApp(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } else if(componentType() == CELLAPP_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getCellApp(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } if(entryScriptFileName != NULL) { entryScript_ = PyImport_Import(entryScriptFileName); SCRIPT_ERROR_CHECK(); S_RELEASE(entryScriptFileName); if(entryScript_.get() == NULL) { return false; } } // 添加pywatcher支持 if(!initializePyWatcher(&this->getScript())) return false; // 添加globalData, globalBases支持 pGlobalData_ = new GlobalDataClient(DBMGR_TYPE, GlobalDataServer::GLOBAL_DATA); registerPyObjectToScript("globalData", pGlobalData_); onInstallPyModules(); return true; }
std::vector<HVACComponent> uncontrolledComponents(const PlantLoop & plantLoop) { std::vector<HVACComponent> result; for( const auto & comp : subsetCastVector<HVACComponent>(plantLoop.supplyComponents()) ) { if( componentType(comp) == ComponentType::BOTH ) { result.push_back(operationSchemeComponent(comp)); } } return result; }
boost::optional<IdfObject> ForwardTranslator::translatePlantEquipmentOperationSchemes( PlantLoop & plantLoop ) { IdfObject operationSchemes(IddObjectType::PlantEquipmentOperationSchemes); m_idfObjects.push_back(operationSchemes); operationSchemes.setName(plantLoop.name().get() + " Operation Schemes"); // Lambda does what the name suggests, create setpoint operation schemes. // This is for any component that has a setpoint manager on its outlet node auto createSetpointOperationScheme = [&](PlantLoop & plantLoop) { const auto & t_setpointComponents = setpointComponents(plantLoop); if( ! t_setpointComponents.empty() ) { Schedule alwaysOn = plantLoop.model().alwaysOnDiscreteSchedule(); IdfObject setpointOperation(IddObjectType::PlantEquipmentOperation_ComponentSetpoint); setpointOperation.setName(plantLoop.name().get() + " Setpoint Operation Scheme"); m_idfObjects.push_back(setpointOperation); setpointOperation.clearExtensibleGroups(); IdfExtensibleGroup eg = operationSchemes.pushExtensibleGroup(); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType,setpointOperation.iddObject().name()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName,setpointOperation.name().get()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeScheduleName,alwaysOn.name().get()); for( auto setpointComponent : t_setpointComponents ) { boost::optional<IdfObject> _idfObject = translateAndMapModelObject(setpointComponent); OS_ASSERT(_idfObject); IdfExtensibleGroup eg = setpointOperation.pushExtensibleGroup(); eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::EquipmentObjectType,_idfObject->iddObject().name()); eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::EquipmentName,_idfObject->name().get()); if( const auto & t_inletNode = inletNode(plantLoop,setpointComponent) ) { eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::DemandCalculationNodeName,t_inletNode->name().get()); } if( const auto & t_outletNode = outletNode(plantLoop,setpointComponent) ) { eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::SetpointNodeName,t_outletNode->name().get()); } if( auto value = flowrate(setpointComponent) ) { eg.setDouble(PlantEquipmentOperation_ComponentSetpointExtensibleFields::ComponentFlowRate,value.get()); } else { eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::ComponentFlowRate,"Autosize"); } auto t_componentType = componentType(setpointComponent); switch(t_componentType) { case ComponentType::HEATING : eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::OperationType,"Heating"); break; case ComponentType::COOLING : eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::OperationType,"Cooling"); break; default : eg.setString(PlantEquipmentOperation_ComponentSetpointExtensibleFields::OperationType,"Dual"); break; } } } }; Schedule alwaysOn = plantLoop.model().alwaysOnDiscreteSchedule(); bool applyDefault = true; // If any operation schemes are defined in the model then don't apply default operation schemes if( auto coolingLoadScheme = plantLoop.plantEquipmentOperationCoolingLoad() ) { auto _scheme = translateAndMapModelObject(coolingLoadScheme.get()); OS_ASSERT(_scheme); auto eg = operationSchemes.pushExtensibleGroup(); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType,_scheme->iddObject().name()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName,_scheme->name().get()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeScheduleName,alwaysOn.name().get()); applyDefault = false; } if( auto heatingLoadScheme = plantLoop.plantEquipmentOperationHeatingLoad() ) { auto _scheme = translateAndMapModelObject(heatingLoadScheme.get()); OS_ASSERT(_scheme); auto eg = operationSchemes.pushExtensibleGroup(); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType,_scheme->iddObject().name()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName,_scheme->name().get()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeScheduleName,alwaysOn.name().get()); applyDefault = false; } if( auto primaryScheme = plantLoop.primaryPlantEquipmentOperationScheme() ) { auto _scheme = translateAndMapModelObject(primaryScheme.get()); OS_ASSERT(_scheme); auto eg = operationSchemes.pushExtensibleGroup(); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType,_scheme->iddObject().name()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName,_scheme->name().get()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeScheduleName,alwaysOn.name().get()); createSetpointOperationScheme(plantLoop); applyDefault = false; } if( applyDefault ) { // If we get here then there must not be any operation schemes defined in the model // and we should go ahead and create default schemes. const auto & t_heatingComponents = heatingComponents( plantLoop ); if( ! t_heatingComponents.empty() ) { IdfObject heatingOperation(IddObjectType::PlantEquipmentOperation_HeatingLoad); heatingOperation.setName(plantLoop.name().get() + " Heating Operation Scheme"); m_idfObjects.push_back(heatingOperation); heatingOperation.clearExtensibleGroups(); IdfObject plantEquipmentList(IddObjectType::PlantEquipmentList); plantEquipmentList.setName(plantLoop.name().get() + " Heating Equipment List"); plantEquipmentList.clearExtensibleGroups(); m_idfObjects.push_back(plantEquipmentList); IdfExtensibleGroup eg = heatingOperation.pushExtensibleGroup(); eg.setDouble(PlantEquipmentOperation_HeatingLoadExtensibleFields::LoadRangeLowerLimit,0.0); eg.setDouble(PlantEquipmentOperation_HeatingLoadExtensibleFields::LoadRangeUpperLimit,1E9); eg.setString(PlantEquipmentOperation_HeatingLoadExtensibleFields::RangeEquipmentListName,plantEquipmentList.name().get()); eg = operationSchemes.pushExtensibleGroup(); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType,heatingOperation.iddObject().name()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName,heatingOperation.name().get()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeScheduleName,alwaysOn.name().get()); for( auto heatingComponent : t_heatingComponents ) { if( const auto & idfObject = translateAndMapModelObject(heatingComponent) ) { IdfExtensibleGroup eg = plantEquipmentList.pushExtensibleGroup(); eg.setString(PlantEquipmentListExtensibleFields::EquipmentObjectType,idfObject->iddObject().name()); eg.setString(PlantEquipmentListExtensibleFields::EquipmentName,idfObject->name().get()); } } } const auto & t_coolingComponents = coolingComponents( plantLoop ); if( ! t_coolingComponents.empty() ) { IdfObject coolingOperation(IddObjectType::PlantEquipmentOperation_CoolingLoad); coolingOperation.setName(plantLoop.name().get() + " Cooling Operation Scheme"); m_idfObjects.push_back(coolingOperation); coolingOperation.clearExtensibleGroups(); IdfObject plantEquipmentList(IddObjectType::PlantEquipmentList); plantEquipmentList.setName(plantLoop.name().get() + " Cooling Equipment List"); plantEquipmentList.clearExtensibleGroups(); m_idfObjects.push_back(plantEquipmentList); IdfExtensibleGroup eg = coolingOperation.pushExtensibleGroup(); eg.setDouble(PlantEquipmentOperation_CoolingLoadExtensibleFields::LoadRangeLowerLimit,0.0); eg.setDouble(PlantEquipmentOperation_CoolingLoadExtensibleFields::LoadRangeUpperLimit,1E9); eg.setString(PlantEquipmentOperation_CoolingLoadExtensibleFields::RangeEquipmentListName,plantEquipmentList.name().get()); eg = operationSchemes.pushExtensibleGroup(); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType,coolingOperation.iddObject().name()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName,coolingOperation.name().get()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeScheduleName,alwaysOn.name().get()); for( auto coolingComponent : t_coolingComponents ) { if( const auto & idfObject = translateAndMapModelObject(coolingComponent) ) { IdfExtensibleGroup eg = plantEquipmentList.pushExtensibleGroup(); eg.setString(PlantEquipmentListExtensibleFields::EquipmentObjectType,idfObject->iddObject().name()); eg.setString(PlantEquipmentListExtensibleFields::EquipmentName,idfObject->name().get()); } } } const auto & t_uncontrolledComponents = uncontrolledComponents( plantLoop ); if( ! t_uncontrolledComponents.empty() ) { IdfObject uncontrolledOperation(IddObjectType::PlantEquipmentOperation_Uncontrolled); uncontrolledOperation.setName(plantLoop.name().get() + " Uncontrolled Operation Scheme"); m_idfObjects.push_back(uncontrolledOperation); uncontrolledOperation.clearExtensibleGroups(); IdfObject plantEquipmentList(IddObjectType::PlantEquipmentList); plantEquipmentList.setName(plantLoop.name().get() + " Uncontrolled Equipment List"); plantEquipmentList.clearExtensibleGroups(); m_idfObjects.push_back(plantEquipmentList); uncontrolledOperation.setString(PlantEquipmentOperation_UncontrolledFields::EquipmentListName,plantEquipmentList.name().get()); auto eg = operationSchemes.pushExtensibleGroup(); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeObjectType,uncontrolledOperation.iddObject().name()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeName,uncontrolledOperation.name().get()); eg.setString(PlantEquipmentOperationSchemesExtensibleFields::ControlSchemeScheduleName,alwaysOn.name().get()); for( auto uncontrolledComponent : t_uncontrolledComponents ) { if( const auto & idfObject = translateAndMapModelObject(uncontrolledComponent) ) { IdfExtensibleGroup eg = plantEquipmentList.pushExtensibleGroup(); eg.setString(PlantEquipmentListExtensibleFields::EquipmentObjectType,idfObject->iddObject().name()); eg.setString(PlantEquipmentListExtensibleFields::EquipmentName,idfObject->name().get()); } } } createSetpointOperationScheme(plantLoop); } return operationSchemes; }
bool EntityApp<E>::installPyModules() { Entities<E>::installScript(NULL); //Entity::installScript(g_script.getModule()); pEntities_ = new Entities<E>(); registerPyObjectToScript("entities", pEntities_); // 安装入口模块 PyObject *entryScriptFileName = NULL; if(componentType() == BASEAPP_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getBaseApp(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } else if(componentType() == CELLAPP_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getCellApp(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } // 添加pywatcher支持 if(!initializePyWatcher(&this->getScript())) return false; // 添加globalData, globalBases支持 pGlobalData_ = new GlobalDataClient(DBMGR_TYPE, GlobalDataServer::GLOBAL_DATA); registerPyObjectToScript("globalData", pGlobalData_); // 注册创建entity的方法到py // 向脚本注册app发布状态 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), publish, __py_getAppPublish, METH_VARARGS, 0); // 注册设置脚本输出类型 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), scriptLogType, __py_setScriptLogType, METH_VARARGS, 0); // 获得资源全路径 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), getResFullPath, __py_getResFullPath, METH_VARARGS, 0); // 是否存在某个资源 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), hasRes, __py_hasRes, METH_VARARGS, 0); // 打开一个文件 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), open, __py_kbeOpen, METH_VARARGS, 0); // 列出目录下所有文件 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), listPathRes, __py_listPathRes, METH_VARARGS, 0); // 匹配相对路径获得全路径 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), matchPath, __py_matchPath, METH_VARARGS, 0); // 获取watcher值 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), getWatcher, __py_getWatcher, METH_VARARGS, 0); // 获取watcher目录 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), getWatcherDir, __py_getWatcherDir, METH_VARARGS, 0); if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_NORMAL", log4cxx::ScriptLevel::SCRIPT_INT)) { ERROR_MSG( "EntityApp::installPyModules: Unable to set KBEngine.LOG_TYPE_NORMAL.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_INFO", log4cxx::ScriptLevel::SCRIPT_INFO)) { ERROR_MSG( "EntityApp::installPyModules: Unable to set KBEngine.LOG_TYPE_INFO.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_ERR", log4cxx::ScriptLevel::SCRIPT_ERR)) { ERROR_MSG( "EntityApp::installPyModules: Unable to set KBEngine.LOG_TYPE_ERR.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_DBG", log4cxx::ScriptLevel::SCRIPT_DBG)) { ERROR_MSG( "EntityApp::installPyModules: Unable to set KBEngine.LOG_TYPE_DBG.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_WAR", log4cxx::ScriptLevel::SCRIPT_WAR)) { ERROR_MSG( "EntityApp::installPyModules: Unable to set KBEngine.LOG_TYPE_WAR.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "NEXT_ONLY", KBE_NEXT_ONLY)) { ERROR_MSG( "EntityApp::installPyModules: Unable to set KBEngine.NEXT_ONLY.\n"); } if(entryScriptFileName != NULL) { entryScript_ = PyImport_Import(entryScriptFileName); SCRIPT_ERROR_CHECK(); S_RELEASE(entryScriptFileName); if(entryScript_.get() == NULL) { return false; } } onInstallPyModules(); return true; }
//------------------------------------------------------------------------------------- bool PythonApp::installPyModules() { // 安装入口模块 PyObject *entryScriptFileName = NULL; if(componentType() == BASEAPP_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getBaseApp(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } else if(componentType() == CELLAPP_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getCellApp(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } else if(componentType() == INTERFACES_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getInterfaces(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } else if (componentType() == LOGINAPP_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getLoginApp(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } else if (componentType() == DBMGR_TYPE) { ENGINE_COMPONENT_INFO& info = g_kbeSrvConfig.getDBMgr(); entryScriptFileName = PyUnicode_FromString(info.entryScriptFile); } else { ERROR_MSG("PythonApp::installPyModules: entryScriptFileName is NULL!\n"); } // 注册创建entity的方法到py // 向脚本注册app发布状态 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), publish, __py_getAppPublish, METH_VARARGS, 0); // 注册设置脚本输出类型 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), scriptLogType, __py_setScriptLogType, METH_VARARGS, 0); // 获得资源全路径 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), getResFullPath, __py_getResFullPath, METH_VARARGS, 0); // 是否存在某个资源 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), hasRes, __py_hasRes, METH_VARARGS, 0); // 打开一个文件 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), open, __py_kbeOpen, METH_VARARGS, 0); // 列出目录下所有文件 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), listPathRes, __py_listPathRes, METH_VARARGS, 0); // 匹配相对路径获得全路径 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), matchPath, __py_matchPath, METH_VARARGS, 0); // debug追踪kbe封装的py对象计数 APPEND_SCRIPT_MODULE_METHOD(getScript().getModule(), debugTracing, script::PyGC::__py_debugTracing, METH_VARARGS, 0); if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_NORMAL", log4cxx::ScriptLevel::SCRIPT_INT)) { ERROR_MSG( "PythonApp::installPyModules: Unable to set KBEngine.LOG_TYPE_NORMAL.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_INFO", log4cxx::ScriptLevel::SCRIPT_INFO)) { ERROR_MSG( "PythonApp::installPyModules: Unable to set KBEngine.LOG_TYPE_INFO.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_ERR", log4cxx::ScriptLevel::SCRIPT_ERR)) { ERROR_MSG( "PythonApp::installPyModules: Unable to set KBEngine.LOG_TYPE_ERR.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_DBG", log4cxx::ScriptLevel::SCRIPT_DBG)) { ERROR_MSG( "PythonApp::installPyModules: Unable to set KBEngine.LOG_TYPE_DBG.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "LOG_TYPE_WAR", log4cxx::ScriptLevel::SCRIPT_WAR)) { ERROR_MSG( "PythonApp::installPyModules: Unable to set KBEngine.LOG_TYPE_WAR.\n"); } if(PyModule_AddIntConstant(this->getScript().getModule(), "NEXT_ONLY", KBE_NEXT_ONLY)) { ERROR_MSG( "PythonApp::installPyModules: Unable to set KBEngine.NEXT_ONLY.\n"); } onInstallPyModules(); if (entryScriptFileName != NULL) { entryScript_ = PyImport_Import(entryScriptFileName); SCRIPT_ERROR_CHECK(); S_RELEASE(entryScriptFileName); if(entryScript_.get() == NULL) { return false; } } return true; }
QString N3DView::toolTip() const { return componentType(); }