]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/chm.cpp
avoid duplicated empty help menu in localized applications (patch 1600747)
[wxWidgets.git] / src / html / chm.cpp
index b7dc1ee4f5ae196d59f5bc0a0d0ea51e611e3d4c..f89fbe535e5c041e49c63e25e829aaf86dc54668 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        chm.cpp
+// Name:        src/html/chm.cpp
 // Purpose:     CHM (Help) support for wxHTML
 // Author:      Markus Sinner
 // Copyright:   (c) 2003 Herd Software Development
@@ -10,7 +10,7 @@
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
 #endif
 
 #if wxUSE_LIBMSPACK
 #include <mspack.h>
 
 #ifndef WXPRECOMP
-#include "wx/intl.h"
-#include "wx/log.h"
+    #include "wx/intl.h"
+    #include "wx/log.h"
+    #include "wx/module.h"
 #endif
 
-#include "wx/module.h"
 #include "wx/filesys.h"
 #include "wx/mstream.h"
 #include "wx/wfstream.h"
@@ -70,7 +70,7 @@ public:
     /// check archive for a file
     bool Contains(const wxString& pattern);
 
-    /// get a string for the last error occured
+    /// get a string for the last error which occurred
     const wxString GetLastErrorMessage();
 
     /// Last Error
@@ -364,7 +364,7 @@ public:
     wxChmInputStream(const wxString& archive,
                      const wxString& file, bool simulate = false);
     /// Destructor
-    ~wxChmInputStream();
+    virtual ~wxChmInputStream();
 
     /// Return the size of the accessed file in archive
     virtual size_t GetSize() const { return m_size; }
@@ -595,7 +595,9 @@ wxChmInputStream::CreateHHPStream()
         {
             // Read #SYSTEM-Code and length
             i->Read(&code, 2);
+            code = wxUINT16_SWAP_ON_BE( code ) ;
             i->Read(&len, 2);
+            len = wxUINT16_SWAP_ON_BE( len ) ;
             // data
             buf = malloc(len);
             i->Read(buf, len);
@@ -625,7 +627,19 @@ wxChmInputStream::CreateHHPStream()
                     out->Write( (const void *) tmp, strlen(tmp));
                     tmp = NULL;
                     break;
-                case 4: // STRUCT
+                case 4: // STRUCT SYSTEM INFO
+                    tmp = NULL ;
+                    if ( len >= 28 )
+                    {
+                        char *structptr = (char*) buf ;
+                        // LCID at position 0
+                        wxUint32 dummy = *((wxUint32 *)(structptr+0)) ;
+                        wxUint32 lcid = wxUINT32_SWAP_ON_BE( dummy ) ;
+                        wxString msg ;
+                        msg.Printf(_T("Language=0x%X\r\n"),lcid) ;
+                        out->Write(msg.c_str() , msg.length() ) ;
+                    }
+                    break ;
                 default:
                     tmp=NULL;
             }
@@ -682,7 +696,7 @@ wxChmInputStream::CreateHHPStream()
 bool wxChmInputStream::CreateFileStream(const wxString& pattern)
 {
     wxFileInputStream * fin;
-    wxString tmpfile = wxFileName::CreateTempFileName(_T("chmstrm"), NULL);
+    wxString tmpfile = wxFileName::CreateTempFileName(_T("chmstrm"));
 
     if ( tmpfile.empty() )
     {
@@ -729,15 +743,15 @@ class wxChmFSHandler : public wxFileSystemHandler
 public:
     /// Constructor and Destructor
     wxChmFSHandler();
-    ~wxChmFSHandler();
+    virtual ~wxChmFSHandler();
 
     /// Is able to open location?
     virtual bool CanOpen(const wxString& location);
     /// Open a file
     virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
-    /// Find first occurence of spec
+    /// Find first occurrence of spec
     virtual wxString FindFirst(const wxString& spec, int flags = 0);
-    /// Find next occurence of spec
+    /// Find next occurrence of spec
     virtual wxString FindNext();
 
 private: