// Modified by:
// Created: 14.08.00
// RCS-ID: $Id$
-// Copyright: (c) 2000 Vadim Zeitlin <vadim@wxwindows.org>
-// Licence: wxWindows license
+// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
-#ifdef __GNUG__
- #pragma implementation "control.h"
-#endif
-
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#if wxUSE_CONTROLS
+#include "wx/control.h"
+
#ifndef WX_PRECOMP
#include "wx/app.h"
- #include "wx/control.h"
#include "wx/dcclient.h"
#endif
IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow)
BEGIN_EVENT_TABLE(wxControl, wxControlBase)
- EVT_KEY_DOWN(wxControl::OnKeyDown)
- EVT_KEY_UP(wxControl::OnKeyUp)
-
- EVT_MOUSE_EVENTS(wxControl::OnMouse)
-
- EVT_SET_FOCUS(wxControl::OnFocus)
- EVT_KILL_FOCUS(wxControl::OnFocus)
-
- EVT_ACTIVATE(wxControl::OnActivate)
+ WX_EVENT_TABLE_INPUT_CONSUMER(wxControl)
END_EVENT_TABLE()
+WX_FORWARD_TO_INPUT_CONSUMER(wxControl)
+
// ----------------------------------------------------------------------------
// creation
// ----------------------------------------------------------------------------
void wxControl::Init()
{
m_indexAccel = -1;
-
- m_handler = (wxInputHandler *)NULL;
}
bool wxControl::Create(wxWindow *parent,
const wxString& name)
{
if ( !wxControlBase::Create(parent, id, pos, size, style, validator, name) )
- return FALSE;
+ {
+ // underlying window creation failed?
+ return false;
+ }
- return TRUE;
+ return true;
}
// ----------------------------------------------------------------------------
}
int indexAccel = -1;
- for ( const wxChar *pc = label; *pc != wxT('\0'); pc++ )
+ for ( wxString::const_iterator pc = label.begin(); pc != label.end(); ++pc )
{
if ( *pc == MNEMONIC_PREFIX )
{
- pc++; // skip it
- if ( *pc != MNEMONIC_PREFIX )
+ ++pc; // skip it
+ if ( pc == label.end() )
+ break;
+ else if ( *pc != MNEMONIC_PREFIX )
{
if ( indexAccel == -1 )
{
// remember it (-1 is for MNEMONIC_PREFIX itself
- indexAccel = pc - label.c_str() - 1;
+ indexAccel = pc - label.begin() - 1;
}
else
{
void wxControl::SetLabel(const wxString& label)
{
- wxString labelOld = m_label;
- m_indexAccel = FindAccelIndex(label, &m_label);
-
- if ( m_label != labelOld )
- {
- Refresh();
- }
-}
-
-wxString wxControl::GetLabel() const
-{
- return m_label;
-}
-
-// ----------------------------------------------------------------------------
-// focus/activation handling
-// ----------------------------------------------------------------------------
-
-void wxControl::OnFocus(wxFocusEvent& event)
-{
- if ( m_handler && m_handler->HandleFocus(this, event) )
- Refresh();
- else
- event.Skip();
-}
-
-void wxControl::OnActivate(wxActivateEvent& event)
-{
- if ( m_handler && m_handler->HandleActivation(this, event.GetActive()) )
- Refresh();
- else
- event.Skip();
-}
-
-// ----------------------------------------------------------------------------
-// input processing
-// ----------------------------------------------------------------------------
-
-void wxControl::CreateInputHandler(const wxString& inphandler)
-{
- m_handler = wxTheme::Get()->GetInputHandler(inphandler);
-}
+ // save original label
+ wxControlBase::SetLabel(label);
-void wxControl::OnKeyDown(wxKeyEvent& event)
-{
- if ( !m_handler || !m_handler->HandleKey(this, event, TRUE) )
- event.Skip();
+ UnivDoSetLabel(label);
}
-void wxControl::OnKeyUp(wxKeyEvent& event)
+void wxControl::UnivDoSetLabel(const wxString& label)
{
- if ( !m_handler || !m_handler->HandleKey(this, event, FALSE) )
- event.Skip();
-}
+ wxString labelOld = m_label;
+ m_indexAccel = FindAccelIndex(label, &m_label);
-void wxControl::OnMouse(wxMouseEvent& event)
-{
- if ( m_handler )
+ if ( m_label != labelOld )
{
- if ( event.Moving() || event.Entering() || event.Leaving() )
- {
- if ( m_handler->HandleMouseMove(this, event) )
- return;
- }
- else // a click action
- {
- if ( m_handler->HandleMouse(this, event) )
- return;
- }
+ Refresh();
}
-
- event.Skip();
-}
-
-// ----------------------------------------------------------------------------
-// the actions
-// ----------------------------------------------------------------------------
-
-bool wxControl::PerformAction(const wxControlAction& action,
- long numArg,
- const wxString& strArg)
-{
- return FALSE;
}
#endif // wxUSE_CONTROLS