[Résolu] Ouvrir un fichier "pages" ou "pdf" à  partir d'une application

Alf1996Alf1996 Membre
novembre 2013 modifié dans API AppKit #1

Bonjour,


 


Voila je m'essaye à  une petite application Mac après n'avoir fait que de l'iOS jusqu'à  présent, et je rame !


 


J'essaye de faire un truc tout bête, mais je coince sur le tout début, alors cela ne s'annonce pas très bien... Il s'agit de choisir un fichier à  l'aide d'une boite de dialogue et en fonction du type de fichier choisi, de l'ouvrir avec la bonne application. Si c'est un fichier "pages", je souhaite l'ouvrir avec l'application Pages, et si c'est un fichier "pdf", je voudrais l'ouvrir avec Adobe Reader.


J'ai déjà  fait ceci :



    
NSURL * fileToOpen=[self chooseFile];
NSLog(@fichier choisi = %@",fileToOpen);
    if ([[fileToOpen pathExtension] isEqualToString:@pages]) {
        [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithFormat:@%@",fileToOpen] withApplication:@Pages];
    }
    if ([[fileToOpen pathExtension] isEqualToString:@pdf]) {
        [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithFormat:@%@",fileToOpen] withApplication:@Adobe Reader];
    }
    if ([[fileToOpen pathExtension] isEqualToString:@txt]) {
        [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithFormat:@%@",fileToOpen] withApplication:@Textedit];
    }

avec la méthode :



 
-(NSURL *) chooseFile {
    
    NSOpenPanel *myChoosePanel=[[NSOpenPanel alloc] init];
    NSArray* fileTypes = [[NSArray alloc] initWithObjects:@pdf,@PDF, @txt,@TXT,@pages,@PAGES, nil];
    [myChoosePanel setAllowsMultipleSelection:NO];
    [myChoosePanel setFloatingPanel:YES];
    [myChoosePanel setCanChooseDirectories:NO];
    [myChoosePanel setCanCreateDirectories:NO];
    [myChoosePanel setCanChooseFiles:YES];
    [myChoosePanel setAllowedFileTypes:fileTypes];
    [myChoosePanel setDelegate:self];
    [myChoosePanel setTitle:@Choisir un fichier];
    [myChoosePanel setPrompt:@Choisir];
    
    if ([myChoosePanel runModal] == NSOKButton) {
        return [myChoosePanel URL];
    }
    
    return nil;
}

J'arrive donc à  sélectionner un fichier, et à  identifier son extension, mais il ne s'ouvre pas... Qu'ai je fait de mal, pourquoi le Mac ne veut pas m'obéir ?   :'(


Merci de votre aide  o:)


Réponses

  • LarmeLarme Membre
    novembre 2013 modifié #2

    J'essaye de me mettre aussi au dév' Mac OS X, c'est pas évident :P


    Sinon, que log [NSString stringWithFormat:@%@, fileChosen] ?

    ça s'rait pas mieux de faire [fileChosen absoluteString] ou [fileChosen path] ?


  • Alf1996Alf1996 Membre
    novembre 2013 modifié #3


    J'essaye de me mettre aussi au dév' Mac OS X, c'est pas évident :P


    Sinon, que log [NSString stringWithFormat:@%@, fileChosen] ?

    ça s'rait pas mieux de faire [fileChosen absoluteString] ou [fileChosen path] ?




    Oui, je pensais que ce serait simple de passer de l'un à  l'autre, mais ce n'est pas vraiment le cas !


     


    Le choix du fichier fonctionne correctement, j'ai ceci en log :


     


     


     


     


    Et après, il passe bien le test du type de fichier. Mais la commande d'ouverture ne doit pas être correcte.



    [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithFormat:@%@",fileToOpen] withApplication:@Pages];

    Et celle-ci non plus...



    [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithFormat:@%@",fileToOpen] withApplication:@Adobe Reader];

    Edit : Impossible de faire apparaitre le log sur ce post ! Il doit y avoir un caractère qu'il n'aime pas, mais quoi qu'il en soit, le fichier retourné est le bon


  • CéroceCéroce Membre, Modérateur
    Je pense comme Larme. Pour transformer la NSURL en path, il faut sans doute utiliser la méthode -[NSURL path].
  • Désolée, je n'avais pas compris ta remarque Larme... Merci à  tous les deux. Effectivement, c'était çà  !


     


    [[NSWorkspace sharedWorkspace] openFile:[fileToOpen path] withApplication:@Pages];

     


    Premier problème résolu ! Merci 


     


    Maintenant, je vais m'attaquer aux autres !!!!  B)


  • tabliertablier Membre
    novembre 2013 modifié #6

    Pour faire ouvrir un fichier par son application par défaut utiliser "openFile:" de la classe NSWorkspace


    NSWorkspace permet également de faire ouvrir un fichier par une application désignée.


     


     


     


      >:D   Grillé par notre extraterrestre !


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