XRCID lookup now handles standard IDs correctly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -795,28 +795,7 @@ long wxXmlResourceHandler::GetLong(const wxString& param, long defaultv)
|
|||||||
|
|
||||||
int wxXmlResourceHandler::GetID()
|
int wxXmlResourceHandler::GetID()
|
||||||
{
|
{
|
||||||
wxString sid = GetName();
|
return wxXmlResource::GetXRCID(GetName());
|
||||||
long num;
|
|
||||||
|
|
||||||
if (sid == wxT("-1")) return -1;
|
|
||||||
else if (sid.IsNumber() && sid.ToLong(&num)) return num;
|
|
||||||
#define stdID(id) else if (sid == wxT(#id)) return id
|
|
||||||
stdID(wxID_OPEN); stdID(wxID_CLOSE); stdID(wxID_NEW);
|
|
||||||
stdID(wxID_SAVE); stdID(wxID_SAVEAS); stdID(wxID_REVERT);
|
|
||||||
stdID(wxID_EXIT); stdID(wxID_UNDO); stdID(wxID_REDO);
|
|
||||||
stdID(wxID_HELP); stdID(wxID_PRINT); stdID(wxID_PRINT_SETUP);
|
|
||||||
stdID(wxID_PREVIEW); stdID(wxID_ABOUT); stdID(wxID_HELP_CONTENTS);
|
|
||||||
stdID(wxID_HELP_COMMANDS); stdID(wxID_HELP_PROCEDURES);
|
|
||||||
stdID(wxID_CUT); stdID(wxID_COPY); stdID(wxID_PASTE);
|
|
||||||
stdID(wxID_CLEAR); stdID(wxID_FIND); stdID(wxID_DUPLICATE);
|
|
||||||
stdID(wxID_SELECTALL); stdID(wxID_OK); stdID(wxID_CANCEL);
|
|
||||||
stdID(wxID_APPLY); stdID(wxID_YES); stdID(wxID_NO);
|
|
||||||
stdID(wxID_STATIC); stdID(wxID_FORWARD); stdID(wxID_BACKWARD);
|
|
||||||
stdID(wxID_DEFAULT); stdID(wxID_MORE); stdID(wxID_SETUP);
|
|
||||||
stdID(wxID_RESET); stdID(wxID_HELP_CONTEXT);
|
|
||||||
stdID(wxID_CLOSE_ALL);
|
|
||||||
#undef stdID
|
|
||||||
else return wxXmlResource::GetXRCID(sid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1177,7 +1156,7 @@ struct XRCID_record
|
|||||||
|
|
||||||
static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL};
|
static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL};
|
||||||
|
|
||||||
/*static*/ int wxXmlResource::GetXRCID(const wxChar *str_id)
|
static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = -2)
|
||||||
{
|
{
|
||||||
static int XRCID_LastID = wxID_HIGHEST;
|
static int XRCID_LastID = wxID_HIGHEST;
|
||||||
|
|
||||||
@@ -1205,20 +1184,30 @@ static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL};
|
|||||||
(*rec_var)->next = NULL;
|
(*rec_var)->next = NULL;
|
||||||
|
|
||||||
wxChar *end;
|
wxChar *end;
|
||||||
int asint = wxStrtol(str_id, &end, 10);
|
if (value_if_not_found != -2)
|
||||||
if (*str_id && *end == 0)
|
(*rec_var)->id = value_if_not_found;
|
||||||
{
|
|
||||||
// if str_id was integer, keep it verbosely:
|
|
||||||
(*rec_var)->id = asint;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(*rec_var)->id = ++XRCID_LastID;
|
int asint = wxStrtol(str_id, &end, 10);
|
||||||
|
if (*str_id && *end == 0)
|
||||||
|
{
|
||||||
|
// if str_id was integer, keep it verbosely:
|
||||||
|
(*rec_var)->id = asint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(*rec_var)->id = ++XRCID_LastID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (*rec_var)->id;
|
return (*rec_var)->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*static*/ int wxXmlResource::GetXRCID(const wxChar *str_id)
|
||||||
|
{
|
||||||
|
return XRCID_Lookup(str_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void CleanXRCID_Record(XRCID_record *rec)
|
static void CleanXRCID_Record(XRCID_record *rec)
|
||||||
{
|
{
|
||||||
@@ -1236,8 +1225,26 @@ static void CleanXRCID_Records()
|
|||||||
CleanXRCID_Record(XRCID_Records[i]);
|
CleanXRCID_Record(XRCID_Records[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void AddStdXRCID_Records()
|
||||||
|
{
|
||||||
|
#define stdID(id) XRCID_Lookup(wxT(#id), id)
|
||||||
|
stdID(-1);
|
||||||
|
stdID(wxID_OPEN); stdID(wxID_CLOSE); stdID(wxID_NEW);
|
||||||
|
stdID(wxID_SAVE); stdID(wxID_SAVEAS); stdID(wxID_REVERT);
|
||||||
|
stdID(wxID_EXIT); stdID(wxID_UNDO); stdID(wxID_REDO);
|
||||||
|
stdID(wxID_HELP); stdID(wxID_PRINT); stdID(wxID_PRINT_SETUP);
|
||||||
|
stdID(wxID_PREVIEW); stdID(wxID_ABOUT); stdID(wxID_HELP_CONTENTS);
|
||||||
|
stdID(wxID_HELP_COMMANDS); stdID(wxID_HELP_PROCEDURES);
|
||||||
|
stdID(wxID_CUT); stdID(wxID_COPY); stdID(wxID_PASTE);
|
||||||
|
stdID(wxID_CLEAR); stdID(wxID_FIND); stdID(wxID_DUPLICATE);
|
||||||
|
stdID(wxID_SELECTALL); stdID(wxID_OK); stdID(wxID_CANCEL);
|
||||||
|
stdID(wxID_APPLY); stdID(wxID_YES); stdID(wxID_NO);
|
||||||
|
stdID(wxID_STATIC); stdID(wxID_FORWARD); stdID(wxID_BACKWARD);
|
||||||
|
stdID(wxID_DEFAULT); stdID(wxID_MORE); stdID(wxID_SETUP);
|
||||||
|
stdID(wxID_RESET); stdID(wxID_HELP_CONTEXT);
|
||||||
|
stdID(wxID_CLOSE_ALL);
|
||||||
|
#undef stdID
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1252,6 +1259,7 @@ public:
|
|||||||
wxXmlResourceModule() {}
|
wxXmlResourceModule() {}
|
||||||
bool OnInit()
|
bool OnInit()
|
||||||
{
|
{
|
||||||
|
AddStdXRCID_Records();
|
||||||
wxXmlResource::AddSubclassFactory(new wxXmlSubclassFactoryCXX);
|
wxXmlResource::AddSubclassFactory(new wxXmlSubclassFactoryCXX);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@@ -795,28 +795,7 @@ long wxXmlResourceHandler::GetLong(const wxString& param, long defaultv)
|
|||||||
|
|
||||||
int wxXmlResourceHandler::GetID()
|
int wxXmlResourceHandler::GetID()
|
||||||
{
|
{
|
||||||
wxString sid = GetName();
|
return wxXmlResource::GetXRCID(GetName());
|
||||||
long num;
|
|
||||||
|
|
||||||
if (sid == wxT("-1")) return -1;
|
|
||||||
else if (sid.IsNumber() && sid.ToLong(&num)) return num;
|
|
||||||
#define stdID(id) else if (sid == wxT(#id)) return id
|
|
||||||
stdID(wxID_OPEN); stdID(wxID_CLOSE); stdID(wxID_NEW);
|
|
||||||
stdID(wxID_SAVE); stdID(wxID_SAVEAS); stdID(wxID_REVERT);
|
|
||||||
stdID(wxID_EXIT); stdID(wxID_UNDO); stdID(wxID_REDO);
|
|
||||||
stdID(wxID_HELP); stdID(wxID_PRINT); stdID(wxID_PRINT_SETUP);
|
|
||||||
stdID(wxID_PREVIEW); stdID(wxID_ABOUT); stdID(wxID_HELP_CONTENTS);
|
|
||||||
stdID(wxID_HELP_COMMANDS); stdID(wxID_HELP_PROCEDURES);
|
|
||||||
stdID(wxID_CUT); stdID(wxID_COPY); stdID(wxID_PASTE);
|
|
||||||
stdID(wxID_CLEAR); stdID(wxID_FIND); stdID(wxID_DUPLICATE);
|
|
||||||
stdID(wxID_SELECTALL); stdID(wxID_OK); stdID(wxID_CANCEL);
|
|
||||||
stdID(wxID_APPLY); stdID(wxID_YES); stdID(wxID_NO);
|
|
||||||
stdID(wxID_STATIC); stdID(wxID_FORWARD); stdID(wxID_BACKWARD);
|
|
||||||
stdID(wxID_DEFAULT); stdID(wxID_MORE); stdID(wxID_SETUP);
|
|
||||||
stdID(wxID_RESET); stdID(wxID_HELP_CONTEXT);
|
|
||||||
stdID(wxID_CLOSE_ALL);
|
|
||||||
#undef stdID
|
|
||||||
else return wxXmlResource::GetXRCID(sid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1177,7 +1156,7 @@ struct XRCID_record
|
|||||||
|
|
||||||
static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL};
|
static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL};
|
||||||
|
|
||||||
/*static*/ int wxXmlResource::GetXRCID(const wxChar *str_id)
|
static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = -2)
|
||||||
{
|
{
|
||||||
static int XRCID_LastID = wxID_HIGHEST;
|
static int XRCID_LastID = wxID_HIGHEST;
|
||||||
|
|
||||||
@@ -1205,20 +1184,30 @@ static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL};
|
|||||||
(*rec_var)->next = NULL;
|
(*rec_var)->next = NULL;
|
||||||
|
|
||||||
wxChar *end;
|
wxChar *end;
|
||||||
int asint = wxStrtol(str_id, &end, 10);
|
if (value_if_not_found != -2)
|
||||||
if (*str_id && *end == 0)
|
(*rec_var)->id = value_if_not_found;
|
||||||
{
|
|
||||||
// if str_id was integer, keep it verbosely:
|
|
||||||
(*rec_var)->id = asint;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(*rec_var)->id = ++XRCID_LastID;
|
int asint = wxStrtol(str_id, &end, 10);
|
||||||
|
if (*str_id && *end == 0)
|
||||||
|
{
|
||||||
|
// if str_id was integer, keep it verbosely:
|
||||||
|
(*rec_var)->id = asint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(*rec_var)->id = ++XRCID_LastID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (*rec_var)->id;
|
return (*rec_var)->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*static*/ int wxXmlResource::GetXRCID(const wxChar *str_id)
|
||||||
|
{
|
||||||
|
return XRCID_Lookup(str_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void CleanXRCID_Record(XRCID_record *rec)
|
static void CleanXRCID_Record(XRCID_record *rec)
|
||||||
{
|
{
|
||||||
@@ -1236,8 +1225,26 @@ static void CleanXRCID_Records()
|
|||||||
CleanXRCID_Record(XRCID_Records[i]);
|
CleanXRCID_Record(XRCID_Records[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void AddStdXRCID_Records()
|
||||||
|
{
|
||||||
|
#define stdID(id) XRCID_Lookup(wxT(#id), id)
|
||||||
|
stdID(-1);
|
||||||
|
stdID(wxID_OPEN); stdID(wxID_CLOSE); stdID(wxID_NEW);
|
||||||
|
stdID(wxID_SAVE); stdID(wxID_SAVEAS); stdID(wxID_REVERT);
|
||||||
|
stdID(wxID_EXIT); stdID(wxID_UNDO); stdID(wxID_REDO);
|
||||||
|
stdID(wxID_HELP); stdID(wxID_PRINT); stdID(wxID_PRINT_SETUP);
|
||||||
|
stdID(wxID_PREVIEW); stdID(wxID_ABOUT); stdID(wxID_HELP_CONTENTS);
|
||||||
|
stdID(wxID_HELP_COMMANDS); stdID(wxID_HELP_PROCEDURES);
|
||||||
|
stdID(wxID_CUT); stdID(wxID_COPY); stdID(wxID_PASTE);
|
||||||
|
stdID(wxID_CLEAR); stdID(wxID_FIND); stdID(wxID_DUPLICATE);
|
||||||
|
stdID(wxID_SELECTALL); stdID(wxID_OK); stdID(wxID_CANCEL);
|
||||||
|
stdID(wxID_APPLY); stdID(wxID_YES); stdID(wxID_NO);
|
||||||
|
stdID(wxID_STATIC); stdID(wxID_FORWARD); stdID(wxID_BACKWARD);
|
||||||
|
stdID(wxID_DEFAULT); stdID(wxID_MORE); stdID(wxID_SETUP);
|
||||||
|
stdID(wxID_RESET); stdID(wxID_HELP_CONTEXT);
|
||||||
|
stdID(wxID_CLOSE_ALL);
|
||||||
|
#undef stdID
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1252,6 +1259,7 @@ public:
|
|||||||
wxXmlResourceModule() {}
|
wxXmlResourceModule() {}
|
||||||
bool OnInit()
|
bool OnInit()
|
||||||
{
|
{
|
||||||
|
AddStdXRCID_Records();
|
||||||
wxXmlResource::AddSubclassFactory(new wxXmlSubclassFactoryCXX);
|
wxXmlResource::AddSubclassFactory(new wxXmlSubclassFactoryCXX);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user