/////////////////////////////////////////////////////////////////////////////
// Name: control.cpp
-// Purpose:
-// Author: Robert Roebling
-// Created: 01/02/97
-// Id:
-// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence: wxWindows licence
+// Purpose: wxControl class
+// Author: AUTHOR
+// Modified by:
+// Created: ??/??/98
+// RCS-ID: $Id$
+// Copyright: (c) AUTHOR
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#include "wx/control.h"
-//-----------------------------------------------------------------------------
-// wxControl
-//-----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow)
-IMPLEMENT_DYNAMIC_CLASS(wxControl,wxWindow)
+BEGIN_EVENT_TABLE(wxControl, wxWindow)
+END_EVENT_TABLE()
-wxControl::wxControl(void)
+// Item members
+wxControl::wxControl()
{
-};
+ m_backgroundColour = *wxWHITE;
+ m_foregroundColour = *wxBLACK;
+ m_callback = 0;
+}
-wxControl::wxControl( wxWindow *parent, wxWindowID id,
- const wxPoint &pos, const wxSize &size,
- long style, const wxString &name ) :
- wxWindow( parent, id, pos, size, style, name )
+wxControl::~wxControl()
{
-};
+ // If we delete an item, we should initialize the parent panel,
+ // because it could now be invalid.
+ wxWindow *parent = (wxWindow *)GetParent();
+ if (parent)
+ {
+ if (parent->GetDefaultItem() == this)
+ parent->SetDefaultItem(NULL);
+ }
+}
-void wxControl::Command( wxCommandEvent &WXUNUSED(event) )
+void wxControl::SetLabel(const wxString& label)
{
-};
+ // TODO
+}
-void wxControl::SetLabel( const wxString &label )
+wxString wxControl::GetLabel() const
{
- for ( const char *pc = label; *pc != '\0'; pc++ ) {
- if ( *pc == '&' ) {
- pc++; // skip it
-#if 0 // it would be unused anyhow for now - kbd interface not done yet
- if ( *pc != '&' )
- m_chAccel = *pc;
-#endif
+ // TODO
+ return wxString("");
+}
+
+/*
+ * Allocates control IDs within the appropriate range
+ */
+
+int NewControlId()
+{
+ static int s_controlId = 0;
+ s_controlId ++;
+ return s_controlId;
+}
+
+void wxControl::ProcessCommand (wxCommandEvent & event)
+{
+ // Tries:
+ // 1) A callback function (to become obsolete)
+ // 2) OnCommand, starting at this window and working up parent hierarchy
+ // 3) OnCommand then calls ProcessEvent to search the event tables.
+ if (m_callback)
+ {
+ (void) (*(m_callback)) (*this, event);
}
+ else
+ {
+ GetEventHandler()->OnCommand(*this, event);
+ }
+}
- m_label << *pc;
- }
-};
+void wxControl::SetClientSize (int width, int height)
+{
+ SetSize (-1, -1, width, height);
+}
-wxString wxControl::GetLabel(void) const
+void wxControl::Centre (int direction)
{
- return m_label;
-};
+ int x, y, width, height, panel_width, panel_height, new_x, new_y;
+
+ wxWindow *parent = (wxWindow *) GetParent ();
+ if (!parent)
+ return;
+
+ parent->GetClientSize (&panel_width, &panel_height);
+ GetSize (&width, &height);
+ GetPosition (&x, &y);
+
+ new_x = x;
+ new_y = y;
+
+ if (direction & wxHORIZONTAL)
+ new_x = (int) ((panel_width - width) / 2);
+ if (direction & wxVERTICAL)
+ new_y = (int) ((panel_height - height) / 2);
+ SetSize (new_x, new_y, width, height);
+}