]> git.0d.be Git - empathy.git/blobdiff - src/empathy-debug-window.c
Move should_create_salut_account to local-xmpp-assistant-widget
[empathy.git] / src / empathy-debug-window.c
index ddebf233bd2ffab44385d7eb80feeefc0ed4078b..b298600a9a6c410b6ce4ef0c68f208968aadabf6 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <libempathy-gtk/empathy-account-chooser.h>
 #include <libempathy-gtk/empathy-geometry.h>
+#include <libempathy-gtk/empathy-ui-utils.h>
 
 #include <telepathy-glib/dbus.h>
 #include <telepathy-glib/interfaces.h>
@@ -114,6 +115,9 @@ typedef struct
   /* Service (CM, Client) chooser store */
   GtkListStore *service_store;
 
+  /* Debug to show upon creation */
+  gchar *select_name;
+
   /* Misc. */
   gboolean dispose_run;
   TpAccountManager *am;
@@ -627,7 +631,7 @@ get_cm_display_name (EmpathyDebugWindow *self,
       retval = g_strdup (cm_name);
     }
 
-  g_hash_table_destroy (protocols);
+  g_hash_table_unref (protocols);
 
   return retval;
 }
@@ -696,6 +700,13 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy,
           COL_UNIQUE_NAME, out,
           -1);
 
+      if (priv->select_name != NULL &&
+          !tp_strdiff (name, priv->select_name))
+        {
+          gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->chooser), &iter);
+          tp_clear_pointer (&priv->select_name, g_free);
+        }
+
       g_free (name);
     }
 
@@ -901,7 +912,7 @@ debug_window_fill_service_chooser (EmpathyDebugWindow *debug_window)
   /* add Mission Control */
   gtk_list_store_append (priv->service_store, &iter);
   gtk_list_store_set (priv->service_store, &iter,
-      COL_NAME, "misson-control",
+      COL_NAME, "mission-control",
       COL_UNIQUE_NAME, "org.freedesktop.Telepathy.MissionControl5",
       -1);
 
@@ -1026,7 +1037,7 @@ debug_window_show_menu (gpointer user_data)
   GtkWidget *menu, *item;
   GtkMenuShell *shell;
 
-  menu = gtk_menu_new ();
+  menu = empathy_context_menu_new (GTK_WIDGET (data->debug_window));
   shell = GTK_MENU_SHELL (menu);
 
   item = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY, NULL);
@@ -1039,8 +1050,6 @@ debug_window_show_menu (gpointer user_data)
 
   gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
      data->button, data->time);
-  g_object_ref_sink (menu);
-  g_object_unref (menu);
 
   g_slice_free (MenuPopupData, user_data);
 
@@ -1227,7 +1236,7 @@ debug_window_save_clicked_cb (GtkToolButton *tool_button,
       GTK_FILE_CHOOSER (file_chooser), TRUE);
 
   gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_chooser),
-      g_get_tmp_dir ());
+      g_get_home_dir ());
 
   name = get_active_service_name (debug_window);
 
@@ -1369,6 +1378,37 @@ tree_view_search_equal_func_cb (GtkTreeModel *model,
   return ret;
 }
 
+static void
+empathy_debug_window_select_name (EmpathyDebugWindow *self,
+    const gchar *name)
+{
+  EmpathyDebugWindowPriv *priv = GET_PRIV (self);
+  GtkTreeModel *model = GTK_TREE_MODEL (priv->service_store);
+  GtkTreeIter iter;
+  gchar *iter_name;
+  gboolean valid, found = FALSE;
+
+  for (valid = gtk_tree_model_get_iter_first (model, &iter);
+       valid;
+       valid = gtk_tree_model_iter_next (model, &iter))
+    {
+      gtk_tree_model_get (model, &iter,
+          COL_NAME, &iter_name,
+          -1);
+
+      if (!tp_strdiff (name, iter_name))
+        found = TRUE;
+
+      g_free (iter_name);
+
+      if (found)
+        break;
+    }
+
+  if (found)
+    gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->chooser), &iter);
+}
+
 static void
 am_prepared_cb (GObject *am,
     GAsyncResult *res,
@@ -1399,7 +1439,7 @@ am_prepared_cb (GObject *am,
   g_signal_connect (object, "key-press-event",
       G_CALLBACK (debug_window_key_press_event_cb), NULL);
 
-  vbox = gtk_vbox_new (FALSE, 0);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (object), vbox);
   gtk_widget_show (vbox);
 
@@ -1408,12 +1448,14 @@ am_prepared_cb (GObject *am,
   gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), TRUE);
   gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar),
       GTK_ICON_SIZE_SMALL_TOOLBAR);
