diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rwxr-xr-x | autogen.sh | 8 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | empathy.doap | 2 | ||||
-rw-r--r-- | extensions/Makefile.am | 26 | ||||
-rw-r--r-- | libempathy-gtk/Makefile.am | 14 | ||||
-rw-r--r-- | libempathy/Makefile.am | 14 | ||||
-rw-r--r-- | libempathy/empathy-tp-chat.c | 8 | ||||
-rw-r--r-- | libempathy/empathy-tp-file.c | 275 | ||||
-rw-r--r-- | libempathy/empathy-tp-file.h | 3 | ||||
-rw-r--r-- | m4/shave.m4 | 77 | ||||
-rw-r--r-- | megaphone/data/Makefile.am | 4 | ||||
-rw-r--r-- | nothere/data/Makefile.am | 4 | ||||
-rw-r--r-- | po/es.po | 382 | ||||
-rw-r--r-- | python/pyempathy/Makefile.am | 4 | ||||
-rw-r--r-- | python/pyempathy/pyempathy.defs | 77 | ||||
-rw-r--r-- | python/pyempathygtk/Makefile.am | 4 | ||||
-rw-r--r-- | python/pyempathygtk/pyempathygtk.defs | 12 | ||||
-rw-r--r-- | shave-libtool.in | 69 | ||||
-rw-r--r-- | shave.in | 79 | ||||
-rw-r--r-- | src/Makefile.am | 6 | ||||
-rw-r--r-- | src/empathy-ft-manager.c | 26 | ||||
-rw-r--r-- | src/empathy-main-window.c | 16 | ||||
-rw-r--r-- | src/empathy-main-window.ui | 9 | ||||
-rw-r--r-- | tools/Makefile.am | 20 | ||||
-rw-r--r-- | tools/shave.mk | 1 |
27 files changed, 864 insertions, 284 deletions
diff --git a/.gitignore b/.gitignore index 6f644672c..e67be83e0 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,5 @@ cscope.out tags TAGS gnome-doc-utils.make +shave +shave-libtool diff --git a/Makefile.am b/Makefile.am index 20e196234..3929d3931 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,7 +38,7 @@ DISTCLEANFILES = \ distuninstallcheck_listfiles = find . -type f -print | grep -v '^\./var/scrollkeeper' distclean-local: - if test $(srdcir) = .; then :; else \ + if test "x$(srdcir)" = "x."; then :; else \ rm -f ChangeLog; \ fi diff --git a/autogen.sh b/autogen.sh index b1a24fc3a..e1bf4d55f 100755 --- a/autogen.sh +++ b/autogen.sh @@ -13,6 +13,14 @@ REQUIRED_AUTOMAKE_VERSION=1.9 exit 1 } +# Fix to make shave + libtool 1.x + gtk-doc work. +# See http://git.lespiau.name/cgit/shave/tree/README#n83 +sed -e 's#) --mode=compile#) --tag=CC --mode=compile#' gtk-doc.make \ + > gtk-doc.temp \ + && mv gtk-doc.temp gtk-doc.make +sed -e 's#) --mode=link#) --tag=CC --mode=link#' gtk-doc.make \ + > gtk-doc.temp \ + && mv gtk-doc.temp gtk-doc.make which gnome-autogen.sh || { echo "You need to install gnome-common from the GNOME CVS" diff --git a/configure.ac b/configure.ac index 0ff17396d..7d2d5d2ac 100644 --- a/configure.ac +++ b/configure.ac @@ -303,6 +303,8 @@ AM_CONDITIONAL(HAVE_PYTHON, test "x$have_python" = "xyes") # ----------------------------------------------------------- +SHAVE_INIT(.) + AC_OUTPUT([ Makefile data/Makefile @@ -333,4 +335,6 @@ AC_OUTPUT([ tests/Makefile tests/xml/Makefile tools/Makefile + shave + shave-libtool ]) diff --git a/empathy.doap b/empathy.doap index acd6494bc..e37ed35c3 100644 --- a/empathy.doap +++ b/empathy.doap @@ -14,7 +14,7 @@ <maintainer> <foaf:Person> <foaf:name>Xavier Claessens</foaf:name> - <foaf:mbox rdf:resource="xclaesse@gmail.com" /> + <foaf:mbox rdf:resource="mailto:xclaesse@gmail.com" /> <gnome:userid>xclaesse</gnome:userid> </foaf:Person> </maintainer> diff --git a/extensions/Makefile.am b/extensions/Makefile.am index e5b1ea113..7591109e8 100644 --- a/extensions/Makefile.am +++ b/extensions/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + tools_dir = $(top_srcdir)/tools AM_CPPFLAGS = $(DISABLE_DEPRECATED) @@ -60,45 +62,45 @@ XSLTPROCFLAGS = --nonet --novalid _gen/all.xml: all.xml $(wildcard *.xml) $(mkdir_p) _gen - $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \ + $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \ $< > $@ extensions.html: _gen/all.xml $(tools_dir)/doc-generator.xsl - $(XSLTPROC) $(XSLTPROCFLAGS) \ + $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) \ --param "allow-undefined-interfaces" "true()" \ $(tools_dir)/doc-generator.xsl \ $< > $@ _gen/gtypes.h _gen/gtypes-body.h: _gen/all.xml \ $(top_srcdir)/tools/glib-gtypes-generator.py - $(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \ + $(QUIET_GEN)$(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \ $< _gen/gtypes Emp _gen/signals-marshal.list: _gen/all.xml \ $(tools_dir)/glib-signals-marshal-gen.py - $(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@ + $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@ _gen/signals-marshal.h: _gen/signals-marshal.list Makefile.am - $(GLIB_GENMARSHAL) --header --prefix=_emp_ext_marshal $< > $@ + $(QUIET_GEN)$(GLIB_GENMARSHAL) --header --prefix=_emp_ext_marshal $< > $@ _gen/signals-marshal.c: _gen/signals-marshal.list Makefile.am - { echo '#include "_gen/signals-marshal.h"' && \ + $(QUIET_GEN){ echo '#include "_gen/signals-marshal.h"' && \ $(GLIB_GENMARSHAL) --body --prefix=_emp_ext_marshal $< ; } > $@ _gen/register-dbus-glib-marshallers-body.h: _gen/all.xml \ $(tools_dir)/glib-client-marshaller-gen.py - $(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \ + $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \ _emp_ext > $@ _gen/enums.h: _gen/all.xml \ $(tools_dir)/c-constants-gen.py - $(PYTHON) $(tools_dir)/c-constants-gen.py \ + $(QUIET_GEN)$(PYTHON) $(tools_dir)/c-constants-gen.py \ Emp \ $< > $@ _gen/interfaces-body.h _gen/interfaces.h: _gen/all.xml \ $(tools_dir)/glib-interfaces-gen.py - $(PYTHON) $(tools_dir)/glib-interfaces-gen.py \ + $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-interfaces-gen.py \ Emp _gen/interfaces-body.h _gen/interfaces.h $< # Generated files which must be generated per "category". Each TpProxy @@ -107,12 +109,12 @@ _gen/interfaces-body.h _gen/interfaces.h: _gen/all.xml \ _gen/misc.xml: misc.xml $(wildcard *.xml) $(mkdir_p) _gen - $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \ + $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \ $< > $@ _gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \ $(tools_dir)/glib-client-gen.py - $(PYTHON) $(tools_dir)/glib-client-gen.py \ + $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ --group=misc \ --subclass=TpProxy \ --subclass-assert=TP_IS_PROXY \ @@ -122,7 +124,7 @@ _gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \ _gen/svc-misc.c _gen/svc-misc.h: _gen/misc.xml \ $(tools_dir)/glib-ginterface-gen.py - $(PYTHON) $(tools_dir)/glib-ginterface-gen.py \ + $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-ginterface-gen.py \ --filename=_gen/svc-misc \ --signal-marshal-prefix=_emp_ext \ --include='<telepathy-glib/dbus.h>' \ diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am index 2065589e3..210b6d4b0 100644 --- a/libempathy-gtk/Makefile.am +++ b/libempathy-gtk/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + AM_CPPFLAGS = \ -I. \ -I$(top_srcdir) \ @@ -133,7 +135,7 @@ ui_DATA = \ empathy-new-message-dialog.ui empathy-gtk-marshal.list: $(libempathy_gtk_la_SOURCES) Makefile.am - ( cd $(srcdir) && \ + $(QUIET_GEN)( cd $(srcdir) && \ sed -n -e 's/.*empathy_gtk_marshal_\([[:upper:][:digit:]]*__[[:upper:][:digit:]_]*\).*/\1/p' \ $(libempathy_gtk_la_SOURCES) ) \ | sed -e 's/__/:/' -e 'y/_/,/' | sort -u > $@.tmp @@ -144,16 +146,16 @@ empathy-gtk-marshal.list: $(libempathy_gtk_la_SOURCES) Makefile.am fi %-marshal.h: %-marshal.list Makefile - $(GLIB_GENMARSHAL) --header --prefix=_$(subst -,_,$*)_marshal $< > $*-marshal.h + $(QUIET_GEN)$(GLIB_GENMARSHAL) --header --prefix=_$(subst -,_,$*)_marshal $< > $*-marshal.h %-marshal.c: %-marshal.list Makefile - echo "#include \"empathy-gtk-marshal.h\"" > $@ && \ + $(QUIET_GEN)echo "#include \"empathy-gtk-marshal.h\"" > $@ && \ $(GLIB_GENMARSHAL) --body --prefix=_$(subst -,_,$*)_marshal $< >> $*-marshal.c empathy-gtk-enum-types.h: stamp-empathy-gtk-enum-types.h - @true + $(QUIET_GEN)true stamp-empathy-gtk-enum-types.h: Makefile $(libempathy_gtk_headers) - (cd $(srcdir) \ + $(QUIET_GEN)(cd $(srcdir) \ && glib-mkenums \ --fhead "#ifndef __LIBEMPATHY_GTK_ENUM_TYPES_H__\n" \ --fhead "#define __LIBEMPATHY_GTK_ENUM_TYPES_H__ 1\n\n" \ @@ -170,7 +172,7 @@ stamp-empathy-gtk-enum-types.h: Makefile $(libempathy_gtk_headers) && echo timestamp > $(@F) empathy-gtk-enum-types.c: Makefile $(libempathy_gtk_headers) - (cd $(srcdir) \ + $(QUIET_GEN)(cd $(srcdir) \ && glib-mkenums \ --fhead "#include <config.h>\n" \ --fhead "#include <glib-object.h>\n" \ diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am index ba1f6f8c7..67966695e 100644 --- a/libempathy/Makefile.am +++ b/libempathy/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + AM_CPPFLAGS = \ -I. \ -I$(top_srcdir) \ @@ -104,7 +106,7 @@ libempathy_include_HEADERS = \ empathy-enum-types.h empathy-marshal.list: $(libempathy_la_SOURCES) Makefile.am - ( cd $(srcdir) && \ + $(QUIET_GEN)( cd $(srcdir) && \ sed -n -e 's/.*empathy_marshal_\([[:upper:][:digit:]]*__[[:upper:][:digit:]_]*\).*/\1/p' \ $(libempathy_la_SOURCES) ) \ | sed -e 's/__/:/' -e 'y/_/,/' | sort -u > $@.tmp @@ -115,16 +117,16 @@ empathy-marshal.list: $(libempathy_la_SOURCES) Makefile.am fi %-marshal.h: %-marshal.list Makefile - $(GLIB_GENMARSHAL) --header --prefix=_$(subst -,_,$*)_marshal $< > $*-marshal.h + $(QUIET_GEN)$(GLIB_GENMARSHAL) --header --prefix=_$(subst -,_,$*)_marshal $< > $*-marshal.h %-marshal.c: %-marshal.list Makefile - echo "#include \"empathy-marshal.h\"" > $@ && \ + $(QUIET_GEN)echo "#include \"empathy-marshal.h\"" > $@ && \ $(GLIB_GENMARSHAL) --body --prefix=_$(subst -,_,$*)_marshal $< >> $*-marshal.c empathy-enum-types.h: stamp-empathy-enum-types.h - @true + $(QUIET_GEN)true stamp-empathy-enum-types.h: $(libempathy_headers) Makefile - (cd $(srcdir) \ + $(QUIET_GEN)(cd $(srcdir) \ && glib-mkenums \ --fhead "#ifndef __LIBEMPATHY_ENUM_TYPES_H__\n" \ --fhead "#define __LIBEMPATHY_ENUM_TYPES_H__ 1\n\n" \ @@ -141,7 +143,7 @@ stamp-empathy-enum-types.h: $(libempathy_headers) Makefile && echo timestamp > $(@F) empathy-enum-types.c: $(libempathy_headers) Makefile - (cd $(srcdir) \ + $(QUIET_GEN)(cd $(srcdir) \ && glib-mkenums \ --fhead "#include <config.h>\n" \ --fhead "#include <glib-object.h>\n" \ diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 54e08d071..2f951e040 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -753,6 +753,10 @@ tp_chat_check_if_ready (EmpathyTpChat *chat) DEBUG ("Ready!"); + tp_cli_channel_type_text_connect_to_received (priv->channel, + tp_chat_received_cb, + NULL, NULL, + G_OBJECT (chat), NULL); priv->listing_pending_messages = TRUE; tp_cli_channel_type_text_call_list_pending_messages (priv->channel, -1, FALSE, @@ -760,10 +764,6 @@ tp_chat_check_if_ready (EmpathyTpChat *chat) NULL, NULL, G_OBJECT (chat)); - tp_cli_channel_type_text_connect_to_received (priv->channel, - tp_chat_received_cb, - NULL, NULL, - G_OBJECT (chat), NULL); tp_cli_channel_type_text_connect_to_sent (priv->channel, tp_chat_sent_cb, NULL, NULL, diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c index 6796f5a0b..079390c37 100644 --- a/libempathy/empathy-tp-file.c +++ b/libempathy/empathy-tp-file.c @@ -1,4 +1,3 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Copyright (C) 2007-2008 Collabora Ltd. * Copyright (C) 2007 Marco Barisione <marco@barisione.org> @@ -51,11 +50,18 @@ /** * SECTION:empathy-tp-file - * @short_description: File channel - * @see_also: #EmpathyTpFile, #EmpathyContact, empathy_dispatcher_send_file() - * @include: libempthy/empathy-tp-file.h + * @title: EmpathyTpFile + * @short_description: Object which represents a Telepathy file channel + * @include: libempathy/empathy-tp-file.h * - * The #EmpathyTpFile object represents a Telepathy file channel. + * #EmpathyTpFile is an object which represents a Telepathy file channel. + */ + +/** + * EmpathyTpFile: + * @parent: parent object + * + * Object which represents a Telepathy file channel. */ /** @@ -69,6 +75,7 @@ #define N_BUFFERS 2 #define BUFFER_SIZE 4096 +#define STALLED_TIMEOUT 5 typedef struct { GInputStream *in; @@ -298,7 +305,11 @@ struct _EmpathyTpFilePriv { gboolean incoming; TpFileTransferStateChangeReason state_change_reason; - time_t start_time; + time_t last_update_time; + guint64 last_update_transferred_bytes; + gdouble speed; + gint remaining_time; + guint stalled_id; GValue *socket_address; GCancellable *cancellable; }; @@ -317,6 +328,13 @@ enum { PROP_CONTENT_HASH, }; +enum { + REFRESH, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL]; + G_DEFINE_TYPE (EmpathyTpFile, empathy_tp_file, G_TYPE_OBJECT); static void @@ -391,9 +409,25 @@ tp_file_finalize (GObject *object) if (tp_file->priv->cancellable) g_object_unref (tp_file->priv->cancellable); + if (tp_file->priv->stalled_id != 0) + g_source_remove (tp_file->priv->stalled_id); + G_OBJECT_CLASS (empathy_tp_file_parent_class)->finalize (object); } +static gboolean +tp_file_stalled_cb (EmpathyTpFile *tp_file) +{ + /* We didn't get transferred bytes update for a while, the transfer is + * stalled. */ + + tp_file->priv->speed = 0; + tp_file->priv->remaining_time = -1; + g_signal_emit (tp_file, signals[REFRESH], 0); + + return FALSE; +} + static void tp_file_start_transfer (EmpathyTpFile *tp_file) { @@ -425,7 +459,11 @@ tp_file_start_transfer (EmpathyTpFile *tp_file) DEBUG ("Start the transfer"); - tp_file->priv->start_time = empathy_time_get_current (); + tp_file->priv->last_update_time = empathy_time_get_current (); + tp_file->priv->last_update_transferred_bytes = tp_file->priv->transferred_bytes; + tp_file->priv->stalled_id = g_timeout_add_seconds (STALLED_TIMEOUT, + (GSourceFunc) tp_file_stalled_cb, tp_file); + tp_file->priv->cancellable = g_cancellable_new (); if (tp_file->priv->incoming) { @@ -487,19 +525,47 @@ tp_file_transferred_bytes_changed_cb (TpChannel *channel, GObject *weak_object) { EmpathyTpFile *tp_file = EMPATHY_TP_FILE (weak_object); + time_t curr_time, elapsed_time; + guint64 transferred_bytes; + /* If we didn't progress since last update, return */ if (tp_file->priv->transferred_bytes == count) return; + /* Update the transferred bytes count */ tp_file->priv->transferred_bytes = count; g_object_notify (G_OBJECT (tp_file), "transferred-bytes"); + + /* We got a progress, reset the stalled timeout */ + if (tp_file->priv->stalled_id != 0) + g_source_remove (tp_file->priv->stalled_id); + tp_file->priv->stalled_id = g_timeout_add_seconds (STALLED_TIMEOUT, + (GSourceFunc) tp_file_stalled_cb, tp_file); + + /* Calculate the transfer speed and remaining time estimation. We recalculate + * that each second to get more dynamic values that react faster to network + * changes. This is better than calculating the average from the begining of + * the transfer, I think. */ + curr_time = empathy_time_get_current (); + elapsed_time = curr_time - tp_file->priv->last_update_time; + if (elapsed_time >= 1) + { + transferred_bytes = count - tp_file->priv->last_update_transferred_bytes; + tp_file->priv->speed = (gdouble) transferred_bytes / (gdouble) elapsed_time; + tp_file->priv->remaining_time = (tp_file->priv->size - count) / + tp_file->priv->speed; + tp_file->priv->last_update_transferred_bytes = count; + tp_file->priv->last_update_time = curr_time; + + g_signal_emit (tp_file, signals[REFRESH], 0); + } } static void tp_file_check_if_ready (EmpathyTpFile *tp_file) { if (tp_file->priv->ready || tp_file->priv->contact == NULL || - tp_file->priv->state == 0) + tp_file->priv->state == TP_FILE_TRANSFER_STATE_NONE) return; tp_file->priv->ready = TRUE; @@ -518,7 +584,7 @@ tp_file_got_contact_cb (EmpathyTpContactFactory *factory, if (error) { DEBUG ("Error: %s", error->message); - empathy_tp_file_close (tp_file); + empathy_tp_file_cancel (tp_file); return; } @@ -764,12 +830,13 @@ tp_file_weak_notify_cb (gpointer channel, /** * empathy_tp_file_new: - * @channel: a Telepathy channel + * @channel: a #TpChannel * * Creates a new #EmpathyTpFile wrapping @channel, or return a new ref to an - * existing #EmpathyTpFile for that channel. + * existing #EmpathyTpFile for that channel. The returned #EmpathyTpFile + * should be unrefed with g_object_unref() when finished with. * - * Returns: a new #EmpathyTpFile + * Return value: a new #EmpathyTpFile */ EmpathyTpFile * empathy_tp_file_new (TpChannel *channel) @@ -803,9 +870,9 @@ empathy_tp_file_new (TpChannel *channel) * empathy_tp_file_get_channel * @tp_file: an #EmpathyTpFile * - * Returns the Telepathy file transfer channel + * Returns the #TpChannel associated with @tp_file. * - * Returns: the #TpChannel + * Returns: the #TpChannel associated with @tp_file */ TpChannel * empathy_tp_file_get_channel (EmpathyTpFile *tp_file) @@ -874,7 +941,7 @@ tp_file_method_cb (TpChannel *channel, * @error: a #GError set if there is an error when opening @gfile * * Accepts a file transfer that's in the "local pending" state (i.e. - * TP_FILE_TRANSFER_STATE_LOCAL_PENDING). + * %TP_FILE_TRANSFER_STATE_LOCAL_PENDING). */ void empathy_tp_file_accept (EmpathyTpFile *tp_file, @@ -913,7 +980,7 @@ empathy_tp_file_accept (EmpathyTpFile *tp_file, * @error: a #GError set if there is an error when opening @gfile * * Offers a file transfer that's in the "not offered" state (i.e. - * TP_FILE_TRANSFER_STATE_NOT_OFFERED). + * %TP_FILE_TRANSFER_STATE_NOT_OFFERED). */ void empathy_tp_file_offer (EmpathyTpFile *tp_file, GFile *gfile, GError **error) @@ -934,6 +1001,14 @@ empathy_tp_file_offer (EmpathyTpFile *tp_file, GFile *gfile, GError **error) ¬hing, tp_file_method_cb, NULL, NULL, G_OBJECT (tp_file)); } +/** + * empathy_tp_file_get_contact: + * @tp_file: an #EmpathyTpFile + * + * Returns the #EmpathyContact that @tp_file is open with. + * + * Return value: the #EmpathyContact that @tp_file is open with. + */ EmpathyContact * empathy_tp_file_get_contact (EmpathyTpFile *tp_file) { @@ -948,6 +1023,14 @@ empathy_tp_file_get_filename (EmpathyTpFile *tp_file) return tp_file->priv->filename; } +/** + * empathy_tp_file_is_incoming: + * @tp_file: an #EmpathyTpFile + * + * Returns whether @tp_file is incoming. + * + * Return value: %TRUE if the @tp_file is incoming, otherwise %FALSE + */ gboolean empathy_tp_file_is_incoming (EmpathyTpFile *tp_file) { @@ -955,6 +1038,16 @@ empathy_tp_file_is_incoming (EmpathyTpFile *tp_file) return tp_file->priv->incoming; } +/** + * empathy_tp_file_get_state: + * @tp_file: an #EmpathyTpFile + * @reason: return location for state change reason, or %NULL + * + * Gets the current state of @tp_file. If @reason is not %NULL, then + * it is set to the reason of the last state change. + * + * Return value: a #TpFileTransferState + */ TpFileTransferState empathy_tp_file_get_state (EmpathyTpFile *tp_file, TpFileTransferStateChangeReason *reason) @@ -968,6 +1061,14 @@ empathy_tp_file_get_state (EmpathyTpFile *tp_file, return tp_file->priv->state; } +/** + * empathy_tp_file_get_size: + * @tp_file: an #EmpathyTpFile + * + * Gets the size of the file being transferred over @tp_file, in bytes. + * + * Return value: the size of the file being transferred, in bytes + */ guint64 empathy_tp_file_get_size (EmpathyTpFile *tp_file) { @@ -976,6 +1077,14 @@ empathy_tp_file_get_size (EmpathyTpFile *tp_file) return tp_file->priv->size; } +/** + * empathy_tp_file_get_transferred_bytes: + * @tp_file: an #EmpathyTpFile + * + * Gets the number of transferred bytes of @tp_file so far, in bytes. + * + * Return value: number of transferred bytes of @tp_file, in bytes + */ guint64 empathy_tp_file_get_transferred_bytes (EmpathyTpFile *tp_file) { @@ -983,13 +1092,17 @@ empathy_tp_file_get_transferred_bytes (EmpathyTpFile *tp_file) return tp_file->priv->transferred_bytes; } +/** + * empathy_tp_file_get_remaining_time: + * @tp_file: a #EmpathyTpFile + * + * Gets the estimated time remaining of @tp_file, in seconds. + * + * Return value: the estimated time remaining of @tp_file, in seconds + **/ gint empathy_tp_file_get_remaining_time (EmpathyTpFile *tp_file) { - time_t curr_time, elapsed_time; - gdouble time_per_byte; - gdouble remaining_time; - g_return_val_if_fail (EMPATHY_IS_TP_FILE (tp_file), -1); if (tp_file->priv->size == EMPATHY_TP_FILE_UNKNOWN_SIZE) @@ -998,14 +1111,28 @@ empathy_tp_file_get_remaining_time (EmpathyTpFile *tp_file) if (tp_file->priv->transferred_bytes == tp_file->priv->size) return 0; - curr_time = empathy_time_get_current (); - elapsed_time = curr_time - tp_file->priv->start_time; - time_per_byte = (gdouble) elapsed_time / - (gdouble) tp_file->priv->transferred_bytes; - remaining_time = time_per_byte * (tp_file->priv->size - - tp_file->priv->transferred_bytes); + return tp_file->priv->remaining_time; +} + +/** + * empathy_tp_file_get_speed: + * @tp_file: an #EmpathyTpFile + * + * Gets the current speed of the transfer @tp_file, in bytes per + * second. + * + * Return value: the current speed of the transfer @tp_file, in + * bytes per second + **/ +gdouble +empathy_tp_file_get_speed (EmpathyTpFile *tp_file) +{ + g_return_val_if_fail (EMPATHY_IS_TP_FILE (tp_file), 0); - return (gint) remaining_time; + if (tp_file->priv->transferred_bytes == tp_file->priv->size) + return 0; + + return tp_file->priv->speed; } const gchar * @@ -1015,6 +1142,12 @@ empathy_tp_file_get_content_type (EmpathyTpFile *tp_file) return tp_file->priv->content_type; } +/** + * empathy_tp_file_cancel: + * @tp_file: an #EmpathyTpFile + * + * Cancels the file transfer, @tp_file. + */ void empathy_tp_file_cancel (EmpathyTpFile *tp_file) { @@ -1028,12 +1161,18 @@ empathy_tp_file_cancel (EmpathyTpFile *tp_file) g_cancellable_cancel (tp_file->priv->cancellable); } -void -empathy_tp_file_close (EmpathyTpFile *tp_file) -{ - empathy_tp_file_cancel (tp_file); -} - +/** + * empathy_tp_file_is_ready: + * @tp_file: an #EmpathyTpFile + * + * Returns whether the file channel @tp_file is ready for use. + * + * @tp_file is classed as ready if its state is no longer + * %TP_FILE_TRANSFER_STATE_NONE, or if details about the remote + * contact have been fully received. + * + * Return value: %TRUE if @tp_file is ready for use + */ gboolean empathy_tp_file_is_ready (EmpathyTpFile *tp_file) { @@ -1053,6 +1192,12 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) object_class->set_property = tp_file_set_property; /* Construct-only properties */ + + /** + * EmpathyTpFile:channel: + * + * The #TpChannel associated with the #EmpathyTpFile. + */ g_object_class_install_property (object_class, PROP_CHANNEL, g_param_spec_object ("channel", @@ -1062,6 +1207,11 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + /** + * EmpathyTpFile:state: + * + * The #TpFileTransferState of the #EmpathyTpFile. + */ g_object_class_install_property (object_class, PROP_STATE, g_param_spec_uint ("state", @@ -1073,6 +1223,11 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + /** + * EmpathyTpFile:incoming: + * + * Whether the #EmpathyTpFile is incoming. + */ g_object_class_install_property (object_class, PROP_INCOMING, g_param_spec_boolean ("incoming", @@ -1082,6 +1237,12 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + /** + * EmpathyTpFile:ready: + * + * Whether the #EmpathyTpFile is ready to use. This property returns + * the same as empathy_tp_file_is_ready(). + */ g_object_class_install_property (object_class, PROP_READY, g_param_spec_boolean ("ready", @@ -1090,6 +1251,11 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) FALSE, G_PARAM_READABLE)); + /** + * EmpathyTpFile:filename: + * + * The name of the file being transferred. + */ g_object_class_install_property (object_class, PROP_FILENAME, g_param_spec_string ("filename", @@ -1098,6 +1264,11 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) "", G_PARAM_READWRITE)); + /** + * EmpathyTpFile:size: + * + * The size of the file being transferred. + */ g_object_class_install_property (object_class, PROP_SIZE, g_param_spec_uint64 ("size", @@ -1108,6 +1279,11 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) G_MAXUINT64, G_PARAM_READWRITE)); + /** + * EmpathyTpFile:content-type: + * + * The content-type of the file being transferred. + */ g_object_class_install_property (object_class, PROP_CONTENT_TYPE, g_param_spec_string ("content-type", @@ -1116,6 +1292,12 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) "", G_PARAM_READWRITE)); + /** + * EmpathyTpFile:content-hash-type: + * + * The type of hash type stored in #EmpathyTpFile:content-hash, + * from #TpFileHashType. + */ g_object_class_install_property (object_class, PROP_CONTENT_HASH_TYPE, g_param_spec_uint ("content-hash-type", @@ -1126,6 +1308,11 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) 0, G_PARAM_READWRITE)); + /** + * EmpathyTpFile:content-hash: + * + * A hash of the contents of the file being transferred. + */ g_object_class_install_property (object_class, PROP_CONTENT_HASH, g_param_spec_string ("content-hash", @@ -1134,6 +1321,11 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) "", G_PARAM_READWRITE)); + /** + * EmpathyTpFile:transferred-bytes: + * + * The number of bytes transferred in the #EmpathyTpFile. + */ g_object_class_install_property (object_class, PROP_TRANSFERRED_BYTES, g_param_spec_uint64 ("transferred-bytes", @@ -1144,6 +1336,23 @@ empathy_tp_file_class_init (EmpathyTpFileClass *klass) 0, G_PARAM_READWRITE)); + /** + * EmpathyTpFile::refresh: + * @tp_file: the #EmpathyTpFile + * + * The progress of @tp_file has changed. This can either be an update + * in the number of bytes transferred, or it can be to inform of the + * transfer stalling. + * + * This signal is designed for clients to provide more user feedback + * when something to do with @tp_file changes. To avoid emitting this + * signal too much, it is guaranteed that it will only ever be fired + * at least every two seconds. + */ + signals[REFRESH] = g_signal_new ("refresh", G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + g_type_class_add_private (object_class, sizeof (EmpathyTpFilePriv)); } diff --git a/libempathy/empathy-tp-file.h b/libempathy/empathy-tp-file.h index 5f239c8e0..1d4443153 100644 --- a/libempathy/empathy-tp-file.h +++ b/libempathy/empathy-tp-file.h @@ -52,6 +52,7 @@ struct _EmpathyTpFile { GObject parent; + /*<private>*/ EmpathyTpFilePriv *priv; }; @@ -68,7 +69,6 @@ TpChannel *empathy_tp_file_get_channel (EmpathyTpFile *tp_file); void empathy_tp_file_accept (EmpathyTpFile *tp_file, guint64 offset, GFile *gfile, GError **error); void empathy_tp_file_cancel (EmpathyTpFile *tp_file); -void empathy_tp_file_close (EmpathyTpFile *tp_file); void empathy_tp_file_offer (EmpathyTpFile *tp_file, GFile *gfile, GError **error); @@ -80,6 +80,7 @@ TpFileTransferState empathy_tp_file_get_state ( guint64 empathy_tp_file_get_size (EmpathyTpFile *tp_file); guint64 empathy_tp_file_get_transferred_bytes (EmpathyTpFile *tp_file); gint empathy_tp_file_get_remaining_time (EmpathyTpFile *tp_file); +gdouble empathy_tp_file_get_speed (EmpathyTpFile *tp_file); const gchar *empathy_tp_file_get_content_type (EmpathyTpFile *tp_file); gboolean empathy_tp_file_is_ready (EmpathyTpFile *tp_file); diff --git a/m4/shave.m4 b/m4/shave.m4 new file mode 100644 index 000000000..0a3509e59 --- /dev/null +++ b/m4/shave.m4 @@ -0,0 +1,77 @@ +dnl Make automake/libtool output more friendly to humans +dnl Damien Lespiau <damien.lespiau@gmail.com> +dnl +dnl SHAVE_INIT([shavedir],[default_mode]) +dnl +dnl shavedir: the directory where the shave scripts are, it defaults to +dnl $(top_builddir) +dnl default_mode: (enable|disable) default shave mode. This parameter +dnl controls shave's behaviour when no option has been +dnl given to configure. It defaults to disable. +dnl +dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just +dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrites CC and +dnl LIBTOOL, you don't want the configure tests to have these variables +dnl re-defined. +dnl * This macro requires GNU make's -s option. + +AC_DEFUN([_SHAVE_ARG_ENABLE], +[ + AC_ARG_ENABLE([shave], + AS_HELP_STRING( + [--enable-shave], + [use shave to make the build pretty [[default=$1]]]),, + [enable_shave=$1] + ) +]) + +AC_DEFUN([SHAVE_INIT], +[ + dnl you can tweak the default value of enable_shave + m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)]) + + if test x"$enable_shave" = xyes; then + dnl where can we find the shave scripts? + m4_if([$1],, + [shavedir="$ac_pwd"], + [shavedir="$ac_pwd/$1"]) + AC_SUBST(shavedir) + + dnl make is now quiet + AC_SUBST([MAKEFLAGS], [-s]) + AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`']) + + dnl we need sed + AC_CHECK_PROG(SED,sed,sed,false) + + dnl substitute libtool + SHAVE_SAVED_LIBTOOL=$LIBTOOL + LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'" + AC_SUBST(LIBTOOL) + + dnl substitute cc/cxx + SHAVE_SAVED_CC=$CC + SHAVE_SAVED_CXX=$CXX + SHAVE_SAVED_FC=$FC + SHAVE_SAVED_F77=$F77 + SHAVE_SAVED_OBJC=$OBJC + CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}" + CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}" + FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}" + F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}" + OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}" + AC_SUBST(CC) + AC_SUBST(CXX) + AC_SUBST(FC) + AC_SUBST(F77) + AC_SUBST(OBJC) + + V=@ + else + V=1 + fi + Q='$(V:1=)' + AC_SUBST(V) + AC_SUBST(Q) +]) + diff --git a/megaphone/data/Makefile.am b/megaphone/data/Makefile.am index c2e378fae..875756cd0 100644 --- a/megaphone/data/Makefile.am +++ b/megaphone/data/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + # Panel applet bonobo stuff serverdir = $(libdir)/bonobo/servers server_in_files = GNOME_Megaphone_Applet.server.in @@ -21,7 +23,7 @@ megaphonebindir = $(libexecdir) @INTLTOOL_SCHEMAS_RULE@ $(server_in_files): $(server_in_files:.server.in=.server.in.in) - sed -e "s|\@LIBEXECDIR\@|$(megaphonebindir)|" $< > $@ + $(QUIET_GEN)sed -e "s|\@LIBEXECDIR\@|$(megaphonebindir)|" $< > $@ DISTCLEANFILES = \ $(server_DATA) \ diff --git a/nothere/data/Makefile.am b/nothere/data/Makefile.am index ce60c3cb2..730406577 100644 --- a/nothere/data/Makefile.am +++ b/nothere/data/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + # Panel applet bonobo stuff serverdir = $(libdir)/bonobo/servers server_in_files = GNOME_NotHere_Applet.server.in @@ -21,7 +23,7 @@ notherebindir = $(libexecdir) @INTLTOOL_SCHEMAS_RULE@ $(server_in_files): $(server_in_files:.server.in=.server.in.in) - sed -e "s|\@LIBEXECDIR\@|$(notherebindir)|" $< > $@ + $(QUIET_GEN)sed -e "s|\@LIBEXECDIR\@|$(notherebindir)|" $< > $@ DISTCLEANFILES = \ $(server_DATA) \ @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: empathy.HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=empathy&component=general\n" -"POT-Creation-Date: 2009-04-21 15:44+0000\n" -"PO-Revision-Date: 2009-04-21 21:02+0200\n" +"POT-Creation-Date: 2009-04-24 20:08+0000\n" +"PO-Revision-Date: 2009-04-25 20:26+0200\n" "Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n" "Language-Team: Español <gnome-es-list@gnome.org>\n" "MIME-Version: 1.0\n" @@ -355,31 +355,31 @@ msgstr "" "predeterminado es ordenar por el nombre del contacto con el valor \"name" "\" (nombre). Un valor \"state\" (estado) ordenará la lista por el estado." -#: ../libempathy/empathy-tp-contact-list.c:732 ../src/empathy.c:271 +#: ../libempathy/empathy-tp-contact-list.c:727 ../src/empathy.c:278 msgid "People nearby" msgstr "Gente cerca" -#: ../libempathy/empathy-utils.c:252 +#: ../libempathy/empathy-utils.c:251 msgid "Available" msgstr "Disponible" -#: ../libempathy/empathy-utils.c:254 +#: ../libempathy/empathy-utils.c:253 msgid "Busy" msgstr "Ocupado" -#: ../libempathy/empathy-utils.c:257 +#: ../libempathy/empathy-utils.c:256 msgid "Away" msgstr "Ausente" -#: ../libempathy/empathy-utils.c:259 +#: ../libempathy/empathy-utils.c:258 msgid "Hidden" msgstr "Oculto" -#: ../libempathy/empathy-utils.c:262 +#: ../libempathy/empathy-utils.c:261 msgid "Offline" msgstr "Desconectado" -#: ../libempathy-gtk/empathy-account-chooser.c:325 +#: ../libempathy-gtk/empathy-account-chooser.c:419 msgid "All" msgstr "Todo" @@ -449,7 +449,7 @@ msgstr "_UIN ICQ:" msgid "_Charset:" msgstr "Conjunto de _caracteres:" -#: ../libempathy-gtk/empathy-account-widget-irc.c:244 +#: ../libempathy-gtk/empathy-account-widget-irc.c:241 msgid "New Network" msgstr "Red nueva" @@ -570,114 +570,118 @@ msgstr "_Ignorar invitaciones a conferencias y salas de chat" msgid "_Room List locale:" msgstr "Configuración de la lista de _salas:" -#: ../libempathy-gtk/empathy-avatar-chooser.c:462 -#: ../libempathy-gtk/empathy-avatar-chooser.c:538 +#: ../libempathy-gtk/empathy-avatar-chooser.c:449 +#: ../libempathy-gtk/empathy-avatar-chooser.c:525 msgid "Couldn't convert image" msgstr "No se pudo convertir la imagen" -#: ../libempathy-gtk/empathy-avatar-chooser.c:463 +#: ../libempathy-gtk/empathy-avatar-chooser.c:450 msgid "None of the accepted image formats is supported on your system" msgstr "Su sistema no soporta ninguno de los formatos de imagen aceptados" -#: ../libempathy-gtk/empathy-avatar-chooser.c:957 +#: ../libempathy-gtk/empathy-avatar-chooser.c:933 msgid "Select Your Avatar Image" msgstr "Seleccione su imagen de avatar" -#: ../libempathy-gtk/empathy-avatar-chooser.c:960 +#: ../libempathy-gtk/empathy-avatar-chooser.c:936 msgid "No Image" msgstr "Sin imagen" -#: ../libempathy-gtk/empathy-avatar-chooser.c:1022 +#: ../libempathy-gtk/empathy-avatar-chooser.c:998 msgid "Images" msgstr "Imágenes" -#: ../libempathy-gtk/empathy-avatar-chooser.c:1026 +#: ../libempathy-gtk/empathy-avatar-chooser.c:1002 msgid "All Files" msgstr "Todos los archivos" -#: ../libempathy-gtk/empathy-avatar-image.c:294 +#: ../libempathy-gtk/empathy-avatar-image.c:324 msgid "Click to enlarge" msgstr "Pulse para agrandar" -#: ../libempathy-gtk/empathy-chat.c:180 +#: ../libempathy-gtk/empathy-chat.c:178 msgid "Failed to reconnect this chat" msgstr "Falló al reconectar a este chat" -#: ../libempathy-gtk/empathy-chat.c:398 +#: ../libempathy-gtk/empathy-chat.c:396 msgid "Unsupported command" msgstr "Comando no soportado" -#: ../libempathy-gtk/empathy-chat.c:533 +#: ../libempathy-gtk/empathy-chat.c:531 msgid "offline" msgstr "desconectado" -#: ../libempathy-gtk/empathy-chat.c:536 +#: ../libempathy-gtk/empathy-chat.c:534 msgid "invalid contact" msgstr "contacto no válido" -#: ../libempathy-gtk/empathy-chat.c:539 +#: ../libempathy-gtk/empathy-chat.c:537 msgid "permission denied" msgstr "permiso denegado" -#: ../libempathy-gtk/empathy-chat.c:542 +#: ../libempathy-gtk/empathy-chat.c:540 msgid "too long message" msgstr "mensaje demasiado largo" -#: ../libempathy-gtk/empathy-chat.c:545 +#: ../libempathy-gtk/empathy-chat.c:543 msgid "not implemented" msgstr "no implementado" -#: ../libempathy-gtk/empathy-chat.c:548 +#: ../libempathy-gtk/empathy-chat.c:546 msgid "unknown" msgstr "desconocido" -#: ../libempathy-gtk/empathy-chat.c:552 +#: ../libempathy-gtk/empathy-chat.c:550 #, c-format msgid "Error sending message '%s': %s" msgstr "Error al enviar el mensaje «%s»: %s" -#: ../libempathy-gtk/empathy-chat.c:582 +#: ../libempathy-gtk/empathy-chat.c:580 #, c-format msgid "Topic set to: %s" msgstr "El tema se ha establecido a: %s" -#: ../libempathy-gtk/empathy-chat.c:584 +#: ../libempathy-gtk/empathy-chat.c:582 msgid "No topic defined" msgstr "No se ha definido el tema" -#: ../libempathy-gtk/empathy-chat.c:977 +#: ../libempathy-gtk/empathy-chat.c:951 +msgid "(No Suggestions)" +msgstr "(Sin sugerencias)" + +#: ../libempathy-gtk/empathy-chat.c:1005 msgid "Insert Smiley" msgstr "Insertar emoticono" #. send button -#: ../libempathy-gtk/empathy-chat.c:995 +#: ../libempathy-gtk/empathy-chat.c:1023 #: ../libempathy-gtk/empathy-ui-utils.c:1507 msgid "_Send" msgstr "E_nviar" -#: ../libempathy-gtk/empathy-chat.c:1029 -msgid "_Check Word Spelling..." -msgstr "_Comprobar ortografía…" +#: ../libempathy-gtk/empathy-chat.c:1057 +msgid "_Spelling Suggestions" +msgstr "_Sugerencias ortográficas" -#: ../libempathy-gtk/empathy-chat.c:1147 +#: ../libempathy-gtk/empathy-chat.c:1171 #, c-format msgid "%s has joined the room" msgstr "%s ha entrado en la sala" -#: ../libempathy-gtk/empathy-chat.c:1150 +#: ../libempathy-gtk/empathy-chat.c:1174 #, c-format msgid "%s has left the room" msgstr "%s ha dejado la sala" -#: ../libempathy-gtk/empathy-chat.c:1265 ../src/empathy-call-window.c:756 +#: ../libempathy-gtk/empathy-chat.c:1289 ../src/empathy-call-window.c:757 msgid "Disconnected" msgstr "Desconectado" -#: ../libempathy-gtk/empathy-chat.c:1660 +#: ../libempathy-gtk/empathy-chat.c:1700 msgid "Connected" msgstr "Conectado" -#: ../libempathy-gtk/empathy-chat.c:1710 +#: ../libempathy-gtk/empathy-chat.c:1750 #: ../libempathy-gtk/empathy-log-window.c:501 msgid "Conversation" msgstr "Conversación" @@ -700,23 +704,20 @@ msgstr "_Abrir enlace" msgid "%A %B %d %Y" msgstr "%A %d %B %Y" -#: ../libempathy-gtk/empathy-contact-dialogs.c:181 -msgid "Personal Information" -msgstr "Información personal" - -#: ../libempathy-gtk/empathy-contact-dialogs.c:184 +#: ../libempathy-gtk/empathy-contact-dialogs.c:179 +#: ../libempathy-gtk/empathy-contact-dialogs.c:237 msgid "Edit Contact Information" msgstr "Editar información del contacto" -#: ../libempathy-gtk/empathy-contact-dialogs.c:187 -msgid "Contact Information" -msgstr "Información del contacto" +#: ../libempathy-gtk/empathy-contact-dialogs.c:288 +msgid "Personal Information" +msgstr "Información personal" -#: ../libempathy-gtk/empathy-contact-dialogs.c:269 +#: ../libempathy-gtk/empathy-contact-dialogs.c:368 msgid "I would like to add you to my contact list." msgstr "Me gustaría añadirte a mi lista de contactos." -#: ../libempathy-gtk/empathy-contact-dialogs.c:293 +#: ../libempathy-gtk/empathy-contact-dialogs.c:392 msgid "New Contact" msgstr "Contacto nuevo" @@ -728,30 +729,30 @@ msgstr "Decidir _luego" msgid "Subscription Request" msgstr "Petición de suscripción" -#: ../libempathy-gtk/empathy-contact-list-view.c:1255 +#: ../libempathy-gtk/empathy-contact-list-view.c:1315 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "¿Realmente quiere quitar el grupo «%s»?" -#: ../libempathy-gtk/empathy-contact-list-view.c:1257 +#: ../libempathy-gtk/empathy-contact-list-view.c:1317 msgid "Removing group" msgstr "Quitando grupo" -#: ../libempathy-gtk/empathy-contact-list-view.c:1304 -#: ../libempathy-gtk/empathy-contact-list-view.c:1383 +#: ../libempathy-gtk/empathy-contact-list-view.c:1364 +#: ../libempathy-gtk/empathy-contact-list-view.c:1443 msgid "_Remove" msgstr "_Quitar" -#: ../libempathy-gtk/empathy-contact-list-view.c:1334 +#: ../libempathy-gtk/empathy-contact-list-view.c:1394 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "¿Realmente quiere quitar el contacto «%s»?" -#: ../libempathy-gtk/empathy-contact-list-view.c:1336 +#: ../libempathy-gtk/empathy-contact-list-view.c:1396 msgid "Removing contact" msgstr "Quitando el contacto" -#: ../libempathy-gtk/empathy-contact-list-view.c:1341 +#: ../libempathy-gtk/empathy-contact-list-view.c:1401 msgid "Sorry, I don't want you in my contact list anymore." msgstr "Lo siento, no te quiero en mi lista de contactos." @@ -761,7 +762,6 @@ msgid "_Chat" msgstr "_Chat" #: ../libempathy-gtk/empathy-contact-menu.c:161 -#| msgid "_Call" msgctxt "menu item" msgid "_Call" msgstr "_Llamar" @@ -792,24 +792,24 @@ msgstr "Invitando a esta sala" msgid "_Invite to chatroom" msgstr "_Invitar a la sala" -#: ../libempathy-gtk/empathy-contact-selector.c:112 +#: ../libempathy-gtk/empathy-contact-selector.c:129 msgid "Select a contact" msgstr "Seleccionar un contacto" -#: ../libempathy-gtk/empathy-contact-widget.c:353 +#: ../libempathy-gtk/empathy-contact-widget.c:413 msgid "Save Avatar" msgstr "Guardar avatar" -#: ../libempathy-gtk/empathy-contact-widget.c:409 +#: ../libempathy-gtk/empathy-contact-widget.c:469 msgid "Unable to save avatar" msgstr "No se pudo guardar el avatar" -#: ../libempathy-gtk/empathy-contact-widget.c:904 +#: ../libempathy-gtk/empathy-contact-widget.c:952 msgid "Select" msgstr "Seleccionar" -#: ../libempathy-gtk/empathy-contact-widget.c:913 -#: ../src/empathy-main-window.c:882 +#: ../libempathy-gtk/empathy-contact-widget.c:961 +#: ../src/empathy-main-window.c:879 msgid "Group" msgstr "Grupo" @@ -952,66 +952,60 @@ msgstr "Conversación nueva" #. COL_DISPLAY_MARKUP #. COL_STATUS_CUSTOMISABLE #. COL_TYPE -#: ../libempathy-gtk/empathy-presence-chooser.c:162 +#: ../libempathy-gtk/empathy-presence-chooser.c:169 msgid "Custom Message..." msgstr "Mensaje personalizado…" -#: ../libempathy-gtk/empathy-presence-chooser.c:217 +#: ../libempathy-gtk/empathy-presence-chooser.c:225 msgid "Edit Custom Messages..." msgstr "Editar mensajes personalizados…" -#: ../libempathy-gtk/empathy-presence-chooser.c:316 +#: ../libempathy-gtk/empathy-presence-chooser.c:324 msgid "Click to remove this status as a favorite" msgstr "Pulse pare eliminar este estado de los favoritos" -#: ../libempathy-gtk/empathy-presence-chooser.c:325 +#: ../libempathy-gtk/empathy-presence-chooser.c:333 msgid "Click to make this status a favorite" msgstr "Pulse para hacer este estado uno favorito" -#: ../libempathy-gtk/empathy-presence-chooser.c:359 +#: ../libempathy-gtk/empathy-presence-chooser.c:367 msgid "Set status" msgstr "Establecer estado" -#: ../libempathy-gtk/empathy-presence-chooser.c:766 +#: ../libempathy-gtk/empathy-presence-chooser.c:776 msgid "Set your presence and current status" msgstr "Establecer su presencia y estado actual" #. Custom messages -#: ../libempathy-gtk/empathy-presence-chooser.c:987 +#: ../libempathy-gtk/empathy-presence-chooser.c:1011 msgid "Custom messages..." msgstr "Mensajes personalizados…" -#: ../libempathy-gtk/empathy-presence-chooser.ui.h:1 -msgid "Custom message" -msgstr "Mensaje personalizado…" +#: ../libempathy-gtk/empathy-status-preset-dialog.c:360 +msgid "Enter Custom Message" +msgstr "Introducir mensaje personalizado" -#: ../libempathy-gtk/empathy-presence-chooser.ui.h:2 -msgid "Message:" -msgstr "Mensaje:" +#: ../libempathy-gtk/empathy-status-preset-dialog.c:482 +msgid "Edit Custom Messages" +msgstr "Editar mensajes personalizados" -#: ../libempathy-gtk/empathy-presence-chooser.ui.h:3 -msgid "Save message" -msgstr "Guardar mensaje" - -#: ../libempathy-gtk/empathy-presence-chooser.ui.h:4 -msgid "Status:" -msgstr "Estado:" - -#: ../libempathy-gtk/empathy-spell-dialog.c:81 -msgid "Word" -msgstr "Palabra" +#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1 +msgid "Add _New Preset" +msgstr "" -#: ../libempathy-gtk/empathy-spell-dialog.c:255 -msgid "Suggestions for the word" -msgstr "Sugerencias para la palabra" +#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2 +#, fuzzy +#| msgid "Save message" +msgid "Saved Presets" +msgstr "Guardar mensaje" -#: ../libempathy-gtk/empathy-spell-dialog.ui.h:1 -msgid "Spell Checker" -msgstr "Corrector ortográfico" +#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:3 +msgid "gtk-add" +msgstr "gtk-add" -#: ../libempathy-gtk/empathy-spell-dialog.ui.h:2 -msgid "Suggestions for the word:" -msgstr "Sugerencias para la palabra:" +#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:4 +msgid "gtk-remove" +msgstr "gtk-remove" #: ../libempathy-gtk/empathy-theme-manager.c:60 msgid "Classic" @@ -1263,7 +1257,7 @@ msgid "Megaphone" msgstr "Megáfono" #: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2 -#: ../megaphone/src/megaphone-applet.c:417 +#: ../megaphone/src/megaphone-applet.c:527 msgid "Talk!" msgstr "Hablar" @@ -1281,11 +1275,11 @@ msgstr "_Información" msgid "_Preferences" msgstr "_Preferencias" -#: ../megaphone/src/megaphone-applet.c:255 +#: ../megaphone/src/megaphone-applet.c:168 msgid "Please configure a contact." msgstr "Configure un contacto." -#: ../megaphone/src/megaphone-applet.c:348 +#: ../megaphone/src/megaphone-applet.c:258 msgid "Select contact..." msgstr "Seleccione un contacto…" @@ -1298,19 +1292,19 @@ msgstr "Presencia" msgid "Set your own presence" msgstr "Establezca su propia presencia" -#: ../src/empathy.c:430 +#: ../src/empathy.c:437 msgid "Don't connect on startup" msgstr "No conectarse automáticamente al inicio" -#: ../src/empathy.c:434 +#: ../src/empathy.c:441 msgid "Don't show the contact list on startup" msgstr "No mostrar la lista de contactos al inicio" -#: ../src/empathy.c:438 +#: ../src/empathy.c:445 msgid "Show the accounts dialog" msgstr "Mostrar el diálogo de las cuentas" -#: ../src/empathy.c:450 +#: ../src/empathy.c:457 msgid "- Empathy Instant Messenger" msgstr "- Mensajería instantánea Empathy" @@ -1365,12 +1359,12 @@ msgid "Accounts" msgstr "Cuentas" #. To translator: %s is the protocol name -#: ../src/empathy-accounts-dialog.c:833 +#: ../src/empathy-accounts-dialog.c:834 #, c-format msgid "New %s account" msgstr "Cuenta de %s nueva" -#: ../src/empathy-accounts-dialog.c:943 +#: ../src/empathy-accounts-dialog.c:944 #, c-format msgid "" "You are about to remove your %s account!\n" @@ -1379,7 +1373,7 @@ msgstr "" "Va a eliminar su cuenta %s\n" "¿Seguro que quiere continuar?" -#: ../src/empathy-accounts-dialog.c:949 +#: ../src/empathy-accounts-dialog.c:950 msgid "" "Any associated conversations and chat rooms will NOT be removed if you " "decide to proceed.\n" @@ -1429,48 +1423,47 @@ msgid "Type:" msgstr "Tipo:" #: ../src/empathy-accounts-dialog.ui.h:10 -#| msgid "_Add Contact..." msgid "_Add..." msgstr "_Añadir…" -#: ../src/empathy-call-window.c:319 +#: ../src/empathy-call-window.c:320 msgid "Contrast" msgstr "Contraste" -#: ../src/empathy-call-window.c:322 +#: ../src/empathy-call-window.c:323 msgid "Brightness" msgstr "Brillo" -#: ../src/empathy-call-window.c:325 +#: ../src/empathy-call-window.c:326 msgid "Gamma" msgstr "Gamma" -#: ../src/empathy-call-window.c:429 +#: ../src/empathy-call-window.c:430 msgid "Volume" msgstr "Volumen" -#: ../src/empathy-call-window.c:532 +#: ../src/empathy-call-window.c:533 msgid "_Sidebar" msgstr "Barra _lateral" -#: ../src/empathy-call-window.c:550 +#: ../src/empathy-call-window.c:551 msgid "Dialpad" msgstr "Teclado de llamada" -#: ../src/empathy-call-window.c:556 +#: ../src/empathy-call-window.c:557 msgid "Audio input" msgstr "Entrada de sonido" -#: ../src/empathy-call-window.c:560 +#: ../src/empathy-call-window.c:561 msgid "Video input" msgstr "Entrada de vídeo" -#: ../src/empathy-call-window.c:573 +#: ../src/empathy-call-window.c:574 msgid "Connecting..." msgstr "Conectando…" #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-call-window.c:837 +#: ../src/empathy-call-window.c:839 #, c-format msgid "Connected — %d:%02dm" msgstr "Conectado — %d:%02dm" @@ -1550,59 +1543,59 @@ msgstr "_Rechazar" msgid "_Answer" msgstr "Re_spuesta" -#: ../src/empathy-event-manager.c:516 +#: ../src/empathy-event-manager.c:507 #, c-format msgid "Incoming call from %s" msgstr "Llamada entrante de %s" -#: ../src/empathy-event-manager.c:564 +#: ../src/empathy-event-manager.c:547 #, c-format msgid "%s is offering you an invitation" msgstr "%s le está ofreciendo una invitación" -#: ../src/empathy-event-manager.c:570 +#: ../src/empathy-event-manager.c:553 msgid "An external application will be started to handle it." msgstr "Se iniciará una aplicación externa para manejarla." -#: ../src/empathy-event-manager.c:575 +#: ../src/empathy-event-manager.c:558 msgid "You don't have the needed external application to handle it." msgstr "No tiene la aplicación externa necesaria para manejarla." -#: ../src/empathy-event-manager.c:698 +#: ../src/empathy-event-manager.c:685 msgid "Room invitation" msgstr "Invitación a una sala" -#: ../src/empathy-event-manager.c:701 +#: ../src/empathy-event-manager.c:688 #, c-format msgid "%s is inviting you to join %s" msgstr "%s le está invitando a unirse a %s" #. Decline button -#: ../src/empathy-event-manager.c:709 ../src/empathy-ft-manager.c:1031 +#: ../src/empathy-event-manager.c:696 ../src/empathy-ft-manager.c:1037 msgid "_Decline" msgstr "_Rechazar" -#: ../src/empathy-event-manager.c:714 +#: ../src/empathy-event-manager.c:701 #: ../src/empathy-new-chatroom-dialog.ui.h:6 msgid "_Join" msgstr "_Unirse" -#: ../src/empathy-event-manager.c:744 +#: ../src/empathy-event-manager.c:740 #, c-format msgid "%s invited you to join %s" msgstr "%s le ha invitado a unirse a %s" -#: ../src/empathy-event-manager.c:867 +#: ../src/empathy-event-manager.c:848 #, c-format msgid "Incoming file transfer from %s" msgstr "Transferencia de archivo entrante de %s" -#: ../src/empathy-event-manager.c:961 +#: ../src/empathy-event-manager.c:923 #, c-format msgid "Subscription requested by %s" msgstr "Petición de suscripción de %s" -#: ../src/empathy-event-manager.c:965 +#: ../src/empathy-event-manager.c:927 #, c-format msgid "" "\n" @@ -1652,109 +1645,115 @@ msgid "Unknown reason" msgstr "Razón desconocida" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:226 +#: ../src/empathy-ft-manager.c:228 #, c-format msgid "Receiving \"%s\" from %s" msgstr "Recibiendo «%s» de %s" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:229 +#: ../src/empathy-ft-manager.c:231 #, c-format msgid "Sending \"%s\" to %s" msgstr "Enviando «%s» a %s" -#: ../src/empathy-ft-manager.c:239 +#: ../src/empathy-ft-manager.c:242 msgctxt "file size" msgid "Unknown" msgstr "Desconocido" #. translators: first %s is the transferred size, second %s is #. * the total file size -#: ../src/empathy-ft-manager.c:247 +#: ../src/empathy-ft-manager.c:251 #, c-format -msgid "%s of %s" -msgstr "%s de %s" +#| msgid "%s of %s" +msgid "%s of %s at %s/s" +msgstr "%s de %s en %s/s" -#: ../src/empathy-ft-manager.c:254 +#: ../src/empathy-ft-manager.c:259 msgid "Waiting for the other participant's response" msgstr "Esperando la respuesta del otro participante" -#: ../src/empathy-ft-manager.c:264 +#: ../src/empathy-ft-manager.c:269 #, c-format msgid "\"%s\" received from %s" msgstr "«%s» recibido de %s" -#: ../src/empathy-ft-manager.c:270 +#: ../src/empathy-ft-manager.c:275 #, c-format msgid "\"%s\" sent to %s" msgstr "«%s» enviado a %s" -#: ../src/empathy-ft-manager.c:273 +#: ../src/empathy-ft-manager.c:278 msgid "File transfer completed" msgstr "Transferencia de archivo completada" -#: ../src/empathy-ft-manager.c:282 +#: ../src/empathy-ft-manager.c:287 #, c-format msgid "\"%s\" receiving from %s" msgstr "«%s» recibiendo de %s" -#: ../src/empathy-ft-manager.c:288 +#: ../src/empathy-ft-manager.c:293 #, c-format msgid "\"%s\" sending to %s" msgstr "«%s» enviando a %s" -#: ../src/empathy-ft-manager.c:291 +#: ../src/empathy-ft-manager.c:296 #, c-format msgid "File transfer canceled: %s" msgstr "Transferencia de archivo cancelada: %s" -#: ../src/empathy-ft-manager.c:306 +#: ../src/empathy-ft-manager.c:310 +msgctxt "remaining time" +msgid "Stalled" +msgstr "Parado" + +#: ../src/empathy-ft-manager.c:313 msgctxt "remaining time" msgid "Unknown" msgstr "Desconocido" -#: ../src/empathy-ft-manager.c:366 +#: ../src/empathy-ft-manager.c:372 msgctxt "file transfer percent" msgid "Unknown" msgstr "Desconocido" -#: ../src/empathy-ft-manager.c:662 +#: ../src/empathy-ft-manager.c:668 msgid "%" msgstr "%" -#: ../src/empathy-ft-manager.c:674 +#: ../src/empathy-ft-manager.c:680 msgid "File" msgstr "Archivo" -#: ../src/empathy-ft-manager.c:696 +#: ../src/empathy-ft-manager.c:702 msgid "Remaining" msgstr "Restantes" -#: ../src/empathy-ft-manager.c:894 +#: ../src/empathy-ft-manager.c:900 msgid "Cannot save file to this location" msgstr "No se puede guardar el archivo en esta ubicación" -#: ../src/empathy-ft-manager.c:940 +#: ../src/empathy-ft-manager.c:946 msgid "Save file as..." msgstr "Guardar archivo como…" -#: ../src/empathy-ft-manager.c:1010 +#: ../src/empathy-ft-manager.c:1016 msgid "unknown size" msgstr "tamaño desconocido" -#: ../src/empathy-ft-manager.c:1016 +#: ../src/empathy-ft-manager.c:1022 #, c-format msgid "%s would like to send you a file" msgstr "%s quiere enviarle un archivo" #. Translators: the first %s is the file name, the second %s is the file size -#: ../src/empathy-ft-manager.c:1022 +#: ../src/empathy-ft-manager.c:1028 #, c-format msgid "Do you want to accept the file \"%s\" (%s)?" msgstr "¿Quiere aceptar el archivo «%s» (%s)?" #. Accept button -#: ../src/empathy-ft-manager.c:1040 +#: ../src/empathy-ft-manager.c:1046 msgid "_Accept" msgstr "_Aceptar" @@ -1793,71 +1792,71 @@ msgstr "" msgid "Import Accounts" msgstr "Importar cuentas" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:392 msgid "_Edit account" msgstr "_Editar cuenta" -#: ../src/empathy-main-window.c:496 +#: ../src/empathy-main-window.c:495 msgid "No error specified" msgstr "No se especificó el error" -#: ../src/empathy-main-window.c:499 +#: ../src/empathy-main-window.c:498 msgid "Network error" msgstr "Error de red" -#: ../src/empathy-main-window.c:502 +#: ../src/empathy-main-window.c:501 msgid "Authentication failed" msgstr "Falló la autenticación" -#: ../src/empathy-main-window.c:505 +#: ../src/empathy-main-window.c:504 msgid "Encryption error" msgstr "Error de cifrado" -#: ../src/empathy-main-window.c:508 +#: ../src/empathy-main-window.c:507 msgid "Name in use" msgstr "Nombre en uso" -#: ../src/empathy-main-window.c:511 +#: ../src/empathy-main-window.c:510 msgid "Certificate not provided" msgstr "No se proporcionó el certificado" -#: ../src/empathy-main-window.c:514 +#: ../src/empathy-main-window.c:513 msgid "Certificate untrusted" msgstr "Certificado sin confianza" -#: ../src/empathy-main-window.c:517 +#: ../src/empathy-main-window.c:516 msgid "Certificate expired" msgstr "El certificado ha expirado" -#: ../src/empathy-main-window.c:520 +#: ../src/empathy-main-window.c:519 msgid "Certificate not activated" msgstr "El certificado no está activado" -#: ../src/empathy-main-window.c:523 +#: ../src/empathy-main-window.c:522 msgid "Certificate hostname mismatch" msgstr "El nombre del equipo del certificado no coincide" -#: ../src/empathy-main-window.c:526 +#: ../src/empathy-main-window.c:525 msgid "Certificate fingerprint mismatch" msgstr "La huella del certificado no coincide" -#: ../src/empathy-main-window.c:529 +#: ../src/empathy-main-window.c:528 msgid "Certificate self-signed" msgstr "Certificado firmado consigo mismo" -#: ../src/empathy-main-window.c:532 +#: ../src/empathy-main-window.c:531 msgid "Certificate error" msgstr "Error del certificado" -#: ../src/empathy-main-window.c:535 +#: ../src/empathy-main-window.c:534 msgid "Unknown error" msgstr "Error desconocido" -#: ../src/empathy-main-window.c:865 +#: ../src/empathy-main-window.c:862 msgid "Contact" msgstr "Contacto" -#: ../src/empathy-main-window.c:1205 +#: ../src/empathy-main-window.c:1178 msgid "Show and edit accounts" msgstr "Mostrar y editar cuentas" @@ -1921,7 +1920,7 @@ msgstr "Sala de chat" msgid "Members" msgstr "Miembros" -#: ../src/empathy-new-chatroom-dialog.c:447 +#: ../src/empathy-new-chatroom-dialog.c:449 #, c-format msgctxt "" "Room/Join's roomlist tooltip. Parametersare a channel name, yes/no, yes/no " @@ -1937,13 +1936,13 @@ msgstr "" "Contraseña necesaria: %s\n" "Miembros: %s" -#: ../src/empathy-new-chatroom-dialog.c:449 -#: ../src/empathy-new-chatroom-dialog.c:450 +#: ../src/empathy-new-chatroom-dialog.c:451 +#: ../src/empathy-new-chatroom-dialog.c:452 msgid "Yes" msgstr "Sí" -#: ../src/empathy-new-chatroom-dialog.c:449 -#: ../src/empathy-new-chatroom-dialog.c:450 +#: ../src/empathy-new-chatroom-dialog.c:451 +#: ../src/empathy-new-chatroom-dialog.c:452 msgid "No" msgstr "No" @@ -2142,6 +2141,33 @@ msgstr "" "Se le ha ofrecido una invitación para el servicio %s pero no tiene la " "aplicación necesaria para manejarla" +#~ msgid "_Check Word Spelling..." +#~ msgstr "_Comprobar ortografía…" + +#~ msgid "Contact Information" +#~ msgstr "Información del contacto" + +#~ msgid "Custom message" +#~ msgstr "Mensaje personalizado…" + +#~ msgid "Message:" +#~ msgstr "Mensaje:" + +#~ msgid "Status:" +#~ msgstr "Estado:" + +#~ msgid "Word" +#~ msgstr "Palabra" + +#~ msgid "Suggestions for the word" +#~ msgstr "Sugerencias para la palabra" + +#~ msgid "Spell Checker" +#~ msgstr "Corrector ortográfico" + +#~ msgid "Suggestions for the word:" +#~ msgstr "Sugerencias para la palabra:" + #~ msgid "Forget password and clear the entry." #~ msgstr "Olvidar la contraseña y limpiar la entrada." @@ -2323,15 +2349,9 @@ msgstr "" #~ "Indica si se debe mostrar una ventana emergente cuando un contacto vuelva " #~ "a estar disponible." -#~ msgid "gtk-clear" -#~ msgstr "gtk-clear" - #~ msgid "gtk-cancel" #~ msgstr "gtk-cancel" -#~ msgid "gtk-ok" -#~ msgstr "gtk-ok" - #~ msgid "Invitation Error" #~ msgstr "Error en la invitación" diff --git a/python/pyempathy/Makefile.am b/python/pyempathy/Makefile.am index 8ec61ff8e..ef6faa0a7 100644 --- a/python/pyempathy/Makefile.am +++ b/python/pyempathy/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + PYDEFS=`pkg-config --variable=defsdir pygtk-2.0` AM_CPPFLAGS = \ @@ -31,7 +33,7 @@ empathy_la_LDFLAGS = \ -module -avoid-version pyempathy.c: pyempathy.override pyempathy.defs - $(PYGOBJECTCODEGEN) \ + $(QUIET_GEN)$(PYGOBJECTCODEGEN) \ --prefix empathy \ --register $(PYDEFS)/gdk-types.defs \ --register $(PYDEFS)/gtk-types.defs \ diff --git a/python/pyempathy/pyempathy.defs b/python/pyempathy/pyempathy.defs index 3e9fd624c..6f8f0f65d 100644 --- a/python/pyempathy/pyempathy.defs +++ b/python/pyempathy/pyempathy.defs @@ -474,6 +474,30 @@ (return-type "EmpathyTpChat*") ) +(define-method set_tp_chat + (of-object "EmpathyChatroom") + (c-name "empathy_chatroom_set_tp_chat") + (return-type "none") + (parameters + '("EmpathyTpChat*" "tp_chat") + ) +) + +(define-method is_favorite + (of-object "EmpathyChatroom") + (c-name "empathy_chatroom_is_favorite") + (return-type "gboolean") +) + +(define-method set_favorite + (of-object "EmpathyChatroom") + (c-name "empathy_chatroom_set_favorite") + (return-type "none") + (parameters + '("gboolean" "favorite") + ) +) + ;; From empathy-chatroom-manager.h @@ -642,6 +666,17 @@ ) ) +(define-function contact_new_for_log + (c-name "empathy_contact_new_for_log") + (return-type "EmpathyContact*") + (parameters + '("McAccount*" "account") + '("const-gchar*" "id") + '("const-gchar*" "name") + '("gboolean" "is_user") + ) +) + (define-method get_tp_contact (of-object "EmpathyContact") (c-name "empathy_contact_get_tp_contact") @@ -2187,7 +2222,7 @@ (parameters '("guint" "n_ids") '("const-gchar*-const*" "ids") - '("EmpathyTpContactFactoryGotContactsCb" "callback") + '("EmpathyTpContactFactoryContactsByIdCb" "callback") '("gpointer" "user_data") '("GDestroyNotify" "destroy") '("GObject*" "weak_object") @@ -2201,7 +2236,33 @@ (parameters '("guint" "n_handles") '("const-TpHandle*" "handles") - '("EmpathyTpContactFactoryGotContactsCb" "callback") + '("EmpathyTpContactFactoryContactsByHandleCb" "callback") + '("gpointer" "user_data") + '("GDestroyNotify" "destroy") + '("GObject*" "weak_object") + ) +) + +(define-method get_from_id + (of-object "EmpathyTpContactFactory") + (c-name "empathy_tp_contact_factory_get_from_id") + (return-type "none") + (parameters + '("const-gchar*" "id") + '("EmpathyTpContactFactoryContactCb" "callback") + '("gpointer" "user_data") + '("GDestroyNotify" "destroy") + '("GObject*" "weak_object") + ) +) + +(define-method get_from_handle + (of-object "EmpathyTpContactFactory") + (c-name "empathy_tp_contact_factory_get_from_handle") + (return-type "none") + (parameters + '("TpHandle" "handle") + '("EmpathyTpContactFactoryContactCb" "callback") '("gpointer" "user_data") '("GDestroyNotify" "destroy") '("GObject*" "weak_object") @@ -2306,12 +2367,6 @@ (return-type "none") ) -(define-method close - (of-object "EmpathyTpFile") - (c-name "empathy_tp_file_close") - (return-type "none") -) - (define-method offer (of-object "EmpathyTpFile") (c-name "empathy_tp_file_offer") @@ -2367,6 +2422,12 @@ (return-type "gint") ) +(define-method get_speed + (of-object "EmpathyTpFile") + (c-name "empathy_tp_file_get_speed") + (return-type "gdouble") +) + (define-method get_content_type (of-object "EmpathyTpFile") (c-name "empathy_tp_file_get_content_type") diff --git a/python/pyempathygtk/Makefile.am b/python/pyempathygtk/Makefile.am index 84204e764..3f4c6d52d 100644 --- a/python/pyempathygtk/Makefile.am +++ b/python/pyempathygtk/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + PYDEFS=`pkg-config --variable=defsdir pygtk-2.0` AM_CPPFLAGS = \ @@ -31,7 +33,7 @@ empathygtk_la_LDFLAGS = \ -module -avoid-version pyempathygtk.c: pyempathygtk.override pyempathygtk.defs - $(PYGOBJECTCODEGEN) \ + $(QUIET_GEN)$(PYGOBJECTCODEGEN) \ --prefix empathy \ --register $(PYDEFS)/gdk-types.defs \ --register $(PYDEFS)/gtk-types.defs \ diff --git a/python/pyempathygtk/pyempathygtk.defs b/python/pyempathygtk/pyempathygtk.defs index df829a031..816261d39 100644 --- a/python/pyempathygtk/pyempathygtk.defs +++ b/python/pyempathygtk/pyempathygtk.defs @@ -278,9 +278,9 @@ (return-type "GtkWidget*") ) -(define-method get_account +(define-method dup_account (of-object "EmpathyAccountChooser") - (c-name "empathy_account_chooser_get_account") + (c-name "empathy_account_chooser_dup_account") (return-type "McAccount*") ) @@ -1145,9 +1145,9 @@ ) ) -(define-method get_selected +(define-method dup_selected (of-object "EmpathyContactListView") - (c-name "empathy_contact_list_view_get_selected") + (c-name "empathy_contact_list_view_dup_selected") (return-type "EmpathyContact*") ) @@ -1546,8 +1546,8 @@ (return-type "GtkWidget*") ) -(define-function profile_chooser_get_selected - (c-name "empathy_profile_chooser_get_selected") +(define-function profile_chooser_dup_selected + (c-name "empathy_profile_chooser_dup_selected") (return-type "McProfile*") (parameters '("GtkWidget*" "widget") diff --git a/shave-libtool.in b/shave-libtool.in new file mode 100644 index 000000000..1f3a720c1 --- /dev/null +++ b/shave-libtool.in @@ -0,0 +1,69 @@ +#!/bin/sh + +# we need sed +SED=@SED@ +if test -z "$SED" ; then +SED=sed +fi + +lt_unmangle () +{ + last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'` +} + +# the real libtool to use +LIBTOOL="$1" +shift + +# if 1, don't print anything, the underlaying wrapper will do it +pass_though=0 + +# scan the arguments, keep the right ones for libtool, and discover the mode +preserved_args= +while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --mode=*) + mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'` + preserved_args="$preserved_args $opt" + ;; + -o) + lt_output="$1" + preserved_args="$preserved_args $opt" + ;; + *) + preserved_args="$preserved_args $opt" + ;; + esac +done + +case "$mode" in +compile) + # shave will be called and print the actual CC/CXX/LINK line + preserved_args="$preserved_args --shave-mode=$mode" + pass_though=1 + ;; +link) + preserved_args="$preserved_args --shave-mode=$mode" + Q=" LINK " + ;; +*) + # let's u + # echo "*** libtool: Unimplemented mode: $mode, fill a bug report" + ;; +esac + +lt_unmangle "$lt_output" +output=$last_result + +if test -z $V; then + if test $pass_though -eq 0; then + echo "$Q$output" + fi + $LIBTOOL --silent $preserved_args +else + echo $LIBTOOL $preserved_args + $LIBTOOL $preserved_args +fi diff --git a/shave.in b/shave.in new file mode 100644 index 000000000..5c16f27ae --- /dev/null +++ b/shave.in @@ -0,0 +1,79 @@ +#!/bin/sh + +# we need sed +SED=@SED@ +if test -z "$SED" ; then +SED=sed +fi + +lt_unmangle () +{ + last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'` +} + +# the tool to wrap (cc, cxx, ar, ranlib, ..) +tool="$1" +shift + +# the reel tool (to call) +REEL_TOOL="$1" +shift + +pass_through=0 +preserved_args= +while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --shave-mode=*) + mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'` + ;; + -o) + lt_output="$1" + preserved_args="$preserved_args $opt" + ;; + *) + preserved_args="$preserved_args $opt" + ;; + esac +done + +# mode=link is handled in the libtool wrapper +case "$mode,$tool" in +link,*) + pass_through=1 + ;; +*,cxx) + Q=" CXX " + ;; +*,cc) + Q=" CC " + ;; +*,fc) + Q=" FC " + ;; +*,f77) + Q=" F77 " + ;; +*,objc) + Q=" OBJC " + ;; +*,*) + # should not happen + Q=" CC " + ;; +esac + +lt_unmangle "$lt_output" +output=$last_result + +if test -z $V; then + if test $pass_through -eq 0; then + echo "$Q$output" + fi + $REEL_TOOL $preserved_args +else + echo $REEL_TOOL $preserved_args + $REEL_TOOL $preserved_args +fi diff --git a/src/Makefile.am b/src/Makefile.am index 76a5aa77d..f24ef3e95 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + AM_CPPFLAGS = \ -I$(top_srcdir) \ $(EMPATHY_CFLAGS) \ @@ -63,7 +65,7 @@ dist_man_MANS = \ # rules for making the glib enum objects %-enumtypes.h: %.h Makefile.in - glib-mkenums \ + $(QUIET_GEN)glib-mkenums \ --fhead "#ifndef __$(shell echo $* | tr [:lower:]- [:upper:]_)_ENUM_TYPES_H__\n#define __$(shell echo $* | tr [:lower:]- [:upper:]_)_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ --fprod "/* enumerations from \"@filename@\" */\n" \ --vhead "GType @enum_name@_get_type (void);\n#define $(shell echo $* | tr [:lower:]- [:upper:]_ | sed 's/_.*//')_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ @@ -71,7 +73,7 @@ dist_man_MANS = \ $< > $@ %-enumtypes.c: %.h Makefile.in - glib-mkenums \ + $(QUIET_GEN)glib-mkenums \ --fhead "#include <$*.h>\n#include <$*-enumtypes.h>" \ --fprod "\n/* enumerations from \"@filename@\" */" \ --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \ diff --git a/src/empathy-ft-manager.c b/src/empathy-ft-manager.c index 98e58d4f3..87531f0fe 100644 --- a/src/empathy-ft-manager.c +++ b/src/empathy-ft-manager.c @@ -200,6 +200,7 @@ ft_manager_update_ft_row (EmpathyFTManager *ft_manager, TpFileTransferState state; TpFileTransferStateChangeReason reason; gboolean incoming; + gdouble speed; row_ref = ft_manager_get_row_from_tp_file (ft_manager, tp_file); g_return_if_fail (row_ref != NULL); @@ -210,6 +211,7 @@ ft_manager_update_ft_row (EmpathyFTManager *ft_manager, total_size = empathy_tp_file_get_size (tp_file); state = empathy_tp_file_get_state (tp_file, &reason); incoming = empathy_tp_file_is_incoming (tp_file); + speed = empathy_tp_file_get_speed (tp_file); switch (state) { @@ -234,6 +236,7 @@ ft_manager_update_ft_row (EmpathyFTManager *ft_manager, { gchar *total_size_str; gchar *transferred_bytes_str; + gchar *speed_str; if (total_size == EMPATHY_TP_FILE_UNKNOWN_SIZE) total_size_str = g_strdup (C_("file size", "Unknown")); @@ -241,13 +244,15 @@ ft_manager_update_ft_row (EmpathyFTManager *ft_manager, total_size_str = g_format_size_for_display (total_size); transferred_bytes_str = g_format_size_for_display (transferred_bytes); + speed_str = g_format_size_for_display (speed); /* translators: first %s is the transferred size, second %s is * the total file size */ - second_line = g_strdup_printf (_("%s of %s"), transferred_bytes_str, - total_size_str); + second_line = g_strdup_printf (_("%s of %s at %s/s"), + transferred_bytes_str, total_size_str, speed_str); g_free (transferred_bytes_str); g_free (total_size_str); + g_free (speed_str); } else @@ -301,8 +306,10 @@ ft_manager_update_ft_row (EmpathyFTManager *ft_manager, if (remaining < 0) { - if (state != TP_FILE_TRANSFER_STATE_COMPLETED && - state != TP_FILE_TRANSFER_STATE_CANCELLED) + if (state == TP_FILE_TRANSFER_STATE_OPEN) + remaining_str = g_strdup (C_("remaining time", "Stalled")); + else if (state != TP_FILE_TRANSFER_STATE_COMPLETED && + state != TP_FILE_TRANSFER_STATE_CANCELLED) remaining_str = g_strdup (C_("remaining time", "Unknown")); } else @@ -334,9 +341,8 @@ ft_manager_update_ft_row (EmpathyFTManager *ft_manager, } static void -ft_manager_transferred_bytes_changed_cb (EmpathyTpFile *tp_file, - GParamSpec *pspec, - EmpathyFTManager *ft_manager) +ft_manager_refresh_cb (EmpathyTpFile *tp_file, + EmpathyFTManager *ft_manager) { ft_manager_update_ft_row (ft_manager, tp_file); } @@ -441,7 +447,7 @@ ft_manager_remove_file_from_model (EmpathyFTManager *ft_manager, if (update_selection) gtk_tree_selection_select_iter (selection, &iter); - empathy_tp_file_close (tp_file); + empathy_tp_file_cancel (tp_file); } static gboolean @@ -840,8 +846,8 @@ ft_manager_add_tp_file_to_list (EmpathyFTManager *ft_manager, ft_manager_update_ft_row (ft_manager, tp_file); g_signal_connect (tp_file, "notify::state", G_CALLBACK (ft_manager_state_changed_cb), ft_manager); - g_signal_connect (tp_file, "notify::transferred-bytes", - G_CALLBACK (ft_manager_transferred_bytes_changed_cb), ft_manager); + g_signal_connect (tp_file, "refresh", + G_CALLBACK (ft_manager_refresh_cb), ft_manager); gtk_window_present (GTK_WINDOW (ft_manager->priv->window)); } diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c index b9993a8f5..5cbf877e5 100644 --- a/src/empathy-main-window.c +++ b/src/empathy-main-window.c @@ -58,6 +58,7 @@ #include "empathy-new-chatroom-dialog.h" #include "empathy-chatrooms-window.h" #include "empathy-event-manager.h" +#include "empathy-ft-manager.h" #define DEBUG_FLAG EMPATHY_DEBUG_OTHER #include <libempathy/empathy-debug.h> @@ -683,6 +684,20 @@ main_window_chat_add_contact_cb (GtkAction *action, } static void +main_window_chat_show_ft_manager (GtkAction *action, + EmpathyMainWindow *window) +{ + EmpathyFTManager *manager; + GtkWidget *dialog; + + manager = empathy_ft_manager_dup_singleton (); + dialog = empathy_ft_manager_get_dialog (manager); + + gtk_window_present (GTK_WINDOW (dialog)); + g_object_unref (manager); +} + +static void main_window_chat_show_offline_cb (GtkToggleAction *action, EmpathyMainWindow *window) { @@ -1122,6 +1137,7 @@ empathy_main_window_show (void) "room_join_favorites", "activate", main_window_room_join_favorites_cb, "room_manage_favorites", "activate", main_window_room_manage_favorites_cb, "chat_add_contact", "activate", main_window_chat_add_contact_cb, + "chat_show_ft_manager", "activate", main_window_chat_show_ft_manager, "chat_show_offline", "toggled", main_window_chat_show_offline_cb, "edit", "activate", main_window_edit_cb, "edit_accounts", "activate", main_window_edit_accounts_cb, diff --git a/src/empathy-main-window.ui b/src/empathy-main-window.ui index cd45bc7d7..23d55f95b 100644 --- a/src/empathy-main-window.ui +++ b/src/empathy-main-window.ui @@ -34,6 +34,13 @@ </object> </child> <child> + <object class="GtkAction" id="chat_show_ft_manager"> + <property name="icon-name">document-send</property> + <property name="name">chat_show_ft_manager</property> + <property name="label" translatable="yes">Show _File Transfers</property> + </object> + </child> + <child> <object class="GtkToggleAction" id="chat_show_offline"> <property name="name">chat_show_offline</property> <property name="label" translatable="yes">Show _Offline Contacts</property> @@ -135,6 +142,8 @@ <separator/> <menuitem action="chat_add_contact"/> <separator/> + <menuitem action="chat_show_ft_manager"/> + <separator/> <menuitem action="chat_show_offline"/> <separator/> <menuitem action="chat_quit"/> diff --git a/tools/Makefile.am b/tools/Makefile.am index 817100087..05da7439b 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/tools/shave.mk + abs_top_builddir = @abs_top_builddir@ noinst_SCRIPTS = telepathy-glib-env @@ -36,23 +38,23 @@ CLEANFILES = libtpcodegen.pyc libtpcodegen.pyo libglibcodegen.pyc libglibcodegen all: $(EXTRA_DIST) libglibcodegen.py: libtpcodegen.py - touch $@ + $(QUIET_GEN)touch $@ c-constants-gen.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ glib-client-marshaller-gen.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ glib-errors-enum-body-gen.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ glib-errors-enum-header-gen.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ glib-ginterface-gen.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ glib-gtypes-generator.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ glib-interfaces-gen.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ glib-signals-marshal-gen.py: libglibcodegen.py - touch $@ + $(QUIET_GEN)touch $@ TELEPATHY_SPEC_SRCDIR = $(top_srcdir)/../telepathy-spec maintainer-update-from-telepathy-spec: diff --git a/tools/shave.mk b/tools/shave.mk new file mode 100644 index 000000000..53cb3bf5e --- /dev/null +++ b/tools/shave.mk @@ -0,0 +1 @@ +QUIET_GEN = $(Q:@=@echo ' GEN '$@;) |