[Résolu]NSOpen ? et image jpeg
clampin
Membre
Bonjour,
Je me suis fait une petite cocoa-application qui possède une fenêtre avec un NSImageView
j'ai donc dans mon comme fichier d'en tête controller.h
Jusque là rien de bien difficile
dans mon controller.m
Je me suis basé sur les codes du livre cocoa par la pratique au chapitre 13
Or à la compilation il me met un warning
et à l'exécution forcément mon menu open ne fonctionne pas vu que j'ai relié mon action au menu open.
Que dois-je faire en plus ?
Je me suis fait une petite cocoa-application qui possède une fenêtre avec un NSImageView
j'ai donc dans mon comme fichier d'en tête controller.h
<br /><br />#import <Cocoa/Cocoa.h><br /><br />@interface controller : NSObject<br />{<br />Â Â IBOutlet id ImageView;<br />}<br />- (IBAction)ouvrirFichier:(id)sender;<br />@end<br />
Jusque là rien de bien difficile
dans mon controller.m
<br /><br />#import "controller.h"<br /><br />@implementation controller<br /><br />-(void)openPanelDidEnd:(NSOpenPanel *)openPanel<br /> returnCode:(int)returnCode<br /> Â Â contextInfo:(void *)x<br />{<br /> NSString *path;<br /> NSImage *image;<br /> <br /> if(returnCode == NSOKButton) {<br /> path = [openPanel filename];<br /> image = [[NSImage alloc] initWithContentsOfFile:path];<br /> [ImageView setImage:image];<br /> [image release];<br /> }<br />}<br /><br />- (IBAction)ouvrirFichier:(id)sender<br />{<br /> NSOpenPanel *panel = [NSOpenPanel openPanel];<br /> <br /> [panel beginSheetForDirectory:nil<br /> file:nil<br /> types:[NSImage imageFileTypes]<br /> modalDelegate:self<br /> Â Â didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:)<br /> Â contextInfo:nil];<br />}<br /><br />@end<br />
Je me suis basé sur les codes du livre cocoa par la pratique au chapitre 13
Or à la compilation il me met un warning
<br />/Users/davidremacle/Developpement/cocoa/PictureView/controller.m:29: warning: 'NSOpenPanel' may not respond to '-beginSheetForDirectory:file:types:modalDelegate:didEndSelector:contextInfo:'<br />/Users/davidremacle/Developpement/cocoa/PictureView/controller.m:29: warning: (Messages without a matching method signature<br />
et à l'exécution forcément mon menu open ne fonctionne pas vu que j'ai relié mon action au menu open.
Que dois-je faire en plus ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Peut-être taper correctement les exemples que tu utilises...
La méthode beginSheetForDirectory:file:types:modalDelegate:didEndSelector:contextInfo: que tu utilises n'existe tout simplement pas (d'où le warning à la compilation).
Il manque le paramètre modalForWindow: que tu dois insérer entre types: et modalDelegate: :
.
en fait ce qui se passe, c'est que j'ai tellement envie de voir mon application tourner que je vais trop vite.... alors ben oui, je fais des gaffes grosse comme des maison... oublier de dire que c'est le NSImageView de la fenêtre qui doit recevoir les images.... c'est effectivement très très con....
maintenant ça tourne bien .... :P
Mais avec mes échec je comprends mieux rassurez vous..... si si .... mais parfois, j'ai l'impression de ne pas avoir les yeux en face des trous....
1) Les TextMacros (qui te permettent en tapant un moc clé puis 'esc' qu'il te remplace le mot clé par du texte, voire tout un bloc de texte, pratique pour tous les snippets de code classiques, comme un while sur un NSEnumerator ou encore le modèle d'une méthode comme "openPanelDidEnd" ou des trucs comme ça
2) L'autocomplétion proposée par Xcode, qui te propose les méthodes disponibles et te les complètent, en te mettant des placeholders aux endroits que tu dois remplir (remplacer par des variables de ton code ou des valeurs)
Avec ces 2 trucs pratiques intégrés à Xcode, et en particuler l'autocomplétion (les Text Macros sont pratiques mais bien plus efficaces si tu les personnalise un peu, alors que l'autocompletion est utilisable directement), Xcode t'aurais directement proposé les méthodes qui existent, et sans fautes de frappe
Justement c'est ce que je ne parvient pas encore a bien maà®triser. (et ça m'énerve un peu car c'est perturbant ce menu qui s'affiche... et du coup.... ça foire, alors je ne l'utilise pas vraiment)... je vais donc choper le truc, car sans doute que bien maà®trisé ça doit accélérer la frappe du code...
Je continue donc...
Question pratique, est-ce qu'il vaut mieux utiliser une sheet pour l'open panel ou pas ?
Quels sont les avantages et ou inconvénients a utiliser l'une ou l'autre ?
A+
- le panel : bloque entièrement l'appli.
- le sheet : ne bloque que la fenêtre à laquelle il est attaché (les autres fenêtres ou les préférences restent fonctionnelles).
Une boite d'ouverture de fichier devrait donc être en panel (puisque la fenêtre -du document- n'existe pas encore). A l'opposé, la boite de sauvegarde devrait être en sheet (uniquement attachée à la fenêtre du document à sauvegarder).
.