GObject Introspection and Node.js
Unfortunately I will not make it to GUADEC this year. However, here is something new for GNOME developers:
I wrote last year how GObject Introspection was coming to Node.js. Back then the API was still quite bad, and it was limited in what you could do with it. Since then things have moved forward quite a bit, and today Piotras released version 0.1.0 of node-gir.
There are still some things to be done, especially with stability, but with node-gir Node.js essentially becomes a fully qualified GNOME development environment.
For example, here is a CoffeeScript port of the GNOME Guitar Tuner example. Still a bit crashy, but at least it shows how the node-gir API works:
#!/usr/bin/env coffee # Guitar Tuner # ------------ # # This is a CoffeeScript and node-gir port of GNOME's guitar tuner example from # <http://developer.gnome.org/gnome-devel-demos/unstable/guitar-tuner.js.html.en> gir = require 'gir' gtk = gir.load 'Gtk', '3.0' gst = gir.load 'Gst', '0.10' gtk.init 0 gst.init 0 guitarwindow = new gtk.Window type: gtk.WindowType.toplevel title: "Node.js Guitar Tuner" guitarwindow.on 'destroy', -> gtk.mainQuit() process.exit() guitar_box = new gtk.ButtonBox playSound = (frequency) -> console.log frequency pipeline = new gst.Pipeline name: 'note' source = new gst.ElementFactory.make "audiotestsrc", "source" sink = new gst.ElementFactory.make "autoaudiosink", "output" source.set_property "freq", frequency pipeline.add source pipeline.add sink source.link sink pipeline.set_state gst.State.PLAYING addButton = (tune, freq) -> button = new gtk.Button label: tune guitar_box.add button button.on 'clicked', -> playSound freq tunes = E: 369.23 A: 440 D: 587.33 G: 783.99 B: 987.77 e: 1318.5 addButton tune, freq for tune, freq of tunes guitarwindow.add guitar_box guitar_box.show_all() guitarwindow.show() gtk.main()
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)