X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/45f3249bb601cdc1ddc23451d07b71c3e7a789da..05ae668ce491600cd568edbe15618693e63d619c:/src/xrc/xmlres.cpp diff --git a/src/xrc/xmlres.cpp b/src/xrc/xmlres.cpp index 1de0a1ddfc..238bda8e31 100644 --- a/src/xrc/xmlres.cpp +++ b/src/xrc/xmlres.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: xmlres.cpp +// Name: src/xrc/xmlres.cpp // Purpose: XRC resources // Author: Vaclav Slavik // Created: 2000/03/05 @@ -17,18 +17,23 @@ #if wxUSE_XRC +#include "wx/xrc/xmlres.h" + +#ifndef WX_PRECOMP + #include "wx/intl.h" + #include "wx/log.h" + #include "wx/panel.h" + #include "wx/frame.h" +#endif + #ifndef __WXWINCE__ -#include + #include #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/intl.h" #include "wx/tokenzr.h" #include "wx/fontenum.h" #include "wx/module.h" @@ -39,7 +44,6 @@ #include "wx/settings.h" #include "wx/xml/xml.h" -#include "wx/xrc/xmlres.h" #include "wx/arrimpl.cpp" WX_DEFINE_OBJARRAY(wxXmlResourceDataRecords) @@ -625,7 +629,18 @@ static void MergeNodes(wxXmlNode& dest, wxXmlNode& with) } if ( !dnode ) - dest.AddChild(new wxXmlNode(*node)); + { + static const wxChar *AT_END = wxT("end"); + wxString insert_pos = node->GetPropVal(wxT("insert_at"), AT_END); + if ( insert_pos == AT_END ) + { + dest.AddChild(new wxXmlNode(*node)); + } + else if ( insert_pos == wxT("begin") ) + { + dest.InsertChild(new wxXmlNode(*node), dest.GetChildren()); + } + } } if ( dest.GetType() == wxXML_TEXT_NODE && with.GetContent().Length() ) @@ -1030,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; @@ -1048,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; } @@ -1104,11 +1115,7 @@ wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param, return wxNullBitmap; } if (!(size == wxDefaultSize)) img.Rescale(size.x, size.y); -#if !defined(__WXMSW__) || wxUSE_WXDIB return wxBitmap(img); -#else - return wxBitmap(); -#endif } @@ -1176,7 +1183,7 @@ wxSize wxXmlResourceHandler::GetSize(const wxString& param, bool is_dlg; long sx, sy = 0; - is_dlg = s[s.Length()-1] == wxT('d'); + is_dlg = s[s.length()-1] == wxT('d'); if (is_dlg) s.RemoveLast(); if (!s.BeforeFirst(wxT(',')).ToLong(&sx) || @@ -1225,7 +1232,7 @@ wxCoord wxXmlResourceHandler::GetDimension(const wxString& param, bool is_dlg; long sx; - is_dlg = s[s.Length()-1] == wxT('d'); + is_dlg = s[s.length()-1] == wxT('d'); if (is_dlg) s.RemoveLast(); if (!s.ToLong(&sx)) @@ -1490,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; @@ -1514,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 { @@ -1535,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; @@ -1545,7 +1553,7 @@ static void AddStdXRCID_Records(); AddStdXRCID_Records(); } - return XRCID_Lookup(str_id); + return XRCID_Lookup(str_id, value_if_not_found); }