+++ /dev/null
-/////////////////////////////////////////////////////////////////////////////
-// Name: accel.cpp
-// Purpose: wxAcceleratorTable
-// Author: Julian Smart
-// Modified by:
-// Created: 17/09/98
-// RCS-ID: $Id$
-// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifdef __GNUG__
-#pragma implementation "accel.h"
-#endif
-
-#include "wx/setup.h"
-#include "wx/accel.h"
-#include "wx/string.h"
-#include "wx/utils.h"
-#include <ctype.h>
-
-IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject)
-
-class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData
-{
- friend class WXDLLEXPORT wxAcceleratorTable;
-public:
- wxAcceleratorRefData();
- ~wxAcceleratorRefData();
-
-public:
- int m_count;
- wxAcceleratorEntry* m_entries;
-};
-
-#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData)
-
-wxAcceleratorRefData::wxAcceleratorRefData()
-{
- m_count = 0;
- m_entries = (wxAcceleratorEntry*) NULL;
-}
-
-wxAcceleratorRefData::~wxAcceleratorRefData()
-{
- delete[] m_entries;
- m_entries = (wxAcceleratorEntry*) NULL;
- m_count = 0;
-}
-
-wxAcceleratorTable::wxAcceleratorTable()
-{
- m_refData = (wxAcceleratorRefData*) NULL;
-}
-
-wxAcceleratorTable::~wxAcceleratorTable()
-{
- // Data deleted in ~wxObject
-}
-
-// Load from .rc resource
-wxAcceleratorTable::wxAcceleratorTable(const wxString& WXUNUSED(resource))
-{
- m_refData = new wxAcceleratorRefData;
-}
-
-// Create from an array
-wxAcceleratorTable::wxAcceleratorTable(int n, wxAcceleratorEntry entries[])
-{
- wxAcceleratorRefData* data = new wxAcceleratorRefData;
- m_refData = data;
-
- data->m_count = n;
- data->m_entries = new wxAcceleratorEntry[n];
- int i;
- for (i = 0; i < n; i++)
- data->m_entries[i] = entries[i];
-
-}
-
-bool wxAcceleratorTable::Ok() const
-{
- return (m_refData != (wxAcceleratorRefData*) NULL);
-}
-
-int wxAcceleratorTable::GetCount() const
-{
- return M_ACCELDATA->m_count;
-}
-
-wxAcceleratorEntry* wxAcceleratorTable::GetEntries() const
-{
- return M_ACCELDATA->m_entries;
-}
-
-// Implementation use only
-bool wxAcceleratorEntry::MatchesEvent(const wxKeyEvent& event) const
-{
- bool eventAltDown = event.AltDown();
- bool eventCtrlDown = event.ControlDown();
- bool eventShiftDown = event.ShiftDown();
- int eventKeyCode = event.KeyCode();
-
- bool accAltDown = ((GetFlags() & wxACCEL_ALT) == wxACCEL_ALT);
- bool accCtrlDown = ((GetFlags() & wxACCEL_CTRL) == wxACCEL_CTRL);
- bool accShiftDown = ((GetFlags() & wxACCEL_SHIFT) == wxACCEL_SHIFT);
- int accKeyCode = GetKeyCode();
- int accKeyCode2 = GetKeyCode();
- if (isascii(accKeyCode2))
- accKeyCode2 = tolower(accKeyCode2);
-
- return ((eventAltDown == accAltDown) && (eventCtrlDown == accCtrlDown) &&
- (eventShiftDown == accShiftDown) &&
- ((eventKeyCode == accKeyCode || eventKeyCode == accKeyCode2))) ;
-}
-