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

Back to archive index

Hiroyuki Ikezoe ikezo****@users*****
2006年 11月 27日 (月) 11:58:39 JST


Index: libtomoe-gtk/src/tomoe-canvas.c
diff -u libtomoe-gtk/src/tomoe-canvas.c:1.34 libtomoe-gtk/src/tomoe-canvas.c:1.35
--- libtomoe-gtk/src/tomoe-canvas.c:1.34	Sat Nov 25 22:25:58 2006
+++ libtomoe-gtk/src/tomoe-canvas.c	Mon Nov 27 11:58:39 2006
@@ -563,13 +563,9 @@
 TomoeWriting *
 tomoe_canvas_get_writing (TomoeCanvas *canvas)
 {
-    TomoeWriting *writing;
-
     g_return_val_if_fail (TOMOE_IS_CANVAS (canvas), NULL);
 
-    writing = create_sparse_writing (canvas);
-
-    return writing;
+    return TOMOE_CANVAS_GET_PRIVATE (canvas)->writing;
 }
 
 void
@@ -1241,6 +1237,14 @@
     g_free (buffer);
     g_object_unref (layout);
 }
+const GList *
+tomoe_canvas_get_candidates (TomoeCanvas *canvas)
+{
+    TomoeCanvasPriv *priv = TOMOE_CANVAS_GET_PRIVATE (canvas);
+
+    return priv->candidates;
+}
+
 /*
  * vi:ts=4:nowrap:ai:expandtab
  */
Index: libtomoe-gtk/src/tomoe-canvas.h
diff -u libtomoe-gtk/src/tomoe-canvas.h:1.8 libtomoe-gtk/src/tomoe-canvas.h:1.9
--- libtomoe-gtk/src/tomoe-canvas.h:1.8	Thu Nov 23 15:25:38 2006
+++ libtomoe-gtk/src/tomoe-canvas.h	Mon Nov 27 11:58:39 2006
@@ -90,6 +90,7 @@
                                                TomoeWriting *writing);
 void          tomoe_canvas_lock               (TomoeCanvas  *canvas,
                                                gboolean      lock);
+const GList  *tomoe_canvas_get_candidates     (TomoeCanvas  *canvas);
 
 G_END_DECLS
 
Index: libtomoe-gtk/src/tomoe-stroke-search.c
diff -u libtomoe-gtk/src/tomoe-stroke-search.c:1.8 libtomoe-gtk/src/tomoe-stroke-search.c:1.9
--- libtomoe-gtk/src/tomoe-stroke-search.c:1.8	Thu Nov 23 10:09:55 2006
+++ libtomoe-gtk/src/tomoe-stroke-search.c	Mon Nov 27 11:58:39 2006
@@ -62,6 +62,10 @@
                                            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 gboolean on_candidate_selected     (TomoeCharTable      *table,
                                            GdkEventButton      *event,
                                            gpointer             user_data);
@@ -155,6 +159,14 @@
                       G_CALLBACK (on_normalize_button_clicked),
                       (gpointer) strokeSearch);
     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) strokeSearch);
+    gtk_widget_show (button);
+#endif
 
     /* candidates view */
     frame = gtk_frame_new (NULL);
@@ -282,6 +294,72 @@
     tomoe_stroke_search_set_sensitive (strokeSearch);
     return FALSE;
 }
+
+#ifdef ENABLE_DUMPSTROKE
+static void
+on_dump_button_clicked (GtkButton *button, gpointer user_data)
+{
+    TomoeStrokeSearch *strokeSearch = TOMOE_STROKE_SEARCH (user_data);
+    TomoeStrokeSearchPrivate *priv = TOMOE_STROKE_SEARCH_GET_PRIVATE (strokeSearch);
+    TomoeWriting *writing;
+    GtkWidget *dialog;
+    GList *strokes, *list;
+    GList *candidates;
+    GString *dump_string;
+    gchar *filename;
+
+    g_return_if_fail (TOMOE_IS_STROKE_SEARCH (strokeSearch));
+    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_character (cand);
+        if (list != candidates) 
+            g_string_append_c (dump_string, ' ');
+        g_string_append (dump_string, tomoe_char_get_code (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_string_free (dump_string, TRUE);
+    g_free (filename);
+}
+#endif
+
 /*
  * vi:ts=4:nowrap:ai:expandtab
  */


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