]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filesys.cpp
Implement support for gradient stops for OS X.
[wxWidgets.git] / src / common / filesys.cpp
index d0f4901ebb41f9e835226d20fc69e9a7f6235eb6..29e794e5705a9e8a795ac82f18b1d28b56e1cdb8 100644 (file)
@@ -81,65 +81,62 @@ wxString wxFileSystemHandler::GetMimeTypeFromExt(const wxString& location)
 
     // Don't use mime types manager if the application doesn't need it and it would be
     // cause an unacceptable delay, especially on startup.
 
     // Don't use mime types manager if the application doesn't need it and it would be
     // cause an unacceptable delay, especially on startup.
-    bool useMimeTypesManager = true;
 #if wxUSE_SYSTEM_OPTIONS
 #if wxUSE_SYSTEM_OPTIONS
-    useMimeTypesManager = (wxSystemOptions::GetOptionInt(wxT("filesys.no-mimetypesmanager")) == 0);
+    if ( !wxSystemOptions::GetOptionInt(wxT("filesys.no-mimetypesmanager")) )
 #endif
 #endif
-
-    if (useMimeTypesManager)
     {
         if (!s_MinimalMimeEnsured)
         {
             static const wxFileTypeInfo fallbacks[] =
             {
     {
         if (!s_MinimalMimeEnsured)
         {
             static const wxFileTypeInfo fallbacks[] =
             {
-                wxFileTypeInfo(_T("image/jpeg"),
+                wxFileTypeInfo(wxT("image/jpeg"),
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
-                    _T("JPEG image (from fallback)"),
-                    _T("jpg"), _T("jpeg"), _T("JPG"), _T("JPEG"), wxNullPtr),
-                    wxFileTypeInfo(_T("image/gif"),
+                    wxT("JPEG image (from fallback)"),
+                    wxT("jpg"), wxT("jpeg"), wxT("JPG"), wxT("JPEG"), wxNullPtr),
+                wxFileTypeInfo(wxT("image/gif"),
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
-                    _T("GIF image (from fallback)"),
-                    _T("gif"), _T("GIF"), wxNullPtr),
-                    wxFileTypeInfo(_T("image/png"),
+                    wxT("GIF image (from fallback)"),
+                    wxT("gif"), wxT("GIF"), wxNullPtr),
+                wxFileTypeInfo(wxT("image/png"),
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
-                    _T("PNG image (from fallback)"),
-                    _T("png"), _T("PNG"), wxNullPtr),
-                    wxFileTypeInfo(_T("image/bmp"),
+                    wxT("PNG image (from fallback)"),
+                    wxT("png"), wxT("PNG"), wxNullPtr),
+                wxFileTypeInfo(wxT("image/bmp"),
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
-                    _T("windows bitmap image (from fallback)"),
-                    _T("bmp"), _T("BMP"), wxNullPtr),
-                    wxFileTypeInfo(_T("text/html"),
+                    wxT("windows bitmap image (from fallback)"),
+                    wxT("bmp"), wxT("BMP"), wxNullPtr),
+                wxFileTypeInfo(wxT("text/html"),
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
                     wxEmptyString,
-                    _T("HTML document (from fallback)"),
-                    _T("htm"), _T("html"), _T("HTM"), _T("HTML"), wxNullPtr),
-                    // must terminate the table with this!
-                    wxFileTypeInfo()
+                    wxT("HTML document (from fallback)"),
+                    wxT("htm"), wxT("html"), wxT("HTM"), wxT("HTML"), wxNullPtr),
+                // must terminate the table with this!
+                wxFileTypeInfo()
             };
             wxTheMimeTypesManager->AddFallbacks(fallbacks);
             s_MinimalMimeEnsured = true;
         }
             };
             wxTheMimeTypesManager->AddFallbacks(fallbacks);
             s_MinimalMimeEnsured = true;
         }
-        
+
         wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext);
         if ( !ft || !ft -> GetMimeType(&mime) )
         {
             mime = wxEmptyString;
         }
         wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext);
         if ( !ft || !ft -> GetMimeType(&mime) )
         {
             mime = wxEmptyString;
         }