+  gtk_style_context_add_class (gtk_widget_get_style_context (toolbar),
+                              GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
   gtk_widget_show (toolbar);
 
   gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
 
   /* CM */
-  priv->chooser = gtk_combo_box_new_text ();
+  priv->chooser = gtk_combo_box_text_new ();
   priv->service_store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING,
       G_TYPE_STRING, G_TYPE_BOOLEAN);
   gtk_combo_box_set_model (GTK_COMBO_BOX (priv->chooser),
@@ -1489,7 +1531,7 @@ am_prepared_cb (GObject *am,
   gtk_container_add (GTK_CONTAINER (priv->level_label), label);
   gtk_toolbar_insert (GTK_TOOLBAR (toolbar), priv->level_label, -1);
 
-  priv->level_filter = gtk_combo_box_new_text ();
+  priv->level_filter = gtk_combo_box_text_new ();
   gtk_widget_show (priv->level_filter);
 
   item = gtk_tool_item_new ();
@@ -1669,6 +1711,8 @@ debug_window_finalize (GObject *object)
   char *key;
   GList *values;
 
+  g_free (priv->select_name);
+
   g_hash_table_iter_init (&iter, priv->cache);
 
   while (g_hash_table_iter_next (&iter, (gpointer *) &key,
@@ -1677,7 +1721,7 @@ debug_window_finalize (GObject *object)
       debug_message_list_free (values);
     }
 
-  g_hash_table_destroy (priv->cache);
+  g_hash_table_unref (priv->cache);
 
   (G_OBJECT_CLASS (empathy_debug_window_parent_class)->finalize) (object);
 }
@@ -1699,6 +1743,9 @@ debug_window_dispose (GObject *object)
   if (priv->name_owner_changed_signal != NULL)
     tp_proxy_signal_connection_disconnect (priv->name_owner_changed_signal);
 
+  if (priv->new_debug_message_signal != NULL)
+    tp_proxy_signal_connection_disconnect (priv->new_debug_message_signal);
+
   if (priv->proxy != NULL)
     {
       debug_window_set_enabled (EMPATHY_DEBUG_WINDOW (object), FALSE);
@@ -1706,9 +1753,6 @@ debug_window_dispose (GObject *object)
       g_object_unref (priv->proxy);
     }
 
-  if (priv->new_debug_message_signal != NULL)
-    tp_proxy_signal_connection_disconnect (priv->new_debug_message_signal);
-
   if (priv->service_store != NULL)
     g_object_unref (priv->service_store);
 
@@ -1746,3 +1790,20 @@ empathy_debug_window_new (GtkWindow *parent)
   return GTK_WIDGET (g_object_new (EMPATHY_TYPE_DEBUG_WINDOW,
       "transient-for", parent, NULL));
 }
+
+void
+empathy_debug_window_show (EmpathyDebugWindow *self,
+    const gchar *name)
+{
+  EmpathyDebugWindowPriv *priv = GET_PRIV (self);
+
+  if (priv->service_store != NULL)
+    {
+      empathy_debug_window_select_name (self, name);
+    }
+  else
+    {
+      g_free (priv->select_name);
+      priv->select_name = g_strdup (name);
+    }
+}