Menuing and statusbar updates

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15087 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster
2002-04-10 22:29:32 +00:00
parent 67d947ba89
commit 938aa9c461
7 changed files with 109 additions and 25 deletions

View File

@@ -333,6 +333,10 @@ protected:
,int nFillStyle = wxODDEVEN_RULE
);
#if wxUSE_PALETTE
void DoSelectPalette(bool bRealize = FALSE);
void InitializePalette(void);
#endif // wxUSE_PALETTE
//
// common part of DoDrawText() and DoDrawRotatedText()

View File

@@ -13,10 +13,11 @@
#define _WX_MENU_H_
#if wxUSE_ACCEL
#include "wx/accel.h"
#include "wx/dynarray.h"
// #include "wx/accel.h"
// #include "wx/list.h" // for "template" list classes
// #include "wx/dynarray.h"
WX_DEFINE_EXPORTED_ARRAY(wxAcceleratorEntry *, wxAcceleratorArray);
// WX_DECLARE_EXPORTED_LIST(wxAcceleratorEntry, wxAcceleratorList);
#endif // wxUSE_ACCEL
class WXDLLEXPORT wxFrame;
@@ -99,8 +100,8 @@ public:
//
// Called by wxMenuBar to build its accel table from the accels of all menus
//
bool HasAccels(void) const { return !m_vAccels.IsEmpty(); }
size_t GetAccelCount(void) const { return m_vAccels.GetCount(); }
bool HasAccels(void) const { return m_vAccels[0] != NULL; }
size_t GetAccelCount(void) const { return (size_t)m_nNextAccel; }
size_t CopyAccels(wxAcceleratorEntry* pAccels) const;
//
@@ -170,7 +171,8 @@ private:
//
// The accelerators for our menu items
//
wxAcceleratorArray m_vAccels;
wxAcceleratorEntry* m_vAccels[128];
int m_nNextAccel;
#endif // wxUSE_ACCEL
DECLARE_DYNAMIC_CLASS(wxMenu)

View File

