/////////////////////////////////////////////////////////////////////////////
// Name:        statusbr.h
// Purpose:     wxStatusBar class
// Author:      Julian Smart
// Modified by:
// Created:     01/02/97
// RCS-ID:      $Id$
// Copyright:   (c) Julian Smart and Markus Holzem
// Licence:   	wxWindows license
/////////////////////////////////////////////////////////////////////////////

#ifndef __STATUSBRH_G__
#define __STATUSBRH_G__

#ifdef __GNUG__
#pragma interface "statusbr.h"
#endif

#include "wx/window.h"

WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr;

class WXDLLEXPORT wxStatusBar: public wxWindow
{
  DECLARE_DYNAMIC_CLASS(wxStatusBar)

public:
  wxStatusBar(void);
  inline wxStatusBar(wxWindow *parent, wxWindowID id,
           const wxPoint& pos = wxDefaultPosition,
           const wxSize& size = wxDefaultSize,
           long style = 0,
           const wxString& name = wxPanelNameStr)
  {
      Create(parent, id, pos, size, style, name);
  }

  ~wxStatusBar();

  bool Create(wxWindow *parent, wxWindowID id,
           const wxPoint& pos = wxDefaultPosition,
           const wxSize& size = wxDefaultSize,
           long style = 0,
           const wxString& name = wxPanelNameStr);

  // Create status line
  virtual void SetFieldsCount(int number=1, const int widths[] = NULL);
  inline int GetFieldsCount() const { return m_nFields; }

  // Set status line text
  virtual void SetStatusText(const wxString& text, int number = 0);
  virtual wxString GetStatusText(int number = 0) const;

  // Set status line widths
  virtual void SetStatusWidths(int n, const int widths_field[]);

  virtual void DrawFieldText(wxDC& dc, int i);
  virtual void DrawField(wxDC& dc, int i);

  // Get the position and size of the field's internal bounding rectangle
  virtual bool GetFieldRect(int i, wxRectangle& rect) const;

  inline int GetBorderX() const { return m_borderX; }
  inline int GetBorderY() const { return m_borderY; }
  inline void SetBorderX(int x);
  inline void SetBorderY(int y);

  ////////////////////////////////////////////////////////////////////////
  // Implementation

  void OnPaint(wxPaintEvent& event);

  virtual void InitColours();

  // Responds to colour changes
  void OnSysColourChanged(wxSysColourChangedEvent& event);

protected:
  int *             m_statusWidths;
  int               m_nFields;
  wxString *        m_statusStrings;
  int               m_borderX;
  int               m_borderY;
  wxFont            m_defaultStatusBarFont;
  wxPen             m_mediumShadowPen;
  wxPen             m_hilightPen;

  DECLARE_EVENT_TABLE()
};

#endif
    // __STATUSBRH_G__
