Commited FRM's stockitem patch (empty stock items).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40978 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2006-09-03 12:23:04 +00:00
parent eae0338fcb
commit ee0a94cfc2
24 changed files with 534 additions and 207 deletions

View File

@@ -35,6 +35,7 @@ bool wxIsStockID(wxWindowID id)
{
switch (id)
{
case wxID_ABOUT:
case wxID_ADD:
case wxID_APPLY:
case wxID_BOLD:
@@ -44,7 +45,9 @@ bool wxIsStockID(wxWindowID id)
case wxID_COPY:
case wxID_CUT:
case wxID_DELETE:
case wxID_EDIT:
case wxID_FIND:
case wxID_FILE:
case wxID_REPLACE:
case wxID_BACKWARD:
case wxID_DOWN:
@@ -75,6 +78,7 @@ bool wxIsStockID(wxWindowID id)
case wxID_REVERT_TO_SAVED:
case wxID_SAVE:
case wxID_SAVEAS:
case wxID_SELECTALL:
case wxID_STOP:
case wxID_UNDELETE:
case wxID_UNDERLINE:
@@ -92,7 +96,7 @@ bool wxIsStockID(wxWindowID id)
}
}
wxString wxGetStockLabel(wxWindowID id, bool withCodes, const wxString& accelerator)
wxString wxGetStockLabel(wxWindowID id, long flags)
{
wxString stockLabel;
@@ -103,6 +107,7 @@ wxString wxGetStockLabel(wxWindowID id, bool withCodes, const wxString& accelera
switch (id)
{
STOCKITEM(wxID_ABOUT, _("&About"))
STOCKITEM(wxID_ADD, _("Add"))
STOCKITEM(wxID_APPLY, _("&Apply"))
STOCKITEM(wxID_BOLD, _("&Bold"))
@@ -112,7 +117,9 @@ wxString wxGetStockLabel(wxWindowID id, bool withCodes, const wxString& accelera
STOCKITEM(wxID_COPY, _("&Copy"))
STOCKITEM(wxID_CUT, _("Cu&t"))
STOCKITEM(wxID_DELETE, _("&Delete"))
STOCKITEM(wxID_EDIT, _("&Edit"))
STOCKITEM(wxID_FIND, _("&Find"))
STOCKITEM(wxID_FILE, _("&File"))
STOCKITEM(wxID_REPLACE, _("Rep&lace"))
STOCKITEM(wxID_BACKWARD, _("&Back"))
STOCKITEM(wxID_DOWN, _("&Down"))
@@ -143,6 +150,7 @@ wxString wxGetStockLabel(wxWindowID id, bool withCodes, const wxString& accelera
STOCKITEM(wxID_REVERT_TO_SAVED, _("Revert to Saved"))
STOCKITEM(wxID_SAVE, _("&Save"))
STOCKITEM(wxID_SAVEAS, _("Save &As..."))
STOCKITEM(wxID_SELECTALL, _("Select all"))
STOCKITEM(wxID_STOP, _("&Stop"))
STOCKITEM(wxID_UNDELETE, _("Undelete"))
STOCKITEM(wxID_UNDERLINE, _("&Underline"))
@@ -161,19 +169,57 @@ wxString wxGetStockLabel(wxWindowID id, bool withCodes, const wxString& accelera
#undef STOCKITEM
if(!withCodes)
if(flags & wxSTOCK_WITH_MNEMONIC)
{
stockLabel = wxStripMenuCodes( stockLabel );
}
else if (!stockLabel.empty() && !accelerator.empty())
if (!stockLabel.empty() && (flags & wxSTOCK_WITH_ACCELERATOR))
{
stockLabel += _T("\t");
stockLabel += accelerator;
wxAcceleratorEntry accel = wxGetStockAccelerator(id);
if (accel.IsOk())
stockLabel += accel.ToString();
}
return stockLabel;
}
wxAcceleratorEntry wxGetStockAccelerator(wxWindowID id)
{
wxAcceleratorEntry ret;
#define STOCKITEM(stockid, flags, keycode) \
case stockid: \
ret.Set(flags, keycode, stockid); \
break;
switch (id)
{
STOCKITEM(wxID_COPY, wxACCEL_CTRL,'C')
STOCKITEM(wxID_CUT, wxACCEL_CTRL,'X')
STOCKITEM(wxID_FIND, wxACCEL_CTRL,'F')
STOCKITEM(wxID_REPLACE, wxACCEL_CTRL,'R')
STOCKITEM(wxID_HELP, wxACCEL_CTRL,'H')
STOCKITEM(wxID_NEW, wxACCEL_CTRL,'N')
STOCKITEM(wxID_OPEN, wxACCEL_CTRL,'O')
STOCKITEM(wxID_PASTE, wxACCEL_CTRL,'V')
STOCKITEM(wxID_SAVE, wxACCEL_CTRL,'S')
default:
// set the wxAcceleratorEntry to return into an invalid state:
// there's no stock accelerator for that.
ret.Set(0, 0, id);
break;
};
#undef STOCKITEM
// always use wxAcceleratorEntry::IsOk on returned value !
return ret;
}
bool wxIsStockLabel(wxWindowID id, const wxString& label)
{
if (label.empty())
@@ -212,8 +258,22 @@ const char *wxGetStockGtkID(wxWindowID id)
#define STOCKITEM_24(wx,gtk) STOCKITEM_MISSING(wx)
#endif
#if GTK_CHECK_VERSION(2,6,0)
#define STOCKITEM_26(wx,gtk) STOCKITEM(wx,gtk)
#else
#define STOCKITEM_26(wx,gtk) STOCKITEM_MISSING(wx)
#endif
#if GTK_CHECK_VERSION(2,10,0)
#define STOCKITEM_210(wx,gtk) STOCKITEM(wx,gtk)
#else
#define STOCKITEM_210(wx,gtk) STOCKITEM_MISSING(wx)
#endif
switch (id)
{
STOCKITEM_26(wxID_ABOUT, GTK_STOCK_ABOUT)
STOCKITEM(wxID_ADD, GTK_STOCK_ADD)
STOCKITEM(wxID_APPLY, GTK_STOCK_APPLY)
STOCKITEM(wxID_BOLD, GTK_STOCK_BOLD)
@@ -223,7 +283,9 @@ const char *wxGetStockGtkID(wxWindowID id)
STOCKITEM(wxID_COPY, GTK_STOCK_COPY)
STOCKITEM(wxID_CUT, GTK_STOCK_CUT)
STOCKITEM(wxID_DELETE, GTK_STOCK_DELETE)
STOCKITEM_26(wxID_EDIT, GTK_STOCK_EDIT)
STOCKITEM(wxID_FIND, GTK_STOCK_FIND)
STOCKITEM_26(wxID_FILE, GTK_STOCK_FILE)
STOCKITEM(wxID_REPLACE, GTK_STOCK_FIND_AND_REPLACE)
STOCKITEM(wxID_BACKWARD, GTK_STOCK_GO_BACK)
STOCKITEM(wxID_DOWN, GTK_STOCK_GO_DOWN)
@@ -254,6 +316,7 @@ const char *wxGetStockGtkID(wxWindowID id)
STOCKITEM(wxID_REVERT_TO_SAVED, GTK_STOCK_REVERT_TO_SAVED)
STOCKITEM(wxID_SAVE, GTK_STOCK_SAVE)
STOCKITEM(wxID_SAVEAS, GTK_STOCK_SAVE_AS)
STOCKITEM_210(wxID_SELECTALL, GTK_STOCK_SELECT_ALL)
STOCKITEM(wxID_STOP, GTK_STOCK_STOP)
STOCKITEM(wxID_UNDELETE, GTK_STOCK_UNDELETE)
STOCKITEM(wxID_UNDERLINE, GTK_STOCK_UNDERLINE)
@@ -275,4 +338,21 @@ const char *wxGetStockGtkID(wxWindowID id)
return NULL;
}
bool wxGetStockGtkAccelerator(const char *id, GdkModifierType *mod, guint *key)
{
GtkStockItem stock_item;
if (gtk_stock_lookup (id, &stock_item))
{
if (key) *key = stock_item.keyval;
if (mod) *mod = stock_item.modifier;
// some GTK stock items have zero values for the keyval;
// it means that they do not have an accelerator...
if (stock_item.keyval)
return true;
}
return false;
}
#endif // __WXGTK20__