void CMNewContentListener::OnUpdateDataFinish(void* UserData, int Result)
{
	if(CMGetNewContent::GetInstance()->GetItemCount() > 0)
	{

		CMString sFilePath = CMPath(CMPath::APP_PATH).String() + L"newcontent.xml";
		//创建一个XML的文档对象。
		TiXmlDocument *pContentDoc = new TiXmlDocument(sFilePath);
		TiXmlElement* pRootElement = NULL;
		if(pContentDoc)
		{
			pContentDoc->Parse("<?xml version=\"1.0\" encoding=\"utf-8\" ?><content/>",NULL,TIXML_ENCODING_UTF8);
			if(pContentDoc->Error())
				return;
			pRootElement = pContentDoc->RootElement();
		}
		if(pRootElement)
		{
			TBrowserItem item;
			for(int i=0; i<CMGetNewContent::GetInstance()->GetItemCount(); i++)
			{
				if(CMGetNewContent::GetInstance()->GetItem(i,item))
				{
					TiXmlElement* pAddItem = item.CreateXmlElement();
					if(pAddItem)
					{
						TiXmlElement*pItem = pRootElement->FirstChildElement("item");
						if (pItem) {
							pRootElement->InsertBeforeChild(pItem, *pAddItem);
							SAFEDELETE(pAddItem);
						}
						else
							pRootElement->LinkEndChild(pAddItem);
					}
				}
			}
			pContentDoc->SaveFile();
		}
		SAFEDELETE(pContentDoc);

		/////////////////////////////////////////////////////
		HKEY	hOpenKey;
		long	lResult		= 0;
		LPCTSTR	keyName		= _T("Software\\Microsoft\\Today\\Items\\\"MLPlayer\"");		
		lResult = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyName, 0, 0, &hOpenKey);
		if(lResult != ERROR_SUCCESS)
			return;
		DWORD	iTemp = 1;
		lResult = ::RegSetValueEx(hOpenKey, _T("NewContent"),0, REG_DWORD, (BYTE*)&iTemp, sizeof(iTemp));
		::RegCloseKey(hOpenKey);
		if(lResult != ERROR_SUCCESS)
			return;
	}
}
Example #2
0
bool CBookmarksDialog::AddBookmark(const wxString &name, const wxString &local_dir, const CServerPath &remote_dir, bool sync)
{
	if (local_dir.empty() && remote_dir.empty())
		return false;
	if ((local_dir.empty() || remote_dir.empty()) && sync)
		return false;

	CInterProcessMutex mutex(MUTEX_GLOBALBOOKMARKS);

	CXmlFile file(wxGetApp().GetSettingsFile(_T("bookmarks")));
	TiXmlElement* pDocument = file.Load();
	if (!pDocument) {
		wxString msg = file.GetError() + _T("\n\n") + _("The bookmark could not be added.");
		wxMessageBoxEx(msg, _("Error loading xml file"), wxICON_ERROR);

		return false;
	}

	TiXmlElement *pInsertBefore = 0;
	TiXmlElement *pBookmark;
	for (pBookmark = pDocument->FirstChildElement("Bookmark"); pBookmark; pBookmark = pBookmark->NextSiblingElement("Bookmark")) {
		wxString remote_dir_raw;

		wxString old_name = GetTextElement(pBookmark, "Name");

		if (!name.CmpNoCase(old_name)) {
			wxMessageBoxEx(_("Name of bookmark already exists."), _("New bookmark"), wxICON_EXCLAMATION);
			return false;
		}
		if (name < old_name && !pInsertBefore)
			pInsertBefore = pBookmark;
	}

	if (pInsertBefore)
		pBookmark = pDocument->InsertBeforeChild(pInsertBefore, TiXmlElement("Bookmark"))->ToElement();
	else
		pBookmark = pDocument->LinkEndChild(new TiXmlElement("Bookmark"))->ToElement();
	AddTextElement(pBookmark, "Name", name);
	if (!local_dir.empty())
		AddTextElement(pBookmark, "LocalDir", local_dir);
	if (!remote_dir.empty())
		AddTextElement(pBookmark, "RemoteDir", remote_dir.GetSafePath());
	if (sync)
		AddTextElementRaw(pBookmark, "SyncBrowsing", "1");

	if (!file.Save(false)) {
		wxString msg = wxString::Format(_("Could not write \"%s\", the bookmark could not be added: %s"), file.GetFileName(), file.GetError());
		wxMessageBoxEx(msg, _("Error writing xml file"), wxICON_ERROR);
		return false;
	}

	return true;
}
Example #3
0
	TiXmlElement* GetGenericElement(TypeGenRecord* tGenRecord)
	{
		TiXmlElement *genEl = GetGenericElement(tGenRecord->Generic);

		// записываем все поля
		if (!tGenRecord->objects.objList.empty())
		{
			TiXmlElement *fieldsEl = new TiXmlElement("Fields");

			for(unsigned int i = 0; i < tGenRecord->objects.objList.size(); ++i)
			{
				Field *field = static_cast<Field*>(tGenRecord->objects.objList[i]);
				TiXmlElement *fieldEl = GetFieldElement(field);
				fieldsEl->InsertEndChild(*fieldEl);
			}

			genEl->InsertBeforeChild(genEl->FirstChild(), *fieldsEl);
		}

		return genEl;
	}
