#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>
/* Service (CM, Client) chooser store */
GtkListStore *service_store;
+ /* Debug to show upon creation */
+ gchar *select_name;
+
/* Misc. */
gboolean dispose_run;
TpAccountManager *am;
retval = g_strdup (cm_name);
}
- g_hash_table_destroy (protocols);
+ g_hash_table_unref (protocols);
return retval;
}
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);
}
/* 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);
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);
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);
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);
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,
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);
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),
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 ();
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,
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);
}
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);
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);
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);
+ }
+}