IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Icônes sous Linux


Sujet :

C++

  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut Icônes sous Linux
    Bonjour,

    Je suis actuellement en train de faire un programme en C++ et après avoir laborieusement réussi à mettre une icône à la fenêtre en utilisant l'API windows, j'aimerais faire de même pour les Unix.

    Par contre, malgré mes recherches, je ne trouve aucune information sur le sujet alors que pour l'API windows j'avais tout de même trouvé un petit peu de documentation même s'il m'a fallu par la suite l'aide du chat de developpez pour parvenir à mes fins.

    Est-ce que vous auriez des informations à ce sujet?

    Cordialement,

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Linux n'a pas de notion d'icone. Tu utilises quoi comme bibliothèque graphique?

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    J'utilise Irrlicht pour créer la fenêtre.

    Bien que sous Linux, il n'y ai pas de notion d'icône, on a tout de même des images dans les menus, sur les lanceurs et en haut à gauche des fenêtres.

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Linux n'a pas de notion d'icône. Les exécutables sous Linux n'ont pas de ressources dans lesquelles placer une icône.

    Les environnements graphiques utilisés sous Linux peuvent avoir une notion d'icône. X suggère un moyen de communiquer entre un client en cours d'exécution et le window manager quelle icône il désire. Le window manager fait ce qu'il veut (certains passe outre, certains n'ont pas de notion d'état iconifié). Cette manière de communiquer est un peu bas niveau, les bibliothèques fournissent généralement un moyen de faire ce qu'il faut. Pas de chance, je ne connais pas Irrlicht et ne peut pas d'aider.

    Dans les menus et compagnie, généralement le programme n'est pas lancé. Et X ne spécifie rien. Par chance, il y a un autre projet qui fournit une spec et qui est respectée par les environnements les plus populaires (au moins KDE et Gnome) Voir http://standards.freedesktop.org/des...y-spec/latest/

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Merci pour ta réponse, je comprend mieux comment fonctionnent les lanceurs et les menus désormais.

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Les environnements graphiques utilisés sous Linux peuvent avoir une notion d'icône. X suggère un moyen de communiquer entre un client en cours d'exécution et le window manager quelle icône il désire. Le window manager fait ce qu'il veut (certains passe outre, certains n'ont pas de notion d'état iconifié). Cette manière de communiquer est un peu bas niveau, les bibliothèques fournissent généralement un moyen de faire ce qu'il faut. Pas de chance, je ne connais pas Irrlicht et ne peut pas d'aider.
    En fait Irrlicht ne le fait pas, je suis donc obligé de passer par le bas niveau.


    Après théoriquement je devrais aussi chercher pour les mac, mais comme je n'ai pas d'ordi pour tester, tant pis pour eux^^

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Neckara Voir le message
    En fait Irrlicht ne le fait pas, je suis donc obligé de passer par le bas niveau.
    Bon: http://www.x.org/docs/ICCCM/icccm.pdf

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Merci pour ce lien, si je comprend bien, si j'utilise la Xlib, il faut que je fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XWMHints wmhint;
    //remplir icon_pixmap et flags ( IconPixmapHint )
    XSetWMHints(XOpenDisplay(NULL), w, &wmhint);
    Il suffit juste que j'arrive à trouver comment remplir display et w ^^


    par contre, avec la Xlib, les noms ne sont pas exactement les même que ceux donné sur ton document, est-ce une différence au niveau de l'implémentation ou est-ce que je suis en train de me diriger vers la mauvaise voie?

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Merci pour ce lien, si je comprend bien, si j'utilise la Xlib, il faut que je fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XWMHints wmhint;
    //remplir icon_pixmap et flags ( IconPixmapHint )
    XSetWMHints(XOpenDisplay(NULL), w, &wmhint);
    Il suffit juste que j'arrive à trouver comment remplir display et w ^^
    Tu dois récupérer tous les deux de Irrlicht (l'icône est attachée à la fenêtre, il faut indiquer la bonne fenêtre, pas une autre).

    par contre, avec la Xlib, les noms ne sont pas exactement les même que ceux donné sur ton document, est-ce une différence au niveau de l'implémentation ou est-ce que je suis en train de me diriger vers la mauvaise voie?
    Ça fait quinze ans que j'ai plus touché aussi bas, tu es prévenu. Le document est écrit avec le vocabulaire du protocole, pas de la Xlib. (Il y a d'autres implémentations du protocole. Il y en avait une en Lisp. Plus récemment -- ça doit faire quand même une dizaine d'année -- il y a eu un projet de remplacer Xlib par quelque chose d'autre écrit en C; voyons: http://xcb.freedesktop.org/)

  9. #9
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Si j'ai bien compris, je peux utiliser le display contenu dans la variable d'environnement DISPLAY.
    J'ai pas tout suivi mais display est surtout utilisé pour envoyer des informations sur d'autres ordinateurs ?

    Citation Envoyé par http://tronche.com/gui/x/xlib/display/opening.html#Display
    The encoding and interpretation of the display name is implementation dependent. Strings in the Host Portable Character Encoding are supported; support for other characters is implementation dependent. On POSIX-conformant systems, the display name or DISPLAY environment variable can be a string in the format:


    hostname:number.screen_number

    hostname Specifies the name of the host machine on which the display is physically attached. You follow the hostname with either a single colon ( or a double colon (:.
    number Specifies the number of the display server on that host machine. You may optionally follow this display number with a period (.). A single CPU can have more than one display. Multiple displays are usually numbered starting with zero.
    screen_number Specifies the screen to be used on that server. Multiple screens can be controlled by a single X server. The screen_number sets an internal variable that can be accessed by using the DefaultScreen() macro or the XDefaultScreen() function if you are using languages other than C (see "Display Macros").

    For example, the following would specify screen 1 of display 0 on the machine named ``dual-headed'':

    dual-headed:0.1
    Pour le w, je suis sur une piste

  10. #10
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Si j'ai bien compris, je peux utiliser le display contenu dans la variable d'environnement DISPLAY.
    Non. D'une part, la variable d'environnement indique sur quel display il faut afficher par défaut, mais il y a souvent une option sur la ligne de commande pour permettre de changer. Dans ce cas, la variable d'environnement ne sert à rien.

    Ensuite, le display à passer, il contient un socket sur lequel communiquer. Et le reste (dont window) va être interprété par le serveur X en fonction du socket sur lequel il reçoit ses commandes. Donc tu ne peux pas te servir d'un autre sans risquer des problèmes.

    J'ai pas tout suivi mais display est surtout utilisé pour envoyer des informations sur d'autres ordinateurs ?
    La variable d'environnement DISPLAY est utilisée pour indiquer sur quel serveur (et quel écran du serveur, mais je n'ai jamais vu un serveur avec plus d'un écran -- par contre j'utilise régulièrement des ordi qui font tourner plusieurs serveurs X) afficher. Sans DISPLAY (ou équivalent en ligne de commande), un programme ne va pas pouvoir ouvrir sa connexion.

  11. #11
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Je ne vois pas trop comment faire alors pour récupérer toutes ces informations.

    Pour le Window, j'ai trouvé un moyen de le rechercher en parcourant toutes les fenêtres : http://www.experts-exchange.com/OS/U..._21341279.html

    Mais pour display, je ne pense pas qu'Irrlicht s'amuse à utiliser un autre display que celui par défaut.
    Mais si ce n'est pas le cas, je vois mal comment récupérer le nom du display vu qu'il ne va pas dépendre du programme mais de la fenêtre et qu'en plus j'ai besoin du display pour trouver la fenêtre.

  12. #12
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Ah, tu veux retrouver la fenêtre d'une autre manière, pas la récupérer par Irrlicht. Bon tu ouvres effectivement une autre connexion, puis tu utilises XQueryTree. Mais je n'ai aucune idée de comment identifier la fenêtre qui t'intéresses.

  13. #13
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    En effet, Irrlicht ne permet pas de récupérer de telles informations, pour windows par exemple j'ai dû rechercher le HWND avec le nom de la fenêtre.

    Avec XGetWMName je pense que je vais pouvoir faire de même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  2. Comment désinstaller MySQL sous linux
    Par nahmsath dans le forum Installation
    Réponses: 5
    Dernier message: 18/09/2007, 10h46
  3. installer jbuilder7 sous linux
    Par rtlinfo34 dans le forum JBuilder
    Réponses: 5
    Dernier message: 30/10/2002, 19h16
  4. Réponses: 2
    Dernier message: 25/10/2002, 22h19
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo