lundi 3 décembre 2007

Someone knows Shoes !!!

Je suis un sinistre pouilleux pour tout ce qui est applications avec GUI (Graphical User Interface). J'avoue. Mais j'ai de bonnes excuses (ou presque) :


      • C'est pas évident (le code est souvent moche).
      • On m'a pas appris (le Ruby non plus cela dit...)
      • Ça me gonfle (très) violemment.
Alors pour rappel, en Ruby, on a pour les plus connues (je vous mets pas les liens, la plupart sont sur RubyForge ou carrément dispo sous forme de gemmes) :

  • Tk (Tk/tcl) : pas glamour du tout.
  • wxRuby (interface vers wxWidgets) qui me plaisait bien parce qu'elle utilise les widgets natifs de chaque OS, mais plus compliquée...
  • Ruby/GTK que j'ai pas creusée.
  • RubyCocoa exclusivement pour MacOS X (et votre serviteur est pour la compatibilité).
  • FXRuby interface vers FOX-GUI mais ça me paraissait pas fabuleux.
  • Qt, mouais.
  • Sans doute plein d'autres excellentes que je n'ai pas le bonheur de connaître.
Et puis je suis tombé un peu par hasard sur SHOES (voui voui, comme les chaussures...).
En fait non. Pas par hasard. Ca faisait un moment que je me demandais si Why's était (comme moi) fan de sneakers ou s'il s'agissait d'un de ces codes... Comme quoi, l'anglais, ça se travaille.

Bref, c'est un GUI toolkit pas vraiment comme les autres, assez simpliste, avec beaucoup de choses issues du développement web, prenant les widgets natifs des OS, mais qui pourrait être idéale pour les branl0s dans mon genre qui ne supportent pas de se pencher plus de 5 minutes sur ces trucs de fourbes... si seulement il y avait une vrai doc ! Mais Why's le dit lui même (le projet est sous license très libre) :

Yes, well, the docs situation is kinda lame. NKS is purely for carnal pleasure. Naw, actually, yeah, who really knows what it’s good for. Roll it up and smoke it.
En gros : la doc est naze ; hackez les enfants ! Bon ben allons-y !

Shoes.app :width => 300, :height => 220 do
image "static/shoes-icon.png", :top => 55, :left => 86
@in = edit_line :width => 250, :left => 25
button "Do you know SHOES, folks ?", :left => 60, :top => 25 do
alert @in.text
end
end


Ce petit code est allègrement dérivé d'un des samples fournis avec Shoes. Il propose une barre de texte à remplir @in, une image .png (.gif et .jpeg également supportés) et un bouton qui va nous renvoyer un message d'alerte avec pour texte ce que l'on a tappé dans @in... En image :


Okay, c'est pas encore la gloire, mais faut reconnaître que le code n'est pas bien long... Pour les noobinards qui n'arrivent pas à démarrer : lancer l'exécutable de Shoes puis donnez lui à manger un petit fichier .rb avec ce qui est écrit au-dessus. L'image utilisée est déjà dans le bon répertoire.

Je vais essayer de tripatouiller ça un peu, et si j'en sors un petit truc marrant, je vous fais signe !

Liens en vrac :

Faites moi signe si vous hackez des trucs marrants (ou utiles, mais c'est moins... voilà quoi ! ^^) !

Les pompes de la premières photos, pour les curieux, sont des Nike Air Force I Premium Low Red, uniquement dispos aux USA, chez Footlocker. Oui, elles arrachent.

3 commentaires:

Lefty a dit…

c'est quand même terrible de ne pas comprendre plus d'un mot sur 10.
c'est mieux que rien...
il est joulaïe, ton blogounet

Anonyme a dit…

Je ne trouve pas que ce code soit plus simple que celui nécessaire à wxRuby pour proposer les même fonctionnalités. Mais peut-être pour le reste...

Sobe a dit…

Peut être pas effectivement. Bizarement, je trouve que Shoes est un poil plus "lisible". Dans l'idéal il me faudrait comparer avec la même appli en wx, mais juste pour l'exemple, une fenêtre avec le texte "turlututu" centré (codée avec 2 pieds gauches, j'en conviens) :

require 'rubygems'
gem 'wxruby2-preview'
require "wx" # wxruby2
include Wx

class TroutApp < Wx::App
def on_init
frame = Wx::Frame.new(nil, -1, 'Petite appli wxRuby')
panel = Wx::StaticText.new(frame, -1, 'Turlututu', Wx::Point.new(-1,1), Wx::DEFAULT_SIZE, Wx::ALIGN_CENTER)
frame.show
end
end
TroutApp.new.main_loop