Barre d'outils dans une application gérant les documents

TchouboudouTchouboudou Membre
07:49 modifié dans API AppKit #1
Bonjour tout le mnode ::)

J'ai un petit problème plutôt chiant : je n'arrive pas à  afficher ma barre d'outils dans ma fenêtre principal.

Voici le code de m catégorie :

#import &quot;ToolbarDelegateCategory.h&quot;<br /><br />@implementation MyDocument (ToolbarDelegateCategory)<br /><br />- (void)setupToolbar<br />{<br />	NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@&quot;mainToolbar&quot;];<br />	[toolbar setDelegate:self];<br />	[toolbar setAllowsUserCustomization:YES];<br />	[toolbar setAutosavesConfiguration:YES];<br />	[Window setToolbar:[toolbar autorelease]];<br />}<br /><br />- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar<br />	itemForItemIdentifier:(NSString *)itemIdentfier<br />	willBeInsertedIntoToolbar:(BOOL)flag<br />{<br />	NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentfier];<br />	<br />	return [item autorelease];<br />}<br />- (NSArray *)toolbarAllowedItemIdentfiers:(NSToolbar *)toolbar<br />{<br />	return [NSArray arrayWithObjects:NSToolbarSeparatorItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, nil];<br />}<br />- (NSArray *)toolbarDefaultItemIdentfiers:(NSToolbar *)toolbar<br />{<br />	return [NSArray arrayWithObjects:NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, nil]; <br />}<br /><br />@end<br />


Et j'utilise la méthode -setupToolbar dans AwakeFromNib de MyDocument.m...

Merci d'avance,
Tchouboudou

Réponses

  • aranaudaranaud Membre
    07:49 modifié #2
    Utilise plutôt ceci.
    Si tu utilises les classes NSWindowController

    <br />- (IBAction)showWindow:(id)sender<br />{<br />&nbsp; &nbsp; [[self window]&nbsp; makeKeyAndOrderFront:nil];&nbsp; &nbsp; &nbsp; // affiche la fenêtre<br />&nbsp; &nbsp; [self setupToolbar:[self window]];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // ajourt de la barre<br />}<br />
    


    Tu veux afficher la barre alors que ta fenêtre n'est pas encore charger en mémoire.
  • TchouboudouTchouboudou Membre
    07:49 modifié #3
    Je n'utilise pas de classe de NSWindowController, j'utilise MyDocument... Et je veux que la barre d'outils s'affiche dans la fenêtre principal...
  • aranaudaranaud Membre
    07:49 modifié #4
    Dans le fichier .h

    @interface MyDocument : "ici, c'est quoi le mot" {

    exemple : NSObject, NSWindowController, NSDocument

    Si c'est NSObject, essaie ceci

    <br />- (void)applicationDidFinishLaunching:(NSNotification *)aNotification<br />{<br />&nbsp; &nbsp;  [self setupToolbar];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  // ajourt de la barre<br />}<br />
    
  • TchouboudouTchouboudou Membre
    07:49 modifié #5
    NSDocument...
  • aranaudaranaud Membre
    07:49 modifié #6
    Je pense que ceci devrais faire l'affaire dans ce cas.

    <br />- (void)windowControllerDidLoadNib:(NSWindowController *) aController <br />{<br />&nbsp; [self setupToolbar];<br />}<br />
    


    Cette méthode est appelé à  la fin du chargement de la fenêtre.
  • TchouboudouTchouboudou Membre
    07:49 modifié #7
    ça marche toujours pas... Il doit y avoir un problème dans le code donné plus haut...
  • Eddy58Eddy58 Membre
    07:49 modifié #8
    Ton outlet "Window" est-il correct ? (Connection dans IB, minuscule ou majuscule de la première lettre)
  • aranaudaranaud Membre
    07:49 modifié #9
    dans 1142094839:

    ça marche toujours pas? Il doit y avoir un problème dans le code donné plus haut?


    Tu peux toujours rajouter cette ligne dans - (void)setupToolbar.
    [toolbar setDisplayMode: NSToolbarDisplayModeIconOnly];
    
  • TchouboudouTchouboudou Membre
    07:49 modifié #10
    Je crois avoir trouvé le problème.

    Dans une application de document, lorsque je connecte un outlet à  la fenêtre, et que dans -awakeFromNib je change la couleur de la fenêtre, cela ne marche pas.
    Ensuite, j'ai fait la même chose pour une application Cocoa normale : ça marche.

    Donc, je crois que mon problème vient de la connexion... Il doit y avoir une connexion différente à  faire pour les applications de documents et les applications normales.
  • cargocargo Membre
    07:49 modifié #11
    Dans les exemples Xcode tu as un SimpleToolbar qui marche. Avec ça + la doc Apple sur les toolbars tu vas piger comment ça fonctionne.
    Personnellement j'ai remarqué que par défaut le NSPersistentDocument (dans mon cas) a déjà  un outlet window, mais apparemment il faut en créer un autre spécifique pour la toolbar.
Connectez-vous ou Inscrivez-vous pour répondre.