#ifndef SANDH
#define SANDH

#include <wx/wx.h>
#include <wx/glcanvas.h>
#include <wx/thread.h>
#include <wx/dnd.h>
#include <wx/treectrl.h>
class Sand : public wxApp {
public:
  virtual bool OnInit();
  //virtual int MainLoop();
  void OnIdle(wxIdleEvent& e);

private:
  DECLARE_EVENT_TABLE()
};

class Canvas : public wxWindow{
public:
  Canvas(wxWindow* parent, wxWindowID id, wxPoint, wxSize);

  void OnEraseBG(wxEraseEvent& e);
  void OnPaint(wxPaintEvent& event);
  void OnMouseRightDown(wxMouseEvent& event);
  void OnMouseLeftDown(wxMouseEvent& event);
  void OnMouseLeftUp(wxMouseEvent& event);
  void OnMouseMove(wxMouseEvent& event);
  void OnTimer(wxTimerEvent& event);
  void OnSecondTimer(wxTimerEvent& event);
  void Refresh();

private:
  DECLARE_EVENT_TABLE()
};


class MainFrame : public wxFrame {
public:
  MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, 
	    long style = wxDEFAULT_FRAME_STYLE);
  void OnSize(wxSizeEvent& event);
  void OnMove(wxFocusEvent& event);
  void OnElementChoice(wxTreeEvent& event);
  void OnChoice(wxCommandEvent& event);
  void OnMenu(wxCommandEvent& event);
  void OnButton(wxCommandEvent& event);
  void OnToggleButton(wxCommandEvent& event);

private:
  DECLARE_EVENT_TABLE()
};


class DropTarget : public wxFileDropTarget {
 public:
  virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames);

};


#endif
