Blame platform-demos/el/statusbar.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="statusbar.js" xml:lang="el">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Γραμμή κατάστασης (JavaScript)</title>
Packit 1470ea
    <link type="guide" xref="beginner.js#display-widgets"/>
Packit 1470ea
    <revision version="0.1" date="2012-06-10" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Taryn Fox</name>
Packit 1470ea
      <email its:translate="no">jewelfox@fursona.net</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Εμφάνιση ειδοποιήσεων σε μια αφοσιωμένη γραμμή κατάστασης</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>Γραμμή κατάστασης</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/statusbar2.png"/>
Packit 1470ea
  

Αυτή η γραμμή κατάστασης κρατά ίχνη του αριθμού των φορών που πατήσατε ένα κουμπί. Εφαρμογές όπως <link href="http://projects.gnome.org/gedit/">gedit</link> χρησιμοποιούν τις γραμμές κατάστασης για εμφάνιση πληροφοριών με μια ματιά, και εμφάνιση ειδοποιήσεων χωρίς διακοπή του χρήστη.

Packit 1470ea
  

Μηνύματα που προωθούνται σε μια γραμμή κατάστασης πηγαίνουν στην κορυφή της στοίβα της και μπορούν να φεύγουν για να εμφανίσουν την επόμενη πιο πρόσφατη. Μπορείτε επίσης να καθαρίσετε κάθε μήνυμα συγκεκριμένου τύπου μονομιάς. Αυτό το παράδειγμα εφαρμογής δείχνει αυτές τις συναρτήσεις.

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

Αυτές είναι οι βιβλιοθήκες που χρειαζόμαστε να εισάγουμε αυτήν την εφαρμογή για να εκτελεστεί. Να θυμόσαστε ότι η γραμμή που λέει στο GNOME ότι χρησιμοποιούμε Gjs χρειάζεται πάντοτε να πάει στην αρχή.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
  <section id="applicationwindow">
Packit 1470ea
    <title>Δημιουργία του παραθύρου εφαρμογής</title>
Packit 1470ea
    
Packit 1470ea
const StatusbarExample = new Lang.Class({
Packit 1470ea
    Name: 'Statusbar Example',
Packit 1470ea
Packit 1470ea
    // Δημιουργία της εφαρμογής αυτής καθεαυτής
Packit 1470ea
    _init: function() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jsstatusbar',
Packit 1470ea
            flags: Gio.ApplicationFlags.FLAGS_NONE
Packit 1470ea
        });
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
    // Η συνάρτηση επανάκλησης για το σήμα 'activate' παρουσιάζει ένα παράθυρο όταν είναι ενεργή
