[uim-commit] r2943 - trunk/helper

ekato at freedesktop.org ekato at freedesktop.org
Thu Jan 19 23:49:12 PST 2006


Author: ekato
Date: 2006-01-19 23:49:07 -0800 (Thu, 19 Jan 2006)
New Revision: 2943

Added:
   trunk/helper/candwin-gtk.c
Removed:
   trunk/helper/helper-candwin-gtk.c
Modified:
   trunk/helper/Makefile.am
Log:
* helper/helper-candwin-gtk.c : Rename to candwin-gtk.c.
* helper/candwin-gtk.c : Renamed from helper-candwin-gtk.c.
* helper/Makefile.am : Follow the rename.  Remove obsolete
  install hooks.


Modified: trunk/helper/Makefile.am
===================================================================
--- trunk/helper/Makefile.am	2006-01-19 18:51:01 UTC (rev 2942)
+++ trunk/helper/Makefile.am	2006-01-20 07:49:07 UTC (rev 2943)
@@ -3,10 +3,10 @@
 helper_defs = -DUIM_DATADIR=\""$(datadir)/@PACKAGE@"\"
 
 if APPLET
-
 libexec_PROGRAMS =  uim-toolbar-applet
 
-uim_toolbar_applet_LDADD = @GNOME2_LIBS@ @GTK2_LIBS@ @APPLET_LIBS@  $(top_builddir)/uim/libuim.la
+uim_toolbar_applet_LDADD = @GNOME2_LIBS@ @GTK2_LIBS@ @APPLET_LIBS@ \
+			   $(top_builddir)/uim/libuim.la
 uim_toolbar_applet_CPPFLAGS = $(helper_defs) -I$(top_srcdir) -I$(top_builddir)
 uim_toolbar_applet_CFLAGS = @GTK2_CFLAGS@ @APPLET_CFLAGS@ @GNOME2_CFLAGS@ -Wall
 
@@ -19,26 +19,18 @@
 
 @INTLTOOL_SERVER_RULE@
 
-install-exec-hook-applet:
-	cd $(DESTDIR)$(libexecdir) && \
-	  rm -f uim-helper-applet && \
-	  $(LN_S) uim-toolbar-applet uim-helper-applet
-
 $(server_in_files): $(server_in_in_files) Makefile
 	sed s, at LIBEXECDIR@,$(libexecdir),g <$< >$@.tmp
 	sed s, at UIM_PIXMAPSDIR@,$(uim_pixmapsdir),g <$@.tmp >$@
 
-DISTCLEANFILES = GNOME_UimApplet.server.in GNOME_UimApplet.server GNOME_UimApplet.server.in.tmp
-
-else
-install-exec-hook-applet:
-	true #dummy
+DISTCLEANFILES = GNOME_UimApplet.server.in GNOME_UimApplet.server \
+		 GNOME_UimApplet.server.in.tmp
 endif
 
 
 if GTK2
-
-bin_PROGRAMS = uim-toolbar-gtk uim-toolbar-gtk-systray uim-im-switcher-gtk uim-input-pad-ja
+bin_PROGRAMS = uim-toolbar-gtk uim-toolbar-gtk-systray uim-im-switcher-gtk \
+	       uim-input-pad-ja
 if APPLET
 libexec_PROGRAMS += uim-candwin-gtk
 else
@@ -53,7 +45,7 @@
 bin_PROGRAMS += uim-pref-gtk
 endif
 
-uim_candwin_gtk_SOURCES  = helper-candwin-gtk.c \
+uim_candwin_gtk_SOURCES  = candwin-gtk.c \
 			   ../gtk/caret-state-indicator.c \
 			   ../gtk/caret-state-indicator.h
 uim_candwin_gtk_LDADD    = @GTK2_LIBS@ $(top_builddir)/uim/libuim.la
@@ -65,7 +57,8 @@
 uim_toolbar_gtk_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir)
 uim_toolbar_gtk_CFLAGS   = @GTK2_CFLAGS@ -Wall
 
-uim_toolbar_gtk_systray_SOURCES  = toolbar-systray-gtk.c toolbar-common-gtk.c eggtrayicon.c eggtrayicon.h
+uim_toolbar_gtk_systray_SOURCES  = toolbar-systray-gtk.c toolbar-common-gtk.c \
+				   eggtrayicon.c eggtrayicon.h
 uim_toolbar_gtk_systray_LDADD    = @GTK2_LIBS@ $(top_builddir)/uim/libuim.la
 uim_toolbar_gtk_systray_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir)
 uim_toolbar_gtk_systray_CFLAGS   = @GTK2_CFLAGS@  -Wall
