gtranslator r3611 - in trunk/src: . dialogs



Author: icq
Date: Mon Sep 22 09:39:02 2008
New Revision: 3611
URL: http://svn.gnome.org/viewvc/gtranslator?rev=3611&view=rev

Log:
Applyed patch with translation memory ui

Modified:
   trunk/src/application.c
   trunk/src/dialogs/preferences-dialog.c
   trunk/src/dialogs/preferences-dialog.glade
   trunk/src/msg.c
   trunk/src/msg.h
   trunk/src/prefs-manager.c
   trunk/src/prefs-manager.h
   trunk/src/tab.c
   trunk/src/tab.h
   trunk/src/window.c
   trunk/src/window.h

Modified: trunk/src/application.c
==============================================================================
--- trunk/src/application.c	(original)
+++ trunk/src/application.c	Mon Sep 22 09:39:02 2008
@@ -227,6 +227,9 @@
 	if (app->priv->tm)
 		g_object_unref (app->priv->tm);
 	
+	if (app->priv->tm)
+        g_object_unref (app->priv->tm);
+
 	G_OBJECT_CLASS (gtranslator_application_parent_class)->finalize (object);
 }
 
@@ -549,3 +552,11 @@
 	
 	return G_OBJECT (app->priv->tm);
 }
+
+GObject *
+gtranslator_application_get_translation_memory (GtranslatorApplication *app)
+{
+	g_return_val_if_fail (GTR_IS_APPLICATION (app), NULL);
+	
+	return G_OBJECT (app->priv->tm);
+}

Modified: trunk/src/dialogs/preferences-dialog.c
==============================================================================
--- trunk/src/dialogs/preferences-dialog.c	(original)
+++ trunk/src/dialogs/preferences-dialog.c	Mon Sep 22 09:39:02 2008
@@ -77,7 +77,16 @@
 	GtkWidget *add_button;
 	GtkWidget *edit_button;
 	GtkWidget *delete_button;
-	
+
+        /*Translation Memory*/
+        GtkWidget *directory_entry;
+        GtkWidget *search_button;
+        GtkWidget *add_database_button;
+
+        GtkWidget *show_tm_options_checkbutton;
+        GtkWidget *missing_words_spinbutton;
+        GtkWidget *sentence_length_spinbutton;
+
 	/*PO header->Personal information*/
 	GtkWidget *name_entry;
 	GtkWidget *email_entry;
@@ -581,6 +590,255 @@
 			 dlg);
 }
 
