Compare commits

..

1 Commits

Author SHA1 Message Date
Matthias Clasen
bba183ee0c clipboard: file transfer portal support
Implement file-list <-> application/vnd.flatpak.file-list
serialization by talking to the file transfer portal.
2018-09-05 17:56:33 -04:00
23 changed files with 5866 additions and 7581 deletions

View File

@@ -16,7 +16,6 @@
</columns>
</object>
<object class="GtkApplicationWindow" id="window">
<style><class name="devel"/></style>
<property name="default-width">800</property>
<property name="default-height">600</property>
<property name="title">GTK+ Demo</property>

View File

@@ -6,7 +6,6 @@
<property name="child-model">store</property>
</object>
<template class="IconBrowserWindow" parent="GtkApplicationWindow">
<style><class name="devel"/></style>
<property name="title" translatable="yes">Icon Browser</property>
<property name="default-width">1024</property>
<property name="default-height">768</property>

View File

@@ -396,7 +396,6 @@ Suspendisse feugiat quam quis dolor accumsan cursus.</property>
</columns>
</object>
<object class="GtkApplicationWindow" id="window">
<style><class name="devel"/></style>
<property name="title">GTK+ Widget Factory</property>
<child type="titlebar">
<object class="GtkHeaderBar" id="headerbar1">
@@ -3584,4 +3583,4 @@ bad things might happen.</property>
</object>
</child>
</object>
</interface>
</interface>

View File

