Susanna Huhtanen ihmis.suski@gmail.com 2012 Ελληνική μεταφραστική ομάδα GNOME team@gnome.gr 2012-2015 Δημήτρης Σπίγγος dmtrs32@gmail.com 2012, 2013 Μαρία Θουκιδίδου marablack3@gmail.com 2014 Θάνος Τρυφωνίδης tomtryf@gmail.com 2014, 2015 Αυτόματα εργαλεία (Autotools) και εικονίδια

Σε αυτό το τμήμα του οδηγού θα κατασκευάσουμε τα αυτόματα εργαλεία και θα προσαρμόσουμε τα απαιτούμενα εικονίδια για την εφαρμογή καιρού για να είναι άρραφο μέρος της επιφάνειας εργασίας σας. Για να γράψετε και να τρέξετε όλα τα παραδείγματα κώδικα οι ίδιοι, χρειαζόσαστε έναν επεξεργαστή για να γράψιμο του κώδικα, τερματικό και GNOME 3 ή μεταγενέστερο εγκατεστημένο στον υπολογιστή σας. Σε αυτόν τον οδηγό θα εξετάσουμε τα παρακάτω μέρη:

Αυτόματα εργαλεία (Autotools)

Προσαρμοσμένα εικονίδια για την εφαρμογή σας

Αυτόματα εργαλεία (Autotools) και απαραίτητα αρχεία

Έχοντας περισσότερα από ένα αρχεία στον φάκελό σας κάνει τη χρήση του autotools λίγο περίπλοκο. Χρειαζόσαστε το αρχείο .desktop, autogen.sh, Makefile.am, configure.ac και ως νέο αρχείο: το αρχείο myapp.sh.in. Η επεξεργασία του αρχείου autotools είναι ένα περίπλοκο πεδίο. Περισσότερες πληροφορίες μπορείτε να βρείτε σε πολλές διαφορετικές πηγές, το άρθρο της βίκι παρέχει μια καλή επισκόπηση του θέματος.

weatherapp.desktop

weatherapp.sh.in

Makefile.am

configure.ac

autogen.sh

weatherapp.desktop

