diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e5601ae..8f68f15 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,6 +11,7 @@ stages: variables: FDO_UPSTREAM_REPO: "dabrain34/GstPipelineStudio" + GNOME_RUNTIME_IMAGE: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.38" # Version and tag for our current container .fedora: @@ -86,3 +87,32 @@ clippy: - meson build - cargo clippy --version - cargo clippy --color=always --all-targets -- -D warnings + +flatpak: + image: $GNOME_RUNTIME_IMAGE + stage: "test" + only: + - flatpak + timeout: "120min" + variables: + MANIFEST_PATH: "build-aux/org.karapulse.KarapulseDevel.json" + APP_ID: "org.karapulse.KarapulseDevel" + BUNDLE: "karapulse-nightly.flatpak" + + script: + - flatpak-builder app ${MANIFEST_PATH} + - flatpak build-export repo app + - flatpak build-bundle repo ${BUNDLE} ${APP_ID} + + artifacts: + paths: + - $BUNDLE + expire_in: 1 days + + cache: + key: "flatpak" + paths: + - .flatpak-builder/downloads/ + - .flatpak-builder/git/ + - target/ + - target_test/ diff --git a/TODO.md b/TODO.md index 5a8b54e..e825442 100644 --- a/TODO.md +++ b/TODO.md @@ -43,12 +43,13 @@ - [x] Save node position in XML - [x] Autosave the graph - [ ] Check the pîpeline live +- [ ] Add probes on each pad to monitor the pipeline - [ ] Display pad properties with tooltip hover - [ ] Render a media file - [ ] Offer compatible element to a pad (autorender) - [ ] Display tags/meta/message detected - [ ] Seek to position -- [ ] Icon install +- [x] Icon install - [ ] Flatpak infrastructure - [ ] handle the caps setter - [x] Logger in file/app all over the app diff --git a/data/icons/AUTHORS b/data/icons/AUTHORS new file mode 100644 index 0000000..e5be413 --- /dev/null +++ b/data/icons/AUTHORS @@ -0,0 +1,3 @@ +Designed by Freepik from Flaticon. +https://www.flaticon.com/premium-icon/pipeline_1191012 +https://www.flaticon.com/premium-icon/pipeline_1190961 diff --git a/data/icons/meson.build b/data/icons/meson.build new file mode 100644 index 0000000..bf57c91 --- /dev/null +++ b/data/icons/meson.build @@ -0,0 +1,9 @@ +install_data( + '@0@.svg'.format(base_id), + install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps' +) + +install_data( + '@0@-symbolic.svg'.format(base_id), + install_dir: iconsdir / 'hicolor' / 'symbolic' / 'apps', +) diff --git a/data/icons/org.freedesktop.dabrain34.GstPipelineStudio-symbolic.svg b/data/icons/org.freedesktop.dabrain34.GstPipelineStudio-symbolic.svg new file mode 100644 index 0000000..2be5b15 --- /dev/null +++ b/data/icons/org.freedesktop.dabrain34.GstPipelineStudio-symbolic.svg @@ -0,0 +1,826 @@ + + + + + + + + + + diff --git a/data/icons/pipeline.svg b/data/icons/org.freedesktop.dabrain34.GstPipelineStudio.svg similarity index 100% rename from data/icons/pipeline.svg rename to data/icons/org.freedesktop.dabrain34.GstPipelineStudio.svg diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..bb016e8 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,50 @@ +subdir('icons') + +desktop_conf = configuration_data() +desktop_conf.set('icon', base_id) +desktop_file = configure_file( + input: '@0@.desktop.in'.format(base_id), + output: '@BASENAME@', + configuration: desktop_conf +) + +if desktop_file_validate.found() + test( + 'validate-desktop', + desktop_file_validate, + args: [ + desktop_file + ], + ) +endif + +install_data( + desktop_file, + install_dir: datadir / 'applications' +) + +# Appdata +appdata_conf = configuration_data() +appdata_conf.set('app-id', application_id) +appdata_conf.set('gettext-package', gettext_package) +appdata_file = i18n.merge_file ( + input: configure_file( + input: '@0@.appdata.xml.in.in'.format(base_id), + output: '@BASENAME@', + configuration: appdata_conf + ), + output: '@0@.appdata.xml'.format(application_id), + po_dir: podir, + install: true, + install_dir: datadir / 'metainfo' +) +# Validate Appdata +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test( + 'validate-appdata', appstream_util, + args: [ + 'validate-relax', '--nonet', appdata_file.full_path() + ] + ) +endif \ No newline at end of file diff --git a/data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in b/data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in new file mode 100644 index 0000000..d027ba4 --- /dev/null +++ b/data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in @@ -0,0 +1,61 @@ + + + + @app-id@ + CC0 + GPL-3.0+ + GstPipelineStudio + Draw your own GStreamer pipeline... + +

GstPipelineStudio aims to provide a graphical user interface to the GStreamer framework. From a first step in the framework with a simple pipeline to a complex pipeline debugging, the tool provides a friendly interface to add elements to a pipeline and debug it.

