Recommend Me


Jeudi 11 juin 2009

Fin… et suite…

Voilà, le temps et venu. Je ferme définitivement ce blog pour me consacrer pleinement au suivant.

See you there.

• • •

Mardi 26 juin 2007

BD-Cast #3

Classé dans : Cocoa, MacOSX, Ruby, clotw — greg @ 19:36


BD-Cast #3

BD-Cast #3 Annonce

• • •

Vendredi 22 juin 2007

BD-Cast #3

Classé dans : Cocoa, MacOSX, Ruby, clotw — greg @ 19:43


BD-Cast #3 Teaser

• • •

Mercredi 20 juin 2007

BD-Cast #2

Classé dans : Cocoa, MacOSX, Ruby, clotw — greg @ 18:02


BD-Cast #2 Titre
BD-Cast #2 : Annonce

• • •

Mardi 19 juin 2007

BD-Cast #2 - Teaser

Classé dans : Cocoa, MacOSX, Ruby, clotw — greg @ 17:13


BD-Cast #2 - teaser


• • •

Vendredi 15 juin 2007

BD-Cast #1

Classé dans : Cocoa, MacOSX, clotw — greg @ 11:12


sparkle BD-cast


sparkle BD-cast


• • •

Mercredi 13 juin 2007

Utiliser la télécommande Apple avec RubyCocoa…

Classé dans : Cocoa, MacOSX, Ruby — greg @ 12:58

Le site RubyCocoa.com propose plusieurs articles très intéressants, dont un particulièrement sympathique, concernant l’utilisation de la télécommande Apple.

Voici un petit résumé…

Commencez par télécharger les sources du projet “Apple Remote Controller Wrapper Class” de Martin Kahr. Ouvrez le projet avec Xcode et supprimez la cible AppleRemote. Pour cela, dans le panneau Groups & Files, dépliez l’entrée Target, sélectionnez AppleRemote et supprimez-la.

Supprimer La Target AppleRemote

Dans le menu Project de Xcode, choisissez l’entrée New Target et sélectionnez Framework de l’entrée Cocoa dans l’assistant. Nommez la cible AppleRemote et terminez (bouton Finish). Vous pouvez fermer la fenêtre d’information qui s’est ouverte. Déployez la cible AppleRemote dans le panneau Groups & Files et glissez les fichiers AppleRemote.h dans Copy Headers, AppleRemote.m dans Compile Sources et IOKit.framework dans Link Binary With Libraries. Voici ce que vous devez avoir :

Nouvel Target

Vous pouvez maintenant compiler.

Nous avons maintenant un Framework permettant d’utiliser la télécommande. Pour l’utiliser avec RubyCocoa, il suffit de le charger de la façon suivante :

require ‘osx/cocoa’
OSX::NSBundle.bundleWithPath("/home/greg/Library/Frameworks/AppleRemote.framework").load
OSX.ns_import :AppleRemote

Dans l’appel à bundleWithPath, modifier éventuellement le chemin vers le framework AppleRemote.framework. Dans mon cas je l’ai placé dans le sous-répertoire Library/Frameworks/ de mon home.

Il faut ensuite créer un delegate qui se chargera de traiter les actions :

class AppleRemoteDelegate < OSX::NSObject

  addRubyMethod_withType(‘appleRemoteButton:pressedDown:’, ‘v@:ii’)  

  def appleRemoteButton_pressedDown(buttonIdentifier, pressedDown)
    puts "bouton #{buttonIdentifier}, pressé #{pressedDown}"
  end

end

Notre delegate à une simple méthode appleRemoteButton_pressedDown chargé d’imprimer le numéro et l’état lorsqu’un bouton est pressé sur la télécommande. L’appel à addRubyMethod_withType permet de passer au runtime Objective-C la signature correcte à utiliser pour la méthode de notre delegate. Le premier paramètre donne le nom de la méthode et le second précise sa signature. le v permet de préciser que la valeur de retour de la méthode est de type void. Le @ indique que le message doit être envoyé à un objet Objectif-C du type id. le : indique que le message est décrit par un type Objectif-C spécial appelé sélecteur. Les deux ii donnent le type des arguments de la méthode, dans notre cas, des entiers.

Enregistrez le code précédent dans un fichier remote.rb. Nous pouvons maintenant faire un test avec irb :

>> require ‘remote’
=> true
>> a = OSX::AppleRemote.alloc.init
=> #<OSX::AppleRemote:0xa6d984 class=’AppleRemote’ id=0×12f64b0>
>> d = AppleRemoteDelegate.alloc.init
=> #<AppleRemoteDelegate:0xa6c0e8 class=’AppleRemoteDelegate’ id=0×12f9d00>
>> a.setDelegate d
=> nil
>> a.startListening 0
=> nil
>> OSX::NSApplication.sharedApplication.run
button 2, pressed 1
button 3, pressed 1
button 4, pressed 1
button 0, pressed 1
button 0, pressed 0
button 5, pressed 1
button 1, pressed 1
button 1, pressed 0

Whaou©®™ !

• • •

Jeudi 7 juin 2007

rNews v0.0.0.0.0.0.0.0.1

Classé dans : Cocoa, MacOSX, Ruby — greg @ 16:09

rNews

• • •

Mardi 29 mai 2007

Bonjour RubyCocoa

Classé dans : Cocoa, Ruby — greg @ 16:31

Déjà que RubyCocoa je trouve cela génial, mais alors avec newcocoa, c’est presque trop facile… Exemple !

