gtranslator r3681 - in trunk/src: . translation-memory
- From: icq svn gnome org
- To: svn-commits-list gnome org
- Subject: gtranslator r3681 - in trunk/src: . translation-memory
- Date: Mon, 22 Sep 2008 09:42:42 +0000 (UTC)
Author: icq
Date: Mon Sep 22 09:42:42 2008
New Revision: 3681
URL: http://svn.gnome.org/viewvc/gtranslator?rev=3681&view=rev
Log:
2008-08-08 Ignacio Casal Quinteiro <nacho resa gmail com>
* msg.c (gtranslator_msg_check):
* msg.h:
* translation-memory/translation-memory-ui.c
(on_activate_item_cb),
(free_list), (showed_message_cb),
(gtranslator_translation_memory_ui_init),
(gtranslator_translation_memory_ui_finalize):
Fixed memory leaks on tm ui. Fixed a bug on _msg_check that was making
crash the program.
Modified:
trunk/src/ChangeLog
trunk/src/msg.c
trunk/src/msg.h
trunk/src/translation-memory/translation-memory-ui.c
Modified: trunk/src/msg.c
==============================================================================
--- trunk/src/msg.c (original)
+++ trunk/src/msg.c Mon Sep 22 09:42:42 2008
@@ -47,8 +47,6 @@
GtkTreeRowReference *row_reference;
gint po_position;
-
- gchar **tm_list;
};
static gchar *message_error = NULL;
@@ -61,7 +59,7 @@
static void
gtranslator_msg_finalize (GObject *object)
-{
+{
G_OBJECT_CLASS (gtranslator_msg_parent_class)->finalize (object);
}
@@ -522,6 +520,11 @@
struct po_xerror_handler handler;
g_return_val_if_fail(msg != NULL, NULL);
+
+ /* We are not freeing the message_error so at start should be NULL
+ * always for us
+ */
+ message_error = NULL;
handler.xerror = &on_gettext_po_xerror;
handler.xerror2 = &on_gettext_po_xerror2;
@@ -537,18 +540,4 @@
/*Are there any other way to do this?*/
return message_error;
-}
-
-
-gchar **
-gtranslator_msg_get_tm_list (GtranslatorMsg *msg)
-{
- return msg->priv->tm_list;
-}
-
-void
-gtranslator_msg_set_tm_list (GtranslatorMsg *msg,
- gchar **tm_list)
-{
- msg->priv->tm_list = tm_list;
-}
+}
\ No newline at end of file
Modified: trunk/src/msg.h
==============================================================================
--- trunk/src/msg.h (original)
+++ trunk/src/msg.h Mon Sep 22 09:42:42 2008
@@ -141,10 +141,6 @@
gchar *gtranslator_msg_check (GtranslatorMsg *msg);
-gchar **gtranslator_msg_get_tm_list (GtranslatorMsg *msg);
-void gtranslator_msg_set_tm_list (GtranslatorMsg *msg,
- gchar **tm_list);
-
G_END_DECLS
#endif /* __MSG_H__ */
Modified: trunk/src/translation-memory/translation-memory-ui.c
==============================================================================
--- trunk/src/translation-memory/translation-memory-ui.c (original)
+++ trunk/src/translation-memory/translation-memory-ui.c Mon Sep 22 09:42:42 2008
@@ -34,6 +34,8 @@
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
+#define MAX_ELEMENTS 10
+
#define GTR_TRANSLATION_MEMORY_UI_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ( \
(object), \
GTR_TYPE_TRANSLATION_MEMORY_UI, \
@@ -45,6 +47,8 @@
{
GtkWidget *tree_view;
GtranslatorTab *tab;
+
+ gchar **tm_list;
};
enum {
@@ -61,20 +65,21 @@
static void
on_activate_item_cb (GtkMenuItem *menuitem,
- GtranslatorWindow *window)
+ GtranslatorTranslationMemoryUi *tm_ui)
{
GtkWidget *label;
GtranslatorView *view;
GtkTextBuffer *buffer;
- GtranslatorTab *tab;
GtranslatorPo *po;
GList *current_msg = NULL;
GtranslatorMsg *msg;
const gchar *name;
gchar **array;
gint index;
- gchar **data;
+ GtranslatorWindow *window;
+
+ window = gtranslator_application_get_active_window (GTR_APP);
label = gtk_bin_get_child (GTK_BIN (menuitem));
name = gtk_label_get_text (GTK_LABEL (label));
@@ -86,23 +91,32 @@
index = atoi (array[1]);
- tab = gtranslator_window_get_active_tab (window);
- po = gtranslator_tab_get_po (tab);
+ po = gtranslator_tab_get_po (tm_ui->priv->tab);
current_msg = gtranslator_po_get_current_message (po);
- msg = (GtranslatorMsg *)current_msg->data;
-
- data = gtranslator_msg_get_tm_list (msg);
+ msg = GTR_MSG (current_msg->data);
- gtranslator_msg_set_msgstr (msg, data[index-1]);
+ gtranslator_msg_set_msgstr (msg, tm_ui->priv->tm_list[index-1]);
gtk_text_buffer_begin_user_action (buffer);
gtk_text_buffer_set_text (buffer,
- data[index-1],
+ tm_ui->priv->tm_list[index-1],
-1);
gtk_text_buffer_end_user_action(buffer);
gtranslator_po_set_state (po, GTR_PO_STATE_MODIFIED);
+
+ g_strfreev (array);
+}
+
+static void
+free_list (gpointer data,
+ gpointer useless)
+{
+ GtranslatorTranslationMemoryMatch *match = (GtranslatorTranslationMemoryMatch *)data;
+
+ g_free (match->match);
+ g_free (match);
}
static void
@@ -126,6 +140,7 @@
GtkWidget *items_menu;
GtranslatorWindow *window;
GtkUIManager *manager;
+ gchar *item_name;
model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (tm_ui->priv->tree_view)));
@@ -145,9 +160,10 @@
msgid = gtranslator_msg_get_msgid (msg);
- tm = (GtranslatorTranslationMemory *)gtranslator_application_get_translation_memory (GTR_APP);
+ tm = GTR_TRANSLATION_MEMORY (gtranslator_application_get_translation_memory (GTR_APP));
tm_list = gtranslator_translation_memory_lookup (tm, msgid);
+
if (tm_list == NULL) {
gtk_widget_set_sensitive (tm_menu, FALSE);
} else {
@@ -155,17 +171,14 @@
}
gtk_list_store_clear (model);
-
- gchar *item_name;
- gchar **data;
-
- data = (gchar **)malloc ((size_t) g_list_length (tm_list)*sizeof(gchar*));
+
+ g_strfreev (tm_ui->priv->tm_list);
+ tm_ui->priv->tm_list = g_new (gchar *, MAX_ELEMENTS + 1);
for (l = tm_list; l; l = l->next) {
GtranslatorTranslationMemoryMatch *match;
match = (GtranslatorTranslationMemoryMatch *)l->data;
- data[i-1] = match->match;
-
+ tm_ui->priv->tm_list[i-1] = g_strdup (match->match);
level_column = gtk_tree_view_get_column (GTK_TREE_VIEW (tm_ui->priv->tree_view), 0);
renderers_list = gtk_tree_view_column_get_cell_renderers (level_column);
@@ -185,12 +198,13 @@
-1);
i++;
k++;
- if (k>9)
- break;
+ if (k == MAX_ELEMENTS)
+ break;
}
-
- gtranslator_msg_set_tm_list (msg, data);
-
+
+ /* Ensure last element is NULL */
+ tm_ui->priv->tm_list[i-1] = NULL;
+
/* MenuBar stuff */
items_menu = gtk_menu_new();
@@ -208,7 +222,7 @@
tm_item = gtk_menu_item_new_with_label (item_name);
gtk_widget_show (tm_item);
- accel_path = g_strdup_printf ("<Gtranslator-sheet>/Edit/_Insert Tags/%s", item_name);
+ accel_path = g_strdup_printf ("<Gtranslator-sheet>/Edit/_Translation Memory/%s", item_name);
gtk_menu_item_set_accel_path (GTK_MENU_ITEM (tm_item), accel_path);
gtk_accel_map_add_entry (accel_path, GDK_0+(j-1), GDK_CONTROL_MASK);
@@ -217,17 +231,22 @@
g_free (item_name);
g_signal_connect (tm_item, "activate",
- G_CALLBACK (on_activate_item_cb), window);
+ G_CALLBACK (on_activate_item_cb),
+ tm_ui);
gtk_menu_shell_append (GTK_MENU_SHELL (items_menu), tm_item);
j++;
- if (j>10)
+ if (j > MAX_ELEMENTS)
break;
}while ((tm_list = g_list_next (tm_list)));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (tm_menu), items_menu);
+
+ /* Freeing the list */
+ g_list_foreach (tm_list, (GFunc)free_list, NULL);
+ g_list_free (tm_list);
}
}
@@ -316,6 +335,7 @@
gtranslator_translation_memory_ui_init (GtranslatorTranslationMemoryUi *tm_ui)
{
tm_ui->priv = GTR_TRANSLATION_MEMORY_UI_GET_PRIVATE (tm_ui);
+ tm_ui->priv->tm_list = NULL;
gtranslator_translation_memory_ui_draw (tm_ui);
}
@@ -323,6 +343,10 @@
static void
gtranslator_translation_memory_ui_finalize (GObject *object)
{
+ GtranslatorTranslationMemoryUi *tm_ui = GTR_TRANSLATION_MEMORY_UI (object);
+
+ g_strfreev (tm_ui->priv->tm_list);
+
G_OBJECT_CLASS (gtranslator_translation_memory_ui_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]