# Hello World (Vala)

Susanna Huhtanen
ihmis.suski@gmail.com 2012
Tiffany Antopolski
tiffany.antopolski@gmail.com
Μια βασική εφαρμογή "hello, world"
Δημήτρης Σπίγγος
dmtrs32@gmail.com 2012, 2013

# Πώς να κατασκευάσετε, να εγκαταστήσετε και να δημιουργήσετε ένα tar.xz ενός προγράμματος Hello World

          Αυτό το μάθημα θα δείξει πώς να:

            δημιουργήσετε μια μικρή εφαρμογή "Hello, World" χρησιμοποιώντας GTK+
            κάνετε το αρχείο .desktop
            ρυθμίσετε το σύστημα δόμησης

# Δημιουργήστε το πρόγραμμα

## Δημιουργία του κύριου παραθύρου για την εφαρμογή

class MyApplication : Gtk.Application { protected override void activate () { var window = new Gtk.ApplicationWindow (this); window.set_title ("Welcome to GNOME"); window.set_default_size (200, 100); window.show_all (); } }

Η Gtk.Application αρχικοποιεί το GTK+. Επίσης συνδέει το κουμπί x που δημιουργείται αυτόματα μαζί με το παράθυρο στο σήμα "destroy".

Μπορούμε να αρχίσουμε να κατασκευάζουμε το πρώτο μας παράθυρο. Αυτό το κάνουμε δημιουργώντας μια μεταβλητή που λέγεται window και της αποδίδουμε ένα νέο Gtk.ApplicationWindow.

Δίνουμε στο παράθυρο έναν τίτλο χρησιμοποιώντας `set_title`. Ο τίτλος μπορεί να είναι οποιαδήποτε επιθυμητή συμβολοσειρά. Για να είσαστε ασφαλείς, είναι καλύτερο να επιλέξετε την κωδικοποίηση UTF-8.

Τώρα έχουμε ένα παράθυρο που έχει τίτλο και ένα λειτουργικό κουμπί "close". Ας προσθέσουμε το ενεργό κείμενο "Hello world".

## Ετικέτα για το παράθυρο

var label = new Gtk.Label ("Hello GNOME!"); window.add (label);

Τελικά, δημιουργούμε και εκτελούμε την εφαρμογή:

int main (string[] args) { return new MyApplication ().run (args); }

Το Gtk.Window μπορεί να κρατήσει μόνο ένα γραφικό συστατικό τη φορά. Για κατασκευή πιο περίπλοκων προγραμμάτων χρειαζόσαστε τη δημιουργία ενός χειριστή γραφικού συστατικού όπως Gtk.Grid μέσα στο παράθυρο και έπειτα να προσθέσετε όλα τα άλλα γραφικά συστατικά σε αυτό.

## hello-world.vala

Το πλήρες αρχείο:

public class MyApplication : Gtk.Application { protected override void activate () { var window = new Gtk.ApplicationWindow (this); var label = new Gtk.Label ("Hello GNOME!"); window.add (label); window.set_title ("Welcome to GNOME"); window.set_default_size (200, 100); window.show_all (); } }

public int main (string[] args) { return new MyApplication ().run (args); }

## Εκτελέστε την εφαρμογή από τερματικό

Για να τρέξετε αυτήν την εφαρμογή, πρώτα αποθηκεύστε την ως helloWorld.vala. Έπειτα ανοίξτε το τερματικό, πηγαίνετε στον φάκελο όπου η εφαρμογή σας αποθηκεύεται.

Μεταγλωττίστε το πρόγραμμα:

    valac --pkg gtk+-3.0 hello-world.vala

Εκτελέστε το πρόγραμμα:

    ./hello-world

# Το αρχείο .desktop.in

Τρέχοντας εφαρμογές από το τερματικό είναι χρήσιμο στην αρχή της διεργασίας κατασκευής της εφαρμογής. Για να έχετε μια πλήρως λειτουργική ολοκληρωμένη εφαρμογή στο GNOME 3 απαιτείται ένας εκκινητής επιφάνεια εργασίας. Για αυτό χρειάζεται να δημιουργήσετε ένα αρχείο .desktop. Το αρχείο .desktop περιγράφει το όνομα της εφαρμογής, το χρησιμοποιούμενο εικονίδιο και ποικίλα δυαδικά ολοκλήρωσης. Μια βαθύτερη ματιά στο αρχείο .desktop μπορεί να βρεθεί εδώ. Το αρχείο .desktop.in θα δημιουργήσει το .desktop.

Το παράδειγμα εμφανίζει τις ελάχιστες απαιτήσεις για ένα αρχείο`.desktop.in`.

