Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: Apophis le Août 07, 2013, 08:10:30 pm

Titre: Problème d'insertion d'icône
Posté par: Apophis le Août 07, 2013, 08:10:30 pm
Bonjour,
j'utilise la SFML 2.0 depuis peu et j'ai un soucis pour afficher une icône à ma fenêtre : l'icône reste celle par défaut mais aucun message d'erreur n'apparaît, ni dans le terminal ni dans une autre fenêtre. Voici mon code :
RenderWindow window ;
   
    sf::Image icon;
 
    if(!icon.loadFromFile("ressources/icone.png"))
        EXIT_FAILURE;
 
    window.setIcon(32,32,icon.getPixelsPtr());

Quelqu'un sait-il ce qui ne fonctionne pas s'il vous plaît ?  :-\
P.S. : Je suis sous Linux : Kubuntu 13.04.
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 07, 2013, 08:13:41 pm
Il faut changer l'icône après avoir créé la fenêtre.
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 07, 2013, 08:18:37 pm
Merci de cette réponse rapide mais excusez-moi, une erreur de ma part lors de la copie du code : la fenêtre est bien créée au moment de l'instanciation de l'objet RenderWindow : le véritable code est en fait :

RenderWindow window(sf::VideoMode(800, 608), "Titre") ;
   
    sf::Image icon;
 
    if(!icon.loadFromFile("ressources/icone.png"))
        EXIT_FAILURE;
 
    window.setIcon(32,32,icon.getPixelsPtr());

Qu'est-ce qui ne va pas alors ? :-[
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 07, 2013, 08:25:01 pm
Ton image fait bien 32x32 ?
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 07, 2013, 08:28:44 pm
Oui, je viens de vérifier avec Gimp : et elle est bien au format PNG, je la joins.
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 07, 2013, 08:51:56 pm
Tout a l'air bon alors.

Peux-tu nous montrer un code complet minimal qui reproduit le problème ?
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 07, 2013, 09:09:32 pm
Voici un code qui, chez moi, a le même effet : l'icône reste celle par défaut (celle de X, étant sous KDE) mais il n'y a pas de message d'erreur dans le terminal.

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "fenetre SFML");
    sf::Image icon;
 
    if(!icon.loadFromFile("icone.png"))
        exit(EXIT_FAILURE);
 
    window.setIcon(32,32,icon.getPixelsPtr());

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();

          window.display() ;
           
        }
    }

    return 0;
}

j'ai bien déplacé cette fois-ci le fichier "icone.png" dans le même répertoire que l'exécutable.
Au passage : Merci beaucoup de prêter attention à mon problème  ;D

NOTE : J'utilise la SFML version 2.0 et non pas 2.1 : ceci peut-il avoir un rapport avec l'erreur ?
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 07, 2013, 10:07:05 pm
Chez moi ce code fonctionne, donc c'est sûrement l'implémentation Linux qui foire chez toi.

Il y a quelque chose de particulier au niveau de ton window manager ? Est-ce que tu utilises un compositeur ? Une quelconque surcouche ?

Citer
NOTE : J'utilise la SFML version 2.0 et non pas 2.1 : ceci peut-il avoir un rapport avec l'erreur ?
Non, absolument pas.
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 11:41:24 am
Je vous avoue ne pas savoir ce qu'est un compositeur ou une surcouche, mais peut-être que c'est KDE : en effet j'ai récemment changé de Ubuntu vers Kubuntu... et il assigne une l'icone X par défaut aux fenêtres sans icônes...
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 08, 2013, 11:59:56 am
Un compositeur c'est ça (http://fr.wikipedia.org/wiki/Compositeur_(logiciel)).