+
+ + + https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio/-/blob/dab_infra_update/data/screenshots/gps_screenshot.png + Player rendering video + + + https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio + https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio/issues + + Audio + Video + Development + + Stéphane Cerveau + scerveau@collabora.com + @gettext-package@ + @app-id@.desktop + + + + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + +
diff --git a/data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in b/data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in new file mode 100644 index 0000000..64c8951 --- /dev/null +++ b/data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=GstPipelineStudio +GenericName=GPS +Comment=A GUI for GStreamer +Type=Application +Exec=gps_pipeline_studio +Terminal=false +Categories=AudioVideo;Audio;Video;Midi;Settings;GNOME;GTK; +Icon=@icon@ \ No newline at end of file diff --git a/meson.build b/meson.build index e11444b..c2fdb3f 100644 --- a/meson.build +++ b/meson.build @@ -56,9 +56,9 @@ cargo_sources = files( 'Cargo.lock', ) -#subdir('data') +subdir('data') subdir('src') -#subdir('po') +subdir('po') meson.add_dist_script( diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..527e861 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1 @@ +fr diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..9c78add --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,5 @@ +data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in +data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in.in +data/org.freedesktop.dabrain34.GstPipelineStudio.gschema.xml.in + +src/app.rs diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..40f62b9 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,61 @@ +# French translations for gps package. +# Copyright (C) 2019 THE gps'S COPYRIGHT HOLDER +# This file is distributed under the same license as the GstPipelineStudio package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gps\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-29 22:56+0200\n" +"PO-Revision-Date: 2019-09-29 22:46+0200\n" +"Last-Translator: Stéphane Cerveau \n" +"Language-Team: none\n" +"Language: fr\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" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:7 +#: data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in:4 +msgid "GstPipelineStudio" +msgstr "GstPipelineStudio" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:8 +msgid "Draw your own GStreamer pipeline..." +msgstr "Dessine ton propre GStreamer pipeline..." + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:10 +msgid "" +"GstPipelineStudio aims to provide a graphical user interface to the GStreamer framework. " +"From a first step in the framework with a simple pipeline to a complex pipeline debugging, " +"the tool provides a friendly interface to add elements to a pipeline and debug it." +msgstr "GstPipelineStudio a pour but de fournir une interface utilisateur au logiciel GStreamer. " +"Du premier pas dans GStreamer avec un simple pipeline à une version plus complexe avec debogage, l'outil offre " +"une interface intuitive pour ajouter des elements à un pipeline pour l'examiner." + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in.in:4 +msgid "A GUI for GStreamer" +msgstr "Une interface utilisateur pour GStreamer" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:15 +msgid "Player rendering video" +msgstr "Rendu video dans le lecteur" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:26 +msgid "Searching song using the mobile client" +msgstr "" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:35 +msgid "Guillaume Desmottes" +msgstr "" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in:9 +msgid "@icon@" +msgstr "" + +#: src/app.rs:344 +msgid "GPS is ready" +msgstr "GPS est prêt" diff --git a/po/gps.pot b/po/gps.pot new file mode 100644 index 0000000..838cd62 --- /dev/null +++ b/po/gps.pot @@ -0,0 +1,61 @@ +# French translations for GstPipelineStudio package. +# Copyright (C) 2019 THE GstPipelineStudio'S COPYRIGHT HOLDER +# This file is distributed under the same license as the GstPipelineStudio package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gps\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-29 22:56+0200\n" +"PO-Revision-Date: 2019-09-29 22:46+0200\n" +"Last-Translator: Stéphane Cerveau \n" +"Language-Team: none\n" +"Language: fr\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" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:7 +#: data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in:4 +msgid "GstPipelineStudio" +msgstr "GstPipelineStudio" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:8 +msgid "Draw your own GStreamer pipeline..." +msgstr "Dessine ton propre GStreamer pipeline..." + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:10 +msgid "" +"GstPipelineStudio aims to provide a graphical user interface to the GStreamer framework. " +From a first step in the framework with a simple pipeline to a complex pipeline debugging, " +the tool provides a friendly interface to add elements to a pipeline and debug it." +msgstr "GstPipelineStudio a pour but de fournir une interface utilisateur au logiciel GStreamer. " +Du premier pas dans GStreamer avec un simple pipeline à une version plus complexe avec debogage, l'outil offre " +une interface intuitive pour ajouter des elements à un pipeline pour l'examiner." + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in.in:4 +msgid "A GUI for GStreamer" +msgstr "Une interface utilisateur pour GStreamer" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:15 +msgid "Player rendering video" +msgstr "Rendu video dans le lecteur" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:26 +msgid "Searching song using the mobile client" +msgstr "" + +#: data/org.freedesktop.dabrain34.GstPipelineStudio.appdata.xml.in.in:35 +msgid "Guillaume Desmottes" +msgstr "" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.freedesktop.dabrain34.GstPipelineStudio.desktop.in:9 +msgid "@icon@" +msgstr "" + +#: src/app.rs:344 +msgid "GPS is ready" +msgstr "GPS est prêt" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 0000000..57d1266 --- /dev/null +++ b/po/meson.build @@ -0,0 +1 @@ +i18n.gettext(gettext_package, preset: 'glib')