Blame platform-demos/cs/hello-world.vala.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="hello-world.vala" xml:lang="cs">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Hello World (Vala)</title>
Packit 1470ea
    <link type="guide" xref="beginner.vala#tutorials" group="#first"/>
Packit 1470ea
Packit 1470ea
    <revision version="0.1" date="2013-06-17" status="review"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Susanna Huhtanen</name>
Packit 1470ea
      <email its:translate="no">ihmis.suski@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
    <credit type="editor">
Packit 1470ea
      <name>Tiffany Antopolski</name>
Packit 1470ea
      <email its:translate="no">tiffany.antopolski@gmail.com</email>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Základní aplikace „Hello, world“</desc>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Jak sestavit a nainstalovat program „Hello World“ a jak pro něj vytvořit balíček <file>tar.xz</file></title>
Packit 1470ea
    <media type="image" mime="image/png" style="floatend" src="media/hello-world.png"/>
Packit 1470ea
    <synopsis>
Packit 1470ea
      

Tato lekce ukazuje jak:

Packit 1470ea
      <list style="numbered">
Packit 1470ea
        <item>

vytvořit malou aplikaci „Hello, World“ pomocí GTK+

</item>
Packit 1470ea
        <item>

vytvořit soubor <file>.desktop</file>

</item>
Packit 1470ea
        <item>

nastavit sestavovací systém

</item>
Packit 1470ea
      </list>
Packit 1470ea
    </synopsis>
Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="hello-world"><title>Vytvoření programu</title>
Packit 1470ea
Packit 1470ea
    <links type="section"/>
Packit 1470ea
Packit 1470ea
    <section id="application"><title>Vytvoření hlavního okna pro aplikaci</title>
