Ejemplo n.º 1
0
uint32 CLogArchiver::GetNameValue(const char* &pStr, uint32 &nName, CString &oValue, uint32 &nValue)
{
	bool bInt;
	uint32 nRet;
	CString oName;
	nRet = GetIdentifier(pStr, oName);
	if(!nRet)
		nRet = GetNameType(oName, nName, bInt);
	if(!nRet)
	{
		SkipWhiteSpace(pStr);
		if(pStr[0] != '=')
			nRet = 1;
		else
			++pStr;
	}
	if(!nRet)
	{
		if(bInt)
		{
			nRet = GetInt(pStr, oValue);
			if(!nRet)
				nValue = CString::Atoi(oValue.GetStr());
		}
		else
			nRet = GetString(pStr, oValue);
	}
	return nRet;
}
Ejemplo n.º 2
0
void CManageVariableDlg::OnBnClickedRename()
{
	int nItem = m_List.GetSelectionMark();
	if (nItem == -1)
		return;

	CAddVariableDlg Dlg;
	CString oldName = Dlg.Name = m_List.GetItemText(nItem, 0);
	Dlg.Type = GetNameType(m_List.GetItemText(nItem, 1));
	Dlg.Value = m_List.GetItemText(nItem, 2);

	Dlg.Caption = "Construct : Edit private variable";

	if (Dlg.DoModal() == IDOK) {

		if (Dlg.Name != oldName && VariableNameExists(Dlg.Name))
			MessageBox(CString("The private variable name '") + Dlg.Name + "' already exists.  Please choose a unique name.", "Private variables", MB_OK | MB_ICONEXCLAMATION);

		else
		{
			m_List.SetItemText(nItem, 0, Dlg.Name);
			m_List.SetItemText(nItem, 1, GetTypeName(Dlg.Type));
			m_List.SetItemText(nItem, 2, Dlg.Value);

			vector<PrivateValue>::iterator v = find(pType->m_PrivateValues.begin(), pType->m_PrivateValues.end(), oldName);

			// If renamed, update
			if (Dlg.Name != oldName)
				(*v).name = Dlg.Name;
			(*v).type = Dlg.Type;

			// Value changed - update across all instances
			if (Dlg.Value != "") 
			{
				// Iterate and update all objects
				int index = find_index(pType->m_PrivateValues.begin(), pType->m_PrivateValues.end(), Dlg.Name);

				PrivateVariableValueUpdater updater(index, Dlg.Value);
				ForEachObjectInstance(pType, layout->application, updater);
			}
		}
	}
}