/*
Copyright (C) 2006 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>

class 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
	QString StackViewFont;
	QString MemoryDumpViewFont;
	QString RegisterViewFont;
	QString DisassemblyViewFont;
	
	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 minAsciiStringLength;
	
protected:
	void readSettingsFromFile();
	void writeSettingsToFile();
};

#endif