[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=Weather app Comment=Weather showing application Exec=weatherapp.sh Icon=application-default-icon Terminal=false Type=Application StartupNotify=true Categories=GNOME;GTK;Utility;

Αυτό που πρέπει να σημειώσετε σε αυτό το αρχείο είναι ότι η γραμμή Exec θα κάνει αυτό το αρχείο .desktop να δουλέψει μόνο μετά την εκτέλεση όλων των άλλων makefiles. Το Weatherapp.sh είναι ένα μικρό σενάριο κελύφους που δημιουργήθηκε με το weatherapp.sh.in.

weatherapp.sh.in

#!/bin/sh export GJS_PATH=@bindir@ gjs @bindir@/weatherapp.js

Αυτό το αρχείο είναι ένα πρότυπο στο αρχείο Makefile για να εκτελεστεί από .desktop.

Makefile.am

# Το ενεργό εκτελέσιμο πρόγραμμα ορίζεται στο θεμελιακό SCRIPTS . Το πρόθεμα bin_ λέει πού θα αντιγραφεί αυτό bin_SCRIPTS = weatherapp.js geonames.js weatherapp.sh # Ο κατάλογος αρχείων για διανομή EXTRA_DIST= \ $(bin_SCRIPTS) \ $(private_icons) \ $(NULL) CLEANFILES = # Τα αρχεία της επιφάνειας εργασίας desktopdir = $(datadir)/applications desktop_DATA =weatherapp.desktop # Κατάλληλη εντολή για εκτέλεση αντικαταστάσεων μεταβλητής Makefile σε μη Makefile # Αρχεία (σενάρια, αρχεία υπηρεσίας, κλπ.) do_subst = sed -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ -e 's|@abs_top_builddir[@]|$(abs_top_builddir)|g' \ -e 's|@localedir[@]|$(localedir)|g' \ -e 's|@bindir[@]|$(bindir)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' \ -e 's|@pkglibdir[@]|$(pkglibdir)|g' \ -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \ -e 's|@have_libnotify[@]|$(HAVE_LIBNOTIFY)|g' \ -e 's|@have_libsoup[@]|$(HAVE_LIBSOUP)|g' \ -e 's|@have_cheese[@]|$(HAVE_CHEESE)|g' weatherapp.sh: weatherapp.sh.in $(AM_V_GEN) $(do_subst) $< > $@ chmod +x $@ CLEANFILES += weatherapp.sh EXTRA_DIST += weatherapp.sh.in #Το εικονίδιο της εφαρμογής appicondir=$(datadir)/icons/hicolor/scalable/apps appicon_DATA=weather-icon.svg #Εικονίδια στην εφαρμογή NULL = private_icons = \ weather-clear.svg \ weather-few-clouds.svg \ weather-fog.svg \ weather-icon.svg \ weather-overcast.svg \ weather-showers.svg \ weather-showers-scattered.svg \ weather-snow.svg \ $(NULL) install-icons: for icon in $(private_icons); do \ mkdir -p $(DESTDIR)$(pkgdatadir)/icons/; \ $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/; \ done install-data-local: install-icons

Αυτό χρειάζεται λίγη περισσότερη εξήγηση. Συγκρινόμενο με το HelloWorld Makefile.am αυτό έχει αλλάξει αρκετά. Ας εξετάσουμε όλες τις νέες ομάδες:

Τα bin_scripts είναι αρχεία που απαιτούνται για την εκτέλεση της εφαρμογής σας. Σε αυτήν την περίπτωση τα δύο πρώτα είναι το ίδιο το πρόγραμμα και το τρίτο είναι το σενάριο που ξεκινά την εφαρμογή.

EXTRA_DIST είναι τα αρχεία που πρόκειται να διανεμηθούν

ομάδα do_subst είναι δυαδικά και κομμάτια που πρέπει να είναι εκεί που βρίσκονται

after the comment #icons in the application there are all the icons that are used by the program. For them to be useful you need to install the icons in correct places and that is done by the install-icons: bit

configure.ac

dnl This file is processed by autoconf to create a configure script AC_INIT([Weather App], 1.0) AM_INIT_AUTOMAKE([1.10 no-define foreign]) AC_CONFIG_FILES(Makefile) AC_OUTPUT

autogen.sh

#!/bin/sh # Αυτό θα εκτελέσει autoconf, automake, κλπ. για μας autoreconf --force --install
Προσαρμογή εικονιδίων για την εφαρμογή σας

Εάν σκέφτεστε τα προσαρμοσμένα εικονίδια ένας καλός πρόχειρος κανόνας είναι ο εξής: περιμένετε να δείτε αυτό το εικονίδιο να χρησιμοποιείται κάπου αλλού ή είναι μόνο για την εφαρμογή σας; Εάν συμβαίνει το πρώτο (π.χ. τα εικονίδια στο αρχείο της επιφάνειας εργασίας που εμφανίζονται από το κέλυφος) τότε χρειαζόσαστε /usr/share/hicolor, αλλιώς (π.χ. τα εικονίδια καιρού της εφαρμογής σας) /usr/share/$application/bla/bla

Χρησιμοποιώντας το autotools πρέπει να κάνετε μερικές αλλαγές στα αρχεία σας .desktop and Makefile.am. Στο αρχείο επιφάνειας εργασίας αλλάξτε το όνομα του εικονιδίου Icon=weather-icon. Στο αρχείο Makefile.am προσθέστε αυτές τις δύο γραμμές στο τέλος της εφαρμογή σας #the application icon

appicondir=$(datadir)/icons/hicolor/scalable/apps

appicon_DATA=weather-icon.svg