Menu

[r7]: / Plugin / configurationtoolbase.cpp  Maximize  Restore  History

Download this file

102 lines (91 with data), 3.5 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// copyright : (C) 2008 by Eran Ifrah
// file name : configurationtoolbase.cpp
//
// -------------------------------------------------------------------------
// A
// _____ _ _ _ _
// / __ \ | | | | (_) |
// | / \/ ___ __| | ___| | _| |_ ___
// | | / _ \ / _ |/ _ \ | | | __/ _ )
// | \__/\ (_) | (_| | __/ |___| | || __/
// \____/\___/ \__,_|\___\_____/_|\__\___|
//
// F i l e
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#include "configurationtoolbase.h"
#include "xmlutils.h"
#include "serialized_object.h"
#include "wx/filename.h"
#include "wx/ffile.h"
ConfigurationToolBase::ConfigurationToolBase()
: m_fileName(wxEmptyString)
{
}
ConfigurationToolBase::~ConfigurationToolBase()
{
}
bool ConfigurationToolBase::Load(const wxString &fileName)
{
wxFileName fn(fileName);
fn.MakeAbsolute();
m_fileName = fn.GetFullPath();
if(fn.FileExists() == false){
//no such file, create an empty file
wxString content;
content << wxT("<") << GetRootName() << wxT("/>");
wxFFile file;
file.Open(fn.GetFullPath(), wxT("w+b"));
if(file.IsOpened()){
file.Write(content);
file.Close();
}
}
return m_doc.Load(m_fileName);
}
bool ConfigurationToolBase::WriteObject(const wxString &name, SerializedObject *obj)
{
if(m_doc.IsOk() == false){
return false;
}
Archive arch;
wxXmlNode *child = XmlUtils::FindNodeByName(m_doc.GetRoot(), wxT("ArchiveObject"), name);
if (child) {
wxXmlNode *n = m_doc.GetRoot();
n->RemoveChild(child);
delete child;
}
//create new xml node for this object
child = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("ArchiveObject"));
m_doc.GetRoot()->AddChild(child);
child->AddProperty(wxT("Name"), name);
arch.SetXmlNode(child);
//serialize the object into the archive
obj->Serialize(arch);
//save the archive
return m_doc.Save(m_fileName);
}
bool ConfigurationToolBase::ReadObject(const wxString &name, SerializedObject *obj)
{
if(m_doc.IsOk() == false){
return false;
}
//find the object node in the xml file
wxXmlNode *node = XmlUtils::FindNodeByName(m_doc.GetRoot(), wxT("ArchiveObject"), name);
if (node) {
Archive arch;
arch.SetXmlNode(node);
obj->DeSerialize(arch);
return true;
}
return false;
}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.