always on top et formatage de TextField
Carmélide
Membre
Bon, c'est la série des questions aujourd'hui...
Je voulais savoir s'il était possible de rendre son application "always on top". Je n'ai pas trouvé de telle option dans interface builder.
Deuxieme question : j'affiche une string dans un NSTextField et je voulais savoir s'il était possible de multiplier par 2 la taille de la police et de lui ajouter un attribut bold ?
sachant qu'il est impossible de le resizer en hauteur
merci.
Je voulais savoir s'il était possible de rendre son application "always on top". Je n'ai pas trouvé de telle option dans interface builder.
Deuxieme question : j'affiche une string dans un NSTextField et je voulais savoir s'il était possible de multiplier par 2 la taille de la police et de lui ajouter un attribut bold ?
sachant qu'il est impossible de le resizer en hauteur
merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce serait étonnant qu'une application puisse prendre un tel pouvoir !
Elle peut masquer les autres (menu hide et méthode dans NSApplication)
Elle peut en lancer d'autres (NSWorkspace)
..
Au moins, cela peut se faire par le code (méthode de NSControl dont hérite NSTextField) .
IB propose des textField que l'on peut redimensionner : Wrapping Text Field
L'application, non.
Mais pour ses fenêtres, c'est oui.
En modifiant le "niveau" des fenêtres (méthode setLevel: de NSWindow), tu peux faire en sorte que les fenêtres restent toujours au dessus des autres.
Bien sûr à manier avec précaution, sous peine de voir ton appli finir à la poubelle par tes futurs utilisateurs.
Ca ne peut être utile que dans le cas d'application "helper" qui fournit une palette utilisable par les autres applis.
pour le "always on top":
ok, mon appli se resume au lancement d'une NSWindow donc ca m'arrange.
Et c'est une demande express du "client"
le truc c'est que je sais pas comment récupérer l'identifiant de ma fenetre... dois-je créer un nouvel outlet ?
IBOutlet NSWindow * window;
-(void) applicationWillFinishLaunching:(NSNotification*) notif {
[window setLevel:NSFloatingWindowLevel];
}
Ou plus simplement dans le awakeFromNib du contrôleur de la fenêtre (qui lui, connait l'outlet de la NSWindow).
Hum, j'ai écrit NSWindowController ?
Quand je parle de contrôleur (note que je ne l'ai pas catégorisé), je parle bien de l'unique instance d'une classe généralement dérivant de NSObject, qui est instancié dans le mainMenu.nib, et qui dans la majeure partie des cas sert :
- de delegate à NSApp (via une ch'tite connexion avec File's owner),
- de contrôleur pour les menus,
- et enfin de contrôleur pour la ou les quelques fenêtres contenues dans ce nib.
Et c'est comme ça que fait Apple dans la plupart de ses tutoriaux (surtout quand l'appli est mono-fenêtrée), et c'est comme ça qu'Apple nomme cet objet (disons que c'est plutôt controller).
On est d'accord, j'ai mis un peu de provoc dans le NSWindowController pour voir si tu ne dormais pas ...  ::)
Plus généralement, et pour être dans la pire des mauvaises fois ::) , j'avoue que je mets souvent à la place de ce Controller général un NSViewController. C'est assez pratique sachant qu'il peut se placer dans la chaà®ne des Responder, et pour une petit appli... Alors pourquoi pas un NSWindowController ?
j'ai ajouté ce que Philippe a dit dans le spController.h:
puis, j'ai implementé applicationWillFinishLaunching dans le spController.m :
et j'ai fait un drag and drop pour lier ma fenetre a l'outlet "window" du controller vers ma fenetre dans interface builder. Ca compile ca se lance mais je n'ai pas d'effet "always on top".
mais ca reste toujours pas "on top"
Remplace -(void) applicationWillFinishLaunching:(NSNotification*) notif par - (void)awakeFromNib.
[EDIT] Hypothèse : Tu as du connecter File's Owner , et non Application
exact !
j'avais pris la barre de titre de la fenetre pour la connecter au controller...
En prenant l'application ca marche beaucoup mieux !!
merci a tous ! :adios!: :adios!: :adios!: