<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<chapter id="core-tech">
  <title>Πυρήνας τεχνολογιών</title>

<section id="graphics">
  <title>Γραφικές διεπαφές</title>

  <para>Οι περισσότερες εφαρμογές οφείλουν να παρέχουν μια γραφική διεπαφή για να αλληλεπιδρούν με το χρήστη. Οι γραφικές διεπαφές δημιουργούν ένα εύληπτο και εξερευνήσιμο περιβάλλον για τη διάδραση ανθρώπου και λογισμικού. Έτσι, οι χρήστες αναμένουν από τις εφαρμογές τους να παρέχουν χρηστικές και ελκυστικές διεπαφές χρήστη.</para>

  <para>Η πλατφόρμα GNOME διαθέτει προηγμένα γραφικά και τεχνολογίες διεπαφής χρήστη που περιλαμβάνουν τα πάντα, από τους κλασικούς ελέγχους διεπαφής χρήστη, μέχρι API για τη σχεδίαση γραφικών υψηλής ποιότητας στην οθόνη. Η χρήση των τεχνολογιών γραφικών του GNOME σας επιτρέπει να δημιουργείτε εφαρμογές με ελκυστική και ομοιόμορφη εμφάνιση και απλούστατες στην εκμάθησή τους.</para>

  <figure>
    <title>Βιβλιοθήκες γραφικών και στρώσεις</title>
    <mediaobject>
      <imageobject>
        <imagedata format="PNG" fileref="figures/graphics.png"/>
      </imageobject>
    </mediaobject>
  </figure>

  <section id="gtk">
    <title>GTK+</title>

    <para>Η GTK+ είναι η βασική βιβλιοθήκη που χρησιμοποιείται για την κατασκευή διεπαφών χρήστη στο GNOME. Παρέχει όλους τους ελέγχους διεπαφής χρήστη, γνωστούς και ως γραφικά συστατικά (widgets), που χρησιμοποιούν οι συνήθεις γραφικές εφαρμογές. Το μοντέρνο και αντικειμενοστραφές API της σας επιτρέπει να δημιουργείτε ελκυστικές και προηγμένες διεπαφές χρήστη, χωρίς να χρειάζεται να ασχοληθείτε με τις λεπτομέρειες χαμηλού επιπέδου της σχεδίασης και της επικοινωνίας με συσκευές.</para>

    <para>Πέρα από τα βασικά γραφικά συστατικά, όπως είναι τα κουμπιά, τα κουτάκια επιλογών και τα πεδία κειμένου, η GTK+ παρέχει επίσης πανίσχυρα API MVC (Model-View-Controller) για τη χρήση προβολών δέντρου, πεδίων κειμένου πολλαπλών γραμμών και ενεργειών στα μενού και τις εργαλειοθήκες.</para>

    <para>Στη GTK+ τα γραφικά συστατικά τοποθετούνται στα παράθυρα σύμφωνα με ένα μοντέλο συσκευασίας σε πλαίσια (boxes). Οι προγραμματιστές απλά καθορίζουν πώς θα συσκευαστούν τα γραφικά συστατικά εντός των πλαισίων που τα περιέχουν, χωρίς να χρειάζεται να τα τοποθετήσουν σε συγκεκριμένες θέσεις χρησιμοποιώντας απόλυτες συντεταγμένες. Η GTK+ διασφαλίζει ότι τα παράθυρα θα μπορούν να χωρέσουν όλο το περιεχόμενό, αλλάζοντας αυτόματα το μέγεθoς των παραθύρων όποτε χρειάζεται.</para>

    <para>Επειδή η GTK+ παρέχει ένα ιδιαίτερα ευέλικτο API, η ανάπτυξη νέων γραφικών συστατικών για χρήση σε εφαρμογές GTK+ είναι ιδιαίτερα εύκολη. Υπάρχουν αρκετές βιβλιοθήκες τρίτων μερών που παρέχουν πρόσθετα γραφικά συστατικά, ενώ πολλοί προγραμματιστές δημιουργούν ειδικά γραφικά συστατικά για τις εφαρμογές τους.</para>

    <para>Η GTK+ αναλαμβάνει να χειριστεί τις δύσκολες λεπτομέρειες των διεπαφών χρήστη και της διάδρασης με το χρήστη και παρέχει ένα απλό αλλά ισχυρό API, που σας επιτρέπει να επικεντρωθείτε στις λεπτομέρειες της εφαρμογής σας. Οι εφαρμογές που αναπτύσσονται με τη GTK+ υιοθετούν αυτομάτως το θέμα και τις γραμματοσειρές του χρήστη, συνεργάζονται χωρίς προβλήματα με τις τεχνολογίες προσιτότητας, και γενικά συμπεριφέρονται ακριβώς όπως αναμένουν οι χρήστες.</para>

    <para>Για περισσότερες πληροφορίες σχετικά με τη GTK+, δείτε το <ulink url="http://library.gnome.org/devel/gtk/stable/">GTK+ Reference Manual</ulink> ή επισκεφθείτε τον <ulink url="http://gtk.org/">ιστότοπο της GTK+</ulink>.</para>
  </section> <!-- gtk -->

  <section id="libglade">
    <title>Libglade</title>
    <para>Η Libglade είναι μια βιβλιοθήκη για τη δυναμική κατασκευή διεπαφών χρήστη από περιγραφές XML. Μπορείτε να χρησιμοποιήσετε μια εφαρμογή δημιουργίας γραφικών διεπαφών, όπως το <application>Glade</application>, για να κατασκευάσετε τη διεπαφή χρήστη, και στη συνέχεια να εξάγετε την περιγραφή της διεπαφής στην εφαρμογή σας. Έτσι μπορείτε να δημιουργείτε περίπλοκες διατάξεις και να προσαρμόζετε τις λεπτομέρειες των διατάξεών σας.</para>

    <para>Το Libglade επιτρέπει στους προγραμματιστές να επικεντρωθούν στη λογική της εφαρμογής κατά τη συγγραφή του κώδικα, και να μην επιβαρύνουν τον κώδικα με τις λεπτομέρειες κατασκευής της διεπαφής. Επιπλέον, οι εφαρμογές δημιουργίας γραφικών διεπαφών επιτρέπουν στους επαγγελματίες σχεδιαστές διεπαφών να σχεδιάζουν διεπαφές χωρίς να γνωρίζουν προγραμματισμό.</para>

    <para>Για περισσότερες πληροφορίες σχετικά με το Libglade, δείτε το <ulink url="http://library.gnome.org/devel/libglade/stable/">Libglade Reference Manual</ulink>.</para>
  </section>

  <section id="pango">
    <title>Pango</title>

    <para>Η Pango είναι η βασική βιβλιοθήκη χειρισμού κειμένου και γραμματοσειρών της πλατφόρμας GNOME. Είναι υπεύθυνη για την εμφάνιση και τη διάταξη του κειμένου και χρησιμοποιείται παντού στη GTK+.<footnote>
    <para>Η μηχανή διάταξης Pango μπορεί να χρησιμοποιηθεί με διαφορετικά συστήματα υποστήριξης γραμματοσειρών και γραφικών. Στα περισσότερα συστήματα GNOME, η Pango χρησιμοποιεί τα FreeType, fontconfig και Cairo για να αποκτά πρόσβαση στις γραμματοσειρές και να προβάλλει κείμενο. Σε άλλα συστήματα, η Pango χρησιμοποιεί τα εγγενή συστήματα γραφικών, όπως το Uniscribe στα Microsoft Windows και το ATSUI στο MacOS.</para></footnote></para>
 
    <para>Η Pango προσφέρει εκτεταμένη κάλυψη για τα συστήματα γραφής που χρησιμοποιούνται σε διάφορα μέρη σε όλο τον κόσμο. Πολλές γραφές γλωσσών χρησιμοποιούν περίπλοκους κανόνες για τη διάταξη των συμβόλων τους και τη σύνθεση των χαρακτήρων τους. Μέσω της Pango, σχεδόν όλες οι γλώσσες μπορούν να γράφονται και να εμφανίζονται σωστά, επιτρέποντας στους χρήστες σε όλο τον κόσμο να διαβάζουν κείμενα στη μητρική τους γλώσσα. Η Pango υποστηρίζει αυτόματα τα διάφορα συστήματα γραφής· οι προγραμματιστές δεν χρειάζεται να γράφουν ειδικό κώδικα για να προσθέτουν υποστήριξη για άλλες γλώσσες.</para>

    <figure>
      <title>Εμφάνιση πολλαπλών γλωσσών με Pango</title>
      <screenshot>
        <mediaobject>
          <imageobject>
            <imagedata format="PNG" fileref="figures/pango.png"/>
          </imageobject>
          <textobject><para>Στιγμιότυπο οθόνης του επεξεργαστή κειμένου <application>gedit</application> με φράσεις σε διάφορες γλώσσες και γραφές.</para></textobject>
        </mediaobject>
      </screenshot>
    </figure>

    <para>Η Pango υποστηρίζει τα συνήθη στυλ κειμένου, όπως είναι οι πλάγιοι χαρακτήρες, οι έντονοι χαρακτήρες και οι υπογραμμίσεις. Η Pango χρησιμοποιεί μια απλή σύνταξη που θυμίζει XML και ονομάζεται PangoMarkup, η οποία σας επιτρέπει να ρυθμίζετε το μέγεθος, το χρώμα και το στυλ της γραμματοσειράς, καθώς και άλλα γνωρίσματα του κειμένου. Χρησιμοποιώντας PangoMarkup, μπορείτε να ορίζετε το εντός της γραμμής στυλ χωρίς να χρειάζεται να το προσθέτετε ξανά σε κάθε μπλοκ κειμένου. Η PangoMarkup μπορεί να χρησιμοποιηθεί απευθείας από τη GTK+, επιτρέποντάς σας να διαμορφώνετε με ευκολία το στυλ του κειμένου των γραφικών διεπαφών σας.</para>

    <para>Χρησιμοποιήστε απευθείας την Pango κάθε φορά που επιθυμείτε να εμφανίσετε κείμενο στην οθόνη ή σε άλλο μέσο. Η χρήση της Pango επιτρέπει στη διάταξη του κειμένου σας να αναγνωρίζεται χωρίς κανένα πρόβλημα από τη GTK+ και την υπόλοιπη πλατφόρμα του GNOME. Επομένως, σας βοηθάει να δημιουργήσετε φορητό κώδικα και, κυρίως, διασφαλίζει ότι η εφαρμογή σας θα εμφανίζει άψογα κείμενο σε εκατοντάδες διαφορετικές γλώσσες.</para>

    <para>Για περισσότερες πληροφορίες σχετικά με την Pango, δείτε το <ulink url="http://library.gnome.org/devel/pango/stable/">Pango Reference Manual</ulink>.</para>
  </section> <!-- pango -->

  <section id="gdk">
    <title>GDK</title>

    <para>Η GDK είναι η βιβλιοθήκη χαμηλού επιπέδου που χρησιμοποιεί η GTK+ για τη διάδραση με το σύστημα, όσον αφορά τα γραφικά και τις συσκευές εισόδου. Αν και σπάνια θα χρειαστεί να συμπεριλάβετε τη GDK απευθείας στον κώδικα της εφαρμογής σας, καλό είναι να γνωρίζετε ότι περιέχει όλες τις απαιτούμενες λειτουργίες για τη σχεδίαση αντικειμένων και κειμένου στην οθόνη, καθώς και για τη διάδραση με το χρήστη μέσω διαφόρων συσκευών εισόδου. <footnote>
    <para>Η GDK λειτουργεί σε πολλές διαφορετικές πλατφόρμες, όπως το Σύστημα Παραθύρων X ή τα Microsoft Windows, DirectFB και Quartz. Η GDK παρέχει το ίδιο API σε όλες τις πλατφόρμες, επιτρέποντας την εκτέλεση της GTK+ και των εφαρμογών GTK+ χωρίς τροποποιήσεις.</para></footnote></para>

    <para>Η GDK διαθέτει πλαίσιο γραφικών και βασικά στοιχεία σχεδίασης (primitives) κατάλληλα για τη σχεδίαση απλών αντικειμένων και την εμφάνιση εικόνων στην οθόνη. Καθώς υπάρχει και η Cairo, που αποτελεί πιο εκτεταμένο σύστημα σχεδίασης, η GDK παρέχει άγκιστρα για τη χρήση Cairo εντός της GDK.</para>

    <para>Η GDK σας προσφέρει απευθείας πρόσβαση σε γεγονότα από το πληκτρολόγιο, το ποντίκι και άλλες συσκευές εισόδου, αντί να σας αναγκάζει να χρησιμοποιείτε τα σήματα υψηλού επιπέδου που χρησιμοποιεί η GTK+. Παράλληλα, η GDK παρέχει ρουτίνες χαμηλού επιπέδου για την πρόσβαση στα δεδομένα συρσίματος και απόθεσης, καθώς και προχείρου του συστήματος. Κατά την υλοποίηση προσαρμοσμένων ελέγχων, ίσως να χρειαστείτε αυτού του είδους την πρόσβαση για να υλοποιήσετε ορισμένες συμπεριφορές επικοινωνίας με το χρήστη.</para>

    <para>Η GDK παρέχει και άλλες λειτουργίες που απαιτούνται για την υλοποίηση ενός ολοκληρωμένου toolkit γραφικών, όπως η GTK+. Καθώς η GDK λειτουργεί ως αφαιρετικό μοντέλο πλατφόρμας, επιτρέποντας στη GTK+ να λειτουργεί σε πολλαπλά περιβάλλοντα, παρέχει ένα API για όλες τις λειτουργίες συστήματος που απαιτεί η GTK+, παρέχοντας πληροφορίες για τις πολλαπλές οθόνες, την ανάλυση και το βάθος των χρωμάτων, τους χάρτες χρωμάτων και τους δρομείς.</para>

    <para>Χρησιμοποιήστε τη GDK αν χρειάζεστε πρόσβαση χαμηλού επιπέδου στην υποδομή παραθύρων του συστήματος, όπως τα γεγονότα, τα παράθυρα και το πρόχειρο. Μια τέτοια χρήση της GDK διασφαλίζει τη φορητότητα του κώδικά σας και την ορθή του ενσωμάτωση στον υπόλοιπο κώδικά GTK+. Ωστόσο, στις περισσότερες περιπτώσεις δεν συνιστάται η χρήση των απλών ρουτινών σχεδίασης της GDK. Προτιμήστε, καλύτερα, τις εκτεταμένες δυνατότητες της Cairo.</para>

    <para>Για περισσότερες πληροφορίες σχετικά με τη GDK, δείτε το <ulink url="http://library.gnome.org/devel/gdk/stable/">GDK Reference Manual</ulink>.</para>
  </section> <!-- gdk -->

  <section id="cairo">
    <title>Cairo</title>

    <para>Η Cairo είναι μια βιβλιοθήκη δισδιάστατων γραφικών που περιλαμβάνει ένα προηγμένο API για τη σχεδίαση διανυσματικών γραφικών, σύνθεσης εικόνων (compositing) και εμφάνισης anti-aliased κειμένου. Η Cairo υποστηρίζει διάφορες συσκευές εξόδου, όπως το Σύστημα Παραθύρων X , τα Microsoft Windows και οι ενδιάμεσες μνήμες εικόνων, επιτρέποντάς σας να γράφετε κώδικα για τη σχεδίαση γραφικών επί διαφόρων μέσων, ο οποίος θα λειτουργεί ανεξαρτήτως πλατφόρμας.</para>

    <para>Το μοντέλο σχεδίασης της Cairo θυμίζει τα αντίστοιχα μοντέλα των PostScript και PDF. Το API της Cairo παρέχει λειτουργίες σχεδίασης όπως η χρήση κυβικών καμπυλών Bézier (cubic Bézier splines) για περιγράμματα και γεμίσματα, η σύνθεση εικόνων και οι αναλογικές μετατροπές (affine transformations). Αυτές οι διανυσματικές λειτουργίες σας επιτρέπουν να έχετε πλούσια, anti-aliased γραφικά χωρίς να χρησιμοποιείτε δαπανηρές μεθόδους σχεδίασης βάσει εικονοστοιχείων.</para>

    <para>Το προηγμένο μοντέλο σχεδίασης της Cairo προσφέρει εμφάνιση υψηλής ποιότητας σε διάφορα μέσα. Χρησιμοποιώντας το ίδιο API μπορείτε να δημιουργήσετε εκθαμβωτικό κείμενο και γραφικά για εμφάνιση στην οθόνη, να αποδώσετε εικόνες, ή να παράγετε πεντακάθαρα αποτελέσματα για εκτύπωση.</para>

    <para>Χρησιμοποιήστε την Cairo όποτε χρειάζεστε να σχεδιάσετε επιπλέον γραφικά, πέρα από τα γραφικά συστατικά που σας παρέχει η GTK+. Μεγάλο μέρος της σχεδίασης εντός της GTK+. γίνεται με χρήση της Cairo. Χρησιμοποιώντας την Cairo για τα γραφικά σας, εφοδιάζετε την εφαρμογή σας με γραφικά υψηλής ποιότητας, anti-aliased και προσαρμόσιμα σε οποιαδήποτε ανάλυση.</para>

    <para>Για περισσότερες πληροφορίες σχετικά με την Cairo, ανατρέξτε στο <ulink url="http://www.cairographics.org/manual/">Cairo: A Vector Graphics Library</ulink>.</para>
  </section> <!-- cairo -->
</section> <!-- graphics -->

<section id="gio">
  <title>Εικονικό σύστημα αρχείων</title>

  <para>Η GIO αποτελεί τμήμα της GLib και είναι η βασική βιβλιοθήκη που χρησιμοποιείται για ενέργειες αρχείων και φακέλων σε εφαρμογές GNOME. Η GIO παρέχει ένα ενιαίο αφαιρετικό μοντέλο του συστήματος αρχείων με συστήματα υποστήριξης που δέχονται πρόσθετα (pluggable backends). Στο GNOME, η βιβλιοθήκη GVFS παρέχει ένα σύστημα υποστήριξης της GIO που υλοποιεί διάφορα δικτυακά και τοπικά πρωτόκολλα. Χρησιμοποιώντας τη GIO μαζί με τη GVFS επιτρέπετε στην εφαρμογή σας να εργάζεται εξίσου εύκολα με αρχεία σε απομακρυσμένα μηχανήματα και με τοπικά αρχεία.</para>
  
  <para>Η GIO μπορεί να παρέχει εκτεταμένες πληροφορίες για αρχεία και φακέλους, όπως ο τύπος MIME και το εικονίδιο ενός αρχείου, καθώς και οι εφαρμογές που χρησιμοποιούνται για να το ανοίξουν. Επειδή η GVFS χρησιμοποιεί το πρότυπο του <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink> για να καθορίζει τους τύπους αρχείων και τις εφαρμογές που μπορούν να τα ανοίξουν, λειτουργεί άψογα σε διάφορα ελεύθερα περιβάλλοντα επιφάνειας εργασίας, επιτρέποντας στους ανεξάρτητους προγραμματιστές να δημιουργούν λογισμικό που λειτουργεί σε πολλά διαφορετικά περιβάλλοντα.</para>

  <para>Η GIO χρησιμοποιείται παντού στην επιφάνεια εργασίας του GNOME. Ο <application>Ναυτίλος</application>, ο διαχειριστής αρχείων, χρησιμοποιεί τη GIO για να εμφανίζει τους τοπικούς φακέλους και τους φακέλους σε απομακρυσμένα συστήματα. Στην πράξη, αυτό σημαίνει ότι για το χρήστη δεν υπάρχει διαφορά μεταξύ εξυπηρετητών δικτύου και τοπικών φακέλων: Μπορούν να σύρουν και να αποθέτουν αρχεία μεταξύ των δύο, να βλέπουν τις ιδιότητές τους, και να τα ανοίγουν σε οποιαδήποτε εφαρμογή. Η χρήση της GIO θα επιτρέψει στην εφαρμογή σας να ανοίγει όλα τα αρχεία στα οποία έχουν πρόσβαση οι χρήστες μέσω της επιφάνειας εργασίας.</para>

  <para>Για περισσότερες πληροφορίες σχετικά με τη GIO, δείτε το <ulink url="http://library.gnome.org/devel/gio/stable/">GIO Reference Manual</ulink>.</para>

  <anchor id="gnome-vfs"/>

  <para>Σε παλαιότερες εκδόσεις του GNOME χρησιμοποιούνταν η βιβλιοθήκη GnomeVFS για την πρόσβαση σε αρχεία και φακέλους. Παρόλο που η GnomeVFS παρείχε πολλές από τις λειτουργίες της GIO, όπως εύκολη πρόσβαση σε απομακρυσμένους φακέλους, διέθετε και ορισμένους περιορισμούς που εξαλείφθηκαν στη GIO. H GnomeVFS τελεί υπό κατάργηση και δεν πρέπει να χρησιμοποιείται για την παραγωγή νέου κώδικα, παρόλο που η υποστήριξή της θα συνεχιστεί καθ' όλη τη διάρκεια ζωής του GNOME 2. Για πληροφορίες σχετικά με τη GnomeVFS, δείτε το <ulink url="http://library.gnome.org/devel/gnome-vfs-2.0/stable/">GnomeVFS - Filesystem Abstraction Library</ulink>.</para>
