Revision 1 (by (no author), 2006/09/28 22:53:53) Initial import
/// \file widgetmanager.h
/// Manages widgets

#ifndef WIDGETMANAGER_H_INCLUDED
#define WIDGETMANAGER_H_INCLUDED

#include <list>
#include <allegro.h>
#include "widget.h"
#include "widgets.h"

enum EventType {
	ET_KeyDown,
	ET_KeyUp,
	ET_MouseMove,
	ET_MousePress,
	ET_MouseRelease,
	ET_MouseScroll
};

struct WidgetEvent
{
	EventType type;
	union {
		struct {
			int scancode;
		} key;
		struct {
			int x, y;
		} mouseMove;
		struct {
			int x, y;
			int buttons;
		} mousePress;
		struct {
			int amount;
		} mouseScroll;
	};
};

class WidgetManager: public WidgetPanel
{
	public: // Public static variables
		static WidgetManager* currentlyRunning;
		
	public: // Public static functions
		static void KeyboardHandler(int scancode);
		static void MouseHandler(int flags);
		
	public: // Public variables
		BITMAP* buffer;
		//long long oldTime;
		bool running;
		std::list<WidgetEvent*> queue;
		
	public: // Public functions
		WidgetManager();
		virtual ~WidgetManager();
		
		void Begin();
		void Pause();
		void Stop();
		void Continue();
};

#endif

// The end