Blame modules/input/iminuktitut.c

Packit 98cdb6
/* GTK - The GIMP Toolkit
Packit 98cdb6
 * Copyright (C) 2000 Red Hat Software
Packit 98cdb6
 * Copyright (C) 2000 SuSE Linux Ltd
Packit 98cdb6
 *
Packit 98cdb6
 * This library is free software; you can redistribute it and/or
Packit 98cdb6
 * modify it under the terms of the GNU Library General Public
Packit 98cdb6
 * License as published by the Free Software Foundation; either
Packit 98cdb6
 * version 2 of the License, or (at your option) any later version.
Packit 98cdb6
 *
Packit 98cdb6
 * This library is distributed in the hope that it will be useful,
Packit 98cdb6
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 98cdb6
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 98cdb6
 * Library General Public License for more details.
Packit 98cdb6
 *
Packit 98cdb6
 * You should have received a copy of the GNU Library General Public
Packit 98cdb6
 * License along with this library; if not, write to the
Packit 98cdb6
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit 98cdb6
 * Boston, MA 02111-1307, USA.
Packit 98cdb6
 *
Packit 98cdb6
 * Original author: Owen Taylor <otaylor@redhat.com>
Packit 98cdb6
 * 
Packit 98cdb6
 * Modified for Inuktitut - Robert Brady <robert@suse.co.uk>
Packit 98cdb6
 *
Packit 98cdb6
 */
