NSComboBox complété par l'utilisateur

VeillardVeillard Membre
07:23 modifié dans API AppKit #1
Bonjour,

J'ai plusieurs NSComboBox qui sont susceptibles d'êtres modifiées par l'utilisateur final (ajout ou suppression d'items). Est-il possible de créer un fichier contenant les différents items qui sera appelé automatiquement lors du lancement de l'application ? Si oui, à  quel endroit placer ce fichier en question ?

Merci

Favouille

Réponses

  • ClicCoolClicCool Membre
    07:23 modifié #2
    Tiens!, salut Favouille :D

    Pour ce qui est de gérer la liste des items des combo:

    1°) Tu peux utiliser le modèle datasource pour maintenir un Array de valeur pour chaque comboBox
    2°) Tu peux créer un Array pour chaque comboBox et binder les conboDessus.

    Pour enregistrer les listes d'items tu peux le faire:

    1°) Directement dans le document si les combo doivent pouvoir afficher des valeurs en fonction du document ouvert.

    ou mieux
    2°) Dans les préférences utilisateurs (la combo se souvient des plongées préférées de l'utilisateur courrant ;) )

    Et pour ce faire
    - Soit tu causes direct avec les UserDefaults
    - Soit tu confies chaque Array à  un ArrayController que tu bindes sur contrôleur Shared User Default. Et là  tu t'occupes plus de rien sauf l'ajout et le retrait de valeurs dans la combo-list.

    P.S.1: A part ça tu vas bien ? :)
    P.S.2: pour ce qui est de l'impression de tes tablesView je n'en ai pas encore assez l'expérience pour te répondre :(
  • mpergandmpergand Membre
    07:23 modifié #3
    Salut Favouille !

    Sinon à  part le fichier préférences, il existe un emplacement standard permettant aux applis de stocker des données annexes, c'est ~/library/Application Support, tu te crées un dossier pour ton appli et tu y mets ce que tu veux :D

    Sinon ton appli Labo Photo plante au démarrage, car tu as oublié de passer en deployment built et y a le zero link qui est pas content  ;)
  • VeillardVeillard Membre
    07:23 modifié #4
    Bonjour à  tous les deux, ça fait plaisir de vous revoir  :)

    Après un long silence radio, je reviens sur les ondes... Je profite de quelques jours de vacances pour continuer mon appli qui fait son petit bout de chemin (j'en suis à  la b23  :trinque:) et qui ravit quelques plongeurs  :brule: (j'aime bien cette animation...)
    De plus je dors beaucoup mieux depuis que le petit (3 mois) a fait ses nuits 

    En ce qui concerne mes comboBox, j'affecte actuellement un array pour chaque combo avec des items préalablement sélectionnés qui ne conviennent pas forcément à  tout le monde  :P

    D'après vos solutions, je verrais bien les données stockées dans les préférences utilisateurs mais pourquoi pas utiliser le répertoire "~/library/Application Support" comme le suggère Mpergand ? J'hésite  ???

    Je pense que l'idéal serait de faire un fichier XML visible qui pourrait être modifié éventuellement avec n'importe quel traitement de texte (ce qui suppose que l'utilisateur connaisse ce type de fichier) à  voir...

    Pour l'appli "Labo Photo", c'est réparé  ;D elle ne casse pas 3 pattes à  un canard, c'est un réchauffé de l'autre appli, mais j'en avais besoin sur le moment.

    A+

    Favouille
  • Eddy58Eddy58 Membre
    07:23 modifié #5
    Salut Favouille ! :)

    Pourquoi ne pas faire des préférences, et proposer un NSTableView éditable qui liste les options de chaque NSComboBox ?? Tu enregistres les datas du NSTableview en les gérant avec NSArchiver, et la configuration de tes NSComboBox devient ainsi plus "user-friendly", non ? :)
  • ClicCoolClicCool Membre
    07:23 modifié #6
    Il me semble à  travers ce que tu dis que les users defaults sont plus adaptés dans la mesures où chaque utilisateur peut avoir ses propres habitudes.
    Même si on le peut le faire c'est, je crois, moins dans la philosophie des Application Support.
  • ClicCoolClicCool Membre
    07:23 modifié #7
    dans 1098913738:

    Salut Favouille ! :)

    Pourquoi ne pas faire des préférences, et proposer un NSTableView éditable qui liste les options de chaque NSComboBox ?? Tu enregistres les datas du NSTableview en les gérant avec NSArchiver, et la configuration de tes NSComboBox devient ainsi plus "user-friendly", non ? :)


    De mon coté j'aime assez quand, à  chaque fois qu'on entre une nouvelle valeur dans la combo, l'appli propose d'ajouter cette valeur à  la liste.
    En ajoutant soit un bouton et ou menu "rest combo to default" voire un bouton "supprimer la sélection en cours de la liste" ...

    De cette façon la combo se personnalise au fur et à  mesure de l'usage de l'appli.
    Je trouve ça plus cool que d'avoir à  utiliser une listing même en tableView pour personaliser le menu de la combo.
  • Eddy58Eddy58 Membre
    07:23 modifié #8
    Oui ClicCool, je ne connais pas trop la manipulation des user-defaults, ça a l'air assez efficace en effet, mais un NSTableView ne permettrait pas un meilleur contrôle pour la configuration des ses NSComboBox ?  :-\
    Moi je trouve ça top. :)
  • ClicCoolClicCool Membre
    07:23 modifié #9
    En fait Eddy dans les possibilités que j'ai suggérées à  notre ami Favouille on peut binder le contenu de la combo sur un ArrayController lui même bindé par son "content" sur le UserDefaultController.

    Y'a rien à  coder pour que ça marche hors mis l'ajout-Suppression d'item qui peut se faire tant par les methodes de NSComboBox elle-mêmes que, comme tu le suggères, par une NSTableView elle même également bindée sur l'ArrayController qui gère les items de la combo et à  ce moment là  y'a carrément plus rien à  coder.
    Mais j'ai néanmoins une préférence pour l'accès par les méthodes de comboBox au fur et à  mesure que l'appli détecte de nouvelles valeurs pertinentes à  ajouter à  la liste.
  • Eddy58Eddy58 Membre
    07:23 modifié #10
    Les bindings j'en ai pas encore fait un seul c'est pour ça que je ne te suis peut-être pas ;)...mais je comprend mieux ton point de vue ClicCool.... :)
  • VeillardVeillard Membre
    07:23 modifié #11
    Bonjour à  tous

    Après avoir lu les différents posts et observé différents softs  :P, j'ai remarqué que ce qu'il se faisait le plus, c'est de proposer à  l'utilisateur de valider ou non une nouvelle entrée coome l'a suggéré ClicCool. L'idée d'Eddy58 fait aussi partie de ce que j'ai pu voir, c'est à  dire de gérer les différentes données dans une TableView afin de virer la ou les données mal orthographiées ou obsolètes.
    Il est vrai que l'avantage de la table, c'est que l'on peut voir l'ensemble des items en une seule fois.  ;D
  • VeillardVeillard Membre
    07:23 modifié #12
    Bonjour tout le monde,

    J'avance dans mes ComboBox, j'ai donc décidé de les intégrer aux préfs. utilisateur. Cependant j'ai un problème : je n'arrive plus à  recharger mes valeurs sauvées dans les prefs sous forme d'un array, pourtant j'ai essayé ceci :

    <br />- (void)windowDidLoad<br />{<br />&nbsp; &nbsp; NSUserDefaults *defaults;<br />   <br />  defaults = [NSUserDefaults standardUserDefaults];<br /><br />   [[tableauDesSites setArray:[defaults arrayForKey:@&quot;sites&quot;]] retain];<br />}<br />
    


    Avez-vous une idée ?  ???

    A+
  • VeillardVeillard Membre
    07:23 modifié #13
    Ca marche !

    J'ai essayé ceci :
    tableauDesSites = [[NSMutableArray arrayWithArray:[defaults objectForKey:@&quot;sites&quot;]] retain];<br />
    


    En revanche, comment faire en sorte que la ComboBox détecte automatiquement une nouvelle entrée qui ne fait pas partie de la liste ?

    Merci
Connectez-vous ou Inscrivez-vous pour répondre.