</section> <!-- gio -->

<section id="gconf">
  <title>Ρύθμιση και κλείδωμα</title>

  <para>Το GConf είναι το σύστημα αποθήκευσης και ανάκτησης ρυθμίσεων του GNOME.Το GConf αποτελείται από δύο τμήματα: μία βιβλιοθήκη πελάτη για την πρόσβαση στις ρυθμίσεις και μία υπηρεσία συνεδρίας, υπεύθυνη για τις πρακτικές λεπτομέρειες της αποθήκευσης και ανάκτησης των ρυθμίσεων. Η χρήση υπηρεσίας επιτρέπει στο GConf να χρησιμοποιεί διαφορετικά συστήματα υποστήριξης για την αποθήκευση, να επικυρώνει τα δεδομένα που εισάγονται και να προσφέρει ταυτόχρονη πρόσβαση σε διάφορες εφαρμογές.</para>

  <para>Οι ρυθμίσεις που φυλάσσονται στο GConf αποθηκεύονται και ανακτώνται με βάση ένα μοναδικό κλειδί, ή αναγνωριστικό αλφαριθμητικό. Τα κλειδιά χρησιμοποιούν ένα απλό, ιεραρχικό namespace για να αποφεύγουν τις συγκρούσεις μεταξύ των ρυθμίσεων των εφαρμογών και της επιφάνειας εργασίας. Μπορείτε να παρέχετε ένα αρχείο σχήματος με λεπτομερείς πληροφορίες για τα κλειδιά ρυθμίσεων της εφαρμογής σας. Έτσι, επιτρέπετε στο GConf να επικυρώνει τον τύπο της τιμής και να εμφανίζει τοπικοποιημένη τεκμηρίωση για το κλειδί. Επίσης, βοηθάτε τους διαχειριστές συστημάτων, επιτρέποντάς τους να κάνουν πολλαπλές ρυθμίσεις μαζί, χωρίς να χρειάζεται να ανοίγουν διαφορετικούς διαλόγους προτιμήσεων.</para>

  <para>Το GConf μπορεί να αναζητά πολλές διαφορετικές ρυθμίσεις ταυτόχρονα, π.χ. ρυθμίσεις από διαφορετικές τοποθεσίες του συστήματος αρχείων. Ρυθμίζοντας κατάλληλα τις πηγές του συστήματος, το GConf επιτρέπει στους διαχειριστές συστημάτων να επιλέγουν τόσο προεπιλεγμένες όσο και υποχρεωτικές ρυθμίσεις για όλους τους χρήστες. Εργαλεία όπως ο <application>Επεξεργαστής ρυθμίσεων</application> του GNOME και το <application>Sabayon</application> διευκολύνουν σημαντικά την εγκατάσταση πλήρως ρυθμισμένων συστημάτων με χρήση του GConf.</para>

  <para>Η βιβλιοθήκη πελάτη του GConf παρέχει ειδοποιήσεις όταν αλλάζουν κάποιες ρυθμίσεις, επιτρέποντας στην εφαρμογή σας να παρέχει ρυθμίσεις που εφαρμόζονται άμεσα, είτε τροποποιήθηκαν από την ίδια την εφαρμογή, είτε από κάποιο άλλο εργαλείο. Όποτε ορίζεται μια τιμή για ένα κλειδί, ενημερώνονται όλες οι ενδιαφερόμενες εφαρμογές, κάτι που επιτρέπει την άμεση και απρόσκοπτη εφαρμογή ρυθμίσεων που αφορούν είτε ολόκληρη την επιφάνεια εργασίας είτε πολλαπλές εφαρμογές.</para>

  <para>Το GConf διευκολύνει το κλείδωμα συστημάτων με τον ορισμό συγκεκριμένων κλειδιών ως κλειδιών μόνο για ανάγνωση, απαγορεύοντας έτσι στους χρήστες να αλλάζουν τις τιμές τους. Επιπλέον, το GNOME παρέχει μια σειρά από κλειδιά υψηλού επιπέδου που μπορούν να χρησιμοποιηθούν για να απενεργοποιήσουν ενέργειες όπως η αποθήκευση στο δίσκο ή η αλλαγή της διάταξης του πίνακα εφαρμογών. Εργαλεία όπως το <application>Pessulus</application> βοηθούν τους διαχειριστές συστημάτων να βρίσκουν και να κλειδώνουν τέτοιου είδους σημαντικά κλειδιά.</para>

  <para>Χρησιμοποιήστε το GConf για να αποθηκεύσετε όλες τις προτιμήσεις χρήστη της εφαρμογής σας. Η χρήση του GConf σας επιτρέπει να παρέχετε άμεσα εφαρμόσιμες προτιμήσεις, και καθιστά τις ρυθμίσεις σας προσβάσιμες στους διαχειριστές συστημάτων και τα εργαλεία ρύθμισης και αντιγράφων ασφαλείας.</para>

  <para>Για περισσότερες πληροφορίες σχετικά με το GConf, δείτε το <ulink url="http://library.gnome.org/devel/gconf/stable/">GConf Reference Manual</ulink>.</para>
