//
// $Source: /cvsroot/gambit/gambit/sources/gui/renratio.h,v $
// $Date: 2005/12/13 06:50:07 $
// $Revision: 1.3 $
//
// DESCRIPTION:
// Declaration of wxSheet renderer for rational numbers
//
// This file is part of Gambit
// Copyright (c) 2005, The Gambit Project
//
// 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 option) 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.
//

#ifndef RENRATIO_H
#define RENRATIO_H

#include "wx/sheet/sheet.h"     // the wxSheet widget

//
// This class is based on the wxSheetCellStringRendererRefData implementation
//
class gbtRationalRendererRefData : public wxSheetCellRendererRefData {
public:
  gbtRationalRendererRefData(void) { }
    
  // draw the string
  virtual void Draw(wxSheet& grid, const wxSheetCellAttr& attr,
		    wxDC& dc, const wxRect& rect, 
		    const wxSheetCoords& coords, bool isSelected);

  // return the string extent
  virtual wxSize GetBestSize(wxSheet& grid, const wxSheetCellAttr& attr,
			     wxDC& dc, const wxSheetCoords& coords);

  void DoDraw(wxSheet& grid, const wxSheetCellAttr& attr,
	      wxDC& dc, const wxRect& rect, 
	      const wxSheetCoords& coords, bool isSelected);

  // set the text colours before drawing
  void SetTextColoursAndFont(wxSheet& grid, const wxSheetCellAttr& attr,
			     wxDC& dc, bool isSelected);

  // calc the string extent for given string/font
  wxSize DoGetBestSize(wxSheet& grid, const wxSheetCellAttr& attr, 
		       wxDC& dc, const wxString& text);

  bool Copy(const gbtRationalRendererRefData& other) 
  { return wxSheetCellRendererRefData::Copy(other); }
  DECLARE_SHEETOBJREFDATA_COPY_CLASS(gbtRationalRendererRefData, 
				     wxSheetCellRendererRefData)
};

class gbtRationalEditorRefData : public wxSheetCellTextEditorRefData {
public:
  gbtRationalEditorRefData(void) { }

  void CreateEditor(wxWindow *, wxWindowID, wxEvtHandler *, wxSheet *);

  /// Override basic text editor behavior to restrict input
  bool IsAcceptedKey(wxKeyEvent &);
  void StartingKey(wxKeyEvent &);

  bool Copy(const gbtRationalEditorRefData &other);
  DECLARE_SHEETOBJREFDATA_COPY_CLASS(gbtRationalEditorRefData, 
				     wxSheetCellTextEditorRefData)    
};

#endif  // RENRATIO_H


syntax highlighted by Code2HTML, v. 0.9.1