Menu contextuel modifiable ?

TefTef Membre
11:20 modifié dans API AppKit #1
Salut à  tous.

Je suis débutant en Cocoa (mais vraiment débutant !!) mais j'ai quelques notions en développement (habitué au PHP par exemple).
Donc comme à  chaque language que je veux apprendre, je me fixe des objectifs de développement. Je me suis déjà  fait un convertisseur euro pour apprendre ^^. Un autre de mes objectifs est de créer une petit application qui soit :
- Modifie le menu contextuel du clique droit pour y ajouter mes actions
- Affiche mon menu contextuel sur une autre combinaison (genre cmd+clique droit).

Est-ce que ces 2 options sont possible ?

Merci par avance ! :)

A+
Stef
http://www.tef-site.fr

Réponses

  • mpergandmpergand Membre
    11:20 modifié #2
    salut,
    Modifie le menu contextuel du clique droit pour y ajouter mes actions

    Regarde les méthodes suivantes de NSMenu:
    – insertItem:atIndex: 
    – insertItemWithTitle:action:keyEquivalent:atIndex: 
    – addItem: 
    – addItemWithTitle:action:keyEquivalent: 
    – removeItem: 
    – removeItemAtIndex: 

    Affiche mon menu contextuel sur une autre combinaison (genre cmd+clique droit).

    Il faut sous classer la vue (NSButton, NSView, etc) et dans mouseDown faire:
    <br />-(void) mouseDown:(NSEvent*) event<br />{<br />	if([event modifierFlags]&amp;NSCommandKeyMask)<br />		{<br />		[NSMenu popUpContextMenu:[self menu] withEvent:event forView:self];<br />		printf(&quot;command&#092;n&quot;);<br />		}<br /><br />	[super mouseDown:event];<br />}<br /><br />
    


    Mais à  priori, ce n'est pas une bonne idée de modifier le comportement standard d'une appli ...
  • TefTef Membre
    11:20 modifié #3
    Salut


    Merci pour ta réponse !
    dans 1299324202:

    Mais à  priori, ce n'est pas une bonne idée de modifier le comportement standard d'une appli ...

    Que veux-tu dire par là  ? Qu'il n'est pas conseillé de modifier le clique menu contextuel existant ou dans créer un autre en plus ?


    Merci en tout cas pour tous tes renseignements :)
  • mpergandmpergand Membre
    mars 2011 modifié #4
    Pour afficher un menu contextuel en fonction d'une touche (ALT, SHIFT, ect), j'utiliserais cette méthode:
    - (NSMenu *)menuForEvent:(NSEvent *)event<br />{<br />	NSMenu* menu=[self menu];<br />	<br />	if([event modifierFlags]&amp;NSAlternateKeyMask)<br />		{<br />		// modifier le menu ici pour ALT<br />		<br />		}<br />	else<br />		{<br />		// menu standard<br />		}<br />		<br />	return menu;<br />}
    
  • TefTef Membre
    11:20 modifié #5
    Merci je vais tester tout ça ;)


    Merci pour ton aide :)

  • HerveHerve Membre
    11:20 modifié #6
    J'ai réussi dans un projet en cours à  permettre l'ajout d'items dans un menu. Différentes possibilités, soit le menu en question est un IBOutlet, soit on passe par [NSApp mainMenu]. (voir doc) En fait, il faut comprendre le rôle respectif de NSMenu (qui "porte" les items) et NSMenuItem(qui déclenche l'action).

    un exemple ici :
    http://www.gnustep.it/nicola/Tutorials/FirstGUIApplication/node12.html

    un autre là :
    http://www.hopelessgeek.com/2006/11/22/how-to-add-menus-to-the-menubar-in-cocoa

    plus un dans la doc en cherchant à  NSMenu.
  • TefTef Membre
    11:20 modifié #7
    Salut,


    Super merci pour l'info !! :)
Connectez-vous ou Inscrivez-vous pour répondre.