</section> <!-- gconf -->

<section id="i18n">
  <title>Διεθνοποίηση</title>
  <para>Η πλατφόρμα επιφάνειας εργασίας και προγραμματισμού του GNOME υποστηρίζει πλήρως τη διεθνοποίηση και τοπικοποίηση των εφαρμογών. Διεθνοποίηση είναι η διαδικασία με την οποία διασφαλίζεται ότι μια εφαρμογή θα μπορεί να τοπικοποιηθεί. Περιλαμβάνει τη σήμανση όλων των μεταφράσιμων αλφαριθμητικών και την τροποποίησή τους έτσι ώστε να κάνουν ορθή χρήση των αριθμών και μορφοποιημένων αλφαριθμητικών (format strings), και να επιτρέπουν την προσαρμογή τους σε διαφορετικές συμβάσεις εμφάνισης ώρας και ημερομηνίας, μονάδων και μορφοποίησης.</para>

  <para>Το GNOME χρησιμοποιεί το πρότυπο gettext και τις σχετικές ρουτίνες για πρόσβαση στις τοπικοποιήσεις. Κάθε συστατικό της πλατφόρμας GNOME περιλαμβάνει υποστήριξη για τοπικοποίηση μέσω gettext. Μπορείτε να χρησιμοποιήσετε αυτόματα εργαλεία για να απομονώσετε τα κατάλληλα σημασμένα αλφαριθμητικά του κώδικά σας. Στη συνέχεια, αυτά τα αλφαριθμητικά τοποθετούνται σε αρχεία PO που επιτρέπουν στους μεταφραστές να επιτελέσουν το έργο τους. Χρησιμοποιώντας το gettext, μπορείτε να έχετε εύκολη και άμεση πρόσβαση στις μεταφρασμένες εκδοχές όλων των αλφαριθμητικών της εφαρμογής σας που είναι ορατά στο χρήστη. Η πρόσβαση επιτυγχάνεται μέσω μεταφραστικών τομέων που εγκαθίστανται μαζί με την εφαρμογή σας.</para>

  <para>Αυτοί οι μεταφραστικοί τομείς μπορούν να δημιουργηθούν μέσω των αρχείων PO, τα οποία μπορούν να χρησιμοποιούν οι μεταφραστές για να εντοπίζουν αλλαγές στα αλφαριθμητικά και να ενημερώνουν τις μεταφράσεις τους, αν χρειάζεται. Το GNOME περιλαμβάνει το intltool, ένα εργαλείο για τη διαχείριση μεταφράσεων αποθηκευμένων σε αρχεία PO. Χρησιμοποιώντας το intltool, οι μεταφραστές μπορούν να χρησιμοποιούν αρχεία PO για τη μετάφραση τόσο των αλφαριθμητικών της εφαρμογής σας, όσο και των άλλων τύπων αρχείων που χρησιμοποιείτε, όπως αρχείων σχημάτων GConf, εγγραφών επιφάνειας εργασίας και XML.</para>

  <para>Επιπλέον, το GNOME παρέχει το εργαλείο xml2po στο πακέτο gnome-doc-utils. Αυτό το εργαλείο επιτρέπει στους μεταφραστές να χρησιμοποιούν αρχεία PO για να δημιουργούν μεταφρασμένες εκδοχές της τεκμηρίωσης που είναι γραμμένη σε διάφορες μορφές XML, όπως XHTML και DocBook.</para>

  <para>Η διεθνοποίηση δεν είναι μόνο η δυνατότητα μετάφρασης αλφαριθμητικών, γι' αυτό το GNOME σας παρέχει υποστήριξη σε κάθε βήμα της διαδικασίας. Έτσι, η GTK+ προσαρμόζεται αυτόματα στις ανάγκες των γλωσσών που διαβάζονται από δεξιά προς αριστερά, ενώ η Pango υποστηρίζει πλήρως την εμφάνιση κειμένου διπλής κατεύθυνσης, καθώς και κειμένου σε πολλά διαφορετικά συστήματα γραφής. Η GTK+ υποστηρίζει ποικιλία μεθόδων εισόδου, επιτρέποντας στους χρήστες κάθε διαφορετικής γλώσσας να εισάγουν εύκολα κείμενο από το πληκτρολόγιό τους. Ολόκληρη η πλατφόρμα GNOME χρησιμοποιεί εγγενώς την κωδικοποίηση UTF-8 του Unicode, παρέχοντας πρόσβαση σε όλους τους χαρακτήρες και τα συστήματα γραφής παγκοσμίως.</para>

  <figure>
    <title>Το <application>Gnumeric</application> σε διάφορες γλώσσες</title>
    <screenshot>
      <mediaobject>
        <imageobject>
          <imagedata format="PNG" fileref="figures/i18n.png"/>
        </imageobject>
        <textobject><para>Στιγμιότυπα της εφαρμογής λογιστικών φύλλων <application>Gnumeric</application> στα Εβραϊκά, Ιαπωνικά και Σέρβικα.</para>
        </textobject>
      </mediaobject>
    </screenshot>
  </figure>

  <para>Διεθνοποιώντας την εφαρμογή σας την καθιστάτε διαθέσιμη σε πολύ περισσότερους χρήστες παγκοσμίως. Οι μεταφράσεις σε διάφορες γλώσσες γίνονται από έμπειρους μεταφραστές, οι προγραμματιστές όμως οφείλουν να εξασφαλίσουν τη σωστή διεθνοποίηση των εφαρμογών για να καταστεί δυνατή η τοπικοποίησή τους.</para>

  <!-- FIXME: where is danilo's awesome guide? -->
  <para>Για περισσότερες πληροφορίες σχετικά με τη διεθνοποίηση στο GNOME, ανατρέξτε στο <ulink url="http://www.gnome.org/~malcolm/i18n/">Internationalizing GNOME Applications</ulink>.</para>
