Blame platform-demos/el/hello-world.js.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.js" xml:lang="el">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Hello World (JavaScript)</title>
Packit 1470ea
    <link type="guide" xref="beginner.js#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>Μια βασική εφαρμογή "hello, world"</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Ελληνική μεταφραστική ομάδα GNOME</mal:name>
Packit 1470ea
      <mal:email>team@gnome.gr</mal:email>
Packit 1470ea
      <mal:years>2012-2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Δημήτρης Σπίγγος</mal:name>
Packit 1470ea
      <mal:email>dmtrs32@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2012, 2013</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Μαρία Θουκιδίδου</mal:name>
Packit 1470ea
      <mal:email>marablack3@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Θάνος Τρυφωνίδης</mal:name>
Packit 1470ea
      <mal:email>tomtryf@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014, 2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Πώς να κατασκευάσετε, να εγκαταστήσετε και να δημιουργήσετε ένα <file>tar.xz</file> ενός προγράμματος Hello World</title>
Packit 1470ea
    <media type="image" mime="image/png" style="floatend" src="media/hello-world.png"/>
Packit 1470ea
    <synopsis>
Packit 1470ea
      

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

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

δημιουργήσετε μια μικρή εφαρμογή "Hello, World" χρησιμοποιώντας JavaScript και GTK+

</item>
Packit 1470ea
        <item>

κάνετε το αρχείο <file>.desktop</file>

</item>
Packit 1470ea
        <item>

ρυθμίσετε το σύστημα δόμησης

</item>
Packit 1470ea
      </list>
Packit 1470ea
    </synopsis>
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="HelloWorld"><title>Δημιουργήστε το πρόγραμμα</title>
Packit 1470ea
Packit 1470ea
    <links type="section"/>
Packit 1470ea
Packit 1470ea
    <section id="script"><title>Σενάριο για εκτέλεση της εφαρμογής</title>
Packit 1470ea
      

Αυτό χρειάζεται να είναι η πρώτη γραμμή του σεναρίου σας:

Packit 1470ea
      #!/usr/bin/gjs
Packit 1470ea
      

Λέει στο σενάριο να χρησιμοποιήσετε <link href="https://live.gnome.org/Gjs/">Gjs</link>. Gjs είναι ένας σύνδεσμος JavaScript για GNOME.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
    <section id="imports"><title>Βιβλιοθήκες για εισαγωγή</title>
Packit 1470ea
      const Lang = imports.lang;
Packit 1470ea
const Gtk = imports.gi.Gtk;
Packit 1470ea
      

