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 un système d'alerte


Sujet :

GTK+ avec C & C++

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut Créer un système d'alerte
    Bonjour !


    Dans un proche futur je commence le développement d'un nouveau programme, je suis donc en pleine étude de cas. Mon principal soucis pour le moment est que je dois mettre en place un système d'alerte qui se déclencherais à une date précise !

    Faire vérifier la date lors du lancement du programme et balancer l'alerte n'est pas un problème à ce niveau mais si l'ordinateur tourne non stop, j'aimerais que lorsque la date change, si la nouvelle date correspond à la date d'alerte, qu'elle se déclenche !

    Bien sûr, une boucle, un wait, etc... mais je ne sais pas trop, cela me paraît pas très approprié, il ne faudrait pas non plus que l'UC tourne à 100% tout le temps Faire du wait pendant 1h me parait pas non plus très propre, enfin c'est pour le moment le seul moyen a ma connaissance mais je suis pas convaincu que ce soit le meilleur


    Quelle serait la solution la plus appropriée ?

    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu peux rajouter un timeout avec g_timeout_add pour vérifier régulièrement la date courante

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Bien sûr, une boucle, un wait, etc... mais je ne sais pas trop, cela me paraît pas très approprié,
    C'est pourtant ce que semble utilisé les démons : http://www.netzmafia.de/skripten/uni...wto.html#ss6.1

    Citation Envoyé par Franck.H Voir le message
    il ne faudrait pas non plus que l'UC tourne à 100% tout le temps
    g_usleep mais en pause le thread courant, donc il ne consomme pas de ressource CPU

  4. #4
    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
    Par défaut
    Plusieurs possibilités.

    1/ Au démarrage de l'application, calculer le nombre de secondes qui te séparent de l'heure exacte de l'alerte et de lancer un g_timeout_add_seconds. Dès le moment de l'alerte venu, tu seras averti. En revanche, ce système ne fonctionnera pas si l'on change la date pendant le fonctionnement de l'application, et que l'application n'est pas relancée. Mais c'est celui qui demandera le moins de temps processeur.

    2/ Utiliser g_timeout_add_seconds pour lancer un timer chaque minute, et vérifier si tu es à l'heure de l'alerte ou si tu l'as dépassée pour la déclencher (méthode de teuf). Tu auras au maximum une minute de retard pour l'affichage de ton alerte. Et effectivement, une attente active n'est pas appropriée dans ces cas là.

    Les variantes g_*_seconds sont conseillées quand la précision est de l'ordre de la seconde, elles évitent de réveiller le processeur pour rien et consomment moins d'énergie.

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ok merci à tous ! Pour ce qui est de l'endormissement du thread courant, même s'il dors pendant 1h c'est pas bien grave, le tout est que je recois une alerte au jour indiqué, pas d'heure ni de seconde dans mon cas étant donné qu'il s'agit d'un programme pense-bête pour se rappeler des anniversaire, j'aurais peut-être du le préciser dès le départ
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    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
    Par défaut
    En même temps, si on te rappelle l'anniversaire à 23h59, ça te fait une belle jambe

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par liberforce Voir le message
    En même temps, si on te rappelle l'anniversaire à 23h59, ça te fait une belle jambe
    Ouais c'est sûr mais une heure de rappel sera fixée et même mieux, prévenir à n jours avant l'anniv et même une liste de cadeaux possible, si une fête est prévue etc...
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    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
    Par défaut
    Ah bin c'est facebook ton appli

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Ah bin c'est facebook ton appli
    Nan pas facedebouc Et puis c'est local, c'est sur le PC pas sur le net Et aussi, c'est plus modeste
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Bien sûr, une boucle, un wait, etc... mais je ne sais pas trop, cela me paraît pas très approprié, il ne faudrait pas non plus que l'UC tourne à 100% tout le temps Faire du wait pendant 1h me parait pas non plus très propre, enfin c'est pour le moment le seul moyen a ma connaissance mais je suis pas convaincu que ce soit le meilleur
    Euh, wait() attend la fin d'un processus. Toi, ton besoin est de scruter la date système en permanence. Je ne crois pas que wait() te soit d'une quelconque utilité.
    Maintenant, pour tes problèmes de ressources, rajoute un nice(20) dans ton code et hop, ton processus passera dans les derniers du système. Plus de petits sleep(x) pour éviter à ton processus de bosser H24 et t'es tranquille...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    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
    Par défaut
    Je pense qu'il a confondu sleep et wait...

    Et pas besoin de nice, il peut gérer les priorités dans un g_timeout_add_seconds_full, ça évite de devoir scripter autour. Il suffit d'utiliser G_PRIORITY_LOW comme valeur du paramètre priority. Mais vu que la précision n'est pas nécessaire, c'est assez inutile, le on parle d'un polling de l'ordre de la minute, voire plus, alors le processeur, c'est pas ce qui va le tuer, hein...

  12. #12
    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
    Par défaut
    Ah au fait, côté implémentation, je conseille un processus en arrière plan avec juste une notification par GtkStatusIcon si tu as un évènement intéressant à notifier. Tu configures ta session pour le lancer automatiquement, et le tour est joué ;-)

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Ah au fait, côté implémentation, je conseille un processus en arrière plan avec juste une notification par GtkStatusIcon si tu as un évènement intéressant à notifier.
    Ca c'est prévu sous cette forme, je ne me vois pas faire ca autrement
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  14. #14
    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
    Par défaut
    Bin ça dépend, tu peux avoir envie d'avoir une application complète, qui te permette de rajouter les nom, photos et dates de naissances pour te signaler les anniversaires, et là il te faut une IHM complète, avec sauvegarde des infos dans un fichier, et moyen de la masquer sans la fermer.

    Ou alors tu la configures le fichier à la main et ton IHM se résume à la partie "signalement à l'utilisateur".

    Pour le fichier, le plus simple est d'utiliser un fichier type .ini, comme ce que produit GKeyFile. Ou si tu maîtrises mieux, et que ton appli n'est pas destinée à être multi-plate-forme, tu dialogues directement avec evolution-data-server qui gère déjà les contacts d'évolution, le logiciel de mail de GNOME.

  15. #15
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Bin oui il y aura une interface, en cliquant droit sur l'icone du systray y'aura un menu avec ce qui va avec

    Bin pour la sauvegarde je vais voir encore, j'ai quelques lib perso de côté sinon bin ce sera les GKeyFile
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  16. #16
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    L'icône du systray ? Tu veux dire celle qui sera cachée en permanence sauf quand y a une notification parce que tu es un bon citoyen et que tu ne surcharges pas inutilement la zone de notification ?

  17. #17
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    L'icône du systray ? Tu veux dire celle qui sera cachée en permanence sauf quand y a une notification parce que tu es un bon citoyen et que tu ne surcharges pas inutilement la zone de notification ?
    Oui oui
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  18. #18
    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
    Par défaut
    Donc t'es en train de nous dire que la status icon sera cachée tout le temps sauf quand il y aura une notification, et que c'est par là que tu accèderas à l'ajout/suppression de tes contacts... Y a pas comme un soucis ? Comment tu ajoutes un contact quand tu n'as pas de notification, et donc pas de status icon ?

  19. #19
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Donc t'es en train de nous dire que la status icon sera cachée tout le temps sauf quand il y aura une notification, et que c'est par là que tu accèderas à l'ajout/suppression de tes contacts... Y a pas comme un soucis ? Comment tu ajoutes un contact quand tu n'as pas de notification, et donc pas de status icon ?
    Tu n'as qu'à moitié compris Oui tout se passera par un statut icon, le fait qu'il sera caché dépendra des réglage de chaque utilisateur. Comme sous Windows par exemple où tu peux dérouler ensuite la liste des icones etc...

    J'ai surtout répondu pour le fait que ce soit par un statut icon c'est tout
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  20. #20
    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
    Par défaut
    Alors c'est que toi tu n'as qu'à moitié compris la réponse de teuf
    La zone de notification, comme son nom l'indique, n'a pour rôle que d'informer d'évènements ponctuels. Elle ne devrait donc pas (et ce, même si malheureusement pas mal d'applications ne respectent pas cette règle) être utilisée pour un objet permanent, qui ne notifie aucun évènement. En gros ça doit représenter un changement d'état (évènement) et pas un état.

    The utility of the notification area decreases rapidly when more than about four icons are always present. For this reason, icons that appear only temporarily in response to events are preferable.
    http://library.gnome.org/devel/hig-b...n-area.html.en

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Commet créer un Système d'exploitation ?
    Par reggae dans le forum Langages de programmation
    Réponses: 31
    Dernier message: 25/07/2013, 11h54
  2. Créer un système de mise à jour
    Par cppcpp1 dans le forum C++
    Réponses: 6
    Dernier message: 13/01/2007, 11h38
  3. Créer un système de fichier spécifique
    Par Muesko dans le forum Assembleur
    Réponses: 7
    Dernier message: 10/09/2006, 08h20
  4. Créer un message d'alerte avec comme solution oui ou non
    Par La_Bande_A_Zozo dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/05/2006, 14h43

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