Recién me topé con Vala que es un C disfrazado de C# , ahora aprendo otro de sus dialectos quizá muchos están enterados pero en el foro no he visto comentarios. Genie es un dialecto de Vala similar a Python. El compilador Valac lo convierte a C :xD
¿Qué es Vala?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)...
https://wiki.gnome.org/Projects/Vala/Tutorial/es
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
// 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)
(http://genie.webierta.skn1.com/_media/wiki/appgtk.png)
Saludos.