ruby no desktop - marcelo castellani

Post on 28-May-2015

4.153 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação do Marcelo Castallani feita no evento Ruby + Rails no Mundo Real

TRANSCRIPT

+

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/

+

Obrigado.marcelo@hypequino.com

top related