]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xrc/xmlres.cpp
can't pass objects through ... (please don't ever ignore this gcc warning)
[wxWidgets.git] / src / xrc / xmlres.cpp
index 12441c1320e4cd3cc868458e5be93476f63735e7..5a82615c3a974b4b82b34d2792709845ec27050e 100644 (file)
@@ -8,10 +8,6 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "xmlres.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -46,7 +42,7 @@
 #include "wx/xrc/xmlres.h"
 
 #include "wx/arrimpl.cpp"
 #include "wx/xrc/xmlres.h"
 
 #include "wx/arrimpl.cpp"
-WX_DEFINE_OBJARRAY(wxXmlResourceDataRecords);
+WX_DEFINE_OBJARRAY(wxXmlResourceDataRecords)
 
 
 wxXmlResource *wxXmlResource::ms_instance = NULL;
 
 
 wxXmlResource *wxXmlResource::ms_instance = NULL;
@@ -415,7 +411,11 @@ bool wxXmlResource::UpdateResources()
         {
 #           if wxUSE_FILESYSTEM
             file = fsys.OpenFile(m_data[i].File);
         {
 #           if wxUSE_FILESYSTEM
             file = fsys.OpenFile(m_data[i].File);
+#           if wxUSE_DATETIME
             modif = file && file->GetModificationTime() > m_data[i].Time;
             modif = file && file->GetModificationTime() > m_data[i].Time;
+#           else // wxUSE_DATETIME
+            modif = true;
+#           endif // wxUSE_DATETIME
             if (!file)
             {
                 wxLogError(_("Cannot open file '%s'."), m_data[i].File.c_str());
             if (!file)
             {
                 wxLogError(_("Cannot open file '%s'."), m_data[i].File.c_str());
@@ -423,9 +423,13 @@ bool wxXmlResource::UpdateResources()
             }
             wxDELETE(file);
             wxUnusedVar(file);
             }
             wxDELETE(file);
             wxUnusedVar(file);
-#           else
+#           else // wxUSE_FILESYSTEM
+#           if wxUSE_DATETIME
             modif = wxDateTime(wxFileModificationTime(m_data[i].File)) > m_data[i].Time;
             modif = wxDateTime(wxFileModificationTime(m_data[i].File)) > m_data[i].Time;
-#           endif
+#           else // wxUSE_DATETIME
+            modif = true;
+#           endif // wxUSE_DATETIME
+#           endif // wxUSE_FILESYSTEM
         }
 
         if (modif)
         }
 
         if (modif)
@@ -481,11 +485,13 @@ bool wxXmlResource::UpdateResources()
                 }
 
                 ProcessPlatformProperty(m_data[i].Doc->GetRoot());
                 }
 
                 ProcessPlatformProperty(m_data[i].Doc->GetRoot());
+#if wxUSE_DATETIME
 #if wxUSE_FILESYSTEM
                 m_data[i].Time = file->GetModificationTime();
 #if wxUSE_FILESYSTEM
                 m_data[i].Time = file->GetModificationTime();
-#else
+#else // wxUSE_FILESYSTEM
                 m_data[i].Time = wxDateTime(wxFileModificationTime(m_data[i].File));
                 m_data[i].Time = wxDateTime(wxFileModificationTime(m_data[i].File));
-#endif
+#endif // wxUSE_FILESYSTEM
+#endif // wxUSE_DATETIME
             }
 
 #           if wxUSE_FILESYSTEM
             }
 
 #           if wxUSE_FILESYSTEM
@@ -683,7 +689,7 @@ wxObject *wxXmlResource::CreateResFromNode(wxXmlNode *node, wxObject *parent,
 
 #include "wx/listimpl.cpp"
 WX_DECLARE_LIST(wxXmlSubclassFactory, wxXmlSubclassFactoriesList);
 
 #include "wx/listimpl.cpp"
 WX_DECLARE_LIST(wxXmlSubclassFactory, wxXmlSubclassFactoriesList);
-WX_DEFINE_LIST(wxXmlSubclassFactoriesList);
+WX_DEFINE_LIST(wxXmlSubclassFactoriesList)
 
 wxXmlSubclassFactoriesList *wxXmlResource::ms_subclassFactories = NULL;
 
 
 wxXmlSubclassFactoriesList *wxXmlResource::ms_subclassFactories = NULL;
 
@@ -780,17 +786,21 @@ void wxXmlResourceHandler::AddStyle(const wxString& name, int value)
 void wxXmlResourceHandler::AddWindowStyles()
 {
     XRC_ADD_STYLE(wxCLIP_CHILDREN);
 void wxXmlResourceHandler::AddWindowStyles()
 {
     XRC_ADD_STYLE(wxCLIP_CHILDREN);
-    XRC_ADD_STYLE(wxSIMPLE_BORDER);
-    XRC_ADD_STYLE(wxSUNKEN_BORDER);
-    XRC_ADD_STYLE(wxDOUBLE_BORDER);
-    XRC_ADD_STYLE(wxRAISED_BORDER);
-    XRC_ADD_STYLE(wxSTATIC_BORDER);
-    XRC_ADD_STYLE(wxNO_BORDER);
+
+    // the border styles all have the old and new names, recognize both for now
+    XRC_ADD_STYLE(wxSIMPLE_BORDER); XRC_ADD_STYLE(wxBORDER_SIMPLE);
+    XRC_ADD_STYLE(wxSUNKEN_BORDER); XRC_ADD_STYLE(wxBORDER_SUNKEN);
+    XRC_ADD_STYLE(wxDOUBLE_BORDER); XRC_ADD_STYLE(wxBORDER_DOUBLE);
+    XRC_ADD_STYLE(wxRAISED_BORDER); XRC_ADD_STYLE(wxBORDER_RAISED);
+    XRC_ADD_STYLE(wxSTATIC_BORDER); XRC_ADD_STYLE(wxBORDER_STATIC);
+    XRC_ADD_STYLE(wxNO_BORDER);     XRC_ADD_STYLE(wxBORDER_NONE);
+
     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(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(wxALWAYS_SHOW_SB);
     XRC_ADD_STYLE(wxWS_EX_BLOCK_EVENTS);
     XRC_ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY);
 }
     XRC_ADD_STYLE(wxWS_EX_BLOCK_EVENTS);
     XRC_ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY);
 }
