[gtranslator] Unset the document profile if it was removed.
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtranslator] Unset the document profile if it was removed.
- Date: Fri, 19 Feb 2010 15:56:10 +0000 (UTC)
commit a1119969cb3994a843883b861c98ef6dd1415ccd
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Fri Feb 19 16:55:52 2010 +0100
Unset the document profile if it was removed.
src/gtr-header.c | 41 ++++++++++++++++++++++++++++-------------
1 files changed, 28 insertions(+), 13 deletions(-)
---
diff --git a/src/gtr-header.c b/src/gtr-header.c
index 66589c0..b52d222 100644
--- a/src/gtr-header.c
+++ b/src/gtr-header.c
@@ -42,8 +42,9 @@ G_DEFINE_TYPE (GtrHeader, gtr_header, GTR_TYPE_MSG)
struct _GtrHeaderPrivate
{
- gint nplurals;
+ GtrProfileManager *prof_manager;
GtrProfile *profile;
+ gint nplurals;
};
static void
@@ -129,12 +130,26 @@ parse_nplurals (GtrHeader * header)
}
static void
+profile_removed_cb (GtrProfileManager *prof_manager,
+ GtrProfile *profile,
+ GtrHeader *header)
+{
+ if (profile == header->priv->profile)
+ header->priv->profile = NULL;
+}
+
+static void
gtr_header_init (GtrHeader * header)
{
header->priv = GTR_HEADER_GET_PRIVATE (header);
header->priv->nplurals = -1;
header->priv->profile = NULL;
+
+ header->priv->prof_manager = gtr_profile_manager_get_default ();
+
+ g_signal_connect (header->priv->prof_manager, "profile-removed",
+ G_CALLBACK (profile_removed_cb), header);
}
static void
@@ -142,6 +157,12 @@ gtr_header_dispose (GObject * object)
{
GtrHeader *header = GTR_HEADER (object);
+ if (header->priv->prof_manager != NULL)
+ {
+ g_object_unref (header->priv->prof_manager);
+ header->priv->prof_manager = NULL;
+ }
+
if (header->priv->profile != NULL)
{
g_object_unref (header->priv->profile);
@@ -514,14 +535,14 @@ gtr_header_get_nplurals (GtrHeader * header)
}
static void
-set_profile_values (GtrHeader *header, GtrProfileManager *prof_manager)
+set_profile_values (GtrHeader *header)
{
GtrProfile *active_profile;
if (header->priv->profile != NULL)
active_profile = header->priv->profile;
else
- active_profile = gtr_profile_manager_get_active_profile (prof_manager);
+ active_profile = gtr_profile_manager_get_active_profile (header->priv->prof_manager);
if (gtr_prefs_manager_get_use_profile_values () && active_profile != NULL)
{
@@ -562,8 +583,7 @@ update_po_date (GtrHeader * header)
}
static void
-update_comments (GtrHeader *header, const gchar *comments,
- GtrProfileManager *prof_manager)
+update_comments (GtrHeader *header, const gchar *comments)
{
GtrProfile *active_profile;
GString *new_comments;
@@ -577,7 +597,7 @@ update_comments (GtrHeader *header, const gchar *comments,
if (header->priv->profile != NULL)
active_profile = header->priv->profile;
else
- active_profile = gtr_profile_manager_get_active_profile (prof_manager);
+ active_profile = gtr_profile_manager_get_active_profile (header->priv->prof_manager);
current_year = gtr_utils_get_current_year ();
@@ -666,13 +686,10 @@ add_default_comments (GtrHeader * header)
void
gtr_header_update_header (GtrHeader * header)
{
- GtrProfileManager *prof_manager;
const gchar *comments;
- prof_manager = gtr_profile_manager_get_default ();
-
/* If needed update the header with the profile values */
- set_profile_values (header, prof_manager);
+ set_profile_values (header);
/* Update the po date */
update_po_date (header);
@@ -681,11 +698,9 @@ gtr_header_update_header (GtrHeader * header)
comments = gtr_header_get_comments (header);
if (comments != NULL)
- update_comments (header, comments, prof_manager);
+ update_comments (header, comments);
else
add_default_comments (header);
-
- g_object_unref (prof_manager);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]