Example #1
0
//-----  dxResetColors()  -----------------------------------------------------
void CDirectXGraphics::dxResetColors()
{
	Configuration*	pConfig(Configuration::getInstance());
	D3DLIGHT9		light;

	//  ambient light
	_pd3dDevice->SetRenderState(D3DRS_AMBIENT, pConfig->_mvDefAmbiColor);

	//  1st light source
	ZeroMemory(&light, sizeof(light));
	light.Type        = D3DLIGHT_DIRECTIONAL;
	light.Diffuse     = D3DXCOLOR(pConfig->_mvDefDiffColor);
	light.Specular    = D3DXCOLOR(pConfig->_mvDefSpecColor);
	light.Direction.x = 0.0f;
	light.Direction.y = -10000.0f;
	light.Direction.z = 0.0f;
	light.Range       = 21000.0f;

	_pd3dDevice->SetLight(0, &light);
	_pd3dDevice->LightEnable(0, true);

	//  2nd light source
	light.Direction.y = 10000.0f;

	_pd3dDevice->SetLight(1, &light);
	_pd3dDevice->LightEnable(1, true);
}
//-----  COptionsPageGeneral()  -----------------------------------------------
COptionsPageGeneral::COptionsPageGeneral(CWnd* pParent /*=NULL*/)
	: CPropertyPage(COptionsPageGeneral::IDD)
{
	Configuration*	pConfig(Configuration::getInstance());

	_pathNifXML    = pConfig->_pathNifXML.c_str();			if (_pathNifXML.IsEmpty())		_pathNifXML = _T("nif.xml");
	_pathDefInput  = pConfig->_pathDefaultInput.c_str();
	_pathDefOutput = pConfig->_pathDefaultOutput.c_str();
	_pathNifSkope  = pConfig->_pathNifSkope.c_str();
	_pathTemplates = pConfig->getPathTemplates().c_str();
	_pathSkyrim    = pConfig->getPathTextures().c_str();	if (_pathSkyrim.IsEmpty())		_pathSkyrim = _T("TESV.EXE");
}
Example #3
0
//-----  dxBeginScene()  ------------------------------------------------------
bool CDirectXGraphics::dxBeginScene()
{
	Configuration*	pConfig(Configuration::getInstance());

	//  clear background
	_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET,  pConfig->_mvDefBackColor, 1.0f, 0);
	_pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, pConfig->_mvDefBackColor, 1.0f, 0);

	//  Begin the scene
	_pd3dDevice->BeginScene();

	return true;
}
//-----  OnBnClickedBtPathNifxml()  -------------------------------------------
void COptionsPageGeneral::OnBnClickedBtPathNifxml()
{
	Configuration*	pConfig(Configuration::getInstance());

	UpdateData(TRUE);
	_pathNifXML = FDFileHelper::getFile(_pathNifXML, _T("Nif-XML (nif.xml)|nif.xml||"), _T("xml"), false, _T("Please select Nif.xml file"), OFN_FILEMUSTEXIST);
	UpdateData(FALSE);
	m_ToolTip.AddTool(GetDlgItem(IDC_ED_PATH_NIFXML), _pathNifXML);

	//  re-initialize material list
	delete NifUtlMaterialList::getInstance();
	NifUtlMaterialList::initInstance(CStringA(_pathNifXML).GetString(), pConfig->_matScanTag, pConfig->_matScanName);
}
//-----  OnOK()  --------------------------------------------------------------
void COptionsPageGeneral::OnOK()
{
	Configuration*	pConfig(Configuration::getInstance());

	UpdateData(TRUE);

	pConfig->_pathNifXML        = (const char*) CStringA(_pathNifXML).GetString();
	pConfig->_pathDefaultInput  = (const char*) CStringA(_pathDefInput).GetString();
	pConfig->_pathDefaultOutput = (const char*) CStringA(_pathDefOutput).GetString();
	pConfig->_pathNifSkope      = (const char*) CStringA(_pathNifSkope).GetString();
	pConfig->setPathTemplates((const char*) CStringA(_pathTemplates).GetString());
	pConfig->setPathTextures ((const char*) CStringA(_pathSkyrim).GetString());
}
Example #6
0
TaskBar::TaskBar()
: Fl_Group(0,0,0,0)
{
    m_max_taskwidth = 150;

    layout_align(FL_ALIGN_CLIENT);
    layout_spacing(2);
    
    Fl_Config pConfig(fl_find_config_file("ede.conf", true));
    pConfig.get("Panel", "VariableWidthTaskbar",variable_width,true);

    update();
    end();
}
//-----  BroadcastEvent()  ----------------------------------------------------
BOOL CFormBlenderPrepareView::BroadcastEvent(WORD event, void* pParameter)
{
	switch (event)
	{
		case IBCE_CHANGED_SETTINGS:
		{
			Configuration*	pConfig(Configuration::getInstance());

			//  tool
			((CButton*) GetDlgItem(IDC_RD_ARMOR))->SetCheck(_actTool == IDC_RD_ARMOR);

			//  direction
			((CButton*) GetDlgItem(IDC_RD_TO_BLENDER))  ->SetCheck(_actDirection == IDC_RD_TO_BLENDER);
			((CButton*) GetDlgItem(IDC_RD_FROM_BLENDER))->SetCheck(_actDirection == IDC_RD_FROM_BLENDER);
			GetDlgItem(IDC_BT_CONVERT)->SetWindowText((_actDirection == IDC_RD_TO_BLENDER) ? _T("Prep. Blender") : _T("Prep. Skyrim"));
/*
			//  name flags
			int		selItem(pConfig->_ceNameHandling + IDC_RD_NAME_MAT);

			((CButton*) GetDlgItem(IDC_RD_NAME_MAT))  ->SetCheck(selItem == IDC_RD_NAME_MAT);
			((CButton*) GetDlgItem(IDC_RD_NAME_CHUNK))->SetCheck(selItem == IDC_RD_NAME_CHUNK);

			//  various flags
			((CButton*) GetDlgItem(IDC_CK_GEN_NORMALS))   ->SetCheck(pConfig->_ceGenNormals   ? BST_CHECKED : BST_UNCHECKED);
			((CButton*) GetDlgItem(IDC_CK_SCALE_TO_MODEL))->SetCheck(pConfig->_ceScaleToModel ? BST_CHECKED : BST_UNCHECKED);
*/
			break;
		}

		case IBCE_SET_TOOLTIPP:
		{
			_toolTipCtrl.Activate(Configuration::getInstance()->_showToolTipps);
			break;
		}
	}  //  switch (event)

	//  route event to sub forms
	for (auto pIter=_subFormList.begin(), pEnd=_subFormList.end(); pIter != pEnd; ++pIter)
	{
		if (dynamic_cast<IfcBroadcastObject*>(*pIter) != NULL)
		{
			dynamic_cast<IfcBroadcastObject*>(*pIter)->BroadcastEvent(event, pParameter);
		}
	}

	return TRUE;
}
PRL_RESULT Task_VzManager::create_env()
{
	CProtoCommandPtr cmd = CProtoSerializer::ParseCommand( getRequestPackage());
	if ( ! cmd->IsValid() )
		return PRL_ERR_UNRECOGNIZED_REQUEST;

	CProtoVmCreateCommand *pCmd = CProtoSerializer::CastToProtoCommand<CProtoVmCreateCommand>(cmd);
	if (!pCmd->IsValid())
		return PRL_ERR_UNRECOGNIZED_REQUEST;
	SmartPtr<CVmConfiguration> pConfig(new CVmConfiguration);
	pConfig->fromString(pCmd->GetVmConfig());

	QString sPath = pCmd->GetVmHomePath();
	if (!sPath.isEmpty() && !QDir::isAbsolutePath( sPath) ) {
		WRITE_TRACE(DBG_FATAL, "Invalid path '%s'", QSTR2UTF8(sPath));
		return PRL_ERR_VMDIR_PATH_IS_NOT_ABSOLUTE;
	}

	QString vm_uuid = pConfig->getVmIdentification()->getVmUuid();
	QString vm_name = pConfig->getVmIdentification()->getVmName();
	QString vm_home;

	CVmDirectory::TemporaryCatalogueItem vmInfo( vm_uuid, vm_home, vm_name);
	// Lock
	PRL_RESULT res = checkAndLockRegisterParameters(&vmInfo);
	if (PRL_FAILED(res))
		return res;

	res = get_op_helper()->create_env(sPath, pConfig, pCmd->GetCommandFlags());
	if (PRL_SUCCEEDED(res)) {
		res = getVzHelper()->insertVmDirectoryItem(pConfig);
		if (PRL_FAILED(res))
			get_op_helper()->delete_env(
					pConfig->getVmIdentification()->getVmUuid());
	}
	// Unlock temporary registration
	CDspService::instance()->getVmDirManager()
		.unlockExclusiveVmParameters(&vmInfo);

	if (PRL_SUCCEEDED(res)) {
		getResponseCmd()->SetVmConfig(pConfig->toString());
		sendEvent(PET_DSP_EVT_VM_ADDED, vm_uuid);
	}

	return res;
}
Example #9
0
const bool OTFolders::GetSetAll()
{
	OTSettings * pConfig(new OTSettings(OTPaths::GlobalConfigFile()));

	pConfig->Reset();

	if(!pConfig->Load()) return false;

	if(!GetSetFolderName(pConfig,KEY_ACCOUNT,		DEFAULT_ACCOUNT,		m_strAccount		)) return false;
	if(!GetSetFolderName(pConfig,KEY_CERT,			DEFAULT_CERT,			m_strCert			)) return false;
	if(!GetSetFolderName(pConfig,KEY_CONTRACT,		DEFAULT_CONTRACT,		m_strContract		)) return false;
	if(!GetSetFolderName(pConfig,KEY_CREDENTIAL,	DEFAULT_CREDENTIAL,		m_strCredential		)) return false;
	if(!GetSetFolderName(pConfig,KEY_CRON,			DEFAULT_CRON,			m_strCron			)) return false;
	if(!GetSetFolderName(pConfig,KEY_INBOX,			DEFAULT_INBOX,			m_strInbox			)) return false;
	if(!GetSetFolderName(pConfig,KEY_MARKET,		DEFAULT_MARKET,			m_strMarket			)) return false;
	if(!GetSetFolderName(pConfig,KEY_MINT,			DEFAULT_MINT,			m_strMint			)) return false;
	if(!GetSetFolderName(pConfig,KEY_NYM,			DEFAULT_NYM,			m_strNym			)) return false;
	if(!GetSetFolderName(pConfig,KEY_NYMBOX,		DEFAULT_NYMBOX,			m_strNymbox			)) return false;
	if(!GetSetFolderName(pConfig,KEY_OUTBOX,		DEFAULT_OUTBOX,			m_strOutbox			)) return false;
	if(!GetSetFolderName(pConfig,KEY_PAYMENTINBOX,	DEFAULT_PAYMENTINBOX,	m_strPaymentInbox	)) return false;
	if(!GetSetFolderName(pConfig,KEY_PUBCRED,		DEFAULT_PUBCRED,		m_strPubcred		)) return false;
	if(!GetSetFolderName(pConfig,KEY_PUBKEY,		DEFAULT_PUBKEY,			m_strPubkey			)) return false;
	if(!GetSetFolderName(pConfig,KEY_PURSE,			DEFAULT_PURSE,			m_strPurse			)) return false;
	if(!GetSetFolderName(pConfig,KEY_RECEIPT,		DEFAULT_RECEIPT,		m_strReceipt		)) return false;
	if(!GetSetFolderName(pConfig,KEY_RECORDBOX,		DEFAULT_RECORDBOX,		m_strRecordBox		)) return false;
	if(!GetSetFolderName(pConfig,KEY_EXPIREDBOX,    DEFAULT_EXPIREDBOX,		m_strExpiredBox		)) return false;
	if(!GetSetFolderName(pConfig,KEY_SCRIPT,		DEFAULT_SCRIPT,			m_strScript			)) return false;
	if(!GetSetFolderName(pConfig,KEY_SMARTCONTRACTS,DEFAULT_SMARTCONTRACTS,	m_strSmartContracts	)) return false;
	if(!GetSetFolderName(pConfig,KEY_SPENT,			DEFAULT_SPENT,			m_strSpent			)) return false;
	if(!GetSetFolderName(pConfig,KEY_USERACCT,		DEFAULT_USERACCT,		m_strUserAcct		)) return false;

	if(!pConfig->Save()) return false;

	pConfig->Reset();

	return true;
}
Example #10
0
//-----  InitInstance()  ------------------------------------------------------
BOOL CNifUtilsSuiteApp::InitInstance()
{
	//  init common controls (since Win95)
	INITCOMMONCONTROLSEX	InitCtrls;

	InitCtrls.dwSize = sizeof(InitCtrls);
	InitCtrls.dwICC  = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);

	//  init own instance
	CWinAppEx::InitInstance();

	//  no interaction with Win7 taskbar
	EnableTaskbarInteraction(FALSE);

	//  init RichEdit
	AfxInitRichEdit2();

	//  initialize configuration
	CStringA	configName;
	bool		hasConfig(false);

	GetModuleFileNameA(NULL, configName.GetBuffer(MAX_PATH), MAX_PATH);
	configName.ReleaseBuffer();
	configName.Replace(".exe", ".xml");
	hasConfig = Configuration::initInstance((const char*) configName);

	//  initialize Havok  (HK_MEMORY_USAGE bytes of physics solver buffer)
	hkMemoryRouter*		pMemoryRouter(hkMemoryInitUtil::initDefault(hkMallocAllocator::m_defaultMallocAllocator, hkMemorySystem::FrameInfo(HK_MEMORY_USAGE)));
	hkBaseSystem::init(pMemoryRouter, errorReport);

	//  initialize material map
	Configuration*	pConfig(Configuration::getInstance());

	NifUtlMaterialList::initInstance(pConfig->_pathNifXML, pConfig->_matScanTag, pConfig->_matScanName);


	// Register the application's document templates.
	CSingleDocTemplate*	pDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME,
															RUNTIME_CLASS(CNifUtilsSuiteDoc),
															RUNTIME_CLASS(CNifUtilsSuiteFrame),
															RUNTIME_CLASS(CFormNifConvertView))
															);
	if (!pDocTemplate)		return FALSE;
	AddDocTemplate(pDocTemplate);

	// Parse command line for standard shell commands, DDE, file open
	CCommandLineInfo	cmdInfo;

	ParseCommandLine(cmdInfo);
	if (!ProcessShellCommand(cmdInfo))		return FALSE;

	// call DragAcceptFiles only if there's a suffix
	//  In an SDI app, this should occur after ProcessShellCommand

	// The one and only window has been initialized, so show and update it
	m_pMainWnd->ShowWindow(SW_SHOW);
	m_pMainWnd->UpdateWindow();

	if (!hasConfig)
	{
		AfxMessageBox(L"Seems you're running NifUtilsSuite for the first time.\nYou're redirected to Settings now.");
		m_pMainWnd->PostMessage(WM_COMMAND, ID_OPTIONS_EDIT);
	}

	return TRUE;
}
Example #11
0
//-----  dxInitScene()  -------------------------------------------------------
bool CDirectXGraphics::dxInitScene()
{
	Configuration*	pConfig(Configuration::getInstance());

	// --------------------------------------------------------------
	// Init viewport.
	// --------------------------------------------------------------
	D3DVIEWPORT9 vp;

	vp.X      = 0;
	vp.Y      = 0;
	vp.Width  = _rectOrig.Width();
	vp.Height = _rectOrig.Height();
	vp.MinZ   = 0.0f;
	vp.MaxZ   = 1.0f;
	_pd3dDevice->SetViewport(&vp);
	
	// --------------------------------------------------------------
	// Init camera.
	// --------------------------------------------------------------
	D3DXMATRIX	matProj;
	D3DXMATRIX	matView;

	// Init the camera type (orthographic or perspective)
	// Here, perspective camera.
	float   fov    = 1.04f; // 60 degrees = 1.04 radian.
	float   aspect = (float)_rectOrig.Width()/(float)_rectOrig.Height();
	float   znear  = 0.1f;
	float   zfar   = 15012.0f;

	D3DXMatrixPerspectiveFovLH(&matProj, fov, aspect, znear, zfar);
	_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matProj);

	// Init camera view matrix
	D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0.0f, 2000.0f, 0.0f),	// camera position
								 &D3DXVECTOR3(0.0f, 0.0f, 0.0f),	// target position
								 &D3DXVECTOR3(0.0f, 0.0f, -1.0f));	// camera up vector
	_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);

	_pd3dDevice->SetRenderState(D3DRS_AMBIENT, pConfig->_mvDefAmbiColor);
	_pd3dDevice->SetRenderState(D3DRS_NORMALIZENORMALS, TRUE);

	for (int i(0); i < 8; ++i)
	{
		_pd3dDevice->SetSamplerState(i,D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
		_pd3dDevice->SetSamplerState(i,D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
		_pd3dDevice->SetSamplerState(i,D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );
		_pd3dDevice->SetSamplerState(i,D3DSAMP_MAXANISOTROPY,0);
	}

	D3DLIGHT9	light;

	//  1st light source
	ZeroMemory(&light, sizeof(light));
	light.Type        = D3DLIGHT_DIRECTIONAL;
	light.Diffuse     = D3DXCOLOR(pConfig->_mvDefDiffColor);
	light.Specular    = D3DXCOLOR(pConfig->_mvDefSpecColor);
	light.Direction.x = 0.0f;
	light.Direction.y = -10000.0f;
	light.Direction.z = 0.0f;
	light.Range       = 21000.0f;

	_pd3dDevice->SetLight(0, &light);
	_pd3dDevice->LightEnable(0, true);

	//  2nd light source
	light.Direction.y = 10000.0f;

	_pd3dDevice->SetLight(1, &light);
	_pd3dDevice->LightEnable(1, true);

	return true;
}
PRL_RESULT Task_VzManager::editConfig()
{
	PRL_RESULT res;

	CProtoCommandPtr cmd = CProtoSerializer::ParseCommand( getRequestPackage() );
	if ( ! cmd->IsValid() )
		return PRL_ERR_UNRECOGNIZED_REQUEST;

	SmartPtr<CVmConfiguration> pConfig( new CVmConfiguration( cmd->GetFirstStrParam() ) );
	if( !IS_OPERATION_SUCCEEDED( pConfig->m_uiRcInit ) )
	{
		PRL_RESULT code = PRL_ERR_PARSE_VM_CONFIG;
		WRITE_TRACE(DBG_FATAL, "Error occurred while modification CT configuration: %s",
				PRL_RESULT_TO_STRING( code ) );
		return code;
	}
	QString sUuid = pConfig->getVmIdentification()->getVmUuid();
	SmartPtr<CVmConfiguration> pOldConfig = getVzHelper()->getCtConfig(getClient(), sUuid);
	if (!pOldConfig)
		return PRL_ERR_VM_GET_CONFIG_FAILED;

        QString oldname = pOldConfig->getVmIdentification()->getVmName();
        QString name = pConfig->getVmIdentification()->getVmName();

	QStringList lstFullItemIds;
	pConfig->diffDocuments(pOldConfig.getImpl(), lstFullItemIds);

	// Code below prohibits all other than Hdd and Network devices for Containers
	if (!lstFullItemIds.filter(QRegExp("Hardware\\.(?!Hdd|Network|Cpu|Memory)")).isEmpty())
		return PRL_ERR_ACTION_NOT_SUPPORTED_FOR_CT;
	// Handle the Firewall settings change on the running CT
	if (!lstFullItemIds.filter(QRegExp("\\.(?=Firewall\\.|MAC|NetAddress)")).isEmpty()) {
		VIRTUAL_MACHINE_STATE nState = VMS_UNKNOWN;
		PRL_RESULT res = getVzHelper()->getVzlibHelper().get_env_status(sUuid, nState);
		if (nState == VMS_RUNNING) {
			res = setupFirewall(pConfig);
			if (PRL_FAILED(res))
				return res;
		}
	}

	// Handle Name change
	if (oldname != name) {
		QString vm_uuid; // Skip uuid check
		QString vm_name = name;
		QString vm_home;

		// Lock the new name in the VmDirectory
		CVmDirectory::TemporaryCatalogueItem vmInfo( vm_uuid, vm_home, vm_name);
		res = checkAndLockRegisterParameters(&vmInfo);
		if (PRL_FAILED(res))
			return res;

		res = get_op_helper()->set_env_name(sUuid, name);
		if (PRL_SUCCEEDED(res)) {
			CDspLockedPointer< CVmDirectoryItem >
				pVmDirItem = CDspService::instance()->getVmDirManager()
				.getVmDirItemByUuid(m_sVzDirUuid, sUuid );

			if (!pVmDirItem) {
				WRITE_TRACE(DBG_FATAL, "Can't found VmDirItem by vmUuid = %s",
						QSTR2UTF8(sUuid));
			} else {
				pVmDirItem->setVmName(name);
				PRL_RESULT ret = CDspService::instance()->getVmDirManager().updateVmDirItem(pVmDirItem);
				if (PRL_FAILED(ret) )
					WRITE_TRACE(DBG_FATAL, "Can't update Container %s VmCatalogue by error: %s",
						QSTR2UTF8(sUuid), PRL_RESULT_TO_STRING(ret));
			}
		}

		// delete temporary registration
		CDspService::instance()->getVmDirManager()
			.unlockExclusiveVmParameters(&vmInfo);

		if (PRL_FAILED(res))
			return res;
	}

	// reset IP addresses for CT templates
	Task_EditVm::resetNetworkAddressesFromVmConfig(pConfig, pOldConfig);

	// update High Availability Cluster resource
	if (pConfig->getVmSettings()->getHighAvailability()->toString() !=
			pOldConfig->getVmSettings()->getHighAvailability()->toString()
		&& CFileHelper::isSharedFS(pConfig->getVmIdentification()->getHomePath())) {
		res = CDspService::instance()->getHaClusterHelper()->updateClusterResourceParams(
				sUuid,
				pOldConfig->getVmSettings()->getHighAvailability(),
				pConfig->getVmSettings()->getHighAvailability(),
				pConfig->getVmIdentification()->getHomePath(),
				PVT_CT);
		if (PRL_FAILED(res))
			return res;
	}

	CVmRemoteDisplay* oldD = pOldConfig->getVmSettings()->getVmRemoteDisplay();
	CVmRemoteDisplay* newD = pConfig->getVmSettings()->getVmRemoteDisplay();

	if (oldD->getPassword() != newD->getPassword()) {
		if (newD->getPassword().length() > PRL_VM_REMOTE_DISPLAY_MAX_PASS_LEN) {
			WRITE_TRACE(DBG_FATAL, "The specified remote display password is too long.");
			getLastError()->addEventParameter(
				new CVmEventParameter(
					PVE::UnsignedInt,
					QString::number(PRL_VM_REMOTE_DISPLAY_MAX_PASS_LEN),
					EVT_PARAM_MESSAGE_PARAM_0));

			return PRL_ERR_VMCONF_REMOTE_DISPLAY_PASSWORD_TOO_LONG;
		}
	}

	Backup::Device::Service service(pOldConfig);
	service.setContext(*this).setVmHome(pConfig->getVmIdentification()->getHomePath());
	Backup::Device::Details::Transition t = service.getTransition(pConfig);
	res = t.plant();
	if (PRL_FAILED(res))
		return res;

	res = get_op_helper()->apply_env_config(pConfig, pOldConfig, cmd->GetCommandFlags());
	if (PRL_FAILED(res))
		return res;

	res = t.remove();
	if (PRL_FAILED(res))
		return res;

	// Invalidate cache
	CDspService::instance()->getVzHelper()->getConfigCache().
		remove(pConfig->getVmIdentification()->getHomePath());

	res = changeVNCServerState(pOldConfig, pConfig, sUuid);
	if (PRL_FAILED(res))
		return res;

	// Handle memory limit change
	unsigned int newRamSize = pConfig->getVmHardwareList()->getMemory()->getRamSize();
	unsigned int oldRamSize = pOldConfig->getVmHardwareList()->getMemory()->getRamSize();
	if (newRamSize != oldRamSize) {
		VIRTUAL_MACHINE_STATE nState = VMS_UNKNOWN;
		PRL_RESULT res = getVzHelper()->getVzlibHelper().get_env_status(sUuid, nState);
		if (PRL_SUCCEEDED(res) && (nState == VMS_RUNNING))
			adjustReservedMemLimit((long long)newRamSize - oldRamSize);
	}

	QStringList lstAdd, lstDel;
	// Handle application templates
	QStringList newAppTemplates = pConfig->getCtSettings()->getAppTemplate();
	QStringList oldAppTemplates = pOldConfig->getCtSettings()->getAppTemplate();

	for (int i = 0; i < newAppTemplates.size(); i++) {
		if (newAppTemplates.at(i).startsWith('.'))
			newAppTemplates[i].remove(0, 1);
	}
	for (int i = 0; i < oldAppTemplates.size(); i++) {
		if (oldAppTemplates.at(i).startsWith('.'))
			oldAppTemplates[i].remove(0, 1);
	}

	if (newAppTemplates == oldAppTemplates)
		goto ok;

	foreach(QString str, newAppTemplates)
		if (!oldAppTemplates.contains(str))
			lstAdd.append(str);
	foreach(QString str, oldAppTemplates)
		if (!newAppTemplates.contains(str))
			lstDel.append(str);

	do {
		CVzTemplateHelper TmplHelper = getVzHelper()->getVzTemplateHelper();
		res = TmplHelper.remove_templates_env(sUuid, lstDel);
		if (PRL_FAILED(res))
			return res;

		res = TmplHelper.install_templates_env(sUuid, lstAdd);
	} while (0);

ok:
	if ( PRL_SUCCEEDED(res) ) {
		SmartPtr<CVmConfiguration> pNewConfig = getVzHelper()->getCtConfig(getClient(), sUuid);
		QStringList lstParams(pNewConfig ?
				pNewConfig->toString() : pConfig->toString());
		getResponseCmd()->SetParamsList( lstParams );

		sendEvent(PET_DSP_EVT_VM_CONFIG_CHANGED, sUuid);
	}

	return res;
}