Un popup font tout bête.
muqaddar
Administrateur
Salut,
Je voudrais créer un popup avec les fontes du système dans mon interface.
Apparemment, c'est impossible via IB.
Quelle classe dois-je appeller si je code ?
Ce popup marchera par bindings.
:why?:
Je voudrais créer un popup avec les fontes du système dans mon interface.
Apparemment, c'est impossible via IB.
Quelle classe dois-je appeller si je code ?
Ce popup marchera par bindings.
:why?:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
+ (void)popUpContextMenu:(NSMenu *)menu withEvent:(NSEvent *)event forView:(NSView *)view withFont:(NSFont *)font (c'est de NSMenu)
Maintenant j'imagine qu'en sous classant NSPopUpButton tu dois savoir quand le menu est demander c'est à ce moment que tu lui place le tiens.
Mais c'est un début, qui dit mieux ?
Je vais voir ce que je peux faire...
Mais effectivement, qui dit mieux ?
.
yop,
euh, chez moi, ça ne fait rien...
[fontPopup setMenu:NSFontManager sharedFontManager] fontMenu:YES;
fontPopup étant un outlet NSPopUpButton...
EDIT : ça marche, mais je récupère aussi tout ce qui concerne la police... et je ne vais que les noms des polices, pas le reste...
La réponse de bru permet de trouver :
[popupmenu addItemsWithTitles:NSFontManager sharedFontManager] availableFontFamilies;
Pas très avenant, autant faire comme bru a proposéÂ
Ali> toi aussi tu as bien marché
Mais si travailles avec les FontFamilies, fais attention aux variantes: si tu utilises la méthode availableMembersOfFontFamily: pour récupérer la police "normale" parmi les différentes variantes, l'élément à la position 0 ne correspond pas toujours à la variante "normale". Par exemple avec Gill Sans, la police à la position 0 correspond à la variante "Light".
L'union fait la force.
Me reste le soucis relevé par Renaud...
En fait, je récupère ma police via son indexID ds le popup maintenant, faut mettre tout ça dans un dico ?
Sinon, me pose la question de mettre tout le menu font...
En fait, c'est juste pour donner des paramètres sur un texte dans une vue.
Qu'en pensez-vous ? Il est plus facile de récupérer toutes ces caractéritiques ?
Oui, pourquoi pas. Mais comment l'afficher et comment reccueillir le dico de données de la police supermic ?
Bein, c'est moi qui vais avoir l'air bête.
Je suppose que toutes les infos de la police (taille, police, style...) qui viennent du font panel arrivent dans un NSDictionary non ?
Je me suis donc décidé à implémenter un fontPanel. ;-)
Pour ma part, ces attributs de texte seront "attribués" à un texte qui est dessiné dans une vue (drawAtPoint withAttributes).
Maintenant, je ne saisis pas bien comment récupérer la font. J'ai une de vos discussions (bru, supermic) où il est écrit que le changement de font est envoyé au first responder... mais après, comment le récupérer ?
Oui, j'avais bien saisi en fait.
mais changeFont n'a pas l'air appelé... le log ne m'affiche rien quand je change les polices ds le nsfontpanel...
Il y a longtemps, j'avais résolu ça en implémentant changeFont: dans une catégorie de NSResponder. Dans cette implémentation, je ne faisais que renvoyer une NSNotification personnalisée informant d'un changement de sélection dans le fontPanel.
Ainsi, quelque soit la view qui été first responder, ça me permettait de récupérer la sélection faite dans le fontPanel, en ajoutant un observateur sur la NSNotification personnalisée.
.
mais je me prends un warning...
Te méthode a l'air astucieuse sinon... :-)
Maintenant, ça marche. :-)
Je continue.
Je dois écrire un bloc de texte (un paragraphe quoi) dans une vue (sans fields...).
Y a t-il un moyen de controller un drawAtPoint sur plusieurs lignes ?
Ou autre ?
Ben...
Remplace ton drawAtPoint... par un drawInRect... !
.
ça gère les retours à la ligne tout seul ?
En effet, c'est parfait... merci Bru. :-)
Je n'ai pas eu de problème pour récupérer le nom et la taille de ma NSFont avec pointSize et fontName, mais je ne trouve pas où se cachent les styles dans la doc. J'ai affiché mon objet NSFont sans succès, ça doit être dans un sous-objet...
Que cherches-tu à faire extactement ?
Savoir si ta fonte est en gras, italique, etc ?
Dans ce cas, tu dois utiliser la méthode traitsOfFont: de NSFontManager, en passant ta fonte en paramètre. Cette méthode retourne un int dont chaque bit correpond à un style.
.
C'es le fontManager qui gère les NSFont.
Tu n'as jamais à le faire par toi-même.
Une fois ta fonte récupéré, un
te permet de savoir ce que tu veux sur ta fonte !
.
Edit : c'est pâ bô de supprimer les messages quand on y répond...