#pragma once

#include <string>
#include <vector>
#include "../interface.h"

#define NUM_NAME_MACRO				64
#define NUM_CONTENT_MACRO			256

class CMacroFrame;
extern CMacroFrame*				g_pMacroFrame;

using namespace std;

struct MacroItem
{	
	int		id;							// 唯一編號
	char	name[NUM_NAME_MACRO];		// 巨集名稱
	char	text[NUM_CONTENT_MACRO];	// 巨集內容
	int		icon;						// 巨集圖示
};

class CMacroFrame : public CInterfaceBase
{
public:
	CMacroFrame(CInterface* object);
	virtual ~CMacroFrame();

	virtual	void				RegisterFunc();
	virtual int					CreateMacro(const char* name, int iconId, const char* text);
	virtual	void				EditMacro(int index, const char* name, int iconId, const char* text);
	virtual	void				DeleteMacro(int index);	
	virtual	MacroItem*			GetMacroItem(int index);
	virtual	MacroItem*			GetMacroItemById(int id)		{ return GetMacroItem(GetMacroIndexById(id)); }
	virtual	const char*			GetMacroIcon(int index);
	virtual	int					GetMacroIndexById(int id);
	virtual int					GetNumMacros()					{ return m_macro.size(); }
	virtual	int					GetNumMacroIcons()				{ return m_icons.size(); }
	virtual	void				PickupMacroItem(int serial);
	virtual	void				UseMacro(int serial);

	virtual	void				Save();
	virtual	void				Load();

protected:
	virtual void				SearchIcons();

protected:
	vector<MacroItem>			m_macro;
	vector<string>				m_icons;
};