@@ -1366,6 +1366,52 @@ void wxDC::DoDrawRotatedText(
// set GDI objects
// ---------------------------------------------------------------------------
void wxDC::DoSelectPalette(
bool bRealize
)
{
//
// Set the old object temporarily, in case the assignment deletes an object
// that's not yet selected out.
//
if (m_hOldPalette)
{
m_hOldPalette = 0;
}
if (m_palette.Ok())
{
HPALETTE hOldPal;
hOldPal = ::GpiSelectPalette((HDC) m_hPS, (HPALETTE) m_palette.GetHPALETTE());
if (!m_hOldPalette)
m_hOldPalette = (WXHPALETTE)hOldPal;
}
} // end of wxDC::DoSelectPalette
void wxDC::InitializePalette()
{
if (wxDisplayDepth() <= 8 )
{
//
// Look for any window or parent that has a custom palette. If any has
// one then we need to use it in drawing operations
//
wxWindow* pWin = m_pCanvas->GetAncestorWithCustomPalette();
m_hasCustomPalette = pWin && pWin->HasCustomPalette();
if (m_hasCustomPalette)
{
m_palette = pWin->GetPalette();
//
// turn on PM translation for this palette
//
DoSelectPalette();
}
}
} // end of wxDC::InitializePalette
void wxDC::SetPalette(
const wxPalette& rPalette
)

View File

@@ -144,10 +144,6 @@ void wxWindowDC::InitDC()
{
wxColour vColor;
vColor.InitFromName("BLACK");
m_pen.SetColour(vColor);
vColor.Set("WHITE");
m_brush.SetColour(vColor);
//
// The background mode is only used for text background and is set in
// DrawText() to OPAQUE as required, otherwise always TRANSPARENT,
@@ -158,6 +154,12 @@ void wxWindowDC::InitDC()
// Default bg colour is pne of the window
//
SetBackground(wxBrush(m_pCanvas->GetBackgroundColour(), wxSOLID));
vColor.InitFromName("BLACK");
m_pen.SetColour(vColor);
vColor.Set("WHITE");
m_brush.SetColour(vColor);
InitializePalette();
} // end of wxWindowDC::InitDC
void wxWindowDC::DoGetSize(

View File

@@ -151,6 +151,9 @@ void wxMenu::Init()
);
AppendSeparator();
}
for (int i = 0; i < 128; i++)
m_vAccels[i] = NULL;
m_nNextAccel = 0;
} // end of wxMenu::Init
//
@@ -175,7 +178,15 @@ wxMenu::~wxMenu()
// Delete accels
//
#if (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 )))
WX_CLEAR_ARRAY(m_vAccels);
for (int i = 0; i < 128; i++)
{
if (m_vAccels[i])
{
delete m_vAccels[i];
m_vAccels[i] = NULL;
}
}
// WX_CLEAR_ARRAY(m_vAccels);
#endif
#endif // wxUSE_ACCEL
} // end of wxMenu::~wxMenu
@@ -201,13 +212,16 @@ int wxMenu::FindAccel(
) const
{
size_t n;
size_t nCount = m_vAccels.GetCount();
// size_t nCount = m_vAccels.GetCount();
for (n = 0; n < nCount; n++)
for (n = 0; n < m_nNextAccel; n++)
{
if (m_vAccels[n] != NULL)
{
if (m_vAccels[n]->m_command == nId)
return n;
}
}
return wxNOT_FOUND;
} // end of wxMenu::FindAccel
@@ -238,7 +252,7 @@ void wxMenu::UpdateAccel(
//
// Find the old one
//
int n = FindAccel(pItem->GetId());
size_t n = FindAccel(pItem->GetId());
if (n == wxNOT_FOUND)
{
@@ -246,7 +260,15 @@ void wxMenu::UpdateAccel(
// No old, add new if any
//
if (pAccel)
m_vAccels.Add(pAccel);
{
if (m_nNextAccel < 128)
{
m_vAccels[m_nNextAccel] = pAccel;
m_nNextAccel++;
}
else
return; // skipping RebuildAccelTable() below
}
else
return; // skipping RebuildAccelTable() below
}
@@ -256,11 +278,10 @@ void wxMenu::UpdateAccel(
// Replace old with new or just remove the old one if no new
//
delete m_vAccels[n];
m_vAccels[n] = NULL;
if (pAccel)
m_vAccels[n] = pAccel;
else
m_vAccels.RemoveAt(n);
}
if (IsAttached())
@@ -280,6 +301,10 @@ bool wxMenu::DoInsertOrAppend(
, size_t nPos
)
{
wxMenu* pSubmenu = pItem->GetSubMenu();
MENUITEM& rItem = (pSubmenu != NULL)?pSubmenu->m_vMenuData:
pItem->m_vMenuData;
ERRORID vError;
wxString sError;
char zMsg[128];
@@ -292,9 +317,6 @@ bool wxMenu::DoInsertOrAppend(
// MENUITEM for submenus as required by ::MM_INSERTITEM message API
//
wxMenu* pSubmenu = pItem->GetSubMenu();
MENUITEM& rItem = (pSubmenu != NULL)?pSubmenu->m_vMenuData:
pItem->m_vMenuData;
if(pSubmenu != NULL)
{
wxASSERT_MSG(pSubmenu->GetHMenu(), wxT("invalid submenu"));
@@ -521,7 +543,7 @@ wxMenuItem* wxMenu::DoRemove(
if (n != wxNOT_FOUND)
{
delete m_vAccels[n];
m_vAccels.RemoveAt(n);
m_vAccels[n] = NULL;
}
#endif // wxUSE_ACCEL

View File

@@ -153,6 +153,8 @@ wxMenuItem::wxMenuItem(
#endif // owner drawn
{
wxASSERT_MSG(pParentMenu != NULL, wxT("a menu item should have a parent"));
memset(&m_vMenuData, '\0', sizeof(m_vMenuData));
m_vMenuData.id = (USHORT)nId;
Init();
} // end of wxMenuItem::wxMenuItem

View File

@@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL
CODE LOADONCALL
EXPORTS
;From library: H:\Dev\Wx2\WxWindows\lib\wx.lib
;From library: H:\DEV\Wx2\WxWindows\lib\wx.lib
;From object file: dummy.cpp
;PUBDEFs (Symbols available from object file):
wxDummyChar
@@ -12133,6 +12133,8 @@ EXPORTS
QueryTextBkColor__FUl
;wxDC::SelectOldObjects(unsigned long)
SelectOldObjects__4wxDCFUl
;wxDC::DoSelectPalette(unsigned long)
DoSelectPalette__4wxDCFUl
;SetBkMode(unsigned long,int)
SetBkMode__FUli
;wxDC::DoSetClippingRegion(int,int,int,int)
@@ -12155,6 +12157,8 @@ EXPORTS
DoDrawIcon__4wxDCFRC6wxIconiT2
;wxDC::StartPage()
StartPage__4wxDCFv
;wxDC::InitializePalette()
InitializePalette__4wxDCFv
;wxDC::GetCharWidth() const
GetCharWidth__4wxDCCFv
;wxDC::DoDrawRotatedText(const wxString&,int,int,double)
@@ -14276,6 +14280,8 @@ EXPORTS
OnCut__10wxTextCtrlFR14wxCommandEvent
;wxTextCtrl::OnCopy(wxCommandEvent&)
OnCopy__10wxTextCtrlFR14wxCommandEvent
;wxTextCtrl::EmulateKeyPress(const wxKeyEvent&)
EmulateKeyPress__10wxTextCtrlFRC10wxKeyEvent
;wxConstructorForwxTextCtrl()
wxConstructorForwxTextCtrl__Fv
;wxTextCtrl::wxTextCtrl()