X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32efded3f95bd18008e1d9e7c254bb69dca8826b..ed4eede6c2c16cdb422a39c1b3655956b8f51a1c:/src/xrc/xmlres.cpp diff --git a/src/xrc/xmlres.cpp b/src/xrc/xmlres.cpp index cad7f1465c..4aa3658c3d 100644 --- a/src/xrc/xmlres.cpp +++ b/src/xrc/xmlres.cpp @@ -8,7 +8,7 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "xmlres.h" #endif @@ -21,7 +21,9 @@ #if wxUSE_XRC +#ifndef __WXWINCE__ #include +#endif #include "wx/dialog.h" #include "wx/panel.h" @@ -101,7 +103,7 @@ bool wxXmlResource::Load(const wxString& filemask) fnd = wxXmlFindFirst; else fnd = filemask; - while (!!fnd) + while (!fnd.empty()) { // NB: Load() accepts both filenames and URLs (should probably be // changed to filenames only, but embedded resources currently @@ -725,9 +727,11 @@ void wxXmlResourceHandler::AddWindowStyles() XRC_ADD_STYLE(wxNO_BORDER); XRC_ADD_STYLE(wxTRANSPARENT_WINDOW); XRC_ADD_STYLE(wxWANTS_CHARS); + XRC_ADD_STYLE(wxTAB_TRAVERSAL); XRC_ADD_STYLE(wxNO_FULL_REPAINT_ON_RESIZE); XRC_ADD_STYLE(wxFULL_REPAINT_ON_RESIZE); XRC_ADD_STYLE(wxWS_EX_BLOCK_EVENTS); + XRC_ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY); } @@ -796,11 +800,11 @@ wxString wxXmlResourceHandler::GetText(const wxString& param, bool translate) case wxT('n'): str2 << wxT('\n'); break; - + case wxT('t'): str2 << wxT('\t'); break; - + case wxT('r'): str2 << wxT('\r'); break; @@ -813,7 +817,7 @@ wxString wxXmlResourceHandler::GetText(const wxString& param, bool translate) break; } // else fall-through to default: branch below - + default: str2 << wxT('\\') << *dt; break; @@ -839,13 +843,11 @@ wxString wxXmlResourceHandler::GetText(const wxString& param, bool translate) #endif } } - else - { - // If wxXRC_USE_LOCALE is not set, then the string is already in - // system's default encoding in ANSI build, so we don't have to - // do anything special here. - return str2; - } + + // If wxXRC_USE_LOCALE is not set, then the string is already in + // system's default encoding in ANSI build, so we don't have to + // do anything special here. + return str2; } @@ -860,18 +862,22 @@ long wxXmlResourceHandler::GetLong(const wxString& param, long defaultv) return value; } - + float wxXmlResourceHandler::GetFloat(const wxString& param, float defaultv) { double value; wxString str1 = GetParamValue(param); +#ifndef __WXWINCE__ const char *prevlocale = setlocale(LC_NUMERIC, "C"); - +#endif + if (!str1.ToDouble(&value)) value = defaultv; +#ifndef __WXWINCE__ setlocale(LC_NUMERIC, prevlocale); +#endif return value; } @@ -896,7 +902,8 @@ bool wxXmlResourceHandler::GetBool(const wxString& param, bool defaultv) wxString v = GetParamValue(param); v.MakeLower(); if (!v) return defaultv; - else return (v == wxT("1")); + + return (v == wxT("1")); } @@ -964,7 +971,7 @@ wxColour wxXmlResourceHandler::GetColour(const wxString& param) wxColour clr = GetSystemColour(v); if (clr.Ok()) return clr; - + wxLogError(_("XRC resource: Incorrect colour specification '%s' for property '%s'."), v.c_str(), param.c_str()); return wxNullColour; @@ -993,7 +1000,7 @@ wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param, scl = defaultArtClient; else scl = wxART_MAKE_CLIENT_ID_FROM_STR(scl); - + wxBitmap stockArt = wxArtProvider::GetBitmap(wxART_MAKE_ART_ID_FROM_STR(sid), scl, size); @@ -1004,7 +1011,7 @@ wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param, /* ...or load the bitmap from file: */ wxString name = GetParamValue(param); - if (name.IsEmpty()) return wxNullBitmap; + if (name.empty()) return wxNullBitmap; #if wxUSE_FILESYSTEM wxFSFile *fsfile = GetCurFileSystem().OpenFile(name); if (fsfile == NULL) @@ -1079,7 +1086,7 @@ wxString wxXmlResourceHandler::GetNodeContent(wxXmlNode *node) wxString wxXmlResourceHandler::GetParamValue(const wxString& param) { - if (param.IsEmpty()) + if (param.empty()) return GetNodeContent(m_node); else return GetNodeContent(GetParamNode(param)); @@ -1087,10 +1094,11 @@ wxString wxXmlResourceHandler::GetParamValue(const wxString& param) -wxSize wxXmlResourceHandler::GetSize(const wxString& param) +wxSize wxXmlResourceHandler::GetSize(const wxString& param, + wxWindow *windowToUse) { wxString s = GetParamValue(param); - if (s.IsEmpty()) s = wxT("-1,-1"); + if (s.empty()) s = wxT("-1,-1"); bool is_dlg; long sx, sy = 0; @@ -1106,15 +1114,22 @@ wxSize wxXmlResourceHandler::GetSize(const wxString& param) if (is_dlg) { - if (m_parentAsWindow) + if (windowToUse) + { + return wxDLG_UNIT(windowToUse, wxSize(sx, sy)); + } + else if (m_parentAsWindow) + { return wxDLG_UNIT(m_parentAsWindow, wxSize(sx, sy)); + } else { wxLogError(_("Cannot convert dialog units: dialog unknown.")); return wxDefaultSize; } } - else return wxSize(sx, sy); + + return wxSize(sx, sy); } @@ -1127,10 +1142,12 @@ wxPoint wxXmlResourceHandler::GetPosition(const wxString& param) -wxCoord wxXmlResourceHandler::GetDimension(const wxString& param, wxCoord defaultv) +wxCoord wxXmlResourceHandler::GetDimension(const wxString& param, + wxCoord defaultv, + wxWindow *windowToUse) { wxString s = GetParamValue(param); - if (s.IsEmpty()) return defaultv; + if (s.empty()) return defaultv; bool is_dlg; long sx; @@ -1145,15 +1162,22 @@ wxCoord wxXmlResourceHandler::GetDimension(const wxString& param, wxCoord defaul if (is_dlg) { - if (m_parentAsWindow) + if (windowToUse) + { + return wxDLG_UNIT(windowToUse, wxSize(sx, 0)).x; + } + else if (m_parentAsWindow) + { return wxDLG_UNIT(m_parentAsWindow, wxSize(sx, 0)).x; + } else { wxLogError(_("Cannot convert dialog units: dialog unknown.")); return defaultv; } } - else return sx; + + return sx; } @@ -1195,7 +1219,7 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) // size int isize = wxDEFAULT; bool hasSize = HasParam(wxT("size")); - if (hasSize) + if (hasSize) isize = GetLong(wxT("size"), wxDEFAULT); // style @@ -1204,9 +1228,9 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) if (hasStyle) { wxString style = GetParamValue(wxT("style")); - if (style == wxT("italic")) + if (style == wxT("italic")) istyle = wxITALIC; - else if (style == wxT("slant")) + else if (style == wxT("slant")) istyle = wxSLANT; } @@ -1216,12 +1240,12 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) if (hasWeight) { wxString weight = GetParamValue(wxT("weight")); - if (weight == wxT("bold")) + if (weight == wxT("bold")) iweight = wxBOLD; - else if (weight == wxT("light")) + else if (weight == wxT("light")) iweight = wxLIGHT; } - + // underline bool hasUnderlined = HasParam(wxT("underlined")); bool underlined = hasUnderlined ? GetBool(wxT("underlined"), false) : false; @@ -1239,8 +1263,8 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) else if (family == wxT("modern")) ifamily = wxMODERN; else if (family == wxT("teletype")) ifamily = wxTELETYPE; } - - + + wxString facename; bool hasFacename = HasParam(wxT("face")); if (hasFacename) @@ -1267,7 +1291,7 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) { wxString encoding = GetParamValue(wxT("encoding")); wxFontMapper mapper; - if (!encoding.IsEmpty()) + if (!encoding.empty()) enc = mapper.CharsetToEncoding(encoding); if (enc == wxFONTENCODING_SYSTEM) enc = wxFONTENCODING_DEFAULT; @@ -1275,7 +1299,7 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) // is this font based on a system font? wxFont sysfont = GetSystemFont(GetParamValue(wxT("sysfont"))); - + if (sysfont.Ok()) { if (hasSize) @@ -1283,7 +1307,7 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) else if (HasParam(wxT("relativesize"))) sysfont.SetPointSize(int(sysfont.GetPointSize() * GetFloat(wxT("relativesize")))); - + if (hasStyle) sysfont.SetStyle(istyle); if (hasWeight) @@ -1300,12 +1324,10 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param) m_node = oldnode; return sysfont; } - else - { - m_node = oldnode; - return wxFont(isize, ifamily, istyle, iweight, - underlined, facename, enc); - } + + m_node = oldnode; + return wxFont(isize, ifamily, istyle, iweight, + underlined, facename, enc); } @@ -1465,7 +1487,7 @@ static void AddStdXRCID_Records() stdID(wxID_ANY); stdID(wxID_SEPARATOR); - + stdID(wxID_OPEN); stdID(wxID_CLOSE); stdID(wxID_NEW);