diff --git a/.gitmodules b/.gitmodules
index f4788ba4..e69de29b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +0,0 @@
-[submodule "subprojects/libhandy"]
- path = subprojects/libhandy
- url = https://source.puri.sm/Librem5/libhandy.git
diff --git a/desktop/org.gnome.Geary.gschema.xml b/desktop/org.gnome.Geary.gschema.xml
index f0068798..e23e26a9 100644
--- a/desktop/org.gnome.Geary.gschema.xml
+++ b/desktop/org.gnome.Geary.gschema.xml
@@ -45,6 +45,12 @@
True if the folder list Paned is in the horizontal orientation.
+
+ true
+ Show/hide formatting toolbar
+ True if the formatting toolbar in the composer is shown.
+
+
250
Position of message list pane
@@ -128,6 +134,13 @@
email. Set to zero or less to disable.
+
+ 5
+ Brief notification display time
+ The length of time in seconds for which brief notifications should
+ be displayed.
+
+
false
Whether we migrated the old settings
diff --git a/help/es/es.po b/help/es/es.po
index 396bad91..d465261f 100644
--- a/help/es/es.po
+++ b/help/es/es.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the geary package.
# FIRST AUTHOR , YEAR.
# Adolfo Jayme Barrientos , 2014, 2016.
-# Daniel Mustieles , 2014-2019.
+# Daniel Mustieles , 2014-2020.
#
msgid ""
msgstr ""
"Project-Id-Version: geary master\n"
-"POT-Creation-Date: 2019-11-25 09:56+0000\n"
-"PO-Revision-Date: 2019-11-25 11:52+0100\n"
+"POT-Creation-Date: 2020-01-12 16:30+0000\n"
+"PO-Revision-Date: 2020-01-14 11:29+0100\n"
"Last-Translator: Daniel Mustieles \n"
"Language-Team: Spanish - Spain \n"
"Language: es_ES\n"
@@ -23,7 +23,7 @@ msgstr ""
msgctxt "_"
msgid "translator-credits"
msgstr ""
-"Daniel Mustieles , 2014 - 2019\n"
+"Daniel Mustieles , 2014 - 2020\n"
"Adolfo Jayme Barrientos , 2014"
#. (itstool) path: page/title
@@ -212,31 +212,37 @@ msgstr ""
"la ventana emergente o pulsando CtrlU."
#. (itstool) path: page/title
+#: C/archive.page:8
+msgid "Archive, trash and delete messages"
+msgstr "Archivar, enviar a la papelera y eliminar mensajes"
+
+#. (itstool) path: page/p
#: C/archive.page:10
-msgid "Delete or archive a message"
-msgstr "Eliminar o archivar un mensaje"
-
-#. (itstool) path: page/p
-#: C/archive.page:12
msgid ""
-"When you use Geary with a Gmail account, Geary lets you archive "
-"messages. The Archive toolbar button archives the selected "
-"conversation(s). Archived messages appear in the All Mail folder."
+"Geary lets you archive messages if your server supports it. Clicking the "
+"Archive toolbar button moves the conversation "
+"from the current folder to the Archive folder for most email "
+"services, or to All Mail for GMail. Archiving helps keep your "
+"email organised by moving old and replied-to email out of the way."
msgstr ""
-"Cuando usa Geary con una cuenta de Gmail, Geary le permite archivar "
-"los mensajes. El botón Archivar de la barra de herramientas "
-"archiva las conversaciones seleccionadas. Los mensajes archivados aparecen "
-"en la carpeta Todos los correos."
#. (itstool) path: page/p
-#: C/archive.page:16
+#: C/archive.page:17
+#, fuzzy
+#| msgid ""
+#| "With other mail servers, you can trash or delete, but not archive, "
+#| "messages. To move one or more conversations to the Trash "
+#| "folder, select them and press the Trash button on the toolbar. "
+#| "To permanently delete the conversations, hold down Shift and "
+#| "press the Delete button that appears in place of the "
+#| "Trash button."
msgid ""
-"With other mail servers, you can trash or delete, but not archive, messages. "
-"To move one or more conversations to the Trash folder, select "
-"them and press the Trash button on the toolbar. To permanently "
-"delete the conversations, hold down Shift and press the "
-"Delete button that appears in place of the Trash "
-"button."
+"To move conversations to the Trash folder, select them and click "
+"the Trash toolbar button. To permanently delete "
+"conversations, hold down Shift and click the Delete button that appears in place of the Trash button, "
+"or open the conversation in the Trash folder and click Delete there."
msgstr ""
"Con otros servidores de correo puede eliminar o enviar a la papelera, pero "
"no archivar mensajes. Para mover una o más conversaciones a la carpeta de "
@@ -245,19 +251,31 @@ msgstr ""
"mantenga pulsada la tecla Mayús y pulse el botón Eliminar"
"gui> que aparece en lugar del botón de Papelera."
-#. (itstool) path: page/p
-#: C/archive.page:21
+#. (itstool) path: note/title
+#: C/archive.page:26
+msgid "Undoing changes"
+msgstr "Deshacer cambios"
+
+#. (itstool) path: note/p
+#: C/archive.page:27
msgid ""
-"Delete is not available from every folder, such as Search. Delete is also "
-"unavailable for Gmail. For Gmail, Trash will move messages to the "
-"Trash folder on the server, where the user can then manually delete them. "
-"The server will automatically remove trashed messages after 30 days."
+"Note that you can always undo archiving or trashing a message if you change "
+"your mind. Click Undo on the pop-up notification "
+"that appears, or type CtrlZ, or open "
+"the folder, find the message, then move it back to your Inbox"
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/archive.page:34
+msgid ""
+"While both Archive and Trash removes conversations from your Inbox folder, "
+"there is an important difference. Clicking Archive"
+"gui> will ensure your conversations are kept so you can find them again "
+"later. Clicking Trash will cause conversations "
+"to be hidden from , and they will likely be deleted "
+"in the future."
msgstr ""
-"La eliminación no está disponible para todas la carpetas, como es el caso de "
-"Buscar. Tampoco está disponible para Gmail. En este caso, la Papelera"
-"gui> moverá los mensajes a la carpeta Papelera en el servidor, donde el "
-"usuario puede eliminarlos manualmente. El servidor eliminará automáticamente "
-"los mensajes de esta carpeta pasados 30 días."
#. (itstool) path: page/title
#: C/bugs.page:10
@@ -745,31 +763,21 @@ msgid "Preferences"
msgstr "Preferencias"
#. (itstool) path: page/p
-#: C/preferences.page:11
+#: C/preferences.page:12
msgid ""
-"The Preferences option is available in either Geary's application "
-"menu or the gear menu in the upper-right of the toolbar. (The location "
-"depends on the install desktop shell. For GNOME Shell and Unity, the "
-"application menu is available near the top-left corner of the screen.)"
+"Geary allows you to customise how it works via its Preferences window. To open the window, select Preferences from the application menu on the main window's toolbar. "
+"You can change the following options:"
msgstr ""
-"La opción Preferencias está disponible en el menú aplicación de "
-"Geary o el menú de configuración en la parte superior derecha de la barra de "
-"herramientas. (La ubicación depende de la shell de instalación de "
-"escritorio. Para GNOME Shell y Unity, el menú aplicación esta disponible "
-"cerca de la esquina superior izquierda de la pantalla.)"
-
-#. (itstool) path: section/title
-#: C/preferences.page:17
-msgid "Reading"
-msgstr "Lectura"
#. (itstool) path: item/title
-#: C/preferences.page:20
+#: C/preferences.page:19
msgid "Automatically select next message"
msgstr "Seleccionar automáticamente el mensaje siguiente"
#. (itstool) path: item/p
-#: C/preferences.page:21
+#: C/preferences.page:20
msgid ""
"When this option is enabled, Geary automatically selects the latest message "
"in a folder when you enter the folder. In addition, after archiving a "
@@ -809,50 +817,32 @@ msgstr ""
"los tres paneles. Si no están seleccionadas, la lista de carpetas y de "
"conversaciones se aplicarán verticalmente en un único panel."
-#. (itstool) path: section/title
-#: C/preferences.page:40
-msgid "Notifications"
-msgstr "Notificaciones"
-
#. (itstool) path: item/title
-#: C/preferences.page:43
-msgid "Play notification sounds"
-msgstr "Reproducir sonidos de notificación"
-
-#. (itstool) path: item/p
-#: C/preferences.page:44
-msgid "When set, Geary plays a sound whenever a new message arrives."
+#: C/preferences.page:38
+msgid "Use single key email shortcuts"
msgstr ""
-"Cuando está configurado, Geary reproduce un sonido cuando un mensaje nuevo "
-"llega."
-
-#. (itstool) path: item/title
-#: C/preferences.page:47
-msgid "Show notifications for new mail"
-msgstr "Mostrar notificaciones de mensajes nuevos"
#. (itstool) path: item/p
-#: C/preferences.page:48
+#: C/preferences.page:39
+#, fuzzy
+#| msgid ""
+#| "A number of keyboard shortcuts are available in the composer; see for details."
msgid ""
-"When set, Geary displays a notification each time a new message "
-"arrives. Notifications are displayed in a system-dependent manner. On GNOME "
-"Shell, notifications appear at the bottom of the display (older versions) or "
-"centered just below the top bar (newer versions). In Ubuntu Unity, "
-"notifications appear at the upper right of the display."
+"Enable keyboard shortcuts for email actions that do not require pressing "
+"Ctrl. These match the shortcuts used by GMail. See for details."
msgstr ""
-"Cuando está configurado, Geary muestra una notificación cada vez "
-"que un mensaje nuevo llega. Las notificaciones se muestran de una manera "
-"dependiente del sistema. En GNOME Shell, las notificaciones se muestran en "
-"la parte inferior de la pantalla (versiones antiguas). En Ubuntu Unity, las "
-"notificaciones se muestran en la parte superior derecha de la pantalla."
+"Hay disponibles varios atajos de teclado en la ventana del editor; consulte "
+" para obtener más información."
#. (itstool) path: item/title
-#: C/preferences.page:54
+#: C/preferences.page:44
msgid "Watch for new mail when closed"
msgstr "Revisar si hay mensajes nuevos al cerrar"
#. (itstool) path: item/p
-#: C/preferences.page:55
+#: C/preferences.page:45
msgid ""
"Geary will watch your accounts for new mail even when the main window is not "
"open. To do this, it will silently start when you log in to your computer, "
@@ -1041,13 +1031,19 @@ msgstr ""
msgid "Keyboard shortcuts"
msgstr "Atajos de teclado"
-#. (itstool) path: page/p
-#: C/shortcuts.page:12
+#. (itstool) path: section/p
+#: C/shortcuts.page:13
+#, fuzzy
+#| msgid ""
+#| "Geary has keyboard shortcuts for most common operations. Use the built-in "
+#| "keyboard shortcuts help in Geary to discover the full list. This can be "
+#| "accessed via the application menu: GearyKeyboard "
+#| "Shortcuts or using the keyboard shortcuts listed below."
msgid ""
"Geary has keyboard shortcuts for most common operations. Use the built-in "
-"keyboard shortcuts help in Geary to discover the full list. This can be "
-"accessed via the application menu: GearyKeyboard "
-"Shortcuts or using the keyboard shortcuts listed below."
+"help to discover the full list. To open the shortcuts help, select Keyboard Shortcuts from the application menu on the "
+"main window's toolbar, or using the keyboard shortcuts listed below."
msgstr ""
"Geary tiene atajos del teclado para la mayoría de operaciones habituales. "
"Use la ayuda integrada de los atajos del teclado de Geary para descubrir la "
@@ -1055,8 +1051,8 @@ msgstr ""
"GearyAtajos del teclado o usando los "
"atajos del teclado listados a continuación."
-#. (itstool) path: page/p
-#: C/shortcuts.page:18
+#. (itstool) path: section/p
+#: C/shortcuts.page:19
msgid ""
"The following keyboard shortcuts can be used to access on-line help from "
"Geary:"
@@ -1065,28 +1061,47 @@ msgstr ""
"línea de Geary:"
#. (itstool) path: td/p
-#: C/shortcuts.page:22
-msgid "Display this User Manual"
-msgstr "Mostrar este manual de usuario"
+#: C/shortcuts.page:23
+#| msgid "Display this User Manual"
+msgid "Display this online help manual"
+msgstr "Mostrar este manual en línea"
#. (itstool) path: td/p
-#: C/shortcuts.page:23
+#: C/shortcuts.page:24
msgid "F1"
msgstr "F1"
#. (itstool) path: td/p
-#: C/shortcuts.page:26
+#: C/shortcuts.page:27
msgid "Display all keyboard shortcuts"
msgstr "Mostrar los atajos del teclado"
#. (itstool) path: td/p
-#: C/shortcuts.page:27
+#: C/shortcuts.page:28
+#| msgid "CtrlN or N"
+msgid "Ctrl?"
+msgstr "Ctrl?"
+
+#. (itstool) path: section/title
+#: C/shortcuts.page:36
+#| msgid "Display all keyboard shortcuts"
+msgid "Single key shortcuts"
+msgstr "Atajos del teclado"
+
+#. (itstool) path: section/p
+#: C/shortcuts.page:38
msgid ""
-"Ctrl? or Ctrl"
-"key>F1"
+"You can enable keyboard shortcuts for email actions that do not require "
+"pressing Ctrl. These match the shortcuts used by GMail. See for details."
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/shortcuts.page:42
+msgid ""
+"The full list of single key shortcuts enabled by this preference can be "
+"found via the keyboard shortcuts help, above."
msgstr ""
-"Ctrl? o Ctrl"
-"key>F1"
#. (itstool) path: page/title
#: C/star.page:10
@@ -1158,32 +1173,88 @@ msgstr ""
"gui> en el menú desplegable."
#. (itstool) path: page/title
-#: C/write.page:9
-msgid "Write a message"
-msgstr "Redactar un mensaje"
+#: C/write.page:7
+#| msgid "Composing and replying"
+msgid "Writing new email and replying"
+msgstr "Escribir un corroe nuevo y responder"
#. (itstool) path: section/title
-#: C/write.page:12
+#: C/write.page:10
msgid "Composing and replying"
msgstr "Redactar y responder"
#. (itstool) path: section/p
-#: C/write.page:13
+#: C/write.page:12
msgid ""
-"To compose a new message in Geary, press the New Message button "
-"on the toolbar."
+"To start a new email conversation, click the Compose"
+"gui> button on the toolbar. Type the email address of the people to receive "
+"the message in the To text field, and a subject "
+"line in the Subject field. You can then type your "
+"message in the text area below these. Once the message is read to send, "
+"click Send or type Ctrl"
+"key>Enter to send the message."
+msgstr ""
+
+#. (itstool) path: note/title
+#: C/write.page:23
+msgid "Undoing sending"
+msgstr "Deshacer el envío"
+
+#. (itstool) path: note/p
+#: C/write.page:24
+msgid ""
+"When sending an email, Geary will wait 5 seconds before delivering the "
+"message. During this time, you will be able to click Undo on the pop-up notification that appears or type "
+"CtrlZ to re-open the email, and make "
+"more changes to it."
msgstr ""
-"Para redactar un mensaje nuevo en Geary, pulse el botón Mensaje nuevo"
-"gui> de la barra de herramientas."
#. (itstool) path: section/p
-#: C/write.page:16
+#: C/write.page:32
msgid ""
-"To reply to a message, open the message menu in the upper right corner of "
-"the message and choose Reply, Reply All or "
-"Forward. You can also reply to the last message in a conversation "
-"via the Reply, Reply All or Forward buttons "
-"on the toolbar."
+"When entering an email address in the To and Cc fields, Geary will provide suggestions from your "
+"desktop address book and from previously sent and received email messages. "
+"To choose one of these suggestions, simply click on it. In addition, Bcc and Reply-to fields can "
+"be shown by selecting Show extended fields from "
+"the formatting toolbar menu."
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/write.page:41
+msgid ""
+"To reply to the currently selected conversation, click one of the Reply, Reply All or Forward toolbar buttons. This will open a new reply or "
+"forwarded email composer for the latest message in the conversation."
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/write.page:47
+msgid ""
+"When replying, the message being replied to will be quoted and copied into "
+"the footer of the new reply. This can be deleted before typing a reply by "
+"pressing Backspace. Alternatively, text can be selectively quoted "
+"by selecting the desired text in a message and clicking Reply or Reply All, only the selected "
+"text will be quoted."
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/write.page:55
+#, fuzzy
+#| msgid ""
+#| "To reply to a message, open the message menu in the upper right corner of "
+#| "the message and choose Reply, Reply All or "
+#| "Forward. You can also reply to the last message in a "
+#| "conversation via the Reply, Reply All or "
+#| "Forward buttons on the toolbar."
+msgid ""
+"To reply to a specific email message, open the message menu in the top "
+"corner of the message and choose Reply, Reply All or "
+"Forward."
msgstr ""
"Para responder a un mensaje, abra el menú del mensaje en la esquina superior "
"derecha de este, y seleccione Responder, Responder a todos"
@@ -1192,61 +1263,51 @@ msgstr ""
"todos o Reenviar de la barra de herramientas."
#. (itstool) path: section/title
-#: C/write.page:21
-msgid "Features"
-msgstr "Características"
+#: C/write.page:61
+msgid "Text formatting, images and attachments"
+msgstr ""
#. (itstool) path: section/p
-#: C/write.page:23
+#: C/write.page:63
msgid ""
-"Geary's email composer lets you adjust the font, size and color of text. You "
-"can also insert hyperlinks into messages."
+"Geary's email composer lets you use text styles such as bold and "
+"italic, indent text to quote it and links to web pages. Simply "
+"select the text and click the appropriate button on the formatting toolbar."
msgstr ""
-"El editor de mensajes de Geary le permite ajustar el tipo de letra, el "
-"tamaño y el color del texto. También puede insertar hiperenlaces en los "
-"mensajes."
#. (itstool) path: section/p
-#: C/write.page:25
+#: C/write.page:68
msgid ""
-"Geary can also send plain text messages. In the drop-down menu, check or "
-"uncheck \"Rich Text\" to toggle between plain text and rich text mode."
+"Bulleted and numbered lists can be inserted or removed by clicking the Bulleted list and Numbered "
+"list buttons on the formatting toolbar. The level of indentation of "
+"list items can be adjusted using the Indent and "
+"Un-indent formatting toolbar buttons."
msgstr ""
-"Geary también puede enviar mensajes de texto sencillo. En el menú "
-"desplegable, marque o desmarque «Texto enriquecido» para cambiar entre los "
-"modos de texto sencillo y texto con formato."
#. (itstool) path: section/p
-#: C/write.page:28
+#: C/write.page:75
msgid ""
-"You can attach a file to a message you're writing in either of these ways:"
+"Images can be inserted into rich text messages by clicking the Insert Image button on the formatting toolbar and selecting "
+"the image to attach, by dragging an image from the Files "
+"application into the email body and then dropping it, or by pasting an image "
+"that has been copied to the clipboard from another application."
msgstr ""
-"Puede adjuntar un archivo a un mensaje que esté redactando de las siguientes "
-"maneras:"
-
-#. (itstool) path: item/p
-#: C/write.page:30
-msgid ""
-"Press the Attach File button at the lower left of the composer "
-"window, then select a file to attach."
-msgstr ""
-"Pulse en el botón Adjuntar un archivo en la esquina inferior "
-"izquierda de la ventana del editor, y seleccione el archivo que quiere "
-"adjuntar."
-
-#. (itstool) path: item/p
-#: C/write.page:32
-msgid ""
-"Drag the file from the Nautilus file manager to the composer window, and "
-"drop it either on the text fields at the top of the window or on the toolbar "
-"at the bottom."
-msgstr ""
-"Arrastre el archivo desde el gestor de archivos Nautilus hasta la ventana "
-"del editor, y suéltelo en los campos de texto en la parte superior de la "
-"ventana o en la barra de herramientas inferior."
#. (itstool) path: section/p
-#: C/write.page:36
+#: C/write.page:82
+msgid ""
+"Documents, music, videos, and other files can be attached to the email by "
+"clicking the Attach File button at the top of "
+"the composer window and selecting the document to attach, or by dragging a "
+"file from the Files application to the composer window, and "
+"dropping it either on the text fields at the top of the window or on the "
+"toolbar at the bottom."
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/write.page:90
msgid ""
"A number of keyboard shortcuts are available in the composer; see for details."
@@ -1255,25 +1316,59 @@ msgstr ""
" para obtener más información."
#. (itstool) path: section/p
-#: C/write.page:38
+#: C/write.page:93
+#, fuzzy
+#| msgid ""
+#| "You may specify a signature to be inserted into the composer in the dialog."
msgid ""
-"You may specify a signature to be inserted into the composer in the dialog."
+"You may specify a signature to be inserted into the footer of email in the "
+"composer via the dialog."
msgstr ""
"Debe especificar una firma para insertarla dentro del editor en el diálogo "
"."
#. (itstool) path: section/title
-#: C/write.page:43
-msgid "Drafts"
-msgstr "Borradores"
+#: C/write.page:98
+msgid "Checking spelling"
+msgstr "Comprobar la ortogracía"
#. (itstool) path: section/p
-#: C/write.page:45
+#: C/write.page:100
+msgid ""
+"Geary supports spell-checking your composed email in one or more languages, "
+"as you type. To enable spell-checking, first ensure your computer has spell-"
+"check dictionaries installed for the desired languages. Consult your "
+"computer's help to determine how to install dictionaries if not present."
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/write.page:106
+msgid ""
+"To select languages for spell-checking, click the Spell check button on the formatting toolbar, and the language "
+"selection popover will appear. Click on a language in the list to toggle it "
+"on or off, and click the - button to remove it "
+"from the list. If a language does not appear in the list, search for it by "
+"typing its name in the search box, then click the +"
+"gui> button to add it."
+msgstr ""
+
+#. (itstool) path: section/title
+#: C/write.page:117
+msgid "Saving drafts and restoring discarded messages"
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/write.page:119
+#, fuzzy
+#| msgid ""
+#| "For mail servers that support drafts, Geary will automatically save the "
+#| "message as you type. If you close the composer without sending, Geary "
+#| "will prompt you to keep the draft or to discard it."
msgid ""
"For mail servers that support drafts, Geary will automatically save the "
-"message as you type. If you close the composer without sending, Geary will "
-"prompt you to keep the draft or to discard it."
+"message as you type on the server after a short delay."
msgstr ""
"Si está usando un servidor de correo que admite borradores, Geary guardará "
"automáticamente el mensaje a medida que lo escribe. Si cierra la ventana del "
@@ -1281,29 +1376,197 @@ msgstr ""
"borrador."
#. (itstool) path: section/p
-#: C/write.page:48
+#: C/write.page:123
+#, fuzzy
+#| msgid ""
+#| "To edit an existing draft, select the Drafts folder in the folder list, "
+#| "select the message, and click \"Edit Draft\" in the message viewer."
msgid ""
-"To edit an existing draft, select the Drafts folder in the folder list, "
-"select the message, and click \"Edit Draft\" in the message viewer."
+"To edit an existing draft, select the Drafts folder in the folder "
+"list, select the message, and click \"Edit Draft\" in the conversation "
+"viewer."
msgstr ""
"Para editar un borrador existente, seleccione la carpeta Borradores de la "
"lista de carpetas, elija el mensaje y pulse en «Editar el borrador» en el "
"visor de mensajes."
#. (itstool) path: section/p
-#: C/write.page:51
-msgid "Geary deletes the draft when you send the message."
+#: C/write.page:127
+#, fuzzy
+#| msgid "Geary deletes the draft when you send the message."
+msgid "Geary will delete the draft when you send the message."
msgstr "Geary eliminará el borrador cuando envíe el mensaje."
+#. (itstool) path: note/p
+#: C/write.page:130
+msgid ""
+"If you save or discard a composed email, you can re-open it by clicking Undo on the pop-up notification that appears or by "
+"typing CtrlZ. The ability to restore "
+"a saved or discarded composer will be remain for up to 30 minutes. After "
+"that you will need to re-open the message via the Drafts folder, "
+"if present."
+msgstr ""
+
+#. (itstool) path: section/title
+#: C/write.page:141
+#| msgid "Write a message"
+msgid "Plain text messages"
+msgstr "Mensajes de texto plano"
+
+#. (itstool) path: section/p
+#: C/write.page:143
+msgid ""
+"Geary can also send plain text messages. In the drop-down menu, check or "
+"uncheck Rich Text to toggle between plain text and "
+"rich text mode. Plain text mode is useful when sending email to mailing "
+"lists that prohibit rich text (HTML) messages, or when sending email to "
+"people that do no use modern clients like Geary."
+msgstr ""
+
+#. (itstool) path: section/p
+#: C/write.page:150
+msgid ""
+"In plain text mode, text will be automatically wrapped using soft line "
+"breaks so that it is no longer than 74 characters wide, and indented text "
+"will be wrapped and quoted using a “>” character for each level of "
+"quoting."
+msgstr ""
+
+#~ msgid "Delete or archive a message"
+#~ msgstr "Eliminar o archivar un mensaje"
+
+#~ msgid ""
+#~ "When you use Geary with a Gmail account, Geary lets you archive "
+#~ "messages. The Archive toolbar button archives the selected "
+#~ "conversation(s). Archived messages appear in the All Mail "
+#~ "folder."
+#~ msgstr ""
+#~ "Cuando usa Geary con una cuenta de Gmail, Geary le permite archivar"
+#~ "em> los mensajes. El botón Archivar de la barra de "
+#~ "herramientas archiva las conversaciones seleccionadas. Los mensajes "
+#~ "archivados aparecen en la carpeta Todos los correos."
+
+#~ msgid ""
+#~ "Delete is not available from every folder, such as Search. Delete is also "
+#~ "unavailable for Gmail. For Gmail, Trash will move messages to "
+#~ "the Trash folder on the server, where the user can then manually delete "
+#~ "them. The server will automatically remove trashed messages after 30 days."
+#~ msgstr ""
+#~ "La eliminación no está disponible para todas la carpetas, como es el caso "
+#~ "de Buscar. Tampoco está disponible para Gmail. En este caso, la "
+#~ "Papelera moverá los mensajes a la carpeta Papelera en el "
+#~ "servidor, donde el usuario puede eliminarlos manualmente. El servidor "
+#~ "eliminará automáticamente los mensajes de esta carpeta pasados 30 días."
+
+#~ msgid ""
+#~ "The Preferences option is available in either Geary's "
+#~ "application menu or the gear menu in the upper-right of the toolbar. (The "
+#~ "location depends on the install desktop shell. For GNOME Shell and Unity, "
+#~ "the application menu is available near the top-left corner of the screen.)"
+#~ msgstr ""
+#~ "La opción Preferencias está disponible en el menú aplicación "
+#~ "de Geary o el menú de configuración en la parte superior derecha de la "
+#~ "barra de herramientas. (La ubicación depende de la shell de instalación "
+#~ "de escritorio. Para GNOME Shell y Unity, el menú aplicación esta "
+#~ "disponible cerca de la esquina superior izquierda de la pantalla.)"
+
+#~ msgid "Reading"
+#~ msgstr "Lectura"
+
+#~ msgid "Notifications"
+#~ msgstr "Notificaciones"
+
+#~ msgid "Play notification sounds"
+#~ msgstr "Reproducir sonidos de notificación"
+
+#~ msgid "When set, Geary plays a sound whenever a new message arrives."
+#~ msgstr ""
+#~ "Cuando está configurado, Geary reproduce un sonido cuando un mensaje "
+#~ "nuevo llega."
+
+#~ msgid "Show notifications for new mail"
+#~ msgstr "Mostrar notificaciones de mensajes nuevos"
+
+#~ msgid ""
+#~ "When set, Geary displays a notification each time a new message "
+#~ "arrives. Notifications are displayed in a system-dependent manner. On "
+#~ "GNOME Shell, notifications appear at the bottom of the display (older "
+#~ "versions) or centered just below the top bar (newer versions). In Ubuntu "
+#~ "Unity, notifications appear at the upper right of the display."
+#~ msgstr ""
+#~ "Cuando está configurado, Geary muestra una notificación cada vez "
+#~ "que un mensaje nuevo llega. Las notificaciones se muestran de una manera "
+#~ "dependiente del sistema. En GNOME Shell, las notificaciones se muestran "
+#~ "en la parte inferior de la pantalla (versiones antiguas). En Ubuntu "
+#~ "Unity, las notificaciones se muestran en la parte superior derecha de la "
+#~ "pantalla."
+
+#~ msgid ""
+#~ "Ctrl? or Ctrl"
+#~ "key>F1"
+#~ msgstr ""
+#~ "Ctrl? o Ctrl"
+#~ "key>F1"
+
+#~ msgid ""
+#~ "To compose a new message in Geary, press the New Message "
+#~ "button on the toolbar."
+#~ msgstr ""
+#~ "Para redactar un mensaje nuevo en Geary, pulse el botón Mensaje "
+#~ "nuevo de la barra de herramientas."
+
+#~ msgid "Features"
+#~ msgstr "Características"
+
+#~ msgid ""
+#~ "Geary's email composer lets you adjust the font, size and color of text. "
+#~ "You can also insert hyperlinks into messages."
+#~ msgstr ""
+#~ "El editor de mensajes de Geary le permite ajustar el tipo de letra, el "
+#~ "tamaño y el color del texto. También puede insertar hiperenlaces en los "
+#~ "mensajes."
+
+#~ msgid ""
+#~ "Geary can also send plain text messages. In the drop-down menu, check or "
+#~ "uncheck \"Rich Text\" to toggle between plain text and rich text mode."
+#~ msgstr ""
+#~ "Geary también puede enviar mensajes de texto sencillo. En el menú "
+#~ "desplegable, marque o desmarque «Texto enriquecido» para cambiar entre "
+#~ "los modos de texto sencillo y texto con formato."
+
+#~ msgid ""
+#~ "You can attach a file to a message you're writing in either of these ways:"
+#~ msgstr ""
+#~ "Puede adjuntar un archivo a un mensaje que esté redactando de las "
+#~ "siguientes maneras:"
+
+#~ msgid ""
+#~ "Press the Attach File button at the lower left of the composer "
+#~ "window, then select a file to attach."
+#~ msgstr ""
+#~ "Pulse en el botón Adjuntar un archivo en la esquina inferior "
+#~ "izquierda de la ventana del editor, y seleccione el archivo que quiere "
+#~ "adjuntar."
+
+#~ msgid ""
+#~ "Drag the file from the Nautilus file manager to the composer window, and "
+#~ "drop it either on the text fields at the top of the window or on the "
+#~ "toolbar at the bottom."
+#~ msgstr ""
+#~ "Arrastre el archivo desde el gestor de archivos Nautilus hasta la ventana "
+#~ "del editor, y suéltelo en los campos de texto en la parte superior de la "
+#~ "ventana o en la barra de herramientas inferior."
+
+#~ msgid "Drafts"
+#~ msgstr "Borradores"
+
#~ msgid "Geary has keyboard shortcuts for most common operations."
#~ msgstr "Geary incluye atajos de teclado para las operaciones más comunes."
#~ msgid "Compose a new message"
#~ msgstr "Redactar un mensaje nuevo"
-#~ msgid "CtrlN or N"
-#~ msgstr "CtrlN o N"
-
#~ msgid "Reply to sender"
#~ msgstr "Responder al remitente"
diff --git a/icons/font-color-symbolic.svg b/icons/font-color-symbolic.svg
new file mode 100644
index 00000000..c51bc931
--- /dev/null
+++ b/icons/font-color-symbolic.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/icons/font-size-symbolic.svg b/icons/font-size-symbolic.svg
new file mode 100644
index 00000000..07ecc544
--- /dev/null
+++ b/icons/font-size-symbolic.svg
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/icons/meson.build b/icons/meson.build
index 2234d3b0..138ed558 100644
--- a/icons/meson.build
+++ b/icons/meson.build
@@ -6,6 +6,8 @@ icon_files = files(
'detach-symbolic.svg',
'text-x-generic-symbolic.svg',
'edit-symbolic.svg',
+ 'font-size-symbolic.svg',
+ 'font-color-symbolic.svg',
'format-ordered-list-symbolic.svg',
'format-ordered-list-symbolic-rtl.svg',
'format-text-remove-symbolic.svg',
diff --git a/meson.build b/meson.build
index c8e0c277..0bb4eea5 100644
--- a/meson.build
+++ b/meson.build
@@ -79,7 +79,7 @@ gthread = dependency('gthread-2.0', version: '>=' + target_glib)
iso_codes = dependency('iso-codes')
javascriptcoregtk = dependency('javascriptcoregtk-4.0', version: '>=' + target_webkit)
json_glib = dependency('json-glib-1.0', version: '>= 1.0')
-libhandy = dependency('libhandy-0.0', version: '>= 0.0.9', required: false)
+libhandy = dependency('libhandy-0.0', version: '>= 0.0.10')
libmath = cc.find_library('m')
libpeas = dependency('libpeas-1.0', version: '>= 1.24.0')
libsecret = dependency('libsecret-1', version: '>= 0.11')
@@ -100,26 +100,6 @@ if not enchant.found()
enchant = dependency('enchant', version: '>=1.6')
endif
-# Handy isn't necessarily packaged by distros, so fall back to a
-# subproject until it is.
-if not libhandy.found()
- libhandy_subproj = subproject(
- 'libhandy',
- default_options: [
- 'examples=false',
- 'glade_catalog=disabled',
- 'tests=false',
- ]
- )
-
- libhandy = declare_dependency(
- dependencies: [
- libhandy_subproj.get_variable('libhandy_dep'),
- libhandy_subproj.get_variable('libhandy_vapi'),
- ]
- )
-endif
-
# Libunwind system dependencies above ensures appropriate versions,
# but this declared depencency is what we actually build against so we
# can include the custom VAPI correctly. We need to add unwind_lib to
diff --git a/org.gnome.Geary.json b/org.gnome.Geary.json
index be08b087..4645fee0 100644
--- a/org.gnome.Geary.json
+++ b/org.gnome.Geary.json
@@ -90,8 +90,8 @@
"sources": [
{
"type": "archive",
- "url": "https://github.com/libical/libical/releases/download/v3.0.5/libical-3.0.5.tar.gz",
- "sha256": "7ad550c8c49c9b9983658e3ab3e68b1eee2439ec17b169a6b1e6ecb5274e78e6"
+ "url": "https://github.com/libical/libical/releases/download/v3.0.7/libical-3.0.7.tar.gz",
+ "sha256": "0abe66df1ea826e57db7f281c704ede834c84139012e6c686ea7adafd4e763fc"
}
],
"cleanup": [
@@ -180,7 +180,8 @@
"sources": [
{
"type": "git",
- "url": "https://source.puri.sm/Librem5/libhandy.git"
+ "url": "https://source.puri.sm/Librem5/libhandy.git",
+ "branch": "v0.0.13"
}
]
},
diff --git a/org.gnome.Geary.yml b/org.gnome.Geary.yml
index b8bb7336..624fccf2 100644
--- a/org.gnome.Geary.yml
+++ b/org.gnome.Geary.yml
@@ -115,8 +115,8 @@ modules:
- "-DICAL_BUILD_DOCS=false"
sources:
- type: archive
- url: https://github.com/libical/libical/releases/download/v3.0.5/libical-3.0.5.tar.gz
- sha256: 7ad550c8c49c9b9983658e3ab3e68b1eee2439ec17b169a6b1e6ecb5274e78e6
+ url: https://github.com/libical/libical/releases/download/v3.0.7/libical-3.0.7.tar.gz
+ sha256: 0abe66df1ea826e57db7f281c704ede834c84139012e6c686ea7adafd4e763fc
cleanup:
- /lib/cmake
@@ -184,6 +184,7 @@ modules:
sources:
- type: git
url: https://source.puri.sm/Librem5/libhandy.git
+ branch: v0.0.13
# Geary dependency
- name: libpeas
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 12759016..ab4c9a19 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,4 +1,5 @@
# List of source files that should *not* be translated.
# Please keep this file sorted alphabetically.
build
+src/client/components/components-reflow-box.c
subprojects/libhandy
diff --git a/po/es.po b/po/es.po
index 1df5927c..daaa90cd 100644
--- a/po/es.po
+++ b/po/es.po
@@ -18,8 +18,8 @@ msgid ""
msgstr ""
"Project-Id-Version: geary-0.4.1\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n"
-"POT-Creation-Date: 2020-01-08 10:10+0000\n"
-"PO-Revision-Date: 2020-01-08 12:22+0100\n"
+"POT-Creation-Date: 2020-01-23 08:37+0000\n"
+"PO-Revision-Date: 2020-01-23 12:42+0100\n"
"Last-Translator: Daniel Mustieles \n"
"Language-Team: Spanish - Spain \n"
"Language: es_ES\n"
@@ -198,36 +198,45 @@ msgid "True if the folder list Paned is in the horizontal orientation."
msgstr "Cierto si el panel de lista de carpetas está en horizontal."
#: desktop/org.gnome.Geary.gschema.xml:50
+msgid "Show/hide formatting toolbar"
+msgstr "Mostrar u ocultar la barra de herramientas de formato"
+
+#: desktop/org.gnome.Geary.gschema.xml:51
+msgid "True if the formatting toolbar in the composer is shown."
+msgstr ""
+"Cierto si si se muestra la barra de herramientas de formato en el editor"
+
+#: desktop/org.gnome.Geary.gschema.xml:56
msgid "Position of message list pane"
msgstr "Posición del panel de lista de mensajes"
-#: desktop/org.gnome.Geary.gschema.xml:51
+#: desktop/org.gnome.Geary.gschema.xml:57
msgid "Position of the message list Paned grabber."
msgstr "Posición del panel de exploración en la lista de mensajes."
-#: desktop/org.gnome.Geary.gschema.xml:56
+#: desktop/org.gnome.Geary.gschema.xml:62
msgid "Autoselect next message"
msgstr "Seleccionar el siguiente mensaje automáticamente"
-#: desktop/org.gnome.Geary.gschema.xml:57
+#: desktop/org.gnome.Geary.gschema.xml:63
msgid "True if we should autoselect the next available conversation."
msgstr ""
"Cierto si se debe seleccionar automáticamente la siguiente conversación "
"disponible."
-#: desktop/org.gnome.Geary.gschema.xml:62
+#: desktop/org.gnome.Geary.gschema.xml:68
msgid "Display message previews"
msgstr "Mostrar la vista previa de los mensajes"
-#: desktop/org.gnome.Geary.gschema.xml:63
+#: desktop/org.gnome.Geary.gschema.xml:69
msgid "True if we should display a short preview of each message."
msgstr "Cierto si se debe mostrar una breve vista previa de cada mensaje."
-#: desktop/org.gnome.Geary.gschema.xml:68
+#: desktop/org.gnome.Geary.gschema.xml:74
msgid "Use single key shortcuts"
msgstr "Usar atajos de una sola tecla"
-#: desktop/org.gnome.Geary.gschema.xml:69
+#: desktop/org.gnome.Geary.gschema.xml:75
msgid ""
"Enables shortcuts for email actions that do not require pressing to "
"emulate those used by Gmail."
@@ -235,11 +244,11 @@ msgstr ""
"Activar atajos para acciones del correo que no requieren pulsar para "
"emular las utilizadas por Gmail."
-#: desktop/org.gnome.Geary.gschema.xml:76
+#: desktop/org.gnome.Geary.gschema.xml:82
msgid "Languages that shall be used in the spell checker"
msgstr "Idiomas que se deben usar en el corrector ortográfico"
-#: desktop/org.gnome.Geary.gschema.xml:77
+#: desktop/org.gnome.Geary.gschema.xml:83
msgid ""
"A list of POSIX locales, with the empty list disabling spell checking and "
"the null list using desktop languages by default."
@@ -248,11 +257,11 @@ msgstr ""
"ortográfica y la lista nula usa los idiomas del escritorio de manera "
"predeterminada."
-#: desktop/org.gnome.Geary.gschema.xml:84
+#: desktop/org.gnome.Geary.gschema.xml:90
msgid "Languages that are displayed in the spell checker popover"
msgstr "Idiomas mostrados en la ventana emergente del corrector ortográfico"
-#: desktop/org.gnome.Geary.gschema.xml:85
+#: desktop/org.gnome.Geary.gschema.xml:91
msgid ""
"List of languages that are always displayed in the popover of the spell "
"checker."
@@ -260,63 +269,63 @@ msgstr ""
"Lista de idiomas que se muestra siempre en la ventana emergente del "
"corrector ortográfico."
-#: desktop/org.gnome.Geary.gschema.xml:90
+#: desktop/org.gnome.Geary.gschema.xml:96
msgid "Notify of new mail at startup"
msgstr "Notificar si hay correo nuevo al iniciar"
-#: desktop/org.gnome.Geary.gschema.xml:91
+#: desktop/org.gnome.Geary.gschema.xml:97
msgid "True to notify of new mail at startup."
msgstr "Cierto para notificar cuando llegue correo nuevo al inicio."
-#: desktop/org.gnome.Geary.gschema.xml:96
+#: desktop/org.gnome.Geary.gschema.xml:102
msgid "Ask when opening an attachment"
msgstr "Preguntar al abrir un adjunto"
-#: desktop/org.gnome.Geary.gschema.xml:97
+#: desktop/org.gnome.Geary.gschema.xml:103
msgid "True to ask when opening an attachment."
msgstr "Cierto para preguntar al abrir un adjunto."
-#: desktop/org.gnome.Geary.gschema.xml:102
+#: desktop/org.gnome.Geary.gschema.xml:108
msgid "Whether to compose emails in HTML"
msgstr "Indica si se deben redactar los correos en HTML"
-#: desktop/org.gnome.Geary.gschema.xml:103
+#: desktop/org.gnome.Geary.gschema.xml:109
msgid "True to compose emails in HTML; false for plain text."
msgstr ""
"Cierto para redactar los correos en HTML; falso para redactarlos en texto "
"plano."
-#: desktop/org.gnome.Geary.gschema.xml:108
+#: desktop/org.gnome.Geary.gschema.xml:114
msgid "Advisory strategy for full-text searching"
msgstr "Estrategia de asesoriamento para la búsqueda de textos completos."
-#: desktop/org.gnome.Geary.gschema.xml:109
+#: desktop/org.gnome.Geary.gschema.xml:115
msgid ""
"Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”."
msgstr ""
"Los valores posibles son “exact”, “conservative”, “aggressive”, y “horizon”."
-#: desktop/org.gnome.Geary.gschema.xml:114
+#: desktop/org.gnome.Geary.gschema.xml:120
msgid "Zoom of conversation viewer"
msgstr "Ampliación del visor de conversaciones"
-#: desktop/org.gnome.Geary.gschema.xml:115
+#: desktop/org.gnome.Geary.gschema.xml:121
msgid "The zoom to apply on the conservation view."
msgstr "El nivel de ampliación que usar para la vista de conversación."
-#: desktop/org.gnome.Geary.gschema.xml:120
+#: desktop/org.gnome.Geary.gschema.xml:126
msgid "Size of detached composer window"
msgstr "Tamaño de la ventana desacoplada del editor"
-#: desktop/org.gnome.Geary.gschema.xml:121
+#: desktop/org.gnome.Geary.gschema.xml:127
msgid "The last recorded size of the detached composer window."
msgstr "El último tamaño guardado de la ventana desacoplada del editor."
-#: desktop/org.gnome.Geary.gschema.xml:126
+#: desktop/org.gnome.Geary.gschema.xml:132
msgid "Undo sending email delay"
msgstr "Retardo para deshacer el envío de correo"
-#: desktop/org.gnome.Geary.gschema.xml:127
+#: desktop/org.gnome.Geary.gschema.xml:133
msgid ""
"The number of seconds to wait before sending an email. Set to zero or less "
"to disable."
@@ -324,11 +333,22 @@ msgstr ""
"El número de segundos que esperar antes de enviar un correo. Establecer a "
"cero o menos para desactivar."
-#: desktop/org.gnome.Geary.gschema.xml:133
+#: desktop/org.gnome.Geary.gschema.xml:139
+msgid "Brief notification display time"
+msgstr "Tiempo breve que mostrar la notificación"
+
+#: desktop/org.gnome.Geary.gschema.xml:140
+msgid ""
+"The length of time in seconds for which brief notifications should be "
+"displayed."
+msgstr ""
+"El tiempo, en segundos, que se deben mostrar las notificaciones breves."
+
+#: desktop/org.gnome.Geary.gschema.xml:146
msgid "Whether we migrated the old settings"
msgstr "Indica si se ha migrado la configuración antigua"
-#: desktop/org.gnome.Geary.gschema.xml:134
+#: desktop/org.gnome.Geary.gschema.xml:147
msgid ""
"False to check for the old “org.yorba.geary”-schema and copy its values."
msgstr ""
@@ -604,56 +624,56 @@ msgid_plural "%d days back"
msgstr[0] "hace %d día"
msgstr[1] "hace %d días"
-#: src/client/accounts/accounts-editor-list-pane.vala:248
-#: src/client/application/application-main-window.vala:2037
+#: src/client/accounts/accounts-editor-list-pane.vala:252
+#: src/client/application/application-main-window.vala:2043
msgid "Undo"
msgstr "Deshacer"
-#: src/client/accounts/accounts-editor-list-pane.vala:257
-#: src/client/application/application-main-window.vala:2027
+#: src/client/accounts/accounts-editor-list-pane.vala:261
+#: src/client/application/application-main-window.vala:2030
msgid "Redo"
msgstr "Rehacer"
-#: src/client/accounts/accounts-editor-list-pane.vala:351
-#: src/client/accounts/accounts-editor-list-pane.vala:439
+#: src/client/accounts/accounts-editor-list-pane.vala:355
+#: src/client/accounts/accounts-editor-list-pane.vala:443
#: src/client/accounts/accounts-editor-row.vala:279
msgid "Gmail"
msgstr "Gmail"
-#: src/client/accounts/accounts-editor-list-pane.vala:355
-#: src/client/accounts/accounts-editor-list-pane.vala:443
+#: src/client/accounts/accounts-editor-list-pane.vala:359
+#: src/client/accounts/accounts-editor-list-pane.vala:447
#: src/client/accounts/accounts-editor-row.vala:283
msgid "Outlook.com"
msgstr "Outlook.com"
-#: src/client/accounts/accounts-editor-list-pane.vala:359
-#: src/client/accounts/accounts-editor-list-pane.vala:447
+#: src/client/accounts/accounts-editor-list-pane.vala:363
+#: src/client/accounts/accounts-editor-list-pane.vala:451
#: src/client/accounts/accounts-editor-row.vala:287
msgid "Yahoo"
msgstr "Yahoo"
#. Translators: Tooltip for accounts that have been
#. loaded but disabled by the user.
-#: src/client/accounts/accounts-editor-list-pane.vala:377
+#: src/client/accounts/accounts-editor-list-pane.vala:381
msgid "This account has been disabled"
msgstr "Esta cuenta se ha desactivado"
#. Translators: Tooltip for accounts that have been
#. loaded but because of some error are not able to be
#. used.
-#: src/client/accounts/accounts-editor-list-pane.vala:386
+#: src/client/accounts/accounts-editor-list-pane.vala:390
msgid "This account has encountered a problem and is unavailable"
msgstr "Esta cuenta ha encontrado un problema y no está disponible"
#. Translators: Label for adding a generic email account
-#: src/client/accounts/accounts-editor-list-pane.vala:436
+#: src/client/accounts/accounts-editor-list-pane.vala:440
msgid "Other email providers"
msgstr "Otros proveedores de correo-e"
#. Translators: Notification shown after removing an
#. account. The string substitution is the name of the
#. account.
-#: src/client/accounts/accounts-editor-list-pane.vala:553
+#: src/client/accounts/accounts-editor-list-pane.vala:557
#, c-format
msgid "Account “%s” removed"
msgstr "Cuenta «%s» eliminada"
@@ -661,7 +681,7 @@ msgstr "Cuenta «%s» eliminada"
#. Translators: Notification shown after removing an account
#. is undone. The string substitution is the name of the
#. account.
-#: src/client/accounts/accounts-editor-list-pane.vala:560
+#: src/client/accounts/accounts-editor-list-pane.vala:564
#, c-format
msgid "Account “%s” restored"
msgstr "Cuenta «%s» restaurada"
@@ -1139,27 +1159,27 @@ msgstr "Correo enviado a %s"
#. / Translators: The label for an in-app notification. The
#. / string substitution is a list of recipients of the email.
-#: src/client/application/application-controller.vala:2636
+#: src/client/application/application-controller.vala:2641
#, c-format
msgid "Email to %s queued for delivery"
msgstr "Correo a %s encolado para su entrega"
#. / Translators: The label for an in-app notification. The
#. / string substitution is a list of recipients of the email.
-#: src/client/application/application-controller.vala:2701
+#: src/client/application/application-controller.vala:2705
#, c-format
msgid "Email to %s saved"
msgstr "Correo a %s guardado"
#. / Translators: A label for an in-app notification.
-#: src/client/application/application-controller.vala:2716
-#: src/client/application/application-controller.vala:2774
+#: src/client/application/application-controller.vala:2720
+#: src/client/application/application-controller.vala:2778
msgid "Composer could not be restored"
msgstr "No se pudo restaurar el editor"
#. / Translators: The label for an in-app notification. The
#. / string substitution is a list of recipients of the email.
-#: src/client/application/application-controller.vala:2759
+#: src/client/application/application-controller.vala:2763
#, c-format
msgid "Email to %s discarded"
msgstr "Correo a %s descartado"
@@ -1177,44 +1197,44 @@ msgid "Labels"
msgstr "Etiquetas"
#. / Translators: Primary text for a confirmation dialog
-#: src/client/application/application-main-window.vala:1297
+#: src/client/application/application-main-window.vala:1300
msgid "Do you want to permanently delete this conversation?"
msgid_plural "Do you want to permanently delete these conversations?"
msgstr[0] "¿Quiere eliminar permanentemente esta conversación?"
msgstr[1] "¿Quiere eliminar permanentemente estas conversaciones?"
-#: src/client/application/application-main-window.vala:1302
-#: src/client/application/application-main-window.vala:1317
+#: src/client/application/application-main-window.vala:1305
+#: src/client/application/application-main-window.vala:1320
msgid "Delete"
msgstr "Eliminar"
#. / Translators: Primary text for a confirmation dialog
-#: src/client/application/application-main-window.vala:1312
+#: src/client/application/application-main-window.vala:1315
msgid "Do you want to permanently delete this message?"
msgid_plural "Do you want to permanently delete these messages?"
msgstr[0] "¿Quiere eliminar permanentemente este mensaje?"
msgstr[1] "¿Quiere eliminar permanentemente estos mensajes?"
-#: src/client/application/application-main-window.vala:1325
+#: src/client/application/application-main-window.vala:1328
#, c-format
msgid "Empty all email from your %s folder?"
msgstr "¿Quiere eliminar todos los mensajes de la carpeta «%s»?"
-#: src/client/application/application-main-window.vala:1328
+#: src/client/application/application-main-window.vala:1331
msgid "This removes the email from Geary and your email server."
msgstr ""
"Esto eliminará el mensaje de Geary y del servidor de correo electrónico."
-#: src/client/application/application-main-window.vala:1329
+#: src/client/application/application-main-window.vala:1332
msgid "This cannot be undone."
msgstr "Esto no se puede deshacer."
-#: src/client/application/application-main-window.vala:1330
+#: src/client/application/application-main-window.vala:1333
#, c-format
msgid "Empty %s"
msgstr "Vaciar %s"
-#: src/client/application/application-main-window.vala:1660
+#: src/client/application/application-main-window.vala:1663
#, c-format
msgid "%s (%d)"
msgstr "%s (%d)"
@@ -1225,7 +1245,7 @@ msgstr "%s (%d)"
#. Document (100.9MB)
#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)"
#: src/client/components/components-attachment-pane.vala:107
-#: src/client/composer/composer-widget.vala:1816
+#: src/client/composer/composer-widget.vala:1826
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
@@ -1364,37 +1384,37 @@ msgstr "Se necesita un nombre de servidor"
msgid "Could not look up server name"
msgstr "No se pudo encontrar el nombre del servidor"
-#: src/client/components/main-toolbar.vala:142
+#: src/client/components/main-toolbar.vala:138
msgid "Mark conversation"
msgid_plural "Mark conversations"
msgstr[0] "Marcar conversación"
msgstr[1] "Marcar conversaciones"
-#: src/client/components/main-toolbar.vala:147
+#: src/client/components/main-toolbar.vala:143
msgid "Add label to conversation"
msgid_plural "Add label to conversations"
msgstr[0] "Añadir etiqueta a la conversación"
msgstr[1] "Añadir etiqueta a las conversaciones"
-#: src/client/components/main-toolbar.vala:152
+#: src/client/components/main-toolbar.vala:148
msgid "Move conversation"
msgid_plural "Move conversations"
msgstr[0] "Mover conversación"
msgstr[1] "Mover conversaciones"
-#: src/client/components/main-toolbar.vala:157
+#: src/client/components/main-toolbar.vala:153
msgid "Archive conversation"
msgid_plural "Archive conversations"
msgstr[0] "Archivar conversación"
msgstr[1] "Archivar conversación"
-#: src/client/components/main-toolbar.vala:168
+#: src/client/components/main-toolbar.vala:164
msgid "Move conversation to Trash"
msgid_plural "Move conversations to Trash"
msgstr[0] "Mover conversación a la papelera"
msgstr[1] "Mover conversaciones a la papelera"
-#: src/client/components/main-toolbar.vala:178
+#: src/client/components/main-toolbar.vala:174
msgid "Delete conversation"
msgid_plural "Delete conversations"
msgstr[0] "Eliminar conversación"
@@ -1556,23 +1576,23 @@ msgid "Invalid email address"
msgstr "Dirección correo-e no válida"
#. / Translators: Title for an empty composer window
-#: src/client/composer/composer-widget.vala:28
+#: src/client/composer/composer-widget.vala:30
msgid "New Message"
msgstr "Mensaje nuevo"
-#: src/client/composer/composer-widget.vala:210
+#: src/client/composer/composer-widget.vala:214
msgid "Saved"
msgstr "Guardado"
-#: src/client/composer/composer-widget.vala:211
+#: src/client/composer/composer-widget.vala:215
msgid "Saving"
msgstr "Guardando"
-#: src/client/composer/composer-widget.vala:212
+#: src/client/composer/composer-widget.vala:216
msgid "Error saving"
msgstr "Error al guardar"
-#: src/client/composer/composer-widget.vala:213
+#: src/client/composer/composer-widget.vala:217
msgid "Press Backspace to delete quote"
msgstr "Pulse Retroceso para eliminar la cita"
@@ -1581,7 +1601,7 @@ msgstr "Pulse Retroceso para eliminar la cita"
#. checking, include all variants of each word. No spaces are
#. allowed. The words will be converted to lower case based on
#. locale and English versions included automatically.
-#: src/client/composer/composer-widget.vala:229
+#: src/client/composer/composer-widget.vala:233
msgid ""
"attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|"
"enclosing|encloses|enclosure|enclosures"
@@ -1592,90 +1612,90 @@ msgstr ""
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. Keep, Discard or Cancel.
-#: src/client/composer/composer-widget.vala:815
+#: src/client/composer/composer-widget.vala:823
msgid "Do you want to keep or discard this draft message?"
msgstr "¿Quiere mantener o descartar este mensaje en borrador?"
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. only Discard or Cancel.
-#: src/client/composer/composer-widget.vala:841
+#: src/client/composer/composer-widget.vala:849
msgid "Do you want to discard this draft message?"
msgstr "¿Quiere descartar este mensaje en borrador?"
-#: src/client/composer/composer-widget.vala:1485
+#: src/client/composer/composer-widget.vala:1492
msgid "Send message with an empty subject and body?"
msgstr "¿Quiere enviar el mensaje sin asunto ni cuerpo?"
-#: src/client/composer/composer-widget.vala:1487
+#: src/client/composer/composer-widget.vala:1494
msgid "Send message with an empty subject?"
msgstr "¿Quiere enviar el mensaje sin asunto?"
-#: src/client/composer/composer-widget.vala:1489
+#: src/client/composer/composer-widget.vala:1496
msgid "Send message with an empty body?"
msgstr "¿Quiere enviar el mensaje sin cuerpo?"
-#: src/client/composer/composer-widget.vala:1498
+#: src/client/composer/composer-widget.vala:1505
msgid "Send message without an attachment?"
msgstr "¿Quiere enviar el mensaje sin el archivo adjunto?"
-#: src/client/composer/composer-widget.vala:1808
+#: src/client/composer/composer-widget.vala:1818
#, c-format
msgid "“%s” already attached for delivery."
msgstr "Ya se ha adjuntado «%s» para enviarlo."
-#: src/client/composer/composer-widget.vala:1838
-#: src/client/composer/composer-widget.vala:1888
+#: src/client/composer/composer-widget.vala:1848
+#: src/client/composer/composer-widget.vala:1898
#, c-format
msgid "“%s” is an empty file."
msgstr "«%s» es un archivo vacío."
-#: src/client/composer/composer-widget.vala:1876
+#: src/client/composer/composer-widget.vala:1886
#, c-format
msgid "“%s” could not be found."
msgstr "No se pudo encontrar «%s»."
-#: src/client/composer/composer-widget.vala:1882
+#: src/client/composer/composer-widget.vala:1892
#, c-format
msgid "“%s” is a folder."
msgstr "«%s» es una carpeta."
-#: src/client/composer/composer-widget.vala:1901
+#: src/client/composer/composer-widget.vala:1911
#, c-format
msgid "“%s” could not be opened for reading."
msgstr "No se pudo abrir «%s» para lectura."
-#: src/client/composer/composer-widget.vala:1909
+#: src/client/composer/composer-widget.vala:1919
msgid "Cannot add attachment"
msgstr "No se puede adjuntar el archivo"
#. Translators: Human-readable version of the RFC 822 To header
-#: src/client/composer/composer-widget.vala:1966
+#: src/client/composer/composer-widget.vala:1976
#: src/client/conversation-viewer/conversation-email.vala:559
#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312
msgid "To:"
msgstr "Para:"
#. Translators: Human-readable version of the RFC 822 CC header
-#: src/client/composer/composer-widget.vala:1972
+#: src/client/composer/composer-widget.vala:1982
#: src/client/conversation-viewer/conversation-email.vala:564
#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357
msgid "Cc:"
msgstr "Cc:"
#. Translators: Human-readable version of the RFC 822 BCC header
-#: src/client/composer/composer-widget.vala:1978
+#: src/client/composer/composer-widget.vala:1988
#: src/client/conversation-viewer/conversation-email.vala:569
#: ui/conversation-message.ui:402
msgid "Bcc:"
msgstr "Cco:"
#. Translators: Human-readable version of the RFC 822 Reply-To header
-#: src/client/composer/composer-widget.vala:1984
+#: src/client/composer/composer-widget.vala:1994
msgid "Reply-To: "
msgstr "Responder a:"
-#: src/client/composer/composer-widget.vala:2170
+#: src/client/composer/composer-widget.vala:2213
msgid "Select Color"
msgstr "Seleccionar color"
@@ -1684,32 +1704,32 @@ msgstr "Seleccionar color"
#. printf argument will be the alternate email address,
#. and the second will be the account's primary email
#. address.
-#: src/client/composer/composer-widget.vala:2362
+#: src/client/composer/composer-widget.vala:2408
#, c-format
msgid "%1$s via %2$s"
msgstr "%1$s mediante %2$s"
#. Composer label (with mnemonic underscore) for the account selector
#. when choosing what address to send a message from.
-#: src/client/composer/composer-widget.vala:2418
+#: src/client/composer/composer-widget.vala:2464
msgid "_From:"
msgstr "_De:"
#. Translators: This is the name of the file chooser filter
#. when inserting an image in the composer.
-#: src/client/composer/composer-widget.vala:2721
+#: src/client/composer/composer-widget.vala:2769
msgid "Images"
msgstr "Imágenes"
-#: src/client/composer/spell-check-popover.vala:108
+#: src/client/composer/spell-check-popover.vala:109
msgid "Remove this language from the preferred list"
msgstr "Quitar este idioma de la lista de favoritos"
-#: src/client/composer/spell-check-popover.vala:112
+#: src/client/composer/spell-check-popover.vala:113
msgid "Add this language to the preferred list"
msgstr "Añadir este idioma de la lista de favoritos"
-#: src/client/composer/spell-check-popover.vala:199
+#: src/client/composer/spell-check-popover.vala:200
msgid "Search for more languages"
msgstr "Buscar más idiomas"
@@ -2644,27 +2664,19 @@ msgstr "_Confiar en este servidor"
msgid "_Don’t Trust This Server"
msgstr "_No confiar en este servidor"
-#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175
+#: ui/composer-headerbar.ui:23 ui/composer-headerbar.ui:107
msgid "Detach the composer from the window"
msgstr "Desacoplar el editor de la ventana"
-#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83
-msgid "Attach a file"
-msgstr "Adjuntar un archivo"
-
-#: ui/composer-headerbar.ui:107
-msgid "Add original attachments"
-msgstr "Añadir adjuntos originales"
-
-#: ui/composer-headerbar.ui:203
+#: ui/composer-headerbar.ui:135
msgid "_Send"
msgstr "_Enviar"
-#: ui/composer-headerbar.ui:230
+#: ui/composer-headerbar.ui:162
msgid "Discard and Close"
msgstr "Descartar y cerrar"
-#: ui/composer-headerbar.ui:254
+#: ui/composer-headerbar.ui:186
msgid "Save and Close"
msgstr "Guardar y cerrar"
@@ -2690,95 +2702,63 @@ msgstr "Eliminar este enlace"
msgid "Open this link"
msgstr "Abrir este enlace"
-#: ui/composer-menus.ui:7
-msgid "S_ans Serif"
-msgstr "S_ans serif"
-
-#: ui/composer-menus.ui:12
-msgid "S_erif"
-msgstr "S_erif"
-
-#: ui/composer-menus.ui:17
-msgid "_Fixed Width"
-msgstr "_Anchura fija"
-
-#: ui/composer-menus.ui:24
-msgid "_Small"
-msgstr "_Pequeño"
-
-#: ui/composer-menus.ui:29
-msgid "_Medium"
-msgstr "_Mediano"
-
-#: ui/composer-menus.ui:34
-msgid "Lar_ge"
-msgstr "_Grande"
-
-#: ui/composer-menus.ui:41
-msgid "C_olor"
-msgstr "C_olor"
-
-#: ui/composer-menus.ui:47 ui/composer-menus.ui:56
-msgid "_Rich Text"
-msgstr "Texto en_riquecido"
-
-#: ui/composer-menus.ui:66
+#: ui/composer-menus.ui:8
msgid "_Undo"
msgstr "_Deshacer"
-#: ui/composer-menus.ui:70
+#: ui/composer-menus.ui:12
msgid "_Redo"
msgstr "_Rehacer"
-#: ui/composer-menus.ui:76 ui/composer-menus.ui:94
+#: ui/composer-menus.ui:18 ui/composer-menus.ui:36
msgid "Cu_t"
msgstr "Cor_tar"
-#: ui/composer-menus.ui:80 ui/composer-menus.ui:98
+#: ui/composer-menus.ui:22 ui/composer-menus.ui:40
#: ui/conversation-message-menus.ui:37
msgid "_Copy"
msgstr "_Copiar"
-#: ui/composer-menus.ui:84 ui/composer-menus.ui:102
+#: ui/composer-menus.ui:26 ui/composer-menus.ui:44
msgid "_Paste"
msgstr "_Pegar"
-#: ui/composer-menus.ui:88
+#: ui/composer-menus.ui:30
msgctxt "Clipboard paste as plain text"
msgid "Paste _Without Formatting"
msgstr "Pegar _sin formato"
-#: ui/composer-menus.ui:108
+#: ui/composer-menus.ui:50
msgid "Select _All"
msgstr "Seleccionar _todo"
-#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43
+#: ui/composer-menus.ui:57 ui/conversation-message-menus.ui:43
msgid "_Inspect…"
msgstr "_Inspeccionar…"
#. Geary account mail will be sent from
-#: ui/composer-widget.ui:61
+#: ui/composer-widget.ui:60
msgid "From"
msgstr "De"
#. Address(es) e-mail is to be sent to
-#: ui/composer-widget.ui:131
+#: ui/composer-widget.ui:130
msgid "_To"
msgstr "_Para"
-#: ui/composer-widget.ui:159
+#: ui/composer-widget.ui:158
msgid "Show Cc, Bcc, and Reply-To fields"
msgstr "Mostrar los campos Cc, Cco y Responder a"
-#: ui/composer-widget.ui:214
+#: ui/composer-widget.ui:213
msgid "_Cc"
msgstr "_Cc"
-#: ui/composer-widget.ui:258
+#: ui/composer-widget.ui:257
msgid "_Bcc"
msgstr "Cc_o"
-#: ui/composer-widget.ui:302
+#: ui/composer-widget.ui:301
msgid "_Reply-To"
msgstr "_Responder a:"
@@ -2794,62 +2774,135 @@ msgstr "Suelte los archivos aquí"
msgid "To add them as attachments"
msgstr "Para añadirlos como adjuntos"
-#: ui/composer-widget.ui:488
-msgid "Undo last edit"
-msgstr "Deshacer la última edición"
-
-#: ui/composer-widget.ui:512
-msgid "Redo last edit"
-msgstr "Deshacer la última edición"
-
-#: ui/composer-widget.ui:550
+#: ui/composer-widget.ui:585
msgid "Bold text"
msgstr "Texto en negrita"
-#: ui/composer-widget.ui:574
+#: ui/composer-widget.ui:609
msgid "Italic text"
msgstr "Texto en cursiva"
-#: ui/composer-widget.ui:598
+#: ui/composer-widget.ui:633
msgid "Underline text"
msgstr "Subrayar el texto"
-#: ui/composer-widget.ui:622
+#: ui/composer-widget.ui:657
msgid "Strikethrough text"
msgstr "Tachar el texto"
-#: ui/composer-widget.ui:660
+#: ui/composer-widget.ui:690
msgid "Insert bulleted list"
msgstr "Insertar lista de topos"
-#: ui/composer-widget.ui:684
+#: ui/composer-widget.ui:714
msgid "Insert numbered list"
msgstr "Insertar lista numerada"
-#: ui/composer-widget.ui:722
+#: ui/composer-widget.ui:747
msgid "Indent or quote text"
msgstr "Sangrar o citar texto"
-#: ui/composer-widget.ui:746
+#: ui/composer-widget.ui:771
msgid "Un-indent or unquote text"
msgstr "Quitar la sangría o la cita del texto"
-#: ui/composer-widget.ui:784
-msgid "Insert or update text link"
-msgstr "Insertar o actualizar el enlace seleccionado"
-
-#: ui/composer-widget.ui:808
-msgid "Insert an image"
-msgstr "Insertar una imagen"
-
-#: ui/composer-widget.ui:842
+#: ui/composer-widget.ui:800
msgid "Remove text formatting"
msgstr "Quitar el formato del texto"
-#: ui/composer-widget.ui:866
+#: ui/composer-widget.ui:819
+msgid "Change font type"
+msgstr "Cambiar tipo de la tipografía"
+
+#: ui/composer-widget.ui:834
+msgid "Sans Serif"
+msgstr "Sans serif"
+
+#: ui/composer-widget.ui:845
+msgid "Serif"
+msgstr "Serif"
+
+#: ui/composer-widget.ui:856
+msgid "Fixed Width"
+msgstr "Anchura fija"
+
+#: ui/composer-widget.ui:882
+msgid "Change font color"
+msgstr "Cambiar color de la tipografía"
+
+#: ui/composer-widget.ui:897
+msgid "Change font size"
+msgstr "Cambiar tamaño de la tipografía"
+
+#: ui/composer-widget.ui:932
+msgid "Insert or update text link"
+msgstr "Insertar o actualizar el enlace seleccionado"
+
+#: ui/composer-widget.ui:956
+msgid "Insert an image"
+msgstr "Insertar una imagen"
+
+#: ui/composer-widget.ui:998
+msgid "Undo last edit"
+msgstr "Deshacer la última edición"
+
+#: ui/composer-widget.ui:1022
+msgid "Redo last edit"
+msgstr "Deshacer la última edición"
+
+#: ui/composer-widget.ui:1051 ui/composer-widget.ui:1076
+msgid "Attach a file"
+msgstr "Adjuntar un archivo"
+
+#: ui/composer-widget.ui:1100
+msgid "Add original attachments"
+msgstr "Añadir adjuntos originales"
+
+#: ui/composer-widget.ui:1145
+msgid "Enable or disable rich text mode"
+msgstr "Activar o desactivar el modo de texto enriquecido"
+
+#: ui/composer-widget.ui:1165
+msgid "Show formatting toolbar"
+msgstr "Mostrar barra de herramientas de formato"
+
+#: ui/composer-widget.ui:1183
msgid "Select spell checking languages"
msgstr "Seleccione el idioma de la revisión ortográfica"
+#: ui/composer-widget.ui:1247
+msgid "S_ans Serif"
+msgstr "S_ans serif"
+
+#: ui/composer-widget.ui:1252
+msgid "S_erif"
+msgstr "S_erif"
+
+#: ui/composer-widget.ui:1257
+msgid "_Fixed Width"
+msgstr "_Anchura fija"
+
+#: ui/composer-widget.ui:1267
+msgid "_Small"
+msgstr "_Pequeño"
+
+#: ui/composer-widget.ui:1272
+msgid "_Medium"
+msgstr "_Mediano"
+
+#: ui/composer-widget.ui:1277
+msgid "Lar_ge"
+msgstr "_Grande"
+
+#: ui/composer-widget.ui:1287
+msgid "_Rich Text"
+msgstr "Texto en_riquecido"
+
+#: ui/composer-widget.ui:1292
+#| msgid "_Rich Text"
+msgid "_Plain Text"
+msgstr "Texto _plano"
+
#: ui/components-attachment-pane.ui:29 ui/components-attachment-pane.ui:47
msgid "Select all attachments"
msgstr "Guardar todos los adjuntos"
@@ -3435,23 +3488,23 @@ msgstr "Redactar mensaje"
msgid "Toggle search bar"
msgstr "Conmutar la barra de búsqueda"
-#: ui/main-toolbar.ui:114
+#: ui/main-toolbar.ui:113
msgid "Reply"
msgstr "Responder"
-#: ui/main-toolbar.ui:137
+#: ui/main-toolbar.ui:136
msgid "Reply All"
msgstr "Responder a todos"
-#: ui/main-toolbar.ui:160
+#: ui/main-toolbar.ui:159
msgid "Forward"
msgstr "Reenviar"
-#: ui/main-toolbar.ui:265
+#: ui/main-toolbar.ui:264
msgid "Toggle find bar"
msgstr "Conmutar la barra de búsqueda"
-#: ui/main-toolbar.ui:286
+#: ui/main-toolbar.ui:285
msgid "_Archive"
msgstr "_Archivar"
@@ -3499,6 +3552,9 @@ msgstr "_Autenticar"
msgid "Geary update in progress…"
msgstr "Actualización de Geary en proceso…"
+#~ msgid "C_olor"
+#~ msgstr "C_olor"
+
#~ msgid "Show Extended Fields"
#~ msgstr "Mostrar campos ampliados"
@@ -4355,15 +4411,6 @@ msgstr "Actualización de Geary en proceso…"
#~ msgid "Small"
#~ msgstr "Pequeño"
-#~ msgid "Sans Serif"
-#~ msgstr "Sans serif"
-
-#~ msgid "Serif"
-#~ msgstr "Serif"
-
-#~ msgid "Fixed Width"
-#~ msgstr "Anchura fija"
-
#~ msgid "_Attach File"
#~ msgstr "_Adjuntar archivo"
diff --git a/po/id.po b/po/id.po
index b585dc6e..8fd9f184 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6,20 +6,21 @@
# Andika Triwidada , 2012-2014
# elementary Indonesia , 2012, 2013
# Mohamad Hasan Al Banna, 2013
+# Kukuh Syafaat , 2017, 2018, 2020.
msgid ""
msgstr ""
"Project-Id-Version: geary mainline\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n"
-"POT-Creation-Date: 2019-12-17 23:56+0000\n"
-"PO-Revision-Date: 2020-01-04 08:23+0700\n"
-"Last-Translator: Andika Triwidada \n"
+"POT-Creation-Date: 2020-01-08 10:10+0000\n"
+"PO-Revision-Date: 2020-01-14 20:18+0700\n"
+"Last-Translator: Kukuh Syafaat \n"
"Language-Team: Indonesian\n"
"Language: id\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 2.2.1\n"
+"X-Generator: Poedit 2.2.4\n"
#: desktop/geary-attach.contract.desktop.in:3
msgid "Send by email"
@@ -943,7 +944,7 @@ msgid "translator-credits"
msgstr ""
"Andika Triwidada , 2012, 2013, 2016, 2017, 2019\n"
"Dani Pratomo , 2012.\n"
-"Kukuh Syafaat , 2017, 2018."
+"Kukuh Syafaat , 2017, 2018, 2020."
#. / Warning printed to the console when a deprecated
#. / command line option is used.
@@ -1176,7 +1177,7 @@ msgstr "Hapus"
msgid "Do you want to permanently delete this message?"
msgid_plural "Do you want to permanently delete these messages?"
msgstr[0] "Anda mau membuang pesan ini secara permanen?"
-msgstr[1] ""
+msgstr[1] "Anda mau membuang pesan ini secara permanen?"
#: src/client/application/application-main-window.vala:1325
#, c-format
@@ -1207,7 +1208,7 @@ msgstr "%s (%d)"
#. Document (100.9MB)
#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)"
#: src/client/components/components-attachment-pane.vala:107
-#: src/client/composer/composer-widget.vala:1815
+#: src/client/composer/composer-widget.vala:1816
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
@@ -1350,37 +1351,37 @@ msgstr "Tidak bisa mencari nama server"
msgid "Mark conversation"
msgid_plural "Mark conversations"
msgstr[0] "Tandai percakapan"
-msgstr[1] ""
+msgstr[1] "Tandai percakapan"
#: src/client/components/main-toolbar.vala:147
msgid "Add label to conversation"
msgid_plural "Add label to conversations"
msgstr[0] "Tambahkan label ke percakapan"
-msgstr[1] ""
+msgstr[1] "Tambahkan label ke percakapan"
#: src/client/components/main-toolbar.vala:152
msgid "Move conversation"
msgid_plural "Move conversations"
msgstr[0] "Pindahkan percakapan"
-msgstr[1] ""
+msgstr[1] "Pindahkan percakapan"
#: src/client/components/main-toolbar.vala:157
msgid "Archive conversation"
msgid_plural "Archive conversations"
msgstr[0] "Arsipkan percakapan"
-msgstr[1] ""
+msgstr[1] "Arsipkan percakapan"
#: src/client/components/main-toolbar.vala:168
msgid "Move conversation to Trash"
msgid_plural "Move conversations to Trash"
msgstr[0] "Pindahkan percakapan ke Tong Sampah"
-msgstr[1] ""
+msgstr[1] "Pindahkan percakapan ke Tong Sampah"
#: src/client/components/main-toolbar.vala:178
msgid "Delete conversation"
msgid_plural "Delete conversations"
msgstr[0] "Hapus percakapan"
-msgstr[1] ""
+msgstr[1] "Hapus percakapan"
#. Translators: Info bar title for a generic account
#. problem.
@@ -1575,90 +1576,90 @@ msgstr ""
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. Keep, Discard or Cancel.
-#: src/client/composer/composer-widget.vala:814
+#: src/client/composer/composer-widget.vala:815
msgid "Do you want to keep or discard this draft message?"
msgstr "Anda mau menyimpan atau membuang draf pesan ini?"
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. only Discard or Cancel.
-#: src/client/composer/composer-widget.vala:840
+#: src/client/composer/composer-widget.vala:841
msgid "Do you want to discard this draft message?"
msgstr "Anda mau membuang draf pesan ini?"
-#: src/client/composer/composer-widget.vala:1484
+#: src/client/composer/composer-widget.vala:1485
msgid "Send message with an empty subject and body?"
msgstr "Kirim pesan dengan subjek dan isi kosong?"
-#: src/client/composer/composer-widget.vala:1486
+#: src/client/composer/composer-widget.vala:1487
msgid "Send message with an empty subject?"
msgstr "Kirim pesan dengan subjek kosong?"
-#: src/client/composer/composer-widget.vala:1488
+#: src/client/composer/composer-widget.vala:1489
msgid "Send message with an empty body?"
msgstr "Kirim pesan tanpa isi?"
-#: src/client/composer/composer-widget.vala:1497
+#: src/client/composer/composer-widget.vala:1498
msgid "Send message without an attachment?"
msgstr "Kirim pesan tanpa lampiran?"
-#: src/client/composer/composer-widget.vala:1807
+#: src/client/composer/composer-widget.vala:1808
#, c-format
msgid "“%s” already attached for delivery."
msgstr "\"%s\" sudah dilampirkan untuk pengiriman."
-#: src/client/composer/composer-widget.vala:1837
-#: src/client/composer/composer-widget.vala:1887
+#: src/client/composer/composer-widget.vala:1838
+#: src/client/composer/composer-widget.vala:1888
#, c-format
msgid "“%s” is an empty file."
msgstr "\"%s\" adalah berkas kosong."
-#: src/client/composer/composer-widget.vala:1875
+#: src/client/composer/composer-widget.vala:1876
#, c-format
msgid "“%s” could not be found."
msgstr "\"%s\" tidak ditemukan."
-#: src/client/composer/composer-widget.vala:1881
+#: src/client/composer/composer-widget.vala:1882
#, c-format
msgid "“%s” is a folder."
msgstr "\"%s\" adalah sebuah folder."
-#: src/client/composer/composer-widget.vala:1900
+#: src/client/composer/composer-widget.vala:1901
#, c-format
msgid "“%s” could not be opened for reading."
msgstr "\"%s\" tak bisa dibuka untuk dibaca."
-#: src/client/composer/composer-widget.vala:1908
+#: src/client/composer/composer-widget.vala:1909
msgid "Cannot add attachment"
msgstr "Tak bisa menambah lampiran"
#. Translators: Human-readable version of the RFC 822 To header
-#: src/client/composer/composer-widget.vala:1965
+#: src/client/composer/composer-widget.vala:1966
#: src/client/conversation-viewer/conversation-email.vala:559
#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312
msgid "To:"
msgstr "Ke:"
#. Translators: Human-readable version of the RFC 822 CC header
-#: src/client/composer/composer-widget.vala:1971
+#: src/client/composer/composer-widget.vala:1972
#: src/client/conversation-viewer/conversation-email.vala:564
#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357
msgid "Cc:"
msgstr "Cc:"
#. Translators: Human-readable version of the RFC 822 BCC header
-#: src/client/composer/composer-widget.vala:1977
+#: src/client/composer/composer-widget.vala:1978
#: src/client/conversation-viewer/conversation-email.vala:569
#: ui/conversation-message.ui:402
msgid "Bcc:"
msgstr "Bcc:"
#. Translators: Human-readable version of the RFC 822 Reply-To header
-#: src/client/composer/composer-widget.vala:1983
+#: src/client/composer/composer-widget.vala:1984
msgid "Reply-To: "
msgstr "Balas-Ke: "
-#: src/client/composer/composer-widget.vala:2172
+#: src/client/composer/composer-widget.vala:2170
msgid "Select Color"
msgstr "Pilih Warna"
@@ -1667,20 +1668,20 @@ msgstr "Pilih Warna"
#. printf argument will be the alternate email address,
#. and the second will be the account's primary email
#. address.
-#: src/client/composer/composer-widget.vala:2364
+#: src/client/composer/composer-widget.vala:2362
#, c-format
msgid "%1$s via %2$s"
msgstr "%1$s via %2$s"
#. Composer label (with mnemonic underscore) for the account selector
#. when choosing what address to send a message from.
-#: src/client/composer/composer-widget.vala:2420
+#: src/client/composer/composer-widget.vala:2418
msgid "_From:"
msgstr "_Dari:"
#. Translators: This is the name of the file chooser filter
#. when inserting an image in the composer.
-#: src/client/composer/composer-widget.vala:2723
+#: src/client/composer/composer-widget.vala:2721
msgid "Images"
msgstr "Citra"
@@ -1701,14 +1702,14 @@ msgstr "Cari lebih banyak bahasa lagi"
msgid "Move conversation to _Trash"
msgid_plural "Move conversations to _Trash"
msgstr[0] "Pindahkan percakapan ke _Tong Sampah"
-msgstr[1] ""
+msgstr[1] "Pindahkan percakapan ke _Tong Sampah"
#. / Translators: Context menu item
#: src/client/conversation-list/conversation-list-view.vala:347
msgid "_Delete conversation"
msgid_plural "_Delete conversations"
msgstr[0] "_Hapus percakapan"
-msgstr[1] ""
+msgstr[1] "_Hapus percakapan"
#: src/client/conversation-list/conversation-list-view.vala:360
#: ui/main-toolbar-menus.ui:5
@@ -2097,7 +2098,8 @@ msgstr "%a, %-e %b %Y pada %-H:%M"
msgid "%a, %b %-e, %Y at %X"
msgstr "%a, %-e %b %Y pada %X"
-#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998
+#: src/client/util/util-email.vala:38
+#: src/engine/rfc822/rfc822-message.vala:1000
msgid "(no subject)"
msgstr "(tanpa perihal)"
@@ -2436,12 +2438,12 @@ msgstr "Dihapus"
msgid "Archive | Archives"
msgstr "Arsip | Archive | Archives"
-#: src/engine/rfc822/rfc822-message.vala:467
+#: src/engine/rfc822/rfc822-message.vala:458
#, c-format
msgid "Could not determine mime type for “%s”."
msgstr "Tidak dapat menentukan tipe mime untuk \"%s\"."
-#: src/engine/rfc822/rfc822-message.vala:475
+#: src/engine/rfc822/rfc822-message.vala:469
#, c-format
msgid "Could not determine content type for mime type “%s” on “%s”."
msgstr "Tidak dapat menentukan tipe isi untuk tipe mime \"%s\" pada \"%s\"."
@@ -2620,27 +2622,27 @@ msgstr "_Percayai Server Ini"
msgid "_Don’t Trust This Server"
msgstr "_Jangan Percayai Server Ini"
-#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176
+#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175
msgid "Detach the composer from the window"
msgstr "Copot penyusun dari jendela"
-#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84
+#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83
msgid "Attach a file"
msgstr "Lampirkan berkas"
-#: ui/composer-headerbar.ui:108
+#: ui/composer-headerbar.ui:107
msgid "Add original attachments"
msgstr "Tambahkan lampiran asli"
-#: ui/composer-headerbar.ui:204
+#: ui/composer-headerbar.ui:203
msgid "_Send"
msgstr "_Kirim"
-#: ui/composer-headerbar.ui:231
+#: ui/composer-headerbar.ui:230
msgid "Discard and Close"
msgstr "Buang dan Tutup"
-#: ui/composer-headerbar.ui:255
+#: ui/composer-headerbar.ui:254
msgid "Save and Close"
msgstr "Simpan dan Tutup"
@@ -2694,135 +2696,135 @@ msgstr "_Besar"
msgid "C_olor"
msgstr "_Warna"
-#: ui/composer-menus.ui:47 ui/composer-menus.ui:62
+#: ui/composer-menus.ui:47 ui/composer-menus.ui:56
msgid "_Rich Text"
msgstr "_Rich Text"
-#: ui/composer-menus.ui:53 ui/composer-menus.ui:68
-msgid "Show Extended Fields"
-msgstr "Tampilkan Ruas Yang Diperluas"
-
-#: ui/composer-menus.ui:78
+#: ui/composer-menus.ui:66
msgid "_Undo"
msgstr "Tak _Jadi"
-#: ui/composer-menus.ui:82
+#: ui/composer-menus.ui:70
msgid "_Redo"
msgstr "Jadi _Lagi"
-#: ui/composer-menus.ui:88 ui/composer-menus.ui:106
+#: ui/composer-menus.ui:76 ui/composer-menus.ui:94
msgid "Cu_t"
msgstr "Po_tong"
-#: ui/composer-menus.ui:92 ui/composer-menus.ui:110
+#: ui/composer-menus.ui:80 ui/composer-menus.ui:98
#: ui/conversation-message-menus.ui:37
msgid "_Copy"
msgstr "Sali_n"
-#: ui/composer-menus.ui:96 ui/composer-menus.ui:114
+#: ui/composer-menus.ui:84 ui/composer-menus.ui:102
msgid "_Paste"
msgstr "Tem_pel"
-#: ui/composer-menus.ui:100
+#: ui/composer-menus.ui:88
msgctxt "Clipboard paste as plain text"
msgid "Paste _Without Formatting"
msgstr "Tempel _Tanpa Format"
-#: ui/composer-menus.ui:120
+#: ui/composer-menus.ui:108
msgid "Select _All"
msgstr "Pilih Semu_a"
-#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43
+#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43
msgid "_Inspect…"
msgstr "Per_iksa…"
-#. Address(es) e-mail is to be sent to
-#: ui/composer-widget.ui:56
-msgid "_To"
-msgstr "_Ke"
-
-#: ui/composer-widget.ui:75
-msgid "_Cc"
-msgstr "_Cc"
-
-#: ui/composer-widget.ui:130
-msgid "_Subject"
-msgstr "_Perihal"
-
-#: ui/composer-widget.ui:149
-msgid "_Bcc"
-msgstr "_Bcc"
-
-#: ui/composer-widget.ui:179
-msgid "_Reply-To"
-msgstr "B_alas-Ke"
-
#. Geary account mail will be sent from
-#: ui/composer-widget.ui:208
+#: ui/composer-widget.ui:61
msgid "From"
msgstr "Dari"
-#: ui/composer-widget.ui:293
+#. Address(es) e-mail is to be sent to
+#: ui/composer-widget.ui:131
+msgid "_To"
+msgstr "_Ke"
+
+#: ui/composer-widget.ui:159
+msgid "Show Cc, Bcc, and Reply-To fields"
+msgstr "Tampilkan kolom Cc, Bcc, dan Balas-Ke"
+
+#: ui/composer-widget.ui:214
+msgid "_Cc"
+msgstr "_Cc"
+
+#: ui/composer-widget.ui:258
+msgid "_Bcc"
+msgstr "_Bcc"
+
+#: ui/composer-widget.ui:302
+msgid "_Reply-To"
+msgstr "B_alas-Ke"
+
+#: ui/composer-widget.ui:355
+msgid "_Subject"
+msgstr "_Perihal"
+
+#: ui/composer-widget.ui:428
msgid "Drop files here"
msgstr "Jatuhkan berkas di sini"
-#: ui/composer-widget.ui:309
+#: ui/composer-widget.ui:444
msgid "To add them as attachments"
msgstr "Untuk menambahkan mereka sebagai lampiran"
-#: ui/composer-widget.ui:353
+#: ui/composer-widget.ui:488
msgid "Undo last edit"
msgstr "Batalkan suntingan terakhir"
-#: ui/composer-widget.ui:377
+#: ui/composer-widget.ui:512
msgid "Redo last edit"
msgstr "Jadikan lagi penyuntingan terakhir"
-#: ui/composer-widget.ui:415
+#: ui/composer-widget.ui:550
msgid "Bold text"
msgstr "Teks tebal"
-#: ui/composer-widget.ui:439
+#: ui/composer-widget.ui:574
msgid "Italic text"
msgstr "Teks miring"
-#: ui/composer-widget.ui:463
+#: ui/composer-widget.ui:598
msgid "Underline text"
msgstr "Garisbawahi teks"
-#: ui/composer-widget.ui:487
+#: ui/composer-widget.ui:622
msgid "Strikethrough text"
msgstr "Coret teks"
-#: ui/composer-widget.ui:525
+#: ui/composer-widget.ui:660
msgid "Insert bulleted list"
msgstr "Sisipkan daftar bulet"
-#: ui/composer-widget.ui:549
+#: ui/composer-widget.ui:684
msgid "Insert numbered list"
msgstr "Sisipkan daftar bernomor"
-#: ui/composer-widget.ui:587
+#: ui/composer-widget.ui:722
msgid "Indent or quote text"
msgstr "Indentasikan atau kutip teks"
-#: ui/composer-widget.ui:611
+#: ui/composer-widget.ui:746
msgid "Un-indent or unquote text"
msgstr "Batalkan indentasi atau pengutipan teks"
-#: ui/composer-widget.ui:649
+#: ui/composer-widget.ui:784
msgid "Insert or update text link"
msgstr "Sisipkan atau mutakhirkan tautan teks"
-#: ui/composer-widget.ui:673
+#: ui/composer-widget.ui:808
msgid "Insert an image"
msgstr "Sisipkan sebuah citra"
-#: ui/composer-widget.ui:707
+#: ui/composer-widget.ui:842
msgid "Remove text formatting"
msgstr "Buang performatan teks"
-#: ui/composer-widget.ui:731
+#: ui/composer-widget.ui:866
msgid "Select spell checking languages"
msgstr "Pilih bahasa pemeriksaan ejaan"
@@ -3472,3 +3474,6 @@ msgstr "Otentik_asikan"
#: ui/upgrade_dialog.glade:60
msgid "Geary update in progress…"
msgstr "Pemutakhiran Geary sedang berlangsung…"
+
+#~ msgid "Show Extended Fields"
+#~ msgstr "Tampilkan Ruas Yang Diperluas"
diff --git a/po/pl.po b/po/pl.po
index bf7b4d58..68d33744 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,5 +1,5 @@
# Polish translation for geary.
-# Copyright © 2012-2019 the geary authors.
+# Copyright © 2012-2020 the geary authors.
# This file is distributed under the same license as the geary package.
# scrx , 2012.
# Piotrek290 , 2012-2013.
@@ -9,15 +9,15 @@
# wmq , 2012.
# yorbajim , 2013.
# zacol , 2012.
-# Piotr Drąg , 2014-2019.
-# Aviary.pl , 2014-2019.
+# Piotr Drąg , 2014-2020.
+# Aviary.pl , 2014-2020.
#
msgid ""
msgstr ""
"Project-Id-Version: geary\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n"
-"POT-Creation-Date: 2019-12-17 23:56+0000\n"
-"PO-Revision-Date: 2019-12-26 13:53+0100\n"
+"POT-Creation-Date: 2020-01-08 10:10+0000\n"
+"PO-Revision-Date: 2020-01-12 17:29+0100\n"
"Last-Translator: Piotr Drąg \n"
"Language-Team: Polish \n"
"Language: pl\n"
@@ -962,8 +962,8 @@ msgstr ""
"wmq , 2012\n"
"yorbajim , 2013\n"
"zacol , 2012\n"
-"Piotr Drąg , 2014-2019\n"
-"Aviary.pl , 2014-2019"
+"Piotr Drąg , 2014-2020\n"
+"Aviary.pl , 2014-2020"
#. / Warning printed to the console when a deprecated
#. / command line option is used.
@@ -1240,7 +1240,7 @@ msgstr "%s (%d)"
#. Document (100.9MB)
#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)"
#: src/client/components/components-attachment-pane.vala:107
-#: src/client/composer/composer-widget.vala:1815
+#: src/client/composer/composer-widget.vala:1816
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
@@ -1615,90 +1615,90 @@ msgstr ""
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. Keep, Discard or Cancel.
-#: src/client/composer/composer-widget.vala:814
+#: src/client/composer/composer-widget.vala:815
msgid "Do you want to keep or discard this draft message?"
msgstr "Zachować lub odrzucić ten szkic?"
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. only Discard or Cancel.
-#: src/client/composer/composer-widget.vala:840
+#: src/client/composer/composer-widget.vala:841
msgid "Do you want to discard this draft message?"
msgstr "Odrzucić ten szkic?"
-#: src/client/composer/composer-widget.vala:1484
+#: src/client/composer/composer-widget.vala:1485
msgid "Send message with an empty subject and body?"
msgstr "Wysłać wiadomość niezawierającą tematu i treści?"
-#: src/client/composer/composer-widget.vala:1486
+#: src/client/composer/composer-widget.vala:1487
msgid "Send message with an empty subject?"
msgstr "Wysłać wiadomość niezawierającą tematu?"
-#: src/client/composer/composer-widget.vala:1488
+#: src/client/composer/composer-widget.vala:1489
msgid "Send message with an empty body?"
msgstr "Wysłać wiadomość niezawierającą treści?"
-#: src/client/composer/composer-widget.vala:1497
+#: src/client/composer/composer-widget.vala:1498
msgid "Send message without an attachment?"
msgstr "Wysłać wiadomość niezawierającą załączników?"
-#: src/client/composer/composer-widget.vala:1807
+#: src/client/composer/composer-widget.vala:1808
#, c-format
msgid "“%s” already attached for delivery."
msgstr "Do wiadomości już załączono „%s”."
-#: src/client/composer/composer-widget.vala:1837
-#: src/client/composer/composer-widget.vala:1887
+#: src/client/composer/composer-widget.vala:1838
+#: src/client/composer/composer-widget.vala:1888
#, c-format
msgid "“%s” is an empty file."
msgstr "„%s” jest pustym plikiem."
-#: src/client/composer/composer-widget.vala:1875
+#: src/client/composer/composer-widget.vala:1876
#, c-format
msgid "“%s” could not be found."
msgstr "Nie można odnaleźć „%s”."
-#: src/client/composer/composer-widget.vala:1881
+#: src/client/composer/composer-widget.vala:1882
#, c-format
msgid "“%s” is a folder."
msgstr "„%s” jest katalogiem."
-#: src/client/composer/composer-widget.vala:1900
+#: src/client/composer/composer-widget.vala:1901
#, c-format
msgid "“%s” could not be opened for reading."
msgstr "Nie można otworzyć „%s” do odczytania."
-#: src/client/composer/composer-widget.vala:1908
+#: src/client/composer/composer-widget.vala:1909
msgid "Cannot add attachment"
msgstr "Nie można dodać załącznika"
#. Translators: Human-readable version of the RFC 822 To header
-#: src/client/composer/composer-widget.vala:1965
+#: src/client/composer/composer-widget.vala:1966
#: src/client/conversation-viewer/conversation-email.vala:559
#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312
msgid "To:"
msgstr "Do:"
#. Translators: Human-readable version of the RFC 822 CC header
-#: src/client/composer/composer-widget.vala:1971
+#: src/client/composer/composer-widget.vala:1972
#: src/client/conversation-viewer/conversation-email.vala:564
#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357
msgid "Cc:"
msgstr "DW:"
#. Translators: Human-readable version of the RFC 822 BCC header
-#: src/client/composer/composer-widget.vala:1977
+#: src/client/composer/composer-widget.vala:1978
#: src/client/conversation-viewer/conversation-email.vala:569
#: ui/conversation-message.ui:402
msgid "Bcc:"
msgstr "UDW:"
#. Translators: Human-readable version of the RFC 822 Reply-To header
-#: src/client/composer/composer-widget.vala:1983
+#: src/client/composer/composer-widget.vala:1984
msgid "Reply-To: "
msgstr "Odpowiedź do: "
-#: src/client/composer/composer-widget.vala:2172
+#: src/client/composer/composer-widget.vala:2170
msgid "Select Color"
msgstr "Wybór koloru"
@@ -1707,20 +1707,20 @@ msgstr "Wybór koloru"
#. printf argument will be the alternate email address,
#. and the second will be the account's primary email
#. address.
-#: src/client/composer/composer-widget.vala:2364
+#: src/client/composer/composer-widget.vala:2362
#, c-format
msgid "%1$s via %2$s"
msgstr "%1$s przez %2$s"
#. Composer label (with mnemonic underscore) for the account selector
#. when choosing what address to send a message from.
-#: src/client/composer/composer-widget.vala:2420
+#: src/client/composer/composer-widget.vala:2418
msgid "_From:"
msgstr "_Od:"
#. Translators: This is the name of the file chooser filter
#. when inserting an image in the composer.
-#: src/client/composer/composer-widget.vala:2723
+#: src/client/composer/composer-widget.vala:2721
msgid "Images"
msgstr "Obrazy"
@@ -2149,7 +2149,8 @@ msgstr "%a, %-e %b %Y o %H∶%M"
msgid "%a, %b %-e, %Y at %X"
msgstr "%a, %-e %b %Y o %X"
-#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998
+#: src/client/util/util-email.vala:38
+#: src/engine/rfc822/rfc822-message.vala:1000
msgid "(no subject)"
msgstr "(brak tematu)"
@@ -2487,12 +2488,12 @@ msgstr "Elementy usunięte"
msgid "Archive | Archives"
msgstr "Archiwum | Archiwa"
-#: src/engine/rfc822/rfc822-message.vala:467
+#: src/engine/rfc822/rfc822-message.vala:458
#, c-format
msgid "Could not determine mime type for “%s”."
msgstr "Nie można ustalić typu MIME dla „%s”."
-#: src/engine/rfc822/rfc822-message.vala:475
+#: src/engine/rfc822/rfc822-message.vala:469
#, c-format
msgid "Could not determine content type for mime type “%s” on “%s”."
msgstr "Nie można ustalić typu treści dla typu MIME „%s” na „%s”."
@@ -2671,27 +2672,27 @@ msgstr "Z_aufaj temu serwerowi"
msgid "_Don’t Trust This Server"
msgstr "_Nie ufaj temu serwerowi"
-#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176
+#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175
msgid "Detach the composer from the window"
msgstr "Odłącza okno tworzenia wiadomości"
-#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84
+#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83
msgid "Attach a file"
msgstr "Załącza plik"
-#: ui/composer-headerbar.ui:108
+#: ui/composer-headerbar.ui:107
msgid "Add original attachments"
msgstr "Dodaje oryginalne załączniki"
-#: ui/composer-headerbar.ui:204
+#: ui/composer-headerbar.ui:203
msgid "_Send"
msgstr "_Wyślij"
-#: ui/composer-headerbar.ui:231
+#: ui/composer-headerbar.ui:230
msgid "Discard and Close"
msgstr "Odrzuca i zamyka"
-#: ui/composer-headerbar.ui:255
+#: ui/composer-headerbar.ui:254
msgid "Save and Close"
msgstr "Zapisuje i zamyka"
@@ -2745,135 +2746,136 @@ msgstr "_Duży"
msgid "C_olor"
msgstr "K_olor"
-#: ui/composer-menus.ui:47 ui/composer-menus.ui:62
+#: ui/composer-menus.ui:47 ui/composer-menus.ui:56
msgid "_Rich Text"
msgstr "Tekst _sformatowany"
-#: ui/composer-menus.ui:53 ui/composer-menus.ui:68
-msgid "Show Extended Fields"
-msgstr "Rozszerzone pola"
-
-#: ui/composer-menus.ui:78
+#: ui/composer-menus.ui:66
msgid "_Undo"
msgstr "Cof_nij"
-#: ui/composer-menus.ui:82
+#: ui/composer-menus.ui:70
msgid "_Redo"
msgstr "P_onów"
-#: ui/composer-menus.ui:88 ui/composer-menus.ui:106
+#: ui/composer-menus.ui:76 ui/composer-menus.ui:94
msgid "Cu_t"
msgstr "_Wytnij"
-#: ui/composer-menus.ui:92 ui/composer-menus.ui:110
+#: ui/composer-menus.ui:80 ui/composer-menus.ui:98
#: ui/conversation-message-menus.ui:37
msgid "_Copy"
msgstr "S_kopiuj"
-#: ui/composer-menus.ui:96 ui/composer-menus.ui:114
+#: ui/composer-menus.ui:84 ui/composer-menus.ui:102
msgid "_Paste"
msgstr "Wk_lej"
-#: ui/composer-menus.ui:100
+#: ui/composer-menus.ui:88
msgctxt "Clipboard paste as plain text"
msgid "Paste _Without Formatting"
msgstr "Wklej be_z formatowania"
-#: ui/composer-menus.ui:120
+#: ui/composer-menus.ui:108
msgid "Select _All"
msgstr "Zaznacz _wszystko"
-#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43
+#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43
msgid "_Inspect…"
msgstr "Z_badaj…"
-#. Address(es) e-mail is to be sent to
-#: ui/composer-widget.ui:56
-msgid "_To"
-msgstr "_Do"
-
-#: ui/composer-widget.ui:75
-msgid "_Cc"
-msgstr "Do _wiadomości"
-
-#: ui/composer-widget.ui:130
-msgid "_Subject"
-msgstr "_Temat"
-
-#: ui/composer-widget.ui:149
-msgid "_Bcc"
-msgstr "_Ukryty do wiadomości"
-
-#: ui/composer-widget.ui:179
-msgid "_Reply-To"
-msgstr "_Odpowiedź do"
-
#. Geary account mail will be sent from
-#: ui/composer-widget.ui:208
+#: ui/composer-widget.ui:61
msgid "From"
msgstr "Od"
-#: ui/composer-widget.ui:293
+#. Address(es) e-mail is to be sent to
+#: ui/composer-widget.ui:131
+msgid "_To"
+msgstr "_Do"
+
+#: ui/composer-widget.ui:159
+msgid "Show Cc, Bcc, and Reply-To fields"
+msgstr ""
+"Wyświetla pola „Do wiadomości”, „Ukryty do wiadomości” i „Odpowiedź do”"
+
+#: ui/composer-widget.ui:214
+msgid "_Cc"
+msgstr "Do _wiadomości"
+
+#: ui/composer-widget.ui:258
+msgid "_Bcc"
+msgstr "_Ukryty do wiadomości"
+
+#: ui/composer-widget.ui:302
+msgid "_Reply-To"
+msgstr "_Odpowiedź do"
+
+#: ui/composer-widget.ui:355
+msgid "_Subject"
+msgstr "_Temat"
+
+#: ui/composer-widget.ui:428
msgid "Drop files here"
msgstr "Tutaj można upuścić pliki,"
-#: ui/composer-widget.ui:309
+#: ui/composer-widget.ui:444
msgid "To add them as attachments"
msgstr "aby dodać je jako załączniki."
-#: ui/composer-widget.ui:353
+#: ui/composer-widget.ui:488
msgid "Undo last edit"
msgstr "Cofa ostatnią modyfikację"
-#: ui/composer-widget.ui:377
+#: ui/composer-widget.ui:512
msgid "Redo last edit"
msgstr "Ponawia ostatnią modyfikację"
-#: ui/composer-widget.ui:415
+#: ui/composer-widget.ui:550
msgid "Bold text"
msgstr "Pogrubia tekst"
-#: ui/composer-widget.ui:439
+#: ui/composer-widget.ui:574
msgid "Italic text"
msgstr "Pochyla tekst"
-#: ui/composer-widget.ui:463
+#: ui/composer-widget.ui:598
msgid "Underline text"
msgstr "Podkreśla tekst"
-#: ui/composer-widget.ui:487
+#: ui/composer-widget.ui:622
msgid "Strikethrough text"
msgstr "Przekreśla tekst"
-#: ui/composer-widget.ui:525
+#: ui/composer-widget.ui:660
msgid "Insert bulleted list"
msgstr "Wstawia listę wypunktowaną"
-#: ui/composer-widget.ui:549
+#: ui/composer-widget.ui:684
msgid "Insert numbered list"
msgstr "Wstawia listę numerowaną"
-#: ui/composer-widget.ui:587
+#: ui/composer-widget.ui:722
msgid "Indent or quote text"
msgstr "Wcina lub cytuje tekst"
-#: ui/composer-widget.ui:611
+#: ui/composer-widget.ui:746
msgid "Un-indent or unquote text"
msgstr "Usuwa wcięcie lub cytowanie tekstu"
-#: ui/composer-widget.ui:649
+#: ui/composer-widget.ui:784
msgid "Insert or update text link"
msgstr "Wstawia lub aktualizuje odnośnik tekstowy"
-#: ui/composer-widget.ui:673
+#: ui/composer-widget.ui:808
msgid "Insert an image"
msgstr "Wstawia obraz"
-#: ui/composer-widget.ui:707
+#: ui/composer-widget.ui:842
msgid "Remove text formatting"
msgstr "Usuwa formatowanie tekstu"
-#: ui/composer-widget.ui:731
+#: ui/composer-widget.ui:866
msgid "Select spell checking languages"
msgstr "Wybiera język sprawdzania pisowni"
diff --git a/po/sv.po b/po/sv.po
index 3591f4f6..1c20e54a 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -11,15 +11,15 @@
# joachimj , 2013
# TommyBrunn , 2012
# Mattias Eriksson , 2014, 2015.
-# Anders Jonsson , 2016, 2018, 2019.
+# Anders Jonsson , 2016, 2018, 2019, 2020.
# Josef Andersson , 2016, 2017, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: geary\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n"
-"POT-Creation-Date: 2019-12-17 23:56+0000\n"
-"PO-Revision-Date: 2019-12-22 22:26+0100\n"
+"POT-Creation-Date: 2020-01-08 10:10+0000\n"
+"PO-Revision-Date: 2020-01-11 17:24+0100\n"
"Last-Translator: Anders Jonsson \n"
"Language-Team: Swedish \n"
"Language: sv\n"
@@ -1221,7 +1221,7 @@ msgstr "%s (%d)"
#. Document (100.9MB)
#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)"
#: src/client/components/components-attachment-pane.vala:107
-#: src/client/composer/composer-widget.vala:1815
+#: src/client/composer/composer-widget.vala:1816
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
@@ -1589,90 +1589,90 @@ msgstr ""
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. Keep, Discard or Cancel.
-#: src/client/composer/composer-widget.vala:814
+#: src/client/composer/composer-widget.vala:815
msgid "Do you want to keep or discard this draft message?"
msgstr "Vill du behålla eller förkasta detta utkast?"
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. only Discard or Cancel.
-#: src/client/composer/composer-widget.vala:840
+#: src/client/composer/composer-widget.vala:841
msgid "Do you want to discard this draft message?"
msgstr "Vill du förkasta detta utkast?"
-#: src/client/composer/composer-widget.vala:1484
+#: src/client/composer/composer-widget.vala:1485
msgid "Send message with an empty subject and body?"
msgstr "Skicka meddelande med en tom ämnesrad och utan innehåll?"
-#: src/client/composer/composer-widget.vala:1486
+#: src/client/composer/composer-widget.vala:1487
msgid "Send message with an empty subject?"
msgstr "Skicka meddelande med en tom ämnesrad?"
-#: src/client/composer/composer-widget.vala:1488
+#: src/client/composer/composer-widget.vala:1489
msgid "Send message with an empty body?"
msgstr "Skicka meddelande utan innehåll?"
-#: src/client/composer/composer-widget.vala:1497
+#: src/client/composer/composer-widget.vala:1498
msgid "Send message without an attachment?"
msgstr "Skicka meddelande utan att bifoga filer?"
-#: src/client/composer/composer-widget.vala:1807
+#: src/client/composer/composer-widget.vala:1808
#, c-format
msgid "“%s” already attached for delivery."
msgstr "”%s” är redan bifogad och kommer att skickas."
-#: src/client/composer/composer-widget.vala:1837
-#: src/client/composer/composer-widget.vala:1887
+#: src/client/composer/composer-widget.vala:1838
+#: src/client/composer/composer-widget.vala:1888
#, c-format
msgid "“%s” is an empty file."
msgstr "”%s” är en tom fil."
-#: src/client/composer/composer-widget.vala:1875
+#: src/client/composer/composer-widget.vala:1876
#, c-format
msgid "“%s” could not be found."
msgstr "”%s” kunde inte hittas."
-#: src/client/composer/composer-widget.vala:1881
+#: src/client/composer/composer-widget.vala:1882
#, c-format
msgid "“%s” is a folder."
msgstr "”%s” är en mapp."
-#: src/client/composer/composer-widget.vala:1900
+#: src/client/composer/composer-widget.vala:1901
#, c-format
msgid "“%s” could not be opened for reading."
msgstr "”%s” kunde inte öppnas för läsning."
-#: src/client/composer/composer-widget.vala:1908
+#: src/client/composer/composer-widget.vala:1909
msgid "Cannot add attachment"
msgstr "Kan inte bifoga din fil"
#. Translators: Human-readable version of the RFC 822 To header
-#: src/client/composer/composer-widget.vala:1965
+#: src/client/composer/composer-widget.vala:1966
#: src/client/conversation-viewer/conversation-email.vala:559
#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312
msgid "To:"
msgstr "Till:"
#. Translators: Human-readable version of the RFC 822 CC header
-#: src/client/composer/composer-widget.vala:1971
+#: src/client/composer/composer-widget.vala:1972
#: src/client/conversation-viewer/conversation-email.vala:564
#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357
msgid "Cc:"
msgstr "Cc:"
#. Translators: Human-readable version of the RFC 822 BCC header
-#: src/client/composer/composer-widget.vala:1977
+#: src/client/composer/composer-widget.vala:1978
#: src/client/conversation-viewer/conversation-email.vala:569
#: ui/conversation-message.ui:402
msgid "Bcc:"
msgstr "Bcc:"
#. Translators: Human-readable version of the RFC 822 Reply-To header
-#: src/client/composer/composer-widget.vala:1983
+#: src/client/composer/composer-widget.vala:1984
msgid "Reply-To: "
msgstr "Svara-till: "
-#: src/client/composer/composer-widget.vala:2172
+#: src/client/composer/composer-widget.vala:2170
msgid "Select Color"
msgstr "Välj färg"
@@ -1681,20 +1681,20 @@ msgstr "Välj färg"
#. printf argument will be the alternate email address,
#. and the second will be the account's primary email
#. address.
-#: src/client/composer/composer-widget.vala:2364
+#: src/client/composer/composer-widget.vala:2362
#, c-format
msgid "%1$s via %2$s"
msgstr "%1$s via %2$s"
#. Composer label (with mnemonic underscore) for the account selector
#. when choosing what address to send a message from.
-#: src/client/composer/composer-widget.vala:2420
+#: src/client/composer/composer-widget.vala:2418
msgid "_From:"
msgstr "_Från:"
#. Translators: This is the name of the file chooser filter
#. when inserting an image in the composer.
-#: src/client/composer/composer-widget.vala:2723
+#: src/client/composer/composer-widget.vala:2721
msgid "Images"
msgstr "Bilder"
@@ -2111,7 +2111,8 @@ msgstr "%a, %-e %b %Y klockan %H:%M"
msgid "%a, %b %-e, %Y at %X"
msgstr "%a, %-e %b %Y klockan %X"
-#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998
+#: src/client/util/util-email.vala:38
+#: src/engine/rfc822/rfc822-message.vala:1000
msgid "(no subject)"
msgstr "(inget ämne)"
@@ -2450,12 +2451,12 @@ msgstr "Borttaget"
msgid "Archive | Archives"
msgstr "Arkiv | Archive | Archives"
-#: src/engine/rfc822/rfc822-message.vala:467
+#: src/engine/rfc822/rfc822-message.vala:458
#, c-format
msgid "Could not determine mime type for “%s”."
msgstr "Kunde inte avgöra mimetyp för ”%s”."
-#: src/engine/rfc822/rfc822-message.vala:475
+#: src/engine/rfc822/rfc822-message.vala:469
#, c-format
msgid "Could not determine content type for mime type “%s” on “%s”."
msgstr "Kunde inte avgöra innehållstyp för mimetypen ”%s” på ”%s”."
@@ -2635,27 +2636,27 @@ msgstr "Li_ta på denna server"
msgid "_Don’t Trust This Server"
msgstr "Lita inte på _denna server"
-#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176
+#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175
msgid "Detach the composer from the window"
msgstr "Koppla loss redigeraren från fönstret"
-#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84
+#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83
msgid "Attach a file"
msgstr "Bifoga en fil"
-#: ui/composer-headerbar.ui:108
+#: ui/composer-headerbar.ui:107
msgid "Add original attachments"
msgstr "Lägg till ursprungliga bilagor"
-#: ui/composer-headerbar.ui:204
+#: ui/composer-headerbar.ui:203
msgid "_Send"
msgstr "_Skicka"
-#: ui/composer-headerbar.ui:231
+#: ui/composer-headerbar.ui:230
msgid "Discard and Close"
msgstr "Förkasta och stäng"
-#: ui/composer-headerbar.ui:255
+#: ui/composer-headerbar.ui:254
msgid "Save and Close"
msgstr "Spara och stäng"
@@ -2709,135 +2710,135 @@ msgstr "_Stor"
msgid "C_olor"
msgstr "Fär_g"
-#: ui/composer-menus.ui:47 ui/composer-menus.ui:62
+#: ui/composer-menus.ui:47 ui/composer-menus.ui:56
msgid "_Rich Text"
msgstr "_Rich Text"
-#: ui/composer-menus.ui:53 ui/composer-menus.ui:68
-msgid "Show Extended Fields"
-msgstr "Visa utökade fält"
-
-#: ui/composer-menus.ui:78
+#: ui/composer-menus.ui:66
msgid "_Undo"
msgstr "_Ångra"
-#: ui/composer-menus.ui:82
+#: ui/composer-menus.ui:70
msgid "_Redo"
msgstr "_Upprepa"
-#: ui/composer-menus.ui:88 ui/composer-menus.ui:106
+#: ui/composer-menus.ui:76 ui/composer-menus.ui:94
msgid "Cu_t"
msgstr "Klipp u_t"
-#: ui/composer-menus.ui:92 ui/composer-menus.ui:110
+#: ui/composer-menus.ui:80 ui/composer-menus.ui:98
#: ui/conversation-message-menus.ui:37
msgid "_Copy"
msgstr "_Kopiera"
-#: ui/composer-menus.ui:96 ui/composer-menus.ui:114
+#: ui/composer-menus.ui:84 ui/composer-menus.ui:102
msgid "_Paste"
msgstr "_Klistra in"
-#: ui/composer-menus.ui:100
+#: ui/composer-menus.ui:88
msgctxt "Clipboard paste as plain text"
msgid "Paste _Without Formatting"
msgstr "Klistra in _utan formatering"
-#: ui/composer-menus.ui:120
+#: ui/composer-menus.ui:108
msgid "Select _All"
msgstr "Välj _alla"
-#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43
+#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43
msgid "_Inspect…"
msgstr "_Inspektera…"
-#. Address(es) e-mail is to be sent to
-#: ui/composer-widget.ui:56
-msgid "_To"
-msgstr "_Till"
-
-#: ui/composer-widget.ui:75
-msgid "_Cc"
-msgstr "_Cc"
-
-#: ui/composer-widget.ui:130
-msgid "_Subject"
-msgstr "_Ämne"
-
-#: ui/composer-widget.ui:149
-msgid "_Bcc"
-msgstr "_Bcc"
-
-#: ui/composer-widget.ui:179
-msgid "_Reply-To"
-msgstr "Sva_ra-till"
-
#. Geary account mail will be sent from
-#: ui/composer-widget.ui:208
+#: ui/composer-widget.ui:61
msgid "From"
msgstr "Från"
-#: ui/composer-widget.ui:293
+#. Address(es) e-mail is to be sent to
+#: ui/composer-widget.ui:131
+msgid "_To"
+msgstr "_Till"
+
+#: ui/composer-widget.ui:159
+msgid "Show Cc, Bcc, and Reply-To fields"
+msgstr "Visa fälten Cc, Bcc och Svara-till"
+
+#: ui/composer-widget.ui:214
+msgid "_Cc"
+msgstr "_Cc"
+
+#: ui/composer-widget.ui:258
+msgid "_Bcc"
+msgstr "_Bcc"
+
+#: ui/composer-widget.ui:302
+msgid "_Reply-To"
+msgstr "Sva_ra-till"
+
+#: ui/composer-widget.ui:355
+msgid "_Subject"
+msgstr "_Ämne"
+
+#: ui/composer-widget.ui:428
msgid "Drop files here"
msgstr "Släpp filer här"
-#: ui/composer-widget.ui:309
+#: ui/composer-widget.ui:444
msgid "To add them as attachments"
msgstr "För att bifoga dem"
-#: ui/composer-widget.ui:353
+#: ui/composer-widget.ui:488
msgid "Undo last edit"
msgstr "Ångra senaste redigering"
-#: ui/composer-widget.ui:377
+#: ui/composer-widget.ui:512
msgid "Redo last edit"
msgstr "Gör om senaste redigering"
-#: ui/composer-widget.ui:415
+#: ui/composer-widget.ui:550
msgid "Bold text"
msgstr "Fet text"
-#: ui/composer-widget.ui:439
+#: ui/composer-widget.ui:574
msgid "Italic text"
msgstr "Kursiv text"
-#: ui/composer-widget.ui:463
+#: ui/composer-widget.ui:598
msgid "Underline text"
msgstr "Understryk text"
-#: ui/composer-widget.ui:487
+#: ui/composer-widget.ui:622
msgid "Strikethrough text"
msgstr "Genomstruken text"
-#: ui/composer-widget.ui:525
+#: ui/composer-widget.ui:660
msgid "Insert bulleted list"
msgstr "Infoga punktlista"
-#: ui/composer-widget.ui:549
+#: ui/composer-widget.ui:684
msgid "Insert numbered list"
msgstr "Infoga numrerad lista"
-#: ui/composer-widget.ui:587
+#: ui/composer-widget.ui:722
msgid "Indent or quote text"
msgstr "Indentera eller citera text"
-#: ui/composer-widget.ui:611
+#: ui/composer-widget.ui:746
msgid "Un-indent or unquote text"
msgstr "Avindentera eller avcitera text"
-#: ui/composer-widget.ui:649
+#: ui/composer-widget.ui:784
msgid "Insert or update text link"
msgstr "Infoga eller uppdatera textlänk"
-#: ui/composer-widget.ui:673
+#: ui/composer-widget.ui:808
msgid "Insert an image"
msgstr "Infoga en bild"
-#: ui/composer-widget.ui:707
+#: ui/composer-widget.ui:842
msgid "Remove text formatting"
msgstr "Ta bort textformatering"
-#: ui/composer-widget.ui:731
+#: ui/composer-widget.ui:866
msgid "Select spell checking languages"
msgstr "Välj språk för stavningskontroll"
@@ -3488,6 +3489,9 @@ msgstr "_Autentisera"
msgid "Geary update in progress…"
msgstr "Geary-uppgradering pågår…"
+#~ msgid "Show Extended Fields"
+#~ msgstr "Visa utökade fält"
+
#~ msgid "Enable notification sounds"
#~ msgstr "Aktivera aviseringsljud"
diff --git a/po/tr.po b/po/tr.po
index ea89e432..34f1608e 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -10,14 +10,14 @@
# Necdet Yücel , 2015.
# Simge Sezgin , 2015.
# Muhammet Kara , 2014, 2016.
-# Emin Tufan Çetin , 2016-2019.
+# Emin Tufan Çetin , 2016-2020.
#
msgid ""
msgstr ""
"Project-Id-Version: geary.mainline\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n"
-"POT-Creation-Date: 2019-12-17 23:56+0000\n"
-"PO-Revision-Date: 2019-12-27 16:09+0300\n"
+"POT-Creation-Date: 2020-01-08 10:10+0000\n"
+"PO-Revision-Date: 2020-01-10 19:01+0300\n"
"Last-Translator: Emin Tufan Çetin \n"
"Language-Team: Turkish \n"
"Language: tr\n"
@@ -1205,7 +1205,7 @@ msgstr "%s (%d)"
#. Document (100.9MB)
#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)"
#: src/client/components/components-attachment-pane.vala:107
-#: src/client/composer/composer-widget.vala:1815
+#: src/client/composer/composer-widget.vala:1816
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
@@ -1307,7 +1307,6 @@ msgstr "Ara"
#. / Translators: Search entry tooltip
#: src/client/components/components-search-bar.vala:32
-#| msgid "Search all mail in account for keywords (Ctrl+S)"
msgid "Search all mail in account for keywords"
msgstr "Anahtar sözcükleri hesaptaki tüm postalarda ara"
@@ -1567,90 +1566,90 @@ msgstr ""
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. Keep, Discard or Cancel.
-#: src/client/composer/composer-widget.vala:814
+#: src/client/composer/composer-widget.vala:815
msgid "Do you want to keep or discard this draft message?"
msgstr "Bu iletiyi saklamak mı yoksa gözden çıkarmak mı istersiniz?"
#. Translators: This dialog text is displayed to the
#. user when closing a composer where the options are
#. only Discard or Cancel.
-#: src/client/composer/composer-widget.vala:840
+#: src/client/composer/composer-widget.vala:841
msgid "Do you want to discard this draft message?"
msgstr "Bu taslak iletiyi gözden çıkarmak istiyor musunuz?"
-#: src/client/composer/composer-widget.vala:1484
+#: src/client/composer/composer-widget.vala:1485
msgid "Send message with an empty subject and body?"
msgstr "İleti konusu ve gövdesi olmadan gönderilsin mi?"
-#: src/client/composer/composer-widget.vala:1486
+#: src/client/composer/composer-widget.vala:1487
msgid "Send message with an empty subject?"
msgstr "İleti konusu olmadan gönderilsin mi?"
-#: src/client/composer/composer-widget.vala:1488
+#: src/client/composer/composer-widget.vala:1489
msgid "Send message with an empty body?"
msgstr "İleti, ileti gövdesi olmadan gönderilsin mi?"
-#: src/client/composer/composer-widget.vala:1497
+#: src/client/composer/composer-widget.vala:1498
msgid "Send message without an attachment?"
msgstr "İleti eki olmadan gönderilsin mi?"
-#: src/client/composer/composer-widget.vala:1807
+#: src/client/composer/composer-widget.vala:1808
#, c-format
msgid "“%s” already attached for delivery."
msgstr "“%s” gönderim için zaten eklendi."
-#: src/client/composer/composer-widget.vala:1837
-#: src/client/composer/composer-widget.vala:1887
+#: src/client/composer/composer-widget.vala:1838
+#: src/client/composer/composer-widget.vala:1888
#, c-format
msgid "“%s” is an empty file."
msgstr "“%s” boş bir dosya."
-#: src/client/composer/composer-widget.vala:1875
+#: src/client/composer/composer-widget.vala:1876
#, c-format
msgid "“%s” could not be found."
msgstr "“%s” bulunamadı."
-#: src/client/composer/composer-widget.vala:1881
+#: src/client/composer/composer-widget.vala:1882
#, c-format
msgid "“%s” is a folder."
msgstr "“%s” bir klasör."
-#: src/client/composer/composer-widget.vala:1900
+#: src/client/composer/composer-widget.vala:1901
#, c-format
msgid "“%s” could not be opened for reading."
msgstr "“%s” okuma için açılamadı."
-#: src/client/composer/composer-widget.vala:1908
+#: src/client/composer/composer-widget.vala:1909
msgid "Cannot add attachment"
msgstr "Eklenti eklenemiyor"
#. Translators: Human-readable version of the RFC 822 To header
-#: src/client/composer/composer-widget.vala:1965
+#: src/client/composer/composer-widget.vala:1966
#: src/client/conversation-viewer/conversation-email.vala:559
#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312
msgid "To:"
msgstr "Kime:"
#. Translators: Human-readable version of the RFC 822 CC header
-#: src/client/composer/composer-widget.vala:1971
+#: src/client/composer/composer-widget.vala:1972
#: src/client/conversation-viewer/conversation-email.vala:564
#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357
msgid "Cc:"
msgstr "Cc:"
#. Translators: Human-readable version of the RFC 822 BCC header
-#: src/client/composer/composer-widget.vala:1977
+#: src/client/composer/composer-widget.vala:1978
#: src/client/conversation-viewer/conversation-email.vala:569
#: ui/conversation-message.ui:402
msgid "Bcc:"
msgstr "Bcc:"
#. Translators: Human-readable version of the RFC 822 Reply-To header
-#: src/client/composer/composer-widget.vala:1983
+#: src/client/composer/composer-widget.vala:1984
msgid "Reply-To: "
-msgstr "Yanıtla: "
+msgstr "Şuna Yanıtla: "
-#: src/client/composer/composer-widget.vala:2172
+#: src/client/composer/composer-widget.vala:2170
msgid "Select Color"
msgstr "Renk Seç"
@@ -1659,20 +1658,20 @@ msgstr "Renk Seç"
#. printf argument will be the alternate email address,
#. and the second will be the account's primary email
#. address.
-#: src/client/composer/composer-widget.vala:2364
+#: src/client/composer/composer-widget.vala:2362
#, c-format
msgid "%1$s via %2$s"
msgstr "%2$s aracılığıyla %1$s"
#. Composer label (with mnemonic underscore) for the account selector
#. when choosing what address to send a message from.
-#: src/client/composer/composer-widget.vala:2420
+#: src/client/composer/composer-widget.vala:2418
msgid "_From:"
msgstr "_Gönderen:"
#. Translators: This is the name of the file chooser filter
#. when inserting an image in the composer.
-#: src/client/composer/composer-widget.vala:2723
+#: src/client/composer/composer-widget.vala:2721
msgid "Images"
msgstr "Resimler"
@@ -2075,7 +2074,8 @@ msgstr "%a, %b %-e, %Y / %H:%M"
msgid "%a, %b %-e, %Y at %X"
msgstr "%a, %b %-e, %Y / %X"
-#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998
+#: src/client/util/util-email.vala:38
+#: src/engine/rfc822/rfc822-message.vala:1000
msgid "(no subject)"
msgstr "(konu yok)"
@@ -2414,12 +2414,12 @@ msgstr "Silinen Ögeler"
msgid "Archive | Archives"
msgstr "Arşiv | Arşivler"
-#: src/engine/rfc822/rfc822-message.vala:467
+#: src/engine/rfc822/rfc822-message.vala:458
#, c-format
msgid "Could not determine mime type for “%s”."
msgstr "“%s” için mime türü saptanamadı."
-#: src/engine/rfc822/rfc822-message.vala:475
+#: src/engine/rfc822/rfc822-message.vala:469
#, c-format
msgid "Could not determine content type for mime type “%s” on “%s”."
msgstr "“%2$s” üstündeki “%1$s” mime türü için içerik türü saptanamadı."
@@ -2596,27 +2596,27 @@ msgstr "Bu Sunucuya _Güven"
msgid "_Don’t Trust This Server"
msgstr "Bu Sunucuya Güven_me"
-#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176
+#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175
msgid "Detach the composer from the window"
msgstr "Oluşturucuyu pencereden ayır"
-#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84
+#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83
msgid "Attach a file"
msgstr "Dosya ekle"
-#: ui/composer-headerbar.ui:108
+#: ui/composer-headerbar.ui:107
msgid "Add original attachments"
msgstr "Özgün ekleri ekle"
-#: ui/composer-headerbar.ui:204
+#: ui/composer-headerbar.ui:203
msgid "_Send"
msgstr "_Gönder"
-#: ui/composer-headerbar.ui:231
+#: ui/composer-headerbar.ui:230
msgid "Discard and Close"
msgstr "Gözden Çıkar ve Kapat"
-#: ui/composer-headerbar.ui:255
+#: ui/composer-headerbar.ui:254
msgid "Save and Close"
msgstr "Kaydet ve Kapat"
@@ -2670,135 +2670,135 @@ msgstr "Büy_ük"
msgid "C_olor"
msgstr "R_enk"
-#: ui/composer-menus.ui:47 ui/composer-menus.ui:62
+#: ui/composer-menus.ui:47 ui/composer-menus.ui:56
msgid "_Rich Text"
msgstr "_Zengin Metin"
-#: ui/composer-menus.ui:53 ui/composer-menus.ui:68
-msgid "Show Extended Fields"
-msgstr "Genişletilmiş Alanları Göster"
-
-#: ui/composer-menus.ui:78
+#: ui/composer-menus.ui:66
msgid "_Undo"
msgstr "_Geri Al"
-#: ui/composer-menus.ui:82
+#: ui/composer-menus.ui:70
msgid "_Redo"
msgstr "_Yinele"
-#: ui/composer-menus.ui:88 ui/composer-menus.ui:106
+#: ui/composer-menus.ui:76 ui/composer-menus.ui:94
msgid "Cu_t"
msgstr "Ke_s"
-#: ui/composer-menus.ui:92 ui/composer-menus.ui:110
+#: ui/composer-menus.ui:80 ui/composer-menus.ui:98
#: ui/conversation-message-menus.ui:37
msgid "_Copy"
msgstr "_Kopyala"
-#: ui/composer-menus.ui:96 ui/composer-menus.ui:114
+#: ui/composer-menus.ui:84 ui/composer-menus.ui:102
msgid "_Paste"
msgstr "_Yapıştır"
-#: ui/composer-menus.ui:100
+#: ui/composer-menus.ui:88
msgctxt "Clipboard paste as plain text"
msgid "Paste _Without Formatting"
msgstr "Biçimlendirmede_n Yapıştır"
-#: ui/composer-menus.ui:120
+#: ui/composer-menus.ui:108
msgid "Select _All"
msgstr "Tümünü S_eç"
-#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43
+#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43
msgid "_Inspect…"
msgstr "_Denetle…"
-#. Address(es) e-mail is to be sent to
-#: ui/composer-widget.ui:56
-msgid "_To"
-msgstr "_Kime"
-
-#: ui/composer-widget.ui:75
-msgid "_Cc"
-msgstr "_Cc"
-
-#: ui/composer-widget.ui:130
-msgid "_Subject"
-msgstr "_Konu"
-
-#: ui/composer-widget.ui:149
-msgid "_Bcc"
-msgstr "_Bcc"
-
-#: ui/composer-widget.ui:179
-msgid "_Reply-To"
-msgstr "_Yanıtla"
-
#. Geary account mail will be sent from
-#: ui/composer-widget.ui:208
+#: ui/composer-widget.ui:61
msgid "From"
msgstr "Gönderen"
-#: ui/composer-widget.ui:293
+#. Address(es) e-mail is to be sent to
+#: ui/composer-widget.ui:131
+msgid "_To"
+msgstr "_Kime"
+
+#: ui/composer-widget.ui:159
+msgid "Show Cc, Bcc, and Reply-To fields"
+msgstr "Cc, Bcc ve Şuna Yanıtla alanlarını göster"
+
+#: ui/composer-widget.ui:214
+msgid "_Cc"
+msgstr "_Cc"
+
+#: ui/composer-widget.ui:258
+msgid "_Bcc"
+msgstr "_Bcc"
+
+#: ui/composer-widget.ui:302
+msgid "_Reply-To"
+msgstr "_Şuna Yanıtla"
+
+#: ui/composer-widget.ui:355
+msgid "_Subject"
+msgstr "_Konu"
+
+#: ui/composer-widget.ui:428
msgid "Drop files here"
msgstr "Dosyaları buraya bırak"
-#: ui/composer-widget.ui:309
+#: ui/composer-widget.ui:444
msgid "To add them as attachments"
msgstr "Onları ek olarak eklemek için"
-#: ui/composer-widget.ui:353
+#: ui/composer-widget.ui:488
msgid "Undo last edit"
msgstr "Son düzenlemeyi geri al"
-#: ui/composer-widget.ui:377
+#: ui/composer-widget.ui:512
msgid "Redo last edit"
msgstr "Son düzenlemeyi yinele"
-#: ui/composer-widget.ui:415
+#: ui/composer-widget.ui:550
msgid "Bold text"
msgstr "Kalın yazı"
-#: ui/composer-widget.ui:439
+#: ui/composer-widget.ui:574
msgid "Italic text"
msgstr "Eğik metin"
-#: ui/composer-widget.ui:463
+#: ui/composer-widget.ui:598
msgid "Underline text"
msgstr "Metnin altını çiz"
-#: ui/composer-widget.ui:487
+#: ui/composer-widget.ui:622
msgid "Strikethrough text"
msgstr "Çizgili metin"
-#: ui/composer-widget.ui:525
+#: ui/composer-widget.ui:660
msgid "Insert bulleted list"
msgstr "Sırasız liste yerleştir"
-#: ui/composer-widget.ui:549
+#: ui/composer-widget.ui:684
msgid "Insert numbered list"
msgstr "Sıralı liste yerleştir"
-#: ui/composer-widget.ui:587
+#: ui/composer-widget.ui:722
msgid "Indent or quote text"
msgstr "Girintile veya metin alıntıla"
-#: ui/composer-widget.ui:611
+#: ui/composer-widget.ui:746
msgid "Un-indent or unquote text"
msgstr "Girintiyi veya alıntıyı kaldır"
-#: ui/composer-widget.ui:649
+#: ui/composer-widget.ui:784
msgid "Insert or update text link"
msgstr "Metin bağlantısı ekle veya güncelle"
-#: ui/composer-widget.ui:673
+#: ui/composer-widget.ui:808
msgid "Insert an image"
msgstr "Resim yerleştir"
-#: ui/composer-widget.ui:707
+#: ui/composer-widget.ui:842
msgid "Remove text formatting"
msgstr "Metin biçimlendirmeyi kaldır"
-#: ui/composer-widget.ui:731
+#: ui/composer-widget.ui:866
msgid "Select spell checking languages"
msgstr "Yazım denetimi dillerini seç"
@@ -3450,6 +3450,9 @@ msgstr "_Kimlik Doğrula"
msgid "Geary update in progress…"
msgstr "Geary güncellemesi sürüyor…"
+#~ msgid "Show Extended Fields"
+#~ msgstr "Genişletilmiş Alanları Göster"
+
#~ msgid "Indexing %s account"
#~ msgstr "%s hesabı dizinleniyor"
diff --git a/src/client/accounts/accounts-editor-list-pane.vala b/src/client/accounts/accounts-editor-list-pane.vala
index 9bb42c1a..fc16da49 100644
--- a/src/client/accounts/accounts-editor-list-pane.vala
+++ b/src/client/accounts/accounts-editor-list-pane.vala
@@ -243,8 +243,12 @@ internal class Accounts.EditorListPane : Gtk.Grid, EditorPane, CommandPane {
private void on_execute(Application.Command command) {
if (command.executed_label != null) {
+ int notification_time =
+ command.executed_notification_brief ?
+ editor.application.config.brief_notification_duration : 0;
Components.InAppNotification ian =
- new Components.InAppNotification(command.executed_label);
+ new Components.InAppNotification(
+ command.executed_label, notification_time);
ian.set_button(_("Undo"), Action.Edit.prefix(Action.Edit.UNDO));
this.editor.add_notification(ian);
}
diff --git a/src/client/application/application-command.vala b/src/client/application/application-command.vala
index 24ee9f3b..446d6741 100644
--- a/src/client/application/application-command.vala
+++ b/src/client/application/application-command.vala
@@ -71,6 +71,14 @@ public abstract class Application.Command : GLib.Object {
*/
public string? executed_label { get; protected set; default = null; }
+ /**
+ * True if executed_label should be displayed only briefly to the user.
+ * Set this to true for very frequent notifications.
+ */
+ public bool executed_notification_brief {
+ get; protected set; default = false;
+ }
+
/**
* A human-readable label describing the result of calling {@link undo}.
*
diff --git a/src/client/application/application-configuration.vala b/src/client/application/application-configuration.vala
index e2cc8f7b..6cce6a7d 100644
--- a/src/client/application/application-configuration.vala
+++ b/src/client/application/application-configuration.vala
@@ -14,6 +14,7 @@ public class Application.Configuration : Geary.BaseObject {
public const string ASK_OPEN_ATTACHMENT_KEY = "ask-open-attachment";
public const string AUTOSELECT_KEY = "autoselect";
+ public const string BRIEF_NOTIFICATION_DURATION = "brief-notification-duration";
public const string COMPOSER_WINDOW_SIZE_KEY = "composer-window-size";
public const string COMPOSE_AS_HTML_KEY = "compose-as-html";
public const string CONVERSATION_VIEWER_ZOOM_KEY = "conversation-viewer-zoom";
@@ -22,6 +23,7 @@ public class Application.Configuration : Geary.BaseObject {
public const string FOLDER_LIST_PANE_POSITION_HORIZONTAL_KEY = "folder-list-pane-position-horizontal";
public const string FOLDER_LIST_PANE_POSITION_KEY = "folder-list-pane-position";
public const string FOLDER_LIST_PANE_POSITION_VERTICAL_KEY = "folder-list-pane-position-vertical";
+ public const string FORMATTING_TOOLBAR_VISIBLE = "formatting-toolbar-visible";
public const string MESSAGES_PANE_POSITION_KEY = "messages-pane-position";
public const string SEARCH_STRATEGY_KEY = "search-strategy";
public const string SINGLE_KEY_SHORTCUTS = "single-key-shortcuts";
@@ -104,6 +106,11 @@ public class Application.Configuration : Geary.BaseObject {
get { return settings.get_boolean(FOLDER_LIST_PANE_HORIZONTAL_KEY); }
}
+ public bool formatting_toolbar_visible {
+ get { return settings.get_boolean(FORMATTING_TOOLBAR_VISIBLE); }
+ set { settings.set_boolean(FORMATTING_TOOLBAR_VISIBLE, value); }
+ }
+
public int messages_pane_position {
get { return settings.get_int(MESSAGES_PANE_POSITION_KEY); }
set { settings.set_int(MESSAGES_PANE_POSITION_KEY, value); }
@@ -154,6 +161,10 @@ public class Application.Configuration : Geary.BaseObject {
get { return settings.get_int(UNDO_SEND_DELAY); }
}
+ /** The number of seconds for which brief notifications should be displayed. */
+ public int brief_notification_duration {
+ get { return settings.get_int(BRIEF_NOTIFICATION_DURATION); }
+ }
// Creates a configuration object.
public Configuration(string schema_id) {
diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala
index 9c07cf5b..8c95cab2 100644
--- a/src/client/application/application-controller.vala
+++ b/src/client/application/application-controller.vala
@@ -1599,7 +1599,9 @@ internal class Application.Controller : Geary.BaseObject {
"Email sent to %s"
).printf(Util.Email.to_short_recipient_display(sent));
Components.InAppNotification notification =
- new Components.InAppNotification(message);
+ new Components.InAppNotification(
+ message, application.config.brief_notification_duration
+ );
foreach (MainWindow window in this.application.get_main_windows()) {
window.add_notification(notification);
}
@@ -2390,6 +2392,7 @@ private class Application.ArchiveEmailCommand : RevokableCommand {
base(source, conversations, messages);
this.source = source;
this.executed_label = executed_label;
+ this.executed_notification_brief = true;
this.undone_label = undone_label;
}
@@ -2696,13 +2699,14 @@ private class Application.SendComposerCommand : ComposerCommand {
public override async void execute(GLib.Cancellable? cancellable)
throws GLib.Error {
Geary.ComposedEmail email = yield this.composer.get_composed_email();
- /// Translators: The label for an in-app notification. The
- /// string substitution is a list of recipients of the email.
- this.executed_label = _(
- "Email to %s queued for delivery"
- ).printf(Util.Email.to_short_recipient_display(email));
-
+
if (this.can_undo) {
+ /// Translators: The label for an in-app notification. The
+ /// string substitution is a list of recipients of the email.
+ this.executed_label = _(
+ "Email to %s queued for delivery"
+ ).printf(Util.Email.to_short_recipient_display(email));
+
this.saved = yield this.smtp.save_email(email, cancellable);
this.commit_timer.start();
} else {
diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala
index e7708001..e8758a89 100644
--- a/src/client/application/application-main-window.vala
+++ b/src/client/application/application-main-window.vala
@@ -1216,7 +1216,7 @@ public class Application.MainWindow :
on_conversation_view_added
);
- this.conversations_paned.pack2(this.conversation_viewer, true, true);
+ this.conversations_paned.pack2(this.conversation_viewer, true, false);
// Main toolbar
this.main_toolbar = new MainToolbar(config);
@@ -1230,7 +1230,10 @@ public class Application.MainWindow :
this.main_toolbar.show_close_button = false;
this.main_layout.pack_start(main_toolbar, false, true, 0);
} else {
- set_titlebar(this.main_toolbar);
+ var titlebar = new Hdy.TitleBar();
+ titlebar.show();
+ titlebar.add(this.main_toolbar);
+ set_titlebar(titlebar);
}
// Status bar
@@ -2041,8 +2044,11 @@ public class Application.MainWindow :
private void on_command_redo(Command command) {
update_command_actions();
if (command.executed_label != null) {
+ int notification_time =
+ command.executed_notification_brief ?
+ application.config.brief_notification_duration : 0;
Components.InAppNotification ian =
- new Components.InAppNotification(command.executed_label);
+ new Components.InAppNotification(command.executed_label, notification_time);
ian.set_button(_("Undo"), Action.Edit.prefix(Action.Edit.UNDO));
add_notification(ian);
}
diff --git a/src/client/components/components-in-app-notification.vala b/src/client/components/components-in-app-notification.vala
index 79ec67c7..fd5a7797 100644
--- a/src/client/components/components-in-app-notification.vala
+++ b/src/client/components/components-in-app-notification.vala
@@ -26,7 +26,13 @@ public class Components.InAppNotification : Gtk.Revealer {
* @param message The message that should be displayed.
* @param keepalive The amount of seconds that the notification should stay visible.
*/
- public InAppNotification(string message, uint keepalive = DEFAULT_KEEPALIVE) {
+ public InAppNotification(string message, uint keepalive = -1) {
+ if (keepalive == 0) {
+ this.message_label.label = "";
+ return; // skip the notification
+ }
+ if (keepalive == -1)
+ keepalive = DEFAULT_KEEPALIVE;
this.transition_type = Gtk.RevealerTransitionType.SLIDE_DOWN;
this.message_label.label = message;
@@ -44,8 +50,10 @@ public class Components.InAppNotification : Gtk.Revealer {
}
public override void show() {
- base.show();
- this.reveal_child = true;
+ if (this.message_label.label != "") {
+ base.show();
+ this.reveal_child = true;
+ }
}
/**
diff --git a/src/client/components/components-reflow-box.c b/src/client/components/components-reflow-box.c
new file mode 100644
index 00000000..f9d9fbe4
--- /dev/null
+++ b/src/client/components/components-reflow-box.c
@@ -0,0 +1,495 @@
+/*
+ * Copyright (C) 2020 Alexander Mikhaylenko
+ * Copyright (C) 2020 James Westman
+ *
+ * SPDX-License-Identifier: LGPL-2.1+
+ */
+
+#include "config.h"
+#include
+#include
+
+
+#define COMPONENTS_TYPE_REFLOW_BOX (components_reflow_box_get_type())
+
+G_DECLARE_FINAL_TYPE (ComponentsReflowBox, components_reflow_box, COMPONENTS, REFLOW_BOX, GtkContainer)
+
+
+ComponentsReflowBox *components_reflow_box_new (void);
+
+guint components_reflow_box_get_spacing (ComponentsReflowBox *self);
+void components_reflow_box_set_spacing (ComponentsReflowBox *self,
+ guint spacing);
+
+guint components_reflow_box_get_row_spacing (ComponentsReflowBox *self);
+void components_reflow_box_set_row_spacing (ComponentsReflowBox *self,
+ guint row_spacing);
+
+
+struct _ComponentsReflowBox
+{
+ GtkContainer parent_instance;
+
+ GList *children;
+
+ guint spacing;
+ guint row_spacing;
+};
+
+G_DEFINE_TYPE (ComponentsReflowBox, components_reflow_box, GTK_TYPE_CONTAINER);
+
+enum {
+ PROP_0,
+ PROP_SPACING,
+ PROP_ROW_SPACING,
+ LAST_PROP,
+};
+
+static GParamSpec *props[LAST_PROP];
+
+
+static void
+components_reflow_box_init (ComponentsReflowBox *self)
+{
+ gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
+}
+
+static void
+components_reflow_box_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (object);
+
+ switch (prop_id) {
+ case PROP_SPACING:
+ g_value_set_uint (value, components_reflow_box_get_spacing (self));
+ break;
+
+ case PROP_ROW_SPACING:
+ g_value_set_uint (value, components_reflow_box_get_row_spacing (self));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+components_reflow_box_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (object);
+
+ switch (prop_id) {
+ case PROP_SPACING:
+ components_reflow_box_set_spacing (self, g_value_get_uint (value));
+ break;
+
+ case PROP_ROW_SPACING:
+ components_reflow_box_set_row_spacing (self, g_value_get_uint (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+/**
+ * components_reflow_box_set_spacing:
+ * @self: a #ComponentsReflowBox
+ * @spacing: the spacing
+ *
+ * Sets the spacing for @self.
+ *
+ * Since: 0.0.14
+ */
+void
+components_reflow_box_set_spacing (ComponentsReflowBox *self,
+ guint spacing)
+{
+ if (self->spacing == spacing)
+ return;
+
+ self->spacing = spacing;
+ gtk_widget_queue_resize (GTK_WIDGET (self));
+
+ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SPACING]);
+}
+
+/**
+ * components_reflow_box_get_spacing:
+ * @self: a #ComponentsReflowBox
+ *
+ * Gets the spacing for @self.
+ *
+ * Returns: the spacing for @self.
+ *
+ * Since: 0.0.14
+ */
+guint
+components_reflow_box_get_spacing (ComponentsReflowBox *self)
+{
+ return self->spacing;
+}
+
+/**
+ * components_reflow_box_set_row_spacing:
+ * @self: a #ComponentsReflowBox
+ * @row_spacing: the row spacing
+ *
+ * Sets the row spacing for @self.
+ *
+ * Since: 0.0.14
+ */
+void
+components_reflow_box_set_row_spacing (ComponentsReflowBox *self,
+ guint row_spacing)
+{
+ if (self->row_spacing == row_spacing)
+ return;
+
+ self->row_spacing = row_spacing;
+ gtk_widget_queue_resize (GTK_WIDGET (self));
+
+ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ROW_SPACING]);
+}
+
+/**
+ * components_reflow_box_get_row_spacing:
+ * @self: a #ComponentsReflowBox
+ *
+ * Gets the row spacing for @self.
+ *
+ * Returns: the row spacing for @self.
+ *
+ * Since: 0.0.14
+ */
+guint
+components_reflow_box_get_row_spacing (ComponentsReflowBox *self)
+{
+ return self->row_spacing;
+}
+
+
+static void
+allocate_row (ComponentsReflowBox *self,
+ GtkAllocation *allocation,
+ gint y,
+ GList *row_start,
+ GList *next_row,
+ gint row_height,
+ gint extra_space,
+ gint n_expand_children)
+{
+ gboolean rtl;
+ gint x = 0;
+ gint expand_per_child = 0;
+
+ if (row_start == NULL)
+ return;
+
+ rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL;
+ if (rtl)
+ x = allocation->width;
+
+ if (n_expand_children > 0) {
+ expand_per_child = extra_space / n_expand_children;
+ } else {
+ GtkAlign align;
+ align = gtk_widget_get_halign (GTK_WIDGET (self));
+ if (align == GTK_ALIGN_CENTER) {
+ if (rtl)
+ x -= (extra_space / 2);
+ else
+ x += (extra_space / 2);
+ } else if (align == GTK_ALIGN_END) {
+ if (rtl)
+ x -= extra_space;
+ else
+ x += extra_space;
+ }
+ }
+
+ for (GList *l = row_start; l != NULL && l != next_row; l = l->next) {
+ GtkWidget *child = GTK_WIDGET (l->data);
+ int w, min_w;
+ GtkAllocation child_alloc;
+
+ if (!gtk_widget_get_visible (child))
+ continue;
+
+ gtk_widget_get_preferred_width (child, &min_w, &w);
+ w = CLAMP (w, min_w, allocation->width);
+
+ if (gtk_widget_get_hexpand (child)) {
+ w += expand_per_child;
+ }
+
+ if (rtl)
+ x -= w;
+
+ child_alloc.x = x + allocation->x;
+
+ if (rtl)
+ x -= self->spacing;
+ else
+ x += w + self->spacing;
+
+ child_alloc.y = y + allocation->y;
+ child_alloc.width = w;
+ child_alloc.height = row_height;
+
+ gtk_widget_size_allocate (child, &child_alloc);
+ }
+}
+
+static gint
+calculate_sizes (ComponentsReflowBox *self,
+ GtkAllocation *allocation,
+ gboolean dry_run)
+{
+ gint x = 0;
+ gint y = 0;
+ gint row_height = 0;
+
+ GList *row_start = self->children;
+ gint n_expand_children = 0;
+
+ for (GList *l = self->children; l != NULL; l = l->next) {
+ GtkWidget *child = GTK_WIDGET (l->data);
+ int w, h, min_w;
+
+ if (!gtk_widget_get_visible (child))
+ continue;
+
+ gtk_widget_get_preferred_width (child, &min_w, &w);
+ gtk_widget_get_preferred_height (child, NULL, &h);
+
+ w = CLAMP (w, min_w, allocation->width);
+
+ if (x + w > allocation->width) {
+ /* no more space on this row, create a new one */
+
+ /* first, do the allocations for the previous row, if needed */
+ if (!dry_run) {
+ allocate_row (self, allocation, y, row_start, l, row_height,
+ allocation->width + self->spacing - x, n_expand_children);
+ }
+
+ /* now reset everything for the next row */
+ x = 0;
+ y += row_height + self->row_spacing;
+ row_height = 0;
+ n_expand_children = 0;
+ row_start = l;
+ }
+
+ if (gtk_widget_get_hexpand (child))
+ n_expand_children ++;
+
+ row_height = MAX (row_height, h);
+
+ x += w + self->spacing;
+ }
+
+ if (!dry_run) {
+ /* allocate the last row */
+ allocate_row (self, allocation, y, row_start, NULL, row_height,
+ allocation->width + self->spacing - x, n_expand_children);
+ }
+
+ return y + row_height;
+}
+
+static void
+components_reflow_box_size_allocate(GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (widget);
+
+ calculate_sizes(self, allocation, FALSE);
+ GTK_WIDGET_CLASS (components_reflow_box_parent_class)->size_allocate (widget, allocation);
+}
+
+static GtkSizeRequestMode
+components_reflow_box_get_request_mode(GtkWidget *widget)
+{
+ return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH;
+}
+
+static void
+components_reflow_box_get_preferred_width(GtkWidget *widget,
+ gint *minimum_width,
+ gint *natural_width)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (widget);
+
+ gint min = 0;
+ gint nat = 0;
+
+ for (GList *l = self->children; l != NULL; l = l->next) {
+ GtkWidget *child = GTK_WIDGET (l->data);
+ int child_min, child_nat;
+
+ if (!gtk_widget_get_visible (child))
+ continue;
+
+ gtk_widget_get_preferred_width (child, &child_min, &child_nat);
+
+ min = MAX (min, child_min);
+ nat += child_nat + self->spacing;
+ }
+
+ /* remove the extra spacing, avoid off-by-one error */
+ if (self->children != NULL)
+ nat -= self->spacing;
+
+ if (minimum_width)
+ *minimum_width = min;
+ if (natural_width)
+ *natural_width = nat;
+}
+
+static void
+components_reflow_box_get_preferred_width_for_height (GtkWidget *widget,
+ gint height,
+ gint *minimum_width,
+ gint *natural_width)
+{
+ components_reflow_box_get_preferred_width (widget, minimum_width, natural_width);
+}
+
+static void
+components_reflow_box_get_preferred_height_for_width (GtkWidget *widget,
+ gint width,
+ gint *minimum_height,
+ gint *natural_height)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (widget);
+
+ GtkAllocation allocation;
+ gint h;
+
+ allocation.width = width;
+ h = calculate_sizes (self, &allocation, TRUE);
+
+ if (minimum_height)
+ *minimum_height = h;
+ if (natural_height)
+ *natural_height = h;
+}
+
+
+static void
+components_reflow_box_add (GtkContainer *container,
+ GtkWidget *widget)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (container);
+
+ self->children = g_list_append (self->children, widget);
+ gtk_widget_set_parent (widget, GTK_WIDGET (self));
+}
+
+static void
+components_reflow_box_remove (GtkContainer *container,
+ GtkWidget *widget)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (container);
+
+ gtk_widget_unparent (widget);
+ self->children = g_list_remove (self->children, widget);
+}
+
+static void
+components_reflow_box_forall (GtkContainer *container,
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data)
+{
+ ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (container);
+
+ // while loop instead of for loop in case the callback removes children
+ GList *l = self->children;
+ while (l != NULL) {
+ GtkWidget *child = GTK_WIDGET (l->data);
+ l = l->next;
+ callback (child, callback_data);
+ }
+}
+
+static void
+components_reflow_box_class_init (ComponentsReflowBoxClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
+
+ object_class->set_property = components_reflow_box_set_property;
+ object_class->get_property = components_reflow_box_get_property;
+
+ widget_class->size_allocate = components_reflow_box_size_allocate;
+ widget_class->get_request_mode = components_reflow_box_get_request_mode;
+ widget_class->get_preferred_width = components_reflow_box_get_preferred_width;
+ widget_class->get_preferred_width_for_height = components_reflow_box_get_preferred_width_for_height;
+ widget_class->get_preferred_height_for_width = components_reflow_box_get_preferred_height_for_width;
+
+ container_class->add = components_reflow_box_add;
+ container_class->remove = components_reflow_box_remove;
+ container_class->forall = components_reflow_box_forall;
+
+ /**
+ * ComponentsReflowBox:spacing:
+ *
+ * The spacing between children
+ *
+ * Since: 0.0.14
+ */
+ props[PROP_SPACING] =
+ g_param_spec_uint ("spacing",
+ _("Spacing"),
+ _("Spacing between children"),
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+ /**
+ * ComponentsReflowBox:row-spacing:
+ *
+ * The spacing between rows of children
+ *
+ * Since: 0.0.14
+ */
+ props[PROP_ROW_SPACING] =
+ g_param_spec_uint ("row-spacing",
+ _("Row spacing"),
+ _("Spacing between rows of children"),
+ 0,
+ G_MAXUINT,
+ 0,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+ g_object_class_install_properties (object_class, LAST_PROP, props);
+}
+
+/**
+ * components_reflow_box_new:
+ *
+ * Create a new #ComponentsReflowBox widget.
+ *
+ * Returns: The newly created #ComponentsReflowBox widget
+ *
+ * Since: 0.0.14
+ */
+ComponentsReflowBox *
+components_reflow_box_new (void)
+{
+ return g_object_new (COMPONENTS_TYPE_REFLOW_BOX, NULL);
+}
+
+
+
diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala
index 5afaea6c..2a160f8b 100644
--- a/src/client/components/main-toolbar.vala
+++ b/src/client/components/main-toolbar.vala
@@ -14,8 +14,6 @@ public class MainToolbar : Gtk.Box {
public string folder { get; set; }
// Close button settings
public bool show_close_button { get; set; default = true; }
- public bool show_close_button_left { get; private set; default = true; }
- public bool show_close_button_right { get; private set; default = true; }
// Search and find bar
public bool search_open { get; set; default = false; }
public bool find_open { get; set; default = false; }
@@ -33,7 +31,6 @@ public class MainToolbar : Gtk.Box {
private Gtk.ToggleButton search_conversations_button;
[GtkChild]
private Gtk.MenuButton main_menu_button;
- private Binding guest_header_binding;
// Conversation header elements
[GtkChild]
@@ -51,6 +48,9 @@ public class MainToolbar : Gtk.Box {
[GtkChild]
private Gtk.ToggleButton find_button;
+ [GtkChild]
+ private Hdy.HeaderGroup header_group;
+
private bool show_trash_button = true;
// Load these at construction time
@@ -72,10 +72,6 @@ public class MainToolbar : Gtk.Box {
this.bind_property("account", this.folder_header, "title", BindingFlags.SYNC_CREATE);
this.bind_property("folder", this.folder_header, "subtitle", BindingFlags.SYNC_CREATE);
}
- this.bind_property("show-close-button-left", this.folder_header, "show-close-button",
- BindingFlags.SYNC_CREATE);
- this.bind_property("show-close-button-right", this.conversation_header, "show-close-button",
- BindingFlags.SYNC_CREATE);
// Assemble the main/mark menus
Gtk.Builder builder = new Gtk.Builder.from_resource("/org/gnome/Geary/main-toolbar-menus.ui");
@@ -95,27 +91,17 @@ public class MainToolbar : Gtk.Box {
this.bind_property("find-open", this.find_button, "active",
BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL);
-
- Gtk.Settings.get_default().notify["gtk-decoration-layout"].connect(set_window_buttons);
- this.realize.connect(set_window_buttons);
}
public void set_conversation_header(Gtk.HeaderBar header) {
conversation_header.hide();
- header.get_style_context().add_class("geary-titlebar");
- header.get_style_context().add_class("geary-titlebar-right");
- guest_header_binding = bind_property("show-close-button-right", header,
- "show-close-button", BindingFlags.SYNC_CREATE);
+ this.header_group.add_header_bar(header);
pack_start(header, true, true);
- header.decoration_layout = conversation_header.decoration_layout;
}
public void remove_conversation_header(Gtk.HeaderBar header) {
remove(header);
- header.get_style_context().remove_class("geary-titlebar");
- header.get_style_context().remove_class("geary-titlebar-right");
- guest_header_binding.unbind();
- header.decoration_layout = Gtk.Settings.get_default().gtk_decoration_layout;
+ this.header_group.remove_header_bar(header);
conversation_header.show();
}
@@ -124,18 +110,6 @@ public class MainToolbar : Gtk.Box {
update_conversation_buttons();
}
- private void set_window_buttons() {
- string[] buttons = Gtk.Settings.get_default().gtk_decoration_layout.split(":");
- this.show_close_button_left = this.show_close_button;
- this.show_close_button_right = this.show_close_button;
- this.folder_header.decoration_layout = buttons[0] + ":";
- this.conversation_header.decoration_layout = (
- (buttons.length == 2)
- ? ":" + buttons[1]
- : ""
- );
- }
-
// Updates tooltip text depending on number of conversations selected.
private void update_conversation_buttons() {
this.mark_message_button.tooltip_text = ngettext(
diff --git a/src/client/composer/composer-headerbar.vala b/src/client/composer/composer-headerbar.vala
index 4fde97cd..fd2680a5 100644
--- a/src/client/composer/composer-headerbar.vala
+++ b/src/client/composer/composer-headerbar.vala
@@ -26,10 +26,6 @@ public class Composer.Headerbar : Gtk.HeaderBar {
[GtkChild]
private Gtk.Label recipients_label;
[GtkChild]
- private Gtk.Button new_message_attach_button;
- [GtkChild]
- private Gtk.Box conversation_attach_buttons;
- [GtkChild]
private Gtk.Button save_and_close_button;
@@ -42,6 +38,7 @@ public class Composer.Headerbar : Gtk.HeaderBar {
Gtk.Settings.get_default().notify["gtk-decoration-layout"].connect(
on_gtk_decoration_layout_changed
);
+ this.show_close_button = this.config.desktop_environment != UNITY;
}
public override void destroy() {
@@ -56,11 +53,6 @@ public class Composer.Headerbar : Gtk.HeaderBar {
recipients_button.tooltip_text = tooltip;
}
- public void set_show_pending_attachments(bool show) {
- this.new_message_attach_button.visible = !show;
- this.conversation_attach_buttons.visible = show;
- }
-
internal void set_mode(Widget.PresentationMode mode) {
switch (mode) {
case Widget.PresentationMode.DETACHED:
diff --git a/src/client/composer/composer-web-view.vala b/src/client/composer/composer-web-view.vala
index 7f73becd..3dabf7fe 100644
--- a/src/client/composer/composer-web-view.vala
+++ b/src/client/composer/composer-web-view.vala
@@ -55,11 +55,16 @@ public class Composer.WebView : Components.WebView {
public string link_url { get; private set; default = ""; }
public string font_family { get; private set; default = "sans"; }
public uint font_size { get; private set; default = 12; }
+ public Gdk.RGBA font_color {
+ get;
+ private set;
+ default = Util.Gtk.rgba(0, 0, 0, 1);
+ }
private uint context = 0;
public EditContext(string message) {
- string[] values = message.split(",");
+ string[] values = message.split(";");
this.context = (uint) uint64.parse(values[0]);
this.link_url = values[1];
@@ -73,6 +78,10 @@ public class Composer.WebView : Components.WebView {
}
this.font_size = (uint) uint64.parse(values[3]);
+
+ Gdk.RGBA font_color = {0, 0, 0, 0};
+ font_color.parse(values[4]);
+ this.font_color = font_color;
}
}
diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala
index 9253eab4..30b928c5 100644
--- a/src/client/composer/composer-widget.vala
+++ b/src/client/composer/composer-widget.vala
@@ -11,6 +11,8 @@ private errordomain AttachmentError {
DUPLICATE
}
+[CCode (cname = "components_reflow_box_get_type")]
+private extern Type components_reflow_box_get_type();
/**
* A widget for editing an email message.
@@ -129,8 +131,9 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
private const string ACTION_COLOR = "color";
private const string ACTION_INSERT_IMAGE = "insert-image";
private const string ACTION_INSERT_LINK = "insert-link";
- private const string ACTION_COMPOSE_AS_HTML = "compose-as-html";
+ private const string ACTION_TEXT_FORMAT = "text-format";
private const string ACTION_SHOW_EXTENDED_HEADERS = "show-extended-headers";
+ private const string ACTION_SHOW_FORMATTING = "show-formatting";
private const string ACTION_DISCARD = "discard";
private const string ACTION_DETACH = "detach";
private const string ACTION_SEND = "send";
@@ -180,12 +183,13 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
{ ACTION_ADD_ORIGINAL_ATTACHMENTS, on_pending_attachments },
{ ACTION_CLOSE, on_close },
{ ACTION_DISCARD, on_discard },
- { ACTION_COMPOSE_AS_HTML, on_toggle_action, null, "true", on_compose_as_html_toggled },
+ { ACTION_TEXT_FORMAT, null, "s", "'html'", on_text_format },
{ ACTION_DETACH, on_detach },
{ ACTION_OPEN_INSPECTOR, on_open_inspector },
{ ACTION_SELECT_DICTIONARY, on_select_dictionary },
{ ACTION_SEND, on_send },
{ ACTION_SHOW_EXTENDED_HEADERS, on_toggle_action, null, "false", on_show_extended_headers_toggled },
+ { ACTION_SHOW_FORMATTING, on_toggle_action, null, "false", on_show_formatting },
};
public static void add_accelerators(Application.Client application) {
@@ -310,12 +314,14 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
[GtkChild]
private Gtk.Label from_label;
+ [GtkChild] private Gtk.Box from_row;
[GtkChild]
private Gtk.Label from_single;
[GtkChild]
private Gtk.ComboBoxText from_multiple;
private Gee.ArrayList from_list = new Gee.ArrayList();
+ [GtkChild] Gtk.Box to_row;
[GtkChild]
private Gtk.Box to_box;
[GtkChild]
@@ -323,32 +329,36 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
private EmailEntry to_entry;
private Components.EntryUndo to_undo;
- [GtkChild]
- private Gtk.Revealer extended_fields_revealer;
+ [GtkChild] private Gtk.Revealer extended_fields_revealer;
+ [GtkChild] Gtk.Box extended_fields_box;
+ [GtkChild] private Gtk.ToggleButton show_extended_fields;
+ [GtkChild] private Gtk.Box filled_fields;
+ [GtkChild] Gtk.Box cc_row;
[GtkChild]
- private Gtk.EventBox cc_box;
+ private Gtk.Box cc_box;
[GtkChild]
private Gtk.Label cc_label;
private EmailEntry cc_entry;
private Components.EntryUndo cc_undo;
+ [GtkChild] Gtk.Box bcc_row;
[GtkChild]
- private Gtk.EventBox bcc_box;
+ private Gtk.Box bcc_box;
[GtkChild]
private Gtk.Label bcc_label;
private EmailEntry bcc_entry;
private Components.EntryUndo bcc_undo;
+ [GtkChild] Gtk.Box reply_to_row;
[GtkChild]
- private Gtk.EventBox reply_to_box;
+ private Gtk.Box reply_to_box;
[GtkChild]
private Gtk.Label reply_to_label;
private EmailEntry reply_to_entry;
private Components.EntryUndo reply_to_undo;
- [GtkChild]
- private Gtk.Label subject_label;
+ [GtkChild] private Gtk.Box subject_row;
[GtkChild]
private Gtk.Entry subject_entry;
private Components.EntryUndo subject_undo;
@@ -371,21 +381,22 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
private Gtk.Widget recipients;
[GtkChild]
private Gtk.Box header_area;
- [GtkChild]
- private Gtk.Box insert_buttons;
- [GtkChild]
- private Gtk.Box font_style_buttons;
- [GtkChild]
- private Gtk.Box list_buttons;
+
+ [GtkChild] private Gtk.Button new_message_attach_button;
+ [GtkChild] private Gtk.Box conversation_attach_buttons;
+
+ [GtkChild] private Gtk.Revealer formatting;
+ [GtkChild] private Gtk.MenuButton font_button;
+ [GtkChild] private Gtk.Stack font_button_stack;
+ [GtkChild] private Gtk.MenuButton font_size_button;
+ [GtkChild] private Gtk.Image font_color_icon;
+ [GtkChild] private Gtk.MenuButton text_format_button;
+
[GtkChild]
private Gtk.Button insert_link_button;
[GtkChild]
- private Gtk.Button remove_format_button;
- [GtkChild]
private Gtk.Button select_dictionary_button;
[GtkChild]
- private Gtk.MenuButton menu_button;
- [GtkChild]
private Gtk.Label info_label;
[GtkChild]
@@ -394,9 +405,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
private GLib.SimpleActionGroup composer_actions = new GLib.SimpleActionGroup();
private GLib.SimpleActionGroup editor_actions = new GLib.SimpleActionGroup();
- private Menu html_menu;
- private Menu plain_menu;
-
private Menu context_menu_model;
private Menu context_menu_rich_text;
private Menu context_menu_plain_text;
@@ -483,6 +491,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
public Widget(Application.Client application,
Geary.Account initial_account,
ComposeType compose_type) {
+ components_reflow_box_get_type();
base_ref();
this.application = application;
this.account = initial_account;
@@ -516,18 +525,21 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
this.to_undo = new Components.EntryUndo(this.to_entry);
this.cc_entry = new EmailEntry(this);
+ this.cc_entry.hexpand = true;
this.cc_entry.changed.connect(on_envelope_changed);
this.cc_box.add(cc_entry);
this.cc_label.set_mnemonic_widget(this.cc_entry);
this.cc_undo = new Components.EntryUndo(this.cc_entry);
this.bcc_entry = new EmailEntry(this);
+ this.bcc_entry.hexpand = true;
this.bcc_entry.changed.connect(on_envelope_changed);
this.bcc_box.add(bcc_entry);
this.bcc_label.set_mnemonic_widget(this.bcc_entry);
this.bcc_undo = new Components.EntryUndo(this.bcc_entry);
this.reply_to_entry = new EmailEntry(this);
+ this.reply_to_entry.hexpand = true;
this.reply_to_entry.changed.connect(on_envelope_changed);
this.reply_to_box.add(reply_to_entry);
this.reply_to_label.set_mnemonic_widget(this.reply_to_entry);
@@ -551,8 +563,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
Gtk.Builder builder = new Gtk.Builder.from_resource(
"/org/gnome/Geary/composer-menus.ui"
);
- this.html_menu = (Menu) builder.get_object("html_menu_model");
- this.plain_menu = (Menu) builder.get_object("plain_menu_model");
this.context_menu_model = (Menu) builder.get_object("context_menu_model");
this.context_menu_rich_text = (Menu) builder.get_object("context_menu_rich_text");
this.context_menu_plain_text = (Menu) builder.get_object("context_menu_plain_text");
@@ -610,7 +620,14 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
);
this.background_work_pulse.repetition = FOREVER;
+ // Set the from_multiple combo box to ellipsize. This can't be done
+ // from the .ui file.
+ var cells = this.from_multiple.get_cells();
+ ((Gtk.CellRendererText) cells.data).ellipsize = END;
+
load_entry_completions();
+
+ update_color_icon.begin(Util.Gtk.rgba(0, 0, 0, 0));
}
public Widget.from_mailbox(Application.Client application,
@@ -754,8 +771,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
// model and hence the menu_button constructs a new
// popover.
this.composer_actions.change_action_state(
- ACTION_COMPOSE_AS_HTML,
- this.application.config.compose_as_html
+ ACTION_TEXT_FORMAT,
+ this.application.config.compose_as_html ? "html" : "plain"
);
set_mode(DETACHED);
@@ -1036,7 +1053,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
switch (this.compose_type) {
// Restoring a draft
case ComposeType.NEW_MESSAGE:
- bool show_extended = false;
if (referred.from != null)
this.from = referred.from;
if (referred.to != null)
@@ -1044,11 +1060,9 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
if (referred.cc != null)
this.cc_entry.addresses = referred.cc;
if (referred.bcc != null) {
- show_extended = true;
this.bcc_entry.addresses = referred.bcc;
}
if (referred.reply_to != null) {
- show_extended = true;
this.reply_to_entry.addresses = referred.reply_to;
}
if (referred.in_reply_to != null)
@@ -1067,14 +1081,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
} catch (Error error) {
debug("Error getting draft message body: %s", error.message);
}
- if (show_extended) {
- this.editor_actions.change_action_state(
- ACTION_SHOW_EXTENDED_HEADERS, true
- );
- this.composer_actions.change_action_state(
- ACTION_SHOW_EXTENDED_HEADERS, true
- );
- }
break;
case ComposeType.REPLY:
@@ -1097,6 +1103,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
Geary.RFC822.TextFormat.HTML);
break;
}
+
+ update_extended_headers();
return referred_quote;
}
@@ -1146,10 +1154,16 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
ACTION_SHOW_EXTENDED_HEADERS, false
);
entries_users.change_action_state(
- ACTION_COMPOSE_AS_HTML, this.application.config.compose_as_html
+ ACTION_TEXT_FORMAT,
+ this.application.config.compose_as_html ? "html" : "plain"
);
}
+ this.composer_actions.change_action_state(
+ ACTION_SHOW_FORMATTING,
+ this.application.config.formatting_toolbar_visible
+ );
+
get_action(Action.Edit.UNDO).set_enabled(false);
get_action(Action.Edit.REDO).set_enabled(false);
@@ -1421,10 +1435,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
if (this.container != null) {
this.container.top_window.title = subject;
}
-
- if (this.application.config.desktop_environment != UNITY) {
- this.header.title = subject;
- }
}
internal void set_mode(PresentationMode new_mode) {
@@ -1435,20 +1445,17 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
case PresentationMode.DETACHED:
case PresentationMode.PANED:
this.recipients.set_visible(true);
- this.subject_label.set_visible(true);
- this.subject_entry.set_visible(true);
+ this.subject_row.visible = true;
break;
case PresentationMode.INLINE:
this.recipients.set_visible(true);
- this.subject_label.set_visible(false);
- this.subject_entry.set_visible(false);
+ this.subject_row.visible = false;
break;
case PresentationMode.INLINE_COMPACT:
this.recipients.set_visible(false);
- this.subject_label.set_visible(false);
- this.subject_entry.set_visible(false);
+ this.subject_row.visible = false;
set_compact_header_recipients();
break;
}
@@ -1795,7 +1802,10 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
}
}
}
- this.header.set_show_pending_attachments(manual_enabled);
+
+ this.new_message_attach_button.visible = !manual_enabled;
+ this.conversation_attach_buttons.visible = manual_enabled;
+
return have_added;
}
@@ -2114,31 +2124,63 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
action.change_state(!action.state.get_boolean());
}
- private void on_compose_as_html_toggled(SimpleAction? action, Variant? new_state) {
- bool compose_as_html = new_state.get_boolean();
- action.set_state(compose_as_html);
+ private void on_text_format(SimpleAction? action, Variant? new_state) {
+ bool compose_as_html = new_state.get_string() == "html";
+ action.set_state(new_state.get_string());
foreach (string html_action in HTML_ACTIONS)
get_action(html_action).set_enabled(compose_as_html);
update_cursor_actions();
- this.insert_buttons.visible = compose_as_html;
- this.font_style_buttons.visible = compose_as_html;
- this.list_buttons.visible = compose_as_html;
- this.remove_format_button.visible = compose_as_html;
-
- this.menu_button.menu_model = (compose_as_html) ? this.html_menu : this.plain_menu;
+ var show_formatting = (SimpleAction) this.composer_actions.lookup_action(ACTION_SHOW_FORMATTING);
+ show_formatting.set_enabled(compose_as_html);
+ update_formatting_toolbar();
this.editor.set_rich_text(compose_as_html);
this.application.config.compose_as_html = compose_as_html;
+ this.text_format_button.popover.popdown();
+ }
+
+ private void reparent_widget(Gtk.Widget child, Gtk.Container new_parent) {
+ ((Gtk.Container) child.get_parent()).remove(child);
+ new_parent.add(child);
+ }
+
+ private void update_extended_headers(bool reorder=true) {
+ bool cc = this.cc_entry.addresses != null;
+ bool bcc = this.bcc_entry.addresses != null;
+ bool reply_to = this.reply_to_entry.addresses != null;
+
+ if (reorder) {
+ if (cc) {
+ reparent_widget(this.cc_row, this.filled_fields);
+ } else {
+ reparent_widget(this.cc_row, this.extended_fields_box);
+ }
+ if (bcc) {
+ reparent_widget(this.bcc_row, this.filled_fields);
+ } else {
+ reparent_widget(this.bcc_row, this.extended_fields_box);
+ }
+ if (reply_to) {
+ reparent_widget(this.reply_to_row, this.filled_fields);
+ } else {
+ reparent_widget(this.reply_to_row, this.extended_fields_box);
+ }
+ }
+
+ this.show_extended_fields.visible = !(cc && bcc && reply_to);
}
private void on_show_extended_headers_toggled(GLib.SimpleAction? action,
GLib.Variant? new_state) {
bool show_extended = new_state.get_boolean();
action.set_state(show_extended);
+
+ update_extended_headers();
+
this.extended_fields_revealer.reveal_child = show_extended;
if (show_extended && this.current_mode == INLINE_COMPACT) {
@@ -2146,11 +2188,29 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
}
}
+ private void update_formatting_toolbar() {
+ var show_formatting = (SimpleAction) this.composer_actions.lookup_action(ACTION_SHOW_FORMATTING);
+ var text_format = (SimpleAction) this.composer_actions.lookup_action(ACTION_TEXT_FORMAT);
+ this.formatting.reveal_child = text_format.get_state().get_string() == "html" && show_formatting.get_state().get_boolean();
+ }
+
+ private void on_show_formatting(SimpleAction? action, Variant? new_state) {
+ bool show_formatting = new_state.get_boolean();
+ this.application.config.formatting_toolbar_visible = show_formatting;
+ action.set_state(new_state);
+
+ update_formatting_toolbar();
+ }
+
private void on_font_family(SimpleAction action, Variant? param) {
+ string font = param.get_string();
this.editor.execute_editing_command_with_argument(
- "fontname", param.get_string()
+ "fontname", font
);
- action.set_state(param.get_string());
+ action.set_state(font);
+
+ this.font_button_stack.visible_child_name = font;
+ this.font_button.popover.popdown();
}
private void on_font_size(SimpleAction action, Variant? param) {
@@ -2164,15 +2224,35 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
this.editor.execute_editing_command_with_argument("fontsize", size);
action.set_state(param.get_string());
+
+ this.font_size_button.popover.popdown();
+ }
+
+ private async void update_color_icon(Gdk.RGBA color) {
+ var theme = Gtk.IconTheme.get_default();
+ var icon = theme.lookup_icon("font-color-symbolic", 16, 0);
+ Gdk.RGBA fg_color = Util.Gtk.rgba(0, 0, 0, 1);
+ this.get_style_context().lookup_color("theme_fg_color", out fg_color);
+
+ try {
+ var pixbuf = yield icon.load_symbolic_async(fg_color, color, null, null, null);
+ this.font_color_icon.pixbuf = pixbuf;
+ } catch(Error e) {
+ warning("Could not load icon `font-color-symbolic`!");
+ this.font_color_icon.icon_name = "font-color-symbolic";
+ }
}
private void on_select_color() {
Gtk.ColorChooserDialog dialog = new Gtk.ColorChooserDialog(_("Select Color"),
this.container.top_window);
if (dialog.run() == Gtk.ResponseType.OK) {
+ var rgba = dialog.get_rgba();
this.editor.execute_editing_command_with_argument(
- "forecolor", dialog.get_rgba().to_string()
+ "forecolor", rgba.to_string()
);
+
+ this.update_color_icon.begin(rgba);
}
dialog.destroy();
}
@@ -2392,7 +2472,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
// the from address had to be set
private bool update_from_field() {
this.from_multiple.changed.disconnect(on_from_changed);
- this.from_single.visible = this.from_multiple.visible = this.from_label.visible = false;
+ this.from_single.visible = this.from_multiple.visible = this.from_row.visible = false;
// Don't show in inline unless the current account has
// multiple email accounts or aliases, since these will be replies to a
@@ -2411,7 +2491,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
return false;
}
- this.from_label.visible = true;
+ this.from_row.visible = true;
this.from_label.set_mnemonic_widget(this.from_multiple);
// Composer label (with mnemonic underscore) for the account selector
// when choosing what address to send a message from.
@@ -2607,6 +2687,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
[GtkCallback]
private void on_envelope_changed() {
draft_changed();
+ update_extended_headers(false);
}
private void on_from_changed() {
@@ -2657,6 +2738,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
ACTION_FONT_FAMILY, context.font_family
);
+ this.update_color_icon.begin(context.font_color);
+
if (context.font_size < 11)
this.editor_actions.change_action_state(ACTION_FONT_SIZE, "small");
else if (context.font_size > 20)
diff --git a/src/client/composer/composer-window.vala b/src/client/composer/composer-window.vala
index 5a2d5d18..526d800b 100644
--- a/src/client/composer/composer-window.vala
+++ b/src/client/composer/composer-window.vala
@@ -44,7 +44,6 @@ public class Composer.Window : Gtk.ApplicationWindow, Container {
if (application.config.desktop_environment == UNITY) {
composer.embed_header();
} else {
- composer.header.show_close_button = true;
set_titlebar(this.composer.header);
}
diff --git a/src/client/composer/spell-check-popover.vala b/src/client/composer/spell-check-popover.vala
index c04183c0..44dfa021 100644
--- a/src/client/composer/spell-check-popover.vala
+++ b/src/client/composer/spell-check-popover.vala
@@ -60,6 +60,8 @@ public class SpellCheckPopover {
this.is_lang_visible = is_active || is_visible;
Gtk.Box box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 6);
+ box.margin = 6;
+ box.margin_start = 12;
lang_name = Util.International.language_name_from_locale(lang_code);
country_name = Util.International.country_name_from_locale(lang_code);
@@ -69,7 +71,6 @@ public class SpellCheckPopover {
label_text += " (" + country_name + ")";
Gtk.Label label = new Gtk.Label(label_text);
label.set_halign(Gtk.Align.START);
- label.set_size_request(-1, 24);
box.pack_start(label, false, false);
diff --git a/src/client/meson.build b/src/client/meson.build
index ed99bacf..bb61d9f5 100644
--- a/src/client/meson.build
+++ b/src/client/meson.build
@@ -37,6 +37,7 @@ geary_client_vala_sources = files(
'components/components-inspector-system-view.vala',
'components/components-placeholder-pane.vala',
'components/components-preferences-window.vala',
+ 'components/components-reflow-box.c',
'components/components-search-bar.vala',
'components/components-validator.vala',
'components/components-web-view.vala',
diff --git a/src/client/util/util-gtk.vala b/src/client/util/util-gtk.vala
index 70864ac9..1d41f2e5 100644
--- a/src/client/util/util-gtk.vala
+++ b/src/client/util/util-gtk.vala
@@ -218,4 +218,13 @@ namespace Util.Gtk {
return new_url;
}
+ public Gdk.RGBA rgba(double red, double green, double blue, double alpha) {
+ return Gdk.RGBA() {
+ red = red,
+ green = green,
+ blue = blue,
+ alpha = alpha
+ };
+ }
+
}
diff --git a/subprojects/libhandy b/subprojects/libhandy
deleted file mode 160000
index b6ff87ea..00000000
--- a/subprojects/libhandy
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b6ff87ea07c69171aa7c743d8c2740527b525271
diff --git a/test/client/composer/composer-web-view-test.vala b/test/client/composer/composer-web-view-test.vala
index 64828f04..97c2af29 100644
--- a/test/client/composer/composer-web-view-test.vala
+++ b/test/client/composer/composer-web-view-test.vala
@@ -35,15 +35,20 @@ public class Composer.WebViewTest : Components.WebViewTestCase
}
public void edit_context() throws Error {
- assert(!(new WebView.EditContext("0,,,").is_link));
- assert(new WebView.EditContext("1,,,").is_link);
- assert(new WebView.EditContext("1,url,,").link_url == "url");
+ assert(!(new WebView.EditContext("0;;;;").is_link));
+ assert(new WebView.EditContext("1;;;;").is_link);
+ assert(new WebView.EditContext("1;url;;;").link_url == "url");
- assert(new WebView.EditContext("0,,Helvetica,").font_family == "sans");
- assert(new WebView.EditContext("0,,Times New Roman,").font_family == "serif");
- assert(new WebView.EditContext("0,,Courier,").font_family == "monospace");
+ assert(new WebView.EditContext("0;;Helvetica;;").font_family == "sans");
+ assert(new WebView.EditContext("0;;Times New Roman;;").font_family == "serif");
+ assert(new WebView.EditContext("0;;Courier;;").font_family == "monospace");
- assert(new WebView.EditContext("0,,,12").font_size == 12);
+ assert(new WebView.EditContext("0;;;12;").font_size == 12);
+
+ assert(new WebView.EditContext("0;;;;rgb(0, 0, 0)").font_color == Util.Gtk.rgba(0, 0, 0, 1));
+ assert(new WebView.EditContext("0;;;;rgb(255, 0, 0)").font_color == Util.Gtk.rgba(1, 0, 0, 1));
+ assert(new WebView.EditContext("0;;;;rgb(0, 255, 0)").font_color == Util.Gtk.rgba(0, 1, 0, 1));
+ assert(new WebView.EditContext("0;;;;rgb(0, 0, 255)").font_color == Util.Gtk.rgba(0, 0, 1, 1));
}
public void get_html() throws GLib.Error {
diff --git a/test/js/composer-page-state-test.vala b/test/js/composer-page-state-test.vala
index dfb8566c..6228cc68 100644
--- a/test/js/composer-page-state-test.vala
+++ b/test/js/composer-page-state-test.vala
@@ -127,7 +127,7 @@ class Composer.PageStateTest : Components.WebViewTestCase {
Util.JS.to_string(
run_javascript(@"new EditContext(document.getElementById('test')).encode()")
.get_js_value()
- ).has_prefix("1,url,"));
+ ).has_prefix("1;url;"));
} catch (Util.JS.Error err) {
print("Util.JS.Error: %s\n", err.message);
assert_not_reached();
@@ -138,7 +138,7 @@ class Composer.PageStateTest : Components.WebViewTestCase {
}
public void edit_context_font() throws Error {
- string html = "para
";
+ string html = "para
";
load_body_fixture(html);
try {
@@ -146,7 +146,7 @@ class Composer.PageStateTest : Components.WebViewTestCase {
Util.JS.to_string(
run_javascript(@"new EditContext(document.getElementById('test')).encode()")
.get_js_value()
- ) == "0,,Comic Sans,144");
+ ) == "0;;Comic Sans;144;rgb(255, 127, 1)");
} catch (Util.JS.Error err) {
print("Util.JS.Error: %s\n", err.message);
assert_not_reached();
diff --git a/ui/composer-headerbar.ui b/ui/composer-headerbar.ui
index 930854f0..2e2501d0 100644
--- a/ui/composer-headerbar.ui
+++ b/ui/composer-headerbar.ui
@@ -5,6 +5,11 @@
+