2010-04-27 13 views
3

Je suis sous Mac OS X 10.6 SDK de IKSaveOptions de ImageKit ajouter l'accessoire de format de fichier à un NSSavePanel en utilisant:Y at-il un moyen d'initialiser IKSaveOptions de ImageKit à TIFF par défaut avec la compression LZW?

- (id)initWithImageProperties:(NSDictionary *)imageProperties imageUTType:(NSString *)imageUTType; 

et

- (void)addSaveOptionsAccessoryViewToSavePanel:(NSSavePanel *)savePanel; 

J'ai essayé de créer un NSDictionary spécifier compression = 5 , mais je n'arrive pas à obtenir IKSaveOptions pour afficher Format: TIFF, Compression: LZW lorsque le NSSavePanel apparaît pour la première fois. J'ai également essayé d'enregistrer le dictionnaire imageProperties retourné et le dictionnaire userSelection, puis j'ai essayé d'y retourner pour la prochaine fois, mais le NSSavePanel utilise toujours par défaut Format: TIFF avec compression: Aucun.

Est-ce que quelqu'un sait comment personnaliser le format/la compression par défaut qui apparaît dans la vue des accessoires?

Je voudrais par défaut les options d'enregistrement sur TIFF/LZW et en outre, je voudrais restaurer le choix du dernier format de fichier de l'utilisateur pour la prochaine fois. Je suis en mesure de contrôler le format de fichier en utilisant le type imageUTType (par exemple kUTTypeJPEG, kUTTypePNG, kUTTypeTIFF, etc), mais je suis toujours incapable de définir l'option de compression initiale pour les formats TIFF ou JPEG.

Merci,

-Rei

Répondre

2

Il n'y a pas d'API publique pour contrôler cela. Cependant, vous pouvez le modifier via la vue accessoire du NSSavePanel.

Exemple:

self.saveOptions = [[IKSaveOptions alloc] initWithImageProperties:nil 
                  imageUTType:(NSString *)kUTTypeTIFF]; 
[self.saveOptions addSaveOptionsAccessoryViewToSavePanel:savePanel]; 


// find compression options popup button in accessory view, select desired compression 
// correct title depends on localization -> be carefull with LZW and tag 
NSView *accessoryView = [savePanel accessoryView]; 
NSArray *accessorySubViews = [accessoryView subviews]; 

for (id view in accessorySubViews) { 

    if([view isKindOfClass:[NSPopUpButton class]]){ 
     NSPopUpButton *popupButton = (NSPopUpButton *)view; 
     NSArray *menuItems =[[popupButton menu] itemArray]; 
     for (NSMenuItem *menutItem in menuItems) { 
      if([[menutItem title] isEqualToString:@"LZW"]) { 
       //make sure you reverse engineer tags for 
       [popupButton selectItemWithTitle:@"LZW"]; 
       id target = [menutItem target]; 
       SEL action = [menutItem action]; 
       [target performSelector:action withObject:popupButton]; 
      } 
     } 
    } 
}