Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Maurice_Lupin en 7 Marzo 2018, 19:02 pm



Título: Sobre Genie [Python], Vala [C#]
Publicado por: Maurice_Lupin en 7 Marzo 2018, 19:02 pm
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?
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)...
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
  1. // compila con valac --pkg gtk+-3.0 nombre_archivo.gs
  2.  
  3. uses Gtk
  4.  
  5. init
  6. new MyApplication( "test.application",
  7. ApplicationFlags.FLAGS_NONE
  8. ).run( args )
  9.  
  10. class MyApplication:Gtk.Application
  11.  
  12. window: Gtk.ApplicationWindow
  13. icon: Gdk.Pixbuf
  14.  
  15. construct( application_id:string, flags:ApplicationFlags )
  16. if !id_is_valid( application_id )
  17. error( "application id %s is not valid", application_id )
  18. this.application_id = application_id
  19. this.flags = flags
  20.  
  21. def override activate ()
  22.  
  23. var window = new Gtk.ApplicationWindow( this )
  24. window.set_default_size (800, 600)
  25. window.window_position = WindowPosition.CENTER
  26. window.set_border_width(10)
  27.  
  28. headerbar: Gtk.HeaderBar = new Gtk.HeaderBar()
  29. headerbar.show_close_button = true
  30. headerbar.title = "GENIE DOC"
  31. window.set_titlebar(headerbar)
  32.  
  33. button: Gtk.Button = new Gtk.Button.with_label ("About")
  34. button.clicked.connect(acercade)
  35. headerbar.pack_end(button)
  36.  
  37. stack: Gtk.Stack = new Gtk.Stack()
  38. stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT)
  39.  
  40. var image1 = new Gtk.Image ()
  41. image1.set_from_file ("genielogo2.png")
  42. stack.add_titled(image1, "label1", "GENIE")
  43.  
  44. var image2 = new Gtk.Image ()
  45. image2.set_from_file ("pythonlogo.png")
  46. stack.add_titled(image2, "label2", "PYTHON")
  47.  
  48. stack_switcher: Gtk.StackSwitcher = new Gtk.StackSwitcher()
  49. stack_switcher.halign = Gtk.Align.CENTER
  50. stack_switcher.set_stack(stack)
  51.  
  52. vbox: Gtk.Box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0)
  53. vbox.pack_start(stack_switcher, false, false, 0)
  54. vbox.pack_start(stack, false, false, 10)
  55.  
  56. window.add(vbox)
  57. window.show_all ()
  58.  
  59. def acercade(button:Button)
  60.  
  61. try
  62. icon = new Gdk.Pixbuf.from_file ("genie64.png")
  63. except e : GLib.Error
  64. stderr.printf ("Error: %s\n", e.message)
  65. authors: array of string = { "JESUS CUERDA", null }
  66. license: string = "CC Attribution 4.0 International"
  67. Gtk.show_about_dialog (window,
  68. "program-name", ("Wiki Genie Doc"),
  69. "logo", icon,
  70. "copyright", ("CC BY 4.0 2017 Wiki GENIE DOC"),
  71. "license", license,
  72. "authors", authors,
  73. "website", "http://genie.webierta.skn1.com",
  74. "website-label", ("Wiki Genie Doc"),
  75. null)
  76.  
(http://genie.webierta.skn1.com/_media/wiki/appgtk.png)
Saludos.


Título: Re: Sobre Genie [Python], Vala [C#]
Publicado por: Maurice_Lupin en 10 Abril 2018, 16:56 pm
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.