Για να δουλέψει το σενάριό μας με GNOME, χρειαζόμαστε να εισάγουμε τις βιβλιοθήκες GNOME μέσα από τον αυτοέλεγχο GObject. Εδώ εισάγουμε τους συνδέσμους γλώσσας και GTK+, την βιβλιοθήκη που περιέχει τα χρησιμοποιούμενα γραφικά στοιχεία για την δόμηση εφαρμογών GNOME.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="mainwindow"><title>Δημιουργία του κύριου παραθύρου για την εφαρμογή</title>
Packit 1470ea
      const Application = new Lang.Class({
Packit 1470ea
    //Μια κλάση απαιτεί μια ρητή παράμετρο ονόματος. Αυτή είναι η κλάση ονόματος.
Packit 1470ea
    Name: 'Application',
Packit 1470ea
Packit 1470ea
    //Δημιουργία της εφαρμογής
Packit 1470ea
    _init: function() {
Packit 1470ea
        this.application = new Gtk.Application();
Packit 1470ea
Packit 1470ea
       //Σ,υνδεση των σημάτων 'activate' και 'startup' με τους χειριστές.
Packit 1470ea
       this.application.connect('activate', Lang.bind(this, this._onActivate));
Packit 1470ea
       this.application.connect('startup', Lang.bind(this, this._onStartup));
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    //Δημιουργία της διεπαφής χρήστη
Packit 1470ea
    _buildUI: function() {
Packit 1470ea
        this._window = new Gtk.ApplicationWindow({ application: this.application,
Packit 1470ea
                                                   title: "Hello World!" });
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    //Ο χεριριστής για το σήμα 'activate'
Packit 1470ea
    _onActivate: function() {
Packit 1470ea
        //Εμφάνιση του παραθύρου και όλων των θυγατρικών γραφικών στοιχείων
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    //Ο χειριστής του σήματος 'startup'
Packit 1470ea
    _onStartup: function() {
Packit 1470ea
        this._buildUI();
Packit 1470ea
    }
Packit 1470ea
});
Packit 1470ea
Packit 1470ea
Packit 1470ea
    

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

Packit 1470ea
    

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

Packit 1470ea
    

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

Packit 1470ea
    

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

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="label"><title>Ετικέτα για το παράθυρο</title>
Packit 1470ea
      // Προσθήκη γραφικού στοιχείου ετικέτας στο παράθυρό σας
Packit 1470ea
this.label = new Gtk.Label({ label: "Hello World" });
Packit 1470ea
this._window.add(this.label);
Packit 1470ea
this._window.set_default_size(200, 200);
Packit 1470ea
Packit 1470ea
      

Μια ετικέτα κειμένου είναι ένα από τα γραφικά στοιχεία του GTK+ που μπορούμε να χρησιμοποιήσουμε, λόγω της εισαγωγής της βιβλιοθήκης GTK+. Για τη χρήση του, δημιουργούμε μια νέα μεταβλητή που ονομάζουμε ετικέτα και της αποδίδουμε μια νέα Gtk.Label. Έπειτα της δίνουμε ιδιότητες μέσα σε αγκύλες {}. Σε αυτήν την περίπτωση, ορίζουμε το κείμενο που θα κρατήσει η ετικέτα. Τελικά, δημιουργούμε και τρέχουμε την εφαρμογή:

Packit 1470ea
Packit 1470ea
      //Εκτέλεση της εφαρμογής
Packit 1470ea
let app = new Application();
Packit 1470ea
app.application.run(ARGV);
Packit 1470ea
Packit 1470ea
      

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

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

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

Packit 1470ea
      #!/usr/bin/gjs
Packit 1470ea
Packit 1470ea
imports.gi.versions.Gtk = '3.0'
Packit 1470ea
const Gtk = imports.gi.Gtk;
Packit 1470ea
Packit 1470ea
class Application {
Packit 1470ea
Packit 1470ea
    //create the application
Packit 1470ea
    constructor() {
Packit 1470ea
        this.application = new Gtk.Application();
Packit 1470ea
Packit 1470ea
       //connect to 'activate' and 'startup' signals to handlers.
Packit 1470ea
       this.application.connect('activate', this._onActivate.bind(this));
Packit 1470ea
       this.application.connect('startup', this._onStartup.bind(this));
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    //create the UI
Packit 1470ea
    _buildUI() {
Packit 1470ea
        this._window = new Gtk.ApplicationWindow({ application: this.application,
Packit 1470ea
                                                   title: "Hello World!" });
Packit 1470ea
        this._window.set_default_size(200, 200);
Packit 1470ea
        this.label = new Gtk.Label({ label: "Hello World" });
Packit 1470ea
        this._window.add(this.label);
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    //handler for 'activate' signal
Packit 1470ea
    _onActivate() {
Packit 1470ea
        //show the window and all child widgets
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    //handler for 'startup' signal
Packit 1470ea
    _onStartup() {
Packit 1470ea
        this._buildUI();
Packit 1470ea
    }
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
//run the application
Packit 1470ea
let app = new Application();
Packit 1470ea
app.application.run(ARGV);
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="terminal"><title>Εκτελέστε την εφαρμογή από τερματικό</title>
Packit 1470ea
      

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

Packit 1470ea
      <screen><output style="prompt">$ </output><input>gjs hello-world.js</input></screen>
Packit 1470ea
    </section>
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
  <section id="desktop.in"><title>Το αρχείο <file>.desktop.in</file></title>
Packit 1470ea
      

Τρέχοντας εφαρμογές από το τερματικό είναι χρήσιμο στην αρχή της διεργασίας κατασκευής της εφαρμογής. Για να έχετε μια πλήρως λειτουργική <link href="https://developer.gnome.org/integration-guide/stable/mime.html.en">ολοκληρωμένη εφαρμογή</link> στο GNOME 3 απαιτείται ένας εκκινητής επιφάνεια εργασίας. Για αυτό χρειάζεται να δημιουργήσετε ένα αρχείο <file>.desktop</file>. Το αρχείο <file>.desktop</file> περιγράφει το όνομα της εφαρμογής, το χρησιμοποιούμενο εικονίδιο και ποικίλα δυαδικά ολοκλήρωσης. Μια βαθύτερη ματιά στο αρχείο <file>.desktop</file> μπορεί να βρεθεί <link href="http://developer.gnome.org/desktop-entry-spec/">εδώ</link>. Το αρχείο <file>.desktop.in</file> θα δημιουργήσει το <file>.desktop</file>.

Packit 1470ea
Packit 1470ea
  <note>
Packit 1470ea
       

Πριν συνεχίσετε, ξανααποθηκεύστε το <file>hello-world.js</file> ως <file>hello-world</file>. Έπειτα εκτελέστε το στη γραμμή εντολών:

Packit 1470ea
      <screen><output style="prompt">$ </output><input>chmod +x hello-world</input></screen>
Packit 1470ea
  </note>
Packit 1470ea
Packit 1470ea
    

Το παράδειγμα εμφανίζει τις ελάχιστες απαιτήσεις για ένα αρχείο.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
    

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

Packit 1470ea
    <terms>
Packit 1470ea
      <item><title>Όνομα</title>

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

</item>
Packit 1470ea
      <item><title>Σχόλιο</title>

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

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

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

</item>
Packit 1470ea
      <item><title>Τερματικός</title>

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

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

Για να βάλετε την εφαρμογή σας στη σωστή κατηγορία χρειάζεται να προσθέσετε τις απαραίτητες κατηγορίες στη γραμμή κατηγοριών. Περισσότερες πληροφορίες για τις διαφορετικές κατηγορίες μπορούν να βρεθούν στο <link href="http://standards.freedesktop.org/menu-spec/latest/apa.html">προδιαγραφές μενού</link>.

Packit 1470ea
    

Σε αυτό το παράδειγμα χρησιμοποιήσαμε ένα υπάρχον εικονίδιο. Για ένα προσαρμοσμένο εικονίδιο χρειάζεται να έχετε ένα αρχείο .svg του εικονιδίου σας, αποθηκευμένο στο <file>/usr/share/icons/hicolor/scalable/apps</file>. Γράψτε το όνομα του αρχείου του εικονιδίου σας στο αρχείο .desktop.in, στη γραμμή 7. Περισσότερες πληροφορίες για εικονίδια στο: <link href="https://live.gnome.org/GnomeGoals/AppIcon">Εγκατάσταση εικονιδίων για θέματα</link>, και <link href="http://freedesktop.org/wiki/Specifications/icon-theme-spec">on freedesktop.org: Specifications/icon-theme-spec</link>.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="autotools"><title>Το σύστημα δόμησης</title>
Packit 1470ea
    

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

Packit 1470ea
    

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

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
# Αυτό θα εκτελέσει autoconf, automake, κλπ. για μας
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
      

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

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
      # Το τρέχον εκτελέσιμο πρόγραμμα ορίζεται στα θεμελιακά SCRIPTS.
Packit 1470ea
# # Το πρόθεμα bin_ λέει που να το αντιγράψετε
Packit 1470ea
bin_SCRIPTS = hello-world
Packit 1470ea
# # Η λίστα των αρχείων που θα διανεμηθούν
Packit 1470ea
EXTRA_DIST =  \
Packit 1470ea
	$(bin_SCRIPTS)
Packit 1470ea
#
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
      # Αυτό το αρχείο επεξεργάζεται από το autoconf για τη δημιουργία ενός σεναρίου διαμόρφωσης
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_CONFIG_FILES([Makefile hello-world.desktop])
Packit 1470ea
AC_OUTPUT
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
    <section id="readme"><title>README</title>
Packit 1470ea
       

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

Packit 1470ea
Packit 1470ea
       

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

Packit 1470ea
      Για να δομήσετε και να εγκαταστήσετε αυτό το πρόγραμμα:
Packit 1470ea
Packit 1470ea
./autogen.sh --prefix=/home/your_username/.local
Packit 1470ea
make install
Packit 1470ea
Packit 1470ea
-------------
Packit 1470ea
Η εκτέλεση της πρώτης παραπάνω γραμμής δημιουργεί τα ακόλουθα αρχεία:
Packit 1470ea
Packit 1470ea
aclocal.m4
Packit 1470ea
autom4te.cache
Packit 1470ea
config.log
Packit 1470ea
config.status
Packit 1470ea
configure
Packit 1470ea
hello-world.desktop
Packit 1470ea
install-sh
Packit 1470ea
missing
Packit 1470ea
Makefile.in
Packit 1470ea
Makefile
Packit 1470ea
Packit 1470ea
Η εκτέλεση "make install", εγκαθιστά την εφαρμογή στο /home/your_username/.local/bin
Packit 1470ea
και εγκαθιστά το αρχείο hello-world.desktop στο /home/your_username/.local/share/applications
Packit 1470ea
Packit 1470ea
Μπορείτε τώρα να εκτελέσετε την εφαρμογή πληκτρολογώντας "Hello World" στην επισκόπηση.
Packit 1470ea
Packit 1470ea
----------------
Packit 1470ea
Για απεγκατάσταση, πληκτρολογήστε:
Packit 1470ea
Packit 1470ea
make uninstall
Packit 1470ea
Packit 1470ea
----------------
Packit 1470ea
Για δημιουργία tarball, πληκτρολογήστε:
Packit 1470ea
Packit 1470ea
make distcheck
Packit 1470ea
Packit 1470ea
Αυτό θα δημιουργήσει hello-world-1.0.tar.xz
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
</page>