Forráskód Böngészése

Update for new Invercargill version + add manifest for USM

Billy Barrow 2 napja
szülő
commit
8bfd4fb85d

+ 61 - 0
MANIFEST.usm

@@ -0,0 +1,61 @@
+{
+  "name": "publicate",
+  "version": "0.1",
+  "summary": "gtk4/libadwaita application for creating, editing and publishing ppubs",
+  "licences": [ {"name": "GPLv3", "category": "libre", "text": "LICENSE"} ],
+  "md": "README.md",
+  "url": "https://git.sr.ht/~tilo15/Publicate",
+  "icon": "nz.barrow.billy.publicate.svg",
+  "flags": ["ninjaStyleProgress"],
+  "provides": {
+    "bin:publicate": "as-expected",
+    "app:nz.barrow.billy.publicate.desktop": "as-expected",
+    "res:icons/hicolor/scalable/apps/nz.barrow.billy.publicate.svg": "as-expected",
+    "res:icons/hicolor/symbolic/apps/nz.barrow.billy.publicate-symbolic.svg": "as-expected",
+    "res:publicate/gtk-source-view/PpubMarkdown.lang": "as-expected"
+  },
+  "depends": {
+    "runtime": [
+      "lib:libglib-2.0.so.0",
+      "lib:libgobject-2.0.so.0",
+      "lib:libgio-2.0.so.0",
+      "lib:libjson-glib-1.0.so.0",
+      "lib:libgee-0.8.so.2",
+      "lib:libadwaita-1.so.0",
+      "lib:libgtk-4.so.1",
+      "lib:libgdk_pixbuf-2.0.so.0",
+      "lib:libinvercargill-1.so",
+      "lib:libgtkcommonmark.so",
+      "lib:libppub.so",
+      "lib:libpprf.so",
+      "lib:libgtksourceview-5.so.0",
+      "lib:libspelling-1.so.2"
+    ],
+    "build": [
+      "bin:valac",
+      "bin:meson",
+      "bin:ninja",
+      "bin:gcc",
+      "pc:glib-2.0.pc",
+      "pc:gobject-2.0.pc",
+      "pc:gio-2.0.pc",
+      "pc:json-glib-1.0.pc",
+      "pc:gee-0.8.pc",
+      "pc:libadwaita-1.pc",
+      "pc:invercargill-1.pc",
+      "pc:gtk4.pc",
+      "pc:gtkcommonmark.pc",
+      "pc:libppub.pc",
+      "pc:libpprf.pc",
+      "pc:gtksourceview-5.pc",
+      "pc:libspelling-1.pc"
+    ],
+    "manage": [
+      "bin:bash"
+    ]
+  },
+  "execs": {
+    "build": "usm-scripts/build.sh",
+    "install": "usm-scripts/install.sh"
+  }
+}

+ 3 - 2
src/CollectionService.vala

@@ -1,4 +1,5 @@
 using Invercargill;
