+
+ // the variable $KDEDIR is set when KDE is running
+ wxString kdedir = wxGetenv( wxT("KDEDIR") );
+
+ if (!kdedir.empty())
+ {
+ // $(KDEDIR)/share/config/kdeglobals holds info
+ // the current icons theme
+ wxFileName configFile( kdedir, wxEmptyString );
+ configFile.AppendDir( wxT("share") );
+ configFile.AppendDir( wxT("config") );
+ configFile.SetName( wxT("kdeglobals") );
+
+ if (configFile.FileExists())
+ {
+ wxFileConfig config( wxEmptyString, wxEmptyString, configFile.GetFullPath() );
+ // $(KDEDIR)/share/config -> $(KDEDIR)/share
+ configFile.RemoveDir( configFile.GetDirCount()-1 );
+ // $(KDEDIR)/share/ -> $(KDEDIR)/share/icons
+ configFile.AppendDir( wxT("icons") );
+
+ // Check for entry
+ config.SetPath( wxT("Icons") );
+ wxString theme;
+ if (config.Read( wxT("Theme"), &theme ))
+ configFile.AppendDir( theme );
+ else
+ configFile.AppendDir( wxT("default.kde") );
+ }
+ else
+ {
+ // $(KDEDIR)/share/config -> $(KDEDIR)/share
+ configFile.RemoveDir( configFile.GetDirCount()-1 );
+ // $(KDEDIR)/share/ -> $(KDEDIR)/share/icons
+ configFile.AppendDir( wxT("icons") );
+ // $(KDEDIR)/share/icons -> $(KDEDIR)/share/icons/default.kde
+ configFile.AppendDir( wxT("default.kde") );
+ }
+
+ configFile.SetName( wxEmptyString );
+ configFile.AppendDir( wxT("32x32") );
+ configFile.AppendDir( wxT("mimetypes") );
+
+ // Just try a few likely icons theme names
+
+ int pos = configFile.GetDirCount()-3;
+
+ if (!wxDir::Exists(configFile.GetPath()))
+ {
+ configFile.RemoveDir( pos );
+ configFile.InsertDir( pos, wxT("default.kde") );
+ }
+
+ if (!wxDir::Exists(configFile.GetPath()))
+ {
+ configFile.RemoveDir( pos );
+ configFile.InsertDir( pos, wxT("default") );
+ }
+
+ if (!wxDir::Exists(configFile.GetPath()))
+ {
+ configFile.RemoveDir( pos );
+ configFile.InsertDir( pos, wxT("crystalsvg") );
+ }
+
+ if (!wxDir::Exists(configFile.GetPath()))
+ {
+ configFile.RemoveDir( pos );
+ configFile.InsertDir( pos, wxT("crystal") );
+ }
+
+ if (wxDir::Exists(configFile.GetPath()))
+ icondirs.Add( configFile.GetFullPath() );
+ }