[Tomoe-cvs 1540] CVS update: libtomoe-gtk/src

Back to archive index

Hiroyuki Ikezoe ikezo****@users*****
2006年 12月 1日 (金) 14:48:07 JST


Index: libtomoe-gtk/src/Makefile.am
diff -u libtomoe-gtk/src/Makefile.am:1.19 libtomoe-gtk/src/Makefile.am:1.20
--- libtomoe-gtk/src/Makefile.am:1.19	Thu Nov 30 15:42:50 2006
+++ libtomoe-gtk/src/Makefile.am	Fri Dec  1 14:48:06 2006
@@ -15,9 +15,9 @@
 	tomoe-edit-meta.c tomoe-edit-meta.h				\
 	tomoe-edit-strokes.c tomoe-edit-strokes.h			\
 	tomoe-gucharmap.c tomoe-gucharmap.h				\
+	tomoe-handwriting.c tomoe-handwriting.h				\
 	tomoe-reading-search.c tomoe-reading-search.h			\
 	tomoe-scrollable.c tomoe-scrollable.h				\
-	tomoe-stroke-search.c tomoe-stroke-search.h			\
 	tomoe-window.c tomoe-window.h
 
 libtomoe_gtk_la_LDFLAGS = 						\
@@ -34,7 +34,7 @@
 	tomoe-edit-strokes.h 						\
 	tomoe-gtk.h 							\
 	tomoe-gucharmap.h						\
+	tomoe-handwriting.h 						\
 	tomoe-reading-search.h	 					\
 	tomoe-scrollable.h						\
-	tomoe-stroke-search.h 						\
 	tomoe-window.h
Index: libtomoe-gtk/src/tomoe-gtk.h
diff -u libtomoe-gtk/src/tomoe-gtk.h:1.6 libtomoe-gtk/src/tomoe-gtk.h:1.7
--- libtomoe-gtk/src/tomoe-gtk.h:1.6	Thu Nov 16 14:23:23 2006
+++ libtomoe-gtk/src/tomoe-gtk.h	Fri Dec  1 14:48:06 2006
@@ -24,6 +24,6 @@
 #include <tomoe-canvas.h>
 #include <tomoe-char-table.h>
 #include <tomoe-window.h>
-#include <tomoe-stroke-search.h>
+#include <tomoe-handwriting.h>
 
 #endif /* __TOMOE_GTK_H_INCLUDED__ */