</section> <!-- i18n -->

<section id="a11y">
  <title>Προσιτότητα</title>

  <para>Η προσιτότητα είναι η διαδικασία μέσω της οποίας διασφαλίζετε ότι η εφαρμογή σας θα μπορεί να χρησιμοποιηθεί από άτομα με διάφορες αναπηρίες. Υπάρχουν πολλές μορφές αναπηριών: προβλήματα όρασης, κίνησης και ακοής, γνωσιακές και γλωσσικές δυσκολίες, παροξυσμικές διαταραχές. Πολλοί άνθρωποι εμφανίζουν κάποια αναπηρία, άρα, καθιστώντας την εφαρμογή σας προσιτή, διευρύνετε τον κύκλο των χρηστών σας.</para>

  <para>Το GNOME υποστηρίζει συσκευές προσιτότητας μέσω του πλαισίου ATK. Αυτό το πλαίσιο ορίζει ένα σύνολο διεπαφών, τις οποίες χρησιμοποιούν τα συστατικά των γραφικών διεπαφών. Για παράδειγμα, έτσι επιτρέπεται στους αναγνώστες οθόνης να διαβάζουν το κείμενο μιας διεπαφής και να αλληλεπιδρούν με τους ελέγχους της. Η υποστήριξη για την ATK ενσωματώνεται στη GTK+ και την υπόλοιπη πλατφόρμα GNOME μέσω της βιβλιοθήκης GAIL, έτσι ώστε όλες οι εφαρμογές που χρησιμοποιούν τη GTK+ να μπορούν να προσφέρουν αυτόματα ένα λογικό επίπεδο προσιτότητας.</para>

  <para>Παρόλα αυτά, θα πρέπει να λαμβάνετε υπόψη σας την προσιτότητα κατά την ανάπτυξη των εφαρμογών σας. Αν και οι διεπαφές GTK+ παρέχουν αυτόματα ένα λογικό επίπεδο προσιτότητας, μπορείτε να βελτιώσετε τη συνεργασία του προγράμματός σας με τα εργαλεία προσιτότητας, παρέχοντας ορισμένες επιπρόσθετες πληροφορίες στη GTK+. Αν έχετε δημιουργήσει προσαρμοσμένα γραφικά συστατικά, διασφαλίστε ότι το ATK έχει πρόσβαση στις ιδιότητές τους. Επίσης, αποφύγετε να χρησιμοποιείτε ήχο, γραφικά ή χρώματα ως το μοναδικό μέσο παροχής πληροφοριών στο χρήστη.</para>

  <para>Η επιφάνεια εργασίας GNOME περιλαμβάνει μια σειρά από εργαλεία προσιτότητας που επιτρέπουν στους χρήστες με αναπηρίες να αξιοποιούν πλήρως την επιφάνεια εργασίας και τις εφαρμογές της. Οι εφαρμογές που υλοποιούν πλήρως την ATK μπορούν να συνεργαστούν καλά με τα εργαλεία προσιτότητας. Τα εργαλεία προσιτότητας του GNOME περιλαμβάνουν έναν αναγνώστη οθόνης, ένα μεγεθυντή οθόνης, ένα πληκτρολόγιο οθόνης και το <application>Dasher</application>, ένα καινοτόμο εργαλείο εισαγωγής κειμένου με πρόβλεψη.</para>

  <para>Για λεπτομερείς συστάσεις σχετικά με την προσιτότητα, δείτε το <ulink url="http://developer.gnome.org/projects/gap/guide/gad/index.html">GNOME Accessibility for Developers</ulink>. Επίσης, τα <ulink url="http://library.gnome.org/devel/atk/stable/">ATK - Accessibility Toolkit</ulink> και <ulink url="http://library.gnome.org/devel/gail-libgail-util/stable/">GAIL Reference Manual</ulink>.</para>