Packit 98cdb6
Packit 98cdb6
#include "config.h"
Packit 98cdb6
#include <string.h>
Packit 98cdb6
Packit 98cdb6
#include "gtk/gtk.h"
Packit 98cdb6
#include "gdk/gdkkeysyms.h"
Packit 98cdb6
Packit 98cdb6
#include "gtk/gtkimmodule.h"
Packit 98cdb6
#include "gtk/gtkintl.h"
Packit 98cdb6
Packit 98cdb6
GType type_inuktitut_translit = 0;
Packit 98cdb6
Packit 98cdb6
static void inuktitut_class_init (GtkIMContextSimpleClass *class);
Packit 98cdb6
static void inuktitut_init (GtkIMContextSimple *im_context);
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
inuktitut_register_type (GTypeModule *module)
Packit 98cdb6
{
Packit 98cdb6
  const GTypeInfo object_info =
Packit 98cdb6
  {
Packit 98cdb6
    sizeof (GtkIMContextSimpleClass),
Packit 98cdb6
    (GBaseInitFunc) NULL,
Packit 98cdb6
    (GBaseFinalizeFunc) NULL,
Packit 98cdb6
    (GClassInitFunc) inuktitut_class_init,
Packit 98cdb6
    NULL,           /* class_finalize */
Packit 98cdb6
    NULL,           /* class_data */
Packit 98cdb6
    sizeof (GtkIMContextSimple),
Packit 98cdb6
    0,
Packit 98cdb6
    (GInstanceInitFunc) inuktitut_init,
Packit 98cdb6
  };
Packit 98cdb6
Packit 98cdb6
  type_inuktitut_translit = 
Packit 98cdb6
    g_type_module_register_type (module,
Packit 98cdb6
				 GTK_TYPE_IM_CONTEXT_SIMPLE,
Packit 98cdb6
				 "GtkIMContextInuktitut",
Packit 98cdb6
				 &object_info, 0);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
#define SYL(a,b,c,d) \
Packit 98cdb6
  a, 0,   0, 0, 0, c, \
Packit 98cdb6
  a, 'a', 0, 0, 0, b+7-d, \
Packit 98cdb6
  a, 'a','a',0, 0, b+8-d, \
Packit 98cdb6
  a, 'i', 0, 0, 0, b, \
Packit 98cdb6
  a, 'i','i',0, 0, b+1, \
Packit 98cdb6
  a, 'o', 0, 0, 0, b+2, \
Packit 98cdb6
  a, 'o','o',0, 0, b+3, \
Packit 98cdb6
  a, 'u', 0, 0, 0, b+2, \
Packit 98cdb6
  a, 'u','u',0, 0, b+3,
Packit 98cdb6
Packit 98cdb6
static guint16 inuktitut_compose_seqs[] = {
Packit 98cdb6
  'a', 0,   0,   0 ,  0,   0x140a,
Packit 98cdb6
  'a', 'a', 0,   0,   0,   0x140b,
Packit 98cdb6
Packit 98cdb6
  SYL('c', 0x148b, 0x14a1, 2) /* As g */
Packit 98cdb6
  SYL('f', 0x1555, 0x155d, 2)
Packit 98cdb6
  SYL('g', 0x148b, 0x14a1, 2)
Packit 98cdb6
  SYL('h', 0x14ef, 0x1505, 2)
Packit 98cdb6
Packit 98cdb6
  'i', 0,   0,   0 ,  0,   0x1403,
Packit 98cdb6
  'i', 'i', 0,   0,   0,   0x1404,
Packit 98cdb6
Packit 98cdb6
  SYL('j', 0x1528, 0x153e, 2)
Packit 98cdb6
  SYL('k', 0x146d, 0x1483, 2)
Packit 98cdb6
  SYL('l', 0x14d5, 0x14ea, 2)
Packit 98cdb6
  SYL('m', 0x14a5, 0x14bb, 2)
Packit 98cdb6
  SYL('n', 0x14c2, 0x14d0, 2)
Packit 98cdb6
Packit 98cdb6
  'o', 0,   0,   0 ,  0,   0x1405, /* as u */
Packit 98cdb6
  'o', 'o', 0,   0,   0,   0x1406,
Packit 98cdb6
Packit 98cdb6
  SYL('p', 0x1431, 0x1449, 0)
Packit 98cdb6
  SYL('q', 0x157f, 0x1585, 3)
Packit 98cdb6
  SYL('r', 0x1546, 0x1550, 2)
Packit 98cdb6
  SYL('s', 0x14ef, 0x1505, 2) /* As h */
Packit 98cdb6
  SYL('t', 0x144e, 0x1466, 0)
Packit 98cdb6
Packit 98cdb6
  'u', 0,   0,   0 ,  0,   0x1405,
Packit 98cdb6
  'u', 'u', 0,   0,   0,   0x1406,
Packit 98cdb6
Packit 98cdb6
  SYL('v', 0x1555, 0x155d, 2) /* as f */
Packit 98cdb6
  SYL('y', 0x1528, 0x153e, 2) /* As j */
Packit 98cdb6
Packit 98cdb6
  SYL(GDK_lstroke, 0x15a0, 0x15a6, 3) /* l- */
Packit 98cdb6
  SYL(GDK_eng, 0x158f, 0x1595, 3)     /* ng */
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
inuktitut_class_init (GtkIMContextSimpleClass *class)
Packit 98cdb6
{
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
inuktitut_init (GtkIMContextSimple *im_context)
Packit 98cdb6
{
Packit 98cdb6
  gtk_im_context_simple_add_table (im_context,
Packit 98cdb6
				   inuktitut_compose_seqs,
Packit 98cdb6
				   4,
Packit 98cdb6
				   G_N_ELEMENTS (inuktitut_compose_seqs) / (4 + 2));
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static const GtkIMContextInfo inuktitut_info = { 
Packit 98cdb6
  "inuktitut",		   /* ID */
Packit 98cdb6
  N_("Inuktitut (Transliterated)"),         /* Human readable name */
Packit 98cdb6
  GETTEXT_PACKAGE,	   /* Translation domain */
Packit 98cdb6
  GTK_LOCALEDIR,	   /* Dir for bindtextdomain (not strictly needed for "gtk+") */
Packit 98cdb6
  "iu"			   /* Languages for which this module is the default */
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
static const GtkIMContextInfo *info_list[] = {
Packit 98cdb6
  &inuktitut_info
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
#ifndef INCLUDE_IM_inuktitut
Packit 98cdb6
#define MODULE_ENTRY(type, function) G_MODULE_EXPORT type im_module_ ## function
Packit 98cdb6
#else
Packit 98cdb6
#define MODULE_ENTRY(type, function) type _gtk_immodule_inuktitut_ ## function
Packit 98cdb6
#endif
Packit 98cdb6
Packit 98cdb6
MODULE_ENTRY (void, init) (GTypeModule *module)
Packit 98cdb6
{
Packit 98cdb6
  inuktitut_register_type (module);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
MODULE_ENTRY (void, exit) (void)
Packit 98cdb6
{
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
MODULE_ENTRY (void, list) (const GtkIMContextInfo ***contexts,
Packit 98cdb6
			   int                      *n_contexts)
Packit 98cdb6
{
Packit 98cdb6
  *contexts = info_list;
Packit 98cdb6
  *n_contexts = G_N_ELEMENTS (info_list);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
MODULE_ENTRY (GtkIMContext *, create) (const gchar *context_id)
Packit 98cdb6
{
Packit 98cdb6
  if (strcmp (context_id, "inuktitut") == 0)
Packit 98cdb6
    return g_object_new (type_inuktitut_translit, NULL);
Packit 98cdb6
  else
Packit 98cdb6
    return NULL;
Packit 98cdb6
}