$NetBSD$

support gucharmap-2 (taken from upstream revision 1627).

--- src/tomoe-gucharmap.c.orig	2007-04-27 05:41:40.000000000 +0000
+++ src/tomoe-gucharmap.c
@@ -24,6 +24,10 @@
 #include <glib/gi18n-lib.h>
 #include "tomoe-gucharmap.h"
 
+#ifdef GUCHARMAP_TYPE_CHAPTERS
+#  define GUCHARMAP_CHAPTERS_MODEL_COLUMN_LABEL CHAPTERS_LABEL_COL
+#endif
+
 enum {
     SELECTED_SIGNAL,
     LAST_SIGNAL
@@ -34,7 +38,11 @@ struct _TomoeGucharmapPrivate
 {
     GtkWidget         *chapters_type_combobox;
     GtkWidget         *chapters_combobox;
+#ifdef GUCHARMAP_TYPE_CHAPTERS
     GucharmapChapters *chapters;
+#else
+    GucharmapChaptersModel *chapters_model;
+#endif
     GucharmapCharmap  *charmap;
     gchar             *selected;
 };
@@ -50,7 +58,9 @@ static void on_chapters_type_combo_chang
 static void on_chapters_combo_changed      (GtkComboBox      *combobox,
                                             gpointer          data);
 static void on_gucharmap_activate          (GucharmapCharmap *charmap,
+#ifdef GUCHARMAP_TABLE
                                             gunichar          ch,
+#endif
                                             gpointer          data);
 static void on_gucharmap_button_release    (GtkWidget        *widget,
                                             GdkEventButton   *event,
@@ -90,6 +100,7 @@ tomoe_gucharmap_init (TomoeGucharmap *pa
 {
     TomoeGucharmapPrivate *priv = TOMOE_GUCHARMAP_GET_PRIVATE (page);
     GtkWidget *vbox, *hbox, *combobox, *widget;
+    GtkCellRenderer *cell;
 
     priv->selected = NULL;
 
@@ -114,20 +125,35 @@ tomoe_gucharmap_init (TomoeGucharmap *pa
     gtk_box_pack_start (GTK_BOX (hbox), combobox, FALSE, FALSE, 2);
     gtk_widget_show (combobox);
 
-    combobox = gtk_combo_box_new_text ();
+    combobox = gtk_combo_box_new ();
+    cell = gtk_cell_renderer_text_new ();
+    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), cell, TRUE);
+    gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell,
+                                    "text", GUCHARMAP_CHAPTERS_MODEL_COLUMN_LABEL,
+                                    NULL);
     priv->chapters_combobox = combobox;
     gtk_box_pack_start (GTK_BOX (hbox), combobox, FALSE, FALSE, 2);
     gtk_widget_show (combobox);
 
     /* gucharmap */
+#ifdef GUCHARMAP_TYPE_CHAPTERS
     priv->chapters  = GUCHARMAP_CHAPTERS (gucharmap_block_chapters_new ());
     priv->charmap = GUCHARMAP_CHARMAP (gucharmap_charmap_new (priv->chapters));
+#else
+    priv->chapters_model = gucharmap_block_chapters_model_new ();
+    priv->charmap = GUCHARMAP_CHARMAP (gucharmap_charmap_new ());
+    gucharmap_charmap_set_chapters_model (priv->charmap, priv->chapters_model);
+#endif
     widget = GTK_WIDGET (priv->charmap);
     gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 2);
     gtk_widget_show (widget);
 
     /* Hide chapters page by default. Usually use combo box instead. */
+#ifdef GUCHARMAP_TYPE_CHAPTERS
     gtk_widget_hide (GTK_WIDGET (priv->chapters));
+#else
+    gtk_widget_hide (gtk_paned_get_child1 (GTK_PANED (priv->charmap)));
+#endif
 
 #if 0
     /* CharDetails view will be here */
@@ -139,20 +165,21 @@ tomoe_gucharmap_init (TomoeGucharmap *pa
 #endif
 
     /* setup */
-    setup_chapters_combo_box (page);
     g_signal_connect (G_OBJECT (priv->chapters_type_combobox), "changed",
                       G_CALLBACK (on_chapters_type_combo_changed),
                       (gpointer) page);
     g_signal_connect (G_OBJECT (priv->chapters_combobox), "changed",
                       G_CALLBACK (on_chapters_combo_changed),
                       (gpointer) page);
-    g_signal_connect (G_OBJECT (priv->charmap->chartable), "activate",
+    g_signal_connect (G_OBJECT (gucharmap_charmap_get_chartable (priv->charmap)),
+                      "activate",
                       G_CALLBACK (on_gucharmap_activate),
                       (gpointer) page);
-    g_signal_connect (G_OBJECT (priv->charmap->chartable),
+    g_signal_connect (G_OBJECT (gucharmap_charmap_get_chartable (priv->charmap)),
                       "button-release-event",
                       G_CALLBACK (on_gucharmap_button_release),
                       (gpointer) page);
+    setup_chapters_combo_box (page);
 }
 
 static void
@@ -162,7 +189,11 @@ dispose (GObject *object)
 
     priv->chapters_type_combobox = NULL;
     priv->chapters_combobox      = NULL;
+#ifdef GUCHARMAP_TYPE_CHAPTERS
     priv->chapters               = NULL;
+#else
+    priv->chapters_model         = NULL;
+#endif
     priv->charmap                = NULL;
     if (priv->selected) {
         g_free (priv->selected);
@@ -188,7 +219,11 @@ const gchar *
 tomoe_gucharmap_get_selected_char (TomoeGucharmap *page)
 {
     TomoeGucharmapPrivate *priv;
+#ifdef GUCHARMAP_TABLE
     GucharmapTable *table;
+#else
+    GucharmapChartable *table;
+#endif
     gunichar c;
     gchar buf[7];
     gint bytes;
@@ -196,10 +231,18 @@ tomoe_gucharmap_get_selected_char (Tomoe
     g_return_val_if_fail (TOMOE_IS_GUCHARMAP (page), NULL);
 
     priv = TOMOE_GUCHARMAP_GET_PRIVATE (page);
+#ifdef GUCHARMAP_TABLE
     table = GUCHARMAP_TABLE (priv->charmap->chartable);
+#else
+    table = gucharmap_charmap_get_chartable (priv->charmap);
+#endif
 
+#ifdef GUCHARMAP_TABLE
     c = gucharmap_table_get_active_character (table);
-    bytes = g_unichar_to_utf8(c, buf);
+#else
+    c = gucharmap_chartable_get_active_character (table);
+#endif
+    bytes = g_unichar_to_utf8 (c, buf);
 
     if (bytes > 0 && bytes < 7) {
         buf[bytes] = '\0';
@@ -222,7 +265,13 @@ static void
 setup_chapters_combo_box (TomoeGucharmap *page)
 {
     TomoeGucharmapPrivate *priv = TOMOE_GUCHARMAP_GET_PRIVATE (page);
-    GtkTreeModel *model = priv->chapters->tree_model;
+    GtkTreeModel *model;
+
+#ifdef GUCHARMAP_TYPE_CHAPTERS
+    model = priv->chapters->tree_model;
+#else
+    model = GTK_TREE_MODEL (priv->chapters_model);
+#endif
 
     gtk_combo_box_set_model (GTK_COMBO_BOX (priv->chapters_combobox), model);
     gtk_combo_box_set_active (GTK_COMBO_BOX (priv->chapters_combobox), 0);
@@ -235,12 +284,25 @@ on_chapters_type_combo_changed (GtkCombo
     TomoeGucharmapPrivate *priv = TOMOE_GUCHARMAP_GET_PRIVATE (page);
     gint idx = gtk_combo_box_get_active (combobox);
 
-    if (idx == 1)
+    if (idx == 1) {
+#ifdef GUCHARMAP_TYPE_CHAPTERS
         priv->chapters = GUCHARMAP_CHAPTERS (gucharmap_script_chapters_new ());
-    else
+#else
+        priv->chapters_model = gucharmap_script_chapters_model_new ();
+#endif
+    } else {
+#ifdef GUCHARMAP_TYPE_CHAPTERS
         priv->chapters = GUCHARMAP_CHAPTERS (gucharmap_block_chapters_new ());
+#else
+        priv->chapters_model = gucharmap_block_chapters_model_new ();
+#endif
+    }
+#ifdef GUCHARMAP_TYPE_CHAPTERS
     gucharmap_charmap_set_chapters (priv->charmap, priv->chapters);
     gtk_widget_hide (GTK_WIDGET (priv->chapters));
+#else
+    gucharmap_charmap_set_chapters_model (priv->charmap, priv->chapters_model);
+#endif
     setup_chapters_combo_box (page);
 }
 
@@ -249,6 +311,7 @@ on_chapters_combo_changed (GtkComboBox *
 {
     TomoeGucharmap *page = data;
     TomoeGucharmapPrivate *priv = TOMOE_GUCHARMAP_GET_PRIVATE (page);
+    GtkTreeView *tree_view;
     GtkTreePath *path;
     gchar buf[8];
     gint idx;
@@ -256,13 +319,21 @@ on_chapters_combo_changed (GtkComboBox *
     idx = gtk_combo_box_get_active (combobox);
     g_snprintf (buf, 8 , "%d", idx);
     path = gtk_tree_path_new_from_string (buf);
-    gtk_tree_view_set_cursor (GTK_TREE_VIEW (priv->chapters->tree_view),
-                              path, NULL, FALSE);
+#ifdef GUCHARMAP_TYPE_CHAPTERS
+    tree_view = GTK_TREE_VIEW (priv->chapters->tree_view);
+#else
+    tree_view =
+        GTK_TREE_VIEW (gucharmap_charmap_get_chapters_view (priv->charmap));
+#endif
+    gtk_tree_view_set_cursor (tree_view, path, NULL, FALSE);
     gtk_tree_path_free (path);
 }
 
 static void
-on_gucharmap_activate (GucharmapCharmap *charmap, gunichar ch,
+on_gucharmap_activate (GucharmapCharmap *charmap,
+#ifdef GUCHARMAP_TABLE
+                       gunichar ch,
+#endif
                        gpointer data)
 {
     TomoeGucharmap *gucharmap = TOMOE_GUCHARMAP (data);
