From c3398784e79047979d50dda9e2ebaab231ecc98f Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 26 Oct 2015 11:04:06 +0100 Subject: [PATCH 1/5] Add an AppData file. This file gets used by GNOME Software to present an application to users so they can install it from a software repository. --- gtk2_ardour/ardour.appdata.xml.in | 29 +++++++++++++++++++++++++++++ gtk2_ardour/wscript | 7 +++++++ 2 files changed, 36 insertions(+) create mode 100644 gtk2_ardour/ardour.appdata.xml.in diff --git a/gtk2_ardour/ardour.appdata.xml.in b/gtk2_ardour/ardour.appdata.xml.in new file mode 100644 index 0000000000..a7f4975cbb --- /dev/null +++ b/gtk2_ardour/ardour.appdata.xml.in @@ -0,0 +1,29 @@ + + + @ARDOUR_EXEC@.desktop + CC0-1.0 + GPL-2.0+ + Ardour + Digital Audio Workstation + +

+ Ardour is a multi-channel digital audio workstation, allowing you to + record, edit, mix and master audio and MIDI projects. +

+

+ It is targeted at audio engineers, musicians, soundtrack editors and + composers. +

+
+ http://ardour.org + + + http://community.ardour.org/files/images/ardour-editor-window-1600x900.png + The Editor window where you can arrange audio and MIDI data along a timeline + + + http://community.ardour.org/files/images/ardour-mixer-window-1600x900.png + The Mixer window which includes channel strips for each track and bus + + +
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 19c092fa3d..008fa1eae4 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -688,6 +688,13 @@ def build(bld): obj.target = 'ardour.xml' obj.chmod = Utils.O644 + obj = bld(features = 'subst') + obj.source = 'ardour.appdata.xml.in' + obj.target = str (bld.env['lwrcase_dirname']) + '.appdata.xml' + obj.chmod = Utils.O644 + obj.dict = freedesktop_subst_dict + set_subst_dict(obj, freedesktop_subst_dict) + # Keybindings # 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad', From 82f3e6bc3cb1bdc166f208f3fa6f49385f41a930 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 6 Nov 2015 16:57:39 +0100 Subject: [PATCH 2/5] Implement translation of AppData file. Use the ITS rules file from KDE for itstool: https://websvn.kde.org/trunk/l10n-kf5/scripts/as-metainfo.its?revision=1395611&view=markup --- ...ppdata.xml.in => ardour.appdata.xml.in.in} | 0 gtk2_ardour/wscript | 41 ++++++++++++++++++- tools/as-metainfo.its | 8 ++++ 3 files changed, 48 insertions(+), 1 deletion(-) rename gtk2_ardour/{ardour.appdata.xml.in => ardour.appdata.xml.in.in} (100%) create mode 100644 tools/as-metainfo.its diff --git a/gtk2_ardour/ardour.appdata.xml.in b/gtk2_ardour/ardour.appdata.xml.in.in similarity index 100% rename from gtk2_ardour/ardour.appdata.xml.in rename to gtk2_ardour/ardour.appdata.xml.in.in diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 008fa1eae4..a6c0af1a12 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -9,6 +9,8 @@ import re import time from waflib.Task import Task from waflib.Tools import winres +import subprocess +import glob # Mandatory variables top = '.' @@ -688,9 +690,12 @@ def build(bld): obj.target = 'ardour.xml' obj.chmod = Utils.O644 + # build appdata with translations + appdata_i18n_mo(bld) + appdata_i18n_xmlin(bld) obj = bld(features = 'subst') obj.source = 'ardour.appdata.xml.in' - obj.target = str (bld.env['lwrcase_dirname']) + '.appdata.xml' + obj.target = str (bld.env['lwrcase_dirname']) + '.appdata.xml' obj.chmod = Utils.O644 obj.dict = freedesktop_subst_dict set_subst_dict(obj, freedesktop_subst_dict) @@ -750,18 +755,52 @@ def i18n(bld): I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR'] autowaf.build_i18n(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources, 'Paul Davis') + appdata_i18n_pot(bld) + appdata_i18n_po(bld) def i18n_pot(bld): I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR'] autowaf.build_i18n_pot(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources, 'Paul Davis') + appdata_i18n_pot(bld) def i18n_po(bld): I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR'] autowaf.build_i18n_po(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources, 'Paul Davis') + appdata_i18n_po(bld) def i18n_mo(bld): I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR'] autowaf.build_i18n_mo(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources, 'Paul Davis') + +def appdata_i18n_pot(bld): + Logs.info('Generating pot file from Ardour appdata') + itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its') + potfile = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', + 'ardour.appdata.pot') + adsource = os.path.join(bld.top_dir, 'gtk2_ardour', + 'ardour.appdata.xml.in.in') + Logs.info('Updating ' + potfile) + subprocess.call(('itstool', '-i', itsfile, '-o', potfile, adsource)) + +def appdata_i18n_po(bld): + autowaf.build_i18n_po(bld, bld.top_dir, os.path.join( + 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy') + +def appdata_i18n_mo(bld): + autowaf.build_i18n_mo(bld, bld.top_dir, os.path.join( + 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy') + +def appdata_i18n_xmlin(bld): + itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its') + adxmlininfile = os.path.join(bld.top_dir, 'gtk2_ardour', + 'ardour.appdata.xml.in.in') + adxmlinfile = os.path.join(bld.top_dir, 'gtk2_ardour', + 'ardour.appdata.xml.in') + mo_glob = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'po', '*.mo') + mo_files = glob.glob(mo_glob) + Logs.info('Generating ' + adxmlinfile) + subprocess.call(['itstool', '-i', itsfile, '-o', adxmlinfile, + '-j', adxmlininfile] + mo_files) diff --git a/tools/as-metainfo.its b/tools/as-metainfo.its new file mode 100644 index 0000000000..d2530d40c9 --- /dev/null +++ b/tools/as-metainfo.its @@ -0,0 +1,8 @@ + + + + From 3bb06f460714c11ffbc1872104830a8d71e575df Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 6 Nov 2015 16:59:46 +0100 Subject: [PATCH 3/5] Add project version to AppData file. --- gtk2_ardour/ardour.appdata.xml.in.in | 3 +++ gtk2_ardour/wscript | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour.appdata.xml.in.in b/gtk2_ardour/ardour.appdata.xml.in.in index a7f4975cbb..1b2b940fb7 100644 --- a/gtk2_ardour/ardour.appdata.xml.in.in +++ b/gtk2_ardour/ardour.appdata.xml.in.in @@ -4,6 +4,9 @@ CC0-1.0 GPL-2.0+ Ardour + + + Digital Audio Workstation

diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index a6c0af1a12..38d93893d0 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -674,7 +674,8 @@ def build(bld): # Freedesktop freedesktop_subst_dict = { 'ARDOUR_EXEC' : str (bld.env['lwrcase_dirname']), - 'ARDOUR_ICON' : str (bld.env['lwrcase_dirname']) + 'ARDOUR_ICON' : str (bld.env['lwrcase_dirname']), + 'VERSION': str (bld.env['VERSION']), } if bld.env['FREEDESKTOP']: From 1fd052ea646429f59f090f3ddbbeea8e8c908521 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 6 Nov 2015 17:06:58 +0100 Subject: [PATCH 4/5] AppData: Add German translation. --- gtk2_ardour/appdata/po/de.po | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 gtk2_ardour/appdata/po/de.po diff --git a/gtk2_ardour/appdata/po/de.po b/gtk2_ardour/appdata/po/de.po new file mode 100644 index 0000000000..bb8029e8c0 --- /dev/null +++ b/gtk2_ardour/appdata/po/de.po @@ -0,0 +1,58 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2015-11-06 11:59+0100\n" +"PO-Revision-Date: 2015-11-06 16:00+0100\n" +"Last-Translator: Nils Philippsen \n" +"Language-Team: \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.5\n" +"X-Poedit-SourceCharset: UTF-8\n" + +# Intentionally left untranslated. +#. (itstool) path: component/name +#: /home/nils/src/ardour/gtk2_ardour/ardour.appdata.xml.in.in:6 +msgid "Ardour" +msgstr "" + +# Intentionally left untranslated. +#. (itstool) path: component/summary +#: /home/nils/src/ardour/gtk2_ardour/ardour.appdata.xml.in.in:8 +msgid "Digital Audio Workstation" +msgstr "" + +#. (itstool) path: description/p +#: /home/nils/src/ardour/gtk2_ardour/ardour.appdata.xml.in.in:10 +msgid "" +"Ardour is a multi-channel digital audio workstation, allowing you to record, " +"edit, mix and master audio and MIDI projects." +msgstr "" +"Ardour ist eine mehrkanalige Digital Audio Workstation (DAW), die es Ihnen " +"erlaubt, Audio- und MIDI-Projekte aufzunehmen, zu bearbeiten, zu mischen und " +"zu mastern." + +#. (itstool) path: description/p +#: /home/nils/src/ardour/gtk2_ardour/ardour.appdata.xml.in.in:14 +msgid "" +"It is targeted at audio engineers, musicians, soundtrack editors and " +"composers." +msgstr "" +"Es ist für Toningenieure, Musiker, Bearbeiter von Soundtracks und " +"Komponisten gedacht." + +#. (itstool) path: screenshot/caption +#: /home/nils/src/ardour/gtk2_ardour/ardour.appdata.xml.in.in:23 +msgid "" +"The Editor window where you can arrange audio and MIDI data along a timeline" +msgstr "" +"Das Editorfenster, in dem Sie Audio- und Midi-Daten entlang einer Zeitachse " +"anordnen können" + +#. (itstool) path: screenshot/caption +#: /home/nils/src/ardour/gtk2_ardour/ardour.appdata.xml.in.in:27 +msgid "The Mixer window which includes channel strips for each track and bus" +msgstr "Das Mixerfenster, das die Kanalzüge für alle Spuren und Busse enthält" From 85fe8e9feeccfde9444ff3256a71069a45c87ed1 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 23 Nov 2015 13:49:41 +0100 Subject: [PATCH 5/5] AppData: do the right thing on './waf clean' --- gtk2_ardour/wscript | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 38d93893d0..34bf3f04eb 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -777,14 +777,18 @@ def i18n_mo(bld): 'Paul Davis') def appdata_i18n_pot(bld): - Logs.info('Generating pot file from Ardour appdata') - itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its') potfile = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'ardour.appdata.pot') - adsource = os.path.join(bld.top_dir, 'gtk2_ardour', - 'ardour.appdata.xml.in.in') - Logs.info('Updating ' + potfile) - subprocess.call(('itstool', '-i', itsfile, '-o', potfile, adsource)) + if bld.cmd == 'build': + Logs.info('Generating pot file from Ardour appdata') + itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its') + adsource = os.path.join(bld.top_dir, 'gtk2_ardour', + 'ardour.appdata.xml.in.in') + Logs.info('Updating ' + potfile) + subprocess.call(('itstool', '-i', itsfile, '-o', potfile, adsource)) + elif bld.cmd == 'clean' and os.path.exists(potfile): + Logs.info('Removing Ardour appdata pot file') + os.remove(potfile) def appdata_i18n_po(bld): autowaf.build_i18n_po(bld, bld.top_dir, os.path.join( @@ -795,13 +799,17 @@ def appdata_i18n_mo(bld): 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy') def appdata_i18n_xmlin(bld): - itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its') - adxmlininfile = os.path.join(bld.top_dir, 'gtk2_ardour', - 'ardour.appdata.xml.in.in') adxmlinfile = os.path.join(bld.top_dir, 'gtk2_ardour', 'ardour.appdata.xml.in') - mo_glob = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'po', '*.mo') - mo_files = glob.glob(mo_glob) - Logs.info('Generating ' + adxmlinfile) - subprocess.call(['itstool', '-i', itsfile, '-o', adxmlinfile, - '-j', adxmlininfile] + mo_files) + if bld.cmd == 'build': + itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its') + adxmlininfile = os.path.join(bld.top_dir, 'gtk2_ardour', + 'ardour.appdata.xml.in.in') + mo_glob = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'po', '*.mo') + mo_files = glob.glob(mo_glob) + Logs.info('Generating ' + adxmlinfile) + subprocess.call(['itstool', '-i', itsfile, '-o', adxmlinfile, + '-j', adxmlininfile] + mo_files) + elif bld.cmd == 'clean' and os.path.exists(adxmlinfile): + Logs.info('Removing ' + adxmlinfile) + os.remove(adxmlinfile)