]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxrc/wxrc.cpp
Change version to 3.0.0.
[wxWidgets.git] / utils / wxrc / wxrc.cpp
index 9a309dbf5e8b60d2ac106b8f4482b5df96b6c652..f5158fd2abb830c6e2e5c70cbfc7c8e704ee8b12 100644 (file)
@@ -3,7 +3,6 @@
 // Purpose:     XML resource compiler
 // Author:      Vaclav Slavik, Eduardo Marques <edrdo@netcabo.pt>
 // Created:     2000/03/05
-// RCS-ID:      $Id$
 // Copyright:   (c) 2000 Vaclav Slavik
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -140,7 +139,7 @@ public:
         {
             const XRCWidgetData& w = m_wdata.Item(i);
             if( !CanBeUsedWithXRCCTRL(w.GetClass()) ) continue;
-            if( w.GetName().Length() == 0 ) continue;
+            if( w.GetName().empty() ) continue;
             file.Write(
                 wxT(" ") + w.GetClass() + wxT("* ") + w.GetName()
                 + wxT(";\n"));
@@ -155,7 +154,7 @@ public:
         {
             const XRCWidgetData& w = m_wdata.Item(i);
             if( !CanBeUsedWithXRCCTRL(w.GetClass()) ) continue;
-            if( w.GetName().Length() == 0 ) continue;
+            if( w.GetName().empty() ) continue;
             file.Write( wxT("  ")
                         + w.GetName()
                         + wxT(" = XRCCTRL(*this,\"")
@@ -356,7 +355,8 @@ void XmlResApp::CompileRes()
 {
     wxArrayString files = PrepareTempFiles();
 
-    wxRemoveFile(parOutput);
+    if ( wxFileExists(parOutput) )
+        wxRemoveFile(parOutput);
 
     if (!retCode)
     {
@@ -586,7 +586,8 @@ static wxString FileToCppArray(wxString filename, int num)
                   wxT("Huge file not supported") );
 
     snum.Printf(wxT("%i"), num);
-    output.Printf(wxT("static size_t xml_res_size_") + snum + wxT(" = %zu;\n"), lng);
+    output.Printf(wxT("static size_t xml_res_size_") + snum + wxT(" = %lu;\n"),
+                  static_cast<unsigned long>(lng));
     output += wxT("static unsigned char xml_res_file_") + snum + wxT("[] = {\n");
     // we cannot use string literals because MSVC is dumb wannabe compiler
     // with arbitrary limitation to 2048 strings :(
@@ -706,16 +707,17 @@ void XmlResApp::MakePackageCPP(const wxArrayString& flist)
 
 void XmlResApp::GenCPPHeader()
 {
-    wxString fileSpec = ((parOutput.BeforeLast('.')).AfterLast('/')).AfterLast('\\');
-    wxString heaFileName = fileSpec + wxT(".h");
+    // Generate the output header in the same directory as the source file.
+    wxFileName headerName(parOutput);
+    headerName.SetExt("h");
 
-    wxFFile file(heaFileName, wxT("wt"));
+    wxFFile file(headerName.GetFullPath(), wxT("wt"));
     file.Write(
 "//\n"
 "// This file was automatically generated by wxrc, do not edit by hand.\n"
 "//\n\n"
-"#ifndef __"  + fileSpec + "_h__\n"
-"#define __"  + fileSpec + "_h__\n"
+"#ifndef __"  + headerName.GetName() + "_h__\n"
+"#define __"  + headerName.GetName() + "_h__\n"
 );
     for(size_t i=0;i<aXRCWndClassData.GetCount();++i){
                 aXRCWndClassData.Item(i).GenerateHeaderCode(file);
@@ -894,7 +896,9 @@ static wxString ConvertText(const wxString& str)
     {
         if (*dt == wxT('_'))
         {
-            if ( *(++dt) == wxT('_') )
+            if ( *(dt+1) == 0 )
+                str2 << wxT('_');
+            else if ( *(++dt) == wxT('_') )
                 str2 << wxT('_');
             else
                 str2 << wxT('&') << *dt;
@@ -948,7 +952,14 @@ XmlResApp::FindStrings(const wxString& filename, wxXmlNode *node)
                 node/*not n!*/->GetName() == wxT("tooltip") ||
                 node/*not n!*/->GetName() == wxT("htmlcode") ||
                 node/*not n!*/->GetName() == wxT("title") ||
-                node/*not n!*/->GetName() == wxT("item")
+                node/*not n!*/->GetName() == wxT("item") ||
+                node/*not n!*/->GetName() == wxT("message") ||
+                node/*not n!*/->GetName() == wxT("note") ||
+                node/*not n!*/->GetName() == wxT("defaultdirectory") ||
+                node/*not n!*/->GetName() == wxT("defaultfilename") ||
+                node/*not n!*/->GetName() == wxT("defaultfolder") ||
+                node/*not n!*/->GetName() == wxT("filter") ||
+                node/*not n!*/->GetName() == wxT("caption")
             ))
             // ...and known to contain translatable string
         {