#ifndef _KVI_SCRIPTTOOLBAR_ITEMDEFINITION_H_
#define _KVI_SCRIPTTOOLBAR_ITEMDEFINITION_H_
//=============================================================================
//
//   File : kvi_scripttoolbar_itemdefinition.h
//   Creation date : Fri Nov 08 2002 02:39:45 by Szymon Stefanek
//
//   This file is part of the KVirc irc client distribution
//   Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)
//
//   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 opinion) 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. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
//=============================================================================

#include "kvi_settings.h"

#ifdef COMPILE_SCRIPTTOOLBAR

	#include "kvi_string.h"
	#include "kvi_list.h"
	
	class KviScriptToolBarDefinition;
	class KviScriptToolBarItem;
	class KviScriptToolBar;
	class KviConfig;
	class KviFrame;
	
	class KviScriptToolBarItemDefinition
	{
		friend class KviScriptToolBarDefinition;
		friend class KviScriptToolBarItem;
	protected:
		KviScriptToolBarItemDefinition();
	public: // this should be protected but the QList template wants it public
		virtual ~KviScriptToolBarItemDefinition();
	public:
		enum Type { Separator , Button };
	private:
		Type                                     m_type;
		KviStr                                   m_szName;
		KviStr                                   m_szIcon;
		KviStr                                   m_szCode;
		KviStr                                   m_szText;
		bool                                     m_bEnabled;
		KviPtrList<KviScriptToolBarItem>       * m_pItems;
	public:
		Type type(){ return m_type; };
		const KviStr & name(){ return m_szName; };
		const KviStr & code(){ return m_szCode; };
		const KviStr & icon(){ return m_szIcon; };
		const KviStr & text(){ return m_szText; };
		bool enabled(){ return m_bEnabled; };

		void setIcon(const KviStr &szIcon);
		void setText(const KviStr &szText);
		void setEnabled(bool bEnabled,KviFrame * pFrm = 0);
		void setCode(const KviStr &szCode){ m_szCode = szCode; };
	protected:
		void setName(const KviStr &szName){ m_szName = szName; }; // called ONLY by KviScriptToolBarDefinition
		void setType(Type t){ m_type = t; }; // called ONLY by KviScriptToolBarDefinition at init time
		void load(const char * szPrefix,KviConfig * cfg);
		void save(const char * szPrefix,KviConfig * cfg);
		void add(KviScriptToolBar * par);
		void attach(KviScriptToolBarItem * pItem);
		void detach(KviScriptToolBarItem * pItem);
		void copyFrom(KviScriptToolBarItemDefinition * d);
		void generateKvsDefinition(KviStr &szBuffer);
	};

#endif // COMPILE_SCRIPTTOOLBAR

#endif // !_KVI_SCRIPTTOOLBAR_ITEM_H_
