]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xrc/xmlres.cpp
Map between int page ids and page pointers using hashes so that it works when
[wxWidgets.git] / src / xrc / xmlres.cpp
index 157978218647180472ff18dbee3f41513b968521..d85ca8d4598f9b6e404023f4cbcb3e2d86c4fb32 100644 (file)
 
 #ifndef WX_PRECOMP
     #include "wx/intl.h"
+    #include "wx/log.h"
+    #include "wx/panel.h"
+    #include "wx/frame.h"
+    #include "wx/dialog.h"
+    #include "wx/settings.h"
 #endif
 
 #ifndef __WXWINCE__
     #include <locale.h>
 #endif
 
-#include "wx/dialog.h"
-#include "wx/panel.h"
-#include "wx/frame.h"
 #include "wx/wfstream.h"
 #include "wx/filesys.h"
 #include "wx/filename.h"
-#include "wx/log.h"
 #include "wx/tokenzr.h"
 #include "wx/fontenum.h"
 #include "wx/module.h"
@@ -41,7 +42,6 @@
 #include "wx/image.h"
 #include "wx/fontmap.h"
 #include "wx/artprov.h"
-#include "wx/settings.h"
 
 #include "wx/xml/xml.h"
 
@@ -1045,16 +1045,14 @@ static wxColour GetSystemColour(const wxString& name)
 wxColour wxXmlResourceHandler::GetColour(const wxString& param)
 {
     wxString v = GetParamValue(param);
+    wxColour clr;
 
-    // find colour using HTML syntax (#RRGGBB)
-    unsigned long tmp = 0;
-
-    if (v.length() != 7 || v[0u] != wxT('#') ||
-        wxSscanf(v.c_str(), wxT("#%lX"), &tmp) != 1)
+    // wxString -> wxColour conversion
+    if (!clr.Set(v))
     {
         // the colour doesn't use #RRGGBB format, check if it is symbolic
         // colour name:
-        wxColour clr = GetSystemColour(v);
+        clr = GetSystemColour(v);
         if (clr.Ok())
             return clr;
 
@@ -1063,9 +1061,7 @@ wxColour wxXmlResourceHandler::GetColour(const wxString& param)
         return wxNullColour;
     }
 
-    return wxColour((unsigned char) ((tmp & 0xFF0000) >> 16) ,
-                    (unsigned char) ((tmp & 0x00FF00) >> 8),
-                    (unsigned char) ((tmp & 0x0000FF)));
+    return clr;
 }
 
 
@@ -1501,7 +1497,7 @@ struct XRCID_record
 
 static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL};
 
-static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = -2)
+static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = wxID_NONE)
 {
     int index = 0;
 
@@ -1525,7 +1521,7 @@ static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = -2)
     (*rec_var)->next = NULL;
 
     wxChar *end;
-    if (value_if_not_found != -2)
+    if (value_if_not_found != wxID_NONE)
         (*rec_var)->id = value_if_not_found;
     else
     {
@@ -1546,7 +1542,8 @@ static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = -2)
 
 static void AddStdXRCID_Records();
 
-/*static*/ int wxXmlResource::GetXRCID(const wxChar *str_id)
+/*static*/
+int wxXmlResource::GetXRCID(const wxChar *str_id, int value_if_not_found)
 {
     static bool s_stdIDsAdded = false;
 
@@ -1556,7 +1553,7 @@ static void AddStdXRCID_Records();
         AddStdXRCID_Records();
     }
 
-    return XRCID_Lookup(str_id);
+    return XRCID_Lookup(str_id, value_if_not_found);
 }