Compare commits
13 commits
fix-build-
...
master
Author | SHA1 | Date | |
---|---|---|---|
91e743572c | |||
80af06709f | |||
c28d3865bc | |||
c0299480ad | |||
e55207c46e | |||
036d17df97 | |||
1555bd7a12 | |||
a554bb1a92 | |||
3f54c42aaf | |||
7e57a373d8 | |||
edd0249b20 | |||
78cc398e30 | |||
f66604560b |
|
@ -32,9 +32,9 @@ OS support
|
||||||
------------
|
------------
|
||||||
* Linux (flatpaks are targeted for Ubuntu 22.04+)
|
* Linux (flatpaks are targeted for Ubuntu 22.04+)
|
||||||
* Windows 10\11
|
* Windows 10\11
|
||||||
* MacOS via [brew](https://brew.sh/) (very experimental!)
|
* MacOS via [brew](https://brew.sh/) (very experimental, see below)
|
||||||
|
|
||||||
We only support 64 bit platforms.
|
Officially, we support only x86_64 architecture. Whilst you may be able to compile this code for ARM-based platforms (like Pinephone or MacOS), there's zero guarantees that it'll compile or function properly, as we don't have the hardware and the time to test it out.
|
||||||
|
|
||||||
Installation (prebuilt packages & AUR)
|
Installation (prebuilt packages & AUR)
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "im.dino.Dino",
|
"id": "im.dino.Dino",
|
||||||
"runtime": "org.gnome.Platform",
|
"runtime": "org.gnome.Platform",
|
||||||
"runtime-version": "44",
|
"runtime-version": "46",
|
||||||
"sdk": "org.gnome.Sdk",
|
"sdk": "org.gnome.Sdk",
|
||||||
"command": "dino",
|
"command": "dino",
|
||||||
"finish-args": [
|
"finish-args": [
|
||||||
|
@ -60,7 +60,11 @@
|
||||||
"buildsystem": "cmake-ninja",
|
"buildsystem": "cmake-ninja",
|
||||||
"builddir": true,
|
"builddir": true,
|
||||||
"config-opts": [
|
"config-opts": [
|
||||||
"-DSOUP_VERSION=3"
|
"-DSOUP_VERSION=3",
|
||||||
|
"-DNO_DEBUG=yes",
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release",
|
||||||
|
"-DENABLED_PLUGINS=notification-sound",
|
||||||
|
"-DPLUGIN_RTP_WEBRTC_AUDIO_PROCESSING=OFF"
|
||||||
],
|
],
|
||||||
"cleanup": [
|
"cleanup": [
|
||||||
"/include",
|
"/include",
|
||||||
|
|
|
@ -46,6 +46,15 @@ public class FileManager : StreamInteractionModule, Object {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string sanitize_filename(string filename) {
|
||||||
|
#if _WIN32
|
||||||
|
GLib.Regex regex = new GLib.Regex("[<>:\"/\\|?*]");
|
||||||
|
#else
|
||||||
|
GLib.Regex regex = new GLib.Regex("[/]");
|
||||||
|
#endif
|
||||||
|
return regex.replace(filename, -1, 0, "_");
|
||||||
|
}
|
||||||
|
|
||||||
public async void send_file(File file, Conversation conversation) {
|
public async void send_file(File file, Conversation conversation) {
|
||||||
FileTransfer file_transfer = new FileTransfer();
|
FileTransfer file_transfer = new FileTransfer();
|
||||||
file_transfer.account = conversation.account;
|
file_transfer.account = conversation.account;
|
||||||
|
@ -243,7 +252,7 @@ public class FileManager : StreamInteractionModule, Object {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save file
|
// Save file
|
||||||
string filename = Random.next_int().to_string("%x") + "_" + file_transfer.file_name;
|
string filename = Random.next_int().to_string("%x") + "_" + sanitize_filename(file_transfer.file_name);
|
||||||
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
|
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
|
||||||
|
|
||||||
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
|
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
|
||||||
|
@ -332,7 +341,7 @@ public class FileManager : StreamInteractionModule, Object {
|
||||||
|
|
||||||
private async void save_file(FileTransfer file_transfer) throws FileSendError {
|
private async void save_file(FileTransfer file_transfer) throws FileSendError {
|
||||||
try {
|
try {
|
||||||
string filename = Random.next_int().to_string("%x") + "_" + file_transfer.file_name;
|
string filename = Random.next_int().to_string("%x") + "_" + sanitize_filename(file_transfer.file_name);
|
||||||
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
|
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
|
||||||
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
|
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
|
||||||
yield os.splice_async(file_transfer.input_stream, OutputStreamSpliceFlags.CLOSE_SOURCE|OutputStreamSpliceFlags.CLOSE_TARGET);
|
yield os.splice_async(file_transfer.input_stream, OutputStreamSpliceFlags.CLOSE_SOURCE|OutputStreamSpliceFlags.CLOSE_TARGET);
|
||||||
|
|
|
@ -563,7 +563,7 @@ msgstr "Уведомления"
|
||||||
|
|
||||||
#: main/src/ui/contact_details/settings_provider.vala:55
|
#: main/src/ui/contact_details/settings_provider.vala:55
|
||||||
msgid "Pin conversation"
|
msgid "Pin conversation"
|
||||||
msgstr ""
|
msgstr "Закрепить беседу"
|
||||||
|
|
||||||
#: main/src/ui/contact_details/settings_provider.vala:55
|
#: main/src/ui/contact_details/settings_provider.vala:55
|
||||||
msgid "Pins the conversation to the top of the conversation list"
|
msgid "Pins the conversation to the top of the conversation list"
|
||||||
|
@ -826,16 +826,16 @@ msgstr "Прочтите %s, чтобы узнать о процессе авт
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/message_widget.vala:213
|
#: main/src/ui/conversation_content_view/message_widget.vala:213
|
||||||
msgid "Edit message"
|
msgid "Edit message"
|
||||||
msgstr ""
|
msgstr "Редактировать сообщение"
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/reactions_widget.vala:102
|
#: main/src/ui/conversation_content_view/reactions_widget.vala:102
|
||||||
msgid "You"
|
msgid "You"
|
||||||
msgstr ""
|
msgstr "Вы"
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/reactions_widget.vala:128
|
#: main/src/ui/conversation_content_view/reactions_widget.vala:128
|
||||||
#: main/src/ui/conversation_content_view/item_actions.vala:8
|
#: main/src/ui/conversation_content_view/item_actions.vala:8
|
||||||
msgid "Add reaction"
|
msgid "Add reaction"
|
||||||
msgstr ""
|
msgstr "Добавить реакцию"
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/file_image_widget.vala:53
|
#: main/src/ui/conversation_content_view/file_image_widget.vala:53
|
||||||
#: main/src/ui/conversation_content_view/file_default_widget.vala:57
|
#: main/src/ui/conversation_content_view/file_default_widget.vala:57
|
||||||
|
@ -947,7 +947,7 @@ msgstr "несколько секунд"
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:191
|
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:191
|
||||||
msgid "Delivered"
|
msgid "Delivered"
|
||||||
msgstr ""
|
msgstr "Доставленo"
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:195
|
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:195
|
||||||
msgid "Read"
|
msgid "Read"
|
||||||
|
@ -959,15 +959,15 @@ msgstr "Этот контакт хочет добавить вас в свой
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/item_actions.vala:21
|
#: main/src/ui/conversation_content_view/item_actions.vala:21
|
||||||
msgid "This conversation does not support reactions."
|
msgid "This conversation does not support reactions."
|
||||||
msgstr ""
|
msgstr "Этот разговор не поддерживает реакции."
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/item_actions.vala:33
|
#: main/src/ui/conversation_content_view/item_actions.vala:33
|
||||||
msgid "Reply"
|
msgid "Reply"
|
||||||
msgstr ""
|
msgstr "Ответить"
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/item_actions.vala:43
|
#: main/src/ui/conversation_content_view/item_actions.vala:43
|
||||||
msgid "This conversation does not support replies."
|
msgid "This conversation does not support replies."
|
||||||
msgstr ""
|
msgstr "Этот разговор не поддерживает ответы"
|
||||||
|
|
||||||
#: main/src/ui/conversation_content_view/file_default_widget.vala:64
|
#: main/src/ui/conversation_content_view/file_default_widget.vala:64
|
||||||
#, c-format
|
#, c-format
|
||||||
|
@ -1006,7 +1006,7 @@ msgstr "Тут пустовато"
|
||||||
|
|
||||||
#: main/data/unified_main_content.ui:47
|
#: main/data/unified_main_content.ui:47
|
||||||
msgid "Click + to start a chat or join a channel"
|
msgid "Click + to start a chat or join a channel"
|
||||||
msgstr ""
|
msgstr "Нажмите +, чтобы начать чат или присоединиться к каналу"
|
||||||
|
|
||||||
#: main/data/add_conversation/conference_details_fragment.ui:20
|
#: main/data/add_conversation/conference_details_fragment.ui:20
|
||||||
#: main/data/add_conversation/add_groupchat_dialog.ui:40
|
#: main/data/add_conversation/add_groupchat_dialog.ui:40
|
||||||
|
|
|
@ -73,6 +73,9 @@ public class FileImageWidget : Box {
|
||||||
image_overlay_toolbar.visible = false;
|
image_overlay_toolbar.visible = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Set tooltip to display the file name on hover
|
||||||
|
image.set_tooltip_text(file_name);
|
||||||
|
|
||||||
this.append(overlay);
|
this.append(overlay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,8 @@ public class FileWidget : SizeRequestBox {
|
||||||
|
|
||||||
private async void update_widget() {
|
private async void update_widget() {
|
||||||
if (show_image() && state != State.IMAGE
|
if (show_image() && state != State.IMAGE
|
||||||
&& file_transfer.state == FileTransfer.State.COMPLETE) {
|
&& file_transfer.state == FileTransfer.State.COMPLETE
|
||||||
|
&& file_transfer.get_file().query_exists()) {
|
||||||
var content_bak = content;
|
var content_bak = content;
|
||||||
|
|
||||||
FileImageWidget file_image_widget = null;
|
FileImageWidget file_image_widget = null;
|
||||||
|
@ -109,7 +110,8 @@ public class FileWidget : SizeRequestBox {
|
||||||
} catch (Error e) { }
|
} catch (Error e) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state != State.DEFAULT) {
|
if (state != State.DEFAULT ||
|
||||||
|
(file_transfer.state == FileTransfer.State.COMPLETE && !file_transfer.get_file().query_exists())) {
|
||||||
if (content != null) this.remove(content);
|
if (content != null) this.remove(content);
|
||||||
FileDefaultWidget default_file_widget = new FileDefaultWidget();
|
FileDefaultWidget default_file_widget = new FileDefaultWidget();
|
||||||
default_widget_controller = new FileDefaultWidgetController(default_file_widget);
|
default_widget_controller = new FileDefaultWidgetController(default_file_widget);
|
||||||
|
@ -176,11 +178,17 @@ public class FileWidgetController : Object {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void open_file() {
|
private void open_file() {
|
||||||
|
if (file_transfer.get_file().query_exists()) {
|
||||||
try {
|
try {
|
||||||
Dino.Util.launch_default_for_uri(file_transfer.get_file().get_uri());
|
Dino.Util.launch_default_for_uri(file_transfer.get_file().get_uri());
|
||||||
} catch (Error err) {
|
} catch (Error err) {
|
||||||
warning("Failed to open %s - %s", file_transfer.get_file().get_uri(), err.message);
|
warning("Failed to open %s - %s", file_transfer.get_file().get_uri(), err.message);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
warning("File %s does not exist", file_transfer.get_file().get_uri());
|
||||||
|
file_transfer.state = FileTransfer.State.NOT_STARTED;
|
||||||
|
widget.activate_action("file.download", null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void save_file() {
|
private void save_file() {
|
||||||
|
@ -244,8 +252,12 @@ public class FileDefaultWidgetController : Object {
|
||||||
|
|
||||||
private void update_file_info() {
|
private void update_file_info() {
|
||||||
state = file_transfer.state;
|
state = file_transfer.state;
|
||||||
|
if (state == FileTransfer.State.COMPLETE && !file_transfer.get_file().query_exists()) {
|
||||||
|
state = FileTransfer.State.NOT_STARTED;
|
||||||
|
file_transfer.state = FileTransfer.State.NOT_STARTED;
|
||||||
|
}
|
||||||
widget.update_file_info(file_transfer.mime_type, file_transfer.transferred_bytes,
|
widget.update_file_info(file_transfer.mime_type, file_transfer.transferred_bytes,
|
||||||
file_transfer.direction, file_transfer.state, file_transfer.size);
|
file_transfer.direction, state, file_transfer.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void on_clicked() {
|
private void on_clicked() {
|
||||||
|
@ -254,10 +266,11 @@ public class FileDefaultWidgetController : Object {
|
||||||
widget.activate_action("file.open", null);
|
widget.activate_action("file.open", null);
|
||||||
break;
|
break;
|
||||||
case FileTransfer.State.NOT_STARTED:
|
case FileTransfer.State.NOT_STARTED:
|
||||||
|
case FileTransfer.State.FAILED:
|
||||||
widget.activate_action("file.download", null);
|
widget.activate_action("file.download", null);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Clicking doesn't do anything in FAILED and IN_PROGRESS states
|
// Clicking doesn't do anything in IN_PROGRESS state
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,6 +197,7 @@ public class Dialog : Gtk.Dialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populate_grid_data(Account account) {
|
private void populate_grid_data(Account account) {
|
||||||
|
active_switch.sensitive = false;
|
||||||
active_switch.state_set.disconnect(change_account_state);
|
active_switch.state_set.disconnect(change_account_state);
|
||||||
|
|
||||||
picture.model = new ViewModel.CompatAvatarPictureModel(stream_interactor).add_participant(new Conversation(account.bare_jid, account, Conversation.Type.CHAT), account.bare_jid);
|
picture.model = new ViewModel.CompatAvatarPictureModel(stream_interactor).add_participant(new Conversation(account.bare_jid, account, Conversation.Type.CHAT), account.bare_jid);
|
||||||
|
@ -227,11 +228,14 @@ public class Dialog : Gtk.Dialog {
|
||||||
ConnectionManager.ConnectionState state = stream_interactor.connection_manager.get_state(account);
|
ConnectionManager.ConnectionState state = stream_interactor.connection_manager.get_state(account);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case ConnectionManager.ConnectionState.CONNECTING:
|
case ConnectionManager.ConnectionState.CONNECTING:
|
||||||
|
active_switch.sensitive = false;
|
||||||
state_label.label = _("Connecting…"); break;
|
state_label.label = _("Connecting…"); break;
|
||||||
case ConnectionManager.ConnectionState.CONNECTED:
|
case ConnectionManager.ConnectionState.CONNECTED:
|
||||||
|
active_switch.sensitive = true;
|
||||||
password_change_btn.sensitive = true;
|
password_change_btn.sensitive = true;
|
||||||
state_label.label = _("Connected"); break;
|
state_label.label = _("Connected"); break;
|
||||||
case ConnectionManager.ConnectionState.DISCONNECTED:
|
case ConnectionManager.ConnectionState.DISCONNECTED:
|
||||||
|
active_switch.sensitive = true;
|
||||||
password_change_btn.sensitive = false;
|
password_change_btn.sensitive = false;
|
||||||
state_label.label = _("Disconnected"); break;
|
state_label.label = _("Disconnected"); break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: dino-openpgp-0.0\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||||
"PO-Revision-Date: 2020-04-16 20:11+0000\n"
|
"PO-Revision-Date: 2024-06-09 22:39+0200\n"
|
||||||
|
"Last-Translator: eerielili \n"
|
||||||
"Language-Team: German <https://hosted.weblate.org/projects/dino/plugin-"
|
"Language-Team: German <https://hosted.weblate.org/projects/dino/plugin-"
|
||||||
"openpgp/de/>\n"
|
"openpgp/de/>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
@ -11,11 +12,11 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.0.1-dev\n"
|
"X-Generator: Poedit 3.4.2\n"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||||
msgid "Key publishing disabled"
|
msgid "Key publishing disabled"
|
||||||
msgstr "Schlüsselveröffentlichung deaktiviert"
|
msgstr "Schlüsselveröffentlichung deaktiviert"
|
||||||
|
|
||||||
|
@ -24,18 +25,40 @@ msgid "Error in GnuPG"
|
||||||
msgstr "Fehler in GnuPG"
|
msgstr "Fehler in GnuPG"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||||
msgid "No keys available. Generate one!"
|
msgid ""
|
||||||
msgstr "Keine Schlüssel vorhanden. Erzeuge einen!"
|
"No keys available. Generate one or check if your keys aren't expired or "
|
||||||
|
"revoked!"
|
||||||
|
msgstr ""
|
||||||
|
"Keine Schlüssel vorhanden. Erstellen Sie einen oder prüfen Sie,"
|
||||||
|
"ob Ihre Schlüssel nicht abgelaufen sind oder widerrufen!"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||||
|
msgid "expired!"
|
||||||
|
msgstr "abgelaufen"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||||
|
msgid "revoked!"
|
||||||
|
msgstr "widerrufen!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||||
|
msgid "Attention required!"
|
||||||
|
msgstr "Achtung!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||||
|
#, c-format
|
||||||
|
msgid "Your key %s is %s"
|
||||||
|
msgstr "Ihr Schlüssel %s is %s"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||||
msgid "Select key"
|
msgid "Select key"
|
||||||
msgstr "Wähle einen Schlüssel"
|
msgstr "Wähle einen Schlüssel"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Lade…"
|
msgstr "Lade…"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||||
msgid "Querying GnuPG"
|
msgid "Querying GnuPG"
|
||||||
msgstr "Frage GnuPG ab"
|
msgstr "Frage GnuPG ab"
|
||||||
|
|
||||||
|
@ -46,6 +69,3 @@ msgstr "Schlüssel nicht im Schlüsselbund"
|
||||||
#: plugins/openpgp/src/contact_details_provider.vala:30
|
#: plugins/openpgp/src/contact_details_provider.vala:30
|
||||||
msgid "Encryption"
|
msgid "Encryption"
|
||||||
msgstr "Verschlüsselung"
|
msgstr "Verschlüsselung"
|
||||||
|
|
||||||
#~ msgid "OpenPGP"
|
|
||||||
#~ msgstr "OpenPGP"
|
|
||||||
|
|
|
@ -1,52 +1,68 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION+\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
"PO-Revision-Date: 2024-06-09 22:18+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"Last-Translator: \n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Language-Team: Dino+\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language: en\n"
|
||||||
"Language: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 3.4.2\n"
|
||||||
|
"X-Poedit-Basepath: ../src\n"
|
||||||
|
"X-Poedit-KeywordsList: _(\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
"X-Poedit-SearchPath-0: .\n"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
#: account_settings_entry.vala:68 account_settings_entry.vala:72
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: account_settings_entry.vala:113
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
|
||||||
msgid "Key publishing disabled"
|
msgid "Key publishing disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
#: account_settings_entry.vala:68
|
||||||
msgid "Error in GnuPG"
|
msgid "Error in GnuPG"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: account_settings_entry.vala:72
|
||||||
msgid "No keys available. Generate one!"
|
msgid ""
|
||||||
|
"No keys available. Generate one or check if your keys aren't expired or "
|
||||||
|
"revoked!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
#: account_settings_entry.vala:95
|
||||||
|
msgid "expired!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: account_settings_entry.vala:95
|
||||||
|
msgid "revoked!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: account_settings_entry.vala:96
|
||||||
|
msgid "Attention required!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: account_settings_entry.vala:96
|
||||||
|
#, c-format
|
||||||
|
msgid "Your key %s is %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: account_settings_entry.vala:113
|
||||||
msgid "Select key"
|
msgid "Select key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: account_settings_entry.vala:126
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: account_settings_entry.vala:126
|
||||||
msgid "Querying GnuPG"
|
msgid "Querying GnuPG"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: plugins/openpgp/src/contact_details_provider.vala:28
|
#: contact_details_provider.vala:28
|
||||||
msgid "Key not in keychain"
|
msgid "Key not in keychain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: plugins/openpgp/src/contact_details_provider.vala:30
|
#: contact_details_provider.vala:30
|
||||||
msgid "Encryption"
|
msgid "Encryption"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -7,8 +7,9 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||||
"PO-Revision-Date: 2020-11-12 17:21+0000\n"
|
"PO-Revision-Date: 2024-06-09 22:22+0200\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
"Language-Team: French <https://hosted.weblate.org/projects/dino/plugin-"
|
"Language-Team: French <https://hosted.weblate.org/projects/dino/plugin-"
|
||||||
"openpgp/fr/>\n"
|
"openpgp/fr/>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
|
@ -16,11 +17,11 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.4-dev\n"
|
"X-Generator: Poedit 3.4.2\n"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||||
msgid "Key publishing disabled"
|
msgid "Key publishing disabled"
|
||||||
msgstr "La publication des clés est désactivée"
|
msgstr "La publication des clés est désactivée"
|
||||||
|
|
||||||
|
@ -29,18 +30,39 @@ msgid "Error in GnuPG"
|
||||||
msgstr "Erreur dans GnuPG"
|
msgstr "Erreur dans GnuPG"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||||
msgid "No keys available. Generate one!"
|
msgid ""
|
||||||
msgstr "Aucune clé n’est disponible. Générez-en une !"
|
"No keys available. Generate one or check if your keys aren't expired or "
|
||||||
|
"revoked!"
|
||||||
|
msgstr ""
|
||||||
|
"Pas de clés disponibles. Générez-en une nouvelle ou vérifier si vos "
|
||||||
|
"clés ne seraient pas expirées ou révoquées!"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||||
|
msgid "expired!"
|
||||||
|
msgstr "expirée!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||||
|
msgid "revoked!"
|
||||||
|
msgstr "révoquée!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||||
|
msgid "Attention required!"
|
||||||
|
msgstr "Attention requise!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||||
|
#, c-format
|
||||||
|
msgid "Your key %s is %s"
|
||||||
|
msgstr "Votre clé %s est %s"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||||
msgid "Select key"
|
msgid "Select key"
|
||||||
msgstr "Choix d’une clé"
|
msgstr "Choix d’une clé"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Chargement…"
|
msgstr "Chargement…"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||||
msgid "Querying GnuPG"
|
msgid "Querying GnuPG"
|
||||||
msgstr "Interrogation de GnuPG"
|
msgstr "Interrogation de GnuPG"
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,9 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
|
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
|
||||||
"PO-Revision-Date: 2020-06-02 11:41+0000\n"
|
"PO-Revision-Date: 2024-06-09 22:39+0200\n"
|
||||||
|
"Last-Translator: eerielili\n"
|
||||||
"Language-Team: Russian <https://hosted.weblate.org/projects/dino/plugin-"
|
"Language-Team: Russian <https://hosted.weblate.org/projects/dino/plugin-"
|
||||||
"openpgp/ru/>\n"
|
"openpgp/ru/>\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
|
@ -17,11 +18,11 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.1-dev\n"
|
"X-Generator: Poedit 3.4.2\n"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:68
|
#: plugins/openpgp/src/account_settings_entry.vala:68
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||||
msgid "Key publishing disabled"
|
msgid "Key publishing disabled"
|
||||||
msgstr "Публикация ключа отключена"
|
msgstr "Публикация ключа отключена"
|
||||||
|
|
||||||
|
@ -30,18 +31,37 @@ msgid "Error in GnuPG"
|
||||||
msgstr "Ошибка в GnuPG"
|
msgstr "Ошибка в GnuPG"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:72
|
#: plugins/openpgp/src/account_settings_entry.vala:72
|
||||||
msgid "No keys available. Generate one!"
|
msgid ""
|
||||||
|
"No keys available. Generate one or check if your keys aren't expired or "
|
||||||
|
"revoked!"
|
||||||
msgstr "Нет доступных ключей. Создайте как минимум один, либо проверьте что уже существующие (ранее созданные) ключи не были отозваны или срок их действия не закончился!"
|
msgstr "Нет доступных ключей. Создайте как минимум один, либо проверьте что уже существующие (ранее созданные) ключи не были отозваны или срок их действия не закончился!"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:101
|
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||||
|
msgid "expired!"
|
||||||
|
msgstr "истёк!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:95
|
||||||
|
msgid "revoked!"
|
||||||
|
msgstr "отозван!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||||
|
msgid "Attention required!"
|
||||||
|
msgstr "внимание!"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:96
|
||||||
|
#, c-format
|
||||||
|
msgid "Your key %s is %s"
|
||||||
|
msgstr "Ваш ключ %s %s"
|
||||||
|
|
||||||
|
#: plugins/openpgp/src/account_settings_entry.vala:113
|
||||||
msgid "Select key"
|
msgid "Select key"
|
||||||
msgstr "Выбрать ключ"
|
msgstr "Выбрать ключ"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Загрузка…"
|
msgstr "Загрузка…"
|
||||||
|
|
||||||
#: plugins/openpgp/src/account_settings_entry.vala:114
|
#: plugins/openpgp/src/account_settings_entry.vala:126
|
||||||
msgid "Querying GnuPG"
|
msgid "Querying GnuPG"
|
||||||
msgstr "Запрос GnuPG"
|
msgstr "Запрос GnuPG"
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class AccountSettingsEntry : Plugins.AccountSettingsEntry {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (keys.size == 0) {
|
if (keys.size == 0) {
|
||||||
label.set_markup(build_markup_string(_("Key publishing disabled"), _("No keys available. Generate one!")));
|
label.set_markup(build_markup_string(_("Key publishing disabled"), _("No keys available. Generate one or check if your keys aren't expired or revoked!")));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,6 +88,18 @@ public class AccountSettingsEntry : Plugins.AccountSettingsEntry {
|
||||||
set_label_active(selected);
|
set_label_active(selected);
|
||||||
|
|
||||||
combobox.changed.connect(key_changed);
|
combobox.changed.connect(key_changed);
|
||||||
|
if (account_key != null) {
|
||||||
|
try {
|
||||||
|
GPG.Key key_check = GPGHelper.get_public_key(account_key);
|
||||||
|
if(key_check.expired || key_check.revoked) {
|
||||||
|
string status_str = key_check.expired ? _("expired!") : _("revoked!");
|
||||||
|
label.set_markup(build_markup_string(_("Attention required!"), _("Your key %s is %s").printf("<span color='red'><b>"+ key_check.fpr +"</b></span>", status_str) ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
debug("Coudn't check GPG key status.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populate_list_store() {
|
private void populate_list_store() {
|
||||||
|
|
Loading…
Reference in a new issue