Probleme bei Mimetype-basiertem Icon-Lookup
Verfasst: Samstag 11. Februar 2012, 16:32
Wie würdet ihr vorgehen, wenn ihr euch ein passendes Theme-Icon raussuchen wollt, dessen Benennung nicht exakt dem Mimetype einer Datei entspricht? Beispiel:
Eine Suche nach diesem Namen zeigt nun, dass es `text-x-python` offenbar nicht in jedem Icon-Theme gibt. Insbesondere das Theme `gnome` hat bei mir nur `gnome-mime-text-x-python` als einzige infrage kommende Icondatei für den Namen. Ich brauche also eine Art unscharfes Matching dafür.
Das Problem ist, dass ich den Algo zum Auffinden eines konkreten Dateinamens für einen Iconnamen nicht selbst geschrieben habe. Ich lasse dies durch `QIcon.fromTheme()` bzw für den Fall, dass Qt nicht fündig wird, alternativ von PyXDG mittels `xdg.IconTheme.getIconPath()` (welcher dann an `QIcon` übergeben wird) erledigen. Die geben beide vor, die "XDG Icon Theme Specification" zu implementieren, welche bekanntlich mindestens mit den 4 großen DEs (Gnome, KDE, XFCE, LXDE) harmonieren müsste - offenbar tun sie es aber trotzdem auf unterschiedliche Weise (daher die Fallback-Lösung).
Worum es mir aber jetzt konkret geht: Gibt es irgendeine Spezifikation, die o.g. Abweichungen bei der Benennung behandelt oder muss ich Trial-And-Error mäßig vorgehen (also z.B. `gnome-mime-` vorne dranhängen, wenn beim ersten Versuch nichts gefunden wird)? Die Lösung klingt für mich nicht gerade sauber, aber irgendwie fällt mir auch nichts besseres ein.
Code: Alles auswählen
>>> import mimetypes
>>> mimetypes.guess_type('__init__.py')[0].replace('/', '-')
'text-x-python'Das Problem ist, dass ich den Algo zum Auffinden eines konkreten Dateinamens für einen Iconnamen nicht selbst geschrieben habe. Ich lasse dies durch `QIcon.fromTheme()` bzw für den Fall, dass Qt nicht fündig wird, alternativ von PyXDG mittels `xdg.IconTheme.getIconPath()` (welcher dann an `QIcon` übergeben wird) erledigen. Die geben beide vor, die "XDG Icon Theme Specification" zu implementieren, welche bekanntlich mindestens mit den 4 großen DEs (Gnome, KDE, XFCE, LXDE) harmonieren müsste - offenbar tun sie es aber trotzdem auf unterschiedliche Weise (daher die Fallback-Lösung).
Worum es mir aber jetzt konkret geht: Gibt es irgendeine Spezifikation, die o.g. Abweichungen bei der Benennung behandelt oder muss ich Trial-And-Error mäßig vorgehen (also z.B. `gnome-mime-` vorne dranhängen, wenn beim ersten Versuch nichts gefunden wird)? Die Lösung klingt für mich nicht gerade sauber, aber irgendwie fällt mir auch nichts besseres ein.