Follow me
RSS feed
My sources
My Viadeo

Créer une droplette avec Cocoa/Objective-C

Greg | 01 Sep 2009

devOn m'a pausé une question amusante aujourd'hui : comment créer une droplette1 en Cocoa/Objective-C ? -- Je sais pas ! C'est typiquement le genre de question que j'adore et qui me pousse à découvrir ces petits trucs qui rendent le développement moins ch*#@ ! Malheureusement, la solution est beaucoup plus simple que je pensais et vous allez voir que c'est une question de minutes.

Commençons pas créer un nouveau projet type Cocoa Application dans Xcode. Nous l'appellerons Droplet. Dans la zone de navigation du projet (à gauche), dépliez la section Resources et ouvrez le fichier MainMenu.xib en double-cliquant dessus. Ceci aura pour effet de démarrer Interface builder. Dans ce dernier, au niveau de la fenêtre du fichier MainMenu.xib nous devons déclarer DropletAppDelegate comme étant la classe déléguée du File's Owner. Pour cela, faire une [ctrl]-clic sur le File's Owner et, tout en maintenant la touche [ctrl] enfoncée, liez-le à l'objet DropletAppDelegate :

droplet001

Choisissez ensuite l'Outlet delegate dans le menu :

droplet002

Vous pouvez maintenant sauvegarder (⌘S) et quitter (⌘Q) Interface builder.

Une fois revenu dans Xcode, déployez la section Classes et cliquez sur le fichier DropletAppDelegate.m pour l'éditer. Nous allons y ajouter la méthode – application:openFile: de NSApplication. Le code devient donc le suivant :

//
//  DropletAppDelegate.m
//  Droplet
//
//  Created by greg on 01/09/09.
//  Copyright 2009 Grégoire Lejeune. All rights reserved.
//

#import "DropletAppDelegate.h"

@implementation DropletAppDelegate

@synthesize window


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
	// Insert code here to initialize your application 
}

- (BOOL)application:(NSApplication *)sender openFile:(NSString *)path
{
  [[NSAlert alertWithMessageText:path 
                   defaultButton:@"OK" 
                 alternateButton:nil 
                     otherButton:nil 
       informativeTextWithFormat:path] runModal]

  return YES

}

@end

Nous nous contenterons, dans cet exemple, d'afficher le chemin de l'élément qui a été déposé sur notre application, dans une boite d'alerte.

Sauvegardez le fichier ouvrez maintenant la fenêtre d'information de la cible. Pour cela, dans le menu Project d'Xcode, choisissez l'entrée Edit Active Target "Droplet" (ou, plus simplement, utilisez le raccourci ⌥⌘E). Dans la fenêtre d'information, rendez-vous sous l'onglet Properties. En bas de cette fenêtre, vous pouvez voir un tableau intitulé Document Types. C'est à ce niveau que nous allons préciser quels types de fichiers peuvent être droppés sur notre application. Pour ajouter un type de fichier, cliquez sur le symbole [+] en dessous du tableau. Editez la nouvelle ligne du tableau en précisant le nom du type de fichier (colonne Name) -- Ce texte est libre. Il faut ensuite préciser le type de fichier. Pour cela vous avez plusieurs solutions :

Dans cet exemple nous allons permettre de dropper des répertoires. Nous utiliserons donc la dernière solution en mettant comme OS Types : fold.

droplet004

Nous ne nous intéresserons pas aux autres colonnes du tableau. Assurez-vous simplement que la valeur de la colonne Role n'est pas à None.

Ceci fait, vous pouvez compiler le projet. Rendez-vous ensuite dans le répertoire Build/Debug (ou Build/Release -- selon les paramètres de compilation que vous avez choisi), vous devriez y trouver l'application Droplet.app. Fait un Drag'n'Drop d'un répertoire quelconque sur l'application...

droplet005

droplet006

1 n. f. [APPLE] application apparaissant sur le bureau sous la forme d'une icône sur laquelle on peut glisser-déposer des fichiers pour qu'ils soient traités par ladite application. (source : Tout-savoir.net)

Copyright © 2009 - 2011 Grégoire Lejeune.
All documents licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License, except ones with specified licence.
Powered by Jekyll.