/////////////////////////////////////////////////////////////////////////////
// Name:        wxdlg3dviewer.h
// Purpose:     
// Author:      
// Modified by: 
// Created:     12/12/2009 15:45:31
// RCS-ID:      
// Copyright:   
// Licence:     
/////////////////////////////////////////////////////////////////////////////

// Generated by DialogBlocks (unregistered), 12/12/2009 15:45:31

#ifndef _WXDLG3DVIEWER_H_
#define _WXDLG3DVIEWER_H_


/*!
 * Includes
 */

////@begin includes
#include "wx/statline.h"
#include "wx/listctrl.h"
#include "wx/treectrl.h"
////@end includes

class IListCtrlCallbacks
{
public:
	virtual wxString OnGetItemText(const wxListCtrl* list, long item, long column) const = 0;
};


/*!
 * Forward declarations
 */

////@begin forward declarations
class wxWindow;
class wxDesmumeListCtrl;
class wxTreeCtrl;
////@end forward declarations

/*!
 * Control identifiers
 */

////@begin control identifiers
#define ID_X 10000
#define ID_CheckMaterialInterpolate 10004
#define ID_CHECKBOX1 10008
#define ID_PanelTexture 10001
#define ID_PanelViewport 10002
#define ID_RADIOBUTTON 10005
#define ID_RADIOBUTTON1 10006
#define ID_RADIOBUTTON2 10007
#define ID_ListPolys 10009
#define ID_Tree 10003
#define SYMBOL_WXDLG3DVIEWER_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxDIALOG_NO_PARENT|wxCLOSE_BOX|wxTAB_TRAVERSAL
#define SYMBOL_WXDLG3DVIEWER_TITLE _("3D Viewer")
#define SYMBOL_WXDLG3DVIEWER_IDNAME ID_X
#define SYMBOL_WXDLG3DVIEWER_SIZE wxSize(399, 300)
#define SYMBOL_WXDLG3DVIEWER_POSITION wxDefaultPosition
#define SYMBOL_WXDESMUMELISTCTRL_STYLE wxLC_REPORT|wxLC_VIRTUAL
#define SYMBOL_WXDESMUMELISTCTRL_IDNAME ID_ListPolys
#define SYMBOL_WXDESMUMELISTCTRL_SIZE wxDefaultSize
#define SYMBOL_WXDESMUMELISTCTRL_POSITION wxDefaultPosition
////@end control identifiers


/*!
 * wxdlg3dViewer class declaration
 */

class wxdlg3dViewer: public wxDialog, public IListCtrlCallbacks
{    
    DECLARE_DYNAMIC_CLASS( wxdlg3dViewer )
    DECLARE_EVENT_TABLE()

public:
    /// Constructors
    wxdlg3dViewer();
    wxdlg3dViewer( wxWindow* parent, wxWindowID id = SYMBOL_WXDLG3DVIEWER_IDNAME, const wxString& caption = SYMBOL_WXDLG3DVIEWER_TITLE, const wxPoint& pos = SYMBOL_WXDLG3DVIEWER_POSITION, const wxSize& size = SYMBOL_WXDLG3DVIEWER_SIZE, long style = SYMBOL_WXDLG3DVIEWER_STYLE );

    /// Creation
    bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXDLG3DVIEWER_IDNAME, const wxString& caption = SYMBOL_WXDLG3DVIEWER_TITLE, const wxPoint& pos = SYMBOL_WXDLG3DVIEWER_POSITION, const wxSize& size = SYMBOL_WXDLG3DVIEWER_SIZE, long style = SYMBOL_WXDLG3DVIEWER_STYLE );

    /// Destructor
    ~wxdlg3dViewer();

    /// Initialises member variables
    void Init();

    /// Creates the controls and sizers
    void CreateControls();

	virtual wxString OnGetItemText(const wxListCtrl* list, long item, long column) const { 
		return wxT("");
	}
	virtual void RepaintPanel() {}
	virtual void _OnPaintPanel( wxPaintEvent& event ) {};

////@begin wxdlg3dViewer event handler declarations

    /// wxEVT_CLOSE_WINDOW event handler for ID_X
    virtual void OnCloseWindow( wxCloseEvent& event );

    /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CheckMaterialInterpolate
    virtual void OnMaterialInterpolateClick( wxCommandEvent& event );

    /// wxEVT_PAINT event handler for ID_PanelTexture
    virtual void OnPaintPanelTexture( wxPaintEvent& event );

    /// wxEVT_ERASE_BACKGROUND event handler for ID_PanelTexture
    virtual void OnDoNotEraseBackground( wxEraseEvent& event );

    /// wxEVT_PAINT event handler for ID_PanelViewport
    virtual void OnPanelPaint( wxPaintEvent& event );

    /// wxEVT_COMMAND_LIST_ITEM_SELECTED event handler for ID_ListPolys
    virtual void OnListPolysSelected( wxListEvent& event );

////@end wxdlg3dViewer event handler declarations

////@begin wxdlg3dViewer member function declarations

    /// Retrieves bitmap resources
    wxBitmap GetBitmapResource( const wxString& name );

    /// Retrieves icon resources
    wxIcon GetIconResource( const wxString& name );
////@end wxdlg3dViewer member function declarations

    /// Should we show tooltips?
    static bool ShowToolTips();

////@begin wxdlg3dViewer member variables
    wxCheckBox* checkMaterialInterpolate;
    wxWindow* panelTexture;
    wxWindow* panelViewport;
    wxStaticText* labelFrameCounter;
    wxStaticText* labelUserPolycount;
    wxStaticText* labelFinalPolycount;
    wxDesmumeListCtrl* listPolys;
    wxTreeCtrl* tree;
////@end wxdlg3dViewer member variables
};

/*!
 * wxDesmumeListCtrl class declaration
 */

class wxDesmumeListCtrl: public wxListCtrl
{    
    DECLARE_DYNAMIC_CLASS( wxDesmumeListCtrl )
    DECLARE_EVENT_TABLE()

public:
	IListCtrlCallbacks* callbacks;

	virtual wxString OnGetItemText(long item, long column) const { 
		return callbacks->OnGetItemText(this,item,column);
	}

    /// Constructors
    wxDesmumeListCtrl();
    wxDesmumeListCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator);

    /// Creation
    bool Create(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator);

    /// Destructor
    ~wxDesmumeListCtrl();

    /// Initialises member variables
    void Init();

    /// Creates the controls and sizers
    void CreateControls();

////@begin wxDesmumeListCtrl event handler declarations

////@end wxDesmumeListCtrl event handler declarations

////@begin wxDesmumeListCtrl member function declarations

////@end wxDesmumeListCtrl member function declarations

////@begin wxDesmumeListCtrl member variables
////@end wxDesmumeListCtrl member variables
};

#endif
    // _X_H_
