#ifndef WXSNOTEBOOK_H
#define WXSNOTEBOOK_H

#include "../wxscontainer.h"
#include "../wxswidgetevents.h"
#include "wxsstdmanager.h"

WXS_ST_DECLARE(wxsNotebookStyles)
WXS_EV_DECLARE(wxsNotebookEvents)

struct wxsNotebookExtraParams
{
	wxString Label;
	bool Selected;

	wxsNotebookExtraParams():
        Label(_("Page name")),
        Selected(false)
    {}
};

class wxsNotebook : public wxsContainer
{
	public:

		wxsNotebook(wxsWidgetManager* Man,wxsWindowRes* Res);
		virtual ~wxsNotebook();
        virtual const wxsWidgetInfo& GetInfo()
        {
            return *GetManager()->GetWidgetInfo(wxsNotebookId);
        }
        virtual bool CanAddChild(wxsWidget* NewWidget,int InsertBeforeThis=-1);
		virtual int AddChild(wxsWidget* NewWidget,int InsertBeforeThis=-1);
		virtual wxString GetProducingCode(wxsCodeParams& Params);
        virtual wxString GetFinalizingCode(wxsCodeParams& Params);
        virtual wxString GetDeclarationCode(wxsCodeParams& Params);
        virtual void PreviewMouseEvent(wxMouseEvent& event);
        virtual void EnsurePreviewVisible(wxsWidget* Child);
        inline wxsNotebookExtraParams* GetExtraParams(int Index) { return (wxsNotebookExtraParams*)GetExtra(Index); }

   protected:

        virtual wxWindow* MyCreatePreview(wxWindow* Parent);
        virtual void MyFinalUpdatePreview(wxWindow* Preview);
        virtual bool XmlLoadChild(TiXmlElement* Element);
        virtual bool XmlSaveChild(int ChildIndex,TiXmlElement* AddHere);
        virtual void AddChildProperties(int ChildIndex);
        virtual void* NewExtra() { return new wxsNotebookExtraParams; }
        virtual void DelExtra(void* Data) { delete (wxsNotebookExtraParams*)Data; }

    private:
        wxsWidget* CurrentSelection;
        friend class wxsNotebookPreview;
};

#endif


syntax highlighted by Code2HTML, v. 0.9.1