problème avec une fenêtre de type sheet

JijoJijo Membre
08:17 modifié dans API AppKit #1
Bonjour je voudrai savoir comment faire pour qu'au chargement de la fenêtre principale il y a la fenêtre et la fenêtre sheet. (comme sur la photo 1)

- (void)awakeFromNib
{

[NSApp beginSheet:sheetWindow
modalForWindow:[mainWindow]
modalDelegate:nil
didEndSelector:nil
        contextInfo:nil];
   
[NSApp runModalForWindow:sheetWindow ];
[NSApp endSheet:sheetWindow ];
[sheetWindow  orderOut:self];

}


En faisant ceci je n'ai que la fenêtre sheet au chargmement.



Sinon aussi j'ai fait une fenêtre sheet d'upload et je n'arrive pas a afficher des messages différents
a chaque boucle.

int count = [mExportMgr imageCount];
int i;
for(i=0; i<count; i++)
{
NSString * path =[mExportMgr sourcePathAtIndex:i];
NSString * filename =[mExportMgr imageFileNameAtIndex:i];
NSData *imageData = [NSData dataWithContentsOfFile:path];
NSImage *image = [NSImage alloc] initWithData:imageData] autorelease];<br /> <br />[o_image setImage:image];<br /> <br />[label setStringValue:[NSString stringWithFormat:@&quot;Image %d of %d&nbsp; upload binary&nbsp; %@&quot;,i + 1, count,filename;
}


(comme l'image2)


Merci


Réponses

  • JijoJijo Membre
    08:17 modifié #2
    Voici l'image 1 dont je parle comme exemple.
  • NoNo Membre
    08:17 modifié #3
    dans 1230283899:

    Bonjour je voudrai savoir comment faire pour qu'au chargement de la fenêtre principale il y a la fenêtre et la fenêtre sheet. (comme sur la photo 1)


    Ta fenêtre principale doit être affichée avant d'y attacher la sheet.
    Ne connaissant ton projet, je suppose :
    - soit ta fenêtre principale n'est pas "visible at launch" dans IB,
    - le cochage "deferred" dans IB est actif.

    Donc, soit tu ajoutes dans awakeFromNib un orderFront: pour ta fenêtre principale avant d'afficher la sheet, soit tu cohes dans IB "visible At launch" et tu décoches "deferred".
  • NoNo Membre
    08:17 modifié #4
    dans 1230283899:

    Sinon aussi j'ai fait une fenêtre sheet d'upload et je n'arrive pas a afficher des messages différents
    a chaque boucle.

    Sous OSX, l'affichage se fait à  la fin de chaque boucle d'événement.
    A la fin de cette boucle, le système recherche toutes les NSViews qui ont été marquées par setNeedsDisplay: et les réaffiche en conséquence.

    Ta boucle "for" modifie le label x fois, mais tu ne pourras pas voir ces modifications tant que ta boucle tournera (et donc tant que la boucle d'événement ne sera pas terminée). De plus, à  la fin, tu ne verras que le dernier "label" et non les intermédiaires.

    Pour résoudre ça rapidement (mais salement), ajoute un [label display]; après la modification du label par setStringValue:. Cela force l'affichage du label hors boucle d'événement.

    Mais c'est crade dans la mesure où ta boucle "for" bloque la boucle d'événement de ton appli, et donc fige ton interface : tu ne peux plus rien faire tant que le for n'est pas terminé.
    Je te conseille de revoir ça (le transfert des images pouvant se faire dans un thread à  part).
  • JijoJijo Membre
    08:17 modifié #5
    Ton code pour le chargement de la fenêtre sheet et la fenêtre principale marche. Mais pour mon cas du plugin iPhoto cela ne marche pas correctement.

  • JijoJijo Membre
    08:17 modifié #6
    Sinon est ce que je peut faire une action automatique après le chargement ?

    La pour le coup ne ferait pas bugger le fenêtre des plugins iPhoto.

  • JijoJijo Membre
    08:17 modifié #7
    Juste pour dire que j'ai trouvé une alternative à  mon problème, donc pas la peine de se cassé la tête.


    Sinon NO comme tu m'as parlé de thread je voulais savoir si je pouvais faire un thread pour mes requêtes xml-rpc afin d'accélerer mon upload.


    Merci
Connectez-vous ou Inscrivez-vous pour répondre.