Sobre Genie [Python], Vala [C#]

Iniciado por Maurice_Lupin, 7 Marzo 2018, 19:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Maurice_Lupin

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
Código (python) [Seleccionar]

// 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.
Un error se comete al equivocarse.

Maurice_Lupin

Para no hacer doble post, agrego aquí

El Juego de la vida, Vala con SDL
https://pastebin.com/NmKQsKeh

Tutos en inglés:

Más sobre compilación desde Linux para Windows (Comprobado funciona)
http://www.tarnyko.net/en/?q=node/15

Y algo que me ha dejado  :xD
Vala, compilando para Android desde Linux
http://www.tarnyko.net/en/?q=node/25

Saludos.
Un error se comete al equivocarse.