¿Qué es Vala?
Código:
Vala es un nuevo lenguaje de programación que permite utilizar modernas técnicas de programación
para escribir aplicaciones que funcionan con las bibliotecas de tiempo de ejecución de GNOME,
particularmente GLib y GObject. Esta plataforma ha proporcionado durante mucho tiempo un
entorno de programación muy completo, con características como un sistema de tipado dinámico y
gestión asistida de memoria. Antes de crear Vala, la única manera de programar para la plataforma
era con la API nativa de C, que expone muchos detalles no deseados, con un lenguaje de alto nivel
que tiene una máquina virtual auxiliar, como Python o el lenguaje C# de Mono o, alternativamente,
con C++ a través de una biblioteca contenedora (wrapper)...
Instalando en las distintas plataformas
https://wiki.gnome.org/Projects/Vala/ValaPlatforms
Doc Inglés
https://wiki.gnome.org/Projects/Genie
Doc español
http://genie.webierta.skn1.com/Genie%20Doc
Ventanas
http://genie.webierta.skn1.com/wiki/gtk
Aún no he probado cross build, pero aqui la info como compilar para Window desde Linux
https://wiki.gnome.org/Projects/Vala/Win32CrossBuildSample
Ejemplo Genie
Código
// compila con valac --pkg gtk+-3.0 nombre_archivo.gs uses Gtk init new MyApplication( "test.application", ApplicationFlags.FLAGS_NONE ).run( args ) class MyApplication:Gtk.Application window: Gtk.ApplicationWindow icon: Gdk.Pixbuf construct( application_id:string, flags:ApplicationFlags ) if !id_is_valid( application_id ) error( "application id %s is not valid", application_id ) this.application_id = application_id this.flags = flags def override activate () var window = new Gtk.ApplicationWindow( this ) window.set_default_size (800, 600) window.window_position = WindowPosition.CENTER window.set_border_width(10) headerbar: Gtk.HeaderBar = new Gtk.HeaderBar() headerbar.show_close_button = true headerbar.title = "GENIE DOC" window.set_titlebar(headerbar) button: Gtk.Button = new Gtk.Button.with_label ("About") button.clicked.connect(acercade) headerbar.pack_end(button) stack: Gtk.Stack = new Gtk.Stack() stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT) var image1 = new Gtk.Image () image1.set_from_file ("genielogo2.png") stack.add_titled(image1, "label1", "GENIE") var image2 = new Gtk.Image () image2.set_from_file ("pythonlogo.png") stack.add_titled(image2, "label2", "PYTHON") stack_switcher: Gtk.StackSwitcher = new Gtk.StackSwitcher() stack_switcher.halign = Gtk.Align.CENTER stack_switcher.set_stack(stack) vbox: Gtk.Box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0) vbox.pack_start(stack_switcher, false, false, 0) vbox.pack_start(stack, false, false, 10) window.add(vbox) window.show_all () def acercade(button:Button) try icon = new Gdk.Pixbuf.from_file ("genie64.png") except e : GLib.Error stderr.printf ("Error: %s\n", e.message) authors: array of string = { "JESUS CUERDA", null } license: string = "CC Attribution 4.0 International" Gtk.show_about_dialog (window, "program-name", ("Wiki Genie Doc"), "logo", icon, "copyright", ("CC BY 4.0 2017 Wiki GENIE DOC"), "license", license, "authors", authors, "website", "http://genie.webierta.skn1.com", "website-label", ("Wiki Genie Doc"), null)
Saludos.