]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xrc/xmlres.cpp
reverted last commit, still broken for VC6
[wxWidgets.git] / src / xrc / xmlres.cpp
index a28ed3b0394ce54724af443f6c35f14d212706ab..90aba8c06e5ee271395ba27d64f189f188ed096d 100644 (file)
@@ -19,6 +19,8 @@
     #pragma hdrstop
 #endif
 
+#if wxUSE_XRC
+
 #include "wx/dialog.h"
 #include "wx/panel.h"
 #include "wx/frame.h"
@@ -650,7 +652,7 @@ public:
 
 wxXmlResourceHandler::wxXmlResourceHandler()
         : m_node(NULL), m_parent(NULL), m_instance(NULL),
-          m_parentAsWindow(NULL), m_instanceAsWindow(NULL)
+          m_parentAsWindow(NULL)
 {}
 
 
@@ -660,7 +662,7 @@ wxObject *wxXmlResourceHandler::CreateResource(wxXmlNode *node, wxObject *parent
     wxXmlNode *myNode = m_node;
     wxString myClass = m_class;
     wxObject *myParent = m_parent, *myInstance = m_instance;
-    wxWindow *myParentAW = m_parentAsWindow, *myInstanceAW = m_instanceAsWindow;
+    wxWindow *myParentAW = m_parentAsWindow;
 
     m_instance = instance;
     if (!m_instance && node->HasProp(wxT("subclass")) &&
@@ -690,14 +692,13 @@ wxObject *wxXmlResourceHandler::CreateResource(wxXmlNode *node, wxObject *parent
     m_class = node->GetPropVal(wxT("class"), wxEmptyString);
     m_parent = parent;
     m_parentAsWindow = wxDynamicCast(m_parent, wxWindow);
-    m_instanceAsWindow = wxDynamicCast(m_instance, wxWindow);
 
     wxObject *returned = DoCreateResource();
 
     m_node = myNode;
     m_class = myClass;
     m_parent = myParent; m_parentAsWindow = myParentAW;
-    m_instance = myInstance; m_instanceAsWindow = myInstanceAW;
+    m_instance = myInstance;
 
     return returned;
 }
@@ -786,14 +787,34 @@ wxString wxXmlResourceHandler::GetText(const wxString& param, bool translate)
             else
                 str2 << wxT('&') << *dt;
         }
-        // Remap \n to CR, \r to LF, \t to TAB:
+        // Remap \n to CR, \r to LF, \t to TAB, \\ to \:
         else if (*dt == wxT('\\'))
             switch (*(++dt))
             {
-                case wxT('n') : str2 << wxT('\n'); break;
-                case wxT('t') : str2 << wxT('\t'); break;
-                case wxT('r') : str2 << wxT('\r'); break;
-                default       : str2 << wxT('\\') << *dt; break;
+                case wxT('n'):
+                    str2 << wxT('\n');
+                    break;
+                    
+                case wxT('t'):
+                    str2 << wxT('\t');
+                    break;
+                    
+                case wxT('r'):
+                    str2 << wxT('\r');
+                    break;
+
+                case wxT('\\') :
+                    // "\\" wasn't translated to "\" prior to 2.5.3.0:
+                    if (m_resource->CompareVersion(2,5,3,0) >= 0)
+                    {
+                        str2 << wxT('\\');
+                        break;
+                    }
+                    // else fall-through to default: branch below
+    
+                default:
+                    str2 << wxT('\\') << *dt;
+                    break;
             }
         else str2 << *dt;
     }
@@ -895,11 +916,15 @@ wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param,
         wxString sid = bmpNode->GetPropVal(wxT("stock_id"), wxEmptyString);
         if ( !sid.empty() )
         {
-            wxString scl = bmpNode->GetPropVal(wxT("stock_client"), defaultArtClient);
+            wxString scl = bmpNode->GetPropVal(wxT("stock_client"), wxEmptyString);
+            if (scl.empty())
+                scl = defaultArtClient;
+            else
+                scl = wxART_MAKE_CLIENT_ID_FROM_STR(scl);
+            
             wxBitmap stockArt =
                 wxArtProvider::GetBitmap(wxART_MAKE_ART_ID_FROM_STR(sid),
-                                         wxART_MAKE_CLIENT_ID_FROM_STR(scl),
-                                         size);
+                                         scl, size);
             if ( stockArt.Ok() )
                 return stockArt;
         }
