ruby no desktop - marcelo castellani
DESCRIPTION
Apresentação do Marcelo Castallani feita no evento Ruby + Rails no Mundo RealTRANSCRIPT
+
Marcelo Castellani
Ruby + Rails no mundo real 2009
Ruby no
Desktop
+Ok, Rails
+Por incrível que pareça, o Ruby existe desde muito antes do Rails !!!!(acredite, é verdade, Rails é apenas uma aplicação escrita em Ruby)
+O que será apresentado nesta palestra?
FXRuby
GTK
RubyCocoa
Shoes
+The 2008 Ruby GUI SurveyAlex Fenton
+The 2008 Ruby GUI Survey
Pesquisa realizada por Alex Fenton em 2008, com 399 desenvolvedores de todo o mundo.
O objetivo foi identificar o melhor, o mais simples e o mais usado toolkit para o desenvolvimento de aplicações GUI.
Interface gráfica do usuário (GUI) é um tipo de interface do usuário que permite a interação com dispositivos digitais através de elementos gráficos como ícones e outros indicadores visuais, em contraste a interface de linha de comando.
+The 2008 Ruby GUI Survey
A interação é feita geralmente através do mouse, teclado ou dispositivos especiais (como touch screen), com os quais o usuário é capaz de selecionar símbolos e manipulá-los de forma a obter algum resultado prático.
Esses símbolos são designados de widgets e são agrupados em toolkits.
+Widgets
Um widget é um componente de uma interface gráfica do utilizador (GUI), o que inclui janelas, botões, menus, ícones, barras de rolagem, etc..
Alguns widgets tem por objetivo receber dados do usuário e com isso gerar algum tipo de registro, como os controles de formulário.
Componentes como entrada de texto, caixa de seleção, menu de seleção, botões de múltipla escolha e outros são capazes de definir a natureza dos dados a serem coletados, e dessa forma enumerar todas as possibilidades de dados a serem apresentados pelo usuário.
+O que quer dizer widget?
A primeira referência a essa palavra vêm da peça A Beggar on Horseback (1924), escrita por George S. Kaufman e Marc Connelly, onde o termo representava objetos inanimados com um valor puramente mercantil e sem nenhuma ligação espiritual ou artística.
+Widgets e orientação a objetos
Todo sistema baseado em interface gráfica do usuário usa widgets.
Widgets são um dos mais perfeitos exemplos de orientação a objetos pois cada um existe isolado e pode ser aproveitado dentro de um contexto maior, interagindo com outros, mas nunca deixando de ser único → um botão é sempre um botão, por exemplo.
+Experiência em Ruby
+Ruby + GUI?
+O que procuram num toolkit Ruby?
+Qual seu toolkit preferido/em uso?
+Qual seu toolkit preferido/em uso?
+Conclusões sobre a pesquisa
A escolha de um toolkit para desenvolvimento de aplicações desktop usando Ruby passa primeiro pela facilidade de distribuição e depois pela disponibilidade de documentação.
Hoje existe uma fragmentação muito grande, sendo o Shoes o toolkit mais usado, porém com uma proporção de menos de um para cada quatro desenvolvedores.
O primeiro toolkit para desenvolvimento de aplicações desktop em Ruby, o TK, está caindo rapidamente em desuso.
+Comparando os toolkits
Toolkit URL Recomendado para quais plataformas?
GTK+ http://ruby-gnome2.sourceforge.jp/
Ambientes baseados em Gnome/GTK (Ubuntu e OpenSolaris, por exemplo).
FXRuby http://www.fxruby.org/ Windows 2000, XP, Vista e 7
RubyCocoa / MacRuby
http://www.rubycocoa.com/
Mac OS X
Shoes http://shoooes.net/ Windows 2000, XP, Vista, 7, Linux diversos e Mac OS
+
Ruby Gtk+Especialmente para ambientes Gtk, como o Ubuntu, OpenSolaris e BSD.
+O que é GTK?
GTK+ é um toolkit multi-plataforma para a criação de interfaces gráficas. Ele foi desenvolvido para o GIMP. Por isso foi batizado de GIMP toolkit, com abreviação GTK+.
O GTK+ é muito popular, sendo usado em um grande número de aplicações e no ambiente de desktop GNOME (que por sua vez também é muito popular).
GTK+ é escrito em C e seu design é orientado a objeto. Existem bindings para construção de programas GTK+ em C, C++, Pascal, Perl, Java, Python, Ruby e PHP (PHP-GTK).
+Aparência e ambientes
O toolkit é configurável pelo usuário e oferece muitas opções de engines. Há engines emulando a aparência de outros populares toolkits ou plataformas como Windows 95, Qt, ou NEXTSTEP.
O ambiente GNOME usa GTK+ como base do seu sistema e muitos programas para GNOME usam GTK+ como seu Toolkit.
Em dispositvos móveis, o GTK+ é usado como base de ambientes como o GPE Palmtop e o Maemo.
GTK+ também pode ser usado no Microsoft Windows e outros menos usuais como framebuffer e ncurses.
Apesar de ser preferencialmente usado no GNOME, os programas GTK+ geralmente rodam sem problemas em outros ambientes como KDE, Xfce ou FluxBox.
+GIMP = Gnu Image Manipulation Program
+Gtk + Ruby
Para usar o Gtk no Ruby basta usar o pacote GTK, disponível junto a maior parte das distribuições Ruby.
Caso esteja desenvolvendo para ambiente Windows é importante instalar as bibliotecas do GTK, para que sua aplicação efetivamente funcione.
Para instalar as bibliotecas do Ruby e GTK no ambiente Windows visite o link abaixo, para mais informações:
http://ruby-gnome2.sourceforge.jp/
+Exemplo de código
+Resultado da execução
Uma janela Gtk
+Tratando os sinais – parte 1# inclui suporte a Gtk no projetorequire 'gtk2'
# evento de exclusão de widgetsdef delete_event(widget) return falseend
# fim do programadef destroy(widget) Gtk.main_quitend
# inicia o engine do GtkGtk.init
# cria uma nova janelajanela = Gtk::Window.new(Gtk::Window::TOPLEVEL)janela.set_default_size(400, 300)janela.title= "Alô, mundo => GTK + Ruby"janela.signal_connect("delete_event") { delete_event(janela) }janela.signal_connect("destroy") { destroy(janela) }
+Tratando os sinais – parte 2# cria uma caixa para ordenar nossos objetosbox = Gtk::VBox.new(false, 0)janela.add(box)
# cria um botão e um labelbotao = Gtk::Button.new("Saudação")rotulo = Gtk::Label.new("")
# adiciono o evento ao botãobotao.signal_connect("clicked") { rotulo.label = "Olá, mundo" }
# mostra os componentes e a janelabox.pack_start(botao, true, true, 5)box.pack_start(rotulo, true, true, 5)botao.showrotulo.showbox.showjanela.show
# passa o controle pro GtkGtk.main
+Resultado da execução
Clique no botão
+Pra onde ir agora?
http://ruby-gnome.sourceforge.net/tutorial/
http://ruby-gnome2.sourceforge.jp/hiki.cgi?tut-gtk
http://www.webdotdev.com/nvd/content/view/1608/1/
+
FXRubyEspecialmente para ambiente Microsoft, nos Windows 2000, XP, Vista e 7
+O que é o FXRuby
FXRuby é uma GEM que incorpora o toolkit multiplataforma Fox, usado para o desenvolvimento de aplicações GUI em C e C++.
Existem ports do Fox para outras linguagens, como o FxPy (Python) e o EiffelFox (para Eiffel).
O Fox é um toolkit extremamente poderoso e flexível, que permite a construção de interfaces poderosas. Existem aplicativos complexos inteiros feitos em Ruby e FXRuby dado seu poder.
+BeERP – Sistema ERP Comercial
+BeERP – Sistema ERP Comercial
+FreeRIDE – Free Ruby IDE
+Discretizer – interactive mesh creation tool
+Fox GUI Builder
+Links
http://freeride.rubyforge.org/wiki/wiki.pl
http://www.attiksystem.ch/beerp/
http://www.discretizer.org/
http://fox-tool.rubyforge.org/
+Hello World
+Scribble
+Scribble – botão
+Scribble
+Imagem e Canvas
+FXTable
+FxGL
Poderosa API para a criação de aplicações OpenGL com Ruby.
+Hello OpenGL
+Algo mais complexo
+rubyscript2exe.rb
Script para criar “executáveis” para Win32 a partir de scripts Ruby.
Ele, na verdade, cria um arquivo .exe que possui a Máquina Virtual do Ruby, as bibliotecas necessárias para execução e também o script.
Integra-se perfeitamente ao FXRuby, de maneira que é possível distribuir facilmente uma aplicação inteira.
Um inconveniente é que os executáveis gerados ficam enormes. Um script de 5KB, após ser processado, chega a 4MB.
+Para onde ir agora?
http://www.fxruby.org/
http://www.fox-toolkit.org/
http://www.pragprog.com/titles/fxruby
+
Ruby Cocoa e MacRubyExclusivamente para usuários de Mac
+O que é Cocoa, RubyCocoa e MacRuby?
Cocoa é o toolkit para o desenvolvimento de aplicações GUI para o Mac OS X, usando Objective-C e o X-Code.
RubyCocoa é um port para o uso da linguagem Ruby para o desenvolvimento de aplicações para Mac OS X.
MacRuby é a evolução do RubyCocoa e que será lançado em breve (em 2009, acredito).
+RubyCocoa versus MacRuby
RubyCocoa
MacRuby
+O que preciso para desenvolver em Ruby para meu Mac?
XCode
Interface Builder
Ruby
+XCode
+Interface Builder
+Novo projeto no XCode
+Para onde ir agora?
http://www.pragprog.com/titles/bmrc/rubycocoa
http://www.rubycocoa.com/
http://developer.apple.com/cocoa
http://www.macruby.org/
+
ShoesShoes is for everyone
+O que é o Shoes?
É uma biblioteca gráfica criada pelo __why, the lucky stiff, uma das personalidades mais conhecidas do universo Ruby, principalmente pelo seu excelente guia de Ruby e pelo Try Ruby.
+Shoes é simples
+Shoes é inteligente
+Shoes é poderoso
+Shoes é multiplataforma
+Para onde ir agora?
http://en.wikipedia.org/wiki/Shoes_(GUI_toolkit)
http://shoooes.net/
http://hackety.org/press/