-        
+
         delete ft;
         delete ft;
-        
+
         return mime;
     }
     else
 #endif
     {
         return mime;
     }
     else
 #endif
     {
-        if ( ext.IsSameAs(wxT("htm"), false) || ext.IsSameAs(_T("html"), false) )
+        if ( ext.IsSameAs(wxT("htm"), false) || ext.IsSameAs(wxT("html"), false) )
             return wxT("text/html");
             return wxT("text/html");
-        if ( ext.IsSameAs(wxT("jpg"), false) || ext.IsSameAs(_T("jpeg"), false) )
+        if ( ext.IsSameAs(wxT("jpg"), false) || ext.IsSameAs(wxT("jpeg"), false) )
             return wxT("image/jpeg");
         if ( ext.IsSameAs(wxT("gif"), false) )
             return wxT("image/gif");
             return wxT("image/jpeg");
         if ( ext.IsSameAs(wxT("gif"), false) )
             return wxT("image/gif");
@@ -247,7 +244,7 @@ wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString&
     wxString fullpath = ms_root + fn.GetFullPath();
 
     if (!wxFileExists(fullpath))
     wxString fullpath = ms_root + fn.GetFullPath();
 
     if (!wxFileExists(fullpath))
-        return (wxFSFile*) NULL;
+        return NULL;
 
     // we need to check whether we can really read from this file, otherwise
     // wxFSFile is not going to work
 
     // we need to check whether we can really read from this file, otherwise
     // wxFSFile is not going to work
@@ -261,7 +258,7 @@ wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString&
     if ( !is->Ok() )
     {
         delete is;
     if ( !is->Ok() )
     {
         delete is;
-        return (wxFSFile*) NULL;
+        return NULL;
     }
 
     return new wxFSFile(is,
     }
 
     return new wxFSFile(is,
@@ -277,12 +274,18 @@ wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString&
 wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags)
 {
     wxFileName fn = wxFileSystem::URLToFileName(GetRightLocation(spec));
 wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags)
 {
     wxFileName fn = wxFileSystem::URLToFileName(GetRightLocation(spec));
-    return wxFindFirstFile(ms_root + fn.GetFullPath(), flags);
+    const wxString found = wxFindFirstFile(ms_root + fn.GetFullPath(), flags);
+    if ( found.empty() )
+        return found;
+    return wxFileSystem::FileNameToURL(found);
 }
 
 wxString wxLocalFSHandler::FindNext()
 {
 }
 
 wxString wxLocalFSHandler::FindNext()
 {
-    return wxFindNextFile();
+    const wxString found = wxFindNextFile();
+    if ( found.empty() )
+        return found;
+    return wxFileSystem::FileNameToURL(found);
 }
 
 
 }
 
 
@@ -540,7 +543,7 @@ bool wxFileSystem::FindFileInPath(wxString *pStr,
 {
     // we assume that it's not empty
     wxCHECK_MSG( !basename.empty(), false,
 {
     // we assume that it's not empty
     wxCHECK_MSG( !basename.empty(), false,
-                _T("empty file name in wxFileSystem::FindFileInPath"));
+                wxT("empty file name in wxFileSystem::FindFileInPath"));
 
     wxString name;
     // skip path separator in the beginning of the file name if present
 
     wxString name;
     // skip path separator in the beginning of the file name if present
@@ -691,7 +694,10 @@ wxString wxFileSystem::FileNameToURL(const wxFileName& filename)
     // here, in particular in GetRightLocation()
     url.Replace(wxT(":"), wxT("%3A"));
     url = wxT("file:") + url;
     // here, in particular in GetRightLocation()
     url.Replace(wxT(":"), wxT("%3A"));
     url = wxT("file:") + url;
-    return url;
+
+    // Do wxURI- and common practice-compatible escaping: encode the string
+    // into UTF-8, then escape anything non-ASCII:
+    return wxURI(url).BuildURI();
 }
 
 
 }