aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-debug-dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/empathy-debug-dialog.c')
-rw-r--r--src/empathy-debug-dialog.c62
1 files changed, 56 insertions, 6 deletions
diff --git a/src/empathy-debug-dialog.c b/src/empathy-debug-dialog.c
index 2bf45aa95..3819fd29c 100644
--- a/src/empathy-debug-dialog.c
+++ b/src/empathy-debug-dialog.c
@@ -82,6 +82,9 @@ typedef struct
GtkListStore *store;
GtkTreeModel *store_filter;
GtkWidget *view;
+ GtkWidget *scrolled_win;
+ GtkWidget *not_supported_label;
+ gboolean view_visible;
/* Connection */
TpDBusDaemon *dbus;
@@ -205,6 +208,38 @@ debug_dialog_set_enabled (EmpathyDebugDialog *debug_dialog,
}
static void
+debug_dialog_set_toolbar_sensitivity (EmpathyDebugDialog *debug_dialog,
+ gboolean sensitive)
+{
+ EmpathyDebugDialogPriv *priv = GET_PRIV (debug_dialog);
+ GtkWidget *vbox = GTK_DIALOG (debug_dialog)->vbox;
+
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->save_button), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->copy_button), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->clear_button), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->pause_button), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->level_label), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->level_filter), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->view), sensitive);
+
+ if (sensitive && !priv->view_visible)
+ {
+ /* Add view and remove label */
+ gtk_container_remove (GTK_CONTAINER (vbox), priv->not_supported_label);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->scrolled_win, TRUE, TRUE, 0);
+ priv->view_visible = TRUE;
+ }
+ else if (!sensitive && priv->view_visible)
+ {
+ /* Add label and remove view */
+ gtk_container_remove (GTK_CONTAINER (vbox), priv->scrolled_win);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->not_supported_label,
+ TRUE, TRUE, 0);
+ priv->view_visible = FALSE;
+ }
+}
+
+static void
debug_dialog_get_messages_cb (TpProxy *proxy,
const GPtrArray *messages,
const GError *error,
@@ -218,9 +253,12 @@ debug_dialog_get_messages_cb (TpProxy *proxy,
if (error != NULL)
{
DEBUG ("GetMessages failed: %s", error->message);
+ debug_dialog_set_toolbar_sensitivity (debug_dialog, FALSE);
return;
}
+ debug_dialog_set_toolbar_sensitivity (debug_dialog, TRUE);
+
for (i = 0; i < messages->len; i++)
{
GValueArray *values = g_ptr_array_index (messages, i);
@@ -891,7 +929,6 @@ debug_dialog_constructor (GType type,
GtkWidget *label;
GtkToolItem *item;
GtkCellRenderer *renderer;
- GtkWidget *scrolled_win;
GtkListStore *level_store;
GtkTreeIter iter;
@@ -1081,16 +1118,23 @@ debug_dialog_constructor (GType type,
gtk_tree_view_set_model (GTK_TREE_VIEW (priv->view), priv->store_filter);
/* Scrolled window */
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+ priv->scrolled_win = g_object_ref (gtk_scrolled_window_new (NULL, NULL));
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_widget_show (priv->view);
- gtk_container_add (GTK_CONTAINER (scrolled_win), priv->view);
+ gtk_container_add (GTK_CONTAINER (priv->scrolled_win), priv->view);
+
+ gtk_widget_show (priv->scrolled_win);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->scrolled_win, TRUE, TRUE, 0);
- gtk_widget_show (scrolled_win);
- gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
+ /* Not supported label */
+ priv->not_supported_label = g_object_ref (gtk_label_new (
+ _("The selected connection manager does not support the remote "
+ "debugging extension.")));
+ gtk_widget_show (priv->not_supported_label);
+ priv->view_visible = TRUE;
gtk_widget_show (GTK_WIDGET (object));
return object;
@@ -1150,6 +1194,12 @@ debug_dialog_dispose (GObject *object)
if (priv->store != NULL)
g_object_unref (priv->store);
+ if (priv->scrolled_win != NULL)
+ g_object_unref (priv->scrolled_win);
+
+ if (priv->view != NULL)
+ g_object_unref (priv->view);
+
if (priv->name_owner_changed_signal != NULL)
tp_proxy_signal_connection_disconnect (priv->name_owner_changed_signal);