</section> <!-- a11y -->

<section id="multimedia">
  <title>Πολυμέσα</title>

  <para>Το GStreamer είναι μια ισχυρότατη βιβλιοθήκη πολυμέσων για την αναπαραγωγή, δημιουργία και επεξεργασία ήχου, βίντεο και άλλων πολυμέσων. Μπορείτε να χρησιμοποιήσετε το GStreamer για να παρέχετε αναπαραγωγή ήχου και βίντεο, να κάνετε εγγραφή από διάφορες πηγές, καθώς και να επεξεργάζεστε αρχεία πολυμέσων. Το GStreamer από μόνο του παρέχει κωδικοποίηση και αποκωδικοποίηση για διάφορες μορφές, ενώ μπορούν να χρησιμοποιηθούν και πρόσθετα για την υποστήριξη επιπλέον μορφών.</para>

  <para>Το GStreamer παρέχει μια ευέλικτη αρχιτεκτονική, σύμφωνα με την οποία η επεξεργασία των πολυμέσων γίνεται μέσω μιας αλληλουχίας (pipeline) στοιχείων. Κάθε στοιχείο μπορεί να εφαρμόζει φίλτρα στο περιεχόμενο (π.χ. κωδικοποίηση ή αποκωδικοποίηση), να συνδυάζει πολλαπλές πηγές, ή να μετατρέπει το περιεχόμενο. Η αρχιτεκτονική αυτή επιτρέπει την τυχαία διάταξη των στοιχείων, κάτι που προσφέρει στο GStreamer τη δυνατότητα να παράγει σχεδόν ό,τι αποτέλεσμα μπορείτε να φανταστείτε. Επιπλέον, το GStreamer έχει σχεδιαστεί με γνώμονα τη χαμηλή επιβάρυνση, και άρα μπορεί να χρησιμοποιείται από εφαρμογές με αυξημένες ανάγκες σε λανθάνοντα χρόνο.</para>

  <para>Το GStreamer παρέχει ένα ισχυρότατο API για την επεξεργασία πολυμέσων, παρέχει όμως και εύχρηστες ρουτίνες για την απλή αναπαραγωγή πολυμέσων. Το GStreamer μπορεί να δημιουργεί αυτόματα αλληλουχίες για την ανάγνωση και αναπαραγωγή αρχείων στις μορφές που υποστηρίζει, επιτρέποντάς σας να προσθέτετε εύκολα ήχο και βίντεο στην εφαρμογή σας.</para>

  <para>Η αρχιτεκτονική του GStreamer επιτρέπει τη χρήση προσθέτων για την προσθήκη κωδικοποιητών, αποκωδικοποιητών και διαφόρων φίλτρων περιεχομένου. Οι εξωτερικοί προγραμματιστές μπορούν να παρέχουν πρόσθετα για το GStreamer, τα οποία καθίστανται αυτομάτως διαθέσιμα σε όλες τις εφαρμογές που χρησιμοποιούν το GStreamer. Τα πρόσθετα μπορούν να αφορούν την υποστήριξη νέων μορφών πολυμέσων, ή νέα εφέ και λειτουργίες.</para>

  <para>Χρησιμοποιήστε το GStreamer οποτεδήποτε χρειαστείτε να διαβάσετε ή να αναπαράγετε πολυμέσα, ή αν η εφαρμογή σας κάνει επεξεργασία ήχου ή βίντεο. Η χρήση του GStreamer διευκολύνει την ανάπτυξη της εφαρμογής σας και σας παρέχει δοκιμασμένες λύσεις για την κάλυψη των αναγκών σας.</para>

  <para>Για αναλυτικές πληροφορίες σχετικά με το GStreamer, δείτε τα <ulink url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html">GStreamer Application Development Manual</ulink>, <ulink url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/">GStreamer 0.10 Core Reference Manual</ulink> και <ulink url="http://gstreamer.freedesktop.org/documentation/">GStreamer documentation page</ulink>.</para>