Example #4
0
bool CSiteManager::AddBookmark(wxString sitePath, const wxString& name, const wxString &local_dir, const CServerPath &remote_dir, bool sync)
{
	if (local_dir.empty() && remote_dir.IsEmpty())
		return false;

	if (sitePath[0] != '0')
		return false;

	sitePath = sitePath.Mid(1);

	// We have to synchronize access to sitemanager.xml so that multiple processed don't write
	// to the same file or one is reading while the other one writes.
	CInterProcessMutex mutex(MUTEX_SITEMANAGER);

	CXmlFile file;
	TiXmlElement* pDocument = file.Load(_T("sitemanager"));

	if (!pDocument)
	{
		wxString msg = file.GetError() + _T("\n") + _("The bookmark could not be added.");
		wxMessageBox(msg, _("Error loading xml file"), wxICON_ERROR);

		return false;
	}

	TiXmlElement* pElement = pDocument->FirstChildElement("Servers");
	if (!pElement)
		return false;

	std::list<wxString> segments;
	if (!UnescapeSitePath(sitePath, segments))
	{
		wxMessageBox(_("Site path is malformed."), _("Invalid site path"));
		return 0;
	}

	TiXmlElement* pChild = GetElementByPath(pElement, segments);
	if (!pChild || strcmp(pChild->Value(), "Server"))
	{
		wxMessageBox(_("Site does not exist."), _("Invalid site path"));
		return 0;
	}

	// Bookmarks
	TiXmlElement *pInsertBefore = 0;
	TiXmlElement* pBookmark;
	for (pBookmark = pChild->FirstChildElement("Bookmark"); pBookmark; pBookmark = pBookmark->NextSiblingElement("Bookmark"))
	{
		TiXmlHandle handle(pBookmark);

		wxString old_name = GetTextElement_Trimmed(pBookmark, "Name");
		if (old_name.empty())
			continue;

		if (name == old_name)
		{
			wxMessageBox(_("Name of bookmark already exists."), _("New bookmark"), wxICON_EXCLAMATION);
			return false;
		}
		if (name < old_name && !pInsertBefore)
			pInsertBefore = pBookmark;
	}

	if (pInsertBefore)
		pBookmark = pChild->InsertBeforeChild(pInsertBefore, TiXmlElement("Bookmark"))->ToElement();
	else
		pBookmark = pChild->LinkEndChild(new TiXmlElement("Bookmark"))->ToElement();
	AddTextElement(pBookmark, "Name", name);
	if (!local_dir.empty())
		AddTextElement(pBookmark, "LocalDir", local_dir);
	if (!remote_dir.IsEmpty())
		AddTextElement(pBookmark, "RemoteDir", remote_dir.GetSafePath());
	if (sync)
		AddTextElementRaw(pBookmark, "SyncBrowsing", "1");

	wxString error;
	if (!file.Save(&error))
	{
		if (COptions::Get()->GetOptionVal(OPTION_DEFAULT_KIOSKMODE) == 2)
			return true;

		wxString msg = wxString::Format(_("Could not write \"%s\", the selected sites could not be exported: %s"), file.GetFileName().GetFullPath().c_str(), error.c_str());
		wxMessageBox(msg, _("Error writing xml file"), wxICON_ERROR);
	}

	return true;
}
Example #5
0
	void Level::saveSpawn() {
		string filename = folder + LIBGENS_LEVEL_DATA_STAGE;

		TiXmlDocument doc(filename);
		if (!doc.LoadFile()) {
			return;
		}

		TiXmlHandle hDoc(&doc);
		TiXmlElement* pElem;
		TiXmlElement* pElem_i;
		TiXmlHandle hRoot(0);

		pElem=hDoc.FirstChildElement().Element();
		if (!pElem) {
			return;
		}

		// Update the current spawn point with an active Sonic Spawn object if available
		list<Object *> spawn_objects;
		getObjectsByName(LIBGENS_SPAWN_POINT_OBJECT_NAME, spawn_objects);

		for (list<Object *>::iterator it=spawn_objects.begin(); it!=spawn_objects.end(); it++) {
			ObjectElement *element = (*it)->getElement(LIBGENS_SPAWN_POINT_OBJECT_FLAG);

			if (element) {
				ObjectElementBool *element_bool = static_cast<LibGens::ObjectElementBool *>(element);

				if (element_bool->value) {
					ObjectElementString *element_mode = static_cast<LibGens::ObjectElementString *>((*it)->getElement(LIBGENS_LEVEL_XML_MODE));
					ObjectElementString *element_view = static_cast<LibGens::ObjectElementString *>((*it)->getElement(LIBGENS_LEVEL_XML_CAMERA_VIEW));
					ObjectElementFloat  *element_speed = static_cast<LibGens::ObjectElementFloat *>((*it)->getElement(LIBGENS_LEVEL_XML_SPEED));
					ObjectElementFloat  *element_time = static_cast<LibGens::ObjectElementFloat *>((*it)->getElement(LIBGENS_LEVEL_XML_TIME));

					spawn_yaw         = (*it)->getRotation().getYawDegrees();
					spawn_position    = (*it)->getPosition();
					spawn_mode        = (element_mode  ? element_mode->value  : "Stand");
					spawn_speed       = (element_speed ? element_speed->value : 0.0f);
					spawn_time        = (element_time  ? element_time->value  : 0.0f);
					spawn_camera_view = (element_view ? element_view->value : "Forward");
					break;
				}
			}
		}

		// Search and delete the first appearance of the Sonic Spawn Point Segment
		pElem_i=pElem->FirstChildElement();
		for(pElem_i; pElem_i; pElem_i=pElem_i->NextSiblingElement()) {
			if (pElem_i->ValueStr() == LIBGENS_LEVEL_XML_SONIC) {
				pElem->RemoveChild(pElem_i);
				break;
			}
		}

		// Re-create the Sonic Spawn Point Segment and insert it at the start

		TiXmlElement newSpawnNode(LIBGENS_LEVEL_XML_SONIC);
		pElem_i = pElem->InsertBeforeChild(pElem->FirstChildElement(), newSpawnNode)->ToElement();

		TiXmlElement* positionRoot=new TiXmlElement(LIBGENS_OBJECT_ELEMENT_POSITION);
		spawn_position.writeXML(positionRoot);
		pElem_i->LinkEndChild(positionRoot);

		TiXmlElement* yawRoot=new TiXmlElement(LIBGENS_LEVEL_XML_YAW);
		TiXmlText* yawValue=new TiXmlText(ToString(spawn_yaw));
		yawRoot->LinkEndChild(yawValue);
		pElem_i->LinkEndChild(yawRoot);

		TiXmlElement* startRoot=new TiXmlElement(LIBGENS_LEVEL_XML_START);
		{
			TiXmlElement* modeRoot=new TiXmlElement(LIBGENS_LEVEL_XML_MODE);
			TiXmlText* modeValue=new TiXmlText(spawn_mode);
			modeRoot->LinkEndChild(modeValue);
			startRoot->LinkEndChild(modeRoot);

			TiXmlElement* speedRoot=new TiXmlElement(LIBGENS_LEVEL_XML_SPEED);
			TiXmlText* speedValue=new TiXmlText(ToString(spawn_speed));
			speedRoot->LinkEndChild(speedValue);
			startRoot->LinkEndChild(speedRoot);

			TiXmlElement* timeRoot=new TiXmlElement(LIBGENS_LEVEL_XML_TIME);
			TiXmlText* timeValue=new TiXmlText(ToString(spawn_time));
			timeRoot->LinkEndChild(timeValue);
			startRoot->LinkEndChild(timeRoot);
		}
		pElem_i->LinkEndChild(startRoot);

		TiXmlElement* deadHeightRoot=new TiXmlElement(LIBGENS_LEVEL_XML_DEAD_HEIGHT);
		TiXmlText* deadHeightValue=new TiXmlText(ToString(spawn_dead_height));
		deadHeightRoot->LinkEndChild(deadHeightValue);
		pElem_i->LinkEndChild(deadHeightRoot);

		TiXmlElement* cameraViewRoot=new TiXmlElement(LIBGENS_LEVEL_XML_CAMERA_VIEW);
		TiXmlText* cameraViewValue=new TiXmlText(spawn_camera_view);
		cameraViewRoot->LinkEndChild(cameraViewValue);
		pElem_i->LinkEndChild(cameraViewRoot);

		// Save the changes
		if (!doc.SaveFile(filename)) {
			Error::addMessage(Error::FILE_NOT_FOUND, LIBGENS_OBJECT_H_ERROR_WRITE_SET_XML + filename);
		}
	}
