# AboutDialog (JavaScript)

Taryn Fox
jewelfox@fursona.net 2012
Εμφάνιση πληροφοριών για μια εφαρμογή
Δημήτρης Σπίγγος
dmtrs32@gmail.com 2012, 2013

# AboutDialog

Ένα παράθυρο αναγκαστικού διαλόγου που εμφανίζει πληροφορίες για μια εφαρμογή και τους δημιουργούς της. Αυτό εμφανίζεται με κλικ στο "Περί" στο μενού της εφαρμογής, που είναι κανονικά μια καλή θέση για να το βάλετε.

#!/usr/bin/gjs

const Gio = imports.gi.Gio; const GLib = imports.gi.GLib; const Gtk = imports.gi.Gtk; const Lang = imports.lang;

const AboutDialogExample = new Lang.Class({ Name: 'AboutDialog Example',

// Δημιουργία αυτής καθεαυτής της εφαρμογής _init: function() { this.application = new Gtk.Application({ application_id: 'org.example.jsaboutdialog', flags: Gio.ApplicationFlags.FLAGS_NONE });

// Σύνδεση των σημάτων 'activate' και 'startup' στις συναρτήσεις επανάκλησης this.application.connect('activate', Lang.bind(this, this._onActivate)); this.application.connect('startup', Lang.bind(this, this._onStartup)); },

// Η συνάρτηση επανάκλησης για το σήμα 'activate' παρουσιάζει παράθυρα όταν είναι ενεργή _onActivate: function() { this._window.present(); },

// Η συνάρτηση επανάκλησης για το σήμα 'startup' δημιουργεί το μενού και κατασκευάζει τη διεπαφή χρήστη _onStartup: function() { this._initMenus(); this._buildUI(); },

// Δόμηση της διεπαφής χρήστη της εφαρμογής _buildUI: function(){ // Δημιουργία του παραθύρου της εφαρμογής this._window = new Gtk.ApplicationWindow({ application: this.application, window_position: Gtk.WindowPosition.CENTER, title: "AboutDialog Example", default_height: 250, default_width: 350 });

// Εμφάνιση του παραθύρου κι όλων των θυγατρικών γραφικών συστατικών this._window.show_all(); },

// Δημιουργία του μενού της εφαρμογής _initMenus: function() { let menu = new Gio.Menu(); menu.append("About", 'app.about'); menu.append("Quit",'app.quit'); this.application.set_app_menu(menu);

// Δημιουργία της επιλογής μενού "About" για να καλέσει την _showAbout() function let aboutAction = new Gio.SimpleAction({ name: 'about' }); aboutAction.connect('activate', Lang.bind(this, function() { this._showAbout(); })); this.application.add_action(aboutAction);

// Δημιουργία της επιλογής μενού "Quit" που κλείνει το παράθυρο let quitAction = new Gio.SimpleAction ({ name: 'quit' }); quitAction.connect('activate', Lang.bind(this, function() { this._window.destroy(); })); this.application.add_action(quitAction); },

_showAbout: function() {

// Πίνακες συμβολοσειρών των ονομάτων των ατόμων που εμπλέκονται στο έργο var authors = ["GNOME Documentation Team"]; var documenters = ["GNOME Documentation Team"];

// Δημιουργία του διαλόγου περί let aboutDialog = new Gtk.AboutDialog({ title: "AboutDialog Example", program_name: "GtkApplication Example", copyright: "Copyright \xa9 2012 GNOME Documentation Team", authors: authors, documenters: documenters, website: "http://developer.gnome.org", website_label: "GNOME Developer Website" });

// Προσάρτηση του διαλόγου περί στο παράθυρο aboutDialog.modal = true; aboutDialog.transient_for = this._window;

// Εμφάνιση του διαλόγου περί aboutDialog.show();

// Σύνδεση του κουμπιού κλεισίματος με το σήμα καταστροφής του διαλόγου aboutDialog.connect('response', function() { aboutDialog.destroy(); }); } });

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

Σε αυτό το παράδειγμα χρησιμοποιήσαμε τα παρακάτω:

GMenu

GSimpleAction

Gtk.AboutDialog

Gtk.Application

Gtk.ApplicationWindow