gimp r24833 - in trunk: . app/widgets



Author: neo
Date: Fri Feb  8 13:50:34 2008
New Revision: 24833
URL: http://svn.gnome.org/viewvc/gimp?rev=24833&view=rev

Log:
2008-02-08  Sven Neumann  <sven gimp org>

	* app/widgets/gimplanguagestore.[ch]
	* app/widgets/gimplanguagestore-parser.c: actually populate the
	language store. Still work in progress...

	* app/widgets/gimptexteditor.c: added a combo-box for language
	selection. Not functional yet; just something to play with.


Modified:
   trunk/ChangeLog
   trunk/app/widgets/gimplanguagestore-parser.c
   trunk/app/widgets/gimplanguagestore.c
   trunk/app/widgets/gimplanguagestore.h
   trunk/app/widgets/gimptexteditor.c

Modified: trunk/app/widgets/gimplanguagestore-parser.c
==============================================================================
--- trunk/app/widgets/gimplanguagestore-parser.c	(original)
+++ trunk/app/widgets/gimplanguagestore-parser.c	Fri Feb  8 13:50:34 2008
@@ -32,6 +32,8 @@
 #include "gimplanguagestore.h"
 #include "gimplanguagestore-parser.h"
 
+#include "gimp-intl.h"
+
 
 typedef enum
 {
@@ -46,10 +48,7 @@
   IsoCodesParserState  state;
   IsoCodesParserState  last_known_state;
   gint                 unknown_depth;
-  GString             *value;
   GimpLanguageStore   *store;
-  gchar               *language;
-  gchar               *code;
 } IsoCodesParser;
 
 
@@ -91,7 +90,9 @@
   g_return_val_if_fail (GIMP_IS_LANGUAGE_STORE (store), FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  parser.value = g_string_new (NULL);
+  bindtextdomain ("iso_639", ISO_CODES_LOCALEDIR);
+
+  parser.store = g_object_ref (store);
 
   xml_parser = gimp_xml_parser_new (&markup_parser, &parser);
 
@@ -99,9 +100,10 @@
 
   success = gimp_xml_parser_parse_file (xml_parser, filename, error);
 
-  gimp_xml_parser_free (xml_parser);
   g_free (filename);
-  g_string_free (parser.value, TRUE);
+
+  gimp_xml_parser_free (xml_parser);
+  g_object_unref (parser.store);
 
   return success;
 #endif
@@ -131,6 +133,28 @@
       names++;
       values++;
     }
+
+  if (lang && *lang && code && *code)
+    {
+      const gchar *semicolon;
+
+      lang = dgettext ("iso_639", lang);
+
+      /*  there might be several language names; use the first one  */
+      semicolon = strchr (lang, ';');
+
+      if (semicolon)
+        {
+          gchar *first = g_strndup (lang, semicolon - lang);
+
+          gimp_language_store_add (parser->store, first, code);
+          g_free (first);
+        }
+      else
+        {
+          gimp_language_store_add (parser->store, lang, code);
+        }
+    }
 }
 
 static void

Modified: trunk/app/widgets/gimplanguagestore.c
==============================================================================
--- trunk/app/widgets/gimplanguagestore.c	(original)
+++ trunk/app/widgets/gimplanguagestore.c	Fri Feb  8 13:50:34 2008
@@ -70,6 +70,8 @@
 
   gtk_list_store_set_column_types (GTK_LIST_STORE (store),
                                    G_N_ELEMENTS (column_types), column_types);
+
+  gimp_language_store_populate (store, NULL);
 }
 
 static void
@@ -119,3 +121,20 @@
                        "translations", translations,
                        NULL);
 }
+
+void
+gimp_language_store_add (GimpLanguageStore *store,
+                         const gchar       *lang,
+                         const gchar       *code)
+{
+  GtkTreeIter  iter;
+
+  g_return_if_fail (GIMP_IS_LANGUAGE_STORE (store));
+  g_return_if_fail (lang != NULL && code != NULL);
+
+  gtk_list_store_append (GTK_LIST_STORE (store), &iter);
+  gtk_list_store_set (GTK_LIST_STORE (store), &iter,
+                      GIMP_LANGUAGE_STORE_LANGUAGE,  lang,
+                      GIMP_LANGUAGE_STORE_ISO_639_1, code,
+                      -1);
+}

Modified: trunk/app/widgets/gimplanguagestore.h
==============================================================================
--- trunk/app/widgets/gimplanguagestore.h	(original)
+++ trunk/app/widgets/gimplanguagestore.h	Fri Feb  8 13:50:34 2008
@@ -56,6 +56,9 @@
 GType          gimp_language_store_get_type (void) G_GNUC_CONST;
 
 GtkListStore * gimp_language_store_new      (gboolean  translations);
+void           gimp_language_store_add      (GimpLanguageStore *store,
+                                             const gchar       *lang,
+                                             const gchar       *code);
 
 
 #endif  /* __GIMP_LANGUAGE_STORE_H__ */

Modified: trunk/app/widgets/gimptexteditor.c
==============================================================================
--- trunk/app/widgets/gimptexteditor.c	(original)
+++ trunk/app/widgets/gimptexteditor.c	Fri Feb  8 13:50:34 2008
@@ -31,6 +31,7 @@
 
 #include "gimphelp-ids.h"
 #include "gimpmenufactory.h"
+#include "gimplanguagestore.h"
 #include "gimptexteditor.h"
 #include "gimpuimanager.h"
 
@@ -168,6 +169,26 @@
       gtk_widget_show (toolbar);
     }
 
+  {
+    GtkListStore    *store;
+    GtkWidget       *combo;
+    GtkCellRenderer *cell;
+
+    store = gimp_language_store_new (FALSE);
+    combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+    g_object_unref (store);
+
+    cell = gtk_cell_renderer_text_new ();
+    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE);
+    gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), cell,
+                                    "text", GIMP_LANGUAGE_STORE_LANGUAGE,
+                                    NULL);
+
+    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (editor)->vbox),
+                        combo, FALSE, FALSE, 0);
+    gtk_widget_show (combo);
+  }
+
   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
                                   GTK_POLICY_AUTOMATIC,



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