</section> <!-- multimedia -->

<section id="printing">
  <title>Εκτύπωση</title>

  <para>Οι περισσότερες εφαρμογές χρειάζονται υποστήριξη εκτύπωσης, καθώς οι χρήστες αναμένουν ότι θα μπορούν να εκτυπώσουν αυτό που βλέπουν στην οθόνη τους. Η πλατφόρμα GNOME παρέχει βιβλιοθήκες που επιτρέπουν στην εφαρμογή σας να υποστηρίζει εκτυπώσεις υψηλής ποιότητας.</para>

  <section id="gnomeprint">
    <title>GNOME Print</title>

    <para>Το πλαίσιο GNOME Print περιλαμβάνει δύο βιβλιοθήκες που επιτρέπουν στην εφαρμογή σας να παρέχει εκτύπωση υψηλής ποιότητας μέσω μιας ενιαίας διεπαφής. Η βάση του πλαισίου είναι η libgnomeprint, η βιβλιοθήκη που δημιουργεί την έξοδο PostScript που αποστέλλεται στον εκτυπωτή. Από πάνω βρίσκεται η libgnomeprintui, που παρέχει τους κλασικούς ελέγχους εκτύπωσης για τη διεπαφή χρήστη σας.</para>

    <note><para>Αυτή τη στιγμή γίνεται προσπάθεια απευθείας ενσωμάτωσης της εκτύπωσης στη GTK+, έτσι ώστε να δημιουργηθεί ένα API εκτύπωσης για πολλαπλές πλατφόρμες, που θα μπορούν να χρησιμοποιούν όλες οι εφαρμογές. Όταν προστεθεί η υποστήριξη εκτύπωσης στη GTK+, το τρέχον πλαίσιο εκτύπωσης του GNOME θα τελεί υπό κατάργηση. Παρόλα αυτά, προκειμένου να διασφαλιστεί η σταθερότητα των API και ABI, θα εξακολουθήσει να λειτουργεί και να υποστηρίζεται καθ' όλη τη διάρκεια ζωής του GNOME 2.</para></note>

    <para>Η βιβλιοθήκη libgnomeprint υλοποιεί το μοντέλο απεικόνισης PostScript, που χρησιμοποιείται από τους περισσότερους εκτυπωτές. Για τους εκτυπωτές που δεν υποστηρίζουν PostScript, μπορεί να παρασχεθεί υποστήριξη μέσω CUPS (περιγράφεται παρακάτω). Πέρα από την κλασική απεικόνιση PostScript, η libgnomeprint υποστηρίζει επίσης κανάλια άλφα και αντιταύτιση (anti-aliasing).</para>

    <para>Η βιβλιοθήκη libgnomeprintui παρέχει το συνήθη διάλογο εκτύπωσης, ένα διάλογο προεπισκόπησης εκτύπωσης, καθώς και διάφορους άλλους ελέγχους και λειτουργίες που απαιτούνται για την ενσωμάτωση της εκτύπωσης σε μία εύληπτη διεπαφή χρήστη. Το πλαίσιο εκτύπωσης του GNOME αναλαμβάνει τις λεπτομέρειες του εντοπισμού εκτυπωτών και της ανάθεσης (spooling) των εκτυπώσεων, ενώ επίσης προσφέρει εξαγωγή σε PostScript ή PDF απευθείας από το διάλογο εκτύπωσης.</para>

    <para>Χρησιμοποιήστε τη libgnomeprint για να μετατρέψετε σε PostScript περιεχόμενο προς εκτύπωση. Χρησιμοποιήστε τη libgnomeprintui για να δημιουργήσετε διεπαφή χρήστη για την εκτύπωση, ακόμη και αν η έξοδος προέρχεται από διαφορετική πηγή. Η χρήση του πλαισίου εκτύπωσης του GNOME παρέχει στους χρήστες σας μια ενιαία διεπαφή χρήστη, με όλες τις αναμενόμενες λειτουργίες μιας εφαρμογής εκτύπωσης.</para>
  </section>

  <section id="cups">
    <title>CUPS</title>

    <para>Στα περισσότερα συστήματα GNOME το CUPS (Common UNIX Printing System) λειτουργεί ως σύστημα εκτύπωσης χαμηλού επιπέδου. Το CUPS παρέχει μία σύγχρονη, πλούσια σε δυνατότητες, αρχιτεκτονική για τον εντοπισμό εκτυπωτών, την πρόσβαση στις επιλογές εκτύπωσης και την ανάθεση των εργασιών εκτύπωσης σε διάφορους τύπους εκτυπωτών.</para>

    <para>Το CUPS παρέχει μια σειρά από βοηθήματα για την αυτόματη ανακάλυψη τοπικών και δικτυακών εκτυπωτών. Έτσι, επιτρέπει στους χρήστες να βλέπουν όλους τους διαθέσιμους εκτυπωτές, αλλά και να χρησιμοποιούν διάφορους τύπους εκτυπωτών χωρίς να απαιτούνται χειροκίνητες ρυθμίσεις.</para>

    <para>Το CUPS παρέχει μια ενιαία διεπαφή εκτύπωσης, ανεξάρτητα από την τοποθεσία ή τον τύπο του εκτυπωτή. Το CUPS χειρίζεται άψογα διάφορα πρωτόκολλα εκτύπωσης, εφαρμόζοντας αυτόματα φίλτρα στο περιεχόμενο που αποστέλλεται στον εκτυπωτή. Αρκεί οι εφαρμογές να παρέχουν έξοδο PostScript και το CUPS θα κάνει αυτόματα τη μετατροπή όταν ο εκτυπωτής δεν υποστηρίζει εγγενώς PostScript.</para>

    <para>Το CUPS παρέχει επίσης επιλογές ρυθμίσεων για τους εκτυπωτές, με τη μορφή αρχείων PPD (PostScript Printer Description). Οι ρυθμίσεις PPD επιτρέπουν στις εφαρμογές να εμφανίζουν στο χρήστη όλες τις δυνατότητες κάθε μεμονωμένου εκτυπωτή μέσω μιας ενιαίας διεπαφής χρήστη. Για παράδειγμα, το PPD σας επιτρέπει να διαπιστώνετε αν ο εκτυπωτής υποστηρίζει την ταξινόμηση και συρραφή των εκτυπώσεων, ώστε να παρέχετε τη σχετική επιλογή στη διεπαφή χρήστη.</para>

    <para>Στις περισσότερες περιπτώσεις, οι εφαρμογές σας δεν χρειάζεται να αλληλεπιδρούν απευθείας με το CUPS. Χρησιμοποιώντας το πλαίσιο εκτύπωσης GNOME, έχουν αυτόματη πρόσβαση στην ισχύ και την ευελιξία του CUPS. Έτσι, η ύπαρξη του CUPS στο χαμηλό επίπεδο βελτιώνει την εμπειρία του χρήστη, μειώνοντας παράλληλα τον απαιτούμενο προγραμματισμό.</para>
  </section>
</section> <!-- printing -->

</chapter>
