Primers passos [Vala + Gtk 3]: Hola Món !!

Anem a veure en aquest petit tutorial com fer els nostres primers passos amb Vala i GTK3. Comencem:

Instal·lant les eines necessàries

sudo apt-get install valac libgtk-3-dev

l'IDE:

Podem trobar gran varietat d'editors que podem utilitzar/configurar com a IDE. En són un exemple Raspi, SublimText, Geany … En el meu cas faré servir Scratch (el qual podem trobar a elementary us).

Raspi

Vegem el típic exemple de Hola Món!, el qual ens quedaria de la següent forma:

Captura de 2013 10:31:23

I el codi es veuria de la manera següent:

Captura de 2013 10:31:23

Ara vegem els detalls del codi. Tenim una classe la qual és una finestra Gtk.

# Inicialitzem Gtk amb arguments Gtk.init (ref args); # Creem l'aplicació. Application app = new Application(); # Posem l'aplicació al centre de la pantalla. app.window_position = Gtk.WindowPosition.CENTER; # En tancar destruïm l'app. app.destroy.connect (Gtk.main_quit); # Mesurem la finestra app.set_default_size (100, 50); # Creem un botó i connectem l'esdeveniment cliquejar el botó i imprimim una hola! var button = new Gtk.Button.with_label ("Saluta"); button.clicked.connect (() => { print("Hola!\n"); }); # Afegim el botó a l'app app.add(button); # Mostrem l'app/finestra app.show_all ();

Al clicar al button obtindrem com a sortida:

Captura de 2013 10:31:23

Compilem i executem:

$ valac -v lol.vala --pkg gtk+-3.0 $ ./lol

Ara us deixo alguns enllaços d'interès:

http://elementaryos.org/docs/code/the-basic-setup


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   pandev92 va dir

    El problema de no tenir una idea que dibuixi finestres, és que t'has de saber tots els mètodes de la classe per crear una finestra, quelcom primitiu, la veritat.

    1.    matisat va dir

      Si heu fet un bon treball en l'etapa de disseny no tindries raó per utilitzar un IDE a l'hora de programar.

      1.    pandev92 va dir

        No m'entendis, jo parlo de tenir un ide que t'ho faci el , les finestres, sense haver de tipejar codi en principi:

        http://imagebin.org/275532

        Això us estalvia saber quin és el mètode d'un botó, etc.

        1.    marianogaudix va dir

          Amb un IDE només estalvies temps …… Però si parlem de funcionalitat en fer servir un IDE o un TERMINAL a l'hora de compilar, tots dos compleixen les mateixes funcions.
          És qüestió de gustos i comoditat.

        2.    artus va dir

          Doncs tens Glade (https://glade.gnome.org/), és una eina RAD que et permet dissenyar ràpidament les finestres duna aplicació amb simples clics de ratolí.

          Un cop creada la interfície genera un fitxer en format xml que el pots invocar des de llenguatges de programació com C, C++, Python, Perl, Vala, Java, etc.

          Espero això respongui a la teva pregunta.

        3.    lolbimbo va dir

          Sí que hi ha ide que integra creador de finestres, Anjuta IDE.

  2.   Joan Pau va dir

    Hola Lolbimbo:
    Fa temps vaig decidir fer servir Vala com el meu llenguatge principar abans que D i Golang per x raons, però em trobo estancat en un problema, el codi que tinc compilava molt bé, però ara em surt el següent error:

    /media/…/vala/nn.vala.c: In function 'main':
    /media/…/vala/nn.vala.c:155:2: warning: 'g_type_init' és deprecated (declared at /usr/include/glib-2.0/gobject/gtype.h:669) [-Wdeprecated-declarations]
    g_type_init ();

    si és molta molèstia ho entendré, gràcies per endavant i felicitacions pel bloc.

    1.    lolbimbo va dir

      Hola amic, jo estic començant amb vala, però passa'm el codi que tens a la línia 155, de totes maneres és un warning no un error si et funciona no passa res ja que pot ser que sigui un bug de vala.

      1.    Joan Pau va dir

        Hola Lolimbo, celebro el teu entusiasme ja que em sentia solitari en vala, en realitat l'error me'l dóna en qualsevol codi tan simple com: using Gtk;

        int main (string[] args) {
        Gtk.init (ref args);

        var window = new Window();
        window.title = First GTK+ Program;
        window.border_width = 10;
        window.window_position = WindowPosition.CENTER;
        window.set_default_size (350, 70);
        window.destroy.connect (Gtk.main_quit);

        var button = new Button.with_label («Click me!»);
        button.clicked.connect (() => {
        button.label = Thank you;
        });
        proveu {
        // Either directly from a file …
        window.icon = new Gdk.Pixbuf.from_file («my-app.png»);
        // … or from the theme
        window.icon = IconTheme.get_default().load_icon ("my-app", 48, 0);
        } catch (Error e) {
        stderr.printf («Could not load application icon: %s\n», e.message);
        }
        window.add (button);
        window.show_all ();

        Gtk.main ();
        torna 0;
        }

        Però entre la feina amb Windows i la casa no em dono temps de caçar lerror, se'm fa que és problema de versions de vala, no sé.

        1.    lolbimbo va dir

          En actualitzar vala s'hauria de treure el warning.

  3.   uribes va dir

    El tutorial està ben explicat i m'agrada, però sempre m'he preguntat, perquè sempre iniciar amb el programa «hola món», per a principiants estaria bé, però que dels que ja tenen experiència programant? perquè no millor indicar com fer una interfície amb diversos elements (botons, labels, etc)?

    M'agrada la Vala i ho vull aprendre, però seria més constructiu començar una mica més «intermedi», no?

    1.    lolbimbo va dir

      Properament areu un altre post amb un nivell intermedi.

  4.   Juanra20 va dir

    Java?

    Bon tutorial ben explicat i tot de fet vas fer que considerés ficar a vala i gtk a la meva llista de coses per aprendre.

  5.   -ik- va dir

    Excel·lent, ara jo suggereixo un tutorial de Seed (javascript) + Gtk, seria força interessant, ja que aquesta és l'opció oficial que ha seleccionat el projecte Gnome.