Une surcouche c'est une couche par dessus quelque chose :P
En gros, la question c'est de savoir si tu utilises KDE tout seul, ou bien si tu as installé des choses en plus, relatives à la gestion des fenêtres.
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 01:31:06 pm
En effet, j'utilise bien "Kwin" avec KDE  ;D : quel est le problème ?  ??? peut-il être corrigé ? :'(
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 08, 2013, 01:37:54 pm
Citer
quel est le problème ?
En général ça fout la merde. C'est tout ce que je sais ;D

Citer
peut-il être corrigé ?
Déjà, essaye en désactivant Kwin, pour voir si c'est bien à cause de lui que ça ne fonctionne pas. Ensuite... on verra ;)
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 01:40:57 pm
mais...euh... ça risque pas de poser des problèmes si je les désactive ??  :-[
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 08, 2013, 01:47:56 pm
J'utilise très peu Linux, quasiment pas KDE et jamais de compositeur. Donc je ne peux pas t'en dire plus.

Mais quel problème cela pourrait-il poser ? Il y a bien un moyen simple de désactiver temporairement la couche Kwin, non ?

Par exemple : http://fitzcarraldoblog.wordpress.com/2011/09/08/toggle-kwin-compositing-on-and-off-easily-from-your-desktop/
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 02:00:54 pm
J'ai fait un test, en repassant sous le gestionnaire de bureau Unity, avec Ubuntu standard, donc sans Kwin (dont j'ignorais l'existence avant ce problème  ::) ) et l'icône s'est affichée correctement. Cet aspect de la SFML est-il donc complètement incompatible avec Kwin ou peut-on utiliser un stratagème pour que ça puisse marcher tout de même ?  :-\
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 08, 2013, 02:12:49 pm
Pour ça il va falloir que je cherche un peu.

Le top ce serait que tu testes la même fonctionnalité avec SDL ou Allegro par exemple.
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 02:26:28 pm
Je veux bien  :D mais si vous pouviez me donner les codes sources a compiler pour tester les exécutables parce que j'ai juste un jour essayé la SDL en C et c'était sous windows et je n'ai jamais essayé Allegro... mais ce serait un plaisir pour moi que de résoudre ce problème !  ;D
surtout que cette bibliothèque me plaît beaucoup, d'ailleurs je vous en remercie  :)
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 08, 2013, 02:32:05 pm
Je ne vais pas vraiment avoir le temps de faire ça, désolé :-\

Je jetterai tout de même un oeil au code de la fonction Window::setIcon pour voir si je trouve quelque chose.
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 02:36:09 pm
Je fais le test pour la SDL 1.2 si ça peut vous aider, à l'aide du tutoriel sur le site du zéro : je vous communiquerais le résultat pour Kwin et sans Kwin.
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 08, 2013, 02:39:33 pm
Impec, merci :)
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 03:04:18 pm
J'ai essayé avec la SDL 1.2 : le même problème se produit : l'icône reste celle par défaut sous KDE (avec Kwin) mais s'affiche correctement sous Unity (sans Kwin).
Le code source que j'ai testé est celui du tutoriel site du zéro :

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

void pause()
{
    int continuer = 1;
    SDL_Event event;
 
    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
        }
    }
}

int main(int argc, char *argv[])
{
    SDL_Surface *ecran = NULL ;
    SDL_Rect positionFond;
 
    positionFond.x = 0;
    positionFond.y = 0;
 
    SDL_Init(SDL_INIT_VIDEO);
 
    /* Chargement de l'icône AVANT SDL_SetVideoMode */
    SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);
 
    ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
    SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
 
    SDL_Flip(ecran);
   
    pause();
   
    SDL_Quit();
 
    return EXIT_SUCCESS;
}
 

je joins l'icône utilisée par le programme, si cela  peut être utile.

NOTE : je ne sais pas quelle est la différence interne entre la SDL, la SFML ou Qt mais cette dernière affiche les icônes correctement malgré Kwin.
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 08, 2013, 03:46:04 pm
Parfait, en regardant dans le code source de Qt j'ai trouvé comment faire. Je teste ça dès que possible, et je t'envoie un binaire (32 ou 64 bits ?) pour que tu testes avec Kwin.

Merci de ton aide :)
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 08, 2013, 03:54:49 pm
32 bits, merci à vous
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 19, 2013, 07:15:26 pm
Bonjour ! Avez-vous trouvé une solution ?   ;)
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 19, 2013, 08:24:04 pm
J'ai commencé à bidouiller, et... comme mon gestionnaire de fenêtres n'a pas de décorations (donc pas d'icône), j'ai été stoppé dans mon élan ;D

Il faudrait que j'installe KDE ou autre, mais je ne suis pas un expert Linux et j'ai un peu peur de foirer mon installation en mettant un second gestionnaire de fenêtres.
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 20, 2013, 12:43:05 pm
Si vous en avez besoin, je peux volontiers effectuer des tests avec KWin ou sans KWin, ce serait un plaisir que de vous aider à mon humble niveau... ;)
Titre: Re : Problème d'insertion d'icône
Posté par: Laurent le Août 20, 2013, 01:05:44 pm
Ca ne sert à rien pour le moment, le code est loin d'être parfait, il faut donc que je puisse développer en faisant des tests directement.

Je te le donnerai quand ça fonctionnera chez moi.
Titre: Re : Problème d'insertion d'icône
Posté par: Apophis le Août 20, 2013, 01:07:12 pm
D'accord, merci, je vais patienter alors  ;) ;D