Blame platform-demos/el/hello-world.py.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.py" xml:lang="el">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Hello World (Python)</title>
Packit 1470ea
    <link type="guide" xref="py#tutorial" 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" χρησιμοποιώντας Python και 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="imports"><title>Βιβλιοθήκες για εισαγωγή</title>
Packit 1470ea
      from gi.repository import Gtk
Packit 1470ea
import sys
Packit 1470ea
      

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

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="mainwindow"><title>Δημιουργία του κύριου παραθύρου για την εφαρμογή</title>
Packit 1470ea
      class MyWindow(Gtk.ApplicationWindow):
Packit 1470ea
Packit 1470ea
    # Κατασκευαστής για μια Gtk.ApplicationWindow
Packit 1470ea
    def __init__(self, app):
Packit 1470ea
        Gtk.Window.__init__(self, title="Hello World!", application=app)
Packit 1470ea
        self.set_default_size(200, 100)
Packit 1470ea
Packit 1470ea
class MyApplication(Gtk.Application):
Packit 1470ea
    def __init__(self):
Packit 1470ea
        Gtk.Application.__init__(self)
Packit 1470ea
Packit 1470ea
    def do_activate(self):
Packit 1470ea
        win = MyWindow(self)
Packit 1470ea
        win.show_all()
Packit 1470ea
Packit 1470ea
    def do_startup(self):
Packit 1470ea
        Gtk.Application.do_startup(self)
Packit 1470ea
Packit 1470ea
    

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

Packit 1470ea
    

Μπορούμε να αρχίσουμε να κατασκευάζουμε το πρώτο μας παράθυρο. Αυτό το κάνουμε δημιουργώντας μια κλάση που λέγεται MyWindow και της αποδίδουμε ένα 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
Packit 1470ea
        # δημιουργία ετικέτας
Packit 1470ea
        label = Gtk.Label()
Packit 1470ea
Packit 1470ea
        # ορισμός του κειμένου της ετικέτας
Packit 1470ea
        label.set_text("Hello GNOME!")
Packit 1470ea
Packit 1470ea
        # προσθήκη της ετικέτας στο παράθυρο
Packit 1470ea
        self.add(label)
Packit 1470ea
Packit 1470ea
      

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

Packit 1470ea
Packit 1470ea
      #εκτέλεση της εφαρμογής
Packit 1470ea
Packit 1470ea
app = MyApplication()
Packit 1470ea
exit_status = app.run(sys.argv)
Packit 1470ea
sys.exit(exit_status)
Packit 1470ea
Packit 1470ea
      

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

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

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

Packit 1470ea
      from gi.repository import Gtk
Packit 1470ea
import sys
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyWindow(Gtk.ApplicationWindow):
Packit 1470ea
    # constructor for a Gtk.ApplicationWindow
Packit 1470ea
Packit 1470ea
    def __init__(self, app):
Packit 1470ea
        Gtk.Window.__init__(self, title="Welcome to GNOME", application=app)
Packit 1470ea
        self.set_default_size(200, 100)
Packit 1470ea
Packit 1470ea
        # create a label
Packit 1470ea
        label = Gtk.Label()
Packit 1470ea
        # set the text of the label
Packit 1470ea
        label.set_text("Hello GNOME!")
Packit 1470ea
        # add the label to the window
Packit 1470ea
        self.add(label)
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyApplication(Gtk.Application):
Packit 1470ea
Packit 1470ea
    def __init__(self):
Packit 1470ea
        Gtk.Application.__init__(self)
Packit 1470ea
Packit 1470ea
    def do_activate(self):
Packit 1470ea
        win = MyWindow(self)
Packit 1470ea
        win.show_all()
Packit 1470ea
Packit 1470ea
    def do_startup(self):
Packit 1470ea
        Gtk.Application.do_startup(self)
Packit 1470ea
Packit 1470ea
app = MyApplication()
Packit 1470ea
exit_status = app.run(sys.argv)
Packit 1470ea
sys.exit(exit_status)
Packit 1470ea
Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="terminal"><title>Εκτελέστε την εφαρμογή από τερματικό</title>
Packit 1470ea
      

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

Packit 1470ea
      <screen><output style="prompt">$ </output><input>python hello-world.py</input></screen>
Packit 1470ea
    </section>
Packit 1470ea
  </section>
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
    

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