NSMatrix: Allow Empty Selection

ClicCoolClicCool Membre
21:46 modifié dans API AppKit #1
Bonjour,

Une matrice de radio bouton permet sous IB de cocher "Allow Empty Selection" c'est bien.
Mais comment fait l'utilisateur pour décocher le bouton sélectionné afin qu'effectivement la sélection soit vide ?

Mon code prend facilement en charge une sélection vide, il peut la provoquer et alors aucun bouton n'est coché mais je ne parviens pas à  trouver comment l'utilisateur lui peut provoquer l'état "aucun choix" ?

C'est surement une question stupide mais si vous pouviez m'éclairer  ???

Réponses

  • 21:46 modifié #2
    En rajoutant un bouton "Aucun" ;) Ce cas a sans doute du être prévu pour des cas spécifiques de matrices n'utilisant pas des radiobutton (ça ne marche pas non plus avec une matrice de checkbox, mais ce n'est pas étonnant). Puisque par définition, il faut toujours un élément sélectionné dans un groupes de radio buttons (sinon, on met du check box).
  • ClicCoolClicCool Membre
    21:46 modifié #3
    dans 1111833359:

    En rajoutant un bouton "Aucun" ;)


    Ah ah ah !
    mais y'a pas de place pour un autre bouton sur ma plaque de cuisson ;) (une matrice de 4 boutons) Je voulais essayer d'éviter le recours à  un bouton de plus justement.

    Enfin merci Renaud, au moins je commence à  penser que je cale pas sur un pb si stupide après tout ;)
  • cbrandtcbrandt Membre
    21:46 modifié #4
    tu peux aussi surcharger la matrice et gérer toi-même la sélection / déselection des boutons...
  • ClicCoolClicCool Membre
    21:46 modifié #5
    dans 1111958256:

    tu peux aussi surcharger la matrice et gérer toi-même la sélection / déselection des boutons...


    En effet, je garde cette option en réserve si ça s'avère nécessaire :)

    Je rechigne au max. avant de surcharger une classe
    La première règle de mes projets et de trouver moyen de moyenner sans tout court-circuité avant d'être sur qu'il faut en passer par là .
    Mais s'il le faut et que ça en vaut la chandelle, je suivrai surement tes conseils ;)
  • ChachaChacha Membre
    21:46 modifié #6
    Hey, ClicCool,
    j'étais en train de me pencher sur ton problème, en utilisant différents types de NSButtonCell, quand j'ai trouvé par hasard une solution beaucoup plus simple pour désélectionner:
    Pomme-click
    Et ben oui, ça marche (avec la plupart des NSButtonCell, pour la plupart des "modes")
    Etonnant, non ?
    +
    Chacha

    PS : n'empêche qu'apparemment, c'est pas connu, et comme c'est dur à  documenter, bof bof pour une interface.
  • ClicCoolClicCool Membre
    21:46 modifié #7
    :-\\

    ça marche pas chez moi ???

    ça tient peut-être à  ce que ma matrice de checkBoxes se trouve dans une ToolBarr ?
  • amnesicamnesic Membre
    21:46 modifié #8
    dans 1112045933:

    ça marche pas chez moi ???

    ça tient peut-être à  ce que ma matrice de checkBoxes se trouve dans une ToolBarr ?


    Ici non plus, le Pomme-click click ne fonctionne que si la NSMatrix est en mode list (NSListModeMatrix).
  • BruBru Membre
    21:46 modifié #9
    De toute façon, vouloir utiliser un groupe de check box en donnant la possibilité de ne rien cocher, c'est comme faire de la pétanque avec des cubes.

    .

  • ClicCoolClicCool Membre
    21:46 modifié #10
    dans 1112079533:

    De toute façon, vouloir utiliser un groupe de check box en donnant la possibilité de ne rien cocher, c'est comme faire de la pétanque avec des cubes.


    Ah bon ? on peut aussi faire de la pétanque avec des cubes ?

    En fait ce contrôle est destiné à  une toolBarr et doit permettre de choisir l'auto-positionnement de la fenêtre entre coins sup G et Dt et inf G et Dt ou ... pas d'auto-positionnement.
    Il y a donc en effet 5 choix possibles mutuellement exclusifs, sauf que sur le plan représentation graphique j'aimerais bien en rester à  4 coins (représentés par mes chekBoxes) et donc un groupe de 4 CB gérés en radioBouton + Possibilité de n'en choisir aucun.
    IB proposant "Allow Empty Selection" ça ferait bien mon affaire.

    Dans les prefs d'appli ça pose pas de pb y'a toute la place pour gérer les 5 possibilités mais dans la barre d'outils de la fenêtre c'est moins spacieux.
    Pourtant ce contrôle est bien commode quand ponstuellement la fenêtre nous gène dans son coin (c'est une fenêtre flottante), on a qu'à  cliquer et la fenêtre part immédiatement dans l'autre coin. Et le retour dans le coin favori se fait aussi simplement.

    Mais cBrandt m'a donné l'idée que je cherchais dans ce cas précis:
    - Détecter que l'utilisateur drague la fenêtre et alors immédiatement interrompre l'auto-positionnement donc forcer la matrice à  aucune sélection. La barre de titre faisant alors office de 5ème checkBox et ça reste intuitif comme comportement.

    ... Sauf que pour l'instant j'ai pas encore trouvé la stratégie pour détecter un drag sur la fenêtre ...
  • cbrandtcbrandt Membre
    21:46 modifié #11
    et après avoir reçu un windowDidMove, tu testais la position de la fenêtre ? si elle correspond à  un des coins, c'est un déplacement automatique; sinon c'est l'utilisateur qui l'a mise ailleurs...
  • 21:46 modifié #12
    Tu peux mettre une check box avant la matrice, intitulée "Positionnement automatique de la fenêtre", qui active ou non la matrice.
  • ClicCoolClicCool Membre
    21:46 modifié #13
    dans 1112082370:

    et après avoir reçu un windowDidMove, tu testais la position de la fenêtre ? si elle correspond à  un des coins, c'est un déplacement automatique; sinon c'est l'utilisateur qui l'a mise ailleurs...



    Ahaaa ben voila la solution toute simple qui m'échapait !
    Merci cBrandt  :)

    dans 1112088181:

    Tu peux mettre une check box avant la matrice, intitulée "Positionnement automatique de la fenêtre", qui active ou non la matrice.


    Ben oui c'est le plus standard ça mais dans une toolBarr c'est pas terrible au résultat. D'autant qu'il faut que la cb et la matrice soient indissociables comme 1 seul Item de toolBarre.
Connectez-vous ou Inscrivez-vous pour répondre.