/*
Copyright (C) 2006 - 2009 Evan Teran
                   eteran@alum.rit.edu

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.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

#ifndef CONFIGURATION_20061031_H_
#define CONFIGURATION_20061031_H_

#include <QString>
#include "API.h"

class EDB_EXPORT Configuration {
public:
	Configuration();
	virtual ~Configuration();

public:
	enum Syntax {
		Intel,
		ATT
	};
	
	enum CloseBehaviour {
		Detach,
		Terminate
	};
	
	enum InitialBreakpoint {
		EntryPoint,
		MainSymbol
	};
	
public:
	// general tab
	CloseBehaviour		closeBehaviour;
	
	// appearance tab
	bool				showAddressSeperator;
	QString				stackFont;
	QString				registersFont;
	QString				disassemblyFont;
	QString 			dataFont;
	bool				dataShowAddress;
	bool				dataShowHex;
	bool				dataShowAscii;
	bool				dataShowComments;
	int					dataWordWidth;
	int					dataRowWidth;

	// debugging tab
	InitialBreakpoint	initialBreakpoint;
	bool				warnOnNoExecBP;
	bool				findMain;
	bool				ttyEnabled;
	QString				ttyCommand;
	
	// disassembly tab
	Syntax				syntax;
	bool				zerosAreFilling;
	bool				uppercaseDisassembly;

	// directories tab
	QString				symbolPath;
	QString				pluginPath;
	QString				sessionPath;
	
	int					minStringLength;
		
protected:
	void readSettingsFromFile();
	void writeSettingsToFile();
};

#endif

