[gtranslator] Use new header API in the dialog
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtranslator] Use new header API in the dialog
- Date: Wed, 27 Jan 2010 21:30:05 +0000 (UTC)
commit d4825d2068a0533b2031a4b1d60d922a6013e1d1
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Wed Jan 27 21:38:39 2010 +0100
Use new header API in the dialog
src/dialogs/header-dialog.c | 377 +++++++++++++++++++-----------------------
1 files changed, 171 insertions(+), 206 deletions(-)
---
diff --git a/src/dialogs/header-dialog.c b/src/dialogs/header-dialog.c
index 81f87a9..52b93c9 100644
--- a/src/dialogs/header-dialog.c
+++ b/src/dialogs/header-dialog.c
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2007 Pablo Sanxiao <psanxiao gmail com>
+ * 2010 Ignacio Casal Quinteiro <icq gnome org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -33,43 +34,47 @@
#include "po.h"
#define GTR_HEADER_DIALOG_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ( \
- (object), \
- GTR_TYPE_HEADER_DIALOG, \
- GtranslatorHeaderDialogPrivate))
+ (object), \
+ GTR_TYPE_HEADER_DIALOG, \
+ GtranslatorHeaderDialogPrivate))
G_DEFINE_TYPE (GtranslatorHeaderDialog, gtranslator_header_dialog,
GTK_TYPE_DIALOG)
- struct _GtranslatorHeaderDialogPrivate
- {
- GtkWidget *main_box;
- GtkWidget *notebook;
-
- GtkWidget *prj_page;
- GtkWidget *lang_page;
- GtkWidget *lang_vbox;
-
- GtkWidget *prj_id_version;
- GtkWidget *rmbt;
- GtkWidget *prj_comment;
- GtkWidget *take_my_options;
-
- GtkWidget *translator;
- GtkWidget *tr_email;
- GtkWidget *pot_date;
- GtkWidget *po_date;
- GtkWidget *language;
- GtkWidget *lg_email;
- GtkWidget *charset;
- GtkWidget *encoding;
- };
-
- static void gtranslator_header_dialog_finalize (GObject * object)
+
+struct _GtranslatorHeaderDialogPrivate
+{
+ GtkWidget *main_box;
+ GtkWidget *notebook;
+
+ GtkWidget *prj_page;
+ GtkWidget *lang_page;
+ GtkWidget *lang_vbox;
+
+ GtkWidget *prj_id_version;
+ GtkWidget *rmbt;
+ GtkWidget *prj_comment;
+ GtkWidget *take_my_options;
+
+ GtkWidget *translator;
+ GtkWidget *tr_email;
+ GtkWidget *pot_date;
+ GtkWidget *po_date;
+ GtkWidget *language;
+ GtkWidget *lg_email;
+ GtkWidget *charset;
+ GtkWidget *encoding;
+
+ GtranslatorHeader *header;
+};
+
+static void
+gtranslator_header_dialog_finalize (GObject *object)
{
G_OBJECT_CLASS (gtranslator_header_dialog_parent_class)->finalize (object);
}
static void
-gtranslator_header_dialog_class_init (GtranslatorHeaderDialogClass * klass)
+gtranslator_header_dialog_class_init (GtranslatorHeaderDialogClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -79,8 +84,8 @@ gtranslator_header_dialog_class_init (GtranslatorHeaderDialogClass * klass)
}
static void
-take_my_options_checkbutton_toggled (GtkToggleButton * button,
- GtranslatorHeaderDialog * dlg)
+take_my_options_checkbutton_toggled (GtkToggleButton *button,
+ GtranslatorHeaderDialog *dlg)
{
g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->take_my_options));
@@ -102,165 +107,149 @@ take_my_options_checkbutton_toggled (GtkToggleButton * button,
}
static void
-prj_comment_changed (GtkTextBuffer * buffer, GtranslatorHeader * header)
+prj_comment_changed (GtkTextBuffer * buffer,
+ GtranslatorHeaderDialog *dlg)
{
- const gchar *text;
GtkTextIter start, end;
-
- gtranslator_header_set_header_changed (header, TRUE);
+ gchar *text;
gtk_text_buffer_get_bounds (buffer, &start, &end);
text = gtk_text_buffer_get_text (buffer, &start, &end, TRUE);
if (text)
- gtranslator_header_set_comment (header, g_strdup (text));
-}
-
-static void
-prj_id_version_changed (GObject * gobject,
- GParamSpec * arg1, GtranslatorHeader * header)
-{
- const gchar *text;
-
- gtranslator_header_set_header_changed (header, TRUE);
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtranslator_header_set_prj_id_version (header, g_strdup (text));
-}
-
-static void
-rmbt_changed (GObject * gobject,
- GParamSpec * arg1, GtranslatorHeader * header)
-{
- const gchar *text;
-
- gtranslator_header_set_header_changed (header, TRUE);
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtranslator_header_set_rmbt (header, g_strdup (text));
+ {
+ gtranslator_header_set_comments (dlg->priv->header, text);
+ g_free (text);
+ }
}
static void
-translator_changed (GObject * gobject,
- GParamSpec * arg1, GtranslatorHeader * header)
+prj_id_version_changed (GtkWidget *widget,
+ GtranslatorHeaderDialog *dlg)
{
const gchar *text;
- gtranslator_header_set_header_changed (header, TRUE);
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
+ text = gtk_entry_get_text (GTK_ENTRY (widget));
if (text)
- gtranslator_header_set_translator (header, g_strdup (text));
+ gtranslator_header_set_prj_id_version (dlg->priv->header, text);
}
static void
-tr_email_changed (GObject * gobject,
- GParamSpec * arg1, GtranslatorHeader * header)
+rmbt_changed (GtkWidget *widget,
+ GtranslatorHeaderDialog *dlg)
{
const gchar *text;
- gtranslator_header_set_header_changed (header, TRUE);
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
+ text = gtk_entry_get_text (GTK_ENTRY (widget));
if (text)
- gtranslator_header_set_tr_email (header, g_strdup (text));
+ gtranslator_header_set_rmbt (dlg->priv->header, text);
}
static void
-language_changed (GObject * gobject,
- GParamSpec * arg1, GtranslatorHeader * header)
+translator_changed (GtkWidget *widget,
+ GtranslatorHeaderDialog *dlg)
{
- const gchar *text;
+ const gchar *name, *email;
- gtranslator_header_set_header_changed (header, TRUE);
+ name = gtk_entry_get_text (GTK_ENTRY (dlg->priv->translator));
+ email = gtk_entry_get_text (GTK_ENTRY (dlg->priv->tr_email));
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtranslator_header_set_language (header, g_strdup (text));
+ if (name && email)
+ gtranslator_header_set_translator (dlg->priv->header, name, email);
}
static void
-lg_email_changed (GObject * gobject,
- GParamSpec * arg1, GtranslatorHeader * header)
+language_changed (GtkWidget *widget,
+ GtranslatorHeaderDialog *dlg)
{
- const gchar *text;
-
- gtranslator_header_set_header_changed (header, TRUE);
+ const gchar *language, *lg_email;
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
+ language = gtk_entry_get_text (GTK_ENTRY (dlg->priv->language));
+ lg_email = gtk_entry_get_text (GTK_ENTRY (dlg->priv->lg_email));
- if (text)
- gtranslator_header_set_lg_email (header, g_strdup (text));
+ if (language && lg_email)
+ gtranslator_header_set_language (dlg->priv->header, language, lg_email);
}
-
static void
-gtranslator_header_dialog_fill_from_header (GtranslatorHeaderDialog * dlg,
- GtranslatorHeader * header)
+gtranslator_header_dialog_fill_from_header (GtranslatorHeaderDialog * dlg)
{
+ GtranslatorHeader *header;
GtkTextBuffer *buffer;
+ gchar *text;
+
+ header = dlg->priv->header;
- /*
- * Project Information
- */
+ /* Project Information */
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (dlg->priv->prj_comment));
- gtk_text_buffer_set_text (buffer, gtranslator_header_get_comment (header),
- strlen (gtranslator_header_get_comment (header)));
+ gtk_text_buffer_set_text (buffer, gtranslator_header_get_comments (header),
+ -1);
+ text = gtranslator_header_get_prj_id_version (header);
gtk_entry_set_text (GTK_ENTRY (dlg->priv->prj_id_version),
- gtranslator_header_get_prj_id_version (header));
+ text);
+ g_free (text);
+
+ text = gtranslator_header_get_pot_date (header);
gtk_entry_set_text (GTK_ENTRY (dlg->priv->pot_date),
- gtranslator_header_get_pot_date (header));
+ text);
+ g_free (text);
+
+ text = gtranslator_header_get_po_date (header);
gtk_entry_set_text (GTK_ENTRY (dlg->priv->po_date),
- gtranslator_header_get_po_date (header));
+ text);
+ g_free (text);
+
+ text = gtranslator_header_get_rmbt (header);
gtk_entry_set_text (GTK_ENTRY (dlg->priv->rmbt),
- gtranslator_header_get_rmbt (header));
+ text);
+ g_free (text);
- /*
- * Translator and Language Information
- */
+ /* Translator and Language Information */
+ text = gtranslator_header_get_translator (header);
gtk_entry_set_text (GTK_ENTRY (dlg->priv->translator),
- gtranslator_header_get_translator (header));
+ text);
+ g_free (text);
+
+ text = gtranslator_header_get_tr_email (header);
gtk_entry_set_text (GTK_ENTRY (dlg->priv->tr_email),
- gtranslator_header_get_tr_email (header));
+ text);
+ g_free (text);
+
+ text = gtranslator_header_get_language (header);
gtk_entry_set_text (GTK_ENTRY (dlg->priv->language),
- gtranslator_header_get_language (header));
- gtk_entry_set_text (GTK_ENTRY (dlg->priv->lg_email),
- gtranslator_header_get_lg_email (header));
- gtk_entry_set_text (GTK_ENTRY (dlg->priv->charset),
- gtranslator_header_get_charset (header));
- gtk_entry_set_text (GTK_ENTRY (dlg->priv->encoding),
- gtranslator_header_get_encoding (header));
-}
+ text);
+ g_free (text);
-static void
-save_header (GtranslatorPo * po)
-{
- GtranslatorHeader *header;
+ text = gtranslator_header_get_lg_email (header);
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->lg_email),
+ text);
+ g_free (text);
- header = gtranslator_po_get_header (po);
+ text = gtranslator_header_get_charset (header);
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->charset),
+ text);
+ g_free (text);
- if (gtranslator_header_get_header_changed (header))
- gtranslator_po_set_state (po, GTR_PO_STATE_MODIFIED);
+ text = gtranslator_header_get_encoding (header);
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->encoding),
+ text);
+ g_free (text);
}
static void
gtranslator_header_dialog_init (GtranslatorHeaderDialog * dlg)
{
+ GtkTextBuffer *buffer;
gboolean ret;
GtkWidget *error_widget;
+ gchar *path;
gchar *root_objects[] = {
"main_box",
NULL
};
- gchar *path;
dlg->priv = GTR_HEADER_DIALOG_GET_PRIVATE (dlg);
@@ -328,10 +317,8 @@ gtranslator_header_dialog_init (GtranslatorHeaderDialog * dlg)
}
else
{
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
- (dlg->priv->take_my_options),
- gtranslator_prefs_manager_get_use_profile_values
- ());
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->take_my_options),
+ gtranslator_prefs_manager_get_use_profile_values ());
}
gtk_text_view_set_editable (GTK_TEXT_VIEW (dlg->priv->prj_comment), TRUE);
@@ -339,47 +326,63 @@ gtranslator_header_dialog_init (GtranslatorHeaderDialog * dlg)
gtk_widget_set_sensitive (dlg->priv->po_date, FALSE);
gtk_widget_set_sensitive (dlg->priv->charset, FALSE);
- if (gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON (dlg->priv->take_my_options)))
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dlg->priv->take_my_options)))
{
+ gboolean active;
+
+ active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dlg->priv->take_my_options));
- gtk_widget_set_sensitive (dlg->priv->translator,
- !gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON
- (dlg->priv->take_my_options)));
- gtk_widget_set_sensitive (dlg->priv->tr_email,
- !gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON
- (dlg->priv->take_my_options)));
- gtk_widget_set_sensitive (dlg->priv->language,
- !gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON
- (dlg->priv->take_my_options)));
- gtk_widget_set_sensitive (dlg->priv->lg_email,
- !gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON
- (dlg->priv->take_my_options)));
- gtk_widget_set_sensitive (dlg->priv->encoding,
- !gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON
- (dlg->priv->take_my_options)));
+ gtk_widget_set_sensitive (dlg->priv->translator, !active);
+ gtk_widget_set_sensitive (dlg->priv->tr_email, !active);
+ gtk_widget_set_sensitive (dlg->priv->language, !active);
+ gtk_widget_set_sensitive (dlg->priv->lg_email, !active);
+ gtk_widget_set_sensitive (dlg->priv->encoding, !active);
}
/*Connect signals */
g_signal_connect (dlg->priv->take_my_options, "toggled",
- G_CALLBACK (take_my_options_checkbutton_toggled), dlg);
+ G_CALLBACK (take_my_options_checkbutton_toggled),
+ dlg);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (dlg->priv->prj_comment));
+
+ g_signal_connect (buffer, "changed",
+ G_CALLBACK (prj_comment_changed),
+ dlg);
+
+ /* Connect signals to edit Project information on Header dialog */
+ g_signal_connect (dlg->priv->prj_id_version, "changed",
+ G_CALLBACK (prj_id_version_changed),
+ dlg);
+
+ g_signal_connect (dlg->priv->rmbt, "changed",
+ G_CALLBACK (rmbt_changed),
+ dlg);
+
+ /* Connect signals to edit Translator and Language information on Header dialog */
+ g_signal_connect (dlg->priv->translator, "changed",
+ G_CALLBACK (translator_changed),
+ dlg);
+
+ g_signal_connect (dlg->priv->tr_email, "changed",
+ G_CALLBACK (translator_changed),
+ dlg);
+
+ g_signal_connect (dlg->priv->language, "changed",
+ G_CALLBACK(language_changed),
+ dlg);
+
+ g_signal_connect (dlg->priv->lg_email, "changed",
+ G_CALLBACK (language_changed),
+ dlg);
}
void
gtranslator_show_header_dialog (GtranslatorWindow * window)
{
-
- static GtkWidget *dlg = NULL;
-
+ static GtranslatorHeaderDialog *dlg = NULL;
GtranslatorPo *po;
GtranslatorTab *tab;
- GtranslatorHeader *header;
- GtkTextBuffer *buffer;
tab = gtranslator_window_get_active_tab (window);
g_return_if_fail (tab != NULL);
@@ -387,29 +390,22 @@ gtranslator_show_header_dialog (GtranslatorWindow * window)
g_return_if_fail (GTR_IS_WINDOW (window));
- /*
- * Get header's values from tab in window
- */
- header = gtranslator_window_get_header_from_active_tab (window);
-
if (dlg == NULL)
{
- dlg = GTK_WIDGET (g_object_new (GTR_TYPE_HEADER_DIALOG, NULL));
+ dlg = g_object_new (GTR_TYPE_HEADER_DIALOG, NULL);
+
g_signal_connect (dlg,
- "destroy", G_CALLBACK (gtk_widget_destroyed), &dlg);
- gtk_widget_show_all (dlg);
- }
+ "destroy",
+ G_CALLBACK (gtk_widget_destroyed),
+ &dlg);
- /*
- * Connect signal to save header in msg
- */
- g_signal_connect_swapped (dlg, "destroy", G_CALLBACK (save_header), po);
+ dlg->priv->header = gtranslator_window_get_header_from_active_tab (window);
- /*
- * Write header's values on Header dialog
- */
- gtranslator_header_dialog_fill_from_header (GTR_HEADER_DIALOG (dlg),
- header);
+ /* Write header's values on Header dialog */
+ gtranslator_header_dialog_fill_from_header (GTR_HEADER_DIALOG (dlg));
+
+ gtk_widget_show (GTK_WIDGET (dlg));
+ }
if (GTK_WINDOW (window) != gtk_window_get_transient_for (GTK_WINDOW (dlg)))
{
@@ -417,35 +413,4 @@ gtranslator_show_header_dialog (GtranslatorWindow * window)
}
gtk_window_present (GTK_WINDOW (dlg));
-
- buffer =
- gtk_text_view_get_buffer (GTK_TEXT_VIEW
- (GTR_HEADER_DIALOG (dlg)->priv->prj_comment));
-
- g_signal_connect (buffer, "changed",
- G_CALLBACK (prj_comment_changed), header);
-
- /*
- * Connect signals to edit Project information on Header dialog
- */
- g_signal_connect (GTR_HEADER_DIALOG (dlg)->priv->prj_id_version,
- "notify::text", G_CALLBACK (prj_id_version_changed),
- header);
-
- g_signal_connect (GTR_HEADER_DIALOG (dlg)->priv->rmbt, "notify::text",
- G_CALLBACK (rmbt_changed), header);
- /*
- * Connect signals to edit Translator and Language information on Header dialog
- */
- g_signal_connect (GTR_HEADER_DIALOG (dlg)->priv->translator, "notify::text",
- G_CALLBACK (translator_changed), header);
-
- g_signal_connect (GTR_HEADER_DIALOG (dlg)->priv->tr_email, "notify::text",
- G_CALLBACK (tr_email_changed), header);
-
- g_signal_connect (GTR_HEADER_DIALOG (dlg)->priv->language, "notify::text",
- G_CALLBACK (language_changed), header);
-
- g_signal_connect (GTR_HEADER_DIALOG (dlg)->priv->lg_email, "notify::text",
- G_CALLBACK (lg_email_changed), header);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]