gtranslator r3633 - in trunk/src: . dialogs
- From: icq svn gnome org
- To: svn-commits-list gnome org
- Subject: gtranslator r3633 - in trunk/src: . dialogs
- Date: Mon, 22 Sep 2008 09:40:07 +0000 (UTC)
Author: icq
Date: Mon Sep 22 09:40:07 2008
New Revision: 3633
URL: http://svn.gnome.org/viewvc/gtranslator?rev=3633&view=rev
Log:
2008-08-01 Ignacio Casal Quinteiro <nacho resa gmail com>
* dialogs/preferences-dialog.c (response_filechooser_cb),
(on_search_button_pulsed), (add_to_database), (destroy_idle_data),
(on_add_database_button_pulsed),
(gtranslator_preferences_dialog_init):
* dialogs/preferences-dialog.glade:
Added progress bar to show the status of adding a directory to the database.
Modified:
trunk/src/ChangeLog
trunk/src/dialogs/preferences-dialog.c
trunk/src/dialogs/preferences-dialog.glade
Modified: trunk/src/dialogs/preferences-dialog.c
==============================================================================
--- trunk/src/dialogs/preferences-dialog.c (original)
+++ trunk/src/dialogs/preferences-dialog.c Mon Sep 22 09:40:07 2008
@@ -82,6 +82,7 @@
GtkWidget *directory_entry;
GtkWidget *search_button;
GtkWidget *add_database_button;
+ GtkWidget *add_database_progressbar;
GtkWidget *show_tm_options_checkbutton;
GtkWidget *missing_words_spinbutton;
@@ -564,7 +565,7 @@
if (response_id == GTK_RESPONSE_YES) {
gtk_entry_set_text (GTK_ENTRY (dlg->priv->directory_entry),
gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)));
- gtranslator_prefs_manager_set_tm_dir (gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog)));
+ gtranslator_prefs_manager_set_tm_dir (gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)));
gtk_widget_destroy (GTK_WIDGET (dialog));
} else {
gtk_widget_destroy (GTK_WIDGET (dialog));
@@ -581,7 +582,7 @@
dlg = (GtranslatorPreferencesDialog *)data;
filechooser = gtk_file_chooser_dialog_new ("Select PO directory",
- NULL,
+ GTK_WINDOW (dlg),
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL,
@@ -596,6 +597,7 @@
gtk_dialog_run (GTK_DIALOG (filechooser));
}
+/* FIXME: We have to remove this when we move it to utils.ch */
static void
gtranslator_project_utils_scan_dir (GFile *dir,
GList **list,
@@ -652,70 +654,114 @@
}
}
+typedef struct _IdleData
+{
+ GList *list;
+ GtkProgressBar *progress;
+ GtranslatorTranslationMemory *tm;
+}IdleData;
+
+static gboolean
+add_to_database (gpointer data_pointer)
+{
+ IdleData *data = (IdleData *)data_pointer;
+ static GList *l = NULL;
+ gdouble percentage;
+
+ if (l == NULL)
+ l = data->list;
+ else
+ l = g_list_next (l);
+
+ if (l)
+ {
+ GList *msg_list = NULL;
+ GList *l2 = NULL;
+ const gchar *file_uri;
+ GError *error = NULL;
+ GtranslatorPo *po;
+
+ po = gtranslator_po_new ();
+ file_uri = (const gchar*)l->data;
+
+ gtranslator_po_parse (po, file_uri, &error);
+ if (error)
+ return TRUE;
+
+ msg_list = gtranslator_po_get_messages (po);
+
+ for (l2 = msg_list; l2; l2 = l2->next) {
+ GtranslatorMsg *msg;
+ msg = GTR_MSG (l2->data);
+ if (gtranslator_msg_is_translated (msg))
+ gtranslator_translation_memory_store (data->tm,
+ gtranslator_msg_get_msgid (msg),
+ gtranslator_msg_get_msgstr (msg));
+ }
+
+ g_object_unref (po);
+ }
+ else
+ {
+ gtk_progress_bar_set_fraction (data->progress,
+ 1.0);
+ return FALSE;
+ }
+
+ percentage = (gdouble)g_list_position (data->list, l) / (gdouble) g_list_length (data->list);
+
+ /*
+ * Set the progress only if the values are reasonable.
+ */
+ if(percentage > 0.0 || percentage < 1.0)
+ {
+ /*
+ * Set the progressbar status.
+ */
+ gtk_progress_bar_set_fraction (data->progress,
+ percentage);
+ }
+
+ return TRUE;
+}
+
+static void
+destroy_idle_data (gpointer data)
+{
+ IdleData *d = (IdleData *)data;
+
+ g_list_foreach (d->list, (GFunc)g_free, NULL);
+ g_list_free (d->list);
+
+ g_free (d);
+}
static void
on_add_database_button_pulsed (GtkButton *button,
GtranslatorPreferencesDialog *dlg)
{
- GList *files_list = NULL;
- GList *l = NULL;
GFile *dir;
const gchar *dir_name;
- GtranslatorPo *po;
- GtranslatorTranslationMemory *tm;
- GtkWidget *dialog;
-
- tm = GTR_TRANSLATION_MEMORY (gtranslator_application_get_translation_memory (GTR_APP));
+ IdleData *data;
+
+ data = g_new0 (IdleData, 1);
+ data->list = NULL;
dir_name = gtranslator_prefs_manager_get_tm_dir ();
- dir = g_file_new_for_uri (dir_name);
-
- gtranslator_project_utils_scan_dir (dir, &files_list, NULL);
+ dir = g_file_new_for_path (dir_name);
- for (l = files_list; l; l = l->next) {
- GList *msg_list = NULL;
- GList *l2 = NULL;
- const gchar *file_uri;
- GError *error = NULL;
-
- po = gtranslator_po_new ();
- file_uri = (const gchar*)l->data;
-
- gtranslator_po_parse (po, file_uri, &error);
- if (error)
- continue;
-
- msg_list = gtranslator_po_get_messages (po);
-
- for (l2 = msg_list; l2; l2 = l2->next) {
- GtranslatorMsg *msg;
- msg = GTR_MSG (l2->data);
- if (gtranslator_msg_is_translated (msg))
- gtranslator_translation_memory_store (tm,
- gtranslator_msg_get_msgid (msg),
- gtranslator_msg_get_msgstr (msg));
- }
-
- g_object_unref (po);
- }
- g_list_foreach (files_list, (GFunc)g_free, NULL);
- g_list_free (files_list);
+ gtranslator_project_utils_scan_dir (dir, &data->list, NULL);
- dialog = gtk_message_dialog_new (GTK_WINDOW (dlg),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_CLOSE,
- NULL);
+ data->tm = GTR_TRANSLATION_MEMORY (gtranslator_application_get_translation_memory (GTR_APP));
+ data->progress = GTK_PROGRESS_BAR (dlg->priv->add_database_progressbar);
- gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
- _("<span weight=\"bold\" size=\"large\">Strings added to database</span>"));
+ g_idle_add_full (G_PRIORITY_HIGH_IDLE + 30,
+ (GSourceFunc)add_to_database,
+ data,
+ (GDestroyNotify)destroy_idle_data);
- g_signal_connect_swapped (dialog,
- "response",
- G_CALLBACK (gtk_widget_destroy),
- dialog);
- gtk_dialog_run (GTK_DIALOG (dialog));
+ g_object_unref (dir);
}
static void
@@ -1044,6 +1090,7 @@
"directory_entry", &dlg->priv->directory_entry,
"search_button", &dlg->priv->search_button,
"add_database_button", &dlg->priv->add_database_button,
+ "add_database_progressbar", &dlg->priv->add_database_progressbar,
"show_tm_options_checkbutton", &dlg->priv->show_tm_options_checkbutton,
"missing_words_spinbutton", &dlg->priv->missing_words_spinbutton,
Modified: trunk/src/dialogs/preferences-dialog.glade
==============================================================================
--- trunk/src/dialogs/preferences-dialog.glade (original)
+++ trunk/src/dialogs/preferences-dialog.glade Mon Sep 22 09:40:07 2008
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Thu Jul 31 11:13:45 2008 -->
+<!--Generated with glade3 3.4.5 on Fri Aug 1 10:29:05 2008 -->
<glade-interface>
<widget class="GtkDialog" id="preferences_dialog">
<property name="border_width">5</property>
@@ -718,6 +718,15 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <widget class="GtkProgressBar" id="add_database_progressbar">
+ <property name="visible">True</property>
+ <property name="text" translatable="yes"></property>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="position">1</property>
@@ -781,23 +790,28 @@
<placeholder/>
</child>
<child>
- <widget class="GtkCheckButton" id="show_tm_options_checkbutton">
+ <widget class="GtkSpinButton" id="sentence_length_spinbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Show options in translated messages</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
+ <property name="adjustment">2 0 100 1 10 10</property>
</widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
</child>
<child>
- <widget class="GtkLabel" id="label23">
+ <widget class="GtkLabel" id="label24">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Max. # of missing words:</property>
+ <property name="label" translatable="yes">Max. difference in sentence length:</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
@@ -815,30 +829,25 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label24">
+ <widget class="GtkLabel" id="label23">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Max. difference in sentence length:</property>
+ <property name="label" translatable="yes">Max. # of missing words:</property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="sentence_length_spinbutton">
+ <widget class="GtkCheckButton" id="show_tm_options_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="adjustment">2 0 100 1 10 10</property>
+ <property name="label" translatable="yes">Show options in translated messages</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
</widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
</child>
</widget>
<packing>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]