[?]   dans   mode   trier par   

[<] Sujet : [AS] Lancer un script depuis du code ObjC
De : FresLoc <anonyme@...>
Date : 2008-01-27 21:11:50

Sujet : Re: [AS] Lancer un script depuis du code ObjC
De : Daniel Varlet <anonyme@...>
Date : 2008-01-28 18:12:16

Sujet : Re: [AS] Lancer un script depuis du code ObjC
De : FresLoc <anonyme@...>
Date : 2008-01-28 22:43:14

Re,


>> Je voudrais depuis Cocoa, du code ObjC envoyer une NSString sur la
>> zone en cours de saisie qui donc est forcément au premier plan...
>
> Mouais, l'utilisateur est farceur, mais bon OK..
>
>> L'application en tâche de fond connecte un appareil en Bluetooth et
>
> Quelle application? La principale? Un helper? Un applet AS?
>
>> doit envoyer les données sur l'appli de premier plan...
>
> Encore une autre appli...

Je développe un soft de devis/métré, qui permet de recevoir en  
Bluetooth les mesures faites par un Laser-Mètre ( Disto - Leïca ) En  
attendant que tout ça soit opérationnel nous avons extrait un mini  
développement réalisé en Cocoa qui envoi ça sur l'application de  
premier plan, en quelque sorte un utilitaire.
Celui-ci affiche temporairement ( au démarrage ) une fenêtre de  
parametrage permettant d'établir la connexion et une icône dans la  
barre de menu avec un petit menu, pour faire réapparaître cette  
fenêtre, ou quitter par exemple, etc... U

La réception sur le Mac se passe bien la réception dans une NSString  
est correcte, si c'est sur la fenêtre de l'application les caractères  
arrivent correctement, pour l'envoi sur la zone de premier plan de  
n'importe quelle application en cour de saisie pose problème, il est  
utiliser une routine du clavier pour en quelque sorte se substituer a  
celui-ci, mais ça ne fonctionne pas comme il faut, d'où l'idée  
d'utiliser un AppleScript qui lui se chargera donc de coller au  
format texte les valeurs reçues...


>> Au cas ou cette appli est au premier plan
>
> Là je suis perdu.


>> si le script peut l'envoyer
>> au fond, ça n'est que mieux, mais pas indispensable...
>
> Un script AS peut masquer une appli ou en faire venir une au  
> premier plan.
> Sauf erreur, la bazarder en "fin" de *toutes* les applis visibles  
> est peut-être possible, mais certainement un peut lourd à scripter.  
> Si c'est optionnel mieux vaut garder ça pour les touches finales à  
> faire un jour de pluie.

Si la fenêtre de cet utilitaire est ( par erreur au premier plan ) la  
rétrograder, rien de primordial...


>> Par contre je souhaiterais que dans ce code il y ait appel a un objet
>> script séparé de façon a modifier ce dernier indépendamment...
>
> Dans quel code? Cocoa? AS? Quel objet script?
> Je pousse un peu, car je pense avoir saisi, mais pas la peine de  
> démarrer sur de fausses intuitions. Voir néanmoins (1) en me basant  
> sur le titre de ton message.

Cocoa oui bien-sur, l'envoi d'une valeur depuis le disto, provoque un  
événement sur Mac, qui est donc capté, une fois la valeur reçue et  
traitée envoyée sur la zone en cours de saisie....


> Je n'ai donc pas compris la/les questions. Si c'est pour savoir  
> comment lancer un script AS en Cocoa, j'ai des notions (sans plus).  
> Je connais au moins trois façons.
> Et/Si c'est pour le script AS  lui-même, c'est encore autre chose.
> Bref, il faudrait éclaircir ta, ou tes questions. Et simplifier si  
> possible.

J'ai essayé...

J'ai lu ce qui suit, pas tout compris non plus, c'est nouveau pour  
moi ;-)

Globalement je souhaiterais que le script soit une ressource soit  
dans xCode, soit dans IB, enfin que la ressource soit indépendante de  
façon a pouvoir modifier celle-ci indépendamment du code et pouvoir  
tester le cas échéant avec AS...

En tous cas merci pour cette réponse assez complète quant même...
Je devrais aussi recevoir le livre d'Etienne Vautrin qui devrait  
compléter tout ça...

@+

Gilles...


>
> (1)
> En Cocoa, pour lancer un fichier script, ça peut donner ça (extrait  
> d'un projet test).
>
> - (IBAction)launchAS_externalScript:(id)sender
> {
> 	NSLog(@"%@", NSStringFromSelector(_cmd));		// Debug
> 	
> 	NSDictionary *asError = nil;
> 	
> 	// Script path
> 	NSBundle *bundle = [NSBundle mainBundle];
> 	NSString *path = [bundle pathForResource:@"toto" ofType:@"scpt"  
> inDirectory:@"Scripts"];
> 	if (nil == path) {
> 		NSLog(@"Missing script.");
> 		return;
> 	}
> 	NSURL *url = [NSURL fileURLWithPath:path];
> 	NSLog(@"url: %@", url);
> 	
> 	// Load script
> 	NSAppleScript *script = [[NSAppleScript alloc]  
> initWithContentsOfURL:url error:&asError];
> 	NSLog(@"%@", [script source]);		// OK même avec erreur de compil
>
> 	if (nil != asError) {
> 		NSLog(@"%@", asError);
> 		return;
> 	}
> 	
> 	[script executeAndReturnError:&asError];
> 	if (nil != asError) {
> 		NSLog(@"%@", asError);
> 		return;
> 	}
> }
>
> Il y a des subtilités à régler dans Xcode (v2.0):
>
> - Pour que le script soit placé directement dans le dossier ".../ 
> Contents/Resources/Scripts" à la compile, rajouter une Build Phase  
> "Compile AppleScripts" dans le target, avec les scripts qui vont  
> bien. Même s'il s'agit de scripts déjà compilés.
> Placer les scripts dans ce dossier du Bundle permet d'y accéder si  
> on utilise la fonctionnalité "Assigning an AppleScript to a Cocoa  
> Object" d'Interface Builder. Autre manière, sans code, utilisée  
> entre autre par ASStudio. cf la doc minable d'IB (salut Alain).
> Pas la peine de perdre 10 minutes (seulement? hem...) que j'ai  
> perdu pour trouver ça.
>
> - Ajouter aux Linked Frameworks: AppleScriptKit.framework.
>
> A+
>
> -- 
> Daniel
>
> _______________________________________________
> Applescript_fr mailing list
> anonyme@...
> http://listes.patpro.net/mailman/listinfo/applescript_fr

_______________________________________________
Applescript_fr mailing list
anonyme@...
http://listes.patpro.net/mailman/listinfo/applescript_fr

Sujet : Re: [AS] Lancer un script depuis du code ObjC
De : Daniel Varlet <anonyme@...>
Date : 2008-02-06 16:51:37

Apple, AppleScript, AppleScript Studio, AppleTalk, AppleWorks, ColorSync, Finder, HyperCard, iBook, iLife, iMac, iWork, Keynote, Mac, Macintosh, Mac OS, Pages, Panther, PowerBook, Power Mac, Power Macintosh, QuickTime, Safari, Tiger, Xcode sont des marques déposées par Apple Computer, Inc., enregistrées aux Etats-Unis et dans les autres pays. Liste officielle