// XmlProjectSettings_VC7.h
//

#if !defined (_XMLPROJECTSETTINGS_VC7_H_)
#define _XMLPROJECTSETTINGS_VC7_H_

#include <string>
#include "XmlSerializable.h"
#include "XmlProjectPostGen.h"
#include "enums.h"

using namespace std;

class CXmlProjectSettings_VC7: public CXmlSerializable
{
public:
	CXmlProjectSettings_VC7();
	virtual ~CXmlProjectSettings_VC7();

	// implementation of CXmlSerializable
public:
	virtual bool BuildFromXml(IXMLDOMNode* node);
	virtual bool AppendToDOMDocument(IXMLDOMDocument2* xmlDoc, IXMLDOMElement* parentElement);	
	
	// get/set
	//
	cmString GetGenerationPath() const;
	void SetGenerationPath(const cmString& generationPath);

	cmString GetClassPrefix() const;
	void SetClassPrefix(const cmString& classPrefix);

	cmString GetFormPrefix() const;
	void SetFormPrefix(const cmString& formPrefix);

	cmString GetPostBuildPath() const;
	void SetPostBuildPath(const cmString& postBuildPath);

	bool GetTestPrjGenerationEnabled() const;
	void SetTestPrjGenerationEnabled(bool testPrjGenerationEnabled);

	bool GetGUIGenerationEnabled() const;
	void SetGUIGenerationEnabled(bool GUIGenerationEnabled);

	int GetResourcesOffset() const;
	void SetResourcesOffset(int value);

	//defaultTreeIcons As New clsTreeIcons ' contiene i nomi delle icone utilizzate per default
	bool GetDeleteExistingFiles() const;
	void SetDeleteExistingFiles(const bool deleteExistingFiles);

	bool GetEnabled() const;
	void SetEnabled(bool enabled);

	static cmString GetXmlNodeName(){return _T("ProjectSettings_VC7");}

	void SetDefaults();
	void Clear();

	CXmlProjectPostGen* GetPostGenerationStep();

protected:



	bool enabled_;						// C++ Code Generation enable
	cmString generationPath_;				// Percorso nel quale vengono salvati i file generati
	cmString classPrefix_;				// prefisso utilizzato per nominare le classi generate (es. :  nodo = <name> , classPrefix = "cfg_" -> genera la classe "cfg_name")
	cmString formPrefix_;					// prefisso utilizzato per nominare i form generati per l'editor della configurazione
	cmString postBuildPath_;				// destinazione dove la dll viene copiata dopo la compilazione
	bool testPrjGenerationEnabled_;		// specifica se deve essere generato il progetto di test
	bool guiGenerationEnabled_;			// specifica se devono essere generati i file relativi alla gestione grafica della configurazione
	bool deleteExistingFiles_;			// indica se prima della generazione dei file è necessario cancellare i file preesistenti
	int resourcesOffset_;			// icon resource offset used in resource.h

	CXmlProjectPostGen postGen_;
};
	
#endif //!defined (_XMLPROJECTSETTINGS_VC7_H_)