/////////////////////////////////////////////////////////////////////////////
-// Name: accel.cpp
+// Name: src/os2/accel.cpp
// Purpose: wxAcceleratorTable
// Author: David Webster
// Modified by:
#ifndef WX_PRECOMP
#include <stdio.h>
-#include "wx/setup.h"
#include "wx/window.h"
#include "wx/app.h"
#include "wx/frame.h"
wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow();
::WinSetAccelTable( vHabmain
- ,(HWND)pFrame->GetFrame()
,hAccel
+ ,(HWND)pFrame->GetFrame()
);
}
M_ACCELDATA->m_hAccel = hAccel;
// Create from an array
wxAcceleratorTable::wxAcceleratorTable(
int n
-, wxAcceleratorEntry vaEntries[]
+, const wxAcceleratorEntry vaEntries[]
)
{
int nAccelLength = ((sizeof(ACCEL) * n) + sizeof(ACCELTABLE));
USHORT uVirt = AF_CHAR;
if (vaEntries[i].GetFlags() & wxACCEL_ALT)
+ {
uVirt |= AF_ALT;
+ uVirt |= AF_VIRTUALKEY;
+ }
if (vaEntries[i].GetFlags() & wxACCEL_SHIFT)
+ {
uVirt |= AF_SHIFT;
+ uVirt |= AF_VIRTUALKEY;
+ }
if (vaEntries[i].GetFlags() & wxACCEL_CTRL)
+ {
uVirt |= AF_CONTROL;
+ uVirt |= AF_VIRTUALKEY;
+ }
- bool bIsVirtual;
- USHORT uKey = wxCharCodeWXToOS2( vaEntries[i].GetKeyCode()
- ,&bIsVirtual
- );
+ bool bIsVirtual;
+ USHORT uKey = (USHORT)wxCharCodeWXToOS2( vaEntries[i].GetKeyCode(),
+ &bIsVirtual);
if (bIsVirtual)
uVirt = AF_CHAR | AF_VIRTUALKEY;
- USHORT uCmd = vaEntries[i].GetCommand();
+ USHORT uCmd = (USHORT)vaEntries[i].GetCommand();
pArr->aaccel[i].fs = uVirt;
pArr->aaccel[i].key = uKey;
pArr->aaccel[i].cmd = uCmd;
}
- pArr->codepage = 437; // default to english Fix???
+ pArr->codepage = (USHORT)::WinQueryCp(wxTheApp->m_hMq);
pArr->cAccel = (USHORT)n;
M_ACCELDATA->m_hAccel = ::WinCreateAccelTable( vHabmain
,pArr
//
// If we have accelerators the top window is the frame
//
- wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow();
+ wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow();
::WinSetAccelTable( vHabmain
- ,(HWND)pFrame->GetFrame()
,M_ACCELDATA->m_hAccel
+ ,(HWND)pFrame->GetFrame()
);
}
) const
{
PQMSG pMsg = (PQMSG)pWxmsg;
-
- return Ok() && ::WinTranslateAccel( vHabmain
- ,(HWND)hWnd
- ,GetHaccel()
- ,pMsg
- );
+ BOOL rc = FALSE;
+
+ rc = ::WinTranslateAccel( vHabmain
+ ,(HWND)hWnd
+ ,GetHaccel()
+ ,pMsg
+ );
+ return (Ok() && rc);
} // end of wxAcceleratorTable::Translate
+// ---------------------------------------------------------------------------
+// function for translating labels
+// ---------------------------------------------------------------------------
+
+wxString wxPMTextToLabel( const wxString& rsTitle )
+{
+ wxString sTitle;
+ const wxChar* zPc;
+
+ if (rsTitle.empty())
+ return(sTitle);
+
+ for (zPc = rsTitle.c_str(); *zPc != wxT('\0'); zPc++)
+ {
+ if (*zPc == wxT('&'))
+ {
+ if (*(zPc + 1) == wxT('&'))
+ {
+ zPc++;
+ sTitle << wxT('&');
+ }
+ else
+ sTitle << wxT('~');
+ }
+ else
+ {
+ if ( *zPc == wxT('~'))
+ {
+ //
+ // Tildes must be doubled to prevent them from being
+ // interpreted as accelerator character prefix by PM ???
+ //
+ sTitle << *zPc;
+ }
+ sTitle << *zPc;
+ }
+ }
+ return(sTitle);
+} // end of wxPMTextToLabel