wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Fichiers - Dossiers - Disques
» Obtenir l'icône associé à un fichier
Détails du snippet : Obtenir l'icône associé à un fichier
Informations sur l'auteur de ce snippet :


Hors ligne
mick009 (Membre)
Inscrit le : 03-04-2008
Messages: 123
Snippets: 3
Tutoriels: 0
Introduction / Description :
Bonjour,
J'écris ce snippet car après avoir été beaucoup déçu des mimeTypes, j'ai décidé de rechercher comment obtenir facilement (et de manière portable) une icône associé à un type de fichier...
J'avais commencé par écrire une fonction qui marchait très bien sous Window (peut-être sous Linux, mais pas sur les autres OS).
Ces icônes ne sont pas ceux affichés par l'explorateur, mais elles sont très sympas ^^ !
Contenu du snippet :
Bon assez parlé, voici le code :

Code Cpp:

SetImageList(wxTheFileIconsTable->GetSmallImageList(), wxIMAGE_LIST_SMALL);

A placer ce code pour une classe qui dérive de wxListView ou wxListCtrl.

Code Cpp:

int iconFromFile(const wxString& file, bool isDir = false);

Prototype d'une fonction que j'ai inventé

Code Cpp:

// Récupère l'image d'un fichier
int iconFromFile(const wxString& file, bool isDir)
{
    // si c'est un dossier
    if(isDir)
        return wxFileIconsTable::folder;;
 
    // sinon
    int retour = wxFileIconsTable::file;
    if(file.Find(wxT('.')) != wxNOT_FOUND)
        retour = wxTheFileIconsTable->GetIconID(file.AfterLast(wxT('.')));
    return retour;
}

Et la fonction :D

La fonction retourne alors un entier qui est en fait la position de l'image dans la liste !
Et donc on peut utiliser avec cette fonction :

Code Cpp:

 
int indexItem = ...
wxString name = "...";
int indexImage = iconFromFile("test.jpg");
long item = InsertItem(indexItem, name, indexImage);
Explications finales :
Voila j'espère avoir pu vous aider ^^
N'hésitez pas à me demander de l'aide si nécessaire :D
Commentaires
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Et ca marche avec les exe?

Itérer est humain, récurser est divin
mick009 (Membre de la secte)
Inscrit le : 03-04-2008
Messages: 123
Snippets: 3
Tutoriels: 0
Hors ligne
Et bien en fait, on peut dire que oui....
Si tu veux wxWidget ont crée des icônes (wxArt) et qu'ils associent avec certains type de fichiers. Résultat => Si tu es sous Windows, les icônes ne ressembleront pas du tout à ceux que tu vois dans l'explorateur -_-'.... (et ce seront toujours les mêmes icônes pour les exécutables.
En même temps, on peut s'y attendre car wxFileIconsTable utilsie aussi les mimesTypes (qui se fient par rapport à une extension et non par rapport à un fichier...).

Ce qu'il faudrait c'est programmer une fonction qui obtient les icônes qu'on voit dans les explorateurs de l'OS.
Sous Windows, on peut utiliser une association de SHGetFileInfo et wxIcon.SetHICON.
Sous Linux, je ne sais pas du tout quelle librairie a été utilisée avec wxWidgets, donc je ne sais pas où regarder....
Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Fichiers - Dossiers - Disques
» Obtenir l'icône associé à un fichier