@@ -97,14 +90,4 @@
 uim_dict_gtk_CFLAGS   = @GTK2_CFLAGS@
 endif
 
-install-exec-hook-gtk2:
-	cd $(DESTDIR)$(bindir) && \
-	  rm -f uim-helper-toolbar-gtk uim-helper-toolbar-gtk-systray && \
-	  $(LN_S) uim-toolbar-gtk uim-helper-toolbar-gtk && \
-	  $(LN_S) uim-toolbar-gtk-systray uim-helper-toolbar-gtk-systray
-else
-install-exec-hook-gtk2:
-	true # dummy
 endif
-
-install-exec-hook: install-exec-hook-gtk2 install-exec-hook-applet

Copied: trunk/helper/candwin-gtk.c (from rev 2942, trunk/helper/helper-candwin-gtk.c)

Deleted: trunk/helper/helper-candwin-gtk.c
===================================================================
--- trunk/helper/helper-candwin-gtk.c	2006-01-19 18:51:01 UTC (rev 2942)
+++ trunk/helper/helper-candwin-gtk.c	2006-01-20 07:49:07 UTC (rev 2943)
@@ -1,759 +0,0 @@
-/*
-
-  Copyright (c) 2003-2006 uim Project http://uim.freedesktop.org/
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. Neither the name of authors nor the names of its contributors
-     may be used to endorse or promote products derived from this software
-     without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
-  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-#include <uim/uim.h>
-#include <uim/uim-helper.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-#include <glib/gprintf.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "../gtk/caret-state-indicator.h"
-
-#define UIM_TYPE_CANDIDATE_WINDOW	(candidate_window_get_type())
-#define UIM_CANDIDATE_WINDOW(obj)	(G_TYPE_CHECK_INSTANCE_CAST ((obj), candidate_window_get_type(), UIMCandidateWindow))
-#define UIM_IS_CANDIDATE_WINDOW(obj)	(G_TYPE_CHECK_INSTANCE_TYPE ((obj), UIM_TYPE_CANDIDATE_WINDOW))
-#define UIM_IS_CANDIDATE_WINDOW_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), UIM_TYPE_CANDIDATE_WINDOW))
-#define UIM_CANDIDATE_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UIM_TYPE_CANDIDATE_WINDOW, UIMCandidateWindowClass))
-
-typedef struct _UIMCandidateWindow	UIMCandidateWindow;
-typedef struct _UIMCandidateWindowClass	UIMCandidateWindowClass;
-
-struct _UIMCandidateWindow {
-  GtkWindow parent;
-
-  GtkWidget *view;
-  GtkWidget *num_label;
-
-  GPtrArray *stores;
-
-  guint nr_candidates;
-  guint display_limit;
-  gint candidate_index;
-  gint page_index;
-
-  gint pos_x;
-  gint pos_y;
-  gint width;
-  gint height;
-
-  GtkWidget *caret_state_indicator;
-
-  gboolean is_active;
-};
-
-struct _UIMCandidateWindowClass {
-  GtkWindowClass parent_class;
-
-  /* signals */
-  void (*index_changed) (UIMCandidateWindowClass *candwin);
-};
-
-static UIMCandidateWindow *cwin; /* use static one */
-
-GType candidate_window_get_type(void);
-UIMCandidateWindow *candidate_window_new(void);
-
-/* copied from uim-cand-win-gtk.c */
-static gint uim_cand_win_gtk_get_index(UIMCandidateWindow *cwin);
-static void uim_cand_win_gtk_set_index(UIMCandidateWindow *cwin, gint index);
-static void uim_cand_win_gtk_set_page(UIMCandidateWindow *cwin, gint page);
-
-static void uim_cand_win_gtk_layout(void);
-
-#define NR_CANDIDATES 10 /* FIXME! not used */
-#define CANDWIN_DEFAULT_WIDTH	80
-
-enum {
-  INDEX_CHANGED_SIGNAL,
-  NR_SIGNALS
-};
-
-enum {
-  TERMINATOR = -1,
-  COLUMN_HEADING,
-  COLUMN_CANDIDATE
-};
-
-static void candidate_window_init(UIMCandidateWindow *cwin);
-static void candidate_window_class_init(UIMCandidateWindowClass *klass);
-
-static gboolean tree_selection_changed(GtkTreeSelection *selection,
-				       GtkTreeModel *model,
-				       GtkTreePath *path,
-				       gboolean path_currently_selected,
-				       gpointer data);
-
-#if 0
-static gboolean tree_view_button_press(GtkWidget *widget, GdkEventButton *event, gpointer data);
-#endif
-static gboolean configure_event_cb(GtkWidget *widget, GdkEventConfigure *event, gpointer data);
-
-static GType candidate_window_type = 0;
-static GTypeInfo const object_info = {
-  sizeof (UIMCandidateWindowClass),
-  NULL,
-  NULL,
-  (GClassInitFunc) candidate_window_class_init,
-  NULL,
-  NULL,
-  sizeof(UIMCandidateWindow),
-  0,
-  (GInstanceInitFunc) candidate_window_init,
-};
-
-static gint cand_win_gtk_signals[NR_SIGNALS] = {0};
-
-static unsigned int read_tag;
-
-static void init_candidate_win(void);
-static void candwin_activate(gchar **str);
-static void candwin_update(gchar **str);
-static void candwin_move(char **str);
-static void candwin_show(void);
-static void candwin_deactivate(void);
-static void str_parse(char *str);
-
-static void index_changed_cb(UIMCandidateWindow *cwin)
-{
-  fprintf(stdout, "index\n");
-  fprintf(stdout, "%d\n\n", uim_cand_win_gtk_get_index(cwin));
-  fflush(stdout);
-}
-
-GType
-candidate_window_get_type(void)
-{
-  if (!candidate_window_type)
-    candidate_window_type = g_type_register_static(GTK_TYPE_WINDOW,
-		    "UIMCandidateWindow", &object_info, (GTypeFlags)0);
-  return candidate_window_type;
-}
-
-static void candidate_window_class_init(UIMCandidateWindowClass *klass)
-{
-  cand_win_gtk_signals[INDEX_CHANGED_SIGNAL]
-    = g_signal_new("index-changed",
-		   G_TYPE_FROM_CLASS(klass),
-		   G_SIGNAL_RUN_FIRST,
-		   G_STRUCT_OFFSET(UIMCandidateWindowClass, index_changed),
-		   NULL, NULL,
-		   g_cclosure_marshal_VOID__VOID,
-		   G_TYPE_NONE, 0);
-}
-
-UIMCandidateWindow *
-candidate_window_new(void)
-{
-  GObject *obj = g_object_new(UIM_TYPE_CANDIDATE_WINDOW, "type",
-		  GTK_WINDOW_POPUP, NULL);
-  return UIM_CANDIDATE_WINDOW(obj);
-}
-
-/* copied from uim-cand-win-gtk.c */
-static void
-update_label(UIMCandidateWindow *cwin)
-{
-  char label_str[20];
-
-  if (cwin->candidate_index >= 0)
-    g_snprintf(label_str, sizeof(label_str), "%d / %d",
-	       cwin->candidate_index + 1 , cwin->nr_candidates);
-  else
-    g_snprintf(label_str, sizeof(label_str), "- / %d",
-	       cwin->nr_candidates);
-
-  gtk_label_set_text(GTK_LABEL(cwin->num_label), label_str);
-}
-
-/* copied from uim-cand-win-gtk.c */
-static gboolean
-tree_selection_changed(GtkTreeSelection *selection,
-		       GtkTreeModel *model,
-		       GtkTreePath *path,
-		       gboolean path_currently_selected,
-		       gpointer data)
-{
-  /* candidate_window *cwin = data; */
-  gint *indicies;
-  gint idx;
-
-  if (!&cwin)
-    return TRUE;
-
-  indicies = gtk_tree_path_get_indices(path);
-  g_return_val_if_fail(indicies, TRUE);
-  idx = *indicies + cwin->display_limit * cwin->page_index;
-
-  if (!path_currently_selected && cwin->candidate_index != idx) {
-    if (cwin->candidate_index >= 0) {
-      cwin->candidate_index = idx;
-      g_signal_emit(G_OBJECT(cwin),
-		    cand_win_gtk_signals[INDEX_CHANGED_SIGNAL], 0);
-    }
-
-    update_label(cwin);
-
-    if (cwin->candidate_index < 0)
-      return FALSE;
-    else
-      return TRUE;
-  } else {
-    update_label(cwin);
-
-    return TRUE;
-  }
-}
-
-#if 0
-/* copied from uim-cand-win-gtk.c */
-static gboolean
-tree_view_button_press(GtkWidget *widget, GdkEventButton *event, gpointer data)
-{
-  GtkTreePath *path;
-  gboolean exist, retval = FALSE;
-  gint *indicies;
-
-  fprintf(stderr, "tree_view_button_press\n");
-  g_return_val_if_fail(GTK_IS_TREE_VIEW(widget), FALSE);
-  g_return_val_if_fail(UIM_CANDIDATE_WINDOW(data), FALSE);
-
-  /* cwin = UIM_CANDIDATE_WINDOW(data); */
-
-  exist = gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget),
-					event->x, event->y,
-					&path, NULL, NULL, NULL);
-  if (!exist)
-    return FALSE;
-
-  indicies = gtk_tree_path_get_indices(path);
-
-  /* don't relay button press event to empty row */
-  if (cwin->display_limit * cwin->page_index + *indicies >= cwin->nr_candidates)
-
-    retval = TRUE;
-
-  gtk_tree_path_free(path);
-
-  return retval;
-}
-#endif
-
-static void
-cb_tree_view_destroy(GtkWidget *widget, GPtrArray *stores)
-{
-  gint i;
-
-  g_return_if_fail(GTK_IS_TREE_VIEW(widget));
-
-  for (i = cwin->stores->len - 1; i >= 0; i--) {
-    GtkListStore *store = g_ptr_array_remove_index(cwin->stores, i);
-    gtk_list_store_clear(store);
-    g_object_unref(G_OBJECT(store));
-  }
-  g_ptr_array_free(cwin->stores, TRUE);
-}
-
-static void
-init_candidate_win(void) {
-  cwin = candidate_window_new();
-  g_signal_connect(G_OBJECT(cwin), "index-changed",
-		   G_CALLBACK(index_changed_cb), NULL);
-  g_signal_connect(G_OBJECT(cwin), "configure_event",
-		   G_CALLBACK(configure_event_cb), NULL);
-}
-
-static void
-candidate_window_init(UIMCandidateWindow *cwin)
-{
-  GtkCellRenderer *renderer;
-  GtkTreeViewColumn *column; 
-  GtkWidget *scrolled_window;
-  GtkWidget *vbox;
-  GtkWidget *frame;
-  GtkTreeSelection *selection;
-  GdkRectangle cursor_location;
-  
-  vbox = gtk_vbox_new(FALSE, 0);
-  frame = gtk_frame_new(NULL);
-
-  cwin->stores = g_ptr_array_new();
-  
-  gtk_window_set_default_size(GTK_WINDOW(cwin),
-		  CANDWIN_DEFAULT_WIDTH, -1);
-  
-
-  scrolled_window = gtk_scrolled_window_new(NULL, NULL);
-  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
-				 GTK_POLICY_NEVER,
-				 GTK_POLICY_NEVER);
-  gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
-  
-  cwin->view = gtk_tree_view_new();
-  g_signal_connect(G_OBJECT(cwin->view), "destroy", 
-  		   G_CALLBACK(cb_tree_view_destroy), cwin->stores);
-  gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(cwin->view), TRUE);
-  gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(cwin->view), FALSE);
-  gtk_container_add(GTK_CONTAINER(scrolled_window), cwin->view);
-
-  gtk_container_add(GTK_CONTAINER(frame), vbox);
-  gtk_container_add(GTK_CONTAINER(cwin), frame);
-  gtk_container_set_border_width(GTK_CONTAINER(frame), 0);
-    
-  selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cwin->view));
-
-  gtk_tree_selection_set_select_function(selection,
-		  			 tree_selection_changed,
-					 cwin,
-					 NULL);
-
-  renderer = gtk_cell_renderer_text_new();
-  g_object_set(renderer, "scale", 1.2, NULL);
-
-  column = gtk_tree_view_column_new_with_attributes("No",
-						    renderer,
-						    "text",
-						    COLUMN_HEADING,
-						    NULL);
-  gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-  gtk_tree_view_append_column(GTK_TREE_VIEW(cwin->view), column);
-  
-  renderer = gtk_cell_renderer_text_new();
-  g_object_set(renderer, "scale", 1.2, NULL);
-  /* g_object_set(renderer, "size-points", 20.0, NULL); */
-  column = gtk_tree_view_column_new_with_attributes("Text",
-						    renderer,
-						    "text",
-						    COLUMN_CANDIDATE,
-						    NULL);
-  gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-  gtk_tree_view_append_column(GTK_TREE_VIEW(cwin->view), column);
-  
-  cwin->num_label = gtk_label_new("");
-
-  gtk_box_pack_start(GTK_BOX(vbox), cwin->num_label, FALSE, FALSE, 0);
-
-#if 0
-  g_signal_connect(G_OBJECT(cwin->view), "button-press-event", 
-  		   G_CALLBACK(tree_view_button_press), cwin);
-#endif
-
-  cwin->pos_x = 0;
-  cwin->pos_y = 0;
-  cwin->is_active = FALSE;
-  cwin->caret_state_indicator = caret_state_indicator_new();
-
-  cursor_location.x = 0;
-  cursor_location.y = 0;
-  cursor_location.height = 0;
-  caret_state_indicator_set_cursor_location(cwin->caret_state_indicator, &cursor_location);
-}
-
-static void
-candwin_activate(gchar **str)
-{
-  gsize rbytes, wbytes;
-  gint i, nr_stores = 1;
-  guint j = 1;
-  gchar *utf8_str;
-  const gchar *charset;
-  guint display_limit;
-  GSList *candidates = NULL;
-
-  if (cwin->stores == NULL)
-    cwin->stores = g_ptr_array_new();
-
-  /* remove old data */
-  for (i = cwin->stores->len - 1; i >= 0; i--) {
-    GtkListStore *store = g_ptr_array_remove_index(cwin->stores, i);
-    gtk_list_store_clear(store);
-    g_object_unref(G_OBJECT(store));
-  }
-
-  if (!strncmp(str[1], "charset=", 8))
-    charset = str[1] + 8;
-  else
-    charset = "UTF-8";
-
-  if (!strncmp(str[2], "display_limit=", 14)) {
-    display_limit = atoi(str[2] + 14);
-    i = 3;
-  } else {
-    display_limit = 0;
-    i = 2;
-  }
-
-  for ( ; str[i]; i++) {
-    if (strcmp(str[i], "") == 0) {
-      break;
-    }
-    utf8_str = g_convert(str[i],
-			 -1, 
-			 "UTF-8",
-			 charset,
-			 &rbytes, &wbytes, NULL);
-    
-    candidates = g_slist_append(candidates, utf8_str);
-    j++;
-  }
-
-  cwin->candidate_index = -1;
-  cwin->nr_candidates = j - 1;
-  cwin->display_limit = display_limit;
-
-  if (candidates == NULL)
-    return;
-
-  /* calculate number of GtkListStores to create */
-  if (display_limit) {
-    nr_stores = cwin->nr_candidates / display_limit;
-    if (cwin->nr_candidates > display_limit * nr_stores)
-      nr_stores++;
-  }
-
-  /* create GtkListStores, and set candidates */
-  for (i = 0; i < nr_stores; i++) {
-    GtkListStore *store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
-    GSList *node;
-
-    g_ptr_array_add(cwin->stores, store);
-
-    /* set candidates */
-    for (j = i * display_limit, node = g_slist_nth(candidates, j);
-	 display_limit ? j < display_limit * (i + 1) : j < cwin->nr_candidates;
-	 j++, node = g_slist_next(node))
-    {
-      GtkTreeIter ti;
-      if (node) {
-	gchar *str = node->data;
-	gchar **column = g_strsplit(str, "\t", 2);
-	gtk_list_store_append(store, &ti);
-	gtk_list_store_set(store, &ti,
-			   COLUMN_HEADING, column[0],
-			   COLUMN_CANDIDATE, column[1],
-			   TERMINATOR);
-	g_strfreev(column);
-	g_free(str);
-      } else {
-	/* No need to set any data for empty row. */
-      }
-    }
-  }
-
-  uim_cand_win_gtk_set_page(cwin, 0);
-  update_label(cwin);
-
-  gtk_widget_show_all(GTK_WIDGET(cwin));
-  cwin->is_active = TRUE;
-}
-
-static void
-candwin_update(gchar **str)
-{
-  int index;
-  sscanf(str[1], "%d", &index);
-
-  uim_cand_win_gtk_set_index(cwin, index);
-}
-
-static void
-candwin_move(char **str)
-{
-  sscanf(str[1], "%d", &cwin->pos_x);
-  sscanf(str[2], "%d", &cwin->pos_y);
-
-  uim_cand_win_gtk_layout();
-}
-
-static void
-candwin_show(void)
-{
-  if (cwin->is_active)
-    gtk_widget_show_all(GTK_WIDGET(cwin));
-}
-
-static void
-candwin_deactivate(void)
-{
-  gtk_widget_hide(GTK_WIDGET(cwin));
-  cwin->is_active = FALSE;
-}
-
-static void
-caret_state_show(gchar **str)
-{
-  int timeout;
-
-  sscanf(str[1], "%d", &timeout);
-  caret_state_indicator_update(cwin->caret_state_indicator, cwin->pos_x, cwin->pos_y, str[2]);
-  if (timeout != 0)
-    caret_state_indicator_set_timeout(cwin->caret_state_indicator, timeout * 1000);
-  gtk_widget_show_all(GTK_WIDGET(cwin->caret_state_indicator));
-}
-
-static void
-caret_state_update()
-{
-  caret_state_indicator_update(cwin->caret_state_indicator, cwin->pos_x, cwin->pos_y, NULL);
-}
-
-static void
-caret_state_hide()
-{
-  gtk_widget_hide(cwin->caret_state_indicator);
-}
-
-static void str_parse(gchar *str)
-{
-  gchar **tmp;
-  gchar *command;
-
-  tmp = g_strsplit(str, "\n", 0);
-  command = tmp[0];
-
-  if (command) {
-    if (strcmp("activate", command) == 0) {
-      candwin_activate(tmp);
-    } else if (strcmp("select", command) == 0) {
-      candwin_update(tmp);
-    } else if (strcmp("show", command) == 0) {
-      candwin_show();
-    } else if (strcmp("hide", command) == 0) {
-      gtk_widget_hide_all(GTK_WIDGET(cwin));
-    } else if (strcmp("move", command) == 0) {
-      candwin_move(tmp);
-    } else if (strcmp("deactivate", command) == 0) {
-      candwin_deactivate();
-    } else if (strcmp("show_caret_state", command) == 0) {
-      caret_state_show(tmp);
-    } else if (strcmp("update_caret_state", command) == 0) {
-      caret_state_update();
-    } else if (strcmp("hide_caret_state", command) == 0) {
-      caret_state_hide();
-    }
-  }
-  g_strfreev(tmp);
-}
-
-#define CANDIDATE_BUFFER_SIZE	4096
-static gboolean
-read_cb(GIOChannel *channel, GIOCondition c, gpointer p)
-{
-  char buf[CANDIDATE_BUFFER_SIZE];
-  char *read_buf = strdup("");
-  int i = 0;
-  int n;
-  gchar **tmp;
-  int fd = g_io_channel_unix_get_fd(channel);
-
-  while (uim_helper_fd_readable(fd) > 0) {
-    n = read(fd, buf, CANDIDATE_BUFFER_SIZE - 1);
-    if (n == 0) {
-      close(fd);
-      exit(EXIT_FAILURE);
-    }
-    if (n == -1)
-      return TRUE;
-    buf[n] = '\0';
-    read_buf = realloc(read_buf, strlen(read_buf) + n + 1);
-    strcat(read_buf, buf);
-  }
-
-  tmp = g_strsplit(read_buf, "\n\n", 0);
-
-  while (tmp[i]) {
-    str_parse(tmp[i]);
-    i++;
-  }
-  g_strfreev(tmp);
-  free(read_buf);
-  return TRUE;
-}
-
-int
-main(int argc, char *argv[])
-{
-  GIOChannel *channel;
-
-  gtk_set_locale();
-  gtk_init(&argc, &argv);
-
-  init_candidate_win();
-
-  channel = g_io_channel_unix_new(0);
-  read_tag = g_io_add_watch(channel, G_IO_IN | G_IO_HUP | G_IO_ERR,
-			    read_cb, 0);
-  g_io_channel_unref(channel);
-
-  gtk_main();
-  return 0;
-}
-
-/* copied from uim-cand-win-gtk.c */
-static gint
-uim_cand_win_gtk_get_index(UIMCandidateWindow *cwin)
-{
-  g_return_val_if_fail(UIM_IS_CANDIDATE_WINDOW(cwin), -1);
-
-  return cwin->candidate_index;
-}
-
-/* copied from uim-cand-win-gtk.c */
-static void
-uim_cand_win_gtk_set_index(UIMCandidateWindow *cwin, gint index)
-{
-  gint new_page;
-
-  g_return_if_fail(UIM_IS_CANDIDATE_WINDOW(cwin));
-
-  if (index >= (gint) cwin->nr_candidates)
-    cwin->candidate_index = 0;
-  else
-    cwin->candidate_index = index;
-
-  if (cwin->candidate_index >= 0 && cwin->display_limit)
-    new_page = cwin->candidate_index / cwin->display_limit;
-  else
-    new_page = cwin->page_index;
-
-  if (cwin->page_index != new_page)
-    uim_cand_win_gtk_set_page(cwin, new_page);
-
-  if (cwin->candidate_index >= 0) {
-    GtkTreePath *path;
-    gint pos = index;
-
-    if (cwin->display_limit)
-      pos = cwin->candidate_index % cwin->display_limit;
-
-    path = gtk_tree_path_new_from_indices(pos, -1);
-    gtk_tree_view_set_cursor(GTK_TREE_VIEW(cwin->view),
-			     path, NULL, FALSE);
-    gtk_tree_path_free(path);
-
-  } else {
-    GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cwin
-->view));
-
-    gtk_tree_selection_unselect_all(selection);
-  }
-}
-
-/* copied from uim-cand-win-gtk.c */
-static void
-uim_cand_win_gtk_set_page(UIMCandidateWindow *cwin, gint page)
-{
-  guint len, new_page;
-  gint new_index;
-
-  g_return_if_fail(UIM_IS_CANDIDATE_WINDOW(cwin));
-  g_return_if_fail(cwin->stores);
-
-  len = cwin->stores->len;
-  g_return_if_fail(len);
-
-  if (page < 0) {
-    gtk_tree_view_set_model(GTK_TREE_VIEW(cwin->view),
-			    GTK_TREE_MODEL(cwin->stores->pdata[len - 1]));
-    new_page = len - 1;
-  } else if (page >= (gint) len) {
-    gtk_tree_view_set_model(GTK_TREE_VIEW(cwin->view),
-			    GTK_TREE_MODEL(cwin->stores->pdata[0]));
-    new_page = 0;
-  } else {
-    gtk_tree_view_set_model(GTK_TREE_VIEW(cwin->view),
-
-			    GTK_TREE_MODEL(cwin->stores->pdata[page]));
-    new_page = page;
-  }
-
-  cwin->page_index = new_page;
-
-  if (cwin->display_limit) {
-    if (cwin->candidate_index >= 0)
-      new_index
-	= (new_page * cwin->display_limit) + (cwin->candidate_index % cwin->display_limit);
-    else
-      new_index = -1;
-  } else {
-    new_index = cwin->candidate_index;
-  }
-
-  if (new_index >= (gint) cwin->nr_candidates)
-    new_index = cwin->nr_candidates - 1;
-
- /* shrink the window */
-  gtk_window_resize(GTK_WINDOW(cwin), CANDWIN_DEFAULT_WIDTH, 1);
-
-  uim_cand_win_gtk_set_index(cwin, new_index);
-}
-
-static void
-uim_cand_win_gtk_layout()
-{
-  int x, y;
-  int screen_width, screen_height;
-
-  screen_width = gdk_screen_get_width(gdk_screen_get_default());
-  screen_height = gdk_screen_get_height(gdk_screen_get_default());
-
-  if (screen_width < cwin->pos_x + cwin->width)
-    x = cwin->pos_x - cwin->width;
-  else
-    x = cwin->pos_x;
-
-  if (screen_height < cwin->pos_y + cwin->height)
-    y = cwin->pos_y - cwin->height - 20; /* FIXME: Preedit height is needed to
-					    be sent by uim-xim */
-  else
-    y = cwin->pos_y;
-
-  gtk_window_move(GTK_WINDOW(cwin), x, y);
-}
-
-static gboolean
-configure_event_cb(GtkWidget *widget, GdkEventConfigure *event, gpointer data)
-{
-  cwin->width = event->width;
-  cwin->height = event->height;
-
-  uim_cand_win_gtk_layout();
-
-  return FALSE;
-}



More information about the uim-commit mailing list