...
 
Commits (30)
version 3.6.2
-------------
Bugs fixed:
* Updated links to wiki page (#795126)
* Desktop background: fixed the way to obtain the monitor geometry.
* Recognize the asf mime type as a video format.
* Image loader: fixed memory leak when the operation was cancelled.
* Avoid flickering when scaling the image takes some time.
* Image navigator: fixed popup positioning.
* Do not crash when loading broken jpeg images.
* Preferences: fixed crash when setting the current location as default.
New or updated application translations:
* Dutch (Paul Matthijsse)
* French (Claude Paroz)
* Icelandic (Sveinn í Felli)
New or updated manual translations:
* Dutch (Paul Matthijsse)
* es (Daniel Mustieles)
* French (Claude Paroz)
version 3.6.1
-------------
......
m4_define([gthumb_major_version], [3])
m4_define([gthumb_minor_version], [6])
m4_define([gthumb_micro_version], [1])
m4_define([gthumb_micro_version], [2])
m4_define([gthumb_version],
[gthumb_major_version.gthumb_minor_version.gthumb_micro_version])
m4_define([gthumb_api_version],
......
......@@ -48,34 +48,28 @@ static void
fatal_error_handler (j_common_ptr cinfo)
{
struct error_handler_data *errmgr;
char buffer[JMSG_LENGTH_MAX];
errmgr = (struct error_handler_data *) cinfo->err;
if ((errmgr->error != NULL) && (*errmgr->error == NULL)) {
char buffer[JMSG_LENGTH_MAX];
/* Create the message */
(* cinfo->err->format_message) (cinfo, buffer);
/* Create the message */
(* cinfo->err->format_message) (cinfo, buffer);
/* broken check for *error == NULL for robustness against
* crappy JPEG library
*/
if (errmgr->error && *errmgr->error == NULL) {
g_set_error (errmgr->error,
GDK_PIXBUF_ERROR,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
g_set_error (errmgr->error,
GDK_PIXBUF_ERROR,
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
_("Error interpreting JPEG image file: %s"),
buffer);
}
siglongjmp (errmgr->setjmp_buffer, 1);
g_assert_not_reached ();
buffer);
siglongjmp (errmgr->setjmp_buffer, 1);
}
}
static void
output_message_handler (j_common_ptr cinfo)
{
/* This method keeps libjpeg from dumping crap to stderr */
/* This method keeps libjpeg from dumping text to stderr */
/* do nothing */
}
......
......@@ -521,7 +521,7 @@ new_library_dialog_response_cb (GtkWidget *dialog,
file_source = gth_main_get_file_source (parent);
gio_parent = gth_file_source_to_gio_file (file_source, parent);
gio_file = _g_directory_create_unique (gio_parent, name, "", &error);
gio_file = g_file_get_child_for_display_name (gio_parent, name, &error);
if ((gio_file != NULL) && g_file_make_directory (gio_file, NULL, &error)) {
GFile *file;
GList *list;
......
......@@ -1318,11 +1318,11 @@ static void
remove_from_catalog_end (GError *error,
RemoveFromCatalogData *data)
{
if (error != NULL)
if ((data->catalog != NULL) && (error != NULL))
_gtk_error_dialog_from_gerror_show (data->parent, _("Could not remove the files from the catalog"), error);
g_object_unref (data->catalog);
g_object_unref (data->gio_file);
_g_object_unref (data->catalog);
_g_object_unref (data->gio_file);
_g_object_list_unref (data->file_list);
g_free (data);
}
......@@ -1416,6 +1416,7 @@ gth_catalog_manager_remove_files (GtkWindow *parent,
data->file_list = _g_file_list_dup (file_list);
data->gio_file = gth_main_get_gio_file (location->file);
data->notify = notify;
data->catalog = NULL;
_g_file_load_async (data->gio_file,
G_PRIORITY_DEFAULT,
......
......@@ -354,6 +354,7 @@ add_themes_from_dir (DialogData *data,
g_free (buffer);
g_object_unref (file);
g_object_unref (file_info);
continue;
}
theme = gth_contact_sheet_theme_new_from_key_file (key_file);
......
......@@ -123,9 +123,12 @@ saver_completed_cb (GthTask *task,
else {
for (scan = data->file_list; scan; scan = scan->next) {
GthFileData *file_data = scan->data;
GFile *parent;
GList *files;
parent = g_file_get_parent (file_data->file);
files = g_list_prepend (NULL, g_object_ref (file_data->file));
gth_monitor_folder_changed (monitor, parent, files, GTH_MONITOR_EVENT_CHANGED);
gth_monitor_metadata_changed (monitor, file_data);
_g_object_list_unref (files);
......
......@@ -197,7 +197,7 @@ preview_checkbutton_toggled_cb (GtkToggleButton *toggle_button,
static void
preview_site_allocate_cb (GtkWidget *widget,
preview_size_allocate_cb (GtkWidget *widget,
GdkRectangle *allocation,
gpointer user_data)
{
......@@ -283,11 +283,9 @@ gth_file_tool_sharpen_get_options (GthFileTool *base)
self);
g_signal_connect (self->priv->preview,
"size-allocate",
G_CALLBACK (preview_site_allocate_cb),
G_CALLBACK (preview_size_allocate_cb),
self);
cairo_surface_destroy (source);
return options;
}
......
......@@ -186,10 +186,18 @@ jpegtran_internal (struct jpeg_decompress_struct *srcinfo,
}
transformoption.transform = transform;
transformoption.perfect = (mcu_action == JPEG_MCU_ACTION_ABORT);
transformoption.trim = (mcu_action == JPEG_MCU_ACTION_TRIM);
transformoption.force_grayscale = FALSE;
#if JPEG_LIB_VERSION >= 80
transformoption.crop = 0;
transformoption.crop = FALSE;
transformoption.crop_width_set = FALSE;
transformoption.crop_height_set = FALSE;
transformoption.crop_xoffset_set = FALSE;
transformoption.crop_yoffset_set = FALSE;
#endif
#ifdef LIBJPEG_TURBO_VERSION
transformoption.slow_hflip = FALSE;
#endif
/* Enable saving of extra markers that we want to copy */
......@@ -207,7 +215,7 @@ jpegtran_internal (struct jpeg_decompress_struct *srcinfo,
transform))
{
if (error != NULL)
g_set_error (error, JPEG_ERROR, JPEG_ERROR_MCU, "MCU Error");
g_set_error (error, JPEG_ERROR, JPEG_ERROR_MCU, "MCU Error");
return FALSE;
}
......
......@@ -52,6 +52,7 @@ browser_data_free (BrowserData *data)
g_object_unref (data->browser_settings);
g_object_unref (data->messages_settings);
g_object_unref (data->builder);
g_object_unref (data->browser);
g_free (data);
}
......@@ -137,6 +138,7 @@ general__dlg_preferences_construct_cb (GtkWidget *dialog,
GthFileSource *file_source;
data = g_new0 (BrowserData, 1);
data->browser = g_object_ref (browser);
data->builder = g_object_ref (dialog_builder);
data->general_settings = g_settings_new (GTHUMB_GENERAL_SCHEMA);
data->browser_settings = g_settings_new (GTHUMB_BROWSER_SCHEMA);
......
......@@ -3142,6 +3142,7 @@ _g_mime_type_is_video (const char *mime_type)
return (g_content_type_is_a (mime_type, "video/*")
|| (strcmp (mime_type, "application/ogg") == 0)
|| (strcmp (mime_type, "application/vnd.ms-asf") == 0)
|| (strcmp (mime_type, "application/vnd.rn-realmedia") == 0));
}
......
......@@ -158,7 +158,7 @@ gth_application_activate_about (GSimpleAction *action,
"translator-credits", _("translator-credits"),
"license", license_text,
"wrap-license", TRUE,
"website", "http://live.gnome.org/Apps/gthumb",
"website", "https://wiki.gnome.org/Apps/Gthumb",
(logo != NULL ? "logo" : NULL), logo,
NULL);
......
......@@ -233,6 +233,7 @@ load_image_thread (GSimpleAsyncResult *result,
}
if (g_cancellable_is_cancelled (cancellable)) {
_g_clear_object (&image);
g_clear_error (&error);
g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_CANCELLED, "");
}
......
......@@ -46,6 +46,7 @@ struct _GthImageNavigatorPrivate {
GtkWidget *vscrollbar;
GtkWidget *hscrollbar;
GtkWidget *navigator_event_area;
gpointer popup;
gboolean automatic_scrollbars;
gboolean hscrollbar_visible;
gboolean vscrollbar_visible;
......@@ -328,15 +329,27 @@ gth_image_navigator_class_init (GthImageNavigatorClass *klass)
typedef struct {
GthImageViewer *viewer;
GtkWidget *navigator;
GtkWidget *popup_win;
GtkWidget *overview;
gulong event_id;
gpointer *weak_pointer;
double x_root, y_root;
GdkRectangle monitor;
gboolean window_moved;
} NavigatorPopup;
static void
navigator_popup_close (NavigatorPopup *nav_popup)
{
if (nav_popup->event_id != 0) {
g_signal_handler_disconnect (nav_popup->popup_win, nav_popup->event_id);
nav_popup->event_id = 0;
}
gtk_widget_destroy (nav_popup->popup_win);
if (nav_popup->weak_pointer != NULL)
*nav_popup->weak_pointer = NULL;
g_free (nav_popup);
}
......@@ -355,8 +368,8 @@ popup_window_event_cb (GtkWidget *widget,
case GDK_MOTION_NOTIFY:
gtk_widget_event (nav_popup->overview, event);
gtk_widget_queue_draw (nav_popup->overview);
return TRUE;
gtk_widget_queue_draw (nav_popup->navigator);
return FALSE;
case GDK_KEY_PRESS:
switch (event->key.keyval) {
......@@ -393,6 +406,44 @@ popup_window_event_cb (GtkWidget *widget,
}
static void
overview_size_allocate_cb (GtkWidget *widget,
GdkRectangle *allocation,
gpointer user_data)
{
NavigatorPopup *nav_popup = user_data;
gboolean has_preview;
int popup_x, popup_y;
int popup_width, popup_height;
cairo_rectangle_int_t visible_area;
if (nav_popup->window_moved)
return;
has_preview = gth_image_overview_has_preview (GTH_IMAGE_OVERVIEW (nav_popup->overview));
gth_image_overview_get_size (GTH_IMAGE_OVERVIEW (nav_popup->overview),
&popup_width,
&popup_height);
gth_image_overview_get_visible_area (GTH_IMAGE_OVERVIEW (nav_popup->overview),
&visible_area.x,
&visible_area.y,
&visible_area.width,
&visible_area.height);
popup_x = MIN (nav_popup->x_root - visible_area.x - POPUP_BORDER - visible_area.width / 2,
nav_popup->monitor.width - popup_width - POPUP_BORDER_2);
popup_y = MIN (nav_popup->y_root - visible_area.y - POPUP_BORDER - visible_area.height / 2,
nav_popup->monitor.height - popup_height - POPUP_BORDER_2);
gtk_window_move (GTK_WINDOW (nav_popup->popup_win),
popup_x,
popup_y);
nav_popup->window_moved = has_preview;
}
static void
navigator_event_area_button_press_event_cb (GtkWidget *widget,
GdkEventButton *event,
......@@ -402,22 +453,27 @@ navigator_event_area_button_press_event_cb (GtkWidget *widget,
NavigatorPopup *nav_popup;
GtkWidget *out_frame;
GtkWidget *in_frame;
int popup_x, popup_y;
int popup_width, popup_height;
cairo_rectangle_int_t visible_area;
if ((self->priv->viewer == NULL) || gth_image_viewer_is_void (GTH_IMAGE_VIEWER (self->priv->viewer)))
return;
if (self->priv->popup != NULL)
return;
/* create the popup and its content */
nav_popup = g_new0 (NavigatorPopup, 1);
self->priv->popup = nav_popup = g_new0 (NavigatorPopup, 1);
nav_popup->weak_pointer = &self->priv->popup;
nav_popup->navigator = GTK_WIDGET (self);
nav_popup->viewer = GTH_IMAGE_VIEWER (self->priv->viewer);
nav_popup->popup_win = gtk_window_new (GTK_WINDOW_POPUP);
g_signal_connect (G_OBJECT (nav_popup->popup_win),
"event",
G_CALLBACK (popup_window_event_cb),
nav_popup);
nav_popup->event_id = g_signal_connect (G_OBJECT (nav_popup->popup_win),
"event",
G_CALLBACK (popup_window_event_cb),
nav_popup);
nav_popup->x_root = event->x_root;
nav_popup->y_root = event->y_root;
nav_popup->window_moved = FALSE;
gtk_window_set_wmclass (GTK_WINDOW (nav_popup->popup_win), "", "gthumb_navigator");
out_frame = gtk_frame_new (NULL);
......@@ -425,7 +481,7 @@ navigator_event_area_button_press_event_cb (GtkWidget *widget,
gtk_container_add (GTK_CONTAINER (nav_popup->popup_win), out_frame);
in_frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (in_frame), GTK_SHADOW_IN);
gtk_frame_set_shadow_type (GTK_FRAME (in_frame), GTK_SHADOW_NONE);
gtk_container_add (GTK_CONTAINER (out_frame), in_frame);
nav_popup->overview = gth_image_overview_new (GTH_IMAGE_VIEWER (self->priv->viewer));
......@@ -433,24 +489,11 @@ navigator_event_area_button_press_event_cb (GtkWidget *widget,
/* show the popup */
gth_image_overview_get_size (GTH_IMAGE_OVERVIEW (nav_popup->overview),
&popup_width,
&popup_height);
gth_image_overview_get_visible_area (GTH_IMAGE_OVERVIEW (nav_popup->overview),
&visible_area.x,
&visible_area.y,
&visible_area.width,
&visible_area.height);
popup_x = MIN (event->x_root - visible_area.x - POPUP_BORDER - visible_area.width / 2,
gdk_screen_width () - popup_width - POPUP_BORDER_2);
popup_y = MIN (event->y_root - visible_area.y - POPUP_BORDER - visible_area.height / 2,
gdk_screen_height () - popup_height - POPUP_BORDER_2);
gtk_window_move (GTK_WINDOW (nav_popup->popup_win),
popup_x,
popup_y);
gtk_window_set_default_size (GTK_WINDOW (nav_popup->popup_win),
popup_width + POPUP_BORDER_2,
popup_height + POPUP_BORDER_2);
_gtk_widget_get_monitor_geometry (widget, &nav_popup->monitor);
g_signal_connect (nav_popup->overview,
"size-allocate",
G_CALLBACK (overview_size_allocate_cb),
nav_popup);
gtk_widget_show_all (nav_popup->popup_win);
gth_image_overview_activate_scrolling (GTH_IMAGE_OVERVIEW (nav_popup->overview), TRUE, event);
......
......@@ -33,6 +33,7 @@
#define IMAGE_BORDER 3.0
#define VISIBLE_AREA_BORDER 2.0
#define MAX_IMAGE_SIZE (MAX_ALLOCATION_SIZE - (IMAGE_BORDER * 2))
#define DEFAULT_PREVIEW_SIZE 50
/* Properties */
......@@ -258,8 +259,11 @@ _gth_image_overview_scale_after (GthAsyncTask *task,
if (overview->priv->viewer != NULL) {
_gth_image_overview_update_zoom_info (overview);
_cairo_clear_surface (&overview->priv->preview);
if (scale_data->scaled != NULL)
if (scale_data->scaled != NULL) {
if (overview->priv->preview != NULL)
cairo_surface_destroy (overview->priv->preview);
overview->priv->preview = cairo_surface_reference (scale_data->scaled);
}
gtk_widget_queue_resize (GTK_WIDGET (overview));
}
......@@ -285,15 +289,14 @@ _gth_image_overview_update_preview (GthImageOverview *self)
self->priv->update_preview = FALSE;
cairo_surface_destroy (self->priv->preview);
self->priv->preview = NULL;
self->priv->preview_width = 50;
self->priv->preview_height = 50;
self->priv->visible_area.width = 0;
self->priv->visible_area.height = 0;
image = gth_image_viewer_get_current_image (self->priv->viewer);
if (image == NULL) {
cairo_surface_destroy (self->priv->preview);
self->priv->preview = NULL;
self->priv->preview_width = DEFAULT_PREVIEW_SIZE;
self->priv->preview_height = DEFAULT_PREVIEW_SIZE;
self->priv->visible_area.width = 0;
self->priv->visible_area.height = 0;
gtk_widget_queue_draw (GTK_WIDGET (self));
return;
}
......@@ -807,6 +810,8 @@ gth_image_overview_init (GthImageOverview *self)
self->priv = gth_image_overview_get_instance_private (self);
self->priv->viewer = NULL;
self->priv->preview = NULL;
self->priv->preview_width = DEFAULT_PREVIEW_SIZE;
self->priv->preview_height = DEFAULT_PREVIEW_SIZE;
self->priv->visible_area.width = 0;
self->priv->visible_area.height = 0;
self->priv->zoom_factor = 1.0;
......@@ -993,3 +998,10 @@ gth_image_overview_get_scrolling_is_active (GthImageOverview *self)
{
return self->priv->scrolling_active;
}
gboolean
gth_image_overview_has_preview (GthImageOverview *self)
{
return self->priv->preview != NULL;
}
......@@ -62,6 +62,7 @@ void gth_image_overview_activate_scrolling (GthImageOverview *self,
GdkEventButton *event);
gboolean gth_image_overview_get_scrolling_is_active
(GthImageOverview *self);
gboolean gth_image_overview_has_preview (GthImageOverview *self);
G_END_DECLS
......
......@@ -1562,6 +1562,16 @@ selection_is_valid (GthImageSelector *self)
}
static void
update_selection (GthImageSelector *self)
{
cairo_rectangle_int_t selection;
gth_image_selector_get_selection (self, &selection);
set_selection (self, selection, TRUE);
}
static void
gth_image_selector_image_changed (GthImageViewerTool *base)
{
......@@ -1587,17 +1597,15 @@ gth_image_selector_image_changed (GthImageViewerTool *base)
if (! selection_is_valid (self))
init_selection (self);
else
update_selection (self);
}
static void
gth_image_selector_zoom_changed (GthImageViewerTool *base)
{
GthImageSelector *self = GTH_IMAGE_SELECTOR (base);
cairo_rectangle_int_t selection;
gth_image_selector_get_selection (self, &selection);
set_selection (self, selection, TRUE);
update_selection (GTH_IMAGE_SELECTOR (base));
}
......
......@@ -713,8 +713,10 @@ gth_location_chooser_set_show_entry_points (GthLocationChooser *self,
entry_points_changed_cb (NULL, self);
}
else {
if (self->priv->entry_points_changed_id != 0)
if (self->priv->entry_points_changed_id != 0) {
g_source_remove (self->priv->entry_points_changed_id);
self->priv->entry_points_changed_id = 0;
}
clear_entry_point_list (self);
}
......
......@@ -26,6 +26,7 @@
#include "gth-main.h"
#include "gth-tags-entry.h"
#include "gth-tags-file.h"
#include "gtk-utils.h"
#define EXPANDED_LIST_HEIGHT 160
......@@ -1005,9 +1006,7 @@ popup_window_show (GthTagsEntry *self)
int y;
GtkAllocation allocation;
int selector_height;
GdkScreen *screen;
gint monitor_num;
cairo_rectangle_int_t monitor;
GdkRectangle monitor;
GdkDevice *device;
GdkDevice *pointer;
GdkDevice *keyboard;
......@@ -1022,10 +1021,7 @@ popup_window_show (GthTagsEntry *self)
popup_req.width = allocation.width;
popup_req.height = POPUP_WINDOW_HEIGHT;
screen = gtk_widget_get_screen (GTK_WIDGET (self));
monitor_num = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET (self)));
gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
_gtk_widget_get_monitor_geometry (GTK_WIDGET (self), &monitor);
if (x < monitor.x)
x = monitor.x;
else if (x + popup_req.width > monitor.x + monitor.width)
......
......@@ -28,6 +28,7 @@
#include <gtk/gtk.h>
#include "glib-utils.h"
#include "gth-time-selector.h"
#include "gtk-utils.h"
enum {
......@@ -236,9 +237,7 @@ show_calendar_popup (GthTimeSelector *self)
int y;
GtkAllocation allocation;
int selector_height;
GdkScreen *screen;
gint monitor_num;
cairo_rectangle_int_t monitor;
GdkRectangle monitor;
GdkDevice *device;
GdkDevice *pointer;
GdkDevice *keyboard;
......@@ -253,10 +252,7 @@ show_calendar_popup (GthTimeSelector *self)
y += allocation.y;
selector_height = allocation.height;
screen = gtk_widget_get_screen (GTK_WIDGET (self));
monitor_num = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET (self)));
gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
_gtk_widget_get_monitor_geometry (GTK_WIDGET (self), &monitor);
if (x < monitor.x)
x = monitor.x;
else if (x + popup_req.width > monitor.x + monitor.width)
......
......@@ -1223,6 +1223,27 @@ _gtk_window_get_monitor_info (GtkWindow *window,
}
void
_gtk_widget_get_monitor_geometry (GtkWidget *widget,
GdkRectangle *geometry)
{
GdkScreen *screen;
int monitor_num;
cairo_rectangle_int_t monitor;
screen = gtk_widget_get_screen (widget);
monitor_num = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (widget));
gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
if (geometry != NULL) {
geometry->x = monitor.x;
geometry->y = monitor.y;
geometry->width = monitor.width;
geometry->height = monitor.height;
}
}
GdkDevice *
_gtk_widget_get_client_pointer (GtkWidget *widget)
{
......
......@@ -154,6 +154,8 @@ gboolean _gtk_window_get_monitor_info (GtkWindow *window,
GdkRectangle *geometry,
int *number,
char **name);
void _gtk_widget_get_monitor_geometry (GtkWidget *widget,
GdkRectangle *geometry);
GdkDevice * _gtk_widget_get_client_pointer (GtkWidget *widget);
void _gtk_list_box_add_separator (GtkListBox *list_box);
gboolean _gtk_settings_get_dialogs_use_header (void);
......
......@@ -50,4 +50,4 @@ HELP_MEDIA = \
EXTRA_DIST = album-theme-format.txt
HELP_LINGUAS = cs de el es eu fr hu oc sl sv zh_CN
HELP_LINGUAS = cs de el es eu fr hu nl oc sl sv zh_CN
......@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gthumb.userguide.master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-01 09:27+0000\n"
"POT-Creation-Date: 2018-04-17 07:02+0000\n"
"PO-Revision-Date: 2017-09-12 09:32+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n"
......@@ -308,12 +308,12 @@ msgid "Exif::Photo::Sharpness"
msgstr "Exif::Photo::Sharpness"
#. (itstool) path: page/title
#: C/strftime.page:6
#: C/strftime.page:8
msgid "Date/Time Format Codes"
msgstr "Códigos de formato de fecha/hora"
#. (itstool) path: page/p
#: C/strftime.page:8
#: C/strftime.page:10
msgid ""
"This is a summary of standard date/time codes that may be used in format "
"strings:"
......@@ -322,93 +322,53 @@ msgstr ""
"cadenas de formato:"
#. (itstool) path: table/title
#: C/strftime.page:12
#: C/strftime.page:14
msgid "Valid format codes for custom subfolders"
msgstr "Códigos de formato válidos para subcarpetas personalizadas"
#. (itstool) path: td/p
#: C/strftime.page:15
msgid "%a"
msgstr "%a"
#. (itstool) path: td/p
#: C/strftime.page:18
#: C/strftime.page:20
msgid "The abbreviated weekday name according to the current locale."
msgstr ""
"El día de la semana abreviado, de acuerdo con la configuración regional "
"actual."
#. (itstool) path: td/p
#: C/strftime.page:24
msgid "%A"
msgstr "%A"
#. (itstool) path: td/p
#: C/strftime.page:27
#: C/strftime.page:29
msgid "The full weekday name according to the current locale."
msgstr ""
"El día de la semana completo de acuerdo con la configuración regional actual."
#. (itstool) path: td/p
#: C/strftime.page:33
msgid "%b"
msgstr "%b"
#. (itstool) path: td/p
#: C/strftime.page:36
#: C/strftime.page:38
msgid "The abbreviated month name according to the current locale."
msgstr ""
"El nombre abreviado del mes, de acuerdo con la configuración regional actual."
#. (itstool) path: td/p
#: C/strftime.page:42
msgid "%B"
msgstr "%B"
#. (itstool) path: td/p
#: C/strftime.page:45
#: C/strftime.page:47
msgid "The full month name according to the current locale."
msgstr "El nombre del mes completo de acuerdo con la configuración regional."
#. (itstool) path: td/p
#: C/strftime.page:50
msgid "%c"
msgstr "%c"
#. (itstool) path: td/p
#: C/strftime.page:53
#: C/strftime.page:55
msgid "The preferred date and time representation for the current locale."
msgstr ""
"La representación favorita de la fecha y la hora de acuerdo con la "
"configuración regional."
#. (itstool) path: td/p
#: C/strftime.page:59
msgid "%C"
msgstr "%C"
#. (itstool) path: td/p
#: C/strftime.page:62
#: C/strftime.page:64
msgid "The century number (year/100) as a 2-digit integer."
msgstr "El número de siglo (año/100) como un entero de 2 dígitos."
#. (itstool) path: td/p
#: C/strftime.page:67
msgid "%d"
msgstr "%d"
#. (itstool) path: td/p
#: C/strftime.page:70
#: C/strftime.page:72
msgid "The day of the month as a decimal number (range 01 to 31)."
msgstr "El día del mes como un número decimal (rango de 01 a 31)."
#. (itstool) path: td/p
#: C/strftime.page:76
msgid "%D"
msgstr "%D"
#. (itstool) path: td/p
#: C/strftime.page:79
#: C/strftime.page:81
msgid ""
"Equivalent to %m/%d/%y. (Yecch -- for Americans only. Americans should note "
"that in other countries %d/%m/%y is rather common. This means that in "
......@@ -420,12 +380,7 @@ msgstr ""
"y no debería utilizarse.)"
#. (itstool) path: td/p
#: C/strftime.page:87
msgid "%e"
msgstr "%e"
#. (itstool) path: td/p
#: C/strftime.page:90
#: C/strftime.page:92
msgid ""
"Like %d, the day of the month as a decimal number, but a leading zero is "
"replaced by a space."
......@@ -434,32 +389,17 @@ msgstr ""
"izquierda se sustituye por un espacio."
#. (itstool) path: td/p
#: C/strftime.page:96
msgid "%E"
msgstr "%E"
#. (itstool) path: td/p
#: C/strftime.page:99 C/strftime.page:208
#: C/strftime.page:101 C/strftime.page:210
msgid "Modifier: use alternative format, see below."
msgstr "Modificador: use el formato alternativo, vea debajo."
#. (itstool) path: td/p
#: C/strftime.page:104
msgid "%F"
msgstr "%F"
#. (itstool) path: td/p
#: C/strftime.page:107
#: C/strftime.page:109
msgid "Equivalent to %Y-%m-%d (the ISO 8601 date format). (C99)"
msgstr "Equivalente a %Y-%m-%d (el formato de fecha de ISO 8601). (C99)"
#. (itstool) path: td/p
#: C/strftime.page:113
msgid "%G"
msgstr "%G"
#. (itstool) path: td/p
#: C/strftime.page:116
#: C/strftime.page:118
msgid ""
"The ISO 8601 year with century as a decimal number. The 4-digit year "
"corresponding to the ISO week number (see %V). This has the same format and "
......@@ -472,66 +412,36 @@ msgstr ""
"año anterior o siguiente, se utiliza ese año en su lugar."
#. (itstool) path: td/p
#: C/strftime.page:125
msgid "%g"
msgstr "%g"
#. (itstool) path: td/p
#: C/strftime.page:128
#: C/strftime.page:130
msgid "Like %G, but without century, i.e., with a 2-digit year (00-99)."
msgstr "Igual que %G, pero sin siglo, ej. con un año de dos dígitos (00-99)."
#. (itstool) path: td/p
#: C/strftime.page:134
msgid "%h"
msgstr "%h"
#. (itstool) path: td/p
#: C/strftime.page:137
#: C/strftime.page:139
msgid "Equivalent to %b."
msgstr "Equivalente a &b."
msgstr "Equivalente a %b."
#. (itstool) path: td/p
#: C/strftime.page:142
msgid "%H"
msgstr "%H"
#. (itstool) path: td/p
#: C/strftime.page:145
#: C/strftime.page:147
msgid "The hour as a decimal number using a 24-hour clock (range 00 to 23)."
msgstr ""
"La hora como un número decimal, utilizando un reloj de 24 horas (rango de 00 "
"a 23)."
#. (itstool) path: td/p
#: C/strftime.page:151
msgid "%I"
msgstr "%I"
#. (itstool) path: td/p
#: C/strftime.page:154
#: C/strftime.page:156
msgid "The hour as a decimal number using a 12-hour clock (range 01 to 12)."
msgstr ""
"La hora como un numero decimal, utilizando un reloj de 12 horas (rango de 01 "
"a 12)."
#. (itstool) path: td/p
#: C/strftime.page:160
msgid "%j"
msgstr "%j"
#. (itstool) path: td/p
#: C/strftime.page:163
#: C/strftime.page:165
msgid "The day of the year as a decimal number (range 001 to 366)."
msgstr "El día del año como un número decimal (rango de 001 a 366)."
#. (itstool) path: td/p
#: C/strftime.page:169
msgid "%k"
msgstr "%k"
#. (itstool) path: td/p
#: C/strftime.page:172
#: C/strftime.page:174
msgid ""
"The hour (24-hour clock) as a decimal number (range 0 to 23); single digits "
"are preceded by a blank. (See also %H.)"
......@@ -540,12 +450,7 @@ msgstr ""
"dígitos simples van precedidos por un espacio el blanco. (Vea también %H.)"
#. (itstool) path: td/p
#: C/strftime.page:179
msgid "%l"
msgstr "%l"
#. (itstool) path: td/p
#: C/strftime.page:182
#: C/strftime.page:184
msgid ""
"The hour (12-hour clock) as a decimal number (range 1 to 12); single digits "
"are preceded by a blank. (See also %I.)"
......@@ -554,37 +459,17 @@ msgstr ""
"dígitos simples están precedidos por un espacio en blanco. (Vea también %I.)"
#. (itstool) path: td/p
#: C/strftime.page:189
msgid "%m"
msgstr "%m"
#. (itstool) path: td/p
#: C/strftime.page:192
#: C/strftime.page:194
msgid "The month as a decimal number (range 01 to 12)."
msgstr "El mes como un número decimal (rango de 01 a 12)."
#. (itstool) path: td/p
#: C/strftime.page:197
msgid "%M"
msgstr "%M"
#. (itstool) path: td/p
#: C/strftime.page:200
#: C/strftime.page:202
msgid "The minute as a decimal number (range 00 to 59)."
msgstr "El minuto como un numero decimal (rango de 00 a 59)."
#. (itstool) path: td/p
#: C/strftime.page:205
msgid "%O"
msgstr "%O"
#. (itstool) path: td/p
#: C/strftime.page:213
msgid "%p"
msgstr "%p"
#. (itstool) path: td/p
#: C/strftime.page:216
#: C/strftime.page:218
msgid ""
"Either 'AM' or 'PM' according to the given time value, or the corresponding "
"strings for the current locale. Noon is treated as 'pm' and midnight as 'am'."
......@@ -594,12 +479,7 @@ msgstr ""
"«pm» y y medianoche como «am»."
#. (itstool) path: td/p
#: C/strftime.page:223
msgid "%P"
msgstr "%P"
#. (itstool) path: td/p
#: C/strftime.page:226
#: C/strftime.page:228
msgid ""
"Like %p but in lowercase: 'am' or 'pm' or a corresponding string for the "
"current locale."
......@@ -608,12 +488,7 @@ msgstr ""
"configuración regional actual."
#. (itstool) path: td/p
#: C/strftime.page:232
msgid "%r"
msgstr "%r"
#. (itstool) path: td/p
#: C/strftime.page:235
#: C/strftime.page:237
msgid ""
"The time in a.m. or p.m. notation. In the POSIX locale this is equivalent to "
"'%I:%M:%S %p'."
......@@ -622,12 +497,7 @@ msgstr ""
"equivalente a «%I:%M:%S %p»."
#. (itstool) path: td/p
#: C/strftime.page:241
msgid "%R"
msgstr "%R"
#. (itstool) path: td/p
#: C/strftime.page:244
#: C/strftime.page:246
msgid ""
"The time in 24-hour notation (%H:%M). For a version including the seconds, "
"see %T below."
......@@ -636,12 +506,7 @@ msgstr ""
"segundos, vea %T más abajo."
#. (itstool) path: td/p
#: C/strftime.page:250
msgid "%s"
msgstr "%s"
#. (itstool) path: td/p
#: C/strftime.page:253
#: C/strftime.page:255
msgid ""
"The number of seconds since the Epoch, i.e., since 1970-01-01 00:00:00 UTC."
msgstr ""
......@@ -649,12 +514,7 @@ msgstr ""
"UTC."
#. (itstool) path: td/p
#: C/strftime.page:259
msgid "%S"
msgstr "%S"
#. (itstool) path: td/p
#: C/strftime.page:262
#: C/strftime.page:264
msgid ""
"The second as a decimal number (range 00 to 60). (The range is up to 60 to "
"allow for occasional leap seconds.)"
......@@ -663,22 +523,12 @@ msgstr ""
"superior a 60 para permitir saltos ocasionales en los segundos.)"
#. (itstool) path: td/p
#: C/strftime.page:269
msgid "%T"
msgstr "%T"
#. (itstool) path: td/p
#: C/strftime.page:272
#: C/strftime.page:274
msgid "The time in 24-hour notation (%H:%M:%S)."
msgstr "La hora en formato 24 horas (%H:%M:%S)."
#. (itstool) path: td/p
#: C/strftime.page:277
msgid "%u"
msgstr "%u"
#. (itstool) path: td/p
#: C/strftime.page:280
#: C/strftime.page:282
msgid ""
"The day of the week as a decimal number, range 1 to 7, Monday being 1. See "
"also %w."
......@@ -687,12 +537,7 @@ msgstr ""
"lunes. Vea también %w."
#. (itstool) path: td/p
#: C/strftime.page:286
msgid "%U"
msgstr "%U"
#. (itstool) path: td/p
#: C/strftime.page:289
#: C/strftime.page:291
msgid ""
"The week number of the current year as a decimal number, range 00 to 53, "
"starting with the first Sunday as the first day of week 01. See also %V and "
......@@ -703,12 +548,7 @@ msgstr ""
"%V y %W."
#. (itstool) path: td/p
#: C/strftime.page:296
msgid "%V"
msgstr "%V"
#. (itstool) path: td/p
#: C/strftime.page:299
#: C/strftime.page:301
msgid ""
"The ISO 8601:1988 week number of the current year as a decimal number, range "
"01 to 53, where week 1 is the first week that has at least 4 days in the "
......@@ -721,12 +561,7 @@ msgstr ""
"también %U y % W."
#. (itstool) path: td/p
#: C/strftime.page:308
msgid "%w"
msgstr "%w"
#. (itstool) path: td/p
#: C/strftime.page:311
#: C/strftime.page:313
msgid ""
"The day of the week as a decimal, range 0 to 6, Sunday being 0. See also %u."
msgstr ""
......@@ -734,12 +569,7 @@ msgstr ""
"Vea también %u."
#. (itstool) path: td/p
#: C/strftime.page:317
msgid "%W"
msgstr "%W"
#. (itstool) path: td/p
#: C/strftime.page:320
#: C/strftime.page:322
msgid ""
"The week number of the current year as a decimal number, range 00 to 53, "
"starting with the first Monday as the first day of week 01."
......@@ -748,12 +578,7 @@ msgstr ""
"comenzando con el primer lunes como primer día de la semana 01."
#. (itstool) path: td/p
#: C/strftime.page:327
msgid "%x"
msgstr "%x"
#. (itstool) path: td/p
#: C/strftime.page:330
#: C/strftime.page:332
msgid ""
"The preferred date representation for the current locale without the time."
msgstr ""
......@@ -761,12 +586,7 @@ msgstr ""
"actual, sin la hora."
#. (itstool) path: td/p
#: C/strftime.page:336
msgid "%X"
msgstr "%X"
#. (itstool) path: td/p
#: C/strftime.page:339
#: C/strftime.page:341
msgid ""
"The preferred time representation for the current locale without the date."
msgstr ""
......@@ -774,32 +594,17 @@ msgstr ""
"actual, sin la fecha."
#. (itstool) path: td/p
#: C/strftime.page:345
msgid "%y"
msgstr "%y"
#. (itstool) path: td/p
#: C/strftime.page:348
#: C/strftime.page:350
msgid "The year as a decimal number without a century (range 00 to 99)."
msgstr "El año como número decimal, excluyendo el siglo (rango de 00 a 99)."
#. (itstool) path: td/p
#: C/strftime.page:354
msgid "%Y"
msgstr "%Y"
#. (itstool) path: td/p
#: C/strftime.page:357
#: C/strftime.page:359
msgid "The year as a decimal number including the century."
msgstr "El año como número decimal, incluyendo el siglo."
#. (itstool) path: td/p
#: C/strftime.page:362
msgid "%z"
msgstr "%z"
#. (itstool) path: td/p
#: C/strftime.page:365
#: C/strftime.page:367
msgid ""
"The time-zone as hour offset from GMT. Required to emit RFC 822-conformant "
"dates (using \"%a, %d %b %Y %H:%M:%S %z\")."
......@@ -808,17 +613,12 @@ msgstr ""
"emitir fechas conformes a la RFC 822 (utilizando «%a, %d %b %Y %H:%M:%S %z»)."
#. (itstool) path: td/p
#: C/strftime.page:372
msgid "%Z"
msgstr "%Z"
#. (itstool) path: td/p
#: C/strftime.page:375
#: C/strftime.page:377
msgid "The time zone or name or abbreviation."
msgstr "La zona horaria o el nombre o la abreviatura."
#. (itstool) path: page/p
#: C/strftime.page:380
#: C/strftime.page:382
msgid ""
"Some conversion specifications can be modified by preceding the conversion "
"specifier character by the E or O modifier to indicate that an alternative "
......@@ -2375,25 +2175,21 @@ msgstr "Renombrar la imagen."
#. (itstool) path: td/p
#: C/shortcuts.page:119
#| msgid "<key>Esc</key>"
msgid "<key>c</key>"
msgstr "<key>c</key>"
#. (itstool) path: td/p
#: C/shortcuts.page:124
#| msgid "Add comments or metadata to an image."
msgid "Add comments or metadata to the selected images."
msgstr "Añadir comentarios o metadatos a las imágenes seleccionadas."
#. (itstool) path: td/p
#: C/shortcuts.page:129
#| msgid "<key>#</key>"
msgid "<key>t</key>"
msgstr "<key>t</key>"
#. (itstool) path: td/p
#: C/shortcuts.page:134
#| msgid "Assign tags to the selected images."
msgid "Add tags to the selected images."
msgstr "Añadir etiquetas a las imágenes seleccionadas."
......@@ -2745,7 +2541,6 @@ msgstr "Subir un nivel."
#. (itstool) path: td/p
#: C/shortcuts.page:519
#| msgid "<keyseq><key>Ctrl</key><key>t</key></keyseq>"
msgid "<keyseq><key>Ctrl</key><key>o</key></keyseq>"
msgstr "<keyseq><key>Ctrl</key><key>o</key></keyseq>"
......@@ -3369,6 +3164,126 @@ msgstr ""
"permiso para copiar, modificar y distribuir el código de ejemplo contenido "
"en este documento bajo los términos que usted elija, sin restricción."
#~ msgid "%a"
#~ msgstr "%a"
#~ msgid "%A"
#~ msgstr "%A"
#~ msgid "%b"
#~ msgstr "%b"
#~ msgid "%B"
#~ msgstr "%B"
#~ msgid "%c"
#~ msgstr "%c"
#~ msgid "%C"
#~ msgstr "%C"
#~ msgid "%d"
#~ msgstr "%d"
#~ msgid "%D"
#~ msgstr "%D"
#~ msgid "%e"
#~ msgstr "%e"
#~ msgid "%E"
#~ msgstr "%E"
#~ msgid "%F"
#~ msgstr "%F"
#~ msgid "%G"
#~ msgstr "%G"
#~ msgid "%g"
#~ msgstr "%g"
#~ msgid "%h"
#~ msgstr "%h"
#~ msgid "%H"
#~ msgstr "%H"
#~ msgid "%I"
#~ msgstr "%I"
#~ msgid "%j"
#~ msgstr "%j"
#~ msgid "%k"
#~ msgstr "%k"
#~ msgid "%l"
#~ msgstr "%l"
#~ msgid "%m"
#~ msgstr "%m"
#~ msgid "%M"
#~ msgstr "%M"
#~ msgid "%O"
#~ msgstr "%O"
#~ msgid "%p"
#~ msgstr "%p"
#~ msgid "%P"
#~ msgstr "%P"
#~ msgid "%r"
#~ msgstr "%r"
#~ msgid "%R"
#~ msgstr "%R"
#~ msgid "%s"
#~ msgstr "%s"
#~ msgid "%S"
#~ msgstr "%S"
#~ msgid "%T"
#~ msgstr "%T"
#~ msgid "%u"
#~ msgstr "%u"
#~ msgid "%U"
#~ msgstr "%U"
#~ msgid "%V"
#~ msgstr "%V"
#~ msgid "%w"
#~ msgstr "%w"
#~ msgid "%W"
#~ msgstr "%W"
#~ msgid "%x"
#~ msgstr "%x"
#~ msgid "%X"
#~ msgstr "%X"
#~ msgid "%y"
#~ msgstr "%y"
#~ msgid "%Y"
#~ msgstr "%Y"
#~ msgid "%z"
#~ msgstr "%z"
#~ msgid "%Z"
#~ msgstr "%Z"
#~ msgid "Shows/hides the thumbnails in the browser mode."
#~ msgstr "Muestra/oculta las miniaturas en el modo navegador."
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.