Packit 1470ea
      class MyApplication : Gtk.Application {
Packit 1470ea
        protected override void activate () {
Packit 1470ea
                var window = new Gtk.ApplicationWindow (this);
Packit 1470ea
                window.set_title ("Welcome to GNOME");
Packit 1470ea
                window.set_default_size (200, 100);
Packit 1470ea
                window.show_all ();
Packit 1470ea
        }
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
    

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

Packit 1470ea
    

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.

Packit 1470ea
    

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.

Packit 1470ea
    

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

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="label"><title>Popisek pro okno</title>
Packit 1470ea
      var label = new Gtk.Label ("Hello GNOME!");
Packit 1470ea
                window.add (label);
Packit 1470ea
Packit 1470ea
Packit 1470ea
      

Nakonec vytvoříme a spustíme aplikaci:

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

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.

Packit 1470ea
   </section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
    <section id="vala"><title>hello-world.vala</title>
Packit 1470ea
      

Celý soubor:

Packit 1470ea
      public class MyApplication : Gtk.Application {
Packit 1470ea
	protected override void activate () {
Packit 1470ea
		var window = new Gtk.ApplicationWindow (this);
Packit 1470ea
		var label = new Gtk.Label ("Hello GNOME!");
Packit 1470ea
		window.add (label);
Packit 1470ea
		window.set_title ("Welcome to GNOME");
Packit 1470ea
		window.set_default_size (200, 100);
Packit 1470ea
		window.show_all ();
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
public int main (string[] args) {
Packit 1470ea
	return new MyApplication ().run (args);
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="terminal"><title>Spuštění aplikace z terminálu</title>
Packit 1470ea
      

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

Packit 1470ea
      

Zkompilujte program:

Packit 1470ea
           <screen>valac --pkg gtk+-3.0 <file>hello-world.vala</file></screen>
Packit 1470ea
      

Spusťte program:

Packit 1470ea
           <screen>./hello-world</screen>
Packit 1470ea
    </section>
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="desktop.in"><title>Soubor <file>.desktop.in</file></title>
Packit 1470ea
      

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í <link href="https://developer.gnome.org/integration-guide/stable/mime.html.cs">aplikaci integrovanou</link> s GNOME 3, potřebujeme spouštěč do pracovního prostředí. K tomu musíte vytvořit soubor <file>.desktop</file>. Soubor <file>.desktop</file> popisuje název aplikace, použitou ikonu a různé integrační drobnosti. Hlubší rozebrání souboru <file>.desktop</file> můžete najít <link href="http://developer.gnome.org/desktop-entry-spec/">zde</link>. Ze souboru <file>.desktop.in</file> se vytvoří soubor <file>.desktop</file>.

Packit 1470ea
Packit 1470ea
    

Příklad ukazuje minimální požadavky pro soubor .desktop.in.

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

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

Packit 1470ea
    <terms>
Packit 1470ea
      <item><title>Name</title>

Název aplikace.

</item>
Packit 1470ea
      <item><title>Comment</title>

Krátký popis aplikace.

</item>
Packit 1470ea
      <item><title>Exec</title>

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 <file>hello-world</file> a tento soubor se už postará o zbytek.

</item>
Packit 1470ea
      <item><title>Terminal</title>

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

</item>
Packit 1470ea
    </terms>
Packit 1470ea
Packit 1470ea
    

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 <link href="http://standards.freedesktop.org/menu-spec/latest/apa.html">specifikaci nabídky</link>.

Packit 1470ea
    

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 <file>/usr/share/icons/hicolor/scalable/apps</file>. Napište název svého souboru s ikonou do souboru .desktop.in na řádek 7. Více informací o ikonách: <link href="https://live.gnome.org/GnomeGoals/AppIcon">Instalace ikon pro motivy</link> a <link href="http://freedesktop.org/wiki/Specifications/icon-theme-spec">Specifikace/icon-theme-spec na freedesktop.org</link>.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="autotools"><title>Sestavovací systém</title>
Packit 1470ea
    

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.

Packit 1470ea
    

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

Packit 1470ea
    <links type="section"/>
Packit 1470ea
Packit 1470ea
      <section id="autogen"><title>autogen.sh</title>
Packit 1470ea
        #!/bin/sh
Packit 1470ea
Packit 1470ea
set -e
Packit 1470ea
Packit 1470ea
test -n "$srcdir" || srcdir=`dirname "$0"`
Packit 1470ea
test -n "$srcdir" || srcdir=.
Packit 1470ea
Packit 1470ea
olddir=`pwd`
Packit 1470ea
cd "$srcdir"
Packit 1470ea
Packit 1470ea
# Toto nám spustí autoconf, automake, atd.
Packit 1470ea
autoreconf --force --install
Packit 1470ea
Packit 1470ea
cd "$olddir"
Packit 1470ea
Packit 1470ea
if test -z "$NOCONFIGURE"; then
Packit 1470ea
  "$srcdir"/configure "$@"
Packit 1470ea
fi
Packit 1470ea
Packit 1470ea
Packit 1470ea
      

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

Packit 1470ea
      <screen><output style="prompt">$ </output><input>chmod +x autogen.sh</input></screen>
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
    <section id="makefile"><title>Makefile.am</title>
Packit 1470ea
      # Skutečný spustitelný program je nastaven do primitiva SCRIPTS
Packit 1470ea
# # Prefix bin_ říká, kam to nakopírovat
Packit 1470ea
bin_PROGRAMS = hello-world
Packit 1470ea
hello_world_CFLAGS = $(gtk_CFLAGS)
Packit 1470ea
hello_world_LDADD = $(gtk_LIBS)
Packit 1470ea
hello_world_VALAFLAGS = --pkg gtk+-3.0
Packit 1470ea
hello_world_SOURCES = hello-world.vala
Packit 1470ea
Packit 1470ea
desktopdir = $(datadir)/applications
Packit 1470ea
desktop_DATA = \
Packit 1470ea
	hello-world.desktop
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
    <section id="configure"><title>configure.ac</title>
Packit 1470ea
      # Tento soubor je zpracován pomocí autoconf, aby vytvořil skript configure
Packit 1470ea
AC_INIT([Hello World], 1.0)
Packit 1470ea
AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])
Packit 1470ea
AC_PROG_CC
Packit 1470ea
AM_PROG_VALAC([0.16])
Packit 1470ea
PKG_CHECK_MODULES(gtk, gtk+-3.0)
Packit 1470ea
AC_CONFIG_FILES([Makefile hello-world.desktop])
Packit 1470ea
Packit 1470ea
AC_OUTPUT
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
    <section id="readme"><title>README</title>
Packit 1470ea
       

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

Packit 1470ea
Packit 1470ea
       

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

Packit 1470ea
      To build and install this program:
Packit 1470ea
Packit 1470ea
./autogen.sh --prefix=/home/your_username/.local
Packit 1470ea
make
Packit 1470ea
make install
Packit 1470ea
Packit 1470ea
-------------
Packit 1470ea
Running the first line above creates the following files:
Packit 1470ea
Packit 1470ea
aclocal.m4
Packit 1470ea
autom4te.cache
Packit 1470ea
config.log
Packit 1470ea
config.status
Packit 1470ea
configure
Packit 1470ea
depcomp
Packit 1470ea
hello-world
Packit 1470ea
hello-world.c
Packit 1470ea
hello-world.desktop
Packit 1470ea
hello_world-hello-world.o
Packit 1470ea
hello_world_vala.stamp
Packit 1470ea
install-sh
Packit 1470ea
missing
Packit 1470ea
Makefile.in
Packit 1470ea
Makefile
Packit 1470ea
Packit 1470ea
Running "make" links all the appropriate libraries.
Packit 1470ea
Packit 1470ea
Running "make install", installs the application in /home/your_username/.local/bin
Packit 1470ea
and installs the hello-world.desktop file in /home/your_username/.local/share/applications
Packit 1470ea
Packit 1470ea
You can now run the application by typing "Hello World" in the Overview.
Packit 1470ea
Packit 1470ea
----------------
Packit 1470ea
To uninstall, type:
Packit 1470ea
Packit 1470ea
make uninstall
Packit 1470ea
Packit 1470ea
----------------
Packit 1470ea
To create a tarball type:
Packit 1470ea
Packit 1470ea
make distcheck
Packit 1470ea
Packit 1470ea
This will create hello-world-1.0.tar.xz
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
</page>