@@ -940,7 +950,7 @@ float wxXmlResourceHandler::GetFloat(const wxString& param, float defaultv)
     setlocale(LC_NUMERIC, prevlocale);
 #endif
 
     setlocale(LC_NUMERIC, prevlocale);
 #endif
 
-    return value;
+    return wx_truncate_cast(float, value);
 }
 
 
 }
 
 
@@ -1084,18 +1094,17 @@ wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param,
     wxImage img(*(fsfile->GetStream()));
     delete fsfile;
 #else
     wxImage img(*(fsfile->GetStream()));
     delete fsfile;
 #else
-    wxImage img(GetParamValue(wxT("bitmap")));
+    wxImage img(name);
 #endif
 
     if (!img.Ok())
     {
         wxLogError(_("XRC resource: Cannot create bitmap from '%s'."),
 #endif
 
     if (!img.Ok())
     {
         wxLogError(_("XRC resource: Cannot create bitmap from '%s'."),
-                   param.c_str());
+                   name.c_str());
         return wxNullBitmap;
     }
     if (!(size == wxDefaultSize)) img.Rescale(size.x, size.y);
     return wxBitmap(img);
         return wxNullBitmap;
     }
     if (!(size == wxDefaultSize)) img.Rescale(size.x, size.y);
     return wxBitmap(img);
-
 }
 
 
 }
 
 
@@ -1278,10 +1287,10 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param)
     // font attributes:
 
     // size
     // font attributes:
 
     // size
-    int isize = wxDEFAULT;
+    int isize = -1;
     bool hasSize = HasParam(wxT("size"));
     if (hasSize)
     bool hasSize = HasParam(wxT("size"));
     if (hasSize)
-        isize = GetLong(wxT("size"), wxDEFAULT);
+        isize = GetLong(wxT("size"), -1);
 
     // style
     int istyle = wxNORMAL;
 
     // style
     int istyle = wxNORMAL;
@@ -1359,36 +1368,38 @@ wxFont wxXmlResourceHandler::GetFont(const wxString& param)
     }
 
     // is this font based on a system font?
     }
 
     // is this font based on a system font?
-    wxFont sysfont = GetSystemFont(GetParamValue(wxT("sysfont")));
+    wxFont font = GetSystemFont(GetParamValue(wxT("sysfont")));
 
 
-    if (sysfont.Ok())
+    if (font.Ok())
     {
     {
-        if (hasSize)
-            sysfont.SetPointSize(isize);
+        if (hasSize && isize != -1)
+            font.SetPointSize(isize);
         else if (HasParam(wxT("relativesize")))
         else if (HasParam(wxT("relativesize")))
-            sysfont.SetPointSize(int(sysfont.GetPointSize() *
+            font.SetPointSize(int(font.GetPointSize() *
                                      GetFloat(wxT("relativesize"))));
 
         if (hasStyle)
                                      GetFloat(wxT("relativesize"))));
 
         if (hasStyle)
-            sysfont.SetStyle(istyle);
+            font.SetStyle(istyle);
         if (hasWeight)
         if (hasWeight)
-            sysfont.SetWeight(iweight);
+            font.SetWeight(iweight);
         if (hasUnderlined)
         if (hasUnderlined)
-            sysfont.SetUnderlined(underlined);
+            font.SetUnderlined(underlined);
         if (hasFamily)
         if (hasFamily)
-            sysfont.SetFamily(ifamily);
+            font.SetFamily(ifamily);
         if (hasFacename)
         if (hasFacename)
-            sysfont.SetFaceName(facename);
+            font.SetFaceName(facename);
         if (hasEncoding)
         if (hasEncoding)
-            sysfont.SetDefaultEncoding(enc);
-
-        m_node = oldnode;
-        return sysfont;
+            font.SetDefaultEncoding(enc);
+    }
+    else // not based on system font
+    {
+        font = wxFont(isize == -1 ? wxNORMAL_FONT->GetPointSize() : isize,
+                      ifamily, istyle, iweight,
+                      underlined, facename, enc);
     }
 
     m_node = oldnode;
     }
 
     m_node = oldnode;
-    return wxFont(isize, ifamily, istyle, iweight,
-                  underlined, facename, enc);
+    return font;
 }
 
 
 }
 
 
@@ -1417,6 +1428,8 @@ void wxXmlResourceHandler::SetupWindow(wxWindow *wnd)
 #endif
     if (HasParam(wxT("font")))
         wnd->SetFont(GetFont());
 #endif
     if (HasParam(wxT("font")))
         wnd->SetFont(GetFont());
+    if (HasParam(wxT("help")))
+        wnd->SetHelpText(GetText(wxT("help")));
 }
 
 
 }