void CfgMgrBldr::SwitchTo(const wxString& fileName)
{
    doc = new TiXmlDocument();

    if (!TinyXML::LoadDocument(fileName, doc))
    {
        doc->InsertEndChild(TiXmlDeclaration("1.0", "UTF-8", "yes"));
        doc->InsertEndChild(TiXmlElement("CodeBlocksConfig"));
        doc->FirstChildElement("CodeBlocksConfig")->SetAttribute("version", CfgMgrConsts::version);
    }

    if (doc->ErrorId())
        cbThrow(wxString::Format(_T("TinyXML error: %s\nIn file: %s\nAt row %d, column: %d."), cbC2U(doc->ErrorDesc()).c_str(), fileName.c_str(), doc->ErrorRow(), doc->ErrorCol()));

    TiXmlElement* docroot = doc->FirstChildElement("CodeBlocksConfig");

    if (doc->ErrorId())
        cbThrow(wxString::Format(_T("TinyXML error: %s\nIn file: %s\nAt row %d, column: %d."), cbC2U(doc->ErrorDesc()).c_str(), fileName.c_str(), doc->ErrorRow(), doc->ErrorCol()));

    const char *vers = docroot->Attribute("version");
    if (!vers || atoi(vers) != 1)
        cbMessageBox(_("ConfigManager encountered an unknown config file version. Continuing happily."), _("Warning"), wxICON_WARNING);

    doc->ClearError();

    wxString info;
#ifndef __GNUC__
    info.Printf(_T( " application info:\n"
                    "\t svn_revision:\t%u\n"
                    "\t build_date:\t%s, %s "), ConfigManager::GetRevisionNumber(), wxT(__DATE__), wxT(__TIME__));
#else
    info.Printf(_T( " application info:\n"
                    "\t svn_revision:\t%u\n"
                    "\t build_date:\t%s, %s\n"
                    "\t gcc_version:\t%d.%d.%d "), ConfigManager::GetRevisionNumber(), wxT(__DATE__), wxT(__TIME__),
                __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
#endif

    if (platform::windows)
        info.append(_T("\n\t Windows "));
    if (platform::linux)
        info.append(_T("\n\t Linux "));
    if (platform::macosx)
        info.append(_T("\n\t Mac OS X "));
    if (platform::unix)
        info.append(_T("\n\t Unix "));

    info.append(platform::unicode ? _T("Unicode ") : _T("ANSI "));

    TiXmlComment c;
    c.SetValue((const char*) info.mb_str());

    TiXmlNode *firstchild = docroot->FirstChild();
    if (firstchild && firstchild->ToComment())
    {
        docroot->RemoveChild(firstchild);
        firstchild = docroot->FirstChild();
    }

    if (firstchild)
        docroot->InsertBeforeChild(firstchild, c);
    else
        docroot->InsertEndChild(c);
}