IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Passage d'un argument, depuis un menu
Options
Pixel44
posté 5 Nov 2016, 21:59
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 3 054
Inscrit : 17 Jul 2004
Lieu : Nantes
Membre no 21 109



Bonsoir,

Je suis arrivé à la fin de ce petit programme (grâce à vous) mais j'aimerais alléger le tout :
J'ai crée un menu "extras" :

Code
NSStatusItem *statusItem;
NSMenu *theMenu;

NSStatusBar *statusBar = [NSStatusBar systemStatusBar];
theMenu = [[NSMenu alloc] initWithTitle:@""];
theMenu.autoenablesItems=NO;
[theMenu addItemWithTitle:@"TEST" action:@selector(action_test:) keyEquivalent:@""];
statusItem = [statusBar statusItemWithLength:NSVariableStatusItemLength];
statusItem.image=[NSImage imageNamed:@image.png"];
statusItem.highlightMode=YES;
statusItem.menu=theMenu;

et si on choisit dans le menu : TEST

-(void)action_test:(id)sender
{
    NSString *[email protected]"TEST";
    NSString *nom = NSUserName();
    NSError *error;
    NSString *volume;
    [[NSURL fileURLWithPath:@"/System"] getResourceValue:&volume
                                                  forKey:NSURLVolumeNameKey
                                                   error:&error];
    
    NSString *newString = [NSString stringWithFormat:@"/Volumes/%@/users/%@/%@/", volume,nom,fichier];
    [[NSWorkspace sharedWorkspace] openFile:newString];
    
}


J'aimerais créer plusieurs menus mais ne pas répéter la fonction "action_test" autant de fois que de menus en changeant juste la variable "fichier". Je pensais passer en argument le titre du menu (TEST) à la fonction "action_test"et récupérer ce titre dans la variable "fichier" mais j'ai du mal à comprendre le mécanisme du SENDER.

Merci pour les conseils.


--------------------
Go to the top of the page
 
+Quote Post
schlum
posté 6 Nov 2016, 00:12
Message #2


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 257
Inscrit : 25 Oct 2002
Lieu : Sceaux (92)
Membre no 4 319



En fait, si c’était pour ça, tu n’as pas besoin de récupérer le nom du volume ; le root volume est accessible directement sur /

Code
[NSString stringWithFormat:@"/Users/%@/%@",nom,fichier];


Pour aller plus loin, l’user en cours peut être accédé sur ~ :

Code
NSString *newString = [[NSString stringWithFormat:@"~/%@", fichier] stringByExpandingTildeInPath];


D’autant que ça marchera ainsi aussi pour ceux qui comme moi ont mis leur dossier user ailleurs (sur un autre disque par exemple).

Sinon pour la question d’origine, le sender c’est juste le NSMenuItem, donc on peut l’utiliser pour récupérer le titre ou le tag du menuItem

Code
NSString *fichier = [sender title];


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Pixel44
posté 6 Nov 2016, 05:23
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 3 054
Inscrit : 17 Jul 2004
Lieu : Nantes
Membre no 21 109



Merci pour l'aide apportée


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 18th August 2019 - 06:12