From: "Michael C. Libby" Date: 2003-11-01T00:15:47+09:00 Subject: Re: [Q] Ruby and XUL? On Wednesday 29 October 2003 02:56, Pablo Lorenzzoni wrote: > Em Qua, 29 Out 2003, Daniel Carrera escreveu: > | I was just wondering what it would take to be able to use Ruby for the > | programming logic. I guess that one way is to convince the Mozilla > | project to ship Ruby with Mozilla. But I wouldn't count on that. > (1) Either we want Mozilla to use Ruby to draw their GUI - and I think > they'd never do that since JavaScript is the "de facto" language for > client-side applications Fascinating discussion. Sorry I'm joining a little late, but I've actually been working on a project along these lines and hadn't even noticed this thread until today. That project is totally unprepared for public review at this time, so what better time to put out a 0.01 release? See http://www.andsoforth.com/ruby/index.html and look for the "Artemis" project. (Please note: extremely rough, incomplete code!) Right now the XML I'm using mostly describes the menubar, menus, and menu items. Also note that I actually use a two step approach that turns the XML into some Ruby hashes. The GUI is actually drawn using information from the hashes. Probably a sub-optimal solution. When I originally started my goal was to avoid writing GUI code by hand, and I just stored my menu info in Ruby structures. So there may be a refactoring that's needed. > (2) Or we want to use XUL's scheme in our Ruby programs - which can be > more interesting... writing our GUIs using XML is, surely, much easier > than the traditional method. The problem is that Ruby doesn't have a > "standard" Graphical Toolkit... I agree that this is far more interesting than trying to render XUL in a Gecko object and linking back to Ruby scripting. Ruby does have a standard GUI toolkit, I think: Tk. For better or worse it has been included in the stable tarball for at least a couple of years. It has been in the Windows Installer from the PP also as long as I can recall. When you install Ruby from source, if it finds a suitable Tk library on your system it will build Tk support by default. However, Tk is hardly the best toolkit available. I don't know what you or anyone else think that would be. For my own purposes, I prefer GTK2 at this point. The core libraries are all coded in C and Masao Mutoh and the other Ruby-GNOME2 hackers have done an impressive job of getting Ruby bindings and the all-important API documentation going. > So, "our XUL" either have to be bound to > some existing Toolkit and act as "yet another layer" for the GUI > programming, or (which I think is more interesting) act as an agnostic > layer, working with just any Toolkit. I will be researching XUL today and for the next few days I guess (no need for me to reinvent this wheel a third or fourth time). The GNOME project already has a complete XML solution that is very similar provided by libglade (as has been noted). Problem is that to get libglade XML you really want to use GLADE, which is not really set up to support a Ruby program (except for generating the GUI description in XML). But that's not really a big deal. What I find less exciting about GLADE/libglade is that the XML is big and ugly compared to the amount of information contained therein (for instance, Mutoh's simple editor example at ruby-GNOME2: the XML for his GUI is 824 lines long, but only describes one small application with three menus, ~20 menu items, one toolbar, a text buffer, and a status bar-- his Ruby script to support the GUI is only 279 lines long and includes some very nice undo/redo and find/replace functionality). I want an XML/GUI language that I can read and write without a tool like GLADE. I certainly don't want to wade through 800+ lines of XML to edit a very small application. And maybe I'm just too impatient with libglade. XML is easy in Ruby now that you have REXML installed by default-- and making a GUI from an XML description is the perfect use of the pull processor, imho. > | But over-all, I think I like the idea of using XML for the GUI > | structure and a programming language for the behaviour. This strikes > | me as a good combination (but then again, I am not a very experienced > | programmer). I'm not a very experienced programmer either, but it would seem that some very experienced programmers agree with this idea of using XML to describe a GUI. The XUL project, XAML, and libglade all take that approach. > The idea is not new. I think Glade, for the Gtk, can save it's > structures in an XML format to be loaded inside the program. If we could > imagine an "agnostic" Glade that outputs XML in the XUL format, and make > it work with any toolkit Ruby support... that sounds as a good idea. Personally I think you'd have a lot of work to do (and programming in C, no less) to get GLADE to support a different widget set than what is has for GNOME. But don't let that stop you! :) But GLADE is just one piece. The XML is theoretically independent of the tool. XUL looks easy enough to write by hand. And no one has mentioned it yet, but why not write the GUI description document(s) in YAML? :) (for the record I tried YAML->GTK2 with Artemis, but found YAML more difficult than XML for this-- probably my lack of experience with YAML is to blame) -michael ________________________________________________ Michael C. Libby m_libby@andsoforth.com see my photos and Ruby programs at: www.andsoforth.com