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

GTK+ avec C & C++ Discussion :

Créer une popup seule, avec une durée de vie dans le temps


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut Créer une popup seule, avec une durée de vie dans le temps
    bonjour !

    je cherche à créer un petit programme pour openbox ( & Co) qui permette entre autre de régler et d' afficher le volume ou la brillance de l' écran dans une brève popup (avec barre de progression). Dans ses raccourcis clavier l' utilisateur n' aura qu' a spécifier par exemple : alt+F1 : ce_prog --BrightUp

    J' ai deux problèmes :
    1 : Je ne sais pas comment spécifier une durée de vie à mes fenêtres avant de les détruire ou d' appeler gtk_main_quit (), mais j' ai peut-être mal cherché.
    Dois-je passer par les processus ?

    2 : Comment éviter les conflits de lancement de plusieurs instances du programme ? (Si l' utilisateur descend très vite le volume avec ses raccourcis clavier par exemple, comme on le fait tous, ça lancera plusieurs fois le programme ..)

    merci

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Salut.

    Je réponds à la dernière question. Lorsque tu lances ton programme fais-lui écrire son pid dans un fichier de log par exemple.
    Lorsqu'il s'arrête il efface son pid.

    Aussi, à chaque démarrage, la première chose à faire est de vérifier qu'il n'existe pas un pid dans le fichier de log. Si oui, l'application est déjà lancée. Arrêt du programme.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    merci gerald3d je vais regarder de ce côté,

    pour mon premier problème je pense que je vais m' émanciper de gtk pour dialoguer directement avec la xlib. Je regarde un peu comment sont faites les sources d' openbox, c' est compliqué pour moi mais formateur ;°)

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Tu peux utiliser un thread avec la fonction g_timeout_add();. Tu commences par lancer un g_timer. Dans le thread tu regardes où en est le g_timer. Quand le delai désiré est arrivé un gtk_widget_destroy(); sur ta fenêtre et le tour est joué .

  5. #5
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Citation Envoyé par echantillon Voir le message
    1 : Je ne sais pas comment spécifier une durée de vie à mes fenêtres avant de les détruire ou d' appeler gtk_main_quit (), mais j' ai peut-être mal cherché.
    Dois-je passer par les processus ?
    Utilise g_timeout_add ou g_timeout_add_seconds pour définir au bout de combien de temps ton programme doit se fermer. Dans la callback associée, il suffit juste d'appeler gtk_main_quit. Pas besoin de thread, tout se fait dans le thread principal.

    Citation Envoyé par echantillon Voir le message
    2 : Comment éviter les conflits de lancement de plusieurs instances du programme ? (Si l' utilisateur descend très vite le volume avec ses raccourcis clavier par exemple, comme on le fait tous, ça lancera plusieurs fois le programme ..)
    Sous GTK2, tu as la libunique qui peut t'aider en ce sens. Sous GTK3, c'est GtkApplication qui fournit ces fonctionnalités. La méthode de gerald3d fonctionne aussi.

    Mais je serais toi, je regarderai comment les programmes existants gèrent cela. D'habitude les touches multimédia des claviers sont déjà reliées à des outils de notification de ce type. Sous Linux, ce sont des évènements X.

    Tu as d'autres infos dans ce fil de discussion qui cause sensiblement de la même chose:
    http://ubuntuforums.org/showthread.php?t=987149
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    merci pour vos réponses mais j' abandonne vraiment gtk pour ce coup là. Et même la xlib d' ailleurs pour préférer xcb.
    Tout ça m' évitera d' avoir à charger tout la librairie d' un toolkit, ses dépendances (et ses ingérances) juste pour afficher une popup bordeless ne contenant pratiquement rien. Ca me parait plus crédible aussi, dans un wm leger qui communique directement avec xlib, de proposer un 'plugin?' programmé de cette manière.

    @liberforce : pour ton lien, j' ai déjà programmé la partie gestion du volume et de la brillance (bêtement avec des appels à xbacklight et amixer, que je compte décortiquer pour implémenter directement dans mon code). Il ne me manquait que la popup.

    cordialement

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/10/2016, 17h49
  2. Créer un wallpaper bitmap avec une seule couleur
    Par Tenguryu dans le forum C++Builder
    Réponses: 1
    Dernier message: 31/03/2006, 15h43
  3. Comment créer un lien hypertexte avec une liaison OLE Excel ?
    Par vieuxsinge dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 08/12/2005, 17h16
  4. Aide avec une popup et la page parente
    Par iomega dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 08/12/2005, 15h21
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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