+/***************Translation Memory pages****************/
+static void
+response_filechooser_cb (GtkDialog *dialog,
+			 gint       response_id,
+			 gpointer   user_data)  
+{
+  GtranslatorPreferencesDialog *dlg;
+
+  dlg = (GtranslatorPreferencesDialog *)user_data;
+  
+
+  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)));
+    gtk_widget_destroy (GTK_WIDGET (dialog));
+  } else {
+    gtk_widget_destroy (GTK_WIDGET (dialog));
+  }
+}
+
+static void
+on_search_button_pulsed (GtkButton *button,
+			 gpointer data)
+{
+  GtkWidget *filechooser;
+  GtranslatorPreferencesDialog *dlg;
+
+  dlg = (GtranslatorPreferencesDialog *)data;
+  
+  filechooser = gtk_file_chooser_dialog_new ("Select PO directory",
+					     NULL,
+					     GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+					     GTK_STOCK_CANCEL,
+					     GTK_RESPONSE_CANCEL,
+					     GTK_STOCK_OK,
+					     GTK_RESPONSE_YES,
+					     NULL);
+ 
+  g_signal_connect (GTK_DIALOG (filechooser), "response",
+		    G_CALLBACK (response_filechooser_cb),
+		    dlg);
+
+  gtk_dialog_run (GTK_DIALOG (filechooser));
+}
+
+static void
+gtranslator_project_utils_scan_dir (GFile *dir,
+				    GList **list,
+				    const gchar *po_name)
+{
+	GFileInfo *info;
+	GError *error;
+	GFile *file;
+	GFileEnumerator *enumerator;
+
+	error = NULL;
+	enumerator = g_file_enumerate_children (dir,
+						G_FILE_ATTRIBUTE_STANDARD_NAME,
+						G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+						NULL,
+						&error);
+	if (enumerator) 
+	{
+		error = NULL;
+		
+		while ((info = g_file_enumerator_next_file (enumerator, NULL, &error)) != NULL) 
+		{
+			const gchar *name;
+			gchar *filename;
+			
+			name = g_file_info_get_name (info);
+			file = g_file_get_child (dir, name);
+
+			if (po_name != NULL)
+			{
+				if (g_str_has_suffix (po_name, ".po"))
+					filename = g_strdup (po_name);
+				else 
+					filename = g_strconcat (po_name, ".po", NULL);
+			}
+			else
+				filename = g_strdup (".po");
+			
+			if (g_str_has_suffix (name, filename))
+				*list = g_list_prepend (*list, g_file_get_path (file));
+			g_free (filename);
+
+			gtranslator_project_utils_scan_dir (file, list, po_name);
+			g_object_unref (file);
+			g_object_unref (info);
+		}
+		g_file_enumerator_close (enumerator, NULL, NULL);
+		g_object_unref (enumerator);
+		
+		if (error)
+		{
+			g_warning (error->message);
+		}
+	}
+}
+
+
+static void
+on_add_database_button_pulsed (GtkButton *button,
+			       gpointer data)
+{
+  GList *files_list = NULL;
+  GList *l = NULL;
+  GFile *dir;
+  const gchar *dir_name;
+  GtranslatorPo *po;
+  GtranslatorTranslationMemory *tm;
+  GtkWidget *dialog;
+  
+  tm = (GtranslatorTranslationMemory *)gtranslator_application_get_translation_memory (GTR_APP);
+
+  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);
+
+  for (l = files_list; l; l = l->next) {
+    GList *msg_list = NULL;
+    GList *l2 = NULL;
+    gchar *file_uri;
+
+    po = gtranslator_po_new ();
+    file_uri = (gchar*)l->data;
+    
+    gtranslator_po_parse (po, file_uri, NULL);
+    msg_list = gtranslator_po_get_messages (po);
+       
+    for (l2 = msg_list; l2; l2 = l2->next) {
+      GtranslatorMsg *msg;
+      msg = (GtranslatorMsg *)l2->data;
+      if (gtranslator_msg_is_translated (msg))
+	gtranslator_translation_memory_store (tm,
+					      gtranslator_msg_get_msgid (msg),
+					      gtranslator_msg_get_msgstr (msg));
+    }
+    //g_list_foreach (msg_list, (GFunc)g_object_unref, NULL);
+    //g_list_free (msg_list);
+    g_free (file_uri);
+    g_object_unref (po);
+  }
+  //g_list_foreach (files_list, (GFunc)g_object_unref, NULL);
+  //g_list_free (files_list); 
+
+  dialog = gtk_message_dialog_new (NULL,
+				   GTK_DIALOG_MODAL,
+				   GTK_MESSAGE_INFO,
+				   GTK_BUTTONS_CLOSE,
+				   NULL);
+
+  gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
+				 _("<span weight=\"bold\" size=\"large\">Strings added to database</span>"));
+  
+  g_signal_connect_swapped (dialog,
+			    "response",
+			    G_CALLBACK (gtk_widget_destroy),
+			    dialog);
+  gtk_dialog_run (GTK_DIALOG (dialog));
+}
+
+static void
+on_show_tm_options_checkbutton_changed (GtkToggleButton *button,
+					gpointer user_data)
+{ 
+  gtranslator_prefs_manager_set_show_tm_options (gtk_toggle_button_get_active(button));
+}
+
+static void
+on_missing_words_spinbutton_changed (GtkSpinButton *spinbutton,
+				      gpointer data)
+{
+  gint value;
+
+  value = gtk_spin_button_get_value_as_int (spinbutton);
+
+  gtranslator_prefs_manager_set_missing_words (value);
+}
+
+static void
+on_sentence_length_spinbutton_changed (GtkSpinButton *spinbutton,
+				      gpointer data)
+{
+  gint value;
+
+  value = gtk_spin_button_get_value_as_int (spinbutton);
+
+  gtranslator_prefs_manager_set_sentence_length (value);
+}
+
+static void
+directory_entry_changed(GObject    *gobject,
+			GParamSpec *arg1,
+			GtranslatorPreferencesDialog *dlg)
+{
+	const gchar *text;
+	
+	g_return_if_fail(GTK_ENTRY(gobject) == GTK_ENTRY(dlg->priv->directory_entry));
+
+	text = gtk_entry_get_text(GTK_ENTRY(gobject));
+	
+	if(text)
+	  gtranslator_prefs_manager_set_tm_dir (text);
+}
+
+
+static void
+setup_tm_pages(GtranslatorPreferencesDialog *dlg)
+{	
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->show_tm_options_checkbutton),
+				gtranslator_prefs_manager_get_show_tm_options ());
+  
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->priv->missing_words_spinbutton),
+			     (gdouble) gtranslator_prefs_manager_get_missing_words ());
+  
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->priv->sentence_length_spinbutton),
+			     (gdouble) gtranslator_prefs_manager_get_sentence_length ());
+  
+  g_signal_connect (GTK_BUTTON (dlg->priv->search_button), "clicked",
+		    G_CALLBACK (on_search_button_pulsed),
+		    dlg);
+
+  g_signal_connect(dlg->priv->directory_entry, "notify::text",
+			 G_CALLBACK(directory_entry_changed),
+			 dlg);
+  
+  g_signal_connect (GTK_BUTTON (dlg->priv->add_database_button), "clicked",
+		    G_CALLBACK (on_add_database_button_pulsed),
+		    dlg);
+
+  g_signal_connect (GTK_TOGGLE_BUTTON (dlg->priv->show_tm_options_checkbutton), "toggled",
+		    G_CALLBACK (on_show_tm_options_checkbutton_changed),
+		    dlg);
+
+  g_signal_connect (GTK_SPIN_BUTTON (dlg->priv->missing_words_spinbutton), "value-changed",
+		    G_CALLBACK (on_missing_words_spinbutton_changed),
+		    dlg);
+  
+  g_signal_connect (GTK_SPIN_BUTTON (dlg->priv->sentence_length_spinbutton), "value-changed",
+		    G_CALLBACK (on_sentence_length_spinbutton_changed),
+		    dlg);
+}
+
+/***************Plugins pages****************/
 static void
 setup_plugin_pages(GtranslatorPreferencesDialog *dlg)
 {
@@ -864,6 +1122,7 @@
 	setup_editor_pages(dlg);
 	setup_profile_pages(dlg);
 	setup_interface_pages(dlg);
+	setup_tm_pages (dlg);
 	setup_plugin_pages(dlg);
 }
 

