C'est quoi ce panel ? (comme dans Safari->Signets->Ajouter aux signets)

BornToBeCocoaBornToBeCocoa Membre
mai 2005 modifié dans API AppKit #1
Hello,

Savez-vous quel est ce panel ? Celui qui, par exemple, apparaà®t quand on ajoute un signet dans Safari, juste sous le titre de la barre de fenêtre ?

Cela se gère t'il comme un Drawer ? avez-vous un lien vers un tuto ?

Txs

Réponses

  • ObiObi Membre
    10:59 modifié #2
    C'est en fait une fenêtre, appelée Sheet, qui est affichée de cette façon.
    Regarde la doc ici.

    Pour afficher la fenêtre "sheet" dans la fenêtre "window" :
    <br />[NSApp beginSheet: sheet<br />     modalForWindow: window<br />     modalDelegate: self<br />     didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)<br />     contextInfo: nil];<br />
    


    Pour fermer "sheet" (avec un bouton ou à  la fin d'un traitement) :
    [NSApp endSheet: sheet];
    


    Et cette méthode est appelée quand "sheet" se ferme :
    <br />- (void)didEndSheet:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo {<br />     [sheet orderOut:self];<br />     // ton code...<br />}
    
  • BornToBeCocoaBornToBeCocoa Membre
    10:59 modifié #3
    Merci ki ? Merci Obi  :kicking:
  • aranaudaranaud Membre
    10:59 modifié #4
    dans 1115293051:

    Pour afficher la fenêtre "sheet" dans la fenêtre "window" :
    <br />[NSApp beginSheet: sheet<br />     modalForWindow: window<br />     modalDelegate: self<br />     didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)<br />     contextInfo: nil];<br />
    


    Peut-on mettre n'importe quelle méthode dans le selector ?

    Je présume qui faut rajouter ceci pour que sa marche.
    [NSApp runModalSession:session]
    
  • fouffouf Membre
    10:59 modifié #5
    Non, on ne peut pas mettre n'importe quelle méthode. Il faut que cette méthode prenne comme argument 1° une NSWindow 2° un entier 3° un pointeur générique C (void *). Ensuite, tu peux l'appeler comme tu veux. Ainsi les méthodes suivantes marchent :
    - (void)optionsPanel:(NSPanel *)p returnCode:(int)i contextInfo:(void *)info;
    - (void)viveLeVelo:(NSWindow *)w attentionALaChute:(int)i numeroDuSamu:(void *)info;
    - (void)aranaud:(NSWindow *)w aCompris:(int)niveauDeCompréhension ceQuilNaPasCompris:(void *)info;

    Par contre, tu n'as pas besoin de faire [NSApp runModalSession:session]. Mais pour fermer la fenêtre modal, il faut que tu utilises, au choix [NSApp endSheet:sheet] ou [NSApp endSheet:sheet returnCode:code].
  • aranaudaranaud Membre
    10:59 modifié #6
    Ok, merci fouf.
  • aranaudaranaud Membre
    10:59 modifié #7
    Les fenêtres panel ont tell des limitations supplémentaire par rapport aux autres ?
    Je pense à  la mise à  jours d'une barre de progression. C'est pour savoir si cela vient de mon code ou pas, les différents threads nécessaire au fonctionnement sont présents mais la mise à  jours de l'interface ne suit pas.
  • aranaudaranaud Membre
    10:59 modifié #8
    Bon, j'ai réussi à  faire ce que je veux avec les Threads mais j'ai encore un problème. Je suis obligé de clik dans l'application après avoir clik sur un bouton pour faire disparaà®tre le boà®te de dialogue.

    Nota : je fait des actions dans la méthode "sheetDidEnd:returnCode:contextInfo:" avant d'autoriser la fermeture de celle-ci.
Connectez-vous ou Inscrivez-vous pour répondre.