]> git.saurik.com Git - wxWidgets.git/commitdiff
added GNOME mimeinfo parsing & some fixes for non-XPM icons
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 22 Jan 2000 11:55:13 +0000 (11:55 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 22 Jan 2000 11:55:13 +0000 (11:55 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/unix/mimetype.cpp

index ece8e422eb3052c82f61f78c2b5583cb74df1905..95d459d3bb986c51a29c1edc70ba152c0a4e345c 100644 (file)
@@ -421,6 +421,7 @@ void wxGNOMEIconHandler::Init()
 {
     wxArrayString dirs;
     dirs.Add(_T("/usr/share"));
+    dirs.Add(_T("/usr/local/share"));
 
     wxString gnomedir;
     wxGetHomeDir( &gnomedir );
@@ -450,7 +451,14 @@ bool wxGNOMEIconHandler::GetIcon(const wxString& mimetype, wxIcon *icon)
     wxString iconname = ms_icons[(size_t)index];
 
 #if wxUSE_GUI
-    *icon = wxIcon(iconname);
+    wxLogNull nolog;
+    wxIcon icn;
+    if (iconname.Right(4).MakeUpper() == _T(".XPM"))
+        icn = wxIcon(iconname);
+    else
+        icn = wxIcon(iconname, wxBITMAP_TYPE_ANY);
+    if (icn.Ok()) *icon = icn;
+    else return FALSE;
 #else
     // helpful for testing in console mode
     wxLogDebug(_T("Found GNOME icon for '%s': '%s'\n"),
@@ -683,7 +691,14 @@ bool wxKDEIconHandler::GetIcon(const wxString& mimetype, wxIcon *icon)
     wxString iconname = ms_icons[(size_t)index];
 
 #if wxUSE_GUI
-    *icon = wxIcon(iconname);
+    wxLogNull nolog;
+    wxIcon icn;
+    if (iconname.Right(4).MakeUpper() == _T(".XPM"))
+        icn = wxIcon(iconname);
+    else
+        icn = wxIcon(iconname, wxBITMAP_TYPE_ANY);
+    if (icn.Ok()) *icon = icn;
+    else return FALSE;
 #else
     // helpful for testing in console mode
     wxLogDebug(_T("Found KDE icon for '%s': '%s'\n"),
@@ -814,8 +829,8 @@ ArrayIconHandlers& wxMimeTypesManagerImpl::GetIconHandlers()
 {
     if ( ms_iconHandlers.GetCount() == 0 )
     {
-        ms_iconHandlers.Add(&gs_iconHandlerGNOME);
         ms_iconHandlers.Add(&gs_iconHandlerKDE);
+        ms_iconHandlers.Add(&gs_iconHandlerGNOME);
     }
 
     return ms_iconHandlers;
@@ -824,6 +839,12 @@ ArrayIconHandlers& wxMimeTypesManagerImpl::GetIconHandlers()
 // read system and user mailcaps (TODO implement mime.types support)
 wxMimeTypesManagerImpl::wxMimeTypesManagerImpl()
 {
+    // read KDE/GNOME tables
+    ArrayIconHandlers& handlers = GetIconHandlers();
+    size_t count = handlers.GetCount();
+    for ( size_t hn = 0; hn < count; hn++ )
+        handlers[hn]->GetMimeInfoRecords(this);
+
     // directories where we look for mailcap and mime.types by default
     // (taken from metamail(1) sources)
     static const wxChar *aStandardLocations[] =
@@ -864,12 +885,6 @@ wxMimeTypesManagerImpl::wxMimeTypesManagerImpl()
     if ( wxFile::Exists(strUserMimeTypes) ) {
         ReadMimeTypes(strUserMimeTypes);
     }
-
-    // read KDE/GNOME tables
-    ArrayIconHandlers& handlers = GetIconHandlers();
-    size_t count = handlers.GetCount();
-    for ( n = 0; n < count; n++ )
-        handlers[n]->GetMimeInfoRecords(this);
 }
 
 wxFileType *