Recommend Me


Mardi 29 mai 2007

J’ai (aussi) le mien !

Classé dans : Important, Tout et rien — greg @ 19:43

PicooZ

• • •

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 !

• • •

Dimanche 27 mai 2007

Hi, i’m Ruby on Rails… (4)

Classé dans : RoR — greg @ 17:43

• • •

Jeudi 17 mai 2007

Hi, i’m Ruby on Rails… (3)

Classé dans : RoR — greg @ 23:22

• • •

Mercredi 16 mai 2007

Hi, i’m Ruby On Rails… (2)

Classé dans : RoR — greg @ 9:42

• • •

Mardi 15 mai 2007

Hi, i’m Ruby On Rails…

Classé dans : RoR — greg @ 11:39

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