Modified: trunk/src/dialogs/preferences-dialog.glade
==============================================================================
--- trunk/src/dialogs/preferences-dialog.glade	(original)
+++ trunk/src/dialogs/preferences-dialog.glade	Mon Sep 22 09:39:02 2008
@@ -667,6 +667,265 @@
               </packing>
             </child>
             <child>
+              <widget class="GtkVBox" id="memories_vbox">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">18</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox9">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label20">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Database:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="right_padding">12</property>
+                        <child>
+                          <widget class="GtkHBox" id="hbox8">
+                            <property name="visible">True</property>
+                            <property name="spacing">18</property>
+                            <child>
+                              <widget class="GtkLabel" id="label25">
+                                <property name="visible">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkVBox" id="vbox11">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label26">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Select directory contains PO files:</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox9">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <widget class="GtkEntry" id="directory_entry">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0.0099999997764825821</property>
+                                      </widget>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkButton" id="search_button">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">True</property>
+                                        <property name="label" translatable="yes">gtk-find</property>
+                                        <property name="use_stock">True</property>
+                                        <property name="response_id">0</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkButton" id="add_database_button">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="label" translatable="yes">Add to Database</property>
+                                    <property name="response_id">0</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox10">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label21">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Configuration:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="right_padding">12</property>
+                        <child>
+                          <widget class="GtkHBox" id="hbox7">
+                            <property name="visible">True</property>
+                            <property name="spacing">18</property>
+                            <child>
+                              <widget class="GtkLabel" id="label22">
+                                <property name="visible">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkTable" id="table1">
+                                <property name="visible">True</property>
+                                <property name="n_rows">3</property>
+                                <property name="n_columns">2</property>
+                                <property name="column_spacing">12</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <widget class="GtkSpinButton" id="sentence_length_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">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="label24">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Max. difference in sentence length:</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="top_attach">2</property>
+                                    <property name="bottom_attach">3</property>
+                                    <property name="x_options">GTK_FILL</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkSpinButton" id="missing_words_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">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">1</property>
+                                    <property name="bottom_attach">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label23">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Max. # of missing words:</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="top_attach">1</property>
+                                    <property name="bottom_attach">2</property>
+                                    <property name="x_options">GTK_FILL</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkCheckButton" id="show_tm_options_checkbutton">
+                                    <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>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">4</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="memory_page_label">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Translation Memory</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="position">4</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
               <widget class="GtkVBox" id="plugins_box">
                 <property name="visible">True</property>
                 <property name="spacing">6</property>
