commit 0e9fb0c4a0d9d7691129d978665c9a384a939c90
parent 0ae0c60ee0a080cc2c0006bf1f1a5770325e702a
Author: MTRNord <mtrnord1@gmail.com>
Date: Mon, 11 Nov 2024 21:58:01 +0100
Update README instructions, Add a finished notification, fix progress text alignment, add more restart buttons, update translations
Diffstat:
10 files changed, 136 insertions(+), 85 deletions(-)
diff --git a/README.md b/README.md
@@ -9,7 +9,7 @@ HEIC2JPG is an application to batch convert HEIC images to JPG images. It is pac
## Building the project
```shell
-flatpak install --user org.gnome.Sdk//46 org.gnome.Platform//46 org.freedesktop.Sdk.Extension.rust-stable//23.08 org.freedesktop.Sdk.Extension.llvm16//23.08
+flatpak install --user org.gnome.Sdk//47 org.gnome.Platform//47 org.freedesktop.Sdk.Extension.rust-stable//24.08 org.freedesktop.Sdk.Extension.llvm18//24.08
flatpak-builder --user flatpak_app build-aux/dev.nordgedanken.heic2jpg.Devel.json
```
diff --git a/build-aux/dev.nordgedanken.heic2jpg.Devel.json b/build-aux/dev.nordgedanken.heic2jpg.Devel.json
@@ -10,7 +10,6 @@
"command": "heic2jpg",
"finish-args": [
"--share=ipc",
- "--filesystem=host:create",
"--socket=fallback-x11",
"--socket=wayland",
"--device=dri",
diff --git a/data/dev.nordgedanken.heic2jpg.desktop.in.in b/data/dev.nordgedanken.heic2jpg.desktop.in.in
@@ -10,3 +10,5 @@ Keywords=Gnome;GTK;
# TRANSLATORS: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=@icon@
StartupNotify=true
+DBusActivatable=true
+X-GNOME-UsesNotifications=true
diff --git a/data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in b/data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in
@@ -5,17 +5,17 @@
<metadata_license>CC0</metadata_license>
<project_license>AGPL-3.0</project_license>
<name>Heic2JPG</name>
- <summary>A small app to batch convert heic images to jpg</summary>
+ <summary>A small app to batch convert heic images to jpg.</summary>
<description>
- <p>A small app to batch convert heic images to jpg.</p>
+ <p>A small app to batch convert heic images to jpg from an input folder to an output folder.</p>
</description>
<categories>
<category>Graphics</category>
</categories>
<screenshots>
<screenshot type="default">
- <image xml:lang="en">https://github.com/MTRNord/heic2jpg/raw/main/data/resources/screenshots/screenshot1.png</image>
- <caption xml:lang="en">Main window</caption>
+ <image>https://github.com/MTRNord/heic2jpg/raw/main/data/resources/screenshots/screenshot1.png</image>
+ <caption>Main window</caption>
</screenshot>
</screenshots>
<url type="homepage">https://github.com/MTRNord/heic2jpg</url>
diff --git a/po/de.po b/po/de.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: heic2jpg main\n"
"Report-Msgid-Bugs-To: https://github.com/MTRNord/heic2jpg/issues\n"
-"POT-Creation-Date: 2024-11-10 14:37+0100\n"
-"PO-Revision-Date: 2024-11-10 14:38+0100\n"
+"POT-Creation-Date: 2024-11-11 21:54+0100\n"
+"PO-Revision-Date: 2024-11-11 21:56+0100\n"
"Last-Translator: MTRNord <mtrnord@nordgedanken.dev>\n"
"Language-Team: \n"
"Language: de_DE\n"
@@ -45,13 +45,17 @@ msgid "Window maximized state"
msgstr "Fenster Maximierungszustand"
#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:8
-msgid "A small app to batch convert heic images to jpg"
-msgstr "Eine kleine Anwendung um viele heic bilder nach jpg umzuwandeln"
-
-#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:10
msgid "A small app to batch convert heic images to jpg."
msgstr "Eine kleine Anwendung um viele heic bilder nach jpg umzuwandeln."
+#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:10
+msgid ""
+"A small app to batch convert heic images to jpg from an input folder to an "
+"output folder."
+msgstr ""
+"Eine kleine Anwendung um viele HEIC Bilder aus einem Ordner nach JPG in "
+"einem anderen Ordner umzuwandeln."
+
#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:18
msgid "Main window"
msgstr "Haupt Fenster"
@@ -77,47 +81,47 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr "Beenden"
-#: src/app.rs:104
+#: src/app.rs:108
msgid "Convert Heic to JPG"
msgstr "Wandle Heic nach JPG"
-#: src/app.rs:117
+#: src/app.rs:122
msgid "Converting"
msgstr "Umwandeln"
-#: src/app.rs:118
+#: src/app.rs:123
msgid "Please wait while the conversion is in progress"
msgstr "Bitte warte während die Umwandlung stattfindet"
-#: src/app.rs:129
+#: src/app.rs:152 src/app.rs:373
msgid "Conversion Complete"
msgstr "Umwandlung vollständig"
-#: src/app.rs:130
+#: src/app.rs:153 src/app.rs:374
msgid "The conversion was successful"
msgstr "Die Umwandlung war erfolgreich"
-#: src/app.rs:144
+#: src/app.rs:180
msgid "Conversion Failed"
msgstr "Umwandlung fehlgeschlagen"
-#: src/app.rs:148
+#: src/app.rs:189
msgid "Close"
msgstr "Schließen"
-#: src/app.rs:173
+#: src/app.rs:221
msgid "Start Conversion"
msgstr "Umwandlung beginnen"
-#: src/app.rs:174
+#: src/app.rs:222
msgid "Click the button below to start the conversion"
msgstr "Drücke den Knopf um die Umwandlung zu beginnen"
-#: src/app.rs:181
+#: src/app.rs:229
msgid "Convert"
msgstr "Umwandeln"
-#: src/app.rs:300
+#: src/app.rs:363
msgid "Please select both input and output folders"
msgstr "Bitte wähle sowohl Eingabe- als auch Ausgabe-Ordner aus"
@@ -125,22 +129,22 @@ msgstr "Bitte wähle sowohl Eingabe- als auch Ausgabe-Ordner aus"
msgid "Select Folder"
msgstr "Verzeichnis wählen"
-#: src/select_folder.rs:68
-msgid "Abort"
-msgstr "Abbrechen"
+#: src/select_folder.rs:70
+msgid "Restart"
+msgstr "Von vorne beginnen"
-#: src/select_folder.rs:84
+#: src/select_folder.rs:87
msgid "Select the folder where the Heic files can be found"
msgstr "Wähle einen Ordner in dem sich die Heic Dateien befinden"
-#: src/select_folder.rs:85
+#: src/select_folder.rs:88
msgid "Select input directory"
msgstr "Wähle das Eingabeverzeichnis"
-#: src/select_folder.rs:88
+#: src/select_folder.rs:91
msgid "Select the folder where the JPG files are meant to be saved"
msgstr "Wähle einen Ordner in dem die JPG Dateien gespeichert werden sollen"
-#: src/select_folder.rs:89
+#: src/select_folder.rs:92
msgid "Select output directory"
msgstr "Wähle das Ausgabeverzeichnis"
diff --git a/po/en.po b/po/en.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: heic2jpg main\n"
"Report-Msgid-Bugs-To: https://github.com/MTRNord/heic2jpg/issues\n"
-"POT-Creation-Date: 2024-11-10 14:59+0100\n"
-"PO-Revision-Date: 2024-11-10 14:59+0100\n"
+"POT-Creation-Date: 2024-11-11 21:54+0100\n"
+"PO-Revision-Date: 2024-11-11 21:55+0100\n"
"Last-Translator: MTRNord <mtrnord@nordgedanken.dev>\n"
"Language-Team: \n"
"Language: en\n"
@@ -45,13 +45,17 @@ msgid "Window maximized state"
msgstr "Window maximized state"
#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:8
-msgid "A small app to batch convert heic images to jpg"
-msgstr "A small app to batch convert heic images to jpg"
-
-#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:10
msgid "A small app to batch convert heic images to jpg."
msgstr "A small app to batch convert heic images to jpg."
+#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:10
+msgid ""
+"A small app to batch convert heic images to jpg from an input folder to an "
+"output folder."
+msgstr ""
+"A small app to batch convert heic images to jpg from an input folder to an "
+"output folder."
+
#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:18
msgid "Main window"
msgstr "Main window"
@@ -77,47 +81,47 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr "Quit"
-#: src/app.rs:104
+#: src/app.rs:108
msgid "Convert Heic to JPG"
msgstr "Convert Heic to JPG"
-#: src/app.rs:117
+#: src/app.rs:122
msgid "Converting"
msgstr "Converting"
-#: src/app.rs:118
+#: src/app.rs:123
msgid "Please wait while the conversion is in progress"
msgstr "Please wait while the conversion is in progress"
-#: src/app.rs:130
+#: src/app.rs:152 src/app.rs:373
msgid "Conversion Complete"
msgstr "Conversion Complete"
-#: src/app.rs:131
+#: src/app.rs:153 src/app.rs:374
msgid "The conversion was successful"
msgstr "The conversion was successful"
-#: src/app.rs:145
+#: src/app.rs:180
msgid "Conversion Failed"
msgstr "Conversion Failed"
-#: src/app.rs:150
+#: src/app.rs:189
msgid "Close"
msgstr "Close"
-#: src/app.rs:175
+#: src/app.rs:221
msgid "Start Conversion"
msgstr "Start Conversion"
-#: src/app.rs:176
+#: src/app.rs:222
msgid "Click the button below to start the conversion"
msgstr "Click the button below to start the conversion"
-#: src/app.rs:183
+#: src/app.rs:229
msgid "Convert"
msgstr "Convert"
-#: src/app.rs:302
+#: src/app.rs:363
msgid "Please select both input and output folders"
msgstr "Please select both input and output folders"
@@ -125,22 +129,22 @@ msgstr "Please select both input and output folders"
msgid "Select Folder"
msgstr "Select Folder"
-#: src/select_folder.rs:68
-msgid "Abort"
-msgstr "Abort"
+#: src/select_folder.rs:70
+msgid "Restart"
+msgstr "Restart"
-#: src/select_folder.rs:84
+#: src/select_folder.rs:87
msgid "Select the folder where the Heic files can be found"
msgstr "Select the folder where the Heic files can be found"
-#: src/select_folder.rs:85
+#: src/select_folder.rs:88
msgid "Select input directory"
msgstr "Select input directory"
-#: src/select_folder.rs:88
+#: src/select_folder.rs:91
msgid "Select the folder where the JPG files are meant to be saved"
msgstr "Select the folder where the JPG files are meant to be saved"
-#: src/select_folder.rs:89
+#: src/select_folder.rs:92
msgid "Select output directory"
msgstr "Select output directory"
diff --git a/po/heic2jpg.pot b/po/heic2jpg.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: heic2jpg main\n"
"Report-Msgid-Bugs-To: https://github.com/MTRNord/heic2jpg/issues\n"
-"POT-Creation-Date: 2024-11-10 14:59+0100\n"
+"POT-Creation-Date: 2024-11-11 21:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -43,11 +43,13 @@ msgid "Window maximized state"
msgstr ""
#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:8
-msgid "A small app to batch convert heic images to jpg"
+msgid "A small app to batch convert heic images to jpg."
msgstr ""
#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:10
-msgid "A small app to batch convert heic images to jpg."
+msgid ""
+"A small app to batch convert heic images to jpg from an input folder to an "
+"output folder."
msgstr ""
#: data/dev.nordgedanken.heic2jpg.metainfo.xml.in.in:18
@@ -75,47 +77,47 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr ""
-#: src/app.rs:104
+#: src/app.rs:108
msgid "Convert Heic to JPG"
msgstr ""
-#: src/app.rs:117
+#: src/app.rs:122
msgid "Converting"
msgstr ""
-#: src/app.rs:118
+#: src/app.rs:123
msgid "Please wait while the conversion is in progress"
msgstr ""
-#: src/app.rs:130
+#: src/app.rs:152 src/app.rs:373
msgid "Conversion Complete"
msgstr ""
-#: src/app.rs:131
+#: src/app.rs:153 src/app.rs:374
msgid "The conversion was successful"
msgstr ""
-#: src/app.rs:145
+#: src/app.rs:180
msgid "Conversion Failed"
msgstr ""
-#: src/app.rs:150
+#: src/app.rs:189
msgid "Close"
msgstr ""
-#: src/app.rs:175
+#: src/app.rs:221
msgid "Start Conversion"
msgstr ""
-#: src/app.rs:176
+#: src/app.rs:222
msgid "Click the button below to start the conversion"
msgstr ""
-#: src/app.rs:183
+#: src/app.rs:229
msgid "Convert"
msgstr ""
-#: src/app.rs:302
+#: src/app.rs:363
msgid "Please select both input and output folders"
msgstr ""
@@ -123,22 +125,22 @@ msgstr ""
msgid "Select Folder"
msgstr ""
-#: src/select_folder.rs:68
-msgid "Abort"
+#: src/select_folder.rs:70
+msgid "Restart"
msgstr ""
-#: src/select_folder.rs:84
+#: src/select_folder.rs:87
msgid "Select the folder where the Heic files can be found"
msgstr ""
-#: src/select_folder.rs:85
+#: src/select_folder.rs:88
msgid "Select input directory"
msgstr ""
-#: src/select_folder.rs:88
+#: src/select_folder.rs:91
msgid "Select the folder where the JPG files are meant to be saved"
msgstr ""
-#: src/select_folder.rs:89
+#: src/select_folder.rs:92
msgid "Select output directory"
msgstr ""
diff --git a/src/app.rs b/src/app.rs
@@ -5,10 +5,11 @@ use crate::select_folder::{InOut, SelectFolder, SelectFolderOut};
use gettextrs::gettext;
use gtk::prelude::*;
use gtk::{gio, glib};
+use relm4::SimpleComponent;
use relm4::{
actions::{RelmAction, RelmActionGroup},
adw, gtk, main_application, Component, ComponentController, ComponentParts, ComponentSender,
- Controller, SimpleComponent, WorkerController,
+ Controller, WorkerController,
};
use std::path::PathBuf;
@@ -45,6 +46,7 @@ pub(super) enum AppMsg {
ProgressUpdate(f64),
ConversionComplete,
ConversionFailed(String),
+ StartOver,
Quit,
Noop,
}
@@ -72,8 +74,10 @@ impl SimpleComponent for App {
}
view! {
+ #[root]
main_window = adw::ApplicationWindow::new(&main_application()) {
set_visible: true,
+ set_resizable: true,
connect_close_request[sender] => move |_| {
sender.input(AppMsg::Quit);
@@ -120,22 +124,23 @@ impl SimpleComponent for App {
gtk::Box {
set_halign: gtk::Align::Center,
set_orientation: gtk::Orientation::Vertical,
- set_spacing: 24,
- gtk::ProgressBar {
- #[watch]
- set_fraction: model.progress,
- },
+ set_spacing: 8,
- gtk::Text {
- set_halign: gtk::Align::Center,
+ gtk::Label {
+ set_xalign: 0.5,
#[watch]
set_visible: model.file_count > 0,
#[watch]
- set_text: &format!(
+ set_label: &format!(
"{} / {}",
model.file_count as u32 * model.progress as u32,
model.file_count
),
+ },
+ gtk::ProgressBar {
+ set_hexpand: true,
+ #[watch]
+ set_fraction: model.progress,
}
}
}
@@ -158,6 +163,12 @@ impl SimpleComponent for App {
connect_clicked[sender] => move |_| {
sender.input(AppMsg::Quit);
}
+ },
+ gtk::Button {
+ set_label: "Restart",
+ connect_clicked[sender] => move |_| {
+ sender.input(AppMsg::StartOver);
+ }
}
}
}
@@ -179,6 +190,12 @@ impl SimpleComponent for App {
connect_clicked[sender] => move |_| {
sender.input(AppMsg::Quit);
}
+ },
+ gtk::Button {
+ set_label: "Restart",
+ connect_clicked[sender] => move |_| {
+ sender.input(AppMsg::StartOver);
+ }
}
}
}
@@ -215,6 +232,12 @@ impl SimpleComponent for App {
connect_clicked[sender] => move |_| {
sender.input(AppMsg::Convert);
}
+ },
+ gtk::Button {
+ set_label: "Restart",
+ connect_clicked[sender] => move |_| {
+ sender.input(AppMsg::StartOver);
+ }
}
}
}
@@ -347,11 +370,26 @@ impl SimpleComponent for App {
}
AppMsg::ConversionComplete => {
self.mode = Mode::Finished;
+ let notification = gio::Notification::new(&gettext("Conversion Complete"));
+ notification.set_body(Some(&gettext("The conversion was successful")));
+ notification.set_category(Some("transfer.complete"));
+ notification.set_priority(gio::NotificationPriority::Normal);
+
+ let app = relm4::main_application();
+ app.send_notification(None, ¬ification);
}
AppMsg::ConversionFailed(e) => {
self.mode = Mode::Failed;
self.failure = Some(e);
}
+ AppMsg::StartOver => {
+ self.input_folder = None;
+ self.output_folder = None;
+ self.progress = 0.0;
+ self.failure = None;
+ self.file_count = 0;
+ self.mode = Mode::InputSelection;
+ }
AppMsg::Noop => {}
}
}
diff --git a/src/main.rs b/src/main.rs
@@ -49,6 +49,7 @@ fn main() {
gtk::Window::set_default_icon_name(APP_ID);
let app = main_application();
+ app.set_application_id(Some(APP_ID));
app.set_resource_base_path(Some("/dev/nordgedanken/heic2jpg/"));
let mut actions = RelmActionGroup::<AppActionGroup>::new();
diff --git a/src/select_folder.rs b/src/select_folder.rs
@@ -63,11 +63,12 @@ impl SimpleComponent for SelectFolder {
}
},
- // If this is the output folder selector, add an Abort button
+ // If this is the output folder selector, add an Restart button
gtk::Button {
set_visible: model.direction == InOut::Output,
set_halign: gtk::Align::Center,
- set_label: &gettext("Abort"),
+ set_label: &gettext("Restart"),
+ add_css_class: "destructive-action",
connect_clicked[sender] => move |_| {
let _ = sender.output(SelectFolderOut::AbortLast);
}