@@ -1008,9 +1033,7 @@ wxSize wxXmlResourceHandler::GetSize(const wxString& param)
 
     if (is_dlg)
     {
-        if (m_instanceAsWindow)
-            return wxDLG_UNIT(m_instanceAsWindow, wxSize(sx, sy));
-        else if (m_parentAsWindow)
+        if (m_parentAsWindow)
             return wxDLG_UNIT(m_parentAsWindow, wxSize(sx, sy));
         else
         {
@@ -1049,9 +1072,7 @@ wxCoord wxXmlResourceHandler::GetDimension(const wxString& param, wxCoord defaul
 
     if (is_dlg)
     {
-        if (m_instanceAsWindow)
-            return wxDLG_UNIT(m_instanceAsWindow, wxSize(sx, 0)).x;
-        else if (m_parentAsWindow)
+        if (m_parentAsWindow)
             return wxDLG_UNIT(m_parentAsWindow, wxSize(sx, 0)).x;
         else
         {
@@ -1209,8 +1230,6 @@ 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_LastID = wxID_HIGHEST;
-
     int index = 0;
 
     for (const wxChar *c = str_id; *c != wxT('\0'); c++) index += (int)*c;
@@ -1245,7 +1264,7 @@ static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = -2)
         }
         else
         {
-            (*rec_var)->id = ++XRCID_LastID;
+            (*rec_var)->id = wxNewId();
         }
     }
 
@@ -1281,20 +1300,107 @@ 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_ANY);
+    stdID(wxID_SEPARATOR);
+    
+    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_HELP_CONTEXT);
     stdID(wxID_CLOSE_ALL);
+    stdID(wxID_PREFERENCES);
+    stdID(wxID_CUT);
+    stdID(wxID_COPY);
+    stdID(wxID_PASTE);
+    stdID(wxID_CLEAR);
+    stdID(wxID_FIND);
+    stdID(wxID_DUPLICATE);
+    stdID(wxID_SELECTALL);
+    stdID(wxID_DELETE);
+    stdID(wxID_REPLACE);
+    stdID(wxID_REPLACE_ALL);
+    stdID(wxID_PROPERTIES);
+    stdID(wxID_VIEW_DETAILS);
+    stdID(wxID_VIEW_LARGEICONS);
+    stdID(wxID_VIEW_SMALLICONS);
+    stdID(wxID_VIEW_LIST);
+    stdID(wxID_VIEW_SORTDATE);
+    stdID(wxID_VIEW_SORTNAME);
+    stdID(wxID_VIEW_SORTSIZE);
+    stdID(wxID_VIEW_SORTTYPE);
+    stdID(wxID_FILE1);
+    stdID(wxID_FILE2);
+    stdID(wxID_FILE3);
+    stdID(wxID_FILE4);
+    stdID(wxID_FILE5);
+    stdID(wxID_FILE6);
+    stdID(wxID_FILE7);
+    stdID(wxID_FILE8);
+    stdID(wxID_FILE9);
+    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_CONTEXT_HELP);
+    stdID(wxID_YESTOALL);
+    stdID(wxID_NOTOALL);
+    stdID(wxID_ABORT);
+    stdID(wxID_RETRY);
+    stdID(wxID_IGNORE);
+    stdID(wxID_ADD);
+    stdID(wxID_REMOVE);
+    stdID(wxID_UP);
+    stdID(wxID_DOWN);
+    stdID(wxID_HOME);
+    stdID(wxID_REFRESH);
+    stdID(wxID_STOP);
+    stdID(wxID_INDEX);
+    stdID(wxID_BOLD);
+    stdID(wxID_ITALIC);
+    stdID(wxID_JUSTIFY_CENTER);
+    stdID(wxID_JUSTIFY_FILL);
+    stdID(wxID_JUSTIFY_RIGHT);
+    stdID(wxID_JUSTIFY_LEFT);
+    stdID(wxID_UNDERLINE);
+    stdID(wxID_INDENT);
+    stdID(wxID_UNINDENT);
+    stdID(wxID_ZOOM_100);
+    stdID(wxID_ZOOM_FIT);
+    stdID(wxID_ZOOM_IN);
+    stdID(wxID_ZOOM_OUT);
+    stdID(wxID_UNDELETE);
+    stdID(wxID_REVERT_TO_SAVED);
+    stdID(wxID_SYSTEM_MENU);
+    stdID(wxID_CLOSE_FRAME);
+    stdID(wxID_MOVE_FRAME);
+    stdID(wxID_RESIZE_FRAME);
+    stdID(wxID_MAXIMIZE_FRAME);
+    stdID(wxID_ICONIZE_FRAME);
+    stdID(wxID_RESTORE_FRAME);
+
 #undef stdID
 }
 
@@ -1336,3 +1442,5 @@ void wxXmlInitResourceModule()
     module->Init();
     wxModule::RegisterModule(module);
 }
+
+#endif // wxUSE_XRC