@@ -675,7 +934,7 @@
                 </child>
               </widget>
               <packing>
-                <property name="position">4</property>
+                <property name="position">5</property>
               </packing>
             </child>
             <child>
@@ -685,7 +944,7 @@
               </widget>
               <packing>
                 <property name="type">tab</property>
-                <property name="position">4</property>
+                <property name="position">5</property>
                 <property name="tab_fill">False</property>
               </packing>
             </child>

Modified: trunk/src/msg.c
==============================================================================
--- trunk/src/msg.c	(original)
+++ trunk/src/msg.c	Mon Sep 22 09:39:02 2008
@@ -47,6 +47,8 @@
 	GtkTreeRowReference *row_reference;
 
 	gint po_position;
+  
+        gchar **tm_list;
 };
 
 static gchar *message_error = NULL;
@@ -536,3 +538,17 @@
 	/*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;
+}

Modified: trunk/src/msg.h
==============================================================================
--- trunk/src/msg.h	(original)
+++ trunk/src/msg.h	Mon Sep 22 09:39:02 2008
@@ -141,6 +141,10 @@
 
 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/prefs-manager.c
==============================================================================
--- trunk/src/prefs-manager.c	(original)
+++ trunk/src/prefs-manager.c	Mon Sep 22 09:39:02 2008
@@ -333,6 +333,23 @@
 		 GPM_GDL_STYLE,
 		 GPM_DEFAULT_GDL_STYLE)
 
+/* Translation Memory */
+DEFINE_STRING_PREF (tm_dir,
+		    GPM_TM_DIR,
+		    GPM_DEFAULT_TM_DIR)
+
+DEFINE_INT_PREF (show_tm_options,
+		 GPM_TM_SHOW_TM_OPTIONS,
+		 GPM_DEFAULT_TM_SHOW_TM_OPTIONS)
+
+DEFINE_INT_PREF (missing_words,
+		 GPM_TM_MISSING_WORDS,
+		 GPM_DEFAULT_TM_MISSING_WORDS)
+
+DEFINE_INT_PREF (sentence_length,
+		 GPM_TM_SENTENCE_LENGTH,
+		 GPM_DEFAULT_TM_SENTENCE_LENGTH)
+
 /* The following functions are taken from gconf-client.c 
  * and partially modified. 
  * The licensing terms on these is: 

Modified: trunk/src/prefs-manager.h
==============================================================================
--- trunk/src/prefs-manager.h	(original)
+++ trunk/src/prefs-manager.h	Mon Sep 22 09:39:02 2008
@@ -70,6 +70,12 @@
 #define GPM_TRANSFER_ENCODING		GPM_LANGUAGE_SETTINGS_DIR "/transfer_encoding"
 #define GPM_TEAM_EMAIL			GPM_LANGUAGE_SETTINGS_DIR "/team_email"
 
+/* Translation Memory */
+#define GPM_TM_DIR                      GPM_PREFS_DIR "/tm/dir_entry"
+#define GPM_TM_SHOW_TM_OPTIONS          GPM_PREFS_DIR "/tm/show_tm_options"
+#define GPM_TM_MISSING_WORDS            GPM_PREFS_DIR "/tm/missing_words"
+#define GPM_TM_SENTENCE_LENGTH          GPM_PREFS_DIR "/tm/sentence_lenght"
+
 /*FIXME: With profiles i think that this has to change*/
 #define GPM_PLURAL_FORM			GPM_LANGUAGE_SETTINGS_DIR "/plural_form"
 
