Cocoa et AppleScript
Voici un ensemble d’articles, de notes, de ce que vous voulez qui concernent mes expérimentations avec Cocoa et AppleScript. Certaines sont des concaténations (plus ou moins bien traduites) de différentes sources trouvées sur Internet. Malheureusement il se peut que la référence de l’une ou l’autre de ces sources se soit perdu dans mes archives. Si vous êtes capable de mettre un nom, une adresse, un mail sur une partie de mes notes n’hésitez pas à me le faire savoir…
Je n’ai pas encore découvert la perle rare des site AppleScript. Ce n’est pas tout à fait vrai et je vous conseil tout de même d’allez voir iScript.fr ou le non moins excellent site trad.applescript proposant la traduction française de nombreuses docs. Sur scripteur.com vous trouverez des bouts de code facilement adaptables à vos besoins.
Pour Cocoa la référence en la matière est le site développeur Apple. Mais il existe au détour de Google une multitude de sites qui méritent que l’on s’y attarde. Celui par lequel je passe le plus souvent, et que je vous recommande particuliairement, est Project:Omega. CocoaDev est aussi un bon point de départ si vous cherchez un bout de code. Je vous engage également à aller jetter un oeil sur MacDevCenter d’O'Reilly.
Et puisque nous parlons d’O'Reilly, sachez que si vous souhaitez de la documentation papier, Cocoa in a Nutshell est un des incontournable à placer sur votre table de nuit à côté de Cocoa® Programming for Mac® (également connu chez Eyrolles sous le titre Cocoa par la pratique) AppleScript - Maîtrise complète vous donnera de bonnes bases pour aborder AppleScript.
Souvenez vous en lisant les pages qui suivent, qu’il s’agit avant tout de notes personnelles. Cela ne veut pas pour autant dire que je ne les modifierai pas si vous me le suggérez. Finalement si ce qui suit est en ligne et que vous le lisez, peut-être est ce parce que vous y trouvez votre bonheur. N’hésitez pas à me demander/proposer des corrections, améliorations, …
- Créer un prefPane sous OSX
- Créer un menu dans la barre d’icônes de MacOSX
- Créer une application à tiroir
- Ajouter une barre d’outils à une application
Mémo Cocoa
Convertir un NSData en NSString et vise versa
Créer ou lire du RTF depuis un NSTextView
NSTextView *myTextView; // create RTF file [myTextView writeRTFDToFile: @"myFile.rtf" atomically: YES]; // read from RTF file [myTextView readRTFDFromFile: @"myFile.rtf"];
Charger une ressource du bundle courant
Obtenir le nombre de processeurs d’une machine
CPUCount.h
#import <Foundation/Foundation.h> @interface CPUCount : NSObject { host_name_port_t host; host_basic_info_data_t info; unsigned int iNumberOfCPUs; } - (id)init; - (int)numCPUs; @end
CPUCount.m
#import "CPUCount.h" @implementation CPUCount - (id)init { host = mach_host_self(); unsigned int count = HOST_BASIC_INFO_COUNT; host_info(host, HOST_BASIC_INFO, (host_info_t)&info, &count); // Set the number of CPUs iNumberOfCPUs = [self numCPUs]; return self; } - (int)numCPUs { processor_cpu_load_info_t tCPUInfo; kern_return_t tKernReturn; unsigned int uiNumberOfProcessor; mach_msg_type_number_t tMachMsgType; tKernReturn = host_processor_info( host, PROCESSOR_CPU_LOAD_INFO, &uiNumberOfProcessor, (processor_info_array_t *)&tCPUInfo, &tMachMsgType ); if( tKernReturn != KERN_SUCCESS ) { return 0; } else { vm_deallocate( mach_task_self(), (vm_address_t)tCPUInfo, (vm_size_t)(tMachMsgType * sizeof(*tCPUInfo)) ); return (int)uiNumberOfProcessor; } } @end
Mémo AppleScript
Monter un répertoire partagé sur le réseau
tell application "Finder" mount volume "afp://username:password@machinename.local/sharename" end tell
tell application "Finder" open location "afp://username:password@serverip/sharename" end tell
Envoyer un mail
tell application "Mail" set newMessage to make new outgoing message with properties {subject:"Test", content:"Ceci est un test d'envoi de Mail avec AppleScript" & return & return & "G." & return & return & "---"} tell newMessage set visible to true set sender to "moi@ici.com" make new to recipient at end of to recipients with properties {name:"", address:"toi@labas.com"} end tell send newMessage end tell
Récupérer le login de l’utilisateur courant
set username to the second word of (characters (offset of "Users" in path to ¬ preferences as string) through (length of (path to preferences as string)) of ¬ (path to preferences as string) as string)
Récupérer le SSID du réseau Wifi
set AirportName to do shell script "system_profiler SPAirPortDataType|awk -F\": \" '/Current Wireless Network/{print $2}'"
Lire un fichier ligne par ligne
set fileReference to open for access ":path:to:file" with permission set lines to paragraphs of (read fileReference) repeat with currentLine in lines if length of currentLine is greater than 0 then -- faire quelque chose avec currentLine ... end if end repeat close access fileReference





