#ifndef _TK_WINSTATE_OPTION_H_
#define _TK_WINSTATE_OPTION_H_

#include "tk_enumoption.h"
#include <string>

using namespace std;

/**
 * \brief Specifies state of window
 *
 * Should be either normal, iconic, withdrawn, icon, or (Windows only) zoomed.
 *
 * \date 01-13-2006
 *
 * \author Ondrej Svejdar
 *
 * \todo 
 *
 * \bug 
 *
 */
class TkWinStateOption:public TkEnumOption
{
public:
	static TXmlObject* newObject()
	{
		return new TkWinStateOption(0);
	}

	static const char* E_NORMAL;
	static const char* E_ICONIC;
	static const char* E_WITHDRAWN;
	static const char* E_ZOOMED;

	static const char* type;
	static const char* enums[];

	/// C++ representation of this enumeration
	typedef enum opts
	{
		/// normal state
		normal=0,
		/// window iconified
		iconic=1,
		/// window hidden
		withdrawn=2,
		/// window maximized (system Windows only)
		zoomed=3
	};

	const char* getType() const;

	/**
	 * ctor
	 * \param value One of following : "normal","iconic","withdrawn","zoomed"
	 * or you can use static const members of TkWinStateOption :
	 * E_NORMAL, E_ICONIC, E_WITHDRAWN, E_ZOOMED
	 */
	inline TkWinStateOption(const char* value):TkEnumOption(value,enums)
	{
	}

	/**
	 * ctor, use this constructor if you can, because it is faster
	 * \param value One of following : normal, iconic, withdrawn, zoomed
	 */
	inline TkWinStateOption(opts value):TkEnumOption((int)value,enums)
	{
	}
};

#endif/*_TK_WINSTATE_OPTION_H_*/
