diff -Naur tomoe-gtk-0.6.0.orig/Makefile.am tomoe-gtk-0.6.0/Makefile.am
--- tomoe-gtk-0.6.0.orig/Makefile.am	2007-06-07 14:36:06.000000000 +0900
+++ tomoe-gtk-0.6.0/Makefile.am	2008-12-21 01:24:06.000000000 +0900
@@ -1,3 +1,4 @@
+ACLOCAL_AMFLAGS = -I macros
 SUBDIRS=src data po test doc bindings
 
 EXTRA_DIST = autogen.sh tomoe-gtk.pc
diff -Naur tomoe-gtk-0.6.0.orig/configure.ac tomoe-gtk-0.6.0/configure.ac
--- tomoe-gtk-0.6.0.orig/configure.ac	2007-06-12 17:17:23.000000000 +0900
+++ tomoe-gtk-0.6.0/configure.ac	2008-12-21 01:08:16.000000000 +0900
@@ -94,6 +94,9 @@
 AC_SUBST(TOMOE_CFLAGS)
 AC_SUBST(TOMOE_LIBS)
 
+TOMOE_GTK_REQUIRED_LIBS="tomoe >= 0.4.0 gtk+-2.0 >= 2.4.0"
+AC_SUBST(TOMOE_GTK_REQUIRED_LIBS)
+
 # Checks for gucharmap
 AC_ARG_WITH(gucharmap,
             AS_HELP_STRING([--with-gucharmap],
@@ -102,14 +105,15 @@
             [use_gucharmap=yes])
 if test x"$use_gucharmap" = "xyes"; then
   # Checks for gucharmap
-  PKG_CHECK_MODULES(GUCHARMAP, [gucharmap >= 1.4.0])
-  TOMOE_GTK_REQUIRED_LIBS="tomoe >= 0.4.0 gtk+-2.0 >= 2.4.0 gucharmap >= 1.4.0"
-else
-  TOMOE_GTK_REQUIRED_LIBS="tomoe >= 0.4.0 gtk+-2.0 >= 2.4.0"
+  PKG_CHECK_EXISTS(gucharmap-2,
+                   [PKG_CHECK_MODULES(GUCHARMAP, [gucharmap-2],
+		                      [gucharmap_lib="gucharmap-2"])],
+                   [PKG_CHECK_MODULES(GUCHARMAP, [gucharmap >= 1.4.0],
+                                      [gucharmap_lib="gucharmap >= 1.4.0"])])
+  TOMOE_GTK_REQUIRED_LIBS="$TOMOE_GTK_REQUIRED_LIBS $gucharmap_lib"
 fi
 AC_SUBST(GUCHARMAP_CFLAGS)
 AC_SUBST(GUCHARMAP_LIBS)
-AC_SUBST(TOMOE_GTK_REQUIRED_LIBS)
 AM_CONDITIONAL([USE_GUCHARMAP], [test x"$use_gucharmap" = "xyes"])
 
 # Check for pygtk
diff -Naur tomoe-gtk-0.6.0.orig/src/tomoe-gucharmap.c tomoe-gtk-0.6.0/src/tomoe-gucharmap.c
--- tomoe-gtk-0.6.0.orig/src/tomoe-gucharmap.c	2007-04-27 14:41:40.000000000 +0900
+++ tomoe-gtk-0.6.0/src/tomoe-gucharmap.c	2008-12-21 01:08:16.000000000 +0900
@@ -34,7 +34,11 @@
 {
     GtkWidget         *chapters_type_combobox;
     GtkWidget         *chapters_combobox;
+#ifdef GUCHARMAP_TYPE_CHAPTERS
     GucharmapChapters *chapters;
+#else
+    GucharmapChaptersModel *chapters_model;
+#endif
     GucharmapCharmap  *charmap;
     gchar             *selected;
 };
@@ -120,14 +124,24 @@
     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
+    gucharmap_charmap_set_chapters_visible (priv->charmap, FALSE);
+#endif
 
 #if 0
     /* CharDetails view will be here */
@@ -146,10 +160,11 @@
     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);
@@ -162,7 +177,11 @@
 
     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 +207,11 @@
 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,9 +219,17 @@
     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);
+#else
+    c = gucharmap_chartable_get_active_character (table);
+#endif
     bytes = g_unichar_to_utf8(c, buf);
 
     if (bytes > 0 && bytes < 7) {
@@ -222,7 +253,13 @@
 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 +272,26 @@
     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);
+    gucharmap_charmap_set_chapters_visible (priv->charmap, FALSE);
+#endif
     setup_chapters_combo_box (page);
 }
 
@@ -249,6 +300,7 @@
 {
     TomoeGucharmap *page = data;
     TomoeGucharmapPrivate *priv = TOMOE_GUCHARMAP_GET_PRIVATE (page);
+    GtkTreeView *tree_view;
     GtkTreePath *path;
     gchar buf[8];
     gint idx;
@@ -256,8 +308,13 @@
     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);
 }