# Hello World (Vala)

Susanna Huhtanen
ihmis.suski@gmail.com 2012
Tiffany Antopolski
tiffany.antopolski@gmail.com
Základní aplikace „Hello, world“

# Jak sestavit a nainstalovat program „Hello World“ a jak pro něj vytvořit balíček tar.xz

          Tato lekce ukazuje jak:

            vytvořit malou aplikaci „Hello, World“ pomocí GTK+
            vytvořit soubor .desktop
            nastavit sestavovací systém

# Vytvoření programu

## Vytvoření hlavního okna pro aplikaci

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 (); } }

`Gt.Application` inicializuje GTK+. Rovněž napojí tlačítko ×, které je vytvořeno automaticky spolu s oknem, na signál `"destroy"`.

Můžeme začít sestavovat naše první okno. Provedeme to vytvořením proměnné s názvem window, které přiřadíme `new Gtk.ApplicationWindow`.

Oknu přidělíme název pomocí `set_title`. Název může být libovolný řetězec, jaký se vám hodí. Je však dobrou praxí, aby byl v kódování UTF-8.

Nyní máme okno, která má název a funkční „zavírací“ tlačítko. Pojďme přidat pořádný text „Hello World“.

## Popisek pro okno

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

Nakonec vytvoříme a spustíme aplikaci:

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

Gtk.Application může v jednu chvíli obsahovat jen jeden widget. Pokud chcete sestrojit složitější program, budete uvnitř okna potřebovat vytvořit kontejnerový widget, jako je `Gtk.Grid`, a všechny ostatní widgety přidat do něj.

## hello-world.vala

Celý soubor:

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); }

## Spuštění aplikace z terminálu

Když chcete tuto aplikaci spustit, nejprve ji uložte jako hello-world.vala. Pak otevřete terminál a přejděte do složky, kde je aplikace uložená.

Zkompilujte program:

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

Spusťte program:

    ./hello-world

# Soubor .desktop.in

Spouštění aplikace z terminálu je užitečné na začátku při postupném vytváření aplikace. Abychom dostali plně funkční aplikaci integrovanou s GNOME 3, potřebujeme spouštěč do pracovního prostředí. K tomu musíte vytvořit soubor .desktop. Soubor .desktop popisuje název aplikace, použitou ikonu a různé integrační drobnosti. Hlubší rozebrání souboru .desktop můžete najít zde. Ze souboru .desktop.in se vytvoří soubor .desktop.

Příklad ukazuje minimální požadavky pro soubor `.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;

Nyní se pojďme podívat na některé části souboru `.desktop.in`.

## Name

Název aplikace.

## Comment

Krátký popis aplikace.

## Exec

Určuje příkaz, který se má spustit, když aplikaci vyberete v nabídce. V tomto příkladu Exec jednoduše říká, kde najít soubor hello-world a tento soubor se už postará o zbytek.

## Terminal

Určuje, jestli příkaz v klíči Exec běží v terminálu.

Abyste vaši aplikaci umístili do správné kategorie, musíte potřebné kategorie přidat na řádek `Categories`. Více informací o různých kategoriích můžete najít ve specifikaci nabídky.

V tomto příkladu používáme existující ikonu. Pro vlastní ikonu potřebujete mít soubor SVG se svojí ikonou uložený v /usr/share/icons/hicolor/scalable/apps. Napište název svého souboru s ikonou do souboru .desktop.in na řádek 7. Více informací o ikonách: Instalace ikon pro motivy a Specifikace/icon-theme-spec na freedesktop.org.

# Sestavovací systém

Aby se vaše aplikace stala opravdu součástí systému GNOME 3, je potřeba ji nainstalovat za pomoci autotools. Autotools nainstaluje všechny nutné soubory na správná místa.

K tomu budete potřebovat následující soubory:

## autogen.sh

#!/bin/sh

set -e

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

olddir=`pwd` cd "$srcdir"

# Toto nám spustí autoconf, automake, atd. autoreconf --force --install

cd "$olddir"

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

Když máme soubor autogen.sh připravený a uložený, spusťte:

    $ chmod +x autogen.sh

## Makefile.am

# Skutečný spustitelný program je nastaven do primitiva SCRIPTS # # Prefix bin_ říká, kam to nakopírovat 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

# Tento soubor je zpracován pomocí autoconf, aby vytvořil skript configure 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

Informace, které by si měl uživatel pro začátek přečíst. Tento soubor může být prázdný.

Když máme soubory hello-world.c, hello-world.desktop.in, Makefile.am, configure.ac a autogen.sh se správnými informacemi a v pořádku, může soubor README obsahovat následující instrukce:

To build and install this program:

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

------------- Running the first line above creates the following files:

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

Running "make" links all the appropriate libraries.

Running "make install", installs the application in /home/your_username/.local/bin and installs the hello-world.desktop file in /home/your_username/.local/share/applications

You can now run the application by typing "Hello World" in the Overview.

---------------- To uninstall, type:

make uninstall

---------------- To create a tarball type:

make distcheck

This will create hello-world-1.0.tar.xz