[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN][SoC] GlimR 0.1.0

Ilmari Heikkinen

7/15/2006 11:14:00 PM

== GlimR 0.1.0 - Ruby OpenGL GUI Widget Kit ==

Homepage: http://glimr.ruby...
Download: http://rubyforge.org/frs/?gro...
Blog: http://glimr.blo...

This is one of Ruby Central Inc.'s
Google Summer of Code 2006 projects.


== What is it? ==

A GUI toolkit written in Ruby, using OpenGL for
drawing and SDL for text and loading images.

Intended for being embedded in other OpenGL
applications and for stand-alone apps that don't
need complex widgets.

See the README in the tarball or at
http://glimr.blo...2006/07/glimr-010.html
for more.

Take it for a spin if you like, there are small
example programs focusing on different
aspects of the toolkit in
tests/integration_tests/


== Requirements ==

Ruby >= 1.8.1, tested to run on YARV (but encountered some segfaults)
ruby-opengl
Ruby/SDL with TTF support ( http://www.kmc.gr.jp/~ohai/rubys... )

Tested to run on Linux and Windows,
should work on OS X too if you
get SDL_ttf installed.

Perceptibly faster on Linux than Windows (go figure.)


== Currently implemented widgets ==

* Horizontal and vertical layout
* Buttons, radio buttons, checkboxes
* Scrollbars
* Resizable scrollable container
* Image, strechable image
* Text labels, single-line text input
* Simple theme system


== Example code ==

require 'glimr'
include GlimR

form = VLayout.new(
:expand_height => true, :expand_width => true,
:align => :center, :valign => :middle)

label = Label.new(:text => "Enter your name:")
name_input = TextInput.new(:text => ""){|o,e|
form.attach Label.new(:text => "Hi, #{e.text}!")
}
submit = Button.new(:label => "OK"){|o,e|
name_input.submit
}
form.attach label, name_input, submit

window = GLUTWindow.new(400, 200, "Greeter")
window.attach form
window.run
# Ctrl-Q to quit


== Features in development ==

* menus, lists, tables
* multi-line text editor
* keyboard focus management
* clipboard integration
* second theme



P.S.
Anyone have ideas on what's causing segfaults on Windows
when using OpenGL and SDL? Now I'm using a GC.disabled
critical section to work around them.

--
Ilmari

2 Answers

netghost

7/16/2006 5:06:00 PM

0

This seems pretty neat, I snagged the gem and ran the little sample
form below. It seemed a little slugish to respond, but on the
otherhand it handles resizing and such well from what I could tell.

So yeah, neat :) Want to post some more examples?

Thanks for your project,
.adam

Ilmari Heikkinen wrote:
> == GlimR 0.1.0 - Ruby OpenGL GUI Widget Kit ==
>
> Homepage: http://glimr.ruby...
> Download: http://rubyforge.org/frs/?gro...
> Blog: http://glimr.blo...
>
> This is one of Ruby Central Inc.'s
> Google Summer of Code 2006 projects.
>
>
> == What is it? ==
>
> A GUI toolkit written in Ruby, using OpenGL for
> drawing and SDL for text and loading images.
>
> Intended for being embedded in other OpenGL
> applications and for stand-alone apps that don't
> need complex widgets.
>
> See the README in the tarball or at
> http://glimr.blo...2006/07/glimr-010.html
> for more.
>
> Take it for a spin if you like, there are small
> example programs focusing on different
> aspects of the toolkit in
> tests/integration_tests/
>
>
> == Requirements ==
>
> Ruby >= 1.8.1, tested to run on YARV (but encountered some segfaults)
> ruby-opengl
> Ruby/SDL with TTF support ( http://www.kmc.gr.jp/~ohai/rubys... )
>
> Tested to run on Linux and Windows,
> should work on OS X too if you
> get SDL_ttf installed.
>
> Perceptibly faster on Linux than Windows (go figure.)
>
>
> == Currently implemented widgets ==
>
> * Horizontal and vertical layout
> * Buttons, radio buttons, checkboxes
> * Scrollbars
> * Resizable scrollable container
> * Image, strechable image
> * Text labels, single-line text input
> * Simple theme system
>
>
> == Example code ==
>
> require 'glimr'
> include GlimR
>
> form = VLayout.new(
> :expand_height => true, :expand_width => true,
> :align => :center, :valign => :middle)
>
> label = Label.new(:text => "Enter your name:")
> name_input = TextInput.new(:text => ""){|o,e|
> form.attach Label.new(:text => "Hi, #{e.text}!")
> }
> submit = Button.new(:label => "OK"){|o,e|
> name_input.submit
> }
> form.attach label, name_input, submit
>
> window = GLUTWindow.new(400, 200, "Greeter")
> window.attach form
> window.run
> # Ctrl-Q to quit
>
>
> == Features in development ==
>
> * menus, lists, tables
> * multi-line text editor
> * keyboard focus management
> * clipboard integration
> * second theme
>
>
>
> P.S.
> Anyone have ideas on what's causing segfaults on Windows
> when using OpenGL and SDL? Now I'm using a GC.disabled
> critical section to work around them.
>
> --
> Ilmari

Ilmari Heikkinen

7/16/2006 11:35:00 PM

0

Hi,

On 7/16/06, Adam Sanderson <netghost@gmail.com> wrote:
> This seems pretty neat, I snagged the gem and ran the little sample
> form below. It seemed a little slugish to respond, but on the
> otherhand it handles resizing and such well from what I could tell.

Thanks for trying it out :)
Btw, what were the parts being sluggish? Text input? Everything?
Could you also tell what OS and hardware you ran it on?
I'll try to fix performance in a later release (after coding the main
features)

> So yeah, neat :) Want to post some more examples?

Sure!
Here's an image viewer (beware, if an image is larger
than max OpenGL texture size (usually 2048x2048 or more),
it won't show it):


files = Dir["*.*"].grep(/\.(jpg|png)$/i)
require 'glimr'
include GlimR

sc = ScrollableContainer.new(
:content => Image.load(files.first))

sc.container.on_click{|o,e|
case e.button
when :left
files.push files.shift
sc.content.load(files.first)
when :right
files.unshift files.pop
sc.content.load(files.first)
end
}

w = GLUTWindow.new
w.attach sc
w.run


That one had bad performance on Windows,
on Linux it's a lot smoother for some reason.

I put the integration_tests sample code online at
http://glimr.rubyforge.or...


> Thanks for your project,
> .adam

Cheers,
Ilmari