Nous allons faire une application ultra simple : un HelloWorld. Pour cela nous partirons du principe que vous connaissez bien Ruby et que vous avez quelques notions de développement Cocoa.

newcocoa va nous simplifier les choses en nous évitant de nous lancer dans l’utilisation d’Xcode au profit de nos outils habituels.

Il faut commencer par créer le squelette de l’application :

$ newcocoa HelloWorld
creating: HelloWorld
creating: Rakefile
creating: README
creating: other templates
NOW, Edit Rakefile
$

Vous pouvez, comme cela est gentillement proposé, éditer le fichier Rakefile. Ce n’est pas obligatoire pour le moment et nous allons nous en passer. Regardons plutôt ce qui a été généré :

$ tree          
.
|– English.lproj
|   `– Main.nib
|       |– classes.nib
|       |– info.nib
|       `– keyedobjects.nib
|– Info.plist.erb
|– README
|– Rakefile
|– html
|– main.m
`– main.rb

3 directories, 8 files
$

Nous avons là le stricte nécessaire pour créer notre application. Vous pouvez vous en rendre compte en lançant la commande rake qui aura pour effet de compiler votre projet :

$ rake
(in /Users/greg/Desktop/HelloWorld)
svn: ‘.’ is not a working copy
/Users/greg/Desktop/HelloWorld/rakefile:12: warning: already initialized constant VERSION
gcc -arch i386 -Wall -lobjc -framework RubyCocoa main.m -o ‘Helloworld’

        mkdir -p "Helloworld.app/Contents/MacOS"
        mkdir    "Helloworld.app/Contents/Resources"
        cp -rp *.rb *.lproj Credits.* *.icns "Helloworld.app/Contents/Resources"
        cp ‘Helloworld’ "Helloworld.app/Contents/MacOS"
        echo -n "APPL????" > "Helloworld.app/Contents/PkgInfo"
        echo -n rev > "Helloworld.app/Contents/Resources/VERSION"

cp: *.icns: No such file or directory
cp: Credits.*: No such file or directory
open ‘Helloworld.app’
$

Vous devriez voir s’ouvrir votre application contenant une simple fenêtre vide. Nous allons maintenant modifier cette fenêtre et lui ajouter des widgets. Pour cela il faut ouvrir le fichier Main.nib avec Interface Builder :

$ open English.lproj/Main.nib
$

Modifiez la fenêtre de l’application de façon à obtenir quelque chose qui ressemble à cela :

Il nous faut un contrôleur pour l’application. Pour cela il faut créer un classe héritant de NSObject. Dans cet exemple nous l’appellerons HelloWorldController :

Dans notre première application, nous souhaitons que lorsque l’utilisateur clic sur le bouton « Cliquez là! » un message s’affiche dans la zone de text. Nous avons donc besoin d’un outlet (disons myText) pour agir sur le contenu de la zone de texte et d’une action (disons clicAction:) pour intercepter le clic sur le bouton. Ajoutez les au contrôleur puis faite les connexions après avoir instancié le contrôleur :

Voilà nous avons tout ce qu’il nous faut côté interface, il ne reste plus qu’à écrire le code. Quittez Interface Builder après avoir sauvegardé votre travail.

Pour l’écriture du code Ruby, nous allons encore une fois utiliser newcocoa. En effet il est capable de générer pour nous le squelette du contrôleur :

$ newcocoa -c              
["English.lproj/Main.nib"]
Generating class skeltons from  `English.lproj/Main.nib‘ …
$

Vous devriez maintenant trouvez dans la liste de fichier du projet un fichier HelloWorldController.rb. C’est lui que nous devons maintenant éditer. Modifier le de la façon suivante :

require ‘osx/cocoa’
include OSX

class HelloWorldController < NSObject
        ib_outlets :myText

        def clicAction(sender)
          @myText.setStringValue( "Bonjour le monde!" )
        end

        def awakeFromNib
          @myText.setStringValue( )
        end
end

Le champ texte est de type NSTextField héritant de NSControl, nous utilisons la méthode setStringValue de ce dernier pour vider le champ lors du chargement de l’interface (dans awakeFromNib) puis pour modifier le contenu via clicAction.

Bien, il ne reste plus qu’a sauver le tout et à relancer le rake… Miracle ça fonctionne !

• • •

Jeudi 16 mars 2006

“Become an Xcoder”

Classé dans : Cocoa — greg @ 14:17

Reçu ce matin dans ma boite mail :

From: Alex Clarke
Date: Wed, 15 Mar 2006 16:37:37 +1100
Subject: Announcement: Free new Xcode book available as pdf

General Press Release

15th March 2006

Become An Xcoder

Bert Altenburg, author of “AppleScript for Absolute Starters”, in co-operation with Alex Clarke and Philippe Mougin, has released a new book, “Become an Xcoder”, for newcomers to Cocoa programming using Objective-C and XCode.

This tutorial is for non-programmers, and is aimed at levelling the learning curve as much as possible. In the best tradition, the tutorial is being released as a free booklet in pdf format.

It is available for download from http://www.cocoalab.com/developer.htm (Direct Link: http://www.cocoalab.com/BecomeAnXcoder.pdf Warning: 2MB pdf file at this link).

Alex Clarke
info@cocoalab.com

• • •
Page suivante »
Powered by: WordPress • Template adapted from the Simple Green' Wench theme - RSS