Barre d'outils et feuille

muqaddarmuqaddar Administrateur
10:53 modifié dans API AppKit #1
En réfléchissant un peu (ça m'arrive), je viens de voir qu'il semble impossible d'associer une barre d'outils de préférences par exemple dans une fenêtre préférences, elle même déjà  présente dans une feuille attachée à  la fenêtre principale. Non ? Il faut passer par une fenêtre "classique" qui n'est pas une feuille.
Même si on ne veut pas personaliser sa barre d'outils c-a-d , avoir le bouton en haut à  droite de la fenêtre ?

Réponses

  • muqaddarmuqaddar Administrateur
    septembre 2004 modifié #2
    Bon, je suis dans ma barre d'outils et ça avance. :-)
    Elle apparaà®t, mais au lancement de l'appli; j'ai droit à  :
    2004-09-22 12:05:00.803 monappli[3764] *** -[NSCFDictionary _toolbarView]: selector not recognized
    2004-09-22 12:17:47.355 monappli[3826] *** -[NSMachPort _toolbarView]: selector not recognized
    Ce bogue me masque entre autre les bulles de la barre de titre.

    D'autre part, j'ai déclaré une fonction ds une catégorie -(void)setToolbar. Cette fonction est appelée depuis le Controller (à  qui on a ajouté la catégorie), elle est déclarée également dans le .h de la catégorie. L'appel est de cette forme : [self setToolbar]; et il appelle donc la méthode déclarée dans le .m de la catégorie :
    - (void)setupToolbar<br />{<br />    NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@&quot;mainToolbar&quot;];<br />    [toolbar autorelease];<br />    [toolbar setDelegate:self];<br />    [toolbar setAllowsUserCustomization:YES];<br />    [toolbar setAutosavesConfiguration:YES];<br />    [mainWindow setToolbar:[toolbar autorelease]];<br />}
    


    Je me paie 2 warnings, comme quoi l'appel trouve pas la déclaration de la méthode et le bug cité au dessus est p-e dû à  ça. non ?
  • muqaddarmuqaddar Administrateur
    10:53 modifié #3
    Yahoooooo...
    ça y est ça marche , joie. Je ne sais pas trop d'où le pb venait... enfin.
    Désolé de vous avoir déranger.
  • muqaddarmuqaddar Administrateur
    10:53 modifié #4
    Pour info, il est possible d'intégrer une barre d'outils à  une sheet, ça marche. Je pense pas qu'Apple le recommande, de plus on perd la ctustomization même si elle est implémentée. Logique on ne va pas faire sortir une sheet d'une autre sheet !
  • mpergandmpergand Membre
    10:53 modifié #5
    Si c'est possible, mais faut faire gaffe  ;D

    Nested Sheets
  • muqaddarmuqaddar Administrateur
    septembre 2004 modifié #6
    oui mais ds cet exemple, y'a pas de barre d'outils ! ;) Je disais juste que la customization sembalit "désactivée" si on met une barre d'outils ds une sheet. Ou alors il faut ajouter des paramètres en plus...  ??? De toute façon, je ne vais pas chercher la complication aujourd'hui.  o:)
  • mpergandmpergand Membre
    10:53 modifié #7
    mais une barre d'outils en sheet, ça sert à  quoi  ??? :D
  • muqaddarmuqaddar Administrateur
    10:53 modifié #8
    non, la question était une sheet préférences qui contient une barre d'outils par exemple... Dans ce cas, on évite la sheet et on crée une fenêtre classique. Encore une fois, c'était possible, mais pas très fun...
  • mpergandmpergand Membre
    10:53 modifié #9
    En sheet ou dans un sheet, comme tu veux :) Déjà  qu'une fenêtre de préférences en sheet c'est zarbi, alors avec une barre d'outils en plus :D
  • TiffTiff Membre
    10:53 modifié #10
    dans 1095855636:

    Désolé de vous avoir déranger.

    T'avais pas l'impression de parler tout seul ?  ;D ;D ;D
    Est-ce qu'on risque de perdre des fèves de cocoa si on se moque de l'administrateur ?  >:D
  • LeChatNoirLeChatNoir Membre, Modérateur
    février 2006 modifié #11
    Salut,
    Je remonte ce vieux post parce que j'ai les mêmes messages.
    Comme toi, je me suis appuyé sur le tuto de Mike Bean (enfin je pense que c'était ton cas vu le code !) et comme toi, j'ai au lancement des erreurs style "selector not recognize" qui apparaissent en boucle....


    Comment t'as résolu le pb ?

    Merci !
  • muqaddarmuqaddar Administrateur
    10:53 modifié #12
    Euh... ça fait longtemps que j'ai plus de soucis avec les toolbars ;-)

    Fais voir ton code !
  • LeChatNoirLeChatNoir Membre, Modérateur
    10:53 modifié #13
    Le voilà ...
    Il est dans un NSWindowController qui est le File's Owner du nib contenant la fenêtre.

    <br />- (void)setupToolbar <br />{ <br />&nbsp; &nbsp; NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@&quot;mainToolbar&quot;]; <br />&nbsp; &nbsp; [toolbar autorelease]; <br />&nbsp; &nbsp; [toolbar setDelegate:self]; <br />&nbsp; &nbsp; [toolbar setAllowsUserCustomization:YES]; <br />&nbsp; &nbsp; [toolbar setAutosavesConfiguration:YES]; <br />&nbsp; &nbsp; [[self window] setToolbar:[toolbar autorelease]]; <br />} <br /><br />- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem<br />{<br />	return YES;<br />}<br /><br />- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar <br />	 itemForItemIdentifier:(NSString *)itemIdentifier <br /> willBeInsertedIntoToolbar:(BOOL)flag <br />{ <br />	NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier]; <br />&nbsp; &nbsp; <br />&nbsp; &nbsp; return [item autorelease]; <br />}<br /><br />- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar <br />{ <br />	return [NSArray arrayWithObjects:NSToolbarSeparatorItemIdentifier, <br />&nbsp; &nbsp; &nbsp; &nbsp; NSToolbarSpaceItemIdentifier, <br />&nbsp; &nbsp; &nbsp; &nbsp; NSToolbarFlexibleSpaceItemIdentifier, <br />&nbsp; &nbsp; &nbsp; &nbsp; NSToolbarCustomizeToolbarItemIdentifier, nil]; 	<br />} <br /><br />- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar <br />{ <br />	return [NSArray arrayWithObjects:NSToolbarFlexibleSpaceItemIdentifier, <br />		NSToolbarCustomizeToolbarItemIdentifier, nil]; <br />} <br />
    
  • muqaddarmuqaddar Administrateur
    10:53 modifié #14
    Tu as pas le code qui appelle les méthodes d'action quand on clique sur une icone ? Les erreurs de selecteur peuvent venir de là ...
  • Eddy58Eddy58 Membre
    février 2006 modifié #15
    Je pense pas que ça vienne de là , mais pourquoi y-a-t-il deux [tt][toolbar autorelease] dans la méthode [/tt]- (void)setupToolbar ? ???
    En plus pas besoin d'autorelease, dans ce cas un release est suffisant :
    [tt]
    - (void)setupToolbar
    {
        NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@mainToolbar];
        [toolbar setDelegate:self];
        [toolbar setAllowsUserCustomization:YES];
        [toolbar setAutosavesConfiguration:YES];
        [[self window] setToolbar:toolbar];
        [toolbar release];
    }
    [/tt]
  • muqaddarmuqaddar Administrateur
    10:53 modifié #16
    Oui, Eddy a raison.
    J'aimerai voir les erreurs de selecteur aussi...
  • LeChatNoirLeChatNoir Membre, Modérateur
    février 2006 modifié #17
    And the winner is ....
    Eddy58 !!
    Ca vient bien de ça !
    Merci à  tous les 2 de vous y être penché !  :adios!:
  • Eddy58Eddy58 Membre
    février 2006 modifié #18
    He ben, il va falloir dire à  Mike Beam (pas Bean ;)) que son tuto est bugué. (Et lui demander éventuellement à  quoi il tournait ce jour de mars 2002  :fouf): :p :p :fouf):)
  • 10:53 modifié #19
    Moi ce que je me demanderais surtout, c'est comment ça se fait que cette erreur "tourne" depuis 2002.
  • Eddy58Eddy58 Membre
    10:53 modifié #20
    Et bien en faites les commentaires sur l'article d'origine font bien état de ce problème, mais ce n'est pas pour autant que dans le tuto en lui-même la correction est effectuée. :o
  • LeChatNoirLeChatNoir Membre, Modérateur
    10:53 modifié #21
    ah ben pis moi, j'avais pas lu les comentaires  ::)
    Et désolé d'avoir écorchjé le nom de Mr Bea(n)m :-)
Connectez-vous ou Inscrivez-vous pour répondre.