Index: libtomoe-gtk/src/tomoe-handwriting.c
diff -u /dev/null libtomoe-gtk/src/tomoe-handwriting.c:1.1
--- /dev/null	Fri Dec  1 14:48:07 2006
+++ libtomoe-gtk/src/tomoe-handwriting.c	Fri Dec  1 14:48:06 2006
@@ -0,0 +1,387 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ *  Copyright (C) 2005 Takuro Ashie
+ *  Copyright (C) 2006 Juernjakob Harder
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+  #include <config.h>
+#endif
+
+#include <glib/gi18n.h>
+
+#include "tomoe-handwriting.h"
+#include "tomoe-canvas.h"
+#include "tomoe-char-table.h"
+
+enum {
+    SELECTED_SIGNAL,
+    LAST_SIGNAL
+};
+
+typedef struct _TomoeHandwritingPrivate	TomoeHandwritingPrivate;
+struct _TomoeHandwritingPrivate
+{
+    GtkWidget *canvas;
+    GtkWidget *button_area;
+    GtkWidget *find_button;
+    GtkWidget *go_back_button;
+    GtkWidget *clear_button;
+    GtkWidget *normalize_button;
+    GtkWidget *candidates_view;
+};
+
+#define TOMOE_HANDWRITING_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TOMOE_TYPE_HANDWRITING, TomoeHandwritingPrivate))
+
+G_DEFINE_TYPE (TomoeHandwriting, tomoe_handwriting, GTK_TYPE_TABLE)
+
+static void tomoe_handwriting_set_sensitive    (TomoeHandwriting         *handwriting);
+
+/* callbacks for child widgets */
+static void on_canvas_stroke_added        (TomoeCanvas         *canvas,
+                                           gpointer             user_data);
+static void on_find_button_clicked        (GtkButton           *button,
+                                           gpointer             user_data);
+static void on_go_back_button_clicked     (GtkButton           *button,
+                                           gpointer             user_data);
+static void on_clear_button_clicked       (GtkButton           *button,
+                                           gpointer             user_data);
+static void on_normalize_button_clicked   (GtkButton           *button,
+                                           gpointer             user_data);
+#ifdef ENABLE_DUMPSTROKE
+static void on_dump_button_clicked        (GtkButton           *button,
+                                           gpointer             user_data);
+#endif
+static void on_candidate_selected         (TomoeCharTable      *table,
+                                           gpointer             user_data);
+
+static guint handwriting_signals[LAST_SIGNAL] = { 0 };
+
+static void
+tomoe_handwriting_class_init (TomoeHandwritingClass *klass)
+{
+    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+    handwriting_signals[SELECTED_SIGNAL] =
+      g_signal_new ("selected",
+  		  G_TYPE_FROM_CLASS (klass),
+  		  G_SIGNAL_RUN_LAST,
+  		  G_STRUCT_OFFSET (TomoeHandwritingClass, selected),
+  		  NULL, NULL,
+  		  g_cclosure_marshal_VOID__VOID,
+  		  G_TYPE_NONE, 0);
+
+    klass->selected        = NULL;
+
+    g_type_class_add_private (gobject_class, sizeof (TomoeHandwritingPrivate));
+}
+
+static void
+tomoe_handwriting_init (TomoeHandwriting *handwriting)
+{
+    GtkWidget *main_vbox, *hbox, *vbox, *frame, *alignment;
+    GtkWidget *canvas, *button, *table;
+    TomoeHandwritingPrivate *priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+
+    gtk_table_resize (GTK_TABLE (handwriting), 1, 1);
+    gtk_table_set_homogeneous (GTK_TABLE (handwriting), TRUE);
+
+    main_vbox = gtk_vbox_new (FALSE, 0);
+    gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 8);
+    gtk_table_attach_defaults (GTK_TABLE (handwriting), main_vbox, 
+                               0, 1, 0, 1);
+    gtk_widget_show (main_vbox);
+
+    hbox = gtk_hbox_new (FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (main_vbox), hbox,
+                        TRUE, TRUE, 0);
+    gtk_widget_show (hbox);
+
+    /* canvas */
+    frame = gtk_frame_new (NULL);
+    gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
+    gtk_widget_show (frame);
+
+    canvas = tomoe_canvas_new ();
+    priv->canvas = canvas;
+    gtk_widget_set_size_request (canvas, 300, 300);
+    gtk_container_add (GTK_CONTAINER (frame), canvas);
+    g_signal_connect (G_OBJECT (canvas), "stroke-added",
+                      G_CALLBACK (on_canvas_stroke_added),
+                      (gpointer) handwriting);
+    gtk_widget_show (canvas);
+
+    /* button area */
+    alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
+    gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 8, 0);
+    gtk_box_pack_start (GTK_BOX (hbox), alignment, FALSE, FALSE, 0);
+    gtk_widget_show (alignment);
+
+    vbox = gtk_vbox_new (FALSE, 0);
+    priv->button_area = vbox;
+    gtk_container_add (GTK_CONTAINER (alignment), vbox);
+    gtk_widget_show (vbox);
+
+    button = gtk_button_new_from_stock (GTK_STOCK_FIND);
+    priv->find_button = button;
+    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (on_find_button_clicked),
+                      (gpointer) handwriting);
+    gtk_widget_show (button);
+
+    button = gtk_button_new_from_stock (GTK_STOCK_UNDO);
+    priv->go_back_button = button;
+    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (on_go_back_button_clicked),
+                      (gpointer) handwriting);
+    gtk_widget_show (button);
+
+    button = gtk_button_new_from_stock (GTK_STOCK_CLEAR);
+    priv->clear_button = button;
+    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (on_clear_button_clicked),
+                      (gpointer) handwriting);
+    gtk_widget_show (button);
+
+    button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_FIT);
+    priv->normalize_button = button;
+    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (on_normalize_button_clicked),
+                      (gpointer) handwriting);
+    gtk_widget_show (button);
+#ifdef ENABLE_DUMPSTROKE
+    button = gtk_button_new_from_stock (GTK_STOCK_SAVE);
+    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (on_dump_button_clicked),
+                      (gpointer) handwriting);
+    gtk_widget_show (button);
+#endif
+
+    /* candidates view */
+    frame = gtk_frame_new (NULL);
+    gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 4);
+    gtk_widget_show (frame);
+
+    table = tomoe_char_table_new ();
+    priv->candidates_view = table;
+    tomoe_char_table_set_canvas (TOMOE_CHAR_TABLE (table),
+                                 TOMOE_CANVAS (canvas));
+    g_signal_connect (G_OBJECT (table), "selected",
+                      G_CALLBACK (on_candidate_selected),
+                      (gpointer) handwriting);
+    gtk_container_add (GTK_CONTAINER (frame), table);
+    gtk_widget_show (table);
+
+    tomoe_handwriting_set_sensitive (handwriting);
+}
+
+static void
+tomoe_handwriting_set_sensitive (TomoeHandwriting *handwriting)
+{
+    TomoeHandwritingPrivate *priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+    gboolean editable = tomoe_canvas_has_stroke (TOMOE_CANVAS (priv->canvas));
+
+    gtk_widget_set_sensitive (priv->find_button,      editable);
+    gtk_widget_set_sensitive (priv->go_back_button,   editable);
+    gtk_widget_set_sensitive (priv->clear_button,     editable);
+    gtk_widget_set_sensitive (priv->normalize_button, editable);
+}
+
+GtkWidget *
+tomoe_handwriting_new (void)
+{
+    return GTK_WIDGET(g_object_new (TOMOE_TYPE_HANDWRITING,
+                                    NULL));
+}
+
+GtkWidget *
+tomoe_handwriting_get_canvas (TomoeHandwriting *handwriting)
+{
+    g_return_val_if_fail (TOMOE_IS_HANDWRITING (handwriting), NULL);
+
+    return TOMOE_HANDWRITING_GET_PRIVATE (handwriting)->canvas;
+}
+
+static void
+on_canvas_stroke_added (TomoeCanvas *canvas, gpointer user_data)
+{
+    TomoeHandwriting *handwriting = TOMOE_HANDWRITING (user_data);
+
+    tomoe_handwriting_set_sensitive (handwriting);
+}
+
+static void
+on_find_button_clicked (GtkButton *button, gpointer user_data)
+{
+    TomoeHandwriting *handwriting = TOMOE_HANDWRITING (user_data);
+    TomoeHandwritingPrivate *priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+
+    g_return_if_fail (TOMOE_IS_HANDWRITING (handwriting));
+    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
+
+    tomoe_canvas_find (TOMOE_CANVAS (priv->canvas));
+}
+
+static void
+on_go_back_button_clicked (GtkButton *button, gpointer user_data)
+{
+    TomoeHandwriting *handwriting = TOMOE_HANDWRITING (user_data);
+    TomoeHandwritingPrivate *priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+
+    g_return_if_fail (TOMOE_IS_HANDWRITING (handwriting));
+    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
+
+    tomoe_canvas_revert (TOMOE_CANVAS (priv->canvas));
+    tomoe_canvas_find (TOMOE_CANVAS (priv->canvas));
+    tomoe_handwriting_set_sensitive (handwriting);
+}
+
+static void
+on_clear_button_clicked (GtkButton *button, gpointer user_data)
+{
+    TomoeHandwriting *handwriting = TOMOE_HANDWRITING (user_data);
+    TomoeHandwritingPrivate *priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+
+    g_return_if_fail (TOMOE_IS_HANDWRITING (handwriting));
+    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
+
+    tomoe_canvas_clear (TOMOE_CANVAS (priv->canvas));
+    tomoe_handwriting_set_sensitive (handwriting);
+}
+
+static void
+on_normalize_button_clicked (GtkButton *button, gpointer user_data)
+{
+    TomoeHandwriting *handwriting = TOMOE_HANDWRITING (user_data);
+    TomoeHandwritingPrivate *priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+
+    g_return_if_fail (TOMOE_IS_HANDWRITING (handwriting));
+    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
+
+    tomoe_canvas_normalize (TOMOE_CANVAS (priv->canvas));
+    tomoe_handwriting_set_sensitive (handwriting);
+}
+
+static void
+on_candidate_selected (TomoeCharTable *table,
+                       gpointer user_data)
+{
+    TomoeHandwriting *handwriting = TOMOE_HANDWRITING (user_data);
+
+    g_return_if_fail (TOMOE_IS_HANDWRITING (handwriting));
+
+    g_signal_emit (G_OBJECT (handwriting),
+                   handwriting_signals[SELECTED_SIGNAL], 0);
+    tomoe_handwriting_set_sensitive (handwriting);
+}
+
+GtkWidget *
+tomoe_handwriting_get_button_area (TomoeHandwriting *handwriting)
+{
+    TomoeHandwritingPrivate *priv;
+
+    g_return_val_if_fail (TOMOE_IS_HANDWRITING (handwriting), NULL);
+    priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+
+    return priv->button_area;
+}
+
+TomoeChar *
+tomoe_handwriting_get_selected_candidate (TomoeHandwriting *handwriting)
+{
+    TomoeHandwritingPrivate *priv;
+
+    g_return_val_if_fail (TOMOE_IS_HANDWRITING (handwriting), NULL);
+    priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+
+    return tomoe_char_table_get_selected (TOMOE_CHAR_TABLE (priv->candidates_view));
+}
+
+#ifdef ENABLE_DUMPSTROKE
+static void
+on_dump_button_clicked (GtkButton *button, gpointer user_data)
+{
+    TomoeHandwriting *handwriting = TOMOE_HANDWRITING (user_data);
+    TomoeHandwritingPrivate *priv = TOMOE_HANDWRITING_GET_PRIVATE (handwriting);
+    TomoeWriting *writing;
+    GtkWidget *dialog;
+    GList *strokes, *list;
+    GList *candidates;
+    GString *dump_string;
+    gchar *filename;
+
+    g_return_if_fail (TOMOE_IS_HANDWRITING (handwriting));
+    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
+
+    dialog = gtk_file_chooser_dialog_new (_("Select the file name for dump"),
+                                          NULL,
+                                          GTK_FILE_CHOOSER_ACTION_SAVE,
+                                          GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+                                          NULL);
+
+    if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT) {
+        gtk_widget_destroy (dialog);
+        return;
+    }
+    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+    gtk_widget_destroy (dialog);
+
+    dump_string = g_string_new (NULL);
+    writing = tomoe_canvas_get_writing (TOMOE_CANVAS (priv->canvas));
+
+    /* set candidate data */
+    candidates = (GList *) tomoe_canvas_get_candidates (TOMOE_CANVAS (priv->canvas));
+    for (list = candidates; list; list = g_list_next (list)) {
+        TomoeCandidate *cand = TOMOE_CANDIDATE (list->data);
+        TomoeChar *c = tomoe_candidate_get_char (cand);
+        if (list != candidates) 
+            g_string_append_c (dump_string, ' ');
+        g_string_append (dump_string, tomoe_char_get_utf8 (c));
+    }
+    g_string_append_c (dump_string, '\n');
+
+    /* set stroke data */
+    strokes = (GList *) tomoe_writing_get_strokes (writing);
+    for (list = strokes; list; list = g_list_next (list)) {
+        GList *points = (GList *) list->data;
+        GList *point;
+
+        for (point = points; point; point = g_list_next (point)) {
+            TomoePoint *p = (TomoePoint *) point->data;
+            if (point != points)
+                g_string_append (dump_string, ", ");
+            g_string_append_printf (dump_string, "%d %d", p->x, p->y);
+        }
+        g_string_append_c (dump_string, '\n');
+    }
+
+    g_file_set_contents (filename, dump_string->str, dump_string->len, NULL);
+
+    g_object_unref (writing);
+    g_string_free (dump_string, TRUE);
+    g_free (filename);
+}
+#endif
+
+/*
+ * vi:ts=4:nowrap:ai:expandtab
+ */
Index: libtomoe-gtk/src/tomoe-handwriting.h
diff -u /dev/null libtomoe-gtk/src/tomoe-handwriting.h:1.1
--- /dev/null	Fri Dec  1 14:48:07 2006
+++ libtomoe-gtk/src/tomoe-handwriting.h	Fri Dec  1 14:48:06 2006
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ *  Copyright (C) 2005 Takuro Ashie
+ *  Copyright (C) 2006 Juernjakob Harder
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */ 
+
+#ifndef __TOMOE_HANDWRITING_H__
+#define __TOMOE_HANDWRITING_H__
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtktable.h>
+#include <tomoe-char.h>
+
+G_BEGIN_DECLS
+
+#define TOMOE_TYPE_HANDWRITING            (tomoe_handwriting_get_type ())
+#define TOMOE_HANDWRITING(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), TOMOE_TYPE_HANDWRITING, TomoeHandwriting))
+#define TOMOE_HANDWRITING_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), TOMOE_TYPE_HANDWRITING, TomoeHandwritingClass))
+#define TOMOE_IS_HANDWRITING(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TOMOE_TYPE_HANDWRITING))
+#define TOMOE_IS_HANDWRITING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TOMOE_TYPE_HANDWRITING))
+#define TOMOE_HANDWRITING_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), TOMOE_TYPE_HANDWRITING, TomoeHandwritingClass))
+
+
+typedef struct _TomoeHandwritingClass TomoeHandwritingClass;
+typedef struct _TomoeHandwriting      TomoeHandwriting;
+
+struct _TomoeHandwriting
+{
+    GtkTable parent_instance;
+};
+
+struct _TomoeHandwritingClass
+{
+    GtkTableClass parent_class;
+    /* -- signals -- */
+    void (*selected) (TomoeHandwriting *search);
+};
+
+
+GType      tomoe_handwriting_get_type    (void) G_GNUC_CONST;
+GtkWidget *tomoe_handwriting_new         (void);
+GtkWidget *tomoe_handwriting_get_canvas  (TomoeHandwriting *handwriting);
+TomoeChar *tomoe_handwriting_get_selected_candidate
+                                           (TomoeHandwriting *handwriting);
+GtkWidget *tomoe_handwriting_get_button_area 
+                                           (TomoeHandwriting *handwriting);
+
+G_END_DECLS
+
+#endif /* __TOMOE_HANDWRITING_H__ */
Index: libtomoe-gtk/src/tomoe-stroke-search.c
diff -u libtomoe-gtk/src/tomoe-stroke-search.c:1.20 libtomoe-gtk/src/tomoe-stroke-search.c:removed
--- libtomoe-gtk/src/tomoe-stroke-search.c:1.20	Fri Dec  1 14:40:47 2006
+++ libtomoe-gtk/src/tomoe-stroke-search.c	Fri Dec  1 14:48:07 2006
@@ -1,387 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- *  Copyright (C) 2005 Takuro Ashie
- *  Copyright (C) 2006 Juernjakob Harder
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifdef HAVE_CONFIG_H
-  #include <config.h>
-#endif
-
-#include <glib/gi18n.h>
-
-#include "tomoe-stroke-search.h"
-#include "tomoe-canvas.h"
-#include "tomoe-char-table.h"
-
-enum {
-    SELECTED_SIGNAL,
-    LAST_SIGNAL
-};
-
-typedef struct _TomoeStrokeSearchPrivate	TomoeStrokeSearchPrivate;
-struct _TomoeStrokeSearchPrivate
-{
-    GtkWidget *canvas;
-    GtkWidget *button_area;
-    GtkWidget *find_button;
-    GtkWidget *go_back_button;
-    GtkWidget *clear_button;
-    GtkWidget *normalize_button;
-    GtkWidget *candidates_view;
-};
-
-#define TOMOE_STROKE_SEARCH_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TOMOE_TYPE_STROKE_SEARCH, TomoeStrokeSearchPrivate))
-
-G_DEFINE_TYPE (TomoeStrokeSearch, tomoe_stroke_search, GTK_TYPE_TABLE)
-
-static void tomoe_stroke_search_set_sensitive    (TomoeStrokeSearch         *stroke_search);
-
-/* callbacks for child widgets */
-static void on_canvas_stroke_added        (TomoeCanvas         *canvas,
-                                           gpointer             user_data);
-static void on_find_button_clicked        (GtkButton           *button,
-                                           gpointer             user_data);
-static void on_go_back_button_clicked     (GtkButton           *button,
-                                           gpointer             user_data);
-static void on_clear_button_clicked       (GtkButton           *button,
-                                           gpointer             user_data);
-static void on_normalize_button_clicked   (GtkButton           *button,
-                                           gpointer             user_data);
-#ifdef ENABLE_DUMPSTROKE
-static void on_dump_button_clicked        (GtkButton           *button,
-                                           gpointer             user_data);
-#endif
-static void on_candidate_selected         (TomoeCharTable      *table,
-                                           gpointer             user_data);
-
-static guint stroke_search_signals[LAST_SIGNAL] = { 0 };
-
-static void
-tomoe_stroke_search_class_init (TomoeStrokeSearchClass *klass)
-{
-    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
-    stroke_search_signals[SELECTED_SIGNAL] =
-      g_signal_new ("selected",
-  		  G_TYPE_FROM_CLASS (klass),
-  		  G_SIGNAL_RUN_LAST,
-  		  G_STRUCT_OFFSET (TomoeStrokeSearchClass, selected),
-  		  NULL, NULL,
-  		  g_cclosure_marshal_VOID__VOID,
-  		  G_TYPE_NONE, 0);
-
-    klass->selected        = NULL;
-
-    g_type_class_add_private (gobject_class, sizeof (TomoeStrokeSearchPrivate));
-}
-
-static void
-tomoe_stroke_search_init (TomoeStrokeSearch *stroke_search)
-{
-    GtkWidget *main_vbox, *hbox, *vbox, *frame, *alignment;
-    GtkWidget *canvas, *button, *table;
-    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-
-    gtk_table_resize (GTK_TABLE (stroke_search), 1, 1);
-    gtk_table_set_homogeneous (GTK_TABLE (stroke_search), TRUE);
-
-    main_vbox = gtk_vbox_new (FALSE, 0);
-    gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 8);
-    gtk_table_attach_defaults (GTK_TABLE (stroke_search), main_vbox, 
-                               0, 1, 0, 1);
-    gtk_widget_show (main_vbox);
-
-    hbox = gtk_hbox_new (FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (main_vbox), hbox,
-                        TRUE, TRUE, 0);
-    gtk_widget_show (hbox);
-
-    /* canvas */
-    frame = gtk_frame_new (NULL);
-    gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
-    gtk_widget_show (frame);
-
-    canvas = tomoe_canvas_new ();
-    priv->canvas = canvas;
-    gtk_widget_set_size_request (canvas, 300, 300);
-    gtk_container_add (GTK_CONTAINER (frame), canvas);
-    g_signal_connect (G_OBJECT (canvas), "stroke-added",
-                      G_CALLBACK (on_canvas_stroke_added),
-                      (gpointer) stroke_search);
-    gtk_widget_show (canvas);
-
-    /* button area */
-    alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
-    gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 8, 0);
-    gtk_box_pack_start (GTK_BOX (hbox), alignment, FALSE, FALSE, 0);
-    gtk_widget_show (alignment);
-
-    vbox = gtk_vbox_new (FALSE, 0);
-    priv->button_area = vbox;
-    gtk_container_add (GTK_CONTAINER (alignment), vbox);
-    gtk_widget_show (vbox);
-
-    button = gtk_button_new_from_stock (GTK_STOCK_FIND);
-    priv->find_button = button;
-    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (on_find_button_clicked),
-                      (gpointer) stroke_search);
-    gtk_widget_show (button);
-
-    button = gtk_button_new_from_stock (GTK_STOCK_UNDO);
-    priv->go_back_button = button;
-    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (on_go_back_button_clicked),
-                      (gpointer) stroke_search);
-    gtk_widget_show (button);
-
-    button = gtk_button_new_from_stock (GTK_STOCK_CLEAR);
-    priv->clear_button = button;
-    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (on_clear_button_clicked),
-                      (gpointer) stroke_search);
-    gtk_widget_show (button);
-
-    button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_FIT);
-    priv->normalize_button = button;
-    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (on_normalize_button_clicked),
-                      (gpointer) stroke_search);
-    gtk_widget_show (button);
-#ifdef ENABLE_DUMPSTROKE
-    button = gtk_button_new_from_stock (GTK_STOCK_SAVE);
-    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (on_dump_button_clicked),
-                      (gpointer) stroke_search);
-    gtk_widget_show (button);
-#endif
-
-    /* candidates view */
-    frame = gtk_frame_new (NULL);
-    gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 4);
-    gtk_widget_show (frame);
-
-    table = tomoe_char_table_new ();
-    priv->candidates_view = table;
-    tomoe_char_table_set_canvas (TOMOE_CHAR_TABLE (table),
-                                 TOMOE_CANVAS (canvas));
-    g_signal_connect (G_OBJECT (table), "selected",
-                      G_CALLBACK (on_candidate_selected),
-                      (gpointer) stroke_search);
-    gtk_container_add (GTK_CONTAINER (frame), table);
-    gtk_widget_show (table);
-
-    tomoe_stroke_search_set_sensitive (stroke_search);
-}
-
-static void
-tomoe_stroke_search_set_sensitive (TomoeStrokeSearch *stroke_search)
-{
-    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-    gboolean editable = tomoe_canvas_has_stroke (TOMOE_CANVAS (priv->canvas));
-
-    gtk_widget_set_sensitive (priv->find_button,      editable);
-    gtk_widget_set_sensitive (priv->go_back_button,   editable);
-    gtk_widget_set_sensitive (priv->clear_button,     editable);
-    gtk_widget_set_sensitive (priv->normalize_button, editable);
-}
-
-GtkWidget *
-tomoe_stroke_search_new (void)
-{
-    return GTK_WIDGET(g_object_new (TOMOE_TYPE_STROKE_SEARCH,
-                                    NULL));
-}
-
-GtkWidget *
-tomoe_stroke_search_get_canvas (TomoeStrokeSearch *stroke_search)
-{
-    g_return_val_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search), NULL);
-
-    return TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search)->canvas;
-}
-
-static void
-on_canvas_stroke_added (TomoeCanvas *canvas, gpointer user_data)
-{
-    TomoeStrokeSearch *stroke_search = TOMOE_STROKE_SEARCH (user_data);
-
-    tomoe_stroke_search_set_sensitive (stroke_search);
-}
-
-static void
-on_find_button_clicked (GtkButton *button, gpointer user_data)
-{
-    TomoeStrokeSearch *stroke_search = TOMOE_STROKE_SEARCH (user_data);
-    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-
-    g_return_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search));
-    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
-
-    tomoe_canvas_find (TOMOE_CANVAS (priv->canvas));
-}
-
-static void
-on_go_back_button_clicked (GtkButton *button, gpointer user_data)
-{
-    TomoeStrokeSearch *stroke_search = TOMOE_STROKE_SEARCH (user_data);
-    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-
-    g_return_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search));
-    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
-
-    tomoe_canvas_revert (TOMOE_CANVAS (priv->canvas));
-    tomoe_canvas_find (TOMOE_CANVAS (priv->canvas));
-    tomoe_stroke_search_set_sensitive (stroke_search);
-}
-
-static void
-on_clear_button_clicked (GtkButton *button, gpointer user_data)
-{
-    TomoeStrokeSearch *stroke_search = TOMOE_STROKE_SEARCH (user_data);
-    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-
-    g_return_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search));
-    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
-
-    tomoe_canvas_clear (TOMOE_CANVAS (priv->canvas));
-    tomoe_stroke_search_set_sensitive (stroke_search);
-}
-
-static void
-on_normalize_button_clicked (GtkButton *button, gpointer user_data)
-{
-    TomoeStrokeSearch *stroke_search = TOMOE_STROKE_SEARCH (user_data);
-    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-
-    g_return_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search));
-    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
-
-    tomoe_canvas_normalize (TOMOE_CANVAS (priv->canvas));
-    tomoe_stroke_search_set_sensitive (stroke_search);
-}
-
-static void
-on_candidate_selected (TomoeCharTable *table,
-                       gpointer user_data)
-{
-    TomoeStrokeSearch *stroke_search = TOMOE_STROKE_SEARCH (user_data);
-
-    g_return_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search));
-
-    g_signal_emit (G_OBJECT (stroke_search),
-                   stroke_search_signals[SELECTED_SIGNAL], 0);
-    tomoe_stroke_search_set_sensitive (stroke_search);
-}
-
-GtkWidget *
-tomoe_stroke_search_get_button_area (TomoeStrokeSearch *stroke_search)
-{
-    TomoeStrokeSearchPrivate *priv;
-
-    g_return_val_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search), NULL);
-    priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-
-    return priv->button_area;
-}
-
-TomoeChar *
-tomoe_stroke_search_get_selected_candidate (TomoeStrokeSearch *stroke_search)
-{
-    TomoeStrokeSearchPrivate *priv;
-
-    g_return_val_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search), NULL);
-    priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-
-    return tomoe_char_table_get_selected (TOMOE_CHAR_TABLE (priv->candidates_view));
-}
-
-#ifdef ENABLE_DUMPSTROKE
-static void
-on_dump_button_clicked (GtkButton *button, gpointer user_data)
-{
-    TomoeStrokeSearch *stroke_search = TOMOE_STROKE_SEARCH (user_data);
-    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (stroke_search);
-    TomoeWriting *writing;
-    GtkWidget *dialog;
-    GList *strokes, *list;
-    GList *candidates;
-    GString *dump_string;
-    gchar *filename;
-
-    g_return_if_fail (TOMOE_IS_STROKE_SEARCH (stroke_search));
-    g_return_if_fail (TOMOE_IS_CANVAS (priv->canvas));
-
-    dialog = gtk_file_chooser_dialog_new (_("Select the file name for dump"),
-                                          NULL,
-                                          GTK_FILE_CHOOSER_ACTION_SAVE,
-                                          GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
-                                          NULL);
-
-    if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT) {
-        gtk_widget_destroy (dialog);
-        return;
-    }
-    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-    gtk_widget_destroy (dialog);
-
-    dump_string = g_string_new (NULL);
-    writing = tomoe_canvas_get_writing (TOMOE_CANVAS (priv->canvas));
-
-    /* set candidate data */
-    candidates = (GList *) tomoe_canvas_get_candidates (TOMOE_CANVAS (priv->canvas));
-    for (list = candidates; list; list = g_list_next (list)) {
-        TomoeCandidate *cand = TOMOE_CANDIDATE (list->data);
-        TomoeChar *c = tomoe_candidate_get_char (cand);
-        if (list != candidates) 
-            g_string_append_c (dump_string, ' ');
-        g_string_append (dump_string, tomoe_char_get_utf8 (c));
-    }
-    g_string_append_c (dump_string, '\n');
-
-    /* set stroke data */
-    strokes = (GList *) tomoe_writing_get_strokes (writing);
-    for (list = strokes; list; list = g_list_next (list)) {
-        GList *points = (GList *) list->data;
-        GList *point;
-
-        for (point = points; point; point = g_list_next (point)) {
-            TomoePoint *p = (TomoePoint *) point->data;
-            if (point != points)
-                g_string_append (dump_string, ", ");
-            g_string_append_printf (dump_string, "%d %d", p->x, p->y);
-        }
-        g_string_append_c (dump_string, '\n');
-    }
-
-    g_file_set_contents (filename, dump_string->str, dump_string->len, NULL);
-
-    g_object_unref (writing);
-    g_string_free (dump_string, TRUE);
-    g_free (filename);
-}
-#endif
-
-/*
- * vi:ts=4:nowrap:ai:expandtab
- */
Index: libtomoe-gtk/src/tomoe-stroke-search.h
diff -u libtomoe-gtk/src/tomoe-stroke-search.h:1.7 libtomoe-gtk/src/tomoe-stroke-search.h:removed
--- libtomoe-gtk/src/tomoe-stroke-search.h:1.7	Fri Dec  1 13:38:37 2006
+++ libtomoe-gtk/src/tomoe-stroke-search.h	Fri Dec  1 14:48:07 2006
@@ -1,65 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- *  Copyright (C) 2005 Takuro Ashie
- *  Copyright (C) 2006 Juernjakob Harder
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */ 
-
-#ifndef __TOMOE_STROKE_SEARCH_H__
-#define __TOMOE_STROKE_SEARCH_H__
-
-#include <glib.h>
-#include <glib-object.h>
-#include <gtk/gtktable.h>
-#include <tomoe-char.h>
-
-G_BEGIN_DECLS
-
-#define TOMOE_TYPE_STROKE_SEARCH            (tomoe_stroke_search_get_type ())
-#define TOMOE_STROKE_SEARCH(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), TOMOE_TYPE_STROKE_SEARCH, TomoeStrokeSearch))
-#define TOMOE_STROKE_SEARCH_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), TOMOE_TYPE_STROKE_SEARCH, TomoeStrokeSearchClass))
-#define TOMOE_IS_STROKE_SEARCH(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TOMOE_TYPE_STROKE_SEARCH))
-#define TOMOE_IS_STROKE_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TOMOE_TYPE_STROKE_SEARCH))
-#define TOMOE_STROKE_SEARCH_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), TOMOE_TYPE_STROKE_SEARCH, TomoeStrokeSearchClass))
-
-
-typedef struct _TomoeStrokeSearchClass TomoeStrokeSearchClass;
-typedef struct _TomoeStrokeSearch      TomoeStrokeSearch;
-
-struct _TomoeStrokeSearch
-{
-    GtkTable parent_instance;
-};
-
-struct _TomoeStrokeSearchClass
-{
-    GtkTableClass parent_class;
-    /* -- signals -- */
-    void (*selected) (TomoeStrokeSearch *search);
-};
-
-
-GType      tomoe_stroke_search_get_type    (void) G_GNUC_CONST;
-GtkWidget *tomoe_stroke_search_new         (void);
-GtkWidget *tomoe_stroke_search_get_canvas  (TomoeStrokeSearch *stroke_search);
-TomoeChar *tomoe_stroke_search_get_selected_candidate
-                                           (TomoeStrokeSearch *stroke_search);
-GtkWidget *tomoe_stroke_search_get_button_area 
-                                           (TomoeStrokeSearch *stroke_search);
-
-G_END_DECLS
-
-#endif /* __TOMOE_STROKE_SEARCH_H__ */
Index: libtomoe-gtk/src/tomoe-window.c
diff -u libtomoe-gtk/src/tomoe-window.c:1.28 libtomoe-gtk/src/tomoe-window.c:1.29
--- libtomoe-gtk/src/tomoe-window.c:1.28	Fri Dec  1 14:12:36 2006
+++ libtomoe-gtk/src/tomoe-window.c	Fri Dec  1 14:48:06 2006
@@ -27,7 +27,7 @@
 
 #include "tomoe-window.h"
 #include "tomoe-canvas.h"
