Aide pour SystemStatusBar

rotoprivalurotoprivalu Membre
07:42 modifié dans API AppKit #1
Bonjour à  tous,
Je précise, je suis complètement newbie en Objective C, mais bon, si on ne commence jamais ...
Alors voilà , je fait de la télémaintenance avec Remote Desktop et beaucoup de mes clients n'ont pas d'IP fixe. Il est parfois compliqué de leur demander de se connecter sur internet pour récupérer leur adresse IP (si si, il y en a qui n'y arrive pas !!!). J'ai donc décidé de me lancer dans la programmation d'une petite app qui afficherait en permanence l'IP dans la barre de menu. J'ai réussi en récupérant 2 bouts de code à  droite à  gauche à  sortir quelque chose qui fonctionne, le seul problème qu'il me reste, c'est que je n'arrive pas à  trouver le moyen de mettre à  jour l'IP régulièrement.
Voila comment je fait :
Je récupère l'IP dans un fichier txt via une commande system dans le main

{	//interrogation du serveur et récupération de l&#039;adresse IP dans un fichier temporaire<br />	system(&quot;curl le site.php &gt; /tmp/ip.txt&quot;);<br />&nbsp; &nbsp; return NSApplicationMain(argc,&nbsp; (const char **) argv);<br />}<br />


Ensuite je récupère ce contenu dans un NSString et je l'affiche dans ma barre
#import &quot;StatusBarAppAppDelegate.h&quot;<br /><br />@implementation StatusBarAppAppDelegate<br /><br /><br />- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {<br /><br />}<br /><br />-(void)awakeFromNib{<br />	//création du chemin d&#039;accès au fichier ip.txt créé dans main.m<br />	NSURL * cheminURL = [NSURL fileURLWithPath:@&quot;/tmp/ip.txt&quot;];<br />	<br />	//Création d&#039;un NSString &quot;contenu&quot; avec le contenu du fichier ip.txt<br />	NSString * contenu = [NSString stringWithContentsOfURL:cheminURL<br />												&nbsp; encoding:NSUTF8StringEncoding<br />													 error:NULL];<br />	// On passe NULL en paramètre pour ne pas se préoccuper des erreurs<br />	<br />	NSString * titre = @&quot;IP : &quot;;<br />	NSString * chaineComplete = [titre stringByAppendingString:contenu];<br />	<br />	<br />	//Création et affichage du system status bar<br />&nbsp; &nbsp; statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];<br />&nbsp; &nbsp; [statusItem setMenu:statusMenu];<br />	[statusItem setTitle:chaineComplete];<br />	<br />&nbsp; &nbsp; [statusItem setHighlightMode:YES];<br /><br />}<br />	<br /><br /><br /><br />- (IBAction)quit:(id)sender<br />{<br />	[NSApp terminate: self];<br />}<br />- (IBAction)maj:(id)sender<br />{<br />Comment faire içi ???<br />}<br />@end<br />


Comme on peut le voir, j'ai deux item dans mon menu


IBAction quit qui fonctionne bien (facile !!!)

et IBAction maj, là  je sèche, le but c'est de mettre à  jour le fichier ip.txt avec curl (ça fonctionne) et ensuite de mettre à  jour dans mon menu.
Pour tester j'ai essayer de remettre le code de awakeFromNib dans (IBAction)maj, mais comme je me l'attendais cela m'affiche un menu supplémentaire a coté du premier !!!!! Zut c'est pas ce que je veux et en plus, si je remplis la barre de menu avec mes adresses IP, je pense que mon utilisateur ne va pas être content (et Steve non plus).

Merci à  ceux qui prendront le temps de me lire et de me répondre si ils ont des idées ...

PS : j'espère que j'ai mis ce message dans le bon POST.

Réponses

  • rotoprivalurotoprivalu Membre
    07:42 modifié #2
    Alors, personne ne peut m'aider
    Je suis triste  :(
  • AdauAdau Membre
    07:42 modifié #3
    Je ne suis pas convaincu la structure du programme.

    Je créerais un méthode "update:" qui s'occupe d'aller chercher l'IP et de l'afficher.
    Le bouton "mise à  jour" pointe sur "update:", et "awakeFromNib:" qui appelerai la méthode "update:"

    update: appelerai un NSURLConnection (et ce qui va avec) et NSStatusBar.
Connectez-vous ou Inscrivez-vous pour répondre.