[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=Hello World Comment=Say Hello Exec=@prefix@/bin/hello-world Icon=application-default-icon Terminal=false Type=Application StartupNotify=true Categories=GNOME·GTK·Utility·

Τώρα, ας εξετάσουμε μερικά μέρη του αρχείου `.desktop.in`.

## Όνομα

Το όνομα της εφαρμογής.

## Σχόλιο

Μια σύντομη περιγραφή της εφαρμογής.

## Exec

Ορίζει μια εντολή για εκτέλεση όταν επιλέξετε την εφαρμογή από το μενού. Σε αυτό το παράδειγμα το exec απλά λέει πού να βρείτε το αρχείο hello-world και το αρχείο φροντίζει για τα υπόλοιπα.

## Τερματικός

Ορίζει εάν η εντολή στο κλειδί Exec τρέχει σε ένα παράθυρο τερματικού.

Για να βάλετε την εφαρμογή σας στη σωστή κατηγορία χρειάζεται να προσθέσετε τις απαραίτητες κατηγορίες στη γραμμή κατηγοριών. Περισσότερες πληροφορίες για τις διαφορετικές κατηγορίες μπορούν να βρεθούν στο προδιαγραφές μενού.

Σε αυτό το παράδειγμα χρησιμοποιήσαμε ένα υπάρχον εικονίδιο. Για ένα προσαρμοσμένο εικονίδιο χρειάζεται να έχετε ένα αρχείο .svg του εικονιδίου σας, αποθηκευμένο στο /usr/share/icons/hicolor/scalable/apps. Γράψτε το όνομα του αρχείου του εικονιδίου σας στο αρχείο .desktop.in, στη γραμμή 7. Περισσότερες πληροφορίες για εικονίδια στο: Εγκατάσταση εικονιδίων για θέματα, και on freedesktop.org: Specifications/icon-theme-spec.

# Το σύστημα δόμησης

Για να κάνετε την εφαρμογή σας πραγματικά τμήμα του συστήματος GNOME 3 χρειαζόσαστε την εγκατάσταση του με τη βοήθεια των autotools. Η κατασκευή των autotools θα εγκαταστήσει όλα τα απαραίτητα αρχεία σε όλες τις σωστές θέσεις.

Για αυτό χρειαζόσαστε να έχετε τα παρακάτω αρχεία:

## autogen.sh

#!/bin/sh

set -e

test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=.

olddir=`pwd` cd "$srcdir"

# Αυτό θα εκτελέσει autoconf, automake, κλπ. για μας autoreconf --force --install

cd "$olddir"

if test -z "$NOCONFIGURE"; then "$srcdir"/configure "$@" fi

Αφού το αρχείο autogen.sh είναι έτοιμο και αποθηκευμένο, εκτελέστε:

    $ chmod +x autogen.sh

## Makefile.am

# Το ενεργό εκτελέσιμο πρόγραμμα ορίζεται στα θεμελιακά SCRIPTS. # # Το πρόθεμα bin_ λέει πού να το αντιγράψετε αυτό bin_PROGRAMS = hello-world hello_world_CFLAGS = $(gtk_CFLAGS) hello_world_LDADD = $(gtk_LIBS) hello_world_VALAFLAGS = --pkg gtk+-3.0 hello_world_SOURCES = hello-world.vala

desktopdir = $(datadir)/applications desktop_DATA = \ hello-world.desktop

## configure.ac

# Αυτό το αρχείο επεξεργάζεται από autoconf για τη δημιουργία ενός σεναρίου ρυθμίσεων AC_INIT([Hello World], 1.0) AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip]) AC_PROG_CC AM_PROG_VALAC([0.16]) PKG_CHECK_MODULES(gtk, gtk+-3.0) AC_CONFIG_FILES([Makefile hello-world.desktop])

AC_OUTPUT

## README

Οι πληροφορίες χρηστών πρέπει να διαβαστούν πρώτα. Αυτό το αρχείο μπορεί να είναι κενό.

Όταν έχετε τα αρχεία hello-world.c, hello-world.desktop.in, Makefile.am, configure.ac και autogen.sh με σωστές πληροφορίες και δικαιώματα, το αρχείο README μπορεί να συμπεριλάβει τις ακόλουθες οδηγίες:

Για να κατασκευάσετε και να εγκαταστήσετε αυτό το πρόγραμμα:

./autogen.sh --prefix=/home/your_username/.local make make install

------------- Η εκτέλεση της πρώτης παραπάνω γραμμής δημιουργεί τα παρακάτω αρχεία:

aclocal.m4 autom4te.cache config.log config.status configure depcomp hello-world hello-world.c hello-world.desktop hello_world-hello-world.o hello_world_vala.stamp install-sh missing Makefile.in Makefile

Η εκτέλεση του "make" συνδέει όλες τις κατάλληλες βιβλιοθήκες.

Η εκτέλεση "make install", εγκαθιστά την εφαρμογή στο /home/your_username/.local/bin και εγκαθιστά το αρχείο hello-world.desktop στο /home/your_username/.local/share/applications

Μπορείτε τώρα να εκτελέσετε την εφαρμογή πληκτρολογώντας "Hello World" στην επισκόπηση.

---------------- Για απεγκατάσταση, πληκτρολογήστε:

make uninstall

---------------- Για δημιουργία τύπου tarball πληκτρολογήστε:

make distcheck

Αυτό θα δημιουργήσει hello-world-1.0.tar.xz