@@ -1054,6 +1054,7 @@ gdk_clipboard_write_serialize_done (GObject *content,
g_object_unref (task);
}
void
gdk_clipboard_write_async (GdkClipboard *clipboard,
const char *mime_type,
@@ -1076,6 +1077,7 @@ gdk_clipboard_write_async (GdkClipboard *clipboard,
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
g_return_if_fail (callback != NULL);
g_print ("clipboard write in %s\n", mime_type);
task = g_task_new (clipboard, cancellable, callback, user_data);
g_task_set_priority (task, io_priority);
g_task_set_source_tag (task, gdk_clipboard_write_async);
@@ -1232,6 +1234,7 @@ gdk_clipboard_set_content (GdkClipboard *clipboard,
formats = gdk_content_formats_new (NULL, 0);
}
g_print ("claiming clipboard for %s\n", gdk_content_formats_to_string (formats));
result = gdk_clipboard_claim (clipboard, formats, TRUE, provider);
gdk_content_formats_unref (formats);

View File

@@ -22,6 +22,7 @@
#include "gdkcontentdeserializer.h"
#include "gdkcontentformats.h"
#include "gfiletransferportal.h"
#include "gdktexture.h"
#include <gdk-pixbuf/gdk-pixbuf.h>
@@ -690,6 +691,93 @@ string_deserializer (GdkContentDeserializer *deserializer)
g_object_unref (filter);
}
static void
portal_finish (GObject *object,
GAsyncResult *result,
gpointer deserializer)
{
char **files = NULL;
GError *error = NULL;
GValue *value;
if (!file_transfer_portal_retrieve_files_finish (result, &files, &error))
{
gdk_content_deserializer_return_error (deserializer, error);
return;
}
value = gdk_content_deserializer_get_value (deserializer);
if (G_VALUE_HOLDS (value, G_TYPE_FILE))
{
if (files[0] != NULL)
g_value_take_object (value, g_file_new_for_path (files[0]));
}
else
{
GSList *l = NULL;
gsize i;
for (i = 0; files[i] != NULL; i++)
l = g_slist_prepend (l, g_file_new_for_path (files[i]));
g_value_take_boxed (value, g_slist_reverse (l));
}
g_strfreev (files);
gdk_content_deserializer_return_success (deserializer);
}
static void
portal_file_deserializer_finish (GObject *source,
GAsyncResult *result,
gpointer deserializer)
{
GOutputStream *stream = G_OUTPUT_STREAM (source);
GError *error = NULL;
gssize written;
char *key;
written = g_output_stream_splice_finish (stream, result, &error);
if (written < 0)
{
gdk_content_deserializer_return_error (deserializer, error);
return;
}
/* write terminating NULL */
if (!g_output_stream_write (stream, "", 1, NULL, &error))
{
gdk_content_deserializer_return_error (deserializer, error);
return;
}
key = g_memory_output_stream_steal_data (G_MEMORY_OUTPUT_STREAM (stream));
if (key == NULL)
{
deserialize_not_found (deserializer);
return;
}
file_transfer_portal_retrieve_files (key, portal_finish, deserializer);
gdk_content_deserializer_set_task_data (deserializer, key, g_free);
}
static void
portal_file_deserializer (GdkContentDeserializer *deserializer)
{
GOutputStream *output;
output = g_memory_output_stream_new_resizable ();
g_output_stream_splice_async (output,
gdk_content_deserializer_get_input_stream (deserializer),
G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE | G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET,
gdk_content_deserializer_get_priority (deserializer),
gdk_content_deserializer_get_cancellable (deserializer),
portal_file_deserializer_finish,
deserializer);
g_object_unref (output);
}
static void
file_uri_deserializer_finish (GObject *source,
GAsyncResult *result,
@@ -816,11 +904,21 @@ init (void)
g_slist_free (formats);
gdk_content_register_deserializer ("application/vnd.portal.filetransfer",
GDK_TYPE_FILE_LIST,
portal_file_deserializer,
NULL,
NULL);
gdk_content_register_deserializer ("text/uri-list",
GDK_TYPE_FILE_LIST,
file_uri_deserializer,
NULL,
NULL);
gdk_content_register_deserializer ("application/vnd.portal.filetransfer",
G_TYPE_FILE,
portal_file_deserializer,
NULL,
NULL);
gdk_content_register_deserializer ("text/uri-list",
G_TYPE_FILE,
file_uri_deserializer,

View File

@@ -23,6 +23,7 @@
#include "gdkcontentformats.h"
#include "gdkpixbuf.h"
#include "gfiletransferportal.h"
#include "gdktextureprivate.h"
#include <gdk-pixbuf/gdk-pixbuf.h>
@@ -701,6 +702,62 @@ file_serializer_finish (GObject *source,
gdk_content_serializer_return_success (serializer);
}
static void
portal_ready (GObject *object,
GAsyncResult *result,
gpointer serializer)
{
GError *error = NULL;
char *key;
if (!file_transfer_portal_register_files_finish (result, &key, &error))
{
gdk_content_serializer_return_error (serializer, error);
return;
}
g_output_stream_write_all_async (gdk_content_serializer_get_output_stream (serializer),
key,
strlen (key) + 1,
gdk_content_serializer_get_priority (serializer),
gdk_content_serializer_get_cancellable (serializer),
file_serializer_finish,
serializer);
gdk_content_serializer_set_task_data (serializer, key, g_free);
}
static void
portal_file_serializer (GdkContentSerializer *serializer)
{
GFile *file;
const GValue *value;
GPtrArray *files;
files = g_ptr_array_new_with_free_func (g_free);
value = gdk_content_serializer_get_value (serializer);
if (G_VALUE_HOLDS (value, G_TYPE_FILE))
{
file = g_value_get_object (gdk_content_serializer_get_value (serializer));
if (file)
g_ptr_array_add (files, g_file_get_path (file));
g_ptr_array_add (files, NULL);
}
else if (G_VALUE_HOLDS (value, GDK_TYPE_FILE_LIST))
{
GSList *l;
for (l = g_value_get_boxed (value); l; l = l->next)
g_ptr_array_add (files, g_file_get_path (l->data));
g_ptr_array_add (files, NULL);
}
file_transfer_portal_register_files ((const char **)files->pdata, TRUE, portal_ready, serializer);
gdk_content_serializer_set_task_data (serializer, files, (GDestroyNotify)g_ptr_array_unref);
}
static void
file_uri_serializer (GdkContentSerializer *serializer)
{
@@ -863,6 +920,11 @@ init (void)
g_slist_free (formats);
gdk_content_register_serializer (G_TYPE_FILE,
"application/vnd.portal.filetransfer",
portal_file_serializer,
NULL,
NULL);
gdk_content_register_serializer (G_TYPE_FILE,
"text/uri-list",
file_uri_serializer,
@@ -873,6 +935,11 @@ init (void)
file_text_serializer,
NULL,
NULL);
gdk_content_register_serializer (GDK_TYPE_FILE_LIST,
"application/vnd.portal.filetransfer",
portal_file_serializer,
NULL,
NULL);
gdk_content_register_serializer (GDK_TYPE_FILE_LIST,
"text/uri-list",
file_uri_serializer,

323
gdk/gfiletransferportal.c Normal file
View File

@@ -0,0 +1,323 @@
#include "config.h"
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <gio/gio.h>
#include <gio/gunixfdlist.h>
#include "gfiletransferportal.h"
static GDBusProxy *
ensure_file_transfer_portal (void)
{
static GDBusProxy *proxy = NULL;
if (proxy == NULL)
{
GError *error = NULL;
proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES
| G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS
| G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
NULL,
"org.freedesktop.portal.Documents",
"/org/freedesktop/portal/documents",
"org.freedesktop.portal.FileTransfer",
NULL, &error);
if (error)
{
g_warning ("Failed to get proxy: %s", error->message);
g_error_free (error);
}
}
if (proxy)
{
char *owner = g_dbus_proxy_get_name_owner (proxy);
if (owner)
{
g_free (owner);
return proxy;
}
}
return NULL;
}
typedef struct {
GTask *task;
const char **files;
int len;
int start;
} AddFileData;
static void add_files (GDBusProxy *proxy,
AddFileData *afd);
static void
add_files_done (GObject *object,
GAsyncResult *result,
gpointer data)
{
GDBusProxy *proxy = G_DBUS_PROXY (object);
AddFileData *afd = data;
GError *error = NULL;
GVariant *ret;
ret = g_dbus_proxy_call_with_unix_fd_list_finish (proxy, NULL, result, &error);
if (ret == NULL)
{
g_task_return_error (afd->task, error);
g_object_unref (afd->task);
g_free (afd);
return;
}
g_variant_unref (ret);
if (afd->start >= afd->len)
{
g_task_return_boolean (afd->task, TRUE);
g_object_unref (afd->task);
g_free (afd);
return;
}
add_files (proxy, afd);
}
/* We call AddFiles in chunks of 16 to avoid running into
* the per-message fd limit of the bus.
*/
static void
add_files (GDBusProxy *proxy,
AddFileData *afd)
{
GUnixFDList *fd_list;
GVariantBuilder fds;
int i;
char *key;
GVariantBuilder options;
g_variant_builder_init (&fds, G_VARIANT_TYPE ("ah"));
fd_list = g_unix_fd_list_new ();
for (i = 0; afd->files[afd->start + i]; i++)
{
int fd;
int fd_in;
GError *error = NULL;
if (i == 16)
break;
fd = open (afd->files[afd->start + i], O_PATH | O_CLOEXEC);
if (fd == -1)
{
g_task_return_new_error (afd->task, G_IO_ERROR, g_io_error_from_errno (errno),
"Failed to open %s", afd->files[afd->start + i]);
g_object_unref (afd->task);
g_free (afd);
g_object_unref (fd_list);
return;
}
fd_in = g_unix_fd_list_append (fd_list, fd, &error);
close (fd);
if (fd_in == -1)
{
g_task_return_error (afd->task, error);
g_object_unref (afd->task);
g_free (afd);
g_object_unref (fd_list);
return;
}
g_variant_builder_add (&fds, "h", fd_in);
}
afd->start += 16;
key = (char *)g_object_get_data (G_OBJECT (afd->task), "key");
g_variant_builder_init (&options, G_VARIANT_TYPE_VARDICT);
g_dbus_proxy_call_with_unix_fd_list (proxy,
"AddFiles",
g_variant_new ("(saha{sv})", key, &fds, &options),
0, -1,
fd_list,
NULL,
add_files_done, afd);
g_object_unref (fd_list);
}
static void
start_session_done (GObject *object,
GAsyncResult *result,
gpointer data)
{
GDBusProxy *proxy = G_DBUS_PROXY (object);
AddFileData *afd = data;
GError *error = NULL;
GVariant *ret;
const char *key;
ret = g_dbus_proxy_call_finish (proxy, result, &error);
if (ret == NULL)
{
g_task_return_error (afd->task, error);
g_object_unref (afd->task);
g_free (afd);
return;
}
g_variant_get (ret, "(&s)", &key);
g_object_set_data_full (G_OBJECT (afd->task), "key", g_strdup (key), g_free);
g_variant_unref (ret);
add_files (proxy, afd);
}
void
file_transfer_portal_register_files (const char **files,
gboolean writable,
GAsyncReadyCallback callback,
gpointer data)
{
GTask *task;
GDBusProxy *proxy;
AddFileData *afd;
GVariantBuilder options;
task = g_task_new (NULL, NULL, callback, data);
proxy = ensure_file_transfer_portal ();
if (proxy == NULL)
{
g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
"No portal found");
g_object_unref (task);
return;
}
afd = g_new (AddFileData, 1);
afd->task = task;
afd->files = files;
afd->len = g_strv_length ((char **)files);
afd->start = 0;
g_variant_builder_init (&options, G_VARIANT_TYPE_VARDICT);
g_variant_builder_add (&options, "{sv}", "writable", g_variant_new_boolean (writable));
g_variant_builder_add (&options, "{sv}", "autostop", g_variant_new_boolean (TRUE));
g_dbus_proxy_call (proxy, "StartTransfer",
g_variant_new ("(a{sv})", &options),
0, -1, NULL, start_session_done, afd);
}
gboolean
file_transfer_portal_register_files_finish (GAsyncResult *result,
char **out_key,
GError **error)
{
char *key;
GDBusProxy *proxy;
key = g_object_get_data (G_OBJECT (result), "key");
if (g_task_propagate_boolean (G_TASK (result), error))
{
*out_key = g_strdup (key);
return TRUE;
}
proxy = ensure_file_transfer_portal ();
g_dbus_proxy_call (proxy, "StopTransfer",
g_variant_new ("(s)", key),
0, -1, NULL, NULL, NULL);
return FALSE;
}
static void
retrieve_files_done (GObject *object,
GAsyncResult *result,
gpointer data)
{
GDBusProxy *proxy = G_DBUS_PROXY (object);
GTask *task = data;
GError *error = NULL;
GVariant *ret;
char **files;
ret = g_dbus_proxy_call_finish (proxy, result, &error);
if (ret == NULL)
{
g_task_return_error (task, error);
g_object_unref (task);
return;
}
g_variant_get (ret, "(^a&s)", &files);
g_object_set_data_full (G_OBJECT (task), "files", g_strdupv (files), (GDestroyNotify)g_strfreev);
g_variant_unref (ret);
g_task_return_boolean (task, TRUE);
}
void
file_transfer_portal_retrieve_files (const char *key,
GAsyncReadyCallback callback,
gpointer data)
{
GDBusProxy *proxy;
GTask *task;
GVariantBuilder options;
task = g_task_new (NULL, NULL, callback, data);
proxy = ensure_file_transfer_portal ();
if (proxy == NULL)
{
g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
"No portal found");
g_object_unref (task);
return;
}
g_variant_builder_init (&options, G_VARIANT_TYPE_VARDICT);
g_dbus_proxy_call (proxy,
"RetrieveFiles",
g_variant_new ("(sa{sv})", key, &options),
0, -1, NULL,
retrieve_files_done, task);
}
gboolean
file_transfer_portal_retrieve_files_finish (GAsyncResult *result,
char ***files,
GError **error)
{
if (g_task_propagate_boolean (G_TASK (result), error))
{
*files = g_strdupv (g_object_get_data (G_OBJECT (result), "files"));
return TRUE;
}
return FALSE;
}

15
gdk/gfiletransferportal.h Normal file
View File

@@ -0,0 +1,15 @@
void file_transfer_portal_register_files (const char **files,
gboolean writable,
GAsyncReadyCallback callback,
gpointer data);
gboolean file_transfer_portal_register_files_finish (GAsyncResult *result,
char **key,
GError **error);
void file_transfer_portal_retrieve_files (const char *key,
GAsyncReadyCallback callback,
gpointer data);
gboolean file_transfer_portal_retrieve_files_finish (GAsyncResult *result,
char ***files,
GError **error);

View File

@@ -19,6 +19,7 @@ gdk_public_sources = files([
'gdkdrawcontext.c',
'gdkdrop.c',
'gdkevents.c',
'gfiletransferportal.c',
'gdkframeclock.c',
'gdkframeclockidle.c',
'gdkframetimings.c',

View File

@@ -57,7 +57,7 @@ for f in get_files('gesture', '.symbolic.png'):
xml += '\n'
for f in get_files('ui', '.ui'):
xml += ' <file preprocess=\'xml-stripblanks,xml-preparse\'>ui/{0}</file>\n'.format(f)
xml += ' <file preprocess=\'xml-stripblanks\'>ui/{0}</file>\n'.format(f)
xml += '\n'

View File

@@ -1063,10 +1063,10 @@ gtk_button_box_new (GtkOrientation orientation)
* @widget: a #GtkButtonBox
* @child: a child of @widget
*
* Returns whether the child is exempted from homogeneous
* Returns whether the child is exempted from homogenous
* sizing.
*
* Returns: %TRUE if the child is not subject to homogeneous sizing
* Returns: %TRUE if the child is not subject to homogenous sizing
*/
gboolean
gtk_button_box_get_child_non_homogeneous (GtkButtonBox *widget,
@@ -1084,7 +1084,7 @@ gtk_button_box_get_child_non_homogeneous (GtkButtonBox *widget,
* @child: a child of @widget
* @non_homogeneous: the new value
*
* Sets whether the child is exempted from homogeneous sizing.
* Sets whether the child is exempted from homogeous sizing.
*/
void
gtk_button_box_set_child_non_homogeneous (GtkButtonBox *widget,

View File

@@ -1269,19 +1269,8 @@ _gtk_builder_parser_parse_buffer (GtkBuilder *builder,
G_MARKUP_TREAT_CDATA_AS_TEXT,
&data, NULL);
if (buffer[0] == 'G' &&
buffer[1] == 'M' &&
buffer[2] == 'U' &&
buffer[3] == 0)
{
if (!g_markup_parse_context_replay (data.ctx, buffer, length, error))
goto out;
}
else
{
if (!g_markup_parse_context_parse (data.ctx, buffer, length, error))
goto out;
}
if (!g_markup_parse_context_parse (data.ctx, buffer, length, error))
goto out;
_gtk_builder_finish (builder);
if (_gtk_builder_lookup_failed (builder, error))

View File

@@ -242,13 +242,9 @@ gtk_icon_helper_paintable_snapshot (GdkPaintable *paintable,
default:
{
double image_ratio = (double) width / height;
double ratio;
double ratio = gdk_paintable_get_intrinsic_aspect_ratio (self->paintable);
double x, y, w, h;
if (self->paintable == NULL)
break;
ratio = gdk_paintable_get_intrinsic_aspect_ratio (self->paintable);
if (ratio == 0)
{
w = width;
@@ -272,7 +268,7 @@ gtk_icon_helper_paintable_snapshot (GdkPaintable *paintable,
gtk_css_style_snapshot_icon_paintable (style,
snapshot,
self->paintable,
w, h,
width, height,
self->texture_is_symbolic);
gtk_snapshot_offset (snapshot, -x, -y);
}

View File

@@ -308,7 +308,7 @@ get_portal_path (GDBusConnection *connection,
if (sender[i] == '.')
sender[i] = '_';
path = g_strconcat (PORTAL_OBJECT_PATH, "/", kind, "/", sender, "/", *token, NULL);
path = g_strconcat (PORTAL_OBJECT_PATH, "/", kind, "/", sender, "/", token, NULL);
g_free (sender);

View File

@@ -60,16 +60,13 @@ gtk_render_node_paintable_paintable_snapshot (GdkPaintable *paintable,
&transform);
}
gtk_snapshot_push_clip (snapshot, &self->bounds);
gtk_snapshot_offset (snapshot, -self->bounds.origin.x, -self->bounds.origin.y);
gtk_snapshot_push_clip (snapshot, &self->bounds);
gtk_snapshot_append_node (snapshot, self->node);
//gtk_snapshot_append_color (snapshot, &(GdkRGBA) { 1, 0, 0, 1 }, &self->bounds);
gtk_snapshot_pop (snapshot);
gtk_snapshot_offset (snapshot, self->bounds.origin.x, self->bounds.origin.y);
gtk_snapshot_pop (snapshot);
if (needs_transform)
gtk_snapshot_pop (snapshot);

View File

@@ -686,10 +686,6 @@ window.csd > .titlebar:not(headerbar) { padding: 0; background-color: transparen
.titlebar:not(headerbar) > separator { background-color: #1b1f20; }
window.devel headerbar { background: transparent -gtk-icontheme("system-run-symbolic") 80% 0/128px 128px no-repeat, linear-gradient(to left, #2a4b6c 8%, #33393b 25%); color: rgba(238, 238, 236, 0.1); }
window.devel headerbar label { color: #eeeeec; }
/************ Pathbars * */
.path-bar button.text-button, .path-bar button.image-button, .path-bar button { padding-left: 4px; padding-right: 4px; }

View File

@@ -694,10 +694,6 @@ window.csd > .titlebar:not(headerbar) { padding: 0; background-color: transparen
.titlebar:not(headerbar) > separator { background-color: #b6b6b3; }
window.devel headerbar { background: transparent -gtk-icontheme("system-run-symbolic") 80% 0/128px 128px no-repeat, linear-gradient(to left, #99bce0 8%, #e8e8e7 25%); color: rgba(46, 52, 54, 0.1); }
window.devel headerbar label { color: #2e3436; }
/************ Pathbars * */
.path-bar button.text-button, .path-bar button.image-button, .path-bar button { padding-left: 4px; padding-right: 4px; }

View File

@@ -1040,7 +1040,7 @@ progressbar.vertical progress.pulse {
combobox entry {
margin-right: calc( -2ex - -gtk-win32-part-width(combobox, 6, 1));
background-image: -gtk-win32-theme-part(combobox, 4, 1);
background-image: -gtk-win32-theme-part(combobox, 4, 1));
}
combobox entry:hover {
background-image: -gtk-win32-theme-part(combobox, 4, 2);

File diff suppressed because it is too large Load Diff

View File

@@ -16,8 +16,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+-properties\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-31 17:25+0000\n"
"PO-Revision-Date: 2018-08-31 19:47+0200\n"
"POT-Creation-Date: 2018-07-29 13:14+0000\n"
"PO-Revision-Date: 2018-07-29 20:30+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@@ -422,7 +422,7 @@ msgid "The widget to be monitored for accelerator changes"
msgstr "Widżet monitorowana zmian skrótów"
#: gtk/gtkaccellabel.c:237 gtk/gtkbutton.c:226 gtk/gtkexpander.c:277
#: gtk/gtkframe.c:167 gtk/gtklabel.c:756 gtk/gtkmenuitem.c:632
#: gtk/gtkframe.c:167 gtk/gtklabel.c:756 gtk/gtkmenuitem.c:633
#: gtk/gtktoolbutton.c:212
msgid "Label"
msgstr "Etykieta"
@@ -432,12 +432,12 @@ msgid "The text displayed next to the accelerator"
msgstr "Tekst wyświetlany obok skrótu"
#: gtk/gtkaccellabel.c:244 gtk/gtkbutton.c:233 gtk/gtkexpander.c:285
#: gtk/gtklabel.c:777 gtk/gtkmenuitem.c:644 gtk/gtktoolbutton.c:219
#: gtk/gtklabel.c:777 gtk/gtkmenuitem.c:645 gtk/gtktoolbutton.c:219
msgid "Use underline"
msgstr "Użycie podkreślenia"
#: gtk/gtkaccellabel.c:245 gtk/gtkbutton.c:234 gtk/gtkexpander.c:286
#: gtk/gtklabel.c:778 gtk/gtkmenuitem.c:645
#: gtk/gtklabel.c:778 gtk/gtkmenuitem.c:646
msgid ""
"If set, an underline in the text indicates the next character should be used "
"for the mnemonic accelerator key"
@@ -470,11 +470,11 @@ msgstr "Wartość celu działania"
msgid "The parameter for action invocations"
msgstr "Parametr dla wywołań działania"
#: gtk/gtkactionbar.c:372 gtk/gtkbox.c:236 gtk/gtkheaderbar.c:1836
#: gtk/gtkactionbar.c:382 gtk/gtkbox.c:236 gtk/gtkheaderbar.c:1836
msgid "Pack type"
msgstr "Typ upakowania"
#: gtk/gtkactionbar.c:373 gtk/gtkbox.c:237 gtk/gtkheaderbar.c:1837
#: gtk/gtkactionbar.c:383 gtk/gtkbox.c:237 gtk/gtkheaderbar.c:1837
msgid ""
"A GtkPackType indicating whether the child is packed with reference to the "
"start or end of the parent"
@@ -482,22 +482,22 @@ msgstr ""
"Wartość GtkPackType określająca, czy element potomny ma być spakowany wraz "
"z odwołaniem do początku lub końca kontrolki nadrzędnej"
#: gtk/gtkactionbar.c:379 gtk/gtkbox.c:243 gtk/gtkheaderbar.c:1843
#: gtk/gtkactionbar.c:389 gtk/gtkbox.c:243 gtk/gtkheaderbar.c:1843
#: gtk/gtknotebook.c:774 gtk/gtkpaned.c:394 gtk/gtkpopover.c:1621
#: gtk/gtkpopovermenu.c:367 gtk/gtkstack.c:399
msgid "Position"
msgstr "Pozycja"
#: gtk/gtkactionbar.c:380 gtk/gtkbox.c:244 gtk/gtkheaderbar.c:1844
#: gtk/gtkactionbar.c:390 gtk/gtkbox.c:244 gtk/gtkheaderbar.c:1844
#: gtk/gtknotebook.c:775 gtk/gtkpopovermenu.c:368 gtk/gtkstack.c:400
msgid "The index of the child in the parent"
msgstr "Numer pozycji elementu potomnego w elemencie nadrzędnym"
#: gtk/gtkactionbar.c:386 gtk/gtkinfobar.c:352
#: gtk/gtkactionbar.c:396 gtk/gtkinfobar.c:352
msgid "Reveal"
msgstr "Ujawnianie"
#: gtk/gtkactionbar.c:387
#: gtk/gtkactionbar.c:397
msgid "Controls whether the action bar shows its contents or not"
msgstr "Kontroluje, czy pasek działań wyświetla swoją zawartość"
@@ -642,43 +642,35 @@ msgstr "Domyślny tekst widżetu"
msgid "The default text appearing when there are no applications"
msgstr "Domyślny tekst pojawiający się, kiedy nie ma żadnych programów"
#: gtk/gtkapplication.c:665
#: gtk/gtkapplication.c:659
msgid "Register session"
msgstr "Rejestracja sesji"
#: gtk/gtkapplication.c:666
#: gtk/gtkapplication.c:660
msgid "Register with the session manager"
msgstr "Rejestruje za pomocą menedżera sesji"
#: gtk/gtkapplication.c:683
msgid "Screensaver Active"
msgstr "Wygaszacz ekranu jest aktywny"
#: gtk/gtkapplication.c:684
msgid "Whether the screensaver is active"
msgstr "Określa, czy wygaszacz ekranu jest aktywny"
#: gtk/gtkapplication.c:690
#: gtk/gtkapplication.c:666
msgid "Application menu"
msgstr "Menu programu"
#: gtk/gtkapplication.c:691
#: gtk/gtkapplication.c:667
msgid "The GMenuModel for the application menu"
msgstr "GMenuModel dla menu programu"
#: gtk/gtkapplication.c:697
#: gtk/gtkapplication.c:673
msgid "Menubar"
msgstr "Pasek menu"
#: gtk/gtkapplication.c:698
#: gtk/gtkapplication.c:674
msgid "The GMenuModel for the menubar"
msgstr "GMenuModel dla paska menu"
#: gtk/gtkapplication.c:704
#: gtk/gtkapplication.c:680
msgid "Active window"
msgstr "Aktywne okno"
#: gtk/gtkapplication.c:705
#: gtk/gtkapplication.c:681
msgid "The window which most recently had focus"
msgstr "Ostatnie aktywne okno"
@@ -1210,7 +1202,7 @@ msgstr "Kolumna tekstowa"
msgid "A column in the data source model to get the strings from"
msgstr "Kolumna w modelu źródłowym danych, z której pobierane są napisy"
#: gtk/gtkcellrenderercombo.c:161 gtk/gtkcombobox.c:775
#: gtk/gtkcellrenderercombo.c:161 gtk/gtkcombobox.c:772
msgid "Has Entry"
msgstr "Ma wejście"
@@ -1258,7 +1250,7 @@ msgstr "Wartość GtkIconSize, która określa rozmiar rysowanej ikony"
msgid "The name of the icon from the icon theme"
msgstr "Nazwa ikony z motywu ikon"
#: gtk/gtkcellrendererpixbuf.c:215 gtk/gtkimage.c:211 gtk/gtkmodelbutton.c:940
#: gtk/gtkcellrendererpixbuf.c:215 gtk/gtkimage.c:211 gtk/gtkmodelbutton.c:964
#: gtk/gtkshortcutsshortcut.c:585 gtk/gtkwindow.c:915
msgid "Icon"
msgstr "Ikona"
@@ -1273,7 +1265,7 @@ msgstr "Wartość paska postępu"
#: gtk/gtkcellrendererprogress.c:152 gtk/gtkcellrenderertext.c:254
#: gtk/gtkentrybuffer.c:351 gtk/gtkentry.c:924 gtk/gtkmessagedialog.c:198
#: gtk/gtkmodelbutton.c:952 gtk/gtkprogressbar.c:213 gtk/gtkspinbutton.c:405
#: gtk/gtkmodelbutton.c:976 gtk/gtkprogressbar.c:213 gtk/gtkspinbutton.c:405
#: gtk/gtktextbuffer.c:425
msgid "Text"
msgstr "Tekst"
@@ -1314,7 +1306,7 @@ msgid "The vertical text alignment, from 0 (top) to 1 (bottom)."
msgstr "Wyrównanie pionowe, od 0 (góra) do 1 (dół)."
#: gtk/gtkcellrendererprogress.c:216 gtk/gtklevelbar.c:1042
#: gtk/gtkmodelbutton.c:1006 gtk/gtkprogressbar.c:190 gtk/gtkrange.c:379
#: gtk/gtkmodelbutton.c:1030 gtk/gtkprogressbar.c:190 gtk/gtkrange.c:379
msgid "Inverted"
msgstr "Odwrócony"
@@ -1348,8 +1340,8 @@ msgid "The number of decimal places to display"
msgstr "Liczba wyświetlanych pozycji dziesiętnych"
#: gtk/gtkcellrendererspinner.c:119 gtk/gtkcheckmenuitem.c:177
#: gtk/gtkmenu.c:600 gtk/gtkmodelbutton.c:979 gtk/gtkmodelbutton.c:980
#: gtk/gtkspinner.c:195 gtk/gtkswitch.c:521 gtk/gtktogglebutton.c:160
#: gtk/gtkmenu.c:600 gtk/gtkmodelbutton.c:1003 gtk/gtkmodelbutton.c:1004
#: gtk/gtkspinner.c:199 gtk/gtkswitch.c:521 gtk/gtktogglebutton.c:160
#: gtk/gtktoggletoolbutton.c:113
msgid "Active"
msgstr "Aktywny"
@@ -1584,7 +1576,7 @@ msgstr ""
"Sposób łamania ciągu tekstowego na wiersze w przypadku, gdy obiekt rysujący "
"komórki nie ma miejsca na wyświetlenie go całego"
#: gtk/gtkcellrenderertext.c:514 gtk/gtkcombobox.c:656
#: gtk/gtkcellrenderertext.c:514 gtk/gtkcombobox.c:653
msgid "Wrap width"
msgstr "Szerokość zawijania"
@@ -1753,7 +1745,7 @@ msgstr "Niespójny stan"
msgid "The inconsistent state of the button"
msgstr "Niespójny stan przycisku"
#: gtk/gtkcellrenderertoggle.c:155 gtk/gtklistbox.c:3421
#: gtk/gtkcellrenderertoggle.c:155 gtk/gtklistbox.c:3413
msgid "Activatable"
msgstr "Można aktywować"
@@ -1814,19 +1806,19 @@ msgid "Whether to request enough space for every row in the model"
msgstr ""
"Określa, czy żądać wystarczającej ilości miejsca dla każdego rzędu w modelu"
#: gtk/gtkcheckbutton.c:301
#: gtk/gtkcheckbutton.c:318
msgid "Draw Indicator"
msgstr "Rysowanie wskaźnika"
#: gtk/gtkcheckbutton.c:302
#: gtk/gtkcheckbutton.c:319
msgid "If the indicator part of the button is displayed"
msgstr "Określa, czy rysowana ma być wskazująca część przycisku"
#: gtk/gtkcheckbutton.c:308 gtk/gtkcheckmenuitem.c:185
#: gtk/gtkcheckbutton.c:325 gtk/gtkcheckmenuitem.c:185
msgid "Inconsistent"
msgstr "Niespójny"
#: gtk/gtkcheckbutton.c:309
#: gtk/gtkcheckbutton.c:326
msgid "If the check button is in an “in between” state"
msgstr "Określa, czy przycisk zaznaczania jest w stanie „pośrednim”"
@@ -1903,99 +1895,99 @@ msgstr "Wyświetlanie edytora"
msgid "Scale type"
msgstr "Typ skalowania"
#: gtk/gtkcolorswatch.c:551
#: gtk/gtkcolorswatch.c:553
msgid "RGBA Color"
msgstr "Kolor RGBA"
#: gtk/gtkcolorswatch.c:551
#: gtk/gtkcolorswatch.c:553
msgid "Color as RGBA"
msgstr "Kolor jako RGBA"
#: gtk/gtkcolorswatch.c:554 gtk/gtklabel.c:853 gtk/gtklistbox.c:3433
#: gtk/gtkcolorswatch.c:556 gtk/gtklabel.c:853 gtk/gtklistbox.c:3425
msgid "Selectable"
msgstr "Można zaznaczać"
#: gtk/gtkcolorswatch.c:554
#: gtk/gtkcolorswatch.c:556
msgid "Whether the swatch is selectable"
msgstr "Określa, czy próbkę można zaznaczać"
#: gtk/gtkcolorswatch.c:557
#: gtk/gtkcolorswatch.c:559
msgid "Has Menu"
msgstr "Ma menu"
#: gtk/gtkcolorswatch.c:557
#: gtk/gtkcolorswatch.c:559
msgid "Whether the swatch should offer customization"
msgstr "Określa, czy próbkę można dostosowywać"
#: gtk/gtkcombobox.c:642
#: gtk/gtkcombobox.c:639
msgid "ComboBox model"
msgstr "Model listy rozwijanej"
#: gtk/gtkcombobox.c:643
#: gtk/gtkcombobox.c:640
msgid "The model for the combo box"
msgstr "Model dla pola rozwijanego"
#: gtk/gtkcombobox.c:657
#: gtk/gtkcombobox.c:654
msgid "Wrap width for laying out the items in a grid"
msgstr "Szerokość zawijania przy układaniu elementów w siatce"
#: gtk/gtkcombobox.c:675 gtk/gtktreemenu.c:312
#: gtk/gtkcombobox.c:672 gtk/gtktreemenu.c:312
msgid "Row span column"
msgstr "Kolumna odstępów rzędowych"
#: gtk/gtkcombobox.c:676 gtk/gtktreemenu.c:313
#: gtk/gtkcombobox.c:673 gtk/gtktreemenu.c:313
msgid "TreeModel column containing the row span values"
msgstr "Kolumna drzewiasta zawierająca wartości odstępów rzędowych"
#: gtk/gtkcombobox.c:695 gtk/gtktreemenu.c:331
#: gtk/gtkcombobox.c:692 gtk/gtktreemenu.c:331
msgid "Column span column"
msgstr "Kolumna odstępów kolumnowych"
#: gtk/gtkcombobox.c:696 gtk/gtktreemenu.c:332
#: gtk/gtkcombobox.c:693 gtk/gtktreemenu.c:332
msgid "TreeModel column containing the column span values"
msgstr "Kolumna drzewiasta zawierająca wartości odstępów kolumnowych"
#: gtk/gtkcombobox.c:715
#: gtk/gtkcombobox.c:712
msgid "Active item"
msgstr "Aktywny element"
#: gtk/gtkcombobox.c:716
#: gtk/gtkcombobox.c:713
msgid "The item which is currently active"
msgstr "Obecnie aktywny element"
#: gtk/gtkcombobox.c:731 gtk/gtkentry.c:872
#: gtk/gtkcombobox.c:728 gtk/gtkentry.c:872
msgid "Has Frame"
msgstr "Ma ramkę"
#: gtk/gtkcombobox.c:732
#: gtk/gtkcombobox.c:729
msgid "Whether the combo box draws a frame around the child"
msgstr "Określa, czy pole rozwijane rysuje ramkę wokół potomka"
#: gtk/gtkcombobox.c:746
#: gtk/gtkcombobox.c:743
msgid "Popup shown"
msgstr "Wyświetlono menu wyskakujące"
#: gtk/gtkcombobox.c:747
#: gtk/gtkcombobox.c:744
msgid "Whether the combos dropdown is shown"
msgstr "Określa, czy zostało wyświetlone rozwinięcie listy rozwijanej"
#: gtk/gtkcombobox.c:761
#: gtk/gtkcombobox.c:758
msgid "Button Sensitivity"
msgstr "Czułość przycisku"
#: gtk/gtkcombobox.c:762
#: gtk/gtkcombobox.c:759
msgid "Whether the dropdown button is sensitive when the model is empty"
msgstr "Określa, czy przycisk rozwijany jest aktywny przy pustym modelu"
#: gtk/gtkcombobox.c:776
#: gtk/gtkcombobox.c:773
msgid "Whether combo box has an entry"
msgstr "Określa, czy pole rozwijane ma wejście"
#: gtk/gtkcombobox.c:789
#: gtk/gtkcombobox.c:786
msgid "Entry Text Column"
msgstr "Kolumna wprowadzania tekstu"
#: gtk/gtkcombobox.c:790
#: gtk/gtkcombobox.c:787
msgid ""
"The column in the combo boxs model to associate with strings from the entry "
"if the combo was created with #GtkComboBox:has-entry = %TRUE"
@@ -2003,11 +1995,11 @@ msgstr ""
"Kolumna w modelu pola rozwijanego do powiązania z ciągiem z wejścia, jeśli "
"lista została utworzona z wartością #GtkComboBox:has-entry = %TRUE"
#: gtk/gtkcombobox.c:805
#: gtk/gtkcombobox.c:802
msgid "ID Column"
msgstr "Kolumna identyfikatora"
#: gtk/gtkcombobox.c:806
#: gtk/gtkcombobox.c:803
msgid ""
"The column in the combo boxs model that provides string IDs for the values "
"in the model"
@@ -2015,19 +2007,19 @@ msgstr ""
"Kolumna w modelu pola rozwijanego dostarczająca identyfikatory napisów dla "
"wartości w kolumnie"
#: gtk/gtkcombobox.c:819
#: gtk/gtkcombobox.c:816
msgid "Active id"
msgstr "Aktywny identyfikator"
#: gtk/gtkcombobox.c:820
#: gtk/gtkcombobox.c:817
msgid "The value of the id column for the active row"
msgstr "Wartość kolumny identyfikatora dla aktywnego rzędu"
#: gtk/gtkcombobox.c:834
#: gtk/gtkcombobox.c:831
msgid "Popup Fixed Width"
msgstr "Stała szerokość menu wyskakującego"
#: gtk/gtkcombobox.c:835
#: gtk/gtkcombobox.c:832
msgid ""
"Whether the popups width should be a fixed width matching the allocated "
"width of the combo box"
@@ -2480,7 +2472,7 @@ msgstr "Podpowiedzi dla zachowania pola tekstowego"
msgid "A list of style attributes to apply to the text of the entry"
msgstr "Lista atrybutów stylu stosowanych do tekstu elementu"
#: gtk/gtkentry.c:1366 gtk/gtkplacessidebar.c:4764 gtk/gtktextview.c:967
#: gtk/gtkentry.c:1366 gtk/gtkplacessidebar.c:4740 gtk/gtktextview.c:967
msgid "Populate all"
msgstr "Umieszczanie we wszystkich"
@@ -2609,7 +2601,7 @@ msgstr ""
msgid "Text of the expanders label"
msgstr "Tekst etykiety elementu rozwijającego"
#: gtk/gtkexpander.c:293 gtk/gtklabel.c:770 gtk/gtkmodelbutton.c:966
#: gtk/gtkexpander.c:293 gtk/gtklabel.c:770 gtk/gtkmodelbutton.c:990
msgid "Use markup"
msgstr "Użycie znaczników"
@@ -2670,7 +2662,7 @@ msgstr "Filtr"
msgid "The current filter for selecting which files are displayed"
msgstr "Bieżący filtr służący do zaznaczania wyświetlanych plików"
#: gtk/gtkfilechooser.c:386 gtk/gtkplacessidebar.c:4732
#: gtk/gtkfilechooser.c:386 gtk/gtkplacessidebar.c:4708
#: gtk/gtkplacesview.c:2210
msgid "Local Only"
msgstr "Tylko lokalne"
@@ -2770,28 +2762,28 @@ msgstr "Etykieta anulowania"
msgid "The label on the cancel button"
msgstr "Etykieta przycisku anulowania"
#: gtk/gtkfilechooserwidget.c:8340 gtk/gtkfilechooserwidget.c:8341
#: gtk/gtkfilechooserwidget.c:8312 gtk/gtkfilechooserwidget.c:8313
msgid "Search mode"
msgstr "Tryb wyszukiwania"
#: gtk/gtkfilechooserwidget.c:8347 gtk/gtkfilechooserwidget.c:8348
#: gtk/gtkfilechooserwidget.c:8319 gtk/gtkfilechooserwidget.c:8320
#: gtk/gtkheaderbar.c:1857 gtk/gtkshortcutsshortcut.c:626
msgid "Subtitle"
msgstr "Podtytuł"
#: gtk/gtkfixed.c:161 gtk/gtklayout.c:499 gtk/gtktreeviewcolumn.c:268
#: gtk/gtkfixed.c:162 gtk/gtklayout.c:499 gtk/gtktreeviewcolumn.c:268
msgid "X position"
msgstr "Położenie X"
#: gtk/gtkfixed.c:162 gtk/gtklayout.c:500
#: gtk/gtkfixed.c:163 gtk/gtklayout.c:500
msgid "X position of child widget"
msgstr "Poziome położenie widżetu potomnego"
#: gtk/gtkfixed.c:169 gtk/gtklayout.c:509
#: gtk/gtkfixed.c:170 gtk/gtklayout.c:509
msgid "Y position"
msgstr "Położenie Y"
#: gtk/gtkfixed.c:170 gtk/gtklayout.c:510
#: gtk/gtkfixed.c:171 gtk/gtklayout.c:510
msgid "Y position of child widget"
msgstr "Pionowe położenie widżetu potomnego"
@@ -2805,12 +2797,12 @@ msgid "The selection mode"
msgstr "Tryb zaznaczania"
#: gtk/gtkflowbox.c:3445 gtk/gtkiconview.c:618 gtk/gtklistbox.c:436
#: gtk/gtktreeview.c:1174
#: gtk/gtktreeview.c:1162
msgid "Activate on Single Click"
msgstr "Aktywowanie po pojedynczym kliknięciu"
#: gtk/gtkflowbox.c:3446 gtk/gtkiconview.c:619 gtk/gtklistbox.c:437
#: gtk/gtktreeview.c:1175
#: gtk/gtktreeview.c:1163
msgid "Activate row on a single click"
msgstr "Aktywowanie rzędu po pojedynczym kliknięciu"
@@ -3244,15 +3236,15 @@ msgid ""
"How the text and icon of each item are positioned relative to each other"
msgstr "Pozycjonowanie tekstu i ikony każdego elementu względem innych"
#: gtk/gtkiconview.c:564 gtk/gtktreeview.c:1040 gtk/gtktreeviewcolumn.c:359
#: gtk/gtkiconview.c:564 gtk/gtktreeview.c:1028 gtk/gtktreeviewcolumn.c:359
msgid "Reorderable"
msgstr "Zmienny porządek"
#: gtk/gtkiconview.c:565 gtk/gtktreeview.c:1041
#: gtk/gtkiconview.c:565 gtk/gtktreeview.c:1029
msgid "View is reorderable"
msgstr "Określa, czy możliwa jest zmiana porządku w widoku"
#: gtk/gtkiconview.c:572 gtk/gtktreeview.c:1160
#: gtk/gtkiconview.c:572 gtk/gtktreeview.c:1148
msgid "Tooltip Column"
msgstr "Kolumna podpowiedzi"
@@ -3524,11 +3516,11 @@ msgstr "Odwiedzone"
msgid "Whether this link has been visited."
msgstr "Określa, czy ten odnośnik był odwiedzony."
#: gtk/gtklistbox.c:3422
#: gtk/gtklistbox.c:3414
msgid "Whether this row can be activated"
msgstr "Określa, czy można aktywować ten rząd"
#: gtk/gtklistbox.c:3434
#: gtk/gtklistbox.c:3426
msgid "Whether this row can be selected"
msgstr "Określa, czy można wybierać ten rząd"
@@ -3801,7 +3793,7 @@ msgstr "Grupa klawiszy skrótów"
msgid "The accel group holding accelerators for the menu"
msgstr "Grupa klawiszy skrótu dla menu"
#: gtk/gtkmenu.c:626 gtk/gtkmenuitem.c:620
#: gtk/gtkmenu.c:626 gtk/gtkmenuitem.c:621
msgid "Accel Path"
msgstr "Ścieżka skrótu"
@@ -3899,19 +3891,19 @@ msgstr "Przyłączenie dolne"
msgid "The row number to attach the bottom of the child to"
msgstr "Liczba rzędów przyłączanych od dołu kontrolki potomnej"
#: gtk/gtkmenuitem.c:606 gtk/gtkpopovermenu.c:359
#: gtk/gtkmenuitem.c:607 gtk/gtkpopovermenu.c:359
msgid "Submenu"
msgstr "Podmenu"
#: gtk/gtkmenuitem.c:607
#: gtk/gtkmenuitem.c:608
msgid "The submenu attached to the menu item, or NULL if it has none"
msgstr "Podmenu przypisane elementowi menu lub NULL, gdy brak podmenu"
#: gtk/gtkmenuitem.c:621
#: gtk/gtkmenuitem.c:622
msgid "Sets the accelerator path of the menu item"
msgstr "Ustawia ścieżkę skrótu z wpisu menu"
#: gtk/gtkmenuitem.c:633
#: gtk/gtkmenuitem.c:634
msgid "The text for the child label"
msgstr "Tekst podrzędnej etykiety"
@@ -3976,52 +3968,52 @@ msgid "GtkBox that holds the dialogs primary and secondary labels"
msgstr ""
"GtkBox przechowujący podstawowe i drugorzędne etykiety okna dialogowego"
#: gtk/gtkmodelbutton.c:926
#: gtk/gtkmodelbutton.c:950
msgid "Role"
msgstr "Rola"
#: gtk/gtkmodelbutton.c:927
#: gtk/gtkmodelbutton.c:951
msgid "The role of this button"
msgstr "Rola tego przycisku"
#: gtk/gtkmodelbutton.c:941
#: gtk/gtkmodelbutton.c:965
msgid "The icon"
msgstr "Ikona"
#: gtk/gtkmodelbutton.c:953
#: gtk/gtkmodelbutton.c:977
msgid "The text"
msgstr "Tekst"
#: gtk/gtkmodelbutton.c:967
#: gtk/gtkmodelbutton.c:991
msgid "The text of the button includes XML markup. See pango_parse_markup()"
msgstr ""
"Tekst przycisku zawiera znaczniki XML. Proszę zobaczyć pango_parse_markup()"
#: gtk/gtkmodelbutton.c:992
#: gtk/gtkmodelbutton.c:1016
msgid "Menu name"
msgstr "Nazwa menu"
#: gtk/gtkmodelbutton.c:993
#: gtk/gtkmodelbutton.c:1017
msgid "The name of the menu to open"
msgstr "Nazwa menu do otwarcia"
#: gtk/gtkmodelbutton.c:1007
#: gtk/gtkmodelbutton.c:1031
msgid "Whether the menu is a parent"
msgstr "Określa, czy menu jest elementem nadrzędnym"
#: gtk/gtkmodelbutton.c:1019
#: gtk/gtkmodelbutton.c:1043
msgid "Centered"
msgstr "Wyśrodkowane"
#: gtk/gtkmodelbutton.c:1020
#: gtk/gtkmodelbutton.c:1044
msgid "Whether to center the contents"
msgstr "Określa, czy wyśrodkować zawartość"
#: gtk/gtkmodelbutton.c:1033
#: gtk/gtkmodelbutton.c:1057
msgid "Iconic"
msgstr "Ikony"
#: gtk/gtkmodelbutton.c:1034
#: gtk/gtkmodelbutton.c:1058
msgid "Whether to prefer the icon over text"
msgstr "Określa, czy preferować ikony zamiast tekstu"
@@ -4338,19 +4330,19 @@ msgstr "Może być zmniejszane"
msgid "Allow self to be smaller than contents"
msgstr "Może być mniejsze niż zawartość"
#: gtk/gtkplacessidebar.c:4701
#: gtk/gtkplacessidebar.c:4677
msgid "Location to Select"
msgstr "Położenie do wybrania"
#: gtk/gtkplacessidebar.c:4702
#: gtk/gtkplacessidebar.c:4678
msgid "The location to highlight in the sidebar"
msgstr "Położenie do wyróżnienia na panelu bocznym"
#: gtk/gtkplacessidebar.c:4707 gtk/gtkplacesview.c:2231
#: gtk/gtkplacessidebar.c:4683 gtk/gtkplacesview.c:2231
msgid "Open Flags"
msgstr "Flagi otwarcia"
#: gtk/gtkplacessidebar.c:4708 gtk/gtkplacesview.c:2232
#: gtk/gtkplacessidebar.c:4684 gtk/gtkplacesview.c:2232
msgid ""
"Modes in which the calling application can open locations selected in the "
"sidebar"
@@ -4358,68 +4350,68 @@ msgstr ""
"Tryby, w których wywołujący program może otwierać położenia wybrane na "
"panelu bocznym"
#: gtk/gtkplacessidebar.c:4714
#: gtk/gtkplacessidebar.c:4690
msgid "Show recent files"
msgstr "Wyświetlanie elementu „Ostatnio używane pliki”"
#: gtk/gtkplacessidebar.c:4715
#: gtk/gtkplacessidebar.c:4691
msgid "Whether the sidebar includes a builtin shortcut for recent files"
msgstr ""
"Określa, czy panel boczny zawiera wbudowany skrót do ostatnio używanych "
"plików"
#: gtk/gtkplacessidebar.c:4720
#: gtk/gtkplacessidebar.c:4696
msgid "Show “Desktop”"
msgstr "Wyświetlanie elementu „Pulpit”"
#: gtk/gtkplacessidebar.c:4721
#: gtk/gtkplacessidebar.c:4697
msgid "Whether the sidebar includes a builtin shortcut to the Desktop folder"
msgstr "Określa, czy panel boczny zawiera wbudowany skrót do katalogu Pulpit"
#: gtk/gtkplacessidebar.c:4726
#: gtk/gtkplacessidebar.c:4702
msgid "Show “Enter Location”"
msgstr "Wyświetlanie elementu „Wprowadź położenie”"
#: gtk/gtkplacessidebar.c:4727
#: gtk/gtkplacessidebar.c:4703
msgid ""
"Whether the sidebar includes a builtin shortcut to manually enter a location"
msgstr ""
"Określa, czy panel boczny zawiera wbudowany skrót do ręcznego wprowadzania "
"położenia"
#: gtk/gtkplacessidebar.c:4733 gtk/gtkplacesview.c:2211
#: gtk/gtkplacessidebar.c:4709 gtk/gtkplacesview.c:2211
msgid "Whether the sidebar only includes local files"
msgstr "Określa, czy panel boczny zawiera tylko lokalne pliki"
#: gtk/gtkplacessidebar.c:4738
#: gtk/gtkplacessidebar.c:4714
msgid "Show “Trash”"
msgstr "Wyświetlanie elementu „Kosz”"
#: gtk/gtkplacessidebar.c:4739
#: gtk/gtkplacessidebar.c:4715
msgid "Whether the sidebar includes a builtin shortcut to the Trash location"
msgstr "Określa, czy panel boczny zawiera wbudowany skrót do kosza"
#: gtk/gtkplacessidebar.c:4744
#: gtk/gtkplacessidebar.c:4720
msgid "Show “Other locations”"
msgstr "Wyświetlanie elementu „Inne położenia”"
#: gtk/gtkplacessidebar.c:4745
#: gtk/gtkplacessidebar.c:4721
msgid "Whether the sidebar includes an item to show external locations"
msgstr ""
"Określa, czy panel boczny zawiera wbudowany skrót do wyświetlania "
"zewnętrznych położeń"
#: gtk/gtkplacessidebar.c:4750
#: gtk/gtkplacessidebar.c:4726
msgid "Show “Starred Location”"
msgstr "Wyświetlanie elementu „Ulubione”"
#: gtk/gtkplacessidebar.c:4751
#: gtk/gtkplacessidebar.c:4727
msgid "Whether the sidebar includes an item to show starred files"
msgstr ""
"Określa, czy panel boczny zawiera wbudowany skrót do wyświetlania ulubionych "
"plików"
#: gtk/gtkplacessidebar.c:4765
#: gtk/gtkplacessidebar.c:4741
msgid "Whether to emit ::populate-popup for popups that are not menus"
msgstr ""
"Określa, czy wysyłać sygnał ::populate-popup dla wyskakujących okien, które "
@@ -4884,12 +4876,12 @@ msgstr ""
"Preferowane miejsce przycięcia ciągu tekstowego w przypadku, gdy pasek "
"postępu nie ma miejsca na wyświetlenie całego tekstu."
#: gtk/gtkradiobutton.c:187 gtk/gtkradiomenuitem.c:415
#: gtk/gtkradiobutton.c:183 gtk/gtkradiomenuitem.c:415
#: gtk/gtkradiotoolbutton.c:81
msgid "Group"
msgstr "Grupa"
#: gtk/gtkradiobutton.c:188
#: gtk/gtkradiobutton.c:184
msgid "The radio button whose group this widget belongs to."
msgstr "Przycisk radiowy, do którego grupy należy ten widżet."
@@ -5773,7 +5765,7 @@ msgstr ""
msgid "Reads the current value, or sets a new value"
msgstr "Odczytuje bieżącą wartość lub ustawia nową"
#: gtk/gtkspinner.c:196
#: gtk/gtkspinner.c:200
msgid "Whether the spinner is active"
msgstr "Określa, czy spinner jest aktywny"
@@ -6547,130 +6539,130 @@ msgstr "Model TreeModelSort"
msgid "The model for the TreeModelSort to sort"
msgstr "Model porządkowania dla TreeModelSort"
#: gtk/gtktreeview.c:1012
#: gtk/gtktreeview.c:1000
msgid "TreeView Model"
msgstr "Model TreeView"
#: gtk/gtktreeview.c:1013
#: gtk/gtktreeview.c:1001
msgid "The model for the tree view"
msgstr "Model dla widoku drzewa"
#: gtk/gtktreeview.c:1019
#: gtk/gtktreeview.c:1007
msgid "Headers Visible"
msgstr "Widoczne nagłówki"
#: gtk/gtktreeview.c:1020
#: gtk/gtktreeview.c:1008
msgid "Show the column header buttons"
msgstr "Wyświetlanie przycisków w nagłówkach kolumn"
#: gtk/gtktreeview.c:1026
#: gtk/gtktreeview.c:1014
msgid "Headers Clickable"
msgstr "Klikalne nagłówki"
#: gtk/gtktreeview.c:1027
#: gtk/gtktreeview.c:1015
msgid "Column headers respond to click events"
msgstr "Określa, czy nagłówki reagują na zdarzenia kliknięcia"
#: gtk/gtktreeview.c:1033
#: gtk/gtktreeview.c:1021
msgid "Expander Column"
msgstr "Kolumna elementu rozwijającego"
#: gtk/gtktreeview.c:1034
#: gtk/gtktreeview.c:1022
msgid "Set the column for the expander column"
msgstr "Ustawia kolumnę, w której pojawia się element rozwijający"
#: gtk/gtktreeview.c:1047
#: gtk/gtktreeview.c:1035
msgid "Enable Search"
msgstr "Możliwe wyszukiwanie"
#: gtk/gtktreeview.c:1048
#: gtk/gtktreeview.c:1036
msgid "View allows user to search through columns interactively"
msgstr ""
"Określa, czy widok pozwala użytkownikowi na interaktywne przeszukiwanie "
"kolumn"
#: gtk/gtktreeview.c:1054
#: gtk/gtktreeview.c:1042
msgid "Search Column"
msgstr "Kolumna wyszukiwania"
#: gtk/gtktreeview.c:1055
#: gtk/gtktreeview.c:1043
msgid "Model column to search through during interactive search"
msgstr "Kolumna modelu przeszukiwana podczas wyszukiwania interaktywnego"
#: gtk/gtktreeview.c:1071
#: gtk/gtktreeview.c:1059
msgid "Fixed Height Mode"
msgstr "Tryb ustalonej wysokości"
#: gtk/gtktreeview.c:1072
#: gtk/gtktreeview.c:1060
msgid "Speeds up GtkTreeView by assuming that all rows have the same height"
msgstr ""
"Przyspiesza GtkTreeView przez założenie, że wszystkie rzędy mają taką samą "
"wysokość"
#: gtk/gtktreeview.c:1089
#: gtk/gtktreeview.c:1077
msgid "Hover Selection"
msgstr "Zaznaczanie wskazanego"
#: gtk/gtktreeview.c:1090
#: gtk/gtktreeview.c:1078
msgid "Whether the selection should follow the pointer"
msgstr "Określa, czy zaznaczanie ma podążać za kursorem"
#: gtk/gtktreeview.c:1106
#: gtk/gtktreeview.c:1094
msgid "Hover Expand"
msgstr "Rozwinięcie wskazanego"
#: gtk/gtktreeview.c:1107
#: gtk/gtktreeview.c:1095
msgid ""
"Whether rows should be expanded/collapsed when the pointer moves over them"
msgstr ""
"Określa, czy rzędy mają być rozwijane/zwijane podczas przesuwania kursora "
"nad nimi"
#: gtk/gtktreeview.c:1118
#: gtk/gtktreeview.c:1106
msgid "Show Expanders"
msgstr "Wyświetlanie elementów rozwijających"
#: gtk/gtktreeview.c:1119
#: gtk/gtktreeview.c:1107
msgid "View has expanders"
msgstr "Widok ma elementy rozwijające"
#: gtk/gtktreeview.c:1130
#: gtk/gtktreeview.c:1118
msgid "Level Indentation"
msgstr "Wcięcie poziomu"
#: gtk/gtktreeview.c:1131
#: gtk/gtktreeview.c:1119
msgid "Extra indentation for each level"
msgstr "Dodatkowe wcięcie dla każdego poziomu"
#: gtk/gtktreeview.c:1138
#: gtk/gtktreeview.c:1126
msgid "Rubber Banding"
msgstr "Przyciąganie"
#: gtk/gtktreeview.c:1139
#: gtk/gtktreeview.c:1127
msgid ""
"Whether to enable selection of multiple items by dragging the mouse pointer"
msgstr ""
"Określa, czy dopuszczalne jest zaznaczanie wielu elementów przez "
"przeciąganie kursora myszy"
#: gtk/gtktreeview.c:1145
#: gtk/gtktreeview.c:1133
msgid "Enable Grid Lines"
msgstr "Linie siatki"
#: gtk/gtktreeview.c:1146
#: gtk/gtktreeview.c:1134
msgid "Whether grid lines should be drawn in the tree view"
msgstr "Określa, czy linie siatki mają być rysowane w widoku drzewiastym"
#: gtk/gtktreeview.c:1153
#: gtk/gtktreeview.c:1141
msgid "Enable Tree Lines"
msgstr "Linie drzewa"
#: gtk/gtktreeview.c:1154
#: gtk/gtktreeview.c:1142
msgid "Whether tree lines should be drawn in the tree view"
msgstr ""
"Określa, czy linie gałęzi drzewa mają być rysowane w widoku drzewiastym"
#: gtk/gtktreeview.c:1161
#: gtk/gtktreeview.c:1149
msgid "The column in the model containing the tooltip texts for the rows"
msgstr "Kolumna modelu zawierająca teksty podpowiedzi dla rzędów"

4558
po/da.po

File diff suppressed because it is too large Load Diff

View File

@@ -20,15 +20,59 @@
void
hello (void)
copy (void)
{
g_print ("hello world\n");
GdkClipboard *clipboard = gdk_display_get_clipboard (gdk_display_get_default ());
GFile *file = g_file_new_for_path ("/home/mclasen/faw-sig");
gdk_clipboard_set (clipboard, G_TYPE_FILE, file);
g_object_unref (file);
}
static void
value_received (GObject *object,
GAsyncResult *result,
gpointer data)
{
const GValue *value;
GError *error = NULL;
GSList *l;
value = gdk_clipboard_read_value_finish (GDK_CLIPBOARD (object), result, &error);
if (value == NULL)
{
g_print ("Failed to read: %s\n", error->message);
g_error_free (error);
return;
}
for (l = g_value_get_boxed (value); l; l = l->next)
g_print ("%s\n", g_file_get_path (l->data));
}
void
paste (void)
{
GdkClipboard *clipboard = gdk_display_get_clipboard (gdk_display_get_default ());
gdk_clipboard_read_value_async (clipboard, GDK_TYPE_FILE_LIST, 0, NULL, value_received, NULL);
}
static void
clipboard_changed (GdkClipboard *clipboard)
{
GdkContentFormats *formats = gdk_clipboard_get_formats (clipboard);
g_autofree char *s = gdk_content_formats_to_string (formats);
g_print ("clipboard contents now: %s, local: %d\n", s, gdk_clipboard_is_local (clipboard));
}
int
main (int argc, char *argv[])
{
GtkWidget *window, *button;
GtkWidget *window, *button, *box;
GdkClipboard *clipboard;
gtk_init ();
@@ -37,11 +81,22 @@ main (int argc, char *argv[])
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
button = gtk_button_new ();
gtk_button_set_label (GTK_BUTTON (button), "hello world");
g_signal_connect (button, "clicked", G_CALLBACK (hello), NULL);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add (GTK_CONTAINER (window), button);
button = gtk_button_new ();
gtk_button_set_label (GTK_BUTTON (button), "copy");
g_signal_connect (button, "clicked", G_CALLBACK (copy), NULL);
gtk_container_add (GTK_CONTAINER (box), button);
button = gtk_button_new ();
gtk_button_set_label (GTK_BUTTON (button), "paste");
g_signal_connect (button, "clicked", G_CALLBACK (paste), NULL);
gtk_container_add (GTK_CONTAINER (box), button);
gtk_container_add (GTK_CONTAINER (window), box);
clipboard = gdk_display_get_clipboard (gdk_display_get_default ());
g_signal_connect (clipboard, "changed", G_CALLBACK (clipboard_changed), NULL);
gtk_widget_show (window);

View File

@@ -103,23 +103,30 @@ visible_child_changed_cb (GtkWidget *stack,
}
}
static GList *
static GSList *
get_file_list (const char *dir)
{
GFileEnumerator *enumerator;
GFile *file;
GList *list = NULL;
GFileInfo *info;
GSList *list = NULL;
file = g_file_new_for_path (dir);
enumerator = g_file_enumerate_children (file, "standard::name", 0, NULL, NULL);
enumerator = g_file_enumerate_children (file, "standard::name,standard::type", 0, NULL, NULL);
g_object_unref (file);
if (enumerator == NULL)
return NULL;
while (g_file_enumerator_iterate (enumerator, NULL, &file, NULL, NULL) && file != NULL)
list = g_list_prepend (list, g_object_ref (file));
while (g_file_enumerator_iterate (enumerator, &info, &file, NULL, NULL) && file != NULL)
{
/* the portal can't handle directories */
if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR)
continue;
return g_list_reverse (list);
list = g_slist_prepend (list, g_object_ref (file));
}
return g_slist_reverse (list);
}
static void