Sheet et MyDocument
muqaddar
Administrateur
Salut la compagnie,
Je souhaiterai ajouter une feuille à mon appli qui ne dispose pas de contrôleur (c'est MyDocument qui joue ce rôle). Seulement, il me faut ajouter un outlet pour MyDocument, pour la feuille. Mon pb est que je dois ajouter cette feuille dans le MainMenu.nib pour la relier aux prefs par exemple. Or dans le mainMenu il m'est impossible d'ajouter l'outlet à MyDocument. Logique.
Y a t-il une solution ?
Plus généralement, c'est compliqué de prendre myDocument comme contrôleur principal (meme si on ajoute des Object et arrayController en plus)...
Je souhaiterai ajouter une feuille à mon appli qui ne dispose pas de contrôleur (c'est MyDocument qui joue ce rôle). Seulement, il me faut ajouter un outlet pour MyDocument, pour la feuille. Mon pb est que je dois ajouter cette feuille dans le MainMenu.nib pour la relier aux prefs par exemple. Or dans le mainMenu il m'est impossible d'ajouter l'outlet à MyDocument. Logique.
Y a t-il une solution ?
Plus généralement, c'est compliqué de prendre myDocument comme contrôleur principal (meme si on ajoute des Object et arrayController en plus)...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si c'est à l'appli, il te faut un contôleur d'appli qui se trouvera dans MainMenu.nib.
Je suppose que la feuille en question est liée à la fenêtre du document. C'est bien ça ?
Donc c'est dans MyDocument.nib que tu la gères.
Pour l'accès aux préférences, revoir le tuto de ClicCool, qui permet de faire des liens entre le panneau des préférences et le document.
Merci Tiff, je l'ai fait y'a pas longtemps pourtant ce tut.
J'étais sur un ancien tut de PO où ils passaient par des outlets et un controleur...
Je vais regarder ça.
En fait, ClicCool la met dans le MainWindow, lui il ne crée pas de sheet donc pas de pb pour préciser de quelle fenêtre sort la feuille ! Mais ce n'est pas mon cas et le problème reste le même. Il faut que la feuille soit dans mydocument mais alors comment la relier au menu préférences qui est dans mainmenu ?
Ce que je ne comprends pas, c'est la différence entre un document avec feuille et un document sans feuille. Pourquoi dans un cas la méthode ClicCool fonctionne et pas dans l'autre ?
J'en ai bcp parlé avec ClicCool. Je vais enregistrer des fichiers "documents" (qui contiennent des contenus d'array), en fait c'ets parce que l'application ne contient aucune donnée elle ! Tout est dans le document.
Il va falloir que je revois le tuto de ClicCool moi aussi !
C'est dans MyDocument.nib que tu dois faire sortir la feuille.
CliCool n'avait pas réussi le tour de force de mettre les préférences dans MainMenu.nib et de les lier à MyDocument.nib ?
N'empêche ça doit être faisable le tour de force.
Oui, et alors ? Pourquoi tu ne fais pas pareil ?
Ah, je recommence alors.
Pour lier une fenêtre au menu "préférences", il faut être dans mainmenu.nib puisqu'il n'y a que là qu'est le menu de l'appli. Or, moi, ma sheet doit être dans MyDocument, puisqu'elle sort de cette fenêtre là ! Alors comment concilier les deux ?
Je suis sûr que les pros se marrent.
D'ajouter au first responder du mainMenu.nid une action ( de même nom bien sur que celle définie dans myDocument)
Puis, toujours dans mainMenu.nib, de relier le menu préférence à la dite action du First Responder
Le lien entre MainMenu.nib et MyDocument.nib s'opère par l'intermédiaire du DefaultController, présent dans les deux fichiers nib.
ClicCool a lié les champs de la fenêtre MyDocument au DefaultController.
Je ne vois pas ce qui empêche de faire la même chose avec la feuille.
Le First Respondeur est présent dans tous les nib et représente l'entrée dans cette chaine (son premier maillon).
Lorsqu'une action d'un utilisateur est envoyée vers le first responder, la chaine est parcourue jusqu'à trouver un maillon capable de répondre à l'appel.
C'est cette structure de répondeur qui permet à un menu d'édition d'avoir une action sur le champ qui a le focus et pas les autres.
En sélectionnant le menu "copier" par exemple, le message est envoyé au first respondeur, puis, s'il ne répond pas, parcoure la chaine des répondeurs: la venêtre active, sa vue, la group-box active puis enfin le champs actif dans la groupe box qui reconnait le message et y répond, ce qui arrète le cheminement du message. Le premier objet dans la chaine hyerarchique d'objets ayant le focus répond et interromps la recherche.
Suis pas sur d'avoir été clair :-\
Je commence à comprendre.
(Du coup je comprends aussi la réponse de Arldon.)
Tu veux que la feuille remplace le panneau des préférences ?
Quel intérêt ?
Mais, pour ce qui est de l'ergonomie globale, je suis d'accord avec Arldon et Tiff.
Il paraà®t plus judicieux de créer un paneau des préférences global à l'appli plutôt qu'attaché à un document.
Mais, dis mois, ta documented based appli. n'aura jamais qu'un seul document à gérer ?
Tes tableaux et tout le toutim c'est pour l'appli elle même et pas pour des documents ?
Alors pourquoi ne mettre tout le basard dans les prefs, ou un fichier de librairie genre application support ?
Tu t'affranchis alors de la structure document based et peux toujours utiliser le fileOwner ou le userDefaut comme contrôleur pour tes bindingsÂ
Faut que je relise les 4 derniers messages tranquillement.
N'empêche, je susi arrivé à mes fins et ça marche ! ClicCool number one !
J'ai ajouté des outlets en plus et basta, ma feuille de prefs sort de ma mydocument window ;-)
Tiff, merci de ta patience.
De toute façon, c'ets pas clair encore cette histoire de document-based application...
C'est par là qu'il fallait commencer ! ;D
En fait, j'ai créé une document-based application car je voulais enregistrer le contenu de 4 arrays dans un fichier avec extension poru mon application. Il est clair que mon appli ne possède qu'une fenêtre, celle de MyDocument, et peut donc ouvrir un seul doc à la fois.
J'aurais pu comme tu dis enregistrer les 4 tableaux dans des fichiers dans la bibliothèques des prefs, c'ets même plus simple...
Pour les prefs gérés par une feuille et non une fenêtre flottante, je crois que c'est plus "cocoa-like" non ? J'ai déjà vu plien d'applis le faire.
Reste que effectivement, ici, je n'ai pas de contrôleur général. C'est MyDocument...
Toutefois, si quelqu'un veut bien me dire (redire) quand vaut-il mieux utiliser une document-bases appli ou pas clairement, je suis preneur. Quelle est la règle d'or ?
Si tu n'as qu'un document, j'vois pas ! :-\
Tiens, j'ai réussi à mettre une image. Je deviens un pro des fora moi ! Bon elle est pas belle, mais elle reflète bien mon état d'esprit présent.
Ton image :
Ouais, va falloir changer ça !
Le concept des applications de type documents-based s'utilise pour des softs genre traitement de texte, d'image, bases de données, gestion banquaire, tableurs, etc....
Effectivement dans ton cas, une appli classique avec un fichier .nib et un controleur auraient suffis. Inutile de se compliquer la vie inutilement...
Ceci dit, personnellement je ne conçois pas d'applis sans avoir au moins un controleur. C'est lui qui centralise tout. J'applique le principe de base MVC et tout va bien.