Packit 1470ea
    _onActivate: function() {
Packit 1470ea
        this._window.present();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    // Η συνάρτηση επανάκλησης για το σήμα 'startup' δομεί τη διεπαφή χρήστη
Packit 1470ea
    _onStartup: function() {
Packit 1470ea
        this._buildUI ();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    

Όλος ο κώδικας για αυτό το παράδειγμα πηγαίνει στην κλάση StatusbarExample. Ο παραπάνω κώδικας δημιουργεί μια <link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link> για να μπουν μέσα τα γραφικά στοιχεία μας και τα παράθυρα.

Packit 1470ea
    
Packit 1470ea
    // Δόμηση της διεπαφής χρήστη της εφαρμογής
Packit 1470ea
    _buildUI: function() {
Packit 1470ea
Packit 1470ea
        // Δημιουργία του παραθύρου της εφαρμογής
Packit 1470ea
        this._window = new Gtk.ApplicationWindow({
Packit 1470ea
            application: this.application,
Packit 1470ea
            window_position: Gtk.WindowPosition.CENTER,
Packit 1470ea
            default_height: 120,
Packit 1470ea
            default_width: 300,
Packit 1470ea
            title: "Button Clicker"})·
Packit 1470ea
Packit 1470ea
        // Δημιουργία μιας φατνωμένης διεπαφής
Packit 1470ea
        this._panes = new Gtk.Paned ({
Packit 1470ea
            orientation: Gtk.Orientation.VERTICAL })·
Packit 1470ea
Packit 1470ea
    

Η συνάρτηση _buildUI είναι εκεί που βάζουμε όλο τον κώδικα για δημιουργία διεπαφής χρήστη της εφαρμογής. Το πρώτο βήμα είναι η δημιουργία ενός νέου <link href="GtkApplicationWindow.js.page">Παράθυρο εφαρμογής Gtk (Gtk.ApplicationWindow)</link> για να μπουν μέσα όλα τα γραφικά στοιχεία. Το επόμενο βήμα είναι η δημιουργία μιας κάθετα προσανατολισμένης διεπαφής Gtk.Paned, για διαίρεση του παραθύρου σε δύο ενότητες. Αυτός ο τρόπος της γραμμής κατάστασης φαίνεται όπως αυτών που χρησιμοποιούνται σε άλλες εφαρμογές και παραμένει στη βάση του παραθύρου, ακόμα κι αν ο χρήστης το αυξομειώσει.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="buttons">
Packit 1470ea
    <title>Δημιουργία κουμπιών</title>
Packit 1470ea
    
Packit 1470ea
        // Δημιουργία του κύριου πλήκτρου
Packit 1470ea
        this._clickMe = new Gtk.Button ({
Packit 1470ea
            label: "Click Me!" });
Packit 1470ea
        this._clickMe.connect ("clicked", Lang.bind (this, this._clicked));
Packit 1470ea
Packit 1470ea
        // Δημιουργία του πλήκτρου επιστροφής
Packit 1470ea
        this._backButton = new Gtk.Button ({
Packit 1470ea
            label: "gtk-go-back",
Packit 1470ea
            use_stock: true });
Packit 1470ea
        this._backButton.connect ("clicked", Lang.bind (this, this._back));
Packit 1470ea
Packit 1470ea
        // Δημιουργία του πλήκτρου καθαρισμού
Packit 1470ea
        this._clearButton = new Gtk.Button ({
Packit 1470ea
            label: "gtk-clear",
Packit 1470ea
            use_stock: true });
Packit 1470ea
        this._clearButton.connect ("clicked", Lang.bind (this, this._clear));
Packit 1470ea
Packit 1470ea
    

Αυτός ο κώδικας δημιουργεί τα τρία <link href="button.js.page">Κουμπιά Gtk (Gtk.Buttons)</link> που θα χρησιμοποιήσουμε για την προώθηση ενός νέου μηνύματος στη γραμμή κατάστασης, κλείνοντας το τελευταίο και καθαρίζοντας όλα τα υπάρχοντα μηνύματα. Τα κουμπιά "πίσω" και "καθαρισμός" είναι <link href="https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html">κουμπιά παρακαταθήκης</link>, που μεταφράζονται αυτόματα σε οποιαδήποτε γλώσσα υποστηρίζει το GNOME.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Τοποθέτηση των κουμπιών σε πλέγμα
Packit 1470ea
        this._grid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
        this._grid.attach (this._backButton, 0, 0, 1, 1);
Packit 1470ea
        this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);
Packit 1470ea
        this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);
Packit 1470ea
Packit 1470ea
        // Τοποθέτηση του πλέγματος σε ένα μεγάλο πλαίσιο που γεμίζει το περισσότερο παράθυρο
Packit 1470ea
        this._topFrame = new Gtk.Frame ({
Packit 1470ea
            border_width: 20,
Packit 1470ea
            height_request: 90,
Packit 1470ea
            width_request: 300});
Packit 1470ea
        this._topFrame.add (this._grid);
Packit 1470ea
Packit 1470ea
    

Αυτός ο κώδικας δημιουργεί το <link href="grid.js.page">Gtk.Grid</link> που θα χρησιμοποιήσουμε για οργάνωση των κουμπιών και επισυνάπτει τα κουμπιά σε αυτό σε σειρά. Δημιουργεί έπειτα ένα <link href="paned.js.page">Gtk.Frame</link> που θα καταλάβει το περισσότερο παράθυρο και έχει μεγάλη ποσότητα συμπλήρωσης γύρω από τα κουμπιά και προσθέτει το πλέγμα στο πλαίσιο. Σημειώστε ότι θα χρειαστούμε ακόμα να βάλουμε το πλαίσιο στη φάτνωμα διεπαφή και έπειτα θα το προσθέσουμε στο ApplicationWindow.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="statusbar">
Packit 1470ea
    <title>Δημιουργία της γραμμής κατάστασης</title>
Packit 1470ea
    
Packit 1470ea
        // Δημιουργία της γραμμής κατάστασης
Packit 1470ea
        this._statusbar = new Gtk.Statusbar();
Packit 1470ea
Packit 1470ea
        // Παρακολούθηση των αριθμών των φορών που το πλήκτρο πατήθηκε
Packit 1470ea
        this.Clicks = 0;
Packit 1470ea
        this.ContextID = this._statusbar.get_context_id ("Number of Clicks");
Packit 1470ea
Packit 1470ea
        // Δίνει στη γραμμή κατάστασης ένα αρχικό μήνυμα
Packit 1470ea
        this._statusbar.push (this.ContextID, "Number of clicks: " + this.Clicks);
Packit 1470ea
Packit 1470ea
        // Τοποθέτηση της γραμμής κατάστασης σε δικό της πλαίσιο στο τέλος
Packit 1470ea
        this._barFrame = new Gtk.Frame ({
Packit 1470ea
            height_request: 30 });
Packit 1470ea
        this._barFrame.add (this._statusbar);
Packit 1470ea
Packit 1470ea
    

Εδώ δημιουργούμε τη Gtk.Statusbar, και προωθούμε ένα μήνυμα σε αυτό για ξεκίνημα. Έπειτα του δίνουμε το δικό του στενό πλαίσιο στον πάτο του παραθύρου.

Packit 1470ea
    

Κάθε μήνυμα χρειάζεται να έχει μια ταυτότητα συμφραζομένων, που είναι μια ακέραιη τιμή που μπορείτε να πάρετε από τη γραμμή κατάστασης με τη συνάρτηση get_context_id(). Η μόνη παράμετρος του είναι η τιμή συμβολοσειράς που χρησιμοποιείτε για περιγραφή αυτής της συγκεκριμένης ταυτότητας συμφραζομένων. Κανονικά, θα πάρετε μια νέα ταυτότητα συμφραζομένων για διαφορετικά είδη μηνυμάτων, έτσι που να μπορείτε να χρησιμοποιήσετε τη συνάρτηση remove() για να αφαιρέσετε ένα συγκεκριμένο μήνυμα και όχι μόνο το πιο πρόσφατο στη στοίβα. Αυτό είναι ένα απλό παράδειγμα με μόνο ένα είδος μηνύματος, αν και, έτσι χρησιμοποιούμε μόνο ένα για καθένα.

Packit 1470ea
    

Χρησιμοποιούμε τη συνάρτηση push() για την προώθηση ενός νέου μηνύματος στη στοίβα. Η πρώτη της παράμετρος είναι η ταυτότητα συμφραζόμενων και η δεύτερή της είναι το μήνυμα.

Packit 1470ea
    
Packit 1470ea
        // Συγκέντρωση των πλαισίων στη φατνωμένη διεπαφή
Packit 1470ea
        this._panes.pack1 (this._topFrame, true, false);
Packit 1470ea
        this._panes.pack2 (this._barFrame, false, false);
Packit 1470ea
Packit 1470ea
        // Τοποθέτηση των φατνωμάτων στο παράθυρο
Packit 1470ea
        this._window.add (this._panes);
Packit 1470ea
Packit 1470ea
        // Εμφάνιση του παραθύρου και όλων των θυγατρικών γραφικών στοιχείων
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    

Αυτός ο κώδικας τελειώνει δημιουργώντας το παράθυρο, πακετάροντας τα πλαίσια μέσα στο φάτνωμα, το προσθέτει στο παράθυρο και λέει στο παράθυρο να εμφανίσει όλα τα θυγατρικά γραφικά στοιχεία.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="functions">
Packit 1470ea
    <title>Συναρτήσεις για αλληλεπίδραση με τη γραμμή κατάστασης</title>
Packit 1470ea
    
Packit 1470ea
    _clicked: function() {
Packit 1470ea
Packit 1470ea
        // Αύξηση του αριθμού των πατημάτων κατά 1
Packit 1470ea
        this.Clicks++;
Packit 1470ea
Packit 1470ea
        // Ενημέρωση της γραμμής κατάστασης με τον νέο αριθμό πατημάτων
Packit 1470ea
        this._statusbar.push (this.ContextID, "Number of clicks: " + this.Clicks);
Packit 1470ea
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
    _back: function () {
Packit 1470ea
Packit 1470ea
        // Αν υπήρξαν πατήματα, μείωση κατά 1 και αφαίρεση της τελευταίας ενημέρωσης της γραμμής κατάστασης
Packit 1470ea
        if (this.Clicks > 0 ) {
Packit 1470ea
            this.Clicks--;
Packit 1470ea
            this._statusbar.pop (this.ContextID);
Packit 1470ea
        };
Packit 1470ea
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
    _clear: function () {
Packit 1470ea
Packit 1470ea
        // Επαναφορά του αριθμού των πατημάτων
Packit 1470ea
        this.Clicks = 0;
Packit 1470ea
Packit 1470ea
        // Εκκαθάριση όλων των μηνυμάτων που προωθήθηκαν στη γραμμή κατάστασης
Packit 1470ea
        this._statusbar.remove_all (this.ContextID);
Packit 1470ea
Packit 1470ea
        // Επαναφορά του μηνύματος της γραμμής κατάστασης
Packit 1470ea
        this._statusbar.push (this.ContextID, "Number of clicks: " + this.Clicks);
Packit 1470ea
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
});
Packit 1470ea
Packit 1470ea
    

Εδώ έχουμε συναρτήσεις που δείχνουν προώθηση μηνύματος στη στοίβα, διώχνοντας την κορυφή του από αυτό και καθαρίζοντας όλα τα μηνύματα της συγκεκριμένης ταυτότητας συμφραζομένων. Η συνάρτηση pop() παίρνει μόνο μια παράμετρο, που είναι η ταυτότητα συμφραζομένων για τον τύπο του μηνύματος που θέλετε να διώξετε από το πιο πρόσφατο. Η συνάρτηση remove_all() δουλεύει με τον ίδιο τρόπο, εκτός από την αφαίρεση όλων των μηνυμάτων αυτού του τύπου από τη στοίβα.

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

Τελικά, δημιουργούμε ένα νέο παράδειγμα της τελειωμένης κλάσης StatusbarExample και εκτελούμε την εφαρμογή.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="complete">
Packit 1470ea
    <title>Δείγμα πλήρους κώδικα</title>
Packit 1470ea
#!/usr/bin/gjs
Packit 1470ea
Packit 1470ea
imports.gi.versions.Gtk = '3.0';
Packit 1470ea
Packit 1470ea
const Gio = imports.gi.Gio;
Packit 1470ea
const Gtk = imports.gi.Gtk;
Packit 1470ea
Packit 1470ea
class StatusbarExample {
Packit 1470ea
Packit 1470ea
    // Create the application itself
Packit 1470ea
    constructor() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jsstatusbar',
Packit 1470ea
            flags: Gio.ApplicationFlags.FLAGS_NONE
Packit 1470ea
        });
Packit 1470ea
Packit 1470ea
        // Connect 'activate' and 'startup' signals to the callback functions
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
    // Callback function for 'activate' signal presents window when active
Packit 1470ea
    _onActivate() {
Packit 1470ea
        this._window.present();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Callback function for 'startup' signal builds the UI
Packit 1470ea
    _onStartup() {
Packit 1470ea
        this._buildUI();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Build the application's UI
Packit 1470ea
    _buildUI() {
Packit 1470ea
Packit 1470ea
        // Create the application window
Packit 1470ea
        this._window = new Gtk.ApplicationWindow({
Packit 1470ea
            application: this.application,
Packit 1470ea
            window_position: Gtk.WindowPosition.CENTER,
Packit 1470ea
            default_height: 120,
Packit 1470ea
            default_width: 300,
Packit 1470ea
            title: "Button Clicker"});
Packit 1470ea
Packit 1470ea
        // Create a paned interface
Packit 1470ea
        this._panes = new Gtk.Paned ({
Packit 1470ea
            orientation: Gtk.Orientation.VERTICAL });
Packit 1470ea
Packit 1470ea
        // Create the main button
Packit 1470ea
        this._clickMe = new Gtk.Button ({
Packit 1470ea
            label: "Click Me!" });
Packit 1470ea
        this._clickMe.connect ("clicked", this._clicked.bind(this));
Packit 1470ea
Packit 1470ea
        // Create the back button
Packit 1470ea
        this._backButton = new Gtk.Button ({
Packit 1470ea
            label: "gtk-go-back",
Packit 1470ea
            use_stock: true });
Packit 1470ea
        this._backButton.connect ("clicked", this._back.bind(this));
Packit 1470ea
Packit 1470ea
        // Create the clear button
Packit 1470ea
        this._clearButton = new Gtk.Button ({
Packit 1470ea
            label: "gtk-clear",
Packit 1470ea
            use_stock: true });
Packit 1470ea
        this._clearButton.connect ("clicked", this._clear.bind(this));
Packit 1470ea
Packit 1470ea
        // Put the buttons in a grid
Packit 1470ea
        this._grid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
        this._grid.attach (this._backButton, 0, 0, 1, 1);
Packit 1470ea
        this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);
Packit 1470ea
        this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);
Packit 1470ea
Packit 1470ea
        // Put the grid in a large frame that fills most of the window
Packit 1470ea
        this._topFrame = new Gtk.Frame ({
Packit 1470ea
            border_width: 20,
Packit 1470ea
            height_request: 90,
Packit 1470ea
            width_request: 300});
Packit 1470ea
        this._topFrame.add (this._grid);
Packit 1470ea
Packit 1470ea
        // Create the statusbar
Packit 1470ea
        this._statusbar = new Gtk.Statusbar();
Packit 1470ea
Packit 1470ea
        // Keep track of the number of times the button has been clicked
Packit 1470ea
        this.Clicks = 0;
Packit 1470ea
        this.ContextID = this._statusbar.get_context_id ("Number of Clicks");
Packit 1470ea
Packit 1470ea
        // Give the statusbar an initial message
Packit 1470ea
        this._statusbar.push (this.ContextID, "Number of clicks: " + this.Clicks);
Packit 1470ea
Packit 1470ea
        // Put the statusbar in its own frame at the bottom
Packit 1470ea
        this._barFrame = new Gtk.Frame ({
Packit 1470ea
            height_request: 30 });
Packit 1470ea
        this._barFrame.add (this._statusbar);
Packit 1470ea
Packit 1470ea
        // Assemble the frames into the paned interface
Packit 1470ea
        this._panes.pack1 (this._topFrame, true, false);
Packit 1470ea
        this._panes.pack2 (this._barFrame, false, false);
Packit 1470ea
Packit 1470ea
        // Put the panes into the window
Packit 1470ea
        this._window.add (this._panes);
Packit 1470ea
Packit 1470ea
        // Show the window and all child widgets
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _clicked() {
Packit 1470ea
Packit 1470ea
        // Increment the number of clicks by 1
Packit 1470ea
        this.Clicks++;
Packit 1470ea
Packit 1470ea
        // Update the statusbar with the new number of clicks
Packit 1470ea
        this._statusbar.push (this.ContextID, "Number of clicks: " + this.Clicks);
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _back() {
Packit 1470ea
Packit 1470ea
        // If there have been any clicks, decrement by 1 and remove last statusbar update
Packit 1470ea
        if (this.Clicks > 0 ) {
Packit 1470ea
            this.Clicks--;
Packit 1470ea
            this._statusbar.pop (this.ContextID);
Packit 1470ea
        };
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _clear() {
Packit 1470ea
Packit 1470ea
        // Reset the number of clicks
Packit 1470ea
        this.Clicks = 0;
Packit 1470ea
Packit 1470ea
        // Wipe out all the messages pushed to the statusbar
Packit 1470ea
        this._statusbar.remove_all (this.ContextID);
Packit 1470ea
Packit 1470ea
        // Reset the statusbar's message
Packit 1470ea
        this._statusbar.push (this.ContextID, "Number of clicks: " + this.Clicks);
Packit 1470ea
    }
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
// Run the application
Packit 1470ea
let app = new StatusbarExample ();
Packit 1470ea
app.application.run (ARGV);
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="in-depth">
Packit 1470ea
    <title>Τεκμηρίωση σε βάθος</title>
Packit 1470ea
<list>
Packit 1470ea
  <item>

<link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link>

</item>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html">Gtk.ApplicationWindow</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html">Gtk.Button</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Frame.html">Gtk.Frame</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Paned.html">Gtk.Paned</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Statusbar.html">Gtk.Statusbar</link>

</item>
Packit 1470ea
</list>
Packit 1470ea
  </section>
Packit 1470ea
</page>