CSC/ECE 517 Fall 2013/ch1 1w17 pk

From Expertiza_Wiki
Revision as of 16:18, 17 September 2013 by Kjshah (talk | contribs) (GUI programming using FxRuby/wxRuby/Shoes)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

GUI programming tools for Ruby are a set of widgets used for designing RUBY applications with graphical user interfaces (GUIs). Each widget facilitates a specific user-computer interaction, and appears as a visible part of the computer's GUI. Widget toolkits can be either native or cross platform. Ruby GUI toolkits are typically 3rd party GUI platforms that are wrapped by a Ruby driver. Ruby bindings are available for several widget toolkits. Commonly used tools are described below.


Shoes

Shoes is the best little DSL for cross-platform GUI programming in RUBY. This GUI toolkit feels like real Ruby, rather than just another C++ library wrapper. It was originally written by a guy named _why, and is now maintained by others. Currently, it is the most widely used GUI toolkit for RUBY.

Versions

Version Name Release
Version1 Curious _why release
Version2 Raisins _why release
Version3 Policeman Post_why release

Version 3 is the current stable release. It was released on August 19, 2013; 3 years ago.

Advantages

  • Simplicity- It is designed to make applications as easy as possible.
  • It has control at a lower level
  • Makes GUI development fun.
  • Simple Interface
  • Very good graphics

Cool Features

  • The unique thing about Shoes is that it gives very few controls, but one can build a wide range of different pages that are immediately accessible.
  • To save a bit of work, Shoes relies on a few libraries:
    • Cairo – for drawing
    • Pango – for text
    • Ruby – for programming

Disadvantages

  • It tries to support many platforms. Hence, it is a bit rough at the edges.
  • Current version is a place holder until Shoes is properly gemified.
  • Many common robust widgets are not available


Shoes 4

The upcoming version of shoes is Shoes 4. Due to various issues like compilation/release and stability with the current shoes implementation, development moved on to shoes4. Shoes4 is a complete all Ruby rewrite of shoes, using the Ruby bindings to the windowing libraries, rather than the C ones. It's goal is to be as close to 100% backwards compatible as it can get.


FxRuby

FxRuby is a toolkit for developing powerful and sophisticated cross-platform graphical user interfaces (GUIs) for RUBY applications. It is based on the FOX Toolkit, a popular open source C++ library developed by Jeroen van der Zijp. FXRuby has the advantages of both Ruby and C++. An application developer can write the code in ruby programming language which is dynamic, reflective and object-oriented while simultaneously take advantage of the performance and functionality of the highly optimized C++ toolkit.


Advantages

  • FXRuby supports everything of FOX, that is useful in Ruby:
  1. MDI/SDI application window layouts
  2. Floating toolbars
  3. Rich set of controls (tables, imagelists, menus, canvas, …)
  4. Flexible layout management
  5. Image read/write support in many formats
  6. Embedded OpenGL graphics
  • Relatively flat learning curve- very consistent naming, widget creation parameters, and so on.
  • It is not a wrapper around some other toolkit. Hence, one can actually override the way a widget works by sub classing and re-implementing behavior and how it is drawn.
  • Consistent vision- It is written with a consistent vision of how things should fit together.


Disadvantages

  • Missing support for some kind of RichText (which Qt and GTK+ today provide)
  • Internationalization and Localization are still being worked on.
  • Non-native look and feel. It looks like Windows XP even on a Mac or in Windows 7
  • Binary gems are available for Windows, OS X, and Ubuntu Linux but for other platforms, installing the gem requires you to compile native code.


QtRuby

QtRuby is a binding of the application framework Qt for the programming language Ruby. Since the underlying technologies Ruby, Qt, and KDE are cross-platform, so is QtRuby.

Advantages

  • It supports Linux and other flavors of Unix, as well as Mac OS X and Microsoft Windows.
  • The main advantage to Qt is that it has exactly the same look on Windows and OSX. This is not true for FXRuby nor Gtk2.

Disadvantages

  • While a gem is available for the Windows installation, only source code is available for other platforms.

wxRuby

wxRuby is a binding for the cross-platform wxWidgets C++ GUI toolkit, which lets you create native-looking desktop applications. It is available for installation as a gem.

Advantages

  • Cross platform
  • Large support community
  • Excellent support for all major platforms

Disadvantages

  • The API is very C++-oriented
  • It has no documentation aside from auto-generated class and function list.


GTK+

Ruby/GTK is an extension library to use GTK+ in Ruby. There are many applications using GTK+. Especially, Desktop Environment GNOME adopt GTK+ as interface.

Advantages

The API bindings provided by Ruby-GNOME2 are excellent as well, and mostly do things in the Ruby Way. The Ruby-GNOME2 project also provides excellent documentation and tutorials.

Disadvantages

  • Windows support isn’t bad, and even uses native widgets in many places under Windows XP, but it requires a hefty set of runtime libraries.
  • Unix support is excellent with the sad exception of Mac OS X. It’s possible to run GTK+ apps in OS X using the X Windowing System, but this means the app looks inconsistent and ugly compared to the rest of the OS X interface.

References

  1. http://en.wikibooks.org/wiki/Ruby_Programming/GUI_Toolkit_Modules
  2. http://wonko.com/post/a_brief_comparison_of_cross-platform_gui_toolkits_from_rubys_per
  3. http://en.wikipedia.org/wiki/QtRuby
  4. http://en.wikipedia.org/wiki/Shoes_(GUI_toolkit)
  5. http://rubydoc.info/gems/shoes/frames
  6. http://www.fxruby.org/