/////////////////////////////////////////////////////////////////////////////// // Name: palmos/statusbr.cpp // Purpose: Implementation of wxStatusBar for PalmOS // Author: William Osborne // Modified by: // Created: 10/13/04 // RCS-ID: $Id: // Copyright: (c) William Osborne // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "statusbr.h" #endif // for compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/setup.h" #include "wx/frame.h" #include "wx/settings.h" #include "wx/dcclient.h" #endif #if wxUSE_STATUSBAR && wxUSE_NATIVE_STATUSBAR #include "wx/intl.h" #include "wx/log.h" #include "wx/statusbr.h" // ---------------------------------------------------------------------------- // macros // ---------------------------------------------------------------------------- // ============================================================================ // implementation // ============================================================================ // ---------------------------------------------------------------------------- // wxStatusBarPalm class // ---------------------------------------------------------------------------- wxStatusBarPalm::wxStatusBarPalm() { SetParent(NULL); m_hWnd = 0; m_windowId = 0; } bool wxStatusBarPalm::Create(wxWindow *parent, wxWindowID id, long style, const wxString& name) { wxCHECK_MSG( parent, FALSE, wxT("status bar must have a parent") ); StatusTextBuffer = NULL; SetName(name); SetParent(parent); parent->AddChild(this); m_windowId = id == -1 ? NewControlId() : id; SetFieldsCount(1); SubclassWin(m_hWnd); return TRUE; } wxStatusBarPalm::~wxStatusBarPalm() { DeleteStatusBuffer(); } void wxStatusBarPalm::SetFieldsCount(int nFields, const int *widths) { // this is a Windows limitation wxASSERT_MSG( (nFields > 0) && (nFields < 255), _T("too many fields") ); wxStatusBarBase::SetFieldsCount(nFields, widths); SetFieldsWidth(); } void wxStatusBarPalm::SetStatusWidths(int n, const int widths[]) { wxStatusBarBase::SetStatusWidths(n, widths); SetFieldsWidth(); } void wxStatusBarPalm::SetFieldsWidth() { // clear the status bar DeleteStatusBuffer(); } void wxStatusBarPalm::SetStatusText(const wxString& strText, int nField) { wxCHECK_RET( (nField >= 0) && (nField < m_nFields), _T("invalid statusbar field index") ); SetStatusBufferText(strText,nField); DrawStatusBar(); } wxString wxStatusBarPalm::GetStatusText(int nField) const { wxCHECK_MSG( (nField >= 0) && (nField < m_nFields), wxEmptyString, _T("invalid statusbar field index") ); wxString text; return text; } void wxStatusBarPalm::DrawStatusBar() { int i=0; int leftPos=0; wxArrayInt widthsAbs; wxString text; RectangleType EraseRect; EraseRect.topLeft.x=0; EraseRect.topLeft.y=160-FntCharHeight()-1; EraseRect.extent.x=159; EraseRect.extent.y=159; WinEraseRectangle(&EraseRect,0); if(m_nFields>0) widthsAbs=CalculateAbsWidths(160 - 2*(m_nFields - 1)); for(i=0;iInsert(tmp); } wxString wxStatusBarPalm::GetStatusBufferText(int number) { wxListString *st = GetStatusBufferStack(number); if(st==0) return ""; wxListString::compatibility_iterator top = st->GetFirst(); return(*top->GetData()); } wxListString *wxStatusBarPalm::GetOrCreateStatusBuffer(int i) { if(!StatusTextBuffer) { StatusTextBuffer = new wxListString*[m_nFields]; size_t j; for(j = 0; j < (size_t)m_nFields; ++j) StatusTextBuffer[j] = 0; } if(!StatusTextBuffer[i]) { StatusTextBuffer[i] = new wxListString(); } else { wxListString *st=StatusTextBuffer[i]; wxListString::compatibility_iterator top = st->GetFirst(); delete top->GetData(); st->Erase(top); delete st; StatusTextBuffer[i] = new wxListString(); } return StatusTextBuffer[i]; } wxListString *wxStatusBarPalm::GetStatusBufferStack(int i) const { if(!StatusTextBuffer) return 0; return StatusTextBuffer[i]; } void wxStatusBarPalm::DeleteStatusBuffer() { int i=0; if(!StatusTextBuffer) { return; } for(i=0;iGetFirst(); delete top->GetData(); st->Erase(top); delete st; StatusTextBuffer[i]=0; } } delete[] m_statusTextStacks; } int wxStatusBarPalm::GetBorderX() const { return 0; } int wxStatusBarPalm::GetBorderY() const { return 0; } void wxStatusBarPalm::SetMinHeight(int height) { } bool wxStatusBarPalm::GetFieldRect(int i, wxRect& rect) const { } void wxStatusBarPalm::DoMoveWindow(int x, int y, int width, int height) { } #endif // wxUSE_NATIVE_STATUSBAR