comment en(dis)abled un menu de la barre des menus de l'application

bofybofy Membre
15:04 modifié dans API AppKit #1
Bonjour

Je sais créer ma barre des menus (par programme...) à  partir d'un .plist (merci les amis), plus ou moins bien, mais ça marche.
Je voudrais maintenant qu'un des menus de la barre soit enabled, tandis que l'autre serait disabled (en grisé) (en vue bien sûr d'une bascule où une action sur un item du menu enabled, le rendrait disabled, tandis que l'autre deviendrait enabled)

Mais le setEnabled:NO ne semble pas marcher. Est-ce possible sans usine à  gaz ?

Merci

NB : j'ai essayé une mini appli avec IB et je n'ai pas trouvé ...

Réponses

  • NoNo Membre
    15:04 modifié #2
    dans 1214226695:

    Mais le setEnabled:NO ne semble pas marcher. Est-ce possible sans usine à  gaz ?


    Quand tu créées par prog tes menus NSMenu, il faut absolument faire un setAutoenablesItems:NO dessus.
    Sinon, les items du menu sont en "validation automatique", ce qui empêche de les valider/invalider manuellement par la méthode setEnable:.
  • NoNo Membre
    15:04 modifié #3
    dans 1214226695:

    Je voudrais maintenant qu'un des menus de la barre soit enabled, tandis que l'autre serait disabled (en grisé) (en vue bien sûr d'une bascule où une action sur un item du menu enabled, le rendrait disabled, tandis que l'autre deviendrait enabled)
    Mais le setEnabled:NO ne semble pas marcher. Est-ce possible sans usine à  gaz ?


    J'avais oublié un truc...
    Apple ne permet pas de "griser" un item de menu si il affiche lui même un sous-menu.
    C'est dans les guidelines, et ça permet de dérouler le menu (même si le contenu est lui grisé) afin de le découvrir.
    C'est donc pour ça que le setEnable:NO ne fonctionne pas.
    Tu ne peux griser les items "normaux" (ceux reliés à  une "action").
  • bofybofy Membre
    15:04 modifié #4
    Bon, je devine, mais ce n'est pas encore très clair pour moi.
    Pour confirmer, est-il possible de construire une application, n'importe et minimale, avec dans la barre de menu un menu en grisé (menu help par exemple, sans doute sans submenu) ?
    Un exemple minimal, sans IB bien sûr, m'aiderai à  faire si c'est possible ?
    Ensuite je crois que je serai capable de faire ce que je veux à  coup de programmation en reconstruisant le menu de l'application.
    Je n'en fais pas une affaire de principe, mais je trouve que ce serait plus "joli" si on pouvait le faire (c'est par exemple le cas des versions "démo" sous Windows).
    Sinon, j'abandonnerai et je ferai autrement.

    dans 1214505610:

    dans 1214226695:

    Je voudrais maintenant qu'un des menus de la barre soit enabled, tandis que l'autre serait disabled (en grisé) (en vue bien sûr d'une bascule où une action sur un item du menu enabled, le rendrait disabled, tandis que l'autre deviendrait enabled)
    Mais le setEnabled:NO ne semble pas marcher. Est-ce possible sans usine à  gaz ?


    J'avais oublié un truc...
    Apple ne permet pas de "griser" un item de menu si il affiche lui même un sous-menu.
    C'est dans les guidelines, et ça permet de dérouler le menu (même si le contenu est lui grisé) afin de le découvrir.
    C'est donc pour ça que le setEnable:NO ne fonctionne pas.
    Tu ne peux griser les items "normaux" (ceux reliés à  une "action").
  • AliGatorAliGator Membre, Modérateur
    15:04 modifié #5
    Heu j'ai jamais vu de titre de menu grisé sous OSX. Comme dit précédemment, un titr de menu ou un article de menu qui affiche un menu ou sous-menu ne peut être grisé. C'est valable pour les articles de menu qui ont des submenus, mais c'est aussi valable pour les items de la barre de menu (autrement dit les titres de menu) qui ont forcément un menu en dessous ;)

    Autant sous OS9 je crois avoir déjà  vu des titres de menu grisés, autant sous OSX c'est contre les guidelines et je pense même que c'est bloqué techniquement. Tu dois griser tous les menuitems de ton menu "Help" mais ton titre de menu "Help" lui ne sera jamais grisé.
Connectez-vous ou Inscrivez-vous pour répondre.