@@ -115,6 +121,12 @@
 /* Interface */
 #define GPM_DEFAULT_GDL_STYLE           2 //Both icons and text
 
+/* Translation Memory */
+#define GPM_DEFAULT_TM_DIR              (const gchar*) ""
+#define GPM_DEFAULT_TM_SHOW_TM_OPTIONS  0 /*FALSE*/
+#define GPM_DEFAULT_TM_MISSING_WORDS    2
+#define GPM_DEFAULT_TM_SENTENCE_LENGTH  2
+
 /** LIFE CYCLE MANAGEMENT FUNCTIONS **/
 
 gboolean		 gtranslator_prefs_manager_init                         (void);
@@ -197,4 +209,17 @@
 void                     gtranslator_prefs_manager_set_gdl_style                (gint style);
 gint                     gtranslator_prefs_manager_get_gdl_style                (void);
 
+/*Translation Memory*/
+void                     gtranslator_prefs_manager_set_tm_dir                   (const gchar *dir);
+const gchar *            gtranslator_prefs_manager_get_tm_dir                   (void);
+
+void                     gtranslator_prefs_manager_set_show_tm_options          (gboolean show_tm_options);
+gboolean                 gtranslator_prefs_manager_get_show_tm_options          (void);
+
+void                     gtranslator_prefs_manager_set_missing_words            (gint timeout);
+gint                     gtranslator_prefs_manager_get_missing_words            (void);
+
+void                     gtranslator_prefs_manager_set_sentence_length          (gint timeout);
+gint                     gtranslator_prefs_manager_get_sentence_length          (void);
+
 #endif  /* __GTR_PREFS_MANAGER_H__ */

Modified: trunk/src/tab.c
==============================================================================
--- trunk/src/tab.c	(original)
+++ trunk/src/tab.c	Mon Sep 22 09:39:02 2008
@@ -61,6 +61,7 @@
 
 	GtkWidget *comment_pane;
 	GtkWidget *comment;
+        GtkWidget *translation_memory;
 	
 	/*Message area*/
 	GtkWidget *message_area;
@@ -84,6 +85,7 @@
 {
 	SHOWED_MESSAGE,
 	MESSAGE_CHANGED,
+	MESSAGE_EDITION_FINISHED,
 	LAST_SIGNAL
 };
 
@@ -431,7 +433,7 @@
 	GtkWidget *image;
 	GtkWidget *vertical_box;
 	GtkWidget *label_widget;
-	
+	GtkWidget *notebook, *tm_layout, *tm, *comments_label, *tm_label, *scroll;
 	GtranslatorTabPrivate *priv = tab->priv;
 	
 	/*
@@ -467,10 +469,23 @@
 
 	/*
 	 * Comment
-	 */
-	priv->comment = gtranslator_comment_panel_new(GTK_WIDGET(tab));
-	gtk_paned_pack2(GTK_PANED(priv->comment_pane), priv->comment, TRUE, TRUE);
+	 */	
+	comments_label = gtk_label_new ("Comments");
+	tm_label = gtk_label_new ("Translation Memory");
+
+	priv->comment = gtranslator_comment_panel_new (GTK_WIDGET (tab));
 	gtk_widget_show (priv->comment);
+
+	priv->translation_memory = gtranslator_translation_memory_ui_new (GTK_WIDGET (tab));
+	gtk_widget_show (priv->translation_memory);
+
+	notebook = gtk_notebook_new ();
+	gtk_widget_show (notebook);
+
+	gtk_paned_pack2(GTK_PANED(priv->comment_pane), notebook, TRUE, TRUE);
+	
+	gtk_notebook_append_page (GTK_NOTEBOOK (notebook), priv->comment, comments_label);
+	gtk_notebook_append_page (GTK_NOTEBOOK (notebook), priv->translation_memory, tm_label);
 	
 	/*
 	 * Content pane; this is where the message table and message area go
@@ -576,6 +591,16 @@
 			     g_cclosure_marshal_VOID__POINTER,
 			     G_TYPE_NONE, 1,
 			     G_TYPE_POINTER);
+	
+	signals[MESSAGE_EDITION_FINISHED] = 
+		g_signal_new("message-edition-finished",
+			     G_OBJECT_CLASS_TYPE (klass),
+			     G_SIGNAL_RUN_LAST,
+			     G_STRUCT_OFFSET (GtranslatorTabClass, message_edition_finished),
+			     NULL, NULL,
+			     g_cclosure_marshal_VOID__POINTER,
+			     G_TYPE_NONE, 1,
+			     G_TYPE_POINTER);
 }
 
 /***************************** Public funcs ***********************************/
