Gui grafiche con Ruby e RubyCocoa

Girovagando per la rete, in uno dei miei blog preferiti ho ho trovato questo articolo.

Dato che la cosa mi è sembrata molto, ma molto interessante e dato che Apple in persona ha detto che implementerà questa tecnologia in Osx 10.5 ho deciso di seguire questo tutorial.

Per prima cosa mi sono recato nel sito ufficiale di RubyCocoa .

Step 1: Installazione RubyCocoa
Bisogna abilitare il --enabled-share al nostro ruby.

Quindi entriamo nella cartella contenente i sorgenti di ruby e riconfiguriamoli cosi:

$ ./configure --prefix=/opt/local --enable-pthread --with-readline-dir=/opt/local --enable-shared

Io ho usato il prefisso /opt/local perché uso i darwinports generalmente sono /usr/local.
Ora compilate e installate ruby.

$ make
$ sudo make install

Scarichiamo ed installiamo rubycocoa, si può optare per due soluzioni: Scaricare l'ultima Build o l'ultimo Trunk via svn.
Io ho optato per la prima

$ wget http://easynews.dl.sourceforge.net/sourceforge/rubycocoa/RubyCocoa-0.11.0.tar.gz
$ tar xzvf RubyCocoa-0.11.0.tar.gz
$ cd RubyCocoa-0.11.0
$ ruby install.rb config
$ ruby install.rb setup
$ sudo ruby install.rb install

Step 2: Installazione gemma newcocoa
Scaricare la gemma ed installare la gemma newcocoa, quindi da terminale:

$ sudo gem install newcocoa

Newcocoa

Step 4: Creazione del progetto di test
Ora abbiamo tutti gli ingredienti per poter eseguire alcuni test.

Procediamo alla creazione del progetto, da terminale:

$ newcocoa HelloWorld

Entriamo nella directory del progetto appena creato:

$ cd HelloWorld

HelloWorld

Step 5: Modifica del Rakefile

Ora abbiamo creato il progetto, ma newcocoa crea "targets" sia per piattaforma ppc che per intel.

Ora aprite il progetto col vostro editor preferito. Il mio è TextMate e quindi da terminale scrivo:

$ mate .

Dato che uso Intel devo rimuovere dal RakeFile: - arch ppc

Arch ppc

Step 6: Modificare Main.nib con l'Interface Builder
Usando TextMate è possibile:

  • espandere la cartella:  English.lproj
  • cliccare col pulsante destro del mouse su Main.nib
  • cliccare su Open Main.nib with Interface Builder

Main.nib

  • Creare una Subclass NSObject per creare il nostro controller
  • Chiamiamo dunque questa classe "Controller" e istanziamola

Class Controller

  • Aggiungiamo un buttons alla nostra nuova finestra
  • Aggiungiamo un system fonts text (blocco testo) alla nostra nuova finestra

Questa operazione è semplicissima da fare, basta utilizzare il drag and drop

Immagine 9-1

Ora bisogna:

  • Cambiare il testo del bottone e scrivere "Hello World" (doppio clic)
  • Eliminare il testo nel system fonts text (doppio clic)

A questo punto, facendo doppio clic su "Controller" che si trova nella finestra "Main.nib", si aprirà la finestra "Controller Class Inspector".

Main.nib Class Inspector

Nella finestra che si è aperta "Controller Class Inspector":

  • Aggiungiamo 1 nuova azione, e chiamiamola "sayHello:"
  • Aggiungiamo 2 outlets, 1 chiamata "helloButton" e 1 chiamata "helloString"

Ora invece bisogna Linkare il Controller con le outlets e l'azione precedentemente creati.

Per fare questo è semplicissimo, bisogna (tenendo premuto il tasto ctrl) draggare "Control" (il cubo blu che vedete nella figura precedente) sul Bottone e successivamente fare doppio clic sull'outlet "buttonText" nella finestra "Controller Class Inspector".

Ripetiamo lo stesso procedimento, draggiamo "Control" (tenendo premuto ctrl) sul system font text e facciamo doppio clic su helloString.

Linking Linking 2

Associamo l'azione "sayHello:" tenendo premuto ctrl sul nostro pulsante "Hello World" e trasciniamolo sul nostro "Controller" (cubo blu) e poi nella finestra "Controller Class Inspector" facciamo doppio clic sulla nostra azione "sayHello:"

Action

Salviamo e chiudiamo l'inspector window e andiamo nel terminale.

Step 6: Ispezioniamo il NIB e creiamo il nostro Controller.rb
Dal terminale scriviamo:

$newcocoa -c

Verrà creato il file "Controller.rb" riprendiamo TexMate e scriviamo nella Def sayHello:

@helloString.setStringValue("HelloWorld")

E alla fine del file aggiungiamo:

`rake` if $0 == __FILE__

textString

L'ultima riga che abbiamo aggiunto ci permette premendo lo shortcut Mela+R di lanciare direttamente la nostra applicazione senza fare run Rake.

Semplice no?

LipsiaBlog

Technorati Tags:

Questo post è stato inviato il June 02, 2007 01:20 e Posted in , , . Puoi seguire tutte le risposte tramite il Atom feed. You can leave a comments, .
Tags


Commenti

Lascia una risposta

Lascia un commento