-#include "tomoe-stroke-search.h"
+#include "tomoe-handwriting.h"
 #include "tomoe-char-table.h"
 #include "tomoe-reading-search.h"
 #include "tomoe-gucharmap.h"
@@ -63,7 +63,7 @@
 static void dispose          (GObject   *object);
 static void destroy          (GtkObject *object);
 
-static void on_handwriting_candidate_selected (TomoeStrokeSearch *view,
+static void on_handwriting_candidate_selected (TomoeHandwriting *view,
                                                gpointer           user_data);
 
 static guint window_signals[LAST_SIGNAL] = { 0 };
@@ -92,7 +92,7 @@
 static void
 tomoe_window_init (TomoeWindow *window)
 {
-    TomoeStrokeSearch *handwriting_page;
+    TomoeHandwriting *handwriting_page;
     TomoeReadingSearch *reading_search;
     GtkWidget   *widget, *notebook, *vbox;
     TomoeCanvas *canvas;
@@ -135,10 +135,10 @@
     gtk_widget_show (notebook);
 
     /* handwriting page */
-    widget = tomoe_stroke_search_new ();
+    widget = tomoe_handwriting_new ();
     priv->handwriting = widget;
-    handwriting_page = TOMOE_STROKE_SEARCH (widget);
-    canvas = TOMOE_CANVAS (tomoe_stroke_search_get_canvas (handwriting_page));
+    handwriting_page = TOMOE_HANDWRITING (widget);
+    canvas = TOMOE_CANVAS (tomoe_handwriting_get_canvas (handwriting_page));
     tomoe_canvas_set_context (canvas, priv->context);
     g_signal_connect (G_OBJECT (widget), "selected",
                       G_CALLBACK (on_handwriting_candidate_selected),
@@ -202,15 +202,15 @@
 tomoe_window_get_canvas (TomoeWindow *window)
 {
     TomoeWindowPrivate *priv;
-    TomoeStrokeSearch *handwriting_page;
+    TomoeHandwriting *handwriting_page;
     g_return_val_if_fail (TOMOE_IS_WINDOW (window), NULL);
 
     priv = TOMOE_WINDOW_GET_PRIVATE (window);
-    g_return_val_if_fail (TOMOE_IS_STROKE_SEARCH (priv->handwriting),
+    g_return_val_if_fail (TOMOE_IS_HANDWRITING (priv->handwriting),
                           NULL);
 
-    handwriting_page = TOMOE_STROKE_SEARCH (priv->handwriting);
-    return tomoe_stroke_search_get_canvas (handwriting_page);
+    handwriting_page = TOMOE_HANDWRITING (priv->handwriting);
+    return tomoe_handwriting_get_canvas (handwriting_page);
 }
 
 void
@@ -260,7 +260,7 @@
 }
 
 static void
-on_handwriting_candidate_selected (TomoeStrokeSearch *view, gpointer user_data)
+on_handwriting_candidate_selected (TomoeHandwriting *view, gpointer user_data)
 {
     TomoeWindow *window;
     g_return_if_fail (TOMOE_IS_WINDOW (user_data));
@@ -284,8 +284,8 @@
     current_page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (priv->notebook), page_num);
 
 #warning FIX ME!
-    if (TOMOE_IS_STROKE_SEARCH (current_page))
-        return tomoe_stroke_search_get_selected_candidate (TOMOE_STROKE_SEARCH (priv->handwriting));
+    if (TOMOE_IS_HANDWRITING (current_page))
+        return tomoe_handwriting_get_selected_candidate (TOMOE_HANDWRITING (priv->handwriting));
     return NULL;
 }
 


tomoe-cvs メーリングリストの案内
Back to archive index