@@ -787,6 +812,12 @@
 	message_error = gtranslator_msg_check(current_msg->data);
 	if(message_error == NULL)
 	{
+		/*
+		 * Emitting message-edition-finished signal
+		 */
+		g_signal_emit (G_OBJECT (tab), signals[MESSAGE_EDITION_FINISHED],
+			       0, GTR_MSG (current_msg->data));
+		
 		gtranslator_tab_show_message(tab, to_go->data);
 		set_message_area(tab, NULL);
 	}

Modified: trunk/src/tab.h
==============================================================================
--- trunk/src/tab.h	(original)
+++ trunk/src/tab.h	Mon Sep 22 09:39:02 2008
@@ -69,6 +69,8 @@
 				  GtranslatorMsg *msg);
 	void (* message_changed) (GtranslatorTab *tab,
 				  GtranslatorMsg *msg);
+	void (* message_edition_finished)  (GtranslatorTab *tab,
+					    GtranslatorMsg *msg);
 };
 
 /*

Modified: trunk/src/window.c
==============================================================================
--- trunk/src/window.c	(original)
+++ trunk/src/window.c	Mon Sep 22 09:39:02 2008
@@ -80,6 +80,8 @@
 	GtkUIManager *ui_manager;
 	GtkRecentManager *recent_manager;
 	GtkWidget *recent_menu;
+
+        GtkWidget *tm_menu;
 	
 	gint            width;
         gint            height; 
@@ -181,7 +183,9 @@
 	{ "EditFuzzy", NULL, N_("Toggle _Fuzzy Status"), "<control>U",
 	  N_("Toggle fuzzy status of a message"),
 	  G_CALLBACK (gtranslator_message_status_toggle_fuzzy) },
-	
+	{ "EditTranslationMemory", NULL, N_("_Translation Memory"), NULL, NULL, NULL},
+
+
 	/* View menu */
 	{ "ViewSidePane", NULL, N_("Side _Pane"), "F9",
 	  N_("Show or hide the side pane in the current window"),
@@ -1184,7 +1188,8 @@
 	GError *error = NULL;
 	GtkWidget *dockbar;
 	GtkWidget *hbox_dock;
-	
+	GtkWidget *tm_widget;
+
 	GtranslatorWindowPrivate *priv = window->priv;
 	
 	/*
@@ -1250,6 +1255,11 @@
 					    "/MainMenu/FileMenu/FileRecentFilesMenu");
 	gtk_menu_item_set_submenu (GTK_MENU_ITEM (widget), priv->recent_menu);
 	
+	/*
+	 * Translation Memory
+	 */
+	priv->tm_menu= gtk_ui_manager_get_widget (priv->ui_manager,
+					       "/MainMenu/EditMenu/EditTranslationMemory");   
 
 	/*
 	 * Toolbar
@@ -1855,3 +1865,9 @@
 	
 	set_sensitive_according_to_window (window);
 }
+
+GtkWidget
+*gtranslator_window_get_tm_menu (GtranslatorWindow *window)
+{
+        return window->priv->tm_menu;
+}

Modified: trunk/src/window.h
==============================================================================
--- trunk/src/window.h	(original)
+++ trunk/src/window.h	Mon Sep 22 09:39:02 2008
@@ -131,6 +131,8 @@
 void             _gtranslator_window_close_tab        (GtranslatorWindow *window,
 						       GtranslatorTab *tab);
 
+GtkWidget        *gtranslator_window_get_tm_menu      (GtranslatorWindow *window);
+
 G_END_DECLS
 
 #endif /* __WINDOW_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]