]> git.0d.be Git - empathy.git/blobdiff - src/empathy-debug-window.c
Updated Polish translation
[empathy.git] / src / empathy-debug-window.c
index 4c34e6808087d5ec635dfce63e2d2c21e23ea0b1..6c0c9c69eecd8fc84da3d8e58aff44afb9258470 100644 (file)
@@ -34,6 +34,7 @@
 #include <libempathy-gtk/empathy-geometry.h>
 
 #include <telepathy-glib/dbus.h>
+#include <telepathy-glib/interfaces.h>
 #include <telepathy-glib/util.h>
 #include <telepathy-glib/proxy-subclass.h>
 
@@ -98,6 +99,7 @@ typedef struct
   TpProxy *proxy;
   TpProxySignalConnection *new_debug_message_signal;
   TpProxySignalConnection *name_owner_changed_signal;
+  gulong invalid_signal_id;
 
   /* Whether NewDebugMessage will be fired */
   gboolean paused;
@@ -114,22 +116,22 @@ log_level_to_string (guint level)
 {
   switch (level)
     {
-    case EMP_DEBUG_LEVEL_ERROR:
+    case TP_DEBUG_LEVEL_ERROR:
       return "Error";
       break;
-    case EMP_DEBUG_LEVEL_CRITICAL:
+    case TP_DEBUG_LEVEL_CRITICAL:
       return "Critical";
       break;
-    case EMP_DEBUG_LEVEL_WARNING:
+    case TP_DEBUG_LEVEL_WARNING:
       return "Warning";
       break;
-    case EMP_DEBUG_LEVEL_MESSAGE:
+    case TP_DEBUG_LEVEL_MESSAGE:
       return "Message";
       break;
-    case EMP_DEBUG_LEVEL_INFO:
+    case TP_DEBUG_LEVEL_INFO:
       return "Info";
       break;
-    case EMP_DEBUG_LEVEL_DEBUG:
+    case TP_DEBUG_LEVEL_DEBUG:
       return "Debug";
       break;
     default:
@@ -280,7 +282,7 @@ debug_window_set_enabled (EmpathyDebugWindow *debug_window,
 
   val = tp_g_value_slice_new_boolean (enabled);
 
-  tp_cli_dbus_properties_call_set (priv->proxy, -1, EMP_IFACE_DEBUG,
+  tp_cli_dbus_properties_call_set (priv->proxy, -1, TP_IFACE_DEBUG,
       "Enabled", val, NULL, NULL, NULL, NULL);
 
   tp_g_value_slice_free (val);
@@ -401,6 +403,19 @@ debug_window_add_log_messages_from_cache (EmpathyDebugWindow *debug_window,
     }
 }
 
+static void
+proxy_invalidated_cb (TpProxy *proxy,
+    guint domain,
+    gint code,
+    gchar *msg,
+    EmpathyDebugWindowPriv *self)
+{
+  EmpathyDebugWindowPriv *priv = GET_PRIV (self);
+
+  /* Proxy has been invalidated so we can't disconnect the signal any more */
+  priv->new_debug_message_signal = NULL;
+}
+
 static void
 debug_window_cm_chooser_changed_cb (GtkComboBox *cm_chooser,
     EmpathyDebugWindow *debug_window)
@@ -466,7 +481,10 @@ debug_window_cm_chooser_changed_cb (GtkComboBox *cm_chooser,
     }
 
   if (priv->proxy != NULL)
-    g_object_unref (priv->proxy);
+    {
+      g_signal_handler_disconnect (priv->proxy, priv->invalid_signal_id);
+      g_object_unref (priv->proxy);
+    }
 
   priv->proxy = proxy;
 
@@ -475,6 +493,9 @@ debug_window_cm_chooser_changed_cb (GtkComboBox *cm_chooser,
   emp_cli_debug_call_get_messages (priv->proxy, -1,
       debug_window_get_messages_cb, debug_window, NULL, NULL);
 
+  priv->invalid_signal_id = g_signal_connect (proxy, "invalidated",
+      G_CALLBACK (proxy_invalidated_cb), debug_window);
+
   g_object_unref (dbus);
 }
 
@@ -725,8 +746,8 @@ debug_window_fill_cm_chooser (EmpathyDebugWindow *debug_window)
   /* Add empathy */
   gtk_list_store_append (priv->cms, &iter);
   gtk_list_store_set (priv->cms, &iter,
-      COL_CM_NAME, "empathy",
-      COL_CM_UNIQUE_NAME, "org.gnome.Empathy",
+      COL_CM_NAME, _(PACKAGE_NAME),
+      COL_CM_UNIQUE_NAME, "org.gnome."PACKAGE_NAME,
       -1);
   gtk_combo_box_set_active (GTK_COMBO_BOX (priv->cm_chooser), 0);
 
@@ -869,6 +890,8 @@ 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);
 
@@ -1142,6 +1165,37 @@ debug_window_key_press_event_cb (GtkWidget *widget,
   return FALSE;
 }
 
+static gboolean
+tree_view_search_equal_func_cb (GtkTreeModel *model,
+    gint column,
+    const gchar *key,
+    GtkTreeIter *iter,
+    gpointer search_data)
+{
+  gchar *str;
+  gint key_len;
+  gint len;
+  gint i;
+  gboolean ret = TRUE; /* The return value is counter-intuitive */
+
+  gtk_tree_model_get (model, iter, column, &str, -1);
+
+  key_len = strlen (key);
+  len = strlen (str) - key_len;
+
+  for (i = 0; i <= len; ++i)
+    {
+      if (!g_ascii_strncasecmp (key, str + i, key_len))
+        {
+          ret = FALSE;
+          break;
+        }
+    }
+
+  g_free (str);
+  return ret;
+}
+
 static GObject *
 debug_window_constructor (GType type,
     guint n_construct_params,
@@ -1275,37 +1329,37 @@ debug_window_constructor (GType type,
   gtk_list_store_append (level_store, &iter);
   gtk_list_store_set (level_store, &iter,
       COL_LEVEL_NAME, _("Debug"),
-      COL_LEVEL_VALUE, EMP_DEBUG_LEVEL_DEBUG,
+      COL_LEVEL_VALUE, TP_DEBUG_LEVEL_DEBUG,
       -1);
 
   gtk_list_store_append (level_store, &iter);
   gtk_list_store_set (level_store, &iter,
       COL_LEVEL_NAME, _("Info"),
-      COL_LEVEL_VALUE, EMP_DEBUG_LEVEL_INFO,
+      COL_LEVEL_VALUE, TP_DEBUG_LEVEL_INFO,
       -1);
 
   gtk_list_store_append (level_store, &iter);
   gtk_list_store_set (level_store, &iter,
       COL_LEVEL_NAME, _("Message"),
-      COL_LEVEL_VALUE, EMP_DEBUG_LEVEL_MESSAGE,
+      COL_LEVEL_VALUE, TP_DEBUG_LEVEL_MESSAGE,
       -1);
 
   gtk_list_store_append (level_store, &iter);
   gtk_list_store_set (level_store, &iter,
       COL_LEVEL_NAME, _("Warning"),
-      COL_LEVEL_VALUE, EMP_DEBUG_LEVEL_WARNING,
+      COL_LEVEL_VALUE, TP_DEBUG_LEVEL_WARNING,
       -1);
 
   gtk_list_store_append (level_store, &iter);
   gtk_list_store_set (level_store, &iter,
       COL_LEVEL_NAME, _("Critical"),
-      COL_LEVEL_VALUE, EMP_DEBUG_LEVEL_CRITICAL,
+      COL_LEVEL_VALUE, TP_DEBUG_LEVEL_CRITICAL,
       -1);
 
   gtk_list_store_append (level_store, &iter);
   gtk_list_store_set (level_store, &iter,
       COL_LEVEL_NAME, _("Error"),
-      COL_LEVEL_VALUE, EMP_DEBUG_LEVEL_ERROR,
+      COL_LEVEL_VALUE, TP_DEBUG_LEVEL_ERROR,
       -1);
 
   gtk_combo_box_set_active (GTK_COMBO_BOX (priv->level_filter), 0);
@@ -1350,6 +1404,11 @@ debug_window_constructor (GType type,
 
   gtk_tree_view_set_model (GTK_TREE_VIEW (priv->view), priv->store_filter);
 
+  gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->view),
+      COL_DEBUG_MESSAGE);
+  gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (priv->view),
+      tree_view_search_equal_func_cb, NULL, NULL);
+
   /* Scrolled window */
   priv->scrolled_win = g_object_ref (gtk_scrolled_window_new (NULL, NULL));
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_win),
@@ -1460,6 +1519,7 @@ debug_window_dispose (GObject *object)
   if (priv->proxy != NULL)
     {
       debug_window_set_enabled (EMPATHY_DEBUG_WINDOW (object), FALSE);
+      g_signal_handler_disconnect (priv->proxy, priv->invalid_signal_id);
       g_object_unref (priv->proxy);
     }