+using Invercargill.DataStructures;
 
 namespace Publicate {
 
@@ -22,7 +23,7 @@ namespace Publicate {
 
         public async void add_collection(CollectionConfig collection) throws Error {
             var config = yield get_collection_config();
-            yield save_collection(config.with(collection));
+            yield save_collection(config.concat(Iterate.single(collection)));
         }
 
         public async void remove_collection(CollectionConfig collection) throws Error {
@@ -51,7 +52,7 @@ namespace Publicate {
         public async void add_collection_by_uri(string uri) throws Error {
             var col_uri = new Ppub.CollectionUri.from_string(uri);
             var client = yield do_in_bg<Pprf.Client>(() => Pprf.get_client_for_uri(col_uri));
-            var collection = yield do_in_bg<Ppub.Collection>(() => client.get_collection(new BinaryData.from_byte_array(col_uri.collection_id)));
+            var collection = yield do_in_bg<Ppub.Collection>(() => client.get_collection(new ByteComposition.from_byte_array(col_uri.collection_id)));
 
             get_collection_folder(collection.id);
             var config = new CollectionConfig();

+ 4 - 3
src/CollectionView.vala

@@ -1,3 +1,4 @@
+using Invercargill.DataStructures;
 using Adw;
 using Gtk;
 
@@ -81,10 +82,10 @@ namespace Publicate {
             try {
                 var client = yield window.collection_service.get_client(config);
                 osd_bar.fraction = 0.25;
-                var collection_id = new Invercargill.BinaryData.from_base64(config.collection_id);
+                var collection_id = new Invercargill.ByteComposition.from_base64(config.collection_id);
                 var results = yield do_in_bg<Pprf.Messages.CollectionListing>(() => client.get_listing(collection_id, 0, 255,  Pprf.Messages.ListingColumn.TITLE | Pprf.Messages.ListingColumn.AUTHOR | Pprf.Messages.ListingColumn.POSTER));
 
-                var with_images = new Invercargill.Series<PublicationRow>();
+                var with_images = new Invercargill.DataStructures.Series<PublicationRow>();
                 foreach (var res in results.results) {
                     var row = new PublicationRow(res);
                     row.unpublish_clicked.connect(name => unpublish.begin(name));
@@ -165,7 +166,7 @@ namespace Publicate {
             try {
                 progress.display_progress(@"Connecting to $(config.domain)…", 0.0);
                 var client = yield window.collection_service.get_client(config);
-                var collection_id = new Invercargill.BinaryData.from_base64(config.collection_id);
+                var collection_id = new Invercargill.ByteComposition.from_base64(config.collection_id);
                 progress.display_progress(@"Requesting publication…", 0.0);
                 var result = yield do_in_bg<Pprf.Messages.Publication>(() => client.get_publication(collection_id, name));
                 progress.display_progress(@"Downloading publication…", 0.0);

+ 9 - 1
src/Editor.vala

@@ -1,3 +1,4 @@
+using Invercargill.DataStructures;
 using Adw;
 using Gtk;
 
@@ -371,7 +372,14 @@ namespace Publicate {
         }
 
         private bool app_close_request() {
-            if(Invercargill.Convert.gte(open_editors.values).any(e => e.has_unsaved_changes)) {
+            bool have_unsaved = false;
+            foreach(var e in open_editors.values) {
+                if(e.has_unsaved_changes) {
+                    have_unsaved = true;
+                    break;
+                }
+            }
+            if(have_unsaved) {
                 var prompt = new Adw.MessageDialog(window, "Save Changes?", "There are editors with unsaved changes, would you like to save them before closing?");
                 prompt.add_response("cancel", "Cancel");
                 prompt.add_response("discard", "Discard");

+ 4 - 4
src/Editors/MarkdownEditor.vala

@@ -207,7 +207,7 @@ namespace Publicate.Editors {
             var compression_info = new Ppub.CompressionInfo(article_stream);
             article_stream.seek(0, SeekType.SET);
 
-            builder.add_asset(asset.name, asset.mimetype, article_stream, Invercargill.empty<string>(), compression_info);
+            builder.add_asset(asset.name, asset.mimetype, article_stream, Invercargill.Iterate.nothing<string>(), compression_info);
             set_tab_name(false);
         }
 
@@ -312,7 +312,7 @@ namespace Publicate.Editors {
                 multi_line = (iter_start.get_line() != iter_end.get_line());
             }
 
-            var classes = Invercargill.Convert.ate<string>(source_buffer.get_context_classes_at_iter(iter_start));
+            var classes = Invercargill.Wrap.array<string>(source_buffer.get_context_classes_at_iter(iter_start));
 
             // Disable formatting changes if the selection is over many lines or the "no-format" class is applied
             toolbar.sensitive = !multi_line && !classes.any(c => c == "no-format");
@@ -331,7 +331,7 @@ namespace Publicate.Editors {
             if(iter.ends_line()) {
                 iter.backward_char();
             }
-            var classes = Invercargill.Convert.ate<string>(source_buffer.get_context_classes_at_iter(iter));
+            var classes = Invercargill.Wrap.array<string>(source_buffer.get_context_classes_at_iter(iter));
             var heading = classes.first_or_default(c => c.has_prefix("h") && c.length == 2);
             if(heading != null) {
                 var level = int.parse(heading[1:2]);
@@ -352,7 +352,7 @@ namespace Publicate.Editors {
             if(iter.ends_line()) {
                 iter.backward_char();
             }
-            var classes = Invercargill.Convert.ate<string>(source_buffer.get_context_classes_at_iter(iter));
+            var classes = Invercargill.Wrap.array<string>(source_buffer.get_context_classes_at_iter(iter));
             var line_no = iter.get_line();
 
             var heading = classes.first_or_default(c => c.has_prefix("h") && c.length == 2);

+ 2 - 3
src/Editors/MetadataEditor.vala

@@ -2,7 +2,6 @@ using Gtk;
 using Adw;
 using GtkCommonMark;
 using Invercargill;
-using Invercargill.Convert;
 
 namespace Publicate.Editors {
 
@@ -156,7 +155,7 @@ namespace Publicate.Editors {
             author_email.text = metadata.author_email ?? "";
             poster.set_selected_item (metadata.poster ?? "");
             description.text = metadata.description ?? "";
-            tags.text = ate(metadata.tags).to_string (a => a, " ");
+            tags.text = string.joinv(" ", metadata.tags ?? new string[0]);
 
             copyright.text = metadata.copyright ?? "";
             licence.set_selected_item (metadata.licence ?? "");
@@ -205,7 +204,7 @@ namespace Publicate.Editors {
             var compression_info = new Ppub.CompressionInfo(stream);
             stream.seek(0, SeekType.SET);
 
-            builder.add_asset(asset.name, asset.mimetype, stream, Invercargill.empty<string>(), compression_info);
+            builder.add_asset(asset.name, asset.mimetype, stream, Invercargill.Iterate.nothing<string>(), compression_info);
             set_changed(false);
         }
 

+ 1 - 1
src/Editors/PlainTextEditor.vala

@@ -75,7 +75,7 @@ namespace Publicate.Editors {
             var compression_info = new Ppub.CompressionInfo(article_stream);
             article_stream.seek(0, SeekType.SET);
 
-            builder.add_asset(asset.name, asset.mimetype, article_stream, Invercargill.empty<string>(), compression_info);
+            builder.add_asset(asset.name, asset.mimetype, article_stream, Invercargill.Iterate.nothing<string>(), compression_info);
             set_tab_name(false);
         }
 

+ 1 - 1
src/Editors/VideoManifestEditor.vala

@@ -186,7 +186,7 @@ namespace Publicate.Editors {
             var compression_info = new Ppub.CompressionInfo(stream);
             stream.seek(0, SeekType.SET);
 
-            builder.add_asset(asset.name, asset.mimetype, stream, Invercargill.empty<string>(), compression_info);
+            builder.add_asset(asset.name, asset.mimetype, stream, Invercargill.Iterate.nothing<string>(), compression_info);
             set_changed(false);
         }
 

+ 1 - 0
src/FileChooser.vala

@@ -1,3 +1,4 @@
+using Invercargill.DataStructures;
 using Adw;
 using Gtk;
 

+ 2 - 1
src/FileExplorer.vala

@@ -1,6 +1,7 @@
 using Adw;
 using Gtk;
 using Invercargill;
+using Invercargill.DataStructures;
 
 namespace Publicate {
 
@@ -41,7 +42,7 @@ namespace Publicate {
             create_list();
 
             assets = files.to_series();
-            file_items = new Invercargill.Series<FileItem>();
+            file_items = new Invercargill.DataStructures.Series<FileItem>();
             
             foreach(var asset in assets) {
                 var item = new FileItem(asset);

+ 1 - 1
src/Identities/IdentityList.vala

@@ -69,7 +69,7 @@ namespace Publicate {
             identity_list.remove_all();
             var dir = Dir.open(get_publicate_path() + "/credentials", 0);
             string name = null;
-            var creds = new Invercargill.Vector<Ppub.CollectionMemberCredentials>();
+            var creds = new Invercargill.DataStructures.Vector<Ppub.CollectionMemberCredentials>();
             while((name = dir.read_name()) != null) {
                 string cred_str;
                 FileUtils.get_contents(get_publicate_path() + "/credentials/" + name, out cred_str, null);

+ 2 - 1
src/Licences/Licence.vala

@@ -1,3 +1,4 @@
+using Invercargill.DataStructures;
 namespace Publicate.Licences {
 
     public abstract class Licence {
@@ -11,7 +12,7 @@ namespace Publicate.Licences {
     }
 
     public static Invercargill.Enumerable<Licence> get_available_licences() {
-        return Invercargill.Convert.ate(new Licence[] {
+        return Invercargill.Wrap.array(new Licence[] {
             new CreativeCommonsBy(),
             new CreativeCommonsBySa(),
             new CreativeCommonsByNd(),

+ 3 - 3
src/PublishWindow.vala

@@ -242,7 +242,7 @@ namespace Publicate {
                 show_error("Server not found", @"Could not find PPRF server details for $(config.domain): $(e.message)");
                 return;
             }
-            cid = new BinaryData.from_base64(config.collection_id);
+            cid = new ByteComposition.from_base64(config.collection_id);
 
             loader_status.set_text(@"Querying $(config.domain) for collection information…");
             try {
@@ -279,7 +279,7 @@ namespace Publicate {
                 show_error("Server not found", @"Could not find PPRF server details for $(config.domain): $(e.message)");
                 return;
             }
-            cid = new BinaryData.from_base64(config.collection_id);
+            cid = new ByteComposition.from_base64(config.collection_id);
 
             loader_status.set_text(@"Querying $(config.domain) for collection information…");
             try {
@@ -398,7 +398,7 @@ namespace Publicate {
             pulse_loader();
             loader_status.set_text(@"Computing publication checksum…");
             try {
-                var checksum = yield do_in_bg<BinaryData>(() => new BinaryData.from_byte_array(Pprf.Util.file_checksum(publication_file)));
+                var checksum = yield do_in_bg<BinaryData>(() => new ByteComposition.from_byte_array(Pprf.Util.file_checksum(publication_file)));
 
                 loader_status.set_text(@"Signing publication…");
                 var timestamp = old_publish_timestamp;

+ 2 - 2
src/Savable.vala

@@ -23,7 +23,7 @@ namespace Publicate {
             var compression = new Ppub.CompressionInfo(stream, compression_policy);
             stream = publication.read_asset(asset.name);
 
-            builder.add_asset(asset.name, asset.mimetype, stream, Invercargill.empty<string>(), compression);
+            builder.add_asset(asset.name, asset.mimetype, stream, Invercargill.Iterate.nothing<string>(), compression);
         }
     }
 
@@ -42,7 +42,7 @@ namespace Publicate {
         }
 
         public void save_asset(Ppub.Builder builder) throws Error {
-            builder.add_asset(name, mimetype, stream, Invercargill.empty<string>(), compression);
+            builder.add_asset(name, mimetype, stream, Invercargill.Iterate.nothing<string>(), compression);
         }
     }
 }

+ 3 - 2
src/Video/EncodingProfile.vala

@@ -1,3 +1,4 @@
+using Invercargill.DataStructures;
 
 namespace Publicate.Video {
 
@@ -35,7 +36,7 @@ namespace Publicate.Video {
         var xiph_360 = new TheoraVideo360pProfile() {alternative_to = vp9_360};
         var xiph_240 = new TheoraVideo240pProfile() {alternative_to = vp9_240};
 
-        return Invercargill.Convert.ate(new EncodingProfile[] {
+        return Invercargill.Wrap.array(new EncodingProfile[] {
             new Vp9Video1080pHighFramerateProfile (),
             new Vp9Video1080pLowFramerateProfile (),
             vp9_720,
@@ -58,7 +59,7 @@ namespace Publicate.Video {
         var avc_480 = new H264Video480pProfile() {alternative_to = vp9_480};
         var avc_240 = new H264Video240pProfile() {alternative_to = xiph_240};
 
-        return Invercargill.Convert.ate(new EncodingProfile[] {
+        return Invercargill.Wrap.array(new EncodingProfile[] {
             new Vp9Video1080pHighFramerateProfile (),
             new Vp9Video1080pLowFramerateProfile (),
             vp9_720,

+ 1 - 0
src/Video/VideoProcessor.vala

@@ -1,3 +1,4 @@
+using Invercargill.DataStructures;
 using Gtk;
 using Adw;
 

+ 1 - 1
src/Wizards/Standard.vala

@@ -96,7 +96,7 @@ namespace Publicate.Wizards {
             var compression_info = new Ppub.CompressionInfo(article_stream);
             article_stream.seek(0, SeekType.SET);
 
-            builder.add_asset("article.md", "text/markdown", article_stream, Invercargill.empty<string>(), compression_info);
+            builder.add_asset("article.md", "text/markdown", article_stream, Invercargill.Iterate.nothing<string>(), compression_info);
 
             var output_stream = file.replace(null, false, FileCreateFlags.REPLACE_DESTINATION);
             builder.write(output_stream);

+ 3 - 3
src/Wizards/Video.vala

@@ -124,14 +124,14 @@ namespace Publicate.Wizards {
             var compression_info = new Ppub.CompressionInfo(manifest_stream);
             manifest_stream.seek(0, SeekType.SET);
 
-            builder.add_asset("video.ppvm", "application/x-ppvm", manifest_stream, Invercargill.empty<string>(), compression_info);
+            builder.add_asset("video.ppvm", "application/x-ppvm", manifest_stream, Invercargill.Iterate.nothing<string>(), compression_info);
 
             var description_data = @"**$(title.text)**".to_utf8();
             var description_stream = new MemoryInputStream.from_data((uint8[])description_data);
             compression_info = new Ppub.CompressionInfo(description_stream);
             description_stream.seek(0, SeekType.SET);
 
-            builder.add_asset("video_description.md", "text/markdown", description_stream, Invercargill.empty<string>(), compression_info);
+            builder.add_asset("video_description.md", "text/markdown", description_stream, Invercargill.Iterate.nothing<string>(), compression_info);
 
             if(thumbnail_file.selected_file != null) {
                 yield add_file(builder, thumbnail_file.selected_file, Ppub.CompressionPolicy.AUTO);
@@ -169,7 +169,7 @@ namespace Publicate.Wizards {
             stream.seek(0, SeekType.SET, null);
 
             var mimetype = Ppub.guess_mimetype(file.get_basename(), sample);
-            builder.add_asset(file.get_basename(), mimetype, stream, Invercargill.empty<string>(), compression);
+            builder.add_asset(file.get_basename(), mimetype, stream, Invercargill.Iterate.nothing<string>(), compression);
         }
 
     }

+ 1 - 1
src/meson.build

@@ -54,7 +54,7 @@ dependencies = [
     dependency('gio-2.0'),
     dependency('gee-0.8'),
     dependency('libadwaita-1'),
-    dependency('invercargill'),
+    dependency('invercargill-1'),
     dependency('gtk4'),
     dependency('gtkcommonmark'),
     dependency('libppub'),

+ 10 - 0
usm-scripts/build.sh

@@ -0,0 +1,10 @@
+#!/bin/bash
+set -e
+
+src_dir=$(pwd)
+build_dir=$1
+
+cd ${build_dir}
+
+meson setup ${src_dir}/src --prefix=${PREFIX} --libdir=${LIBDIR} --bindir=${BINDIR} --includedir=${INCLUDEDIR}
+ninja

+ 10 - 0
usm-scripts/install.sh

@@ -0,0 +1,10 @@
+#!/bin/bash
+set -e
+
+src_dir=$(pwd)
+build_dir=$1
+install_dir=$2
+
+cd ${build_dir}
+
+meson install --destdir ${install_dir}