X-Git-Url: https://git.0d.be/?p=empathy.git;a=blobdiff_plain;f=src%2Fempathy-debug-window.c;h=ec59813553754d8d26b34947f91907e629fae274;hp=159db0b09b50b3a6f32604217fcb88be8616ac8a;hb=33ee7a9336197b3b43d87a90c667920b1c5c7e00;hpb=6a5b51b273fc447c7611675b97268fc99216d430 diff --git a/src/empathy-debug-window.c b/src/empathy-debug-window.c index 159db0b0..ec598135 100644 --- a/src/empathy-debug-window.c +++ b/src/empathy-debug-window.c @@ -20,32 +20,19 @@ */ #include "config.h" - -#include +#include "empathy-debug-window.h" #include -#include -#include -#include #include +#include +#include -#define DEBUG_FLAG EMPATHY_DEBUG_OTHER -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include +#include "empathy-geometry.h" +#include "empathy-ui-utils.h" +#include "empathy-utils.h" -#include "extensions/extensions.h" - -#include "empathy-debug-window.h" +#define DEBUG_FLAG EMPATHY_DEBUG_OTHER +#include "empathy-debug.h" G_DEFINE_TYPE (EmpathyDebugWindow, empathy_debug_window, GTK_TYPE_WINDOW) @@ -54,6 +41,7 @@ typedef enum { SERVICE_TYPE_CM = 0, SERVICE_TYPE_CLIENT, + SERVICE_TYPE_MC, } ServiceType; enum @@ -390,7 +378,7 @@ debug_window_get_messages_cb (GObject *object, messages = tp_debug_client_get_messages_finish (debug, result, &error); if (messages == NULL) { - DEBUG ("Failed to get debug messsages: %s", error->message); + DEBUG ("Failed to get debug messages: %s", error->message); g_error_free (error); /* We want to set the window sensitivity to false only when proxy for the @@ -424,6 +412,7 @@ debug_window_get_messages_cb (GObject *object, COL_PROXY, debug, -1); } + g_ptr_array_unref (messages); g_free (proxy_service_name); @@ -869,6 +858,33 @@ fill_service_chooser_data_free (FillServiceChooserData *data) g_slice_free (FillServiceChooserData, data); } +static const gchar * +service_type_to_string (ServiceType type) +{ + switch (type) + { + case SERVICE_TYPE_CM: + return "CM"; + case SERVICE_TYPE_CLIENT: + return "Client"; + case SERVICE_TYPE_MC: + return "MC"; + } + + return "other"; +} + +static gchar * +service_dup_display_name (EmpathyDebugWindow *self, + ServiceType type, + const gchar *name) +{ + if (type == SERVICE_TYPE_CM) + return get_cm_display_name (self, name); + else + return g_strdup (name); +} + static void debug_window_get_name_owner_cb (TpDBusDaemon *proxy, const gchar *out, @@ -894,13 +910,10 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy, GtkListStore *active_buffer, *pause_buffer; DEBUG ("Adding %s to list: %s at unique name: %s", - data->type == SERVICE_TYPE_CM? "CM": "Client", + service_type_to_string (data->type), data->name, out); - if (data->type == SERVICE_TYPE_CM) - name = get_cm_display_name (self, data->name); - else - name = g_strdup (data->name); + name = service_dup_display_name (self, data->type, data->name); active_buffer = new_list_store_for_service (); pause_buffer = new_list_store_for_service (); @@ -948,50 +961,6 @@ OUT: fill_service_chooser_data_free (data); } -static void -debug_window_list_connection_names_cb (const gchar * const *names, - gsize n, - const gchar * const *cms, - const gchar * const *protocols, - const GError *error, - gpointer user_data, - GObject *weak_object) -{ - EmpathyDebugWindow *self = user_data; - guint i; - TpDBusDaemon *dbus; - GError *error2 = NULL; - - if (error != NULL) - { - DEBUG ("list_connection_names failed: %s", error->message); - return; - } - - dbus = tp_dbus_daemon_dup (&error2); - - if (error2 != NULL) - { - DEBUG ("Failed to dup TpDBusDaemon."); - g_error_free (error2); - return; - } - - for (i = 0; cms[i] != NULL; i++) - { - FillServiceChooserData *data = fill_service_chooser_data_new ( - self, cms[i], SERVICE_TYPE_CM); - - tp_cli_dbus_daemon_call_get_name_owner (dbus, -1, - names[i], debug_window_get_name_owner_cb, - data, NULL, NULL); - - self->priv->services_detected ++; - } - - g_object_unref (dbus); -} - static void debug_window_name_owner_changed_cb (TpDBusDaemon *proxy, const gchar *arg0, @@ -1019,15 +988,12 @@ debug_window_name_owner_changed_cb (TpDBusDaemon *proxy, return; } - if (EMP_STR_EMPTY (arg1) && !EMP_STR_EMPTY (arg2)) + if (TPAW_STR_EMPTY (arg1) && !TPAW_STR_EMPTY (arg2)) { GtkTreeIter *found_at_iter = NULL; gchar *display_name; - if (type == SERVICE_TYPE_CM) - display_name = get_cm_display_name (self, name); - else - display_name = g_strdup (name); + display_name = service_dup_display_name (self, type, name); /* A service joined */ if (!debug_window_service_is_in_model (user_data, display_name, @@ -1099,7 +1065,7 @@ debug_window_name_owner_changed_cb (TpDBusDaemon *proxy, g_free (display_name); } - else if (!EMP_STR_EMPTY (arg1) && EMP_STR_EMPTY (arg2)) + else if (!TPAW_STR_EMPTY (arg1) && TPAW_STR_EMPTY (arg2)) { /* A service died */ GtkTreeIter *iter = NULL; @@ -1120,18 +1086,17 @@ debug_window_name_owner_changed_cb (TpDBusDaemon *proxy, } static void -add_client (EmpathyDebugWindow *self, - const gchar *name) +add_service (EmpathyDebugWindow *self, + const gchar *bus_name, + const gchar *display_name, + ServiceType type) { - const gchar *suffix; FillServiceChooserData *data; - suffix = name + strlen (TP_CLIENT_BUS_NAME_BASE); - - data = fill_service_chooser_data_new (self, suffix, SERVICE_TYPE_CLIENT); + data = fill_service_chooser_data_new (self, display_name, type); tp_cli_dbus_daemon_call_get_name_owner (self->priv->dbus, -1, - name, debug_window_get_name_owner_cb, data, NULL, NULL); + bus_name, debug_window_get_name_owner_cb, data, NULL, NULL); self->priv->services_detected ++; } @@ -1156,7 +1121,17 @@ list_names_cb (TpDBusDaemon *bus_daemon, { if (g_str_has_prefix (names[i], TP_CLIENT_BUS_NAME_BASE)) { - add_client (self, names[i]); + add_service (self, names[i], + names[i] + strlen (TP_CLIENT_BUS_NAME_BASE), SERVICE_TYPE_CLIENT); + } + else if (g_str_has_prefix (names[i], TP_CM_BUS_NAME_BASE)) + { + add_service (self, names[i], + names[i] + strlen (TP_CM_BUS_NAME_BASE), SERVICE_TYPE_CM); + } + else if (!tp_strdiff (names[i], TP_ACCOUNT_MANAGER_BUS_NAME)) + { + add_service (self, names[i], "Mission-Control", SERVICE_TYPE_MC); } } } @@ -1165,8 +1140,6 @@ static void debug_window_fill_service_chooser (EmpathyDebugWindow *self) { GError *error = NULL; - GtkTreeIter iter; - GtkListStore *active_buffer, *pause_buffer; self->priv->dbus = tp_dbus_daemon_dup (&error); @@ -1181,26 +1154,6 @@ debug_window_fill_service_chooser (EmpathyDebugWindow *self) self->priv->services_detected = 0; self->priv->name_owner_cb_count = 0; - /* Add CMs to list */ - tp_list_connection_names (self->priv->dbus, - debug_window_list_connection_names_cb, self, NULL, NULL); - - /* add Mission Control */ - active_buffer= new_list_store_for_service (); - pause_buffer = new_list_store_for_service (); - - gtk_list_store_insert_with_values (self->priv->service_store, &iter, -1, - COL_NAME, "mission-control", - COL_UNIQUE_NAME, "org.freedesktop.Telepathy.MissionControl5", - COL_GONE, FALSE, - COL_ACTIVE_BUFFER, active_buffer, - COL_PAUSE_BUFFER, pause_buffer, - COL_PROXY, NULL, - -1); - g_object_unref (active_buffer); - g_object_unref (pause_buffer); - - /* add clients */ tp_dbus_daemon_list_names (self->priv->dbus, 2000, list_names_cb, NULL, NULL, G_OBJECT (self)); @@ -1311,7 +1264,7 @@ debug_window_menu_copy_activate_cb (GtkMenuItem *menu_item, message = tp_debug_message_get_message (msg); - if (EMP_STR_EMPTY (message)) + if (TPAW_STR_EMPTY (message)) { DEBUG ("Log message is empty"); return; @@ -1848,6 +1801,7 @@ am_prepared_cb (GObject *am, GtkListStore *level_store; GtkTreeIter iter; GError *error = NULL; + GtkWidget *infobar, *content; if (!tp_proxy_prepare_finish (am, res, &error)) { @@ -1858,7 +1812,7 @@ am_prepared_cb (GObject *am, empathy_set_css_provider (GTK_WIDGET (object)); gtk_window_set_title (GTK_WINDOW (object), _("Debug Window")); - gtk_window_set_default_size (GTK_WINDOW (object), 800, 400); + gtk_widget_set_size_request (GTK_WIDGET (object), 600, 300); empathy_geometry_bind (GTK_WINDOW (object), "debug-window"); g_signal_connect (object, "key-press-event", @@ -2025,6 +1979,32 @@ am_prepared_cb (GObject *am, g_signal_connect (self->priv->level_filter, "changed", G_CALLBACK (debug_window_filter_changed_cb), object); + /* Info bar */ + infobar = gtk_info_bar_new (); + gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_INFO); + + label = gtk_label_new ( + _("Even if they don't display passwords, logs can contain sensitive " + "information such as your list of contacts or the messages you " + "recently sent or received.\nIf you don't want to see such " + "information available in a public bug report, you " + "can choose to limit the visibility of your bug to " + "Empathy developers when reporting it by displaying " + "the advanced fields in the " + "" + "bug report.")); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + gtk_style_context_add_class (gtk_widget_get_style_context (label), + GTK_STYLE_CLASS_DIM_LABEL); + + content = gtk_info_bar_get_content_area (GTK_INFO_BAR (infobar)); + gtk_box_pack_start (GTK_BOX (content), label, FALSE, FALSE, 0); + + gtk_widget_show (infobar); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox), infobar, FALSE, FALSE, 0); + /* Debug treeview */ self->priv->view = gtk_tree_view_new (); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (self->priv->view), TRUE); @@ -2033,7 +2013,7 @@ am_prepared_cb (GObject *am, G_CALLBACK (debug_window_button_press_event_cb), object); renderer = gtk_cell_renderer_text_new (); - g_object_set (renderer, "yalign", 0, NULL); + g_object_set (renderer, "yalign", (gfloat) 0, NULL); gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (self->priv->view), -1, _("Time"), renderer, @@ -2049,7 +2029,12 @@ am_prepared_cb (GObject *am, (GtkTreeCellDataFunc) debug_window_level_formatter, NULL, NULL); renderer = gtk_cell_renderer_text_new (); - g_object_set (renderer, "family", "Monospace", NULL); + + g_object_set (renderer, + "family", "Monospace", + "ellipsize", PANGO_ELLIPSIZE_END, + NULL); + gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (self->priv->view), -1, _("Message"), renderer, (GtkTreeCellDataFunc) debug_window_message_formatter, NULL, NULL);