diff options
Diffstat (limited to 'input-methods/sulekha/src')
21 files changed, 8249 insertions, 0 deletions
diff --git a/input-methods/sulekha/src/.deps/sulekha.Po b/input-methods/sulekha/src/.deps/sulekha.Po new file mode 100644 index 0000000..92ad61e --- /dev/null +++ b/input-methods/sulekha/src/.deps/sulekha.Po @@ -0,0 +1,1139 @@ +sulekha.o sulekha.o: sulekha.c /usr/include/gtk-2.0/gtk/gtk.h \ + /usr/include/gtk-2.0/gdk/gdk.h /usr/include/gtk-2.0/gdk/gdkcairo.h \ + /usr/include/gtk-2.0/gdk/gdkcolor.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-32.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/float.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gerror.h /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \ + /usr/include/glib-2.0/glib/gatomic.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h /usr/include/time.h \ + /usr/include/bits/time.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/glib-2.0/glib/gcache.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gcompletion.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h \ + /usr/include/glib-2.0/glib/gdate.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gslist.h \ + /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h \ + /usr/include/glib-2.0/glib/gqsort.h /usr/include/glib-2.0/glib/gqueue.h \ + /usr/include/glib-2.0/glib/grand.h /usr/include/glib-2.0/glib/grel.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/lib/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkpixbuf.h /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/glib-2.0/gmodule.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkdnd.h \ + /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h /usr/include/atk-1.0/atk/atk.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h /usr/include/atk-1.0/atk/atkmisc.h \ + /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombo.h /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h \ + /usr/include/gtk-2.0/gtk/gtkdnd.h /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h \ + /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h \ + /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h \ + /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h \ + /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h /usr/include/gtk-2.0/gtk/gtkplug.h \ + /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkenums.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktext.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h ../config.h sulekhaspell.h + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-32.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/float.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/time.h: + +/usr/include/bits/time.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/glib-2.0/glib/gcache.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gcompletion.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/grel.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/lib/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +../config.h: + +sulekhaspell.h: diff --git a/input-methods/sulekha/src/.deps/sulekhaspell.Po b/input-methods/sulekha/src/.deps/sulekhaspell.Po new file mode 100644 index 0000000..24dd23a --- /dev/null +++ b/input-methods/sulekha/src/.deps/sulekhaspell.Po @@ -0,0 +1,1151 @@ +sulekhaspell.o sulekhaspell.o: sulekhaspell.c \ + /usr/include/gtk-2.0/gtk/gtk.h /usr/include/gtk-2.0/gdk/gdk.h \ + /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ + /usr/include/cairo/cairo.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-32.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/float.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gerror.h /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \ + /usr/include/glib-2.0/glib/gatomic.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h /usr/include/time.h \ + /usr/include/bits/time.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/glib-2.0/glib/gcache.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gcompletion.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h \ + /usr/include/glib-2.0/glib/gdate.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gslist.h \ + /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h \ + /usr/include/glib-2.0/glib/gqsort.h /usr/include/glib-2.0/glib/gqueue.h \ + /usr/include/glib-2.0/glib/grand.h /usr/include/glib-2.0/glib/grel.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/lib/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkpixbuf.h /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/glib-2.0/gmodule.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkdnd.h \ + /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h /usr/include/atk-1.0/atk/atk.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h /usr/include/atk-1.0/atk/atkmisc.h \ + /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombo.h /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h \ + /usr/include/gtk-2.0/gtk/gtkdnd.h /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h \ + /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h \ + /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h \ + /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h \ + /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h /usr/include/gtk-2.0/gtk/gtkplug.h \ + /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkenums.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktext.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/bits/locale.h ../config.h \ + sulekhaspell.h transliteration.h /usr/include/aspell.h + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-32.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/float.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/time.h: + +/usr/include/bits/time.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/glib-2.0/glib/gcache.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gcompletion.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/grel.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/lib/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +../config.h: + +sulekhaspell.h: + +transliteration.h: + +/usr/include/aspell.h: diff --git a/input-methods/sulekha/src/.deps/transliteration.Po b/input-methods/sulekha/src/.deps/transliteration.Po new file mode 100644 index 0000000..e8a0266 --- /dev/null +++ b/input-methods/sulekha/src/.deps/transliteration.Po @@ -0,0 +1,86 @@ +transliteration.o transliteration.o: transliteration.c \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-32.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/bits/wchar.h /usr/include/gconv.h \ + /usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + /usr/include/endian.h /usr/include/bits/endian.h /usr/include/stdlib.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + transliteration.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-32.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/i486-linux-gnu/4.1.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +transliteration.h: diff --git a/input-methods/sulekha/src/Makefile b/input-methods/sulekha/src/Makefile new file mode 100644 index 0000000..1ea073a --- /dev/null +++ b/input-methods/sulekha/src/Makefile @@ -0,0 +1,398 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/sulekha +pkglibdir = $(libdir)/sulekha +pkgincludedir = $(includedir)/sulekha +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +noinst_PROGRAMS = sulekha$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_sulekha_OBJECTS = sulekha.$(OBJEXT) sulekhaspell.$(OBJEXT) \ + transliteration.$(OBJEXT) +sulekha_OBJECTS = $(am_sulekha_OBJECTS) +sulekha_LDADD = $(LDADD) +sulekha_DEPENDENCIES = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(sulekha_SOURCES) +DIST_SOURCES = $(sulekha_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/santhosh/dev/sulekha/missing --run aclocal-1.10 +AMTAR = ${SHELL} /home/santhosh/dev/sulekha/missing --run tar +AUTOCONF = ${SHELL} /home/santhosh/dev/sulekha/missing --run autoconf +AUTOHEADER = ${SHELL} /home/santhosh/dev/sulekha/missing --run autoheader +AUTOMAKE = ${SHELL} /home/santhosh/dev/sulekha/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEBUG = 1 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +GREP = /bin/grep +HTML_DIR = ${datadir}/gtk-doc/html +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/santhosh/dev/sulekha/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +OBJEXT = o +PACKAGE = sulekha +PACKAGE_BUGREPORT = santhosh00@gmail.com +PACKAGE_NAME = sulekha +PACKAGE_STRING = sulekha 0.0.11 +PACKAGE_TARNAME = sulekha +PACKAGE_VERSION = 0.0.11 +PANGO_CFLAGS = -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include +PANGO_LIBS = -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 +PATH_SEPARATOR = : +PKG_CONFIG = /usr/bin/pkg-config +SET_MAKE = +SHELL = /bin/sh +SPELLER_LIB = -laspell +STRIP = +SULEKHA_CFLAGS = -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 +SULEKHA_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 +SULEKHA_PACKAGES = gtk+-2.0 +VERSION = 0.0.11 +abs_builddir = /home/santhosh/dev/sulekha/src +abs_srcdir = /home/santhosh/dev/sulekha/src +abs_top_builddir = /home/santhosh/dev/sulekha +abs_top_srcdir = /home/santhosh/dev/sulekha +ac_ct_CC = gcc +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /home/santhosh/dev/sulekha/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_builddir = .. +top_srcdir = .. +AM_CFLAGS = @GTKSPELL_CFLAGS@ -laspell +INCLUDES = -I$(top_srcdir) +LDADD = @GTKSPELL_LIBS@ +sulekha_SOURCES = sulekha.c sulekhaspell.c sulekhaspell.h transliteration.c transliteration.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +sulekha$(EXEEXT): $(sulekha_OBJECTS) $(sulekha_DEPENDENCIES) + @rm -f sulekha$(EXEEXT) + $(LINK) $(sulekha_OBJECTS) $(sulekha_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/sulekha.Po +include ./$(DEPDIR)/sulekhaspell.Po +include ./$(DEPDIR)/transliteration.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstPROGRAMS ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/input-methods/sulekha/src/Makefile.am b/input-methods/sulekha/src/Makefile.am new file mode 100644 index 0000000..3039d02 --- /dev/null +++ b/input-methods/sulekha/src/Makefile.am @@ -0,0 +1,8 @@ +noinst_PROGRAMS = sulekha +AM_CFLAGS = @GTKSPELL_CFLAGS@ -laspell +INCLUDES = -I$(top_srcdir) +LDADD = @GTKSPELL_LIBS@ +sulekha_SOURCES =sulekha.c sulekhaspell.c sulekhaspell.h transliteration.c transliteration.h + + + diff --git a/input-methods/sulekha/src/Makefile.am~ b/input-methods/sulekha/src/Makefile.am~ new file mode 100644 index 0000000..820c2b8 --- /dev/null +++ b/input-methods/sulekha/src/Makefile.am~ @@ -0,0 +1,8 @@ +noinst_PROGRAMS = sulekha +AM_CFLAGS = @GTKSPELL_CFLAGS@ -I/usr/local/include/gtkspell-2.0/ -laspell +INCLUDES = -I$(top_srcdir) +LDADD = @GTKSPELL_LIBS@ +sulekha_SOURCES =sulekha.c sulekhaspell.c sulekhaspell.h transliteration.c transliteration.h + + + diff --git a/input-methods/sulekha/src/Makefile.in b/input-methods/sulekha/src/Makefile.in new file mode 100644 index 0000000..9ac8814 --- /dev/null +++ b/input-methods/sulekha/src/Makefile.in @@ -0,0 +1,398 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +noinst_PROGRAMS = sulekha$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_sulekha_OBJECTS = sulekha.$(OBJEXT) sulekhaspell.$(OBJEXT) \ + transliteration.$(OBJEXT) +sulekha_OBJECTS = $(am_sulekha_OBJECTS) +sulekha_LDADD = $(LDADD) +sulekha_DEPENDENCIES = +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(sulekha_SOURCES) +DIST_SOURCES = $(sulekha_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG = @DEBUG@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANGO_CFLAGS = @PANGO_CFLAGS@ +PANGO_LIBS = @PANGO_LIBS@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SPELLER_LIB = @SPELLER_LIB@ +STRIP = @STRIP@ +SULEKHA_CFLAGS = @SULEKHA_CFLAGS@ +SULEKHA_LIBS = @SULEKHA_LIBS@ +SULEKHA_PACKAGES = @SULEKHA_PACKAGES@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CFLAGS = @GTKSPELL_CFLAGS@ -laspell +INCLUDES = -I$(top_srcdir) +LDADD = @GTKSPELL_LIBS@ +sulekha_SOURCES = sulekha.c sulekhaspell.c sulekhaspell.h transliteration.c transliteration.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +sulekha$(EXEEXT): $(sulekha_OBJECTS) $(sulekha_DEPENDENCIES) + @rm -f sulekha$(EXEEXT) + $(LINK) $(sulekha_OBJECTS) $(sulekha_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sulekha.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sulekhaspell.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transliteration.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstPROGRAMS ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/input-methods/sulekha/src/googliterate.c~ b/input-methods/sulekha/src/googliterate.c~ new file mode 100644 index 0000000..2fe25c7 --- /dev/null +++ b/input-methods/sulekha/src/googliterate.c~ @@ -0,0 +1,83 @@ +/* + *File name: googliterate.c + */ + +#include <gtk/gtk.h> +#include <glib.h> +#include <stdlib.h> +#include "trans.c" +/*-- This function allows the program to exit properly when the window is closed --*/ +gint +destroyapp (GtkWidget * widget, gpointer gdata) +{ + g_print ("Quitting...\n"); + gtk_main_quit (); + return (FALSE); +} + +int +main (int argc, char *argv[]) +{ + /*-- Declare the GTK Widgets used in the program --*/ + GtkWidget *window; + GtkWidget *text; + + gchar *buffer = "eda kitilum "; + char *buffet = NULL; + char *mal = NULL; + const char *command; + /*-- Initialize GTK --*/ + gtk_init (&argc, &argv); + + /*-- Create the new window --*/ + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + /*-- Create a text area --*/ + text = gtk_text_new (NULL, NULL); + + /*-- Set text area to be editable --*/ + gtk_text_set_editable (GTK_TEXT (text), TRUE); + + /*-- Connect the window to the destroyapp function --*/ + gtk_signal_connect (GTK_OBJECT (window), "delete_event", + GTK_SIGNAL_FUNC (destroyapp), NULL); + + /*-- Add the text area to the window --*/ + gtk_container_add (GTK_CONTAINER (window), text); + + /*-- Add some text to the window --*/ + gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL, buffer, + strlen (buffer)); + +/* Get some characters from the text area */ + buffer = gtk_editable_get_chars (GTK_EDITABLE (text), 4, 11); + buffet = (char *) buffer; + printf ("buffet=%s\n", buffet); + buffer = "kakka"; + mal = transliterate_ml (buffer, 0, strlen (buffer)); + printf ("%s\n", mal); + sprintf (command, "./spell ml %s", mal); + system (command); + printf ("%s\n", command); + gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL, buffer, + strlen (buffer)); + + /*-- Set window border to zero so that text area takes up the whole window --*/ + gtk_container_border_width (GTK_CONTAINER (window), 0); + + /*-- Set the window to be 640 x 200 pixels --*/ + gtk_window_set_default_size (GTK_WINDOW (window), 640, 200); + + /*-- Set the window title --*/ + gtk_window_set_title (GTK_WINDOW (window), "Text Area"); + + /*-- Display the widgets --*/ + gtk_widget_show (text); + gtk_widget_show (window); + + /*-- Start the GTK event loop --*/ + gtk_main (); + + /*-- Return 0 if exit is successful --*/ + return 0; +} diff --git a/input-methods/sulekha/src/suggestions.c~ b/input-methods/sulekha/src/suggestions.c~ new file mode 100644 index 0000000..d037d21 --- /dev/null +++ b/input-methods/sulekha/src/suggestions.c~ @@ -0,0 +1,71 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "aspell.h" +AspellConfig *spell_config = NULL; +AspellSpeller *spell_checker = 0; +/*int +main(int argc, const char *argv[])*/ +int +check_word (char *lang, char *word) +{ + int correct = 0; + + int word_length = 0; + + if (lang == NULL) + { + lang = "ml"; + } + + word_length = strlen (word); + spell_config = new_aspell_config (); + aspell_config_replace (spell_config, "lang", lang); + aspell_config_replace (spell_config, "encoding", "utf-8"); + AspellCanHaveError *possible_err = new_aspell_speller (spell_config); + + if (aspell_error_number (possible_err) != 0) + puts (aspell_error_message (possible_err)); + else + spell_checker = to_aspell_speller (possible_err); + correct = aspell_speller_check (spell_checker, word, word_length); + + if (correct == 0) + { + printf ("word \"%s\" is wrong.\n", word); + + } + else + { + printf ("word \"%s\" is correct.\n", word); + exit (0); + } + + + return correct; +} + +void +get_suggestion_list (char *word) +{ + + const char *sugg_word; + int suggestion_count = 0; + int word_length = 0; + AspellWordList *suggestions = NULL; + suggestions = aspell_speller_suggest (spell_checker, word, word_length); + AspellStringEnumeration *aspell_elements = + aspell_word_list_elements (suggestions); + + while ((sugg_word = + aspell_string_enumeration_next (aspell_elements)) != NULL) + { + printf ("%d. %s\n", ++suggestion_count, sugg_word); + } + delete_aspell_string_enumeration (aspell_elements); + + + + +} diff --git a/input-methods/sulekha/src/sulekha.c b/input-methods/sulekha/src/sulekha.c new file mode 100644 index 0000000..93b4fbf --- /dev/null +++ b/input-methods/sulekha/src/sulekha.c @@ -0,0 +1,381 @@ +/* sulekha.c + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Praveen Arimprathodiyil <pravi.a@gmail.com> + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include <gtk/gtk.h> +#include "../config.h" +#include "sulekhaspell.h" + +const char *langs[] = { "ml", "en_US", "de_DE", "ja_JP", NULL }; + +GtkWidget *window, *languagelist, *attached, *view; + + +static void +activate_action (GtkAction * action) +{ + const gchar *name = gtk_action_get_name (action); + const gchar *typename = G_OBJECT_TYPE_NAME (action); + + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (GTK_WINDOW (window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, + "You activated action: \"%s\" of type \"%s\"", + name, typename); + + /* Close dialog on user response */ + g_signal_connect (dialog, + "response", G_CALLBACK (gtk_widget_destroy), NULL); + + gtk_widget_show (dialog); +} + + +static void +activate_email (GtkAboutDialog *about, + const gchar *link, + gpointer data) +{ + g_print ("send mail to %s\n", link); +} + +static void +activate_url (GtkAboutDialog *about, + const gchar *link, + gpointer data) +{ + g_print ("show url %s\n", link); +} +static void +about (GtkAction * action, GtkWidget * window) +{ + GdkPixbuf *pixbuf, *transparent; + gchar *filename; + + const gchar *authors[] = { + "Santhosh Thottongal", + "Praveen Arimbrathodiyil", + NULL + }; + + const gchar *documentors[] = { + "Santhosh Thottongal", + "Praveen Arimbrathodiyil", + NULL + }; + + const gchar *license = + "This library is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU Library General Public License as\n" + "published by the Free Software Foundation; either version 2 of the\n" + "License, or (at your option) any later version.\n" + "\n" + "This library is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" + "Library General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU Library General Public\n" + "License along with the Gnome Library; see the file COPYING.LIB. If not,\n" + "write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" + "Boston, MA 02111-1307, USA.\n"; + + // gtk_about_dialog_set_email_hook (activate_email, NULL, NULL); + //gtk_about_dialog_set_url_hook (activate_url, NULL, NULL); + gtk_show_about_dialog (GTK_WINDOW (window), + "name", "Sulekha", + "version", PACKAGE_VERSION, + "copyright", + "(C) 2007-2008 Santhosh Thottingal, Praveen Arimbrathodiyil", + "license", license, "website", "http://smc.org.in", + "comments", "Intelligent Typing System", "authors", + authors, "documenters", documentors, "logo", + NULL, NULL); + + //g_object_unref (transparent); +} +static GtkActionEntry entries[] = { + { "FileMenu", NULL, "_File" }, /* name, stock id, label */ + { "EditMenu", NULL, "_Edit" }, /* name, stock id, label */ + { "OptionsMenu", NULL, "_Options" }, /* name, stock id, label */ + { "HelpMenu", NULL, "_Help" }, /* name, stock id, label */ + { "New", GTK_STOCK_NEW, /* name, stock id */ + "_New", "<control>N", /* label, accelerator */ + "Create a new file", /* tooltip */ + G_CALLBACK (activate_action) }, + { "Open", GTK_STOCK_OPEN, /* name, stock id */ + "_Open","<control>O", /* label, accelerator */ + "Open a file", /* tooltip */ + G_CALLBACK (activate_action ) }, + { "Save", GTK_STOCK_SAVE, /* name, stock id */ + "_Save","<control>S", /* label, accelerator */ + "Save current file", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SaveAs", GTK_STOCK_SAVE, /* name, stock id */ + "Save _As...", NULL, /* label, accelerator */ + "Save to a file", /* tooltip */ + G_CALLBACK (activate_action) }, + { "ClearSessionDictionary", NULL, /* name, stock id */ + "Clear Session Dictionary", NULL, /* label, accelerator */ + "Clear Session Dictionary", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SynchronizeDictionaries", NULL, /* name, stock id */ + "Synchronize Dictionaries", NULL, /* label, accelerator */ + "Synchronize Dictionaries", /* tooltip */ + G_CALLBACK (activate_action) }, + { "Quit", GTK_STOCK_QUIT, /* name, stock id */ + "_Quit", "<control>Q", /* label, accelerator */ + "Quit", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SelectAll", NULL, /* name, stock id */ + "Select _All", "<control>A", /* label, accelerator */ + "Select All", /* tooltip */ + G_CALLBACK (activate_action) }, + { "ClearAll", NULL, /* name, stock id */ + "Clear All", "<control>C", /* label, accelerator */ + "Clear All", /* tooltip */ + G_CALLBACK (activate_action) }, + { "PasePrimary", NULL, /* name, stock id */ + "Pase Primary", "<control>V", /* label, accelerator */ + "Pase Primary", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SaveDictionariesonExit", NULL, /* name, stock id */ + "Save Dictionaries on Exit", "<control>V", /* label, accelerator */ + "Save Dictionaries on Exit", /* tooltip */ + G_CALLBACK (activate_action) }, + { "About", GTK_STOCK_ABOUT, /* name, stock id */ + "_About", "<control>B", /* label, accelerator */ + "About", /* tooltip */ + G_CALLBACK (about) }, + { "Logo", "demo-gtk-logo", /* name, stock id */ + NULL, NULL, /* label, accelerator */ + "GTK+", /* tooltip */ + G_CALLBACK (activate_action) }, + }; + static guint n_entries = G_N_ELEMENTS (entries); + + + static const gchar *ui_info = + "<ui>" + " <menubar name='MenuBar'>" + " <menu action='FileMenu'>" + " <menuitem action='New'/>" + " <menuitem action='Open'/>" + " <menuitem action='Save'/>" + " <menuitem action='SaveAs'/>" + " <separator/>" + " <menuitem action='ClearSessionDictionary'/>" + " <menuitem action='SynchronizeDictionaries'/>" + " <separator/>" + " <menuitem action='Quit'/>" + " </menu>" + + " <menu action='EditMenu'>" + " <menuitem action='SelectAll'/>" + " <menuitem action='ClearAll'/>" + " <menuitem action='PasePrimary'/>" + " </menu>" + " <menu action='OptionsMenu'>" + " <menuitem action='SaveDictionariesonExit'/>" + " </menu>" + " <menu action='HelpMenu'>" + " <menuitem action='About'/>" + " </menu>" + " </menubar>" + " <toolbar name='ToolBar'>" + " <toolitem action='Open'/>" + " <toolitem action='Quit'/>" + " <separator action='Sep1'/>" + " <toolitem action='Logo'/>" + " </toolbar>" + "</ui>"; + + +static void +report_sulekhaspell_error (const char *err) +{ + GtkWidget *dlg; + dlg = gtk_message_dialog_new (GTK_WINDOW (window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + "SulekhaSpell error: %s", err); + gtk_dialog_run (GTK_DIALOG (dlg)); + gtk_widget_destroy (dlg); +} + +static void +attach_cb () +{ + SulekhaSpell *spell; + GError *error = NULL; + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (attached))) + { + int lang; + + lang = gtk_option_menu_get_history (GTK_OPTION_MENU (languagelist)); + + spell = + sulekhaspell_new_attach (GTK_TEXT_VIEW (view), langs[lang], &error); + + if (spell == NULL) + { + report_sulekhaspell_error (error->message); + g_error_free (error); + } + } + else + { + sulekhaspell_detach (sulekhaspell_get_from_text_view + (GTK_TEXT_VIEW (view))); + } +} + +static void +setlang_cb () +{ + SulekhaSpell *spell; + int lang; + GError *error = NULL; + + spell = sulekhaspell_get_from_text_view (GTK_TEXT_VIEW (view)); + if (spell == NULL) + return; + + lang = gtk_option_menu_get_history (GTK_OPTION_MENU (languagelist)); + if (!sulekhaspell_set_language (spell, langs[lang], &error)) + { + report_sulekhaspell_error (error->message); + g_error_free (error); + } +} + +static void +build_languagelist () +{ + int i; + GtkWidget *menu, *mi; + + languagelist = gtk_option_menu_new (); + menu = gtk_menu_new (); + for (i = 0; langs[i] != NULL; i++) + { + mi = gtk_menu_item_new_with_label (langs[i]); + gtk_widget_show (mi); + g_signal_connect (G_OBJECT (mi), "activate", + G_CALLBACK (setlang_cb), NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + } + gtk_option_menu_set_menu (GTK_OPTION_MENU (languagelist), menu); +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *box, *hbox, *scroll; + GtkUIManager *ui; + GtkActionGroup *actions; + GtkWidget *menu; + GtkWidget *menuitem; + GtkWidget *sw; + GtkWidget *menubar; + GtkWidget *menubox; + GError *error = NULL; + + if (argc > 1) + { + printf ("%s-->%s\n", argv[1], + transliterate_ml (argv[1], 0, strlen (argv[1]))); + exit (0); + } + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + actions = gtk_action_group_new ("Actions"); + gtk_action_group_add_actions (actions, entries, n_entries, NULL); + ui = gtk_ui_manager_new (); + gtk_ui_manager_insert_action_group (ui, actions, 0); + g_object_unref (actions); + gtk_window_add_accel_group (GTK_WINDOW (window), + gtk_ui_manager_get_accel_group (ui)); + + + + if (!gtk_ui_manager_add_ui_from_string (ui, ui_info, -1, &error)) + { + g_message ("building menus failed: %s", error->message); + g_error_free (error); + } + menubox = gtk_vbox_new (FALSE, 0); +// gtk_container_add (GTK_CONTAINER (box), menubox); + gtk_widget_show (menubox); +// gtk_container_add (GTK_CONTAINER (box), box1); + + gtk_box_pack_start (GTK_BOX (menubox), gtk_ui_manager_get_widget (ui, "/MenuBar"), + FALSE, FALSE, 0); + + + + view = gtk_text_view_new (); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD); + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), + GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (scroll), view); + + build_languagelist (); + + hbox = gtk_hbox_new (FALSE, 5); + attached = gtk_toggle_button_new_with_label ("Attached"); + g_signal_connect (G_OBJECT (attached), "toggled", + G_CALLBACK (attach_cb), NULL); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (attached), TRUE); + gtk_box_pack_start (GTK_BOX (hbox), attached, FALSE, FALSE, 0); + + gtk_box_pack_end (GTK_BOX (hbox), languagelist, FALSE, FALSE, 0); + + box = gtk_vbox_new (FALSE, 5); +gtk_box_pack_start (GTK_BOX (box), menubox,FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, FALSE, FALSE, 0); + + gtk_widget_show_all (box); + + gtk_window_set_default_size (GTK_WINDOW (window), 1200, 800); + gtk_window_set_title (GTK_WINDOW (window), "Sulekha"); + gtk_container_set_border_width (GTK_CONTAINER (window), 1); + g_signal_connect (G_OBJECT (window), "delete-event", + G_CALLBACK (gtk_main_quit), NULL); + gtk_container_add (GTK_CONTAINER (window), box); + + gtk_widget_show (window); + gtk_main (); + + return 0; +} diff --git a/input-methods/sulekha/src/sulekha.c~ b/input-methods/sulekha/src/sulekha.c~ new file mode 100644 index 0000000..c27d366 --- /dev/null +++ b/input-methods/sulekha/src/sulekha.c~ @@ -0,0 +1,380 @@ +/* sulekha.c + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include <gtk/gtk.h> +#include "../config.h" +#include "sulekhaspell.h" + +const char *langs[] = { "ml", "en_US", "de_DE", "ja_JP", NULL }; + +GtkWidget *window, *languagelist, *attached, *view; + + +static void +activate_action (GtkAction * action) +{ + const gchar *name = gtk_action_get_name (action); + const gchar *typename = G_OBJECT_TYPE_NAME (action); + + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (GTK_WINDOW (window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, + "You activated action: \"%s\" of type \"%s\"", + name, typename); + + /* Close dialog on user response */ + g_signal_connect (dialog, + "response", G_CALLBACK (gtk_widget_destroy), NULL); + + gtk_widget_show (dialog); +} + + +static void +activate_email (GtkAboutDialog *about, + const gchar *link, + gpointer data) +{ + g_print ("send mail to %s\n", link); +} + +static void +activate_url (GtkAboutDialog *about, + const gchar *link, + gpointer data) +{ + g_print ("show url %s\n", link); +} +static void +about (GtkAction * action, GtkWidget * window) +{ + GdkPixbuf *pixbuf, *transparent; + gchar *filename; + + const gchar *authors[] = { + "Santhosh Thottongal", + "Praveen Arimbrathodiyil", + NULL + }; + + const gchar *documentors[] = { + "Santhosh Thottongal", + "Praveen Arimbrathodiyil", + NULL + }; + + const gchar *license = + "This library is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU Library General Public License as\n" + "published by the Free Software Foundation; either version 2 of the\n" + "License, or (at your option) any later version.\n" + "\n" + "This library is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" + "Library General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU Library General Public\n" + "License along with the Gnome Library; see the file COPYING.LIB. If not,\n" + "write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" + "Boston, MA 02111-1307, USA.\n"; + + // gtk_about_dialog_set_email_hook (activate_email, NULL, NULL); + //gtk_about_dialog_set_url_hook (activate_url, NULL, NULL); + gtk_show_about_dialog (GTK_WINDOW (window), + "name", "Sulekha", + "version", PACKAGE_VERSION, + "copyright", + "(C) 2007-2008 Santhosh Thottingal, Praveen Arimbrathodiyil", + "license", license, "website", "http://smc.org.in", + "comments", "Intelligent Typing System", "authors", + authors, "documenters", documentors, "logo", + NULL, NULL); + + //g_object_unref (transparent); +} +static GtkActionEntry entries[] = { + { "FileMenu", NULL, "_File" }, /* name, stock id, label */ + { "EditMenu", NULL, "_Edit" }, /* name, stock id, label */ + { "OptionsMenu", NULL, "_Options" }, /* name, stock id, label */ + { "HelpMenu", NULL, "_Help" }, /* name, stock id, label */ + { "New", GTK_STOCK_NEW, /* name, stock id */ + "_New", "<control>N", /* label, accelerator */ + "Create a new file", /* tooltip */ + G_CALLBACK (activate_action) }, + { "Open", GTK_STOCK_OPEN, /* name, stock id */ + "_Open","<control>O", /* label, accelerator */ + "Open a file", /* tooltip */ + G_CALLBACK (activate_action ) }, + { "Save", GTK_STOCK_SAVE, /* name, stock id */ + "_Save","<control>S", /* label, accelerator */ + "Save current file", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SaveAs", GTK_STOCK_SAVE, /* name, stock id */ + "Save _As...", NULL, /* label, accelerator */ + "Save to a file", /* tooltip */ + G_CALLBACK (activate_action) }, + { "ClearSessionDictionary", NULL, /* name, stock id */ + "Clear Session Dictionary", NULL, /* label, accelerator */ + "Clear Session Dictionary", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SynchronizeDictionaries", NULL, /* name, stock id */ + "Synchronize Dictionaries", NULL, /* label, accelerator */ + "Synchronize Dictionaries", /* tooltip */ + G_CALLBACK (activate_action) }, + { "Quit", GTK_STOCK_QUIT, /* name, stock id */ + "_Quit", "<control>Q", /* label, accelerator */ + "Quit", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SelectAll", NULL, /* name, stock id */ + "Select _All", "<control>A", /* label, accelerator */ + "Select All", /* tooltip */ + G_CALLBACK (activate_action) }, + { "ClearAll", NULL, /* name, stock id */ + "Clear All", "<control>C", /* label, accelerator */ + "Clear All", /* tooltip */ + G_CALLBACK (activate_action) }, + { "PasePrimary", NULL, /* name, stock id */ + "Pase Primary", "<control>V", /* label, accelerator */ + "Pase Primary", /* tooltip */ + G_CALLBACK (activate_action) }, + { "SaveDictionariesonExit", NULL, /* name, stock id */ + "Save Dictionaries on Exit", "<control>V", /* label, accelerator */ + "Save Dictionaries on Exit", /* tooltip */ + G_CALLBACK (activate_action) }, + { "About", GTK_STOCK_ABOUT, /* name, stock id */ + "_About", "<control>B", /* label, accelerator */ + "About", /* tooltip */ + G_CALLBACK (about) }, + { "Logo", "demo-gtk-logo", /* name, stock id */ + NULL, NULL, /* label, accelerator */ + "GTK+", /* tooltip */ + G_CALLBACK (activate_action) }, + }; + static guint n_entries = G_N_ELEMENTS (entries); + + + static const gchar *ui_info = + "<ui>" + " <menubar name='MenuBar'>" + " <menu action='FileMenu'>" + " <menuitem action='New'/>" + " <menuitem action='Open'/>" + " <menuitem action='Save'/>" + " <menuitem action='SaveAs'/>" + " <separator/>" + " <menuitem action='ClearSessionDictionary'/>" + " <menuitem action='SynchronizeDictionaries'/>" + " <separator/>" + " <menuitem action='Quit'/>" + " </menu>" + + " <menu action='EditMenu'>" + " <menuitem action='SelectAll'/>" + " <menuitem action='ClearAll'/>" + " <menuitem action='PasePrimary'/>" + " </menu>" + " <menu action='OptionsMenu'>" + " <menuitem action='SaveDictionariesonExit'/>" + " </menu>" + " <menu action='HelpMenu'>" + " <menuitem action='About'/>" + " </menu>" + " </menubar>" + " <toolbar name='ToolBar'>" + " <toolitem action='Open'/>" + " <toolitem action='Quit'/>" + " <separator action='Sep1'/>" + " <toolitem action='Logo'/>" + " </toolbar>" + "</ui>"; + + +static void +report_sulekhaspell_error (const char *err) +{ + GtkWidget *dlg; + dlg = gtk_message_dialog_new (GTK_WINDOW (window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + "SulekhaSpell error: %s", err); + gtk_dialog_run (GTK_DIALOG (dlg)); + gtk_widget_destroy (dlg); +} + +static void +attach_cb () +{ + SulekhaSpell *spell; + GError *error = NULL; + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (attached))) + { + int lang; + + lang = gtk_option_menu_get_history (GTK_OPTION_MENU (languagelist)); + + spell = + sulekhaspell_new_attach (GTK_TEXT_VIEW (view), langs[lang], &error); + + if (spell == NULL) + { + report_sulekhaspell_error (error->message); + g_error_free (error); + } + } + else + { + sulekhaspell_detach (sulekhaspell_get_from_text_view + (GTK_TEXT_VIEW (view))); + } +} + +static void +setlang_cb () +{ + SulekhaSpell *spell; + int lang; + GError *error = NULL; + + spell = sulekhaspell_get_from_text_view (GTK_TEXT_VIEW (view)); + if (spell == NULL) + return; + + lang = gtk_option_menu_get_history (GTK_OPTION_MENU (languagelist)); + if (!sulekhaspell_set_language (spell, langs[lang], &error)) + { + report_sulekhaspell_error (error->message); + g_error_free (error); + } +} + +static void +build_languagelist () +{ + int i; + GtkWidget *menu, *mi; + + languagelist = gtk_option_menu_new (); + menu = gtk_menu_new (); + for (i = 0; langs[i] != NULL; i++) + { + mi = gtk_menu_item_new_with_label (langs[i]); + gtk_widget_show (mi); + g_signal_connect (G_OBJECT (mi), "activate", + G_CALLBACK (setlang_cb), NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + } + gtk_option_menu_set_menu (GTK_OPTION_MENU (languagelist), menu); +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *box, *hbox, *scroll; + GtkUIManager *ui; + GtkActionGroup *actions; + GtkWidget *menu; + GtkWidget *menuitem; + GtkWidget *sw; + GtkWidget *menubar; + GtkWidget *menubox; + GError *error = NULL; + + if (argc > 1) + { + printf ("%s-->%s\n", argv[1], + transliterate_ml (argv[1], 0, strlen (argv[1]))); + exit (0); + } + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + actions = gtk_action_group_new ("Actions"); + gtk_action_group_add_actions (actions, entries, n_entries, NULL); + ui = gtk_ui_manager_new (); + gtk_ui_manager_insert_action_group (ui, actions, 0); + g_object_unref (actions); + gtk_window_add_accel_group (GTK_WINDOW (window), + gtk_ui_manager_get_accel_group (ui)); + + + + if (!gtk_ui_manager_add_ui_from_string (ui, ui_info, -1, &error)) + { + g_message ("building menus failed: %s", error->message); + g_error_free (error); + } + menubox = gtk_vbox_new (FALSE, 0); +// gtk_container_add (GTK_CONTAINER (box), menubox); + gtk_widget_show (menubox); +// gtk_container_add (GTK_CONTAINER (box), box1); + + gtk_box_pack_start (GTK_BOX (menubox), gtk_ui_manager_get_widget (ui, "/MenuBar"), + FALSE, FALSE, 0); + + + + view = gtk_text_view_new (); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD); + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), + GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (scroll), view); + + build_languagelist (); + + hbox = gtk_hbox_new (FALSE, 5); + attached = gtk_toggle_button_new_with_label ("Attached"); + g_signal_connect (G_OBJECT (attached), "toggled", + G_CALLBACK (attach_cb), NULL); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (attached), TRUE); + gtk_box_pack_start (GTK_BOX (hbox), attached, FALSE, FALSE, 0); + + gtk_box_pack_end (GTK_BOX (hbox), languagelist, FALSE, FALSE, 0); + + box = gtk_vbox_new (FALSE, 5); +gtk_box_pack_start (GTK_BOX (box), menubox,FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, FALSE, FALSE, 0); + + gtk_widget_show_all (box); + + gtk_window_set_default_size (GTK_WINDOW (window), 1200, 800); + gtk_window_set_title (GTK_WINDOW (window), "Sulekha"); + gtk_container_set_border_width (GTK_CONTAINER (window), 1); + g_signal_connect (G_OBJECT (window), "delete-event", + G_CALLBACK (gtk_main_quit), NULL); + gtk_container_add (GTK_CONTAINER (window), box); + + gtk_widget_show (window); + gtk_main (); + + return 0; +} diff --git a/input-methods/sulekha/src/sulekhaspell.c b/input-methods/sulekha/src/sulekhaspell.c new file mode 100644 index 0000000..58032f5 --- /dev/null +++ b/input-methods/sulekha/src/sulekhaspell.c @@ -0,0 +1,859 @@ +/* sulekhaspell - a transliteratio - spell-checking addon for GTK's TextView widget + * Based on gtkspell by Evan Martin. + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Praveen Arimprathodiyil <pravi.a@gmail.com> + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include <gtk/gtk.h> +#include <libintl.h> +#include <locale.h> +#include "../config.h" +#include "sulekhaspell.h" +#include "transliteration.h" + +#define _(String) dgettext (PACKAGE, String) + +#define SULEKHASPELL_MISSPELLED_TAG "sulekhaspell-misspelled" + +#ifdef HAVE_ASPELL_H +#define USING_ASPELL +#include <aspell.h> +#elif defined HAVE_PSPELL_H +#define USING_PSPELL +#include <pspell/pspell.h> +#define AspellSpeller PspellManager +#define speller manager +#define aspell_speller_check pspell_manager_check +#define aspell_speller_add_to_session pspell_manager_add_to_session +#define aspell_speller_add_to_personal pspell_manager_add_to_personal +#define aspell_speller_save_all_word_lists pspell_manager_save_all_word_lists +#define aspell_speller_store_replacement pspell_manager_store_replacement +#define AspellWordList PspellWordList +#define AspellStringEnumeration PspellStringEmulation +#define aspell_speller_suggest pspell_manager_suggest +#define aspell_word_list_elements pspell_word_list_elements +#define aspell_string_enumeration_next pspell_string_emulation_next +#define delete_aspell_string_enumeration delete_pspell_string_emulation +#define AspellConfig PspellConfig +#define AspellCanHaveError PspellCanHaveError +#define new_aspell_config new_pspell_config +#define aspell_config_replace pspell_config_replace +#define new_aspell_speller new_pspell_manager +#define delete_aspell_config delete_pspell_config +#define aspell_error_message pspell_error_message +#define delete_aspell_speller delete_pspell_manager +#define to_aspell_speller to_pspell_manager +#define aspell_error_number pspell_error_number +#define aspell pspell +#endif + +const int debug = 0; +const int quiet = 0; + +struct _SulekhaSpell +{ + GtkTextView *view; + GtkTextTag *tag_highlight; + GtkTextMark *mark_insert_start; + GtkTextMark *mark_insert_end; + gboolean deferred_check; + AspellSpeller *speller; + GtkTextMark *mark_click; +}; + +static void sulekhaspell_free (SulekhaSpell * spell); + +#define SULEKHASPELL_OBJECT_KEY "sulekhaspell" + +GQuark +sulekhaspell_error_quark (void) +{ + static GQuark q = 0; + if (q == 0) + q = g_quark_from_static_string ("sulekhaspell-error-quark"); + return q; +} + +static gboolean +sulekhaspell_text_iter_forward_word_end (GtkTextIter * i) +{ + GtkTextIter iter; + +/* heuristic: + * if we're on an singlequote/apostrophe and + * if the next letter is alphanumeric, + * this is an apostrophe. */ + + if (!gtk_text_iter_forward_word_end (i)) + return FALSE; + + if (gtk_text_iter_get_char (i) != '\'') + return TRUE; + + iter = *i; + if (gtk_text_iter_forward_char (&iter)) + { + if (g_unichar_isalpha (gtk_text_iter_get_char (&iter))) + { + return (gtk_text_iter_forward_word_end (i)); + } + } + + return TRUE; +} + +static gboolean +sulekhaspell_text_iter_backward_word_start (GtkTextIter * i) +{ + GtkTextIter iter; + + if (!gtk_text_iter_backward_word_start (i)) + return FALSE; + + iter = *i; + if (gtk_text_iter_backward_char (&iter)) + { + if (gtk_text_iter_get_char (&iter) == '\'') + { + if (gtk_text_iter_backward_char (&iter)) + { + if (g_unichar_isalpha (gtk_text_iter_get_char (&iter))) + { + return (gtk_text_iter_backward_word_start (i)); + } + } + } + } + + return TRUE; +} + +#define gtk_text_iter_backward_word_start sulekhaspell_text_iter_backward_word_start +#define gtk_text_iter_forward_word_end sulekhaspell_text_iter_forward_word_end + +static void +check_word (SulekhaSpell * spell, GtkTextBuffer * buffer, + GtkTextIter * start, GtkTextIter * end) +{ + char *text; + char *oldword; + text = gtk_text_buffer_get_text (buffer, start, end, FALSE); + if (debug) + g_print ("checking: %s\n", text); + g_print ("[santhosh]checking: %s\n", text); + text = transliterate_ml (text, 0, strlen (text)); + g_print ("[santhosh]After transliteration checking: %s\n", text); + if (g_unichar_isdigit (*text) == FALSE) /* don't check numbers */ + if (aspell_speller_check (spell->speller, text, -1) == FALSE) + gtk_text_buffer_apply_tag (buffer, spell->tag_highlight, start, end); + g_free (text); +} + +static void +print_iter (char *name, GtkTextIter * iter) +{ + g_print ("%1s[%d%c%c%c] ", name, gtk_text_iter_get_offset (iter), + gtk_text_iter_starts_word (iter) ? 's' : ' ', + gtk_text_iter_inside_word (iter) ? 'i' : ' ', + gtk_text_iter_ends_word (iter) ? 'e' : ' '); +} + +static void +check_range (SulekhaSpell * spell, GtkTextBuffer * buffer, + GtkTextIter start, GtkTextIter end, gboolean force_all) +{ + /* we need to "split" on word boundaries. + * luckily, pango knows what "words" are + * so we don't have to figure it out. */ + + GtkTextIter wstart, wend, cursor, precursor; + gboolean inword, highlight; + if (debug) + { + g_print ("check_range: "); + print_iter ("s", &start); + print_iter ("e", &end); + g_print (" -> "); + } + + + + if (gtk_text_iter_inside_word (&end)) + gtk_text_iter_forward_word_end (&end); + if (!gtk_text_iter_starts_word (&start)) + { + if (gtk_text_iter_inside_word (&start) || + gtk_text_iter_ends_word (&start)) + { + gtk_text_iter_backward_word_start (&start); + } + else + { + /* if we're neither at the beginning nor inside a word, + * me must be in some spaces. + * skip forward to the beginning of the next word. */ + //gtk_text_buffer_remove_tag(buffer, tag_highlight, &start, &end); + if (gtk_text_iter_forward_word_end (&start)) + gtk_text_iter_backward_word_start (&start); + } + } + gtk_text_buffer_get_iter_at_mark (buffer, &cursor, + gtk_text_buffer_get_insert (buffer)); + + precursor = cursor; + gtk_text_iter_backward_char (&precursor); + highlight = gtk_text_iter_has_tag (&cursor, spell->tag_highlight) || + gtk_text_iter_has_tag (&precursor, spell->tag_highlight); + + gtk_text_buffer_remove_tag (buffer, spell->tag_highlight, &start, &end); + + /* Fix a corner case when replacement occurs at beginning of buffer: + * An iter at offset 0 seems to always be inside a word, + * even if it's not. Possibly a pango bug. + */ + if (gtk_text_iter_get_offset (&start) == 0) + { + gtk_text_iter_forward_word_end (&start); + gtk_text_iter_backward_word_start (&start); + } + + if (debug) + { + print_iter ("s", &start); + print_iter ("e", &end); + g_print ("\n"); + } + + wstart = start; + while (gtk_text_iter_compare (&wstart, &end) < 0) + { + /* move wend to the end of the current word. */ + wend = wstart; + gtk_text_iter_forward_word_end (&wend); + + inword = (gtk_text_iter_compare (&wstart, &cursor) < 0) && + (gtk_text_iter_compare (&cursor, &wend) <= 0); + + if (inword && !force_all) + { + /* this word is being actively edited, + * only check if it's already highligted, + * otherwise defer this check until later. */ + if (highlight) + check_word (spell, buffer, &wstart, &wend); + else + spell->deferred_check = TRUE; + } + else + { + check_word (spell, buffer, &wstart, &wend); + spell->deferred_check = FALSE; + } + + /* now move wend to the beginning of the next word, */ + gtk_text_iter_forward_word_end (&wend); + gtk_text_iter_backward_word_start (&wend); + /* make sure we've actually advanced + * (we don't advance in some corner cases), */ + if (gtk_text_iter_equal (&wstart, &wend)) + break; /* we're done in these cases.. */ + /* and then pick this as the new next word beginning. */ + wstart = wend; + } +} + +static void +check_deferred_range (SulekhaSpell * spell, GtkTextBuffer * buffer, + gboolean force_all) +{ + GtkTextIter start, end; + gtk_text_buffer_get_iter_at_mark (buffer, &start, spell->mark_insert_start); + gtk_text_buffer_get_iter_at_mark (buffer, &end, spell->mark_insert_end); + check_range (spell, buffer, start, end, force_all); +} + +/* insertion works like this: + * - before the text is inserted, we mark the position in the buffer. + * - after the text is inserted, we see where our mark is and use that and + * the current position to check the entire range of inserted text. + * + * this may be overkill for the common case (inserting one character). */ + +static void +insert_text_before (GtkTextBuffer * buffer, GtkTextIter * iter, + gchar * text, gint len, SulekhaSpell * spell) +{ + gtk_text_buffer_move_mark (buffer, spell->mark_insert_start, iter); +} + +static void +insert_text_after (GtkTextBuffer * buffer, GtkTextIter * iter, + gchar * text, gint len, SulekhaSpell * spell) +{ + GtkTextIter start; + + if (debug) + g_print ("insert\n"); + + /* we need to check a range of text. */ + gtk_text_buffer_get_iter_at_mark (buffer, &start, spell->mark_insert_start); + check_range (spell, buffer, start, *iter, FALSE); + + gtk_text_buffer_move_mark (buffer, spell->mark_insert_end, iter); +} + +/* deleting is more simple: we're given the range of deleted text. + * after deletion, the start and end iters should be at the same position + * (because all of the text between them was deleted!). + * this means we only really check the words immediately bounding the + * deletion. + */ + +static void +delete_range_after (GtkTextBuffer * buffer, + GtkTextIter * start, GtkTextIter * end, + SulekhaSpell * spell) +{ + if (debug) + g_print ("delete\n"); + check_range (spell, buffer, *start, *end, FALSE); +} + +static void +mark_set (GtkTextBuffer * buffer, GtkTextIter * iter, + GtkTextMark * mark, SulekhaSpell * spell) +{ + /* if the cursor has moved and there is a deferred check so handle it now */ + if ((mark == gtk_text_buffer_get_insert (buffer)) && spell->deferred_check) + check_deferred_range (spell, buffer, FALSE); +} + +static void +get_word_extents_from_mark (GtkTextBuffer * buffer, + GtkTextIter * start, GtkTextIter * end, + GtkTextMark * mark) +{ + gtk_text_buffer_get_iter_at_mark (buffer, start, mark); + if (!gtk_text_iter_starts_word (start)) + gtk_text_iter_backward_word_start (start); + *end = *start; + if (gtk_text_iter_inside_word (end)) + gtk_text_iter_forward_word_end (end); +} + +static void +add_to_dictionary (GtkWidget * menuitem, SulekhaSpell * spell) +{ + char *word; + GtkTextIter start, end; + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer (spell->view); + + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + word = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + + aspell_speller_add_to_personal (spell->speller, word, strlen (word)); + aspell_speller_save_all_word_lists (spell->speller); + + sulekhaspell_recheck_all (spell); + + g_free (word); +} + +static void +ignore_all (GtkWidget * menuitem, SulekhaSpell * spell) +{ + char *word; + GtkTextIter start, end; + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer (spell->view); + + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + word = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + + aspell_speller_add_to_session (spell->speller, word, strlen (word)); + + sulekhaspell_recheck_all (spell); + + g_free (word); +} + +static void +replace_word (GtkWidget * menuitem, SulekhaSpell * spell) +{ + char *oldword; + const char *newword; + GtkTextIter start, end; + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer (spell->view); + + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + oldword = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + newword = gtk_label_get_text (GTK_LABEL (GTK_BIN (menuitem)->child)); + + if (debug) + { + g_print ("old word: '%s'\n", oldword); + print_iter ("s", &start); + print_iter ("e", &end); + g_print ("\nnew word: '%s'\n", newword); + } + + gtk_text_buffer_delete (buffer, &start, &end); + gtk_text_buffer_insert (buffer, &start, newword, -1); + + aspell_speller_store_replacement (spell->speller, + oldword, strlen (oldword), + newword, strlen (newword)); + + g_free (oldword); +} + +GtkWidget * +build_suggestion_menu (SulekhaSpell * spell, GtkTextBuffer * buffer, + const char *word) +{ + const char *suggestion; + GtkWidget *topmenu, *menu; + GtkWidget *mi; + GtkWidget *hbox; + int count = 0; + void *spelldata; + const AspellWordList *suggestions; + AspellStringEnumeration *elements; + char *label; + //santhosh + word = transliterate_ml (word, 0, strlen (word)); + + //end santhosh + topmenu = menu = gtk_menu_new (); + + suggestions = aspell_speller_suggest (spell->speller, word, -1); + elements = aspell_word_list_elements (suggestions); + + suggestion = aspell_string_enumeration_next (elements); + if (suggestion == NULL) + { + /* no suggestions. put something in the menu anyway... */ + GtkWidget *label; + label = gtk_label_new (""); + gtk_label_set_markup (GTK_LABEL (label), _("<i>(no suggestions)</i>")); + + mi = gtk_menu_item_new (); + gtk_container_add (GTK_CONTAINER (mi), label); + gtk_widget_show_all (mi); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mi); + } + else + { + /* build a set of menus with suggestions. */ + while (suggestion != NULL) + { + if (count == 10) + { + mi = gtk_menu_item_new (); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + + mi = gtk_menu_item_new_with_label (_("More...")); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + + menu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), menu); + count = 0; + } + mi = gtk_menu_item_new_with_label (suggestion); + g_signal_connect (G_OBJECT (mi), "activate", + G_CALLBACK (replace_word), spell); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + count++; + suggestion = aspell_string_enumeration_next (elements); + } + } + + delete_aspell_string_enumeration (elements); + + /* Separator */ + mi = gtk_menu_item_new (); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (topmenu), mi); + + /* + Add to Dictionary */ + label = g_strdup_printf (_("Add \"%s\" to Dictionary"), word); + mi = gtk_image_menu_item_new_with_label (label); + g_free (label); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), + gtk_image_new_from_stock (GTK_STOCK_ADD, + GTK_ICON_SIZE_MENU)); + g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (add_to_dictionary), + spell); + gtk_widget_show_all (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (topmenu), mi); + + /* - Ignore All */ + mi = gtk_image_menu_item_new_with_label (_("Ignore All")); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), + gtk_image_new_from_stock (GTK_STOCK_REMOVE, + GTK_ICON_SIZE_MENU)); + g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (ignore_all), + spell); + gtk_widget_show_all (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (topmenu), mi); + + return topmenu; +} + +static void +populate_popup (GtkTextView * textview, GtkMenu * menu, SulekhaSpell * spell) +{ + GtkWidget *img, *mi; + GtkTextBuffer *buffer = gtk_text_view_get_buffer (textview); + GtkTextIter start, end; + char *word; + + /* we need to figure out if they picked a misspelled word. */ + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + + /* if our highlight algorithm ever messes up, + * this isn't correct, either. */ + if (!gtk_text_iter_has_tag (&start, spell->tag_highlight)) + return; /* word wasn't misspelled. */ + + /* menu separator comes first. */ + mi = gtk_menu_item_new (); + gtk_widget_show (mi); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mi); + + /* then, on top of it, the suggestions menu. */ + img = gtk_image_new_from_stock (GTK_STOCK_SPELL_CHECK, GTK_ICON_SIZE_MENU); + mi = gtk_image_menu_item_new_with_label (_("Spelling Suggestions")); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), img); + + word = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), + build_suggestion_menu (spell, buffer, word)); + + g_free (word); + + gtk_widget_show_all (mi); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mi); +} + +/* when the user right-clicks on a word, they want to check that word. + * here, we do NOT move the cursor to the location of the clicked-upon word + * since that prevents the use of edit functions on the context menu. */ +static gboolean +button_press_event (GtkTextView * view, GdkEventButton * event, + SulekhaSpell * spell) +{ + if (event->button == 3) + { + gint x, y; + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer (view); + + /* handle deferred check if it exists */ + if (spell->deferred_check) + check_deferred_range (spell, buffer, TRUE); + + gtk_text_view_window_to_buffer_coords (view, + GTK_TEXT_WINDOW_TEXT, + event->x, event->y, &x, &y); + gtk_text_view_get_iter_at_location (view, &iter, x, y); + gtk_text_buffer_move_mark (buffer, spell->mark_click, &iter); + } + return FALSE; /* false: let gtk process this event, too. + we don't want to eat any events. */ +} + +/* This event occurs when the popup menu is requested through a key-binding + * (Menu Key or <shift>+F10 by default). In this case we want to set + * spell->mark_click to the cursor position. */ +static gboolean +popup_menu_event (GtkTextView * view, SulekhaSpell * spell) +{ + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer (view); + + gtk_text_buffer_get_iter_at_mark (buffer, &iter, + gtk_text_buffer_get_insert (buffer)); + gtk_text_buffer_move_mark (buffer, spell->mark_click, &iter); + return FALSE; /* false: let gtk process this event, too. */ +} + +static gboolean +sulekhaspell_set_language_internal (SulekhaSpell * spell, const gchar * lang, + GError ** error) +{ + AspellConfig *config; + AspellCanHaveError *err; + AspellSpeller *speller; + + if (lang == NULL) + { + lang = g_getenv ("LANG"); + if (lang) + { + if (g_strncasecmp (lang, "C", 1) == 0) + lang = NULL; + else if (lang[0] == 0) + lang = NULL; + } + } + + config = new_aspell_config (); + if (lang) + aspell_config_replace (config, "language-tag", lang); + aspell_config_replace (config, "encoding", "utf-8"); + err = new_aspell_speller (config); + delete_aspell_config (config); + + if (aspell_error_number (err) != 0) + { +#ifdef USING_ASPELL + g_set_error (error, SULEKHASPELL_ERROR, SULEKHASPELL_ERROR_BACKEND, + "aspell: %s", aspell_error_message (err)); +#elif defined USING_PSPELL + g_set_error (error, SULEKHASPELL_ERROR, SULEKHASPELL_ERROR_BACKEND, + "pspell: %s", aspell_error_message (err)); +#endif + return FALSE; + } + if (spell->speller) + delete_aspell_speller (spell->speller); + spell->speller = to_aspell_speller (err); + + return TRUE; +} + +/** + * sulekhaspell_set_language: + * @spell: The #SulekhaSpell object. + * @lang: The language to use, in a form pspell understands (it appears to + * be a locale specifier?). + * @error: Return location for error. + * + * Set the language on @spell to @lang, possibily returning an error in + * @error. + * + * Returns: FALSE if there was an error. + */ +gboolean +sulekhaspell_set_language (SulekhaSpell * spell, const gchar * lang, + GError ** error) +{ + gboolean ret; + + if (error) + g_return_val_if_fail (*error == NULL, FALSE); + + ret = sulekhaspell_set_language_internal (spell, lang, error); + if (ret) + sulekhaspell_recheck_all (spell); + + return ret; +} + +/** + * sulekhaspell_recheck_all: + * @spell: The #SulekhaSpell object. + * + * Recheck the spelling in the entire buffer. + */ +void +sulekhaspell_recheck_all (SulekhaSpell * spell) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + + buffer = gtk_text_view_get_buffer (spell->view); + + gtk_text_buffer_get_bounds (buffer, &start, &end); + + check_range (spell, buffer, start, end, TRUE); +} + +/** + * sulekhaspell_new_attach: + * @view: The #GtkTextView to attach to. + * @lang: The language to use, in a form pspell understands (it appears to + * be a locale specifier?). + * @error: Return location for error. + * + * Create a new #SulekhaSpell object attached to @view with language @lang. + * + * Returns: a new #SulekhaSpell object, or %NULL on error. + */ +SulekhaSpell * +sulekhaspell_new_attach (GtkTextView * view, const gchar * lang, + GError ** error) +{ + GtkTextBuffer *buffer; + GtkTextTagTable *tagtable; + GtkTextIter start, end; + + SulekhaSpell *spell; + +#ifdef ENABLE_NLS + bindtextdomain (PACKAGE, LOCALEDIR); + bind_textdomain_codeset (PACKAGE, "UTF-8"); +#endif + + if (error) + g_return_val_if_fail (*error == NULL, NULL); + + spell = g_object_get_data (G_OBJECT (view), SULEKHASPELL_OBJECT_KEY); + g_assert (spell == NULL); + + /* attach to the widget */ + spell = g_new0 (SulekhaSpell, 1); + spell->view = view; + if (!sulekhaspell_set_language_internal (spell, lang, error)) + { + g_free (spell); + return NULL; + } + g_object_set_data (G_OBJECT (view), SULEKHASPELL_OBJECT_KEY, spell); + + g_signal_connect_swapped (G_OBJECT (view), "destroy", + G_CALLBACK (sulekhaspell_free), spell); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (button_press_event), spell); + g_signal_connect (G_OBJECT (view), "populate-popup", + G_CALLBACK (populate_popup), spell); + g_signal_connect (G_OBJECT (view), "popup-menu", + G_CALLBACK (popup_menu_event), spell); + + buffer = gtk_text_view_get_buffer (view); + + g_signal_connect (G_OBJECT (buffer), + "insert-text", G_CALLBACK (insert_text_before), spell); + g_signal_connect_after (G_OBJECT (buffer), + "insert-text", + G_CALLBACK (insert_text_after), spell); + g_signal_connect_after (G_OBJECT (buffer), + "delete-range", + G_CALLBACK (delete_range_after), spell); + g_signal_connect (G_OBJECT (buffer), + "mark-set", G_CALLBACK (mark_set), spell); + + tagtable = gtk_text_buffer_get_tag_table (buffer); + spell->tag_highlight = + gtk_text_tag_table_lookup (tagtable, SULEKHASPELL_MISSPELLED_TAG); + + if (spell->tag_highlight == NULL) + { + spell->tag_highlight = gtk_text_buffer_create_tag (buffer, + SULEKHASPELL_MISSPELLED_TAG, +#ifdef HAVE_PANGO_UNDERLINE_ERROR + "underline", + PANGO_UNDERLINE_ERROR, +#else + "foreground", "red", + "underline", + PANGO_UNDERLINE_SINGLE, +#endif + NULL); + } + + /* we create the mark here, but we don't use it until text is + * inserted, so we don't really care where iter points. */ + gtk_text_buffer_get_bounds (buffer, &start, &end); + spell->mark_insert_start = gtk_text_buffer_create_mark (buffer, + "sulekhaspell-insert-start", + &start, TRUE); + spell->mark_insert_end = gtk_text_buffer_create_mark (buffer, + "sulekhaspell-insert-end", + &start, TRUE); + spell->mark_click = gtk_text_buffer_create_mark (buffer, + "sulekhaspell-click", + &start, TRUE); + + spell->deferred_check = FALSE; + + /* now check the entire text buffer. */ + sulekhaspell_recheck_all (spell); + return spell; +} + +static void +sulekhaspell_free (SulekhaSpell * spell) +{ + GtkTextBuffer *buffer; + GtkTextTagTable *table; + GtkTextIter start, end; + + buffer = gtk_text_view_get_buffer (spell->view); + table = gtk_text_buffer_get_tag_table (buffer); + + gtk_text_buffer_get_bounds (buffer, &start, &end); + gtk_text_buffer_remove_tag (buffer, spell->tag_highlight, &start, &end); + + gtk_text_buffer_delete_mark (buffer, spell->mark_insert_start); + gtk_text_buffer_delete_mark (buffer, spell->mark_insert_end); + gtk_text_buffer_delete_mark (buffer, spell->mark_click); + + delete_aspell_speller (spell->speller); + + g_signal_handlers_disconnect_matched (spell->view, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, spell); + g_signal_handlers_disconnect_matched (buffer, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, spell); + g_free (spell); +} + +/** + * sulekhaspell_get_from_text_view: + * @view: A #GtkTextView. + * + * Retrieves the #SulekhaSpell object attached to a text view. + * + * Returns: the #SulekhaSpell object, or %NULL if there is no #SulekhaSpell + * attached to @view. + */ +SulekhaSpell * +sulekhaspell_get_from_text_view (GtkTextView * view) +{ + return g_object_get_data (G_OBJECT (view), SULEKHASPELL_OBJECT_KEY); +} + +/** + * sulekhaspell_detach: + * @spell: A #SulekhaSpell. + * + * Detaches this #SulekhaSpell from its text view. Use + * sulekhaspell_get_from_text_view() to retrieve a SulekhaSpell from a + * #GtkTextView. + */ +void +sulekhaspell_detach (SulekhaSpell * spell) +{ + g_return_if_fail (spell != NULL); + + g_object_set_data (G_OBJECT (spell->view), SULEKHASPELL_OBJECT_KEY, NULL); + sulekhaspell_free (spell); +} diff --git a/input-methods/sulekha/src/sulekhaspell.c~ b/input-methods/sulekha/src/sulekhaspell.c~ new file mode 100644 index 0000000..143d989 --- /dev/null +++ b/input-methods/sulekha/src/sulekhaspell.c~ @@ -0,0 +1,842 @@ +/* sulekhaspell - a transliteratio - spell-checking addon for GTK's TextView widget + * Copyright (c) 2007-2008 Santhosh Thottingal + * Based on gtkspell by Evan Martin. + */ + + +#include <gtk/gtk.h> +#include <libintl.h> +#include <locale.h> +#include "../config.h" +#include "sulekhaspell.h" +#include "transliteration.h" + +#define _(String) dgettext (PACKAGE, String) + +#define SULEKHASPELL_MISSPELLED_TAG "sulekhaspell-misspelled" + +#ifdef HAVE_ASPELL_H +#define USING_ASPELL +#include <aspell.h> +#elif defined HAVE_PSPELL_H +#define USING_PSPELL +#include <pspell/pspell.h> +#define AspellSpeller PspellManager +#define speller manager +#define aspell_speller_check pspell_manager_check +#define aspell_speller_add_to_session pspell_manager_add_to_session +#define aspell_speller_add_to_personal pspell_manager_add_to_personal +#define aspell_speller_save_all_word_lists pspell_manager_save_all_word_lists +#define aspell_speller_store_replacement pspell_manager_store_replacement +#define AspellWordList PspellWordList +#define AspellStringEnumeration PspellStringEmulation +#define aspell_speller_suggest pspell_manager_suggest +#define aspell_word_list_elements pspell_word_list_elements +#define aspell_string_enumeration_next pspell_string_emulation_next +#define delete_aspell_string_enumeration delete_pspell_string_emulation +#define AspellConfig PspellConfig +#define AspellCanHaveError PspellCanHaveError +#define new_aspell_config new_pspell_config +#define aspell_config_replace pspell_config_replace +#define new_aspell_speller new_pspell_manager +#define delete_aspell_config delete_pspell_config +#define aspell_error_message pspell_error_message +#define delete_aspell_speller delete_pspell_manager +#define to_aspell_speller to_pspell_manager +#define aspell_error_number pspell_error_number +#define aspell pspell +#endif + +const int debug = 0; +const int quiet = 0; + +struct _SulekhaSpell +{ + GtkTextView *view; + GtkTextTag *tag_highlight; + GtkTextMark *mark_insert_start; + GtkTextMark *mark_insert_end; + gboolean deferred_check; + AspellSpeller *speller; + GtkTextMark *mark_click; +}; + +static void sulekhaspell_free (SulekhaSpell * spell); + +#define SULEKHASPELL_OBJECT_KEY "sulekhaspell" + +GQuark +sulekhaspell_error_quark (void) +{ + static GQuark q = 0; + if (q == 0) + q = g_quark_from_static_string ("sulekhaspell-error-quark"); + return q; +} + +static gboolean +sulekhaspell_text_iter_forward_word_end (GtkTextIter * i) +{ + GtkTextIter iter; + +/* heuristic: + * if we're on an singlequote/apostrophe and + * if the next letter is alphanumeric, + * this is an apostrophe. */ + + if (!gtk_text_iter_forward_word_end (i)) + return FALSE; + + if (gtk_text_iter_get_char (i) != '\'') + return TRUE; + + iter = *i; + if (gtk_text_iter_forward_char (&iter)) + { + if (g_unichar_isalpha (gtk_text_iter_get_char (&iter))) + { + return (gtk_text_iter_forward_word_end (i)); + } + } + + return TRUE; +} + +static gboolean +sulekhaspell_text_iter_backward_word_start (GtkTextIter * i) +{ + GtkTextIter iter; + + if (!gtk_text_iter_backward_word_start (i)) + return FALSE; + + iter = *i; + if (gtk_text_iter_backward_char (&iter)) + { + if (gtk_text_iter_get_char (&iter) == '\'') + { + if (gtk_text_iter_backward_char (&iter)) + { + if (g_unichar_isalpha (gtk_text_iter_get_char (&iter))) + { + return (gtk_text_iter_backward_word_start (i)); + } + } + } + } + + return TRUE; +} + +#define gtk_text_iter_backward_word_start sulekhaspell_text_iter_backward_word_start +#define gtk_text_iter_forward_word_end sulekhaspell_text_iter_forward_word_end + +static void +check_word (SulekhaSpell * spell, GtkTextBuffer * buffer, + GtkTextIter * start, GtkTextIter * end) +{ + char *text; + char *oldword; + text = gtk_text_buffer_get_text (buffer, start, end, FALSE); + if (debug) + g_print ("checking: %s\n", text); + g_print ("[santhosh]checking: %s\n", text); + text = transliterate_ml (text, 0, strlen (text)); + g_print ("[santhosh]After transliteration checking: %s\n", text); + if (g_unichar_isdigit (*text) == FALSE) /* don't check numbers */ + if (aspell_speller_check (spell->speller, text, -1) == FALSE) + gtk_text_buffer_apply_tag (buffer, spell->tag_highlight, start, end); + g_free (text); +} + +static void +print_iter (char *name, GtkTextIter * iter) +{ + g_print ("%1s[%d%c%c%c] ", name, gtk_text_iter_get_offset (iter), + gtk_text_iter_starts_word (iter) ? 's' : ' ', + gtk_text_iter_inside_word (iter) ? 'i' : ' ', + gtk_text_iter_ends_word (iter) ? 'e' : ' '); +} + +static void +check_range (SulekhaSpell * spell, GtkTextBuffer * buffer, + GtkTextIter start, GtkTextIter end, gboolean force_all) +{ + /* we need to "split" on word boundaries. + * luckily, pango knows what "words" are + * so we don't have to figure it out. */ + + GtkTextIter wstart, wend, cursor, precursor; + gboolean inword, highlight; + if (debug) + { + g_print ("check_range: "); + print_iter ("s", &start); + print_iter ("e", &end); + g_print (" -> "); + } + + + + if (gtk_text_iter_inside_word (&end)) + gtk_text_iter_forward_word_end (&end); + if (!gtk_text_iter_starts_word (&start)) + { + if (gtk_text_iter_inside_word (&start) || + gtk_text_iter_ends_word (&start)) + { + gtk_text_iter_backward_word_start (&start); + } + else + { + /* if we're neither at the beginning nor inside a word, + * me must be in some spaces. + * skip forward to the beginning of the next word. */ + //gtk_text_buffer_remove_tag(buffer, tag_highlight, &start, &end); + if (gtk_text_iter_forward_word_end (&start)) + gtk_text_iter_backward_word_start (&start); + } + } + gtk_text_buffer_get_iter_at_mark (buffer, &cursor, + gtk_text_buffer_get_insert (buffer)); + + precursor = cursor; + gtk_text_iter_backward_char (&precursor); + highlight = gtk_text_iter_has_tag (&cursor, spell->tag_highlight) || + gtk_text_iter_has_tag (&precursor, spell->tag_highlight); + + gtk_text_buffer_remove_tag (buffer, spell->tag_highlight, &start, &end); + + /* Fix a corner case when replacement occurs at beginning of buffer: + * An iter at offset 0 seems to always be inside a word, + * even if it's not. Possibly a pango bug. + */ + if (gtk_text_iter_get_offset (&start) == 0) + { + gtk_text_iter_forward_word_end (&start); + gtk_text_iter_backward_word_start (&start); + } + + if (debug) + { + print_iter ("s", &start); + print_iter ("e", &end); + g_print ("\n"); + } + + wstart = start; + while (gtk_text_iter_compare (&wstart, &end) < 0) + { + /* move wend to the end of the current word. */ + wend = wstart; + gtk_text_iter_forward_word_end (&wend); + + inword = (gtk_text_iter_compare (&wstart, &cursor) < 0) && + (gtk_text_iter_compare (&cursor, &wend) <= 0); + + if (inword && !force_all) + { + /* this word is being actively edited, + * only check if it's already highligted, + * otherwise defer this check until later. */ + if (highlight) + check_word (spell, buffer, &wstart, &wend); + else + spell->deferred_check = TRUE; + } + else + { + check_word (spell, buffer, &wstart, &wend); + spell->deferred_check = FALSE; + } + + /* now move wend to the beginning of the next word, */ + gtk_text_iter_forward_word_end (&wend); + gtk_text_iter_backward_word_start (&wend); + /* make sure we've actually advanced + * (we don't advance in some corner cases), */ + if (gtk_text_iter_equal (&wstart, &wend)) + break; /* we're done in these cases.. */ + /* and then pick this as the new next word beginning. */ + wstart = wend; + } +} + +static void +check_deferred_range (SulekhaSpell * spell, GtkTextBuffer * buffer, + gboolean force_all) +{ + GtkTextIter start, end; + gtk_text_buffer_get_iter_at_mark (buffer, &start, spell->mark_insert_start); + gtk_text_buffer_get_iter_at_mark (buffer, &end, spell->mark_insert_end); + check_range (spell, buffer, start, end, force_all); +} + +/* insertion works like this: + * - before the text is inserted, we mark the position in the buffer. + * - after the text is inserted, we see where our mark is and use that and + * the current position to check the entire range of inserted text. + * + * this may be overkill for the common case (inserting one character). */ + +static void +insert_text_before (GtkTextBuffer * buffer, GtkTextIter * iter, + gchar * text, gint len, SulekhaSpell * spell) +{ + gtk_text_buffer_move_mark (buffer, spell->mark_insert_start, iter); +} + +static void +insert_text_after (GtkTextBuffer * buffer, GtkTextIter * iter, + gchar * text, gint len, SulekhaSpell * spell) +{ + GtkTextIter start; + + if (debug) + g_print ("insert\n"); + + /* we need to check a range of text. */ + gtk_text_buffer_get_iter_at_mark (buffer, &start, spell->mark_insert_start); + check_range (spell, buffer, start, *iter, FALSE); + + gtk_text_buffer_move_mark (buffer, spell->mark_insert_end, iter); +} + +/* deleting is more simple: we're given the range of deleted text. + * after deletion, the start and end iters should be at the same position + * (because all of the text between them was deleted!). + * this means we only really check the words immediately bounding the + * deletion. + */ + +static void +delete_range_after (GtkTextBuffer * buffer, + GtkTextIter * start, GtkTextIter * end, + SulekhaSpell * spell) +{ + if (debug) + g_print ("delete\n"); + check_range (spell, buffer, *start, *end, FALSE); +} + +static void +mark_set (GtkTextBuffer * buffer, GtkTextIter * iter, + GtkTextMark * mark, SulekhaSpell * spell) +{ + /* if the cursor has moved and there is a deferred check so handle it now */ + if ((mark == gtk_text_buffer_get_insert (buffer)) && spell->deferred_check) + check_deferred_range (spell, buffer, FALSE); +} + +static void +get_word_extents_from_mark (GtkTextBuffer * buffer, + GtkTextIter * start, GtkTextIter * end, + GtkTextMark * mark) +{ + gtk_text_buffer_get_iter_at_mark (buffer, start, mark); + if (!gtk_text_iter_starts_word (start)) + gtk_text_iter_backward_word_start (start); + *end = *start; + if (gtk_text_iter_inside_word (end)) + gtk_text_iter_forward_word_end (end); +} + +static void +add_to_dictionary (GtkWidget * menuitem, SulekhaSpell * spell) +{ + char *word; + GtkTextIter start, end; + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer (spell->view); + + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + word = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + + aspell_speller_add_to_personal (spell->speller, word, strlen (word)); + aspell_speller_save_all_word_lists (spell->speller); + + sulekhaspell_recheck_all (spell); + + g_free (word); +} + +static void +ignore_all (GtkWidget * menuitem, SulekhaSpell * spell) +{ + char *word; + GtkTextIter start, end; + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer (spell->view); + + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + word = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + + aspell_speller_add_to_session (spell->speller, word, strlen (word)); + + sulekhaspell_recheck_all (spell); + + g_free (word); +} + +static void +replace_word (GtkWidget * menuitem, SulekhaSpell * spell) +{ + char *oldword; + const char *newword; + GtkTextIter start, end; + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer (spell->view); + + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + oldword = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + newword = gtk_label_get_text (GTK_LABEL (GTK_BIN (menuitem)->child)); + + if (debug) + { + g_print ("old word: '%s'\n", oldword); + print_iter ("s", &start); + print_iter ("e", &end); + g_print ("\nnew word: '%s'\n", newword); + } + + gtk_text_buffer_delete (buffer, &start, &end); + gtk_text_buffer_insert (buffer, &start, newword, -1); + + aspell_speller_store_replacement (spell->speller, + oldword, strlen (oldword), + newword, strlen (newword)); + + g_free (oldword); +} + +GtkWidget * +build_suggestion_menu (SulekhaSpell * spell, GtkTextBuffer * buffer, + const char *word) +{ + const char *suggestion; + GtkWidget *topmenu, *menu; + GtkWidget *mi; + GtkWidget *hbox; + int count = 0; + void *spelldata; + const AspellWordList *suggestions; + AspellStringEnumeration *elements; + char *label; + //santhosh + word = transliterate_ml (word, 0, strlen (word)); + + //end santhosh + topmenu = menu = gtk_menu_new (); + + suggestions = aspell_speller_suggest (spell->speller, word, -1); + elements = aspell_word_list_elements (suggestions); + + suggestion = aspell_string_enumeration_next (elements); + if (suggestion == NULL) + { + /* no suggestions. put something in the menu anyway... */ + GtkWidget *label; + label = gtk_label_new (""); + gtk_label_set_markup (GTK_LABEL (label), _("<i>(no suggestions)</i>")); + + mi = gtk_menu_item_new (); + gtk_container_add (GTK_CONTAINER (mi), label); + gtk_widget_show_all (mi); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mi); + } + else + { + /* build a set of menus with suggestions. */ + while (suggestion != NULL) + { + if (count == 10) + { + mi = gtk_menu_item_new (); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + + mi = gtk_menu_item_new_with_label (_("More...")); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + + menu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), menu); + count = 0; + } + mi = gtk_menu_item_new_with_label (suggestion); + g_signal_connect (G_OBJECT (mi), "activate", + G_CALLBACK (replace_word), spell); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + count++; + suggestion = aspell_string_enumeration_next (elements); + } + } + + delete_aspell_string_enumeration (elements); + + /* Separator */ + mi = gtk_menu_item_new (); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (topmenu), mi); + + /* + Add to Dictionary */ + label = g_strdup_printf (_("Add \"%s\" to Dictionary"), word); + mi = gtk_image_menu_item_new_with_label (label); + g_free (label); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), + gtk_image_new_from_stock (GTK_STOCK_ADD, + GTK_ICON_SIZE_MENU)); + g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (add_to_dictionary), + spell); + gtk_widget_show_all (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (topmenu), mi); + + /* - Ignore All */ + mi = gtk_image_menu_item_new_with_label (_("Ignore All")); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), + gtk_image_new_from_stock (GTK_STOCK_REMOVE, + GTK_ICON_SIZE_MENU)); + g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (ignore_all), + spell); + gtk_widget_show_all (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (topmenu), mi); + + return topmenu; +} + +static void +populate_popup (GtkTextView * textview, GtkMenu * menu, SulekhaSpell * spell) +{ + GtkWidget *img, *mi; + GtkTextBuffer *buffer = gtk_text_view_get_buffer (textview); + GtkTextIter start, end; + char *word; + + /* we need to figure out if they picked a misspelled word. */ + get_word_extents_from_mark (buffer, &start, &end, spell->mark_click); + + /* if our highlight algorithm ever messes up, + * this isn't correct, either. */ + if (!gtk_text_iter_has_tag (&start, spell->tag_highlight)) + return; /* word wasn't misspelled. */ + + /* menu separator comes first. */ + mi = gtk_menu_item_new (); + gtk_widget_show (mi); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mi); + + /* then, on top of it, the suggestions menu. */ + img = gtk_image_new_from_stock (GTK_STOCK_SPELL_CHECK, GTK_ICON_SIZE_MENU); + mi = gtk_image_menu_item_new_with_label (_("Spelling Suggestions")); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), img); + + word = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), + build_suggestion_menu (spell, buffer, word)); + + g_free (word); + + gtk_widget_show_all (mi); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mi); +} + +/* when the user right-clicks on a word, they want to check that word. + * here, we do NOT move the cursor to the location of the clicked-upon word + * since that prevents the use of edit functions on the context menu. */ +static gboolean +button_press_event (GtkTextView * view, GdkEventButton * event, + SulekhaSpell * spell) +{ + if (event->button == 3) + { + gint x, y; + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer (view); + + /* handle deferred check if it exists */ + if (spell->deferred_check) + check_deferred_range (spell, buffer, TRUE); + + gtk_text_view_window_to_buffer_coords (view, + GTK_TEXT_WINDOW_TEXT, + event->x, event->y, &x, &y); + gtk_text_view_get_iter_at_location (view, &iter, x, y); + gtk_text_buffer_move_mark (buffer, spell->mark_click, &iter); + } + return FALSE; /* false: let gtk process this event, too. + we don't want to eat any events. */ +} + +/* This event occurs when the popup menu is requested through a key-binding + * (Menu Key or <shift>+F10 by default). In this case we want to set + * spell->mark_click to the cursor position. */ +static gboolean +popup_menu_event (GtkTextView * view, SulekhaSpell * spell) +{ + GtkTextIter iter; + GtkTextBuffer *buffer = gtk_text_view_get_buffer (view); + + gtk_text_buffer_get_iter_at_mark (buffer, &iter, + gtk_text_buffer_get_insert (buffer)); + gtk_text_buffer_move_mark (buffer, spell->mark_click, &iter); + return FALSE; /* false: let gtk process this event, too. */ +} + +static gboolean +sulekhaspell_set_language_internal (SulekhaSpell * spell, const gchar * lang, + GError ** error) +{ + AspellConfig *config; + AspellCanHaveError *err; + AspellSpeller *speller; + + if (lang == NULL) + { + lang = g_getenv ("LANG"); + if (lang) + { + if (g_strncasecmp (lang, "C", 1) == 0) + lang = NULL; + else if (lang[0] == 0) + lang = NULL; + } + } + + config = new_aspell_config (); + if (lang) + aspell_config_replace (config, "language-tag", lang); + aspell_config_replace (config, "encoding", "utf-8"); + err = new_aspell_speller (config); + delete_aspell_config (config); + + if (aspell_error_number (err) != 0) + { +#ifdef USING_ASPELL + g_set_error (error, SULEKHASPELL_ERROR, SULEKHASPELL_ERROR_BACKEND, + "aspell: %s", aspell_error_message (err)); +#elif defined USING_PSPELL + g_set_error (error, SULEKHASPELL_ERROR, SULEKHASPELL_ERROR_BACKEND, + "pspell: %s", aspell_error_message (err)); +#endif + return FALSE; + } + if (spell->speller) + delete_aspell_speller (spell->speller); + spell->speller = to_aspell_speller (err); + + return TRUE; +} + +/** + * sulekhaspell_set_language: + * @spell: The #SulekhaSpell object. + * @lang: The language to use, in a form pspell understands (it appears to + * be a locale specifier?). + * @error: Return location for error. + * + * Set the language on @spell to @lang, possibily returning an error in + * @error. + * + * Returns: FALSE if there was an error. + */ +gboolean +sulekhaspell_set_language (SulekhaSpell * spell, const gchar * lang, + GError ** error) +{ + gboolean ret; + + if (error) + g_return_val_if_fail (*error == NULL, FALSE); + + ret = sulekhaspell_set_language_internal (spell, lang, error); + if (ret) + sulekhaspell_recheck_all (spell); + + return ret; +} + +/** + * sulekhaspell_recheck_all: + * @spell: The #SulekhaSpell object. + * + * Recheck the spelling in the entire buffer. + */ +void +sulekhaspell_recheck_all (SulekhaSpell * spell) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + + buffer = gtk_text_view_get_buffer (spell->view); + + gtk_text_buffer_get_bounds (buffer, &start, &end); + + check_range (spell, buffer, start, end, TRUE); +} + +/** + * sulekhaspell_new_attach: + * @view: The #GtkTextView to attach to. + * @lang: The language to use, in a form pspell understands (it appears to + * be a locale specifier?). + * @error: Return location for error. + * + * Create a new #SulekhaSpell object attached to @view with language @lang. + * + * Returns: a new #SulekhaSpell object, or %NULL on error. + */ +SulekhaSpell * +sulekhaspell_new_attach (GtkTextView * view, const gchar * lang, + GError ** error) +{ + GtkTextBuffer *buffer; + GtkTextTagTable *tagtable; + GtkTextIter start, end; + + SulekhaSpell *spell; + +#ifdef ENABLE_NLS + bindtextdomain (PACKAGE, LOCALEDIR); + bind_textdomain_codeset (PACKAGE, "UTF-8"); +#endif + + if (error) + g_return_val_if_fail (*error == NULL, NULL); + + spell = g_object_get_data (G_OBJECT (view), SULEKHASPELL_OBJECT_KEY); + g_assert (spell == NULL); + + /* attach to the widget */ + spell = g_new0 (SulekhaSpell, 1); + spell->view = view; + if (!sulekhaspell_set_language_internal (spell, lang, error)) + { + g_free (spell); + return NULL; + } + g_object_set_data (G_OBJECT (view), SULEKHASPELL_OBJECT_KEY, spell); + + g_signal_connect_swapped (G_OBJECT (view), "destroy", + G_CALLBACK (sulekhaspell_free), spell); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (button_press_event), spell); + g_signal_connect (G_OBJECT (view), "populate-popup", + G_CALLBACK (populate_popup), spell); + g_signal_connect (G_OBJECT (view), "popup-menu", + G_CALLBACK (popup_menu_event), spell); + + buffer = gtk_text_view_get_buffer (view); + + g_signal_connect (G_OBJECT (buffer), + "insert-text", G_CALLBACK (insert_text_before), spell); + g_signal_connect_after (G_OBJECT (buffer), + "insert-text", + G_CALLBACK (insert_text_after), spell); + g_signal_connect_after (G_OBJECT (buffer), + "delete-range", + G_CALLBACK (delete_range_after), spell); + g_signal_connect (G_OBJECT (buffer), + "mark-set", G_CALLBACK (mark_set), spell); + + tagtable = gtk_text_buffer_get_tag_table (buffer); + spell->tag_highlight = + gtk_text_tag_table_lookup (tagtable, SULEKHASPELL_MISSPELLED_TAG); + + if (spell->tag_highlight == NULL) + { + spell->tag_highlight = gtk_text_buffer_create_tag (buffer, + SULEKHASPELL_MISSPELLED_TAG, +#ifdef HAVE_PANGO_UNDERLINE_ERROR + "underline", + PANGO_UNDERLINE_ERROR, +#else + "foreground", "red", + "underline", + PANGO_UNDERLINE_SINGLE, +#endif + NULL); + } + + /* we create the mark here, but we don't use it until text is + * inserted, so we don't really care where iter points. */ + gtk_text_buffer_get_bounds (buffer, &start, &end); + spell->mark_insert_start = gtk_text_buffer_create_mark (buffer, + "sulekhaspell-insert-start", + &start, TRUE); + spell->mark_insert_end = gtk_text_buffer_create_mark (buffer, + "sulekhaspell-insert-end", + &start, TRUE); + spell->mark_click = gtk_text_buffer_create_mark (buffer, + "sulekhaspell-click", + &start, TRUE); + + spell->deferred_check = FALSE; + + /* now check the entire text buffer. */ + sulekhaspell_recheck_all (spell); + return spell; +} + +static void +sulekhaspell_free (SulekhaSpell * spell) +{ + GtkTextBuffer *buffer; + GtkTextTagTable *table; + GtkTextIter start, end; + + buffer = gtk_text_view_get_buffer (spell->view); + table = gtk_text_buffer_get_tag_table (buffer); + + gtk_text_buffer_get_bounds (buffer, &start, &end); + gtk_text_buffer_remove_tag (buffer, spell->tag_highlight, &start, &end); + + gtk_text_buffer_delete_mark (buffer, spell->mark_insert_start); + gtk_text_buffer_delete_mark (buffer, spell->mark_insert_end); + gtk_text_buffer_delete_mark (buffer, spell->mark_click); + + delete_aspell_speller (spell->speller); + + g_signal_handlers_disconnect_matched (spell->view, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, spell); + g_signal_handlers_disconnect_matched (buffer, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, spell); + g_free (spell); +} + +/** + * sulekhaspell_get_from_text_view: + * @view: A #GtkTextView. + * + * Retrieves the #SulekhaSpell object attached to a text view. + * + * Returns: the #SulekhaSpell object, or %NULL if there is no #SulekhaSpell + * attached to @view. + */ +SulekhaSpell * +sulekhaspell_get_from_text_view (GtkTextView * view) +{ + return g_object_get_data (G_OBJECT (view), SULEKHASPELL_OBJECT_KEY); +} + +/** + * sulekhaspell_detach: + * @spell: A #SulekhaSpell. + * + * Detaches this #SulekhaSpell from its text view. Use + * sulekhaspell_get_from_text_view() to retrieve a SulekhaSpell from a + * #GtkTextView. + */ +void +sulekhaspell_detach (SulekhaSpell * spell) +{ + g_return_if_fail (spell != NULL); + + g_object_set_data (G_OBJECT (spell->view), SULEKHASPELL_OBJECT_KEY, NULL); + sulekhaspell_free (spell); +} diff --git a/input-methods/sulekha/src/sulekhaspell.h b/input-methods/sulekha/src/sulekhaspell.h new file mode 100644 index 0000000..791e18f --- /dev/null +++ b/input-methods/sulekha/src/sulekhaspell.h @@ -0,0 +1,64 @@ +/* sulekhaspell - a spell-checking addon for GTK's TextView widget based on sulekhaspell by Evan Martin. + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Praveen Arimprathodiyil <pravi.a@gmail.com> + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + + +#ifndef SULEKHASPELL_H +#define SULEKHASPELL_H + +#define SULEKHASPELL_ERROR sulekhaspell_error_quark() + +typedef enum { + SULEKHASPELL_ERROR_BACKEND, +} SulekhaSpellError; + +GQuark sulekhaspell_error_quark(); + +typedef struct _SulekhaSpell SulekhaSpell; + +/* the idea is to have a SulekhaSpell object that is analagous to the + * GtkTextBuffer-- it lives as an attribute of the GtkTextView but + * it can be referred to directly. */ + +SulekhaSpell* sulekhaspell_new_attach(GtkTextView *view, + const gchar *lang, GError **error); +SulekhaSpell* sulekhaspell_get_from_text_view(GtkTextView *view); +void sulekhaspell_detach(SulekhaSpell *spell); + +gboolean sulekhaspell_set_language(SulekhaSpell *spell, + const gchar *lang, GError **error); + +void sulekhaspell_recheck_all(SulekhaSpell *spell); + + +/*** old API-- deprecated. ***/ +#ifndef SULEKHASPELL_DISABLE_DEPRECATED +#define SULEKHASPELL_ERROR_PSPELL SULEKHASPELL_ERROR_BACKEND + +int sulekhaspell_init(); +/* no-op. */ + +void sulekhaspell_attach(GtkTextView *view); +/* sulekhaspell_new_attach(view, NULL, NULL); */ + +#endif /* SULEKHASPELL_DISABLE_DEPRECATED */ + +#endif /* SULEKHASPELL_H */ diff --git a/input-methods/sulekha/src/sulekhaspell.h~ b/input-methods/sulekha/src/sulekhaspell.h~ new file mode 100644 index 0000000..e7b1b49 --- /dev/null +++ b/input-methods/sulekha/src/sulekhaspell.h~ @@ -0,0 +1,45 @@ +/* sulekhaspell - a spell-checking addon for GTK's TextView widget based on sulekhaspell by Evan Martin. + */ + + +#ifndef SULEKHASPELL_H +#define SULEKHASPELL_H + +#define SULEKHASPELL_ERROR sulekhaspell_error_quark() + +typedef enum { + SULEKHASPELL_ERROR_BACKEND, +} SulekhaSpellError; + +GQuark sulekhaspell_error_quark(); + +typedef struct _SulekhaSpell SulekhaSpell; + +/* the idea is to have a SulekhaSpell object that is analagous to the + * GtkTextBuffer-- it lives as an attribute of the GtkTextView but + * it can be referred to directly. */ + +SulekhaSpell* sulekhaspell_new_attach(GtkTextView *view, + const gchar *lang, GError **error); +SulekhaSpell* sulekhaspell_get_from_text_view(GtkTextView *view); +void sulekhaspell_detach(SulekhaSpell *spell); + +gboolean sulekhaspell_set_language(SulekhaSpell *spell, + const gchar *lang, GError **error); + +void sulekhaspell_recheck_all(SulekhaSpell *spell); + + +/*** old API-- deprecated. ***/ +#ifndef SULEKHASPELL_DISABLE_DEPRECATED +#define SULEKHASPELL_ERROR_PSPELL SULEKHASPELL_ERROR_BACKEND + +int sulekhaspell_init(); +/* no-op. */ + +void sulekhaspell_attach(GtkTextView *view); +/* sulekhaspell_new_attach(view, NULL, NULL); */ + +#endif /* SULEKHASPELL_DISABLE_DEPRECATED */ + +#endif /* SULEKHASPELL_H */ diff --git a/input-methods/sulekha/src/trans.c b/input-methods/sulekha/src/trans.c new file mode 100644 index 0000000..18e48e1 --- /dev/null +++ b/input-methods/sulekha/src/trans.c @@ -0,0 +1,231 @@ +/* Transliteration.c + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include<stdio.h> +#include<string.h> +#include<stdlib.h> +#include "Transliteration.h" +/* +Transliterate the a dhvani phonetic string to malayalam. +Algorithm: +1)For all vowels, if it is at the 0th position print as it is +2)If the vowel is in between/end of the string print the sign of the vowel except for A +3)For all consonants print the malayalam character +4)If a phonetic character is not identified print '?' +5)Octal C escaped strings are used for printing the Unicode Malayalam string +*/ + + +char * +transliterate_ml (char *phonetic_string, int start, int end) +{ + char *ml_string; + int length = 0; + int i = start; + length = end - start; + ml_string = (char *) malloc (length * 4 * sizeof (char)); + printf (":%s:\n", phonetic_string); + while (i < end) + { + + switch (phonetic_string[i]) + { + //Vowels + case 'a': + if (i == 0) + strcat (ml_string, "\340\264\205"); + break; + case 'A': + (i == 0) ? strcat (ml_string, "\340\264\206") : strcat (ml_string, + "\340\264\276"); + break; + case 'i': + (i == 0) ? strcat (ml_string, "\340\264\207") : strcat (ml_string, + "\340\264\277"); + break; + case 'I': + (i == 0) ? strcat (ml_string, "\340\264\210") : strcat (ml_string, + "\340\265\200"); + break; + case 'u': + (i == 0) ? strcat (ml_string, "\340\264\211") : strcat (ml_string, + "\340\265\201"); + break; + case 'U': + (i == 0) ? strcat (ml_string, "\340\264\212") : strcat (ml_string, + "\340\265\202"); + break; + case '^': + (i == 0) ? strcat (ml_string, "\340\264\213") : strcat (ml_string, + "\340\265\203"); + break; + case 'e': + (i == 0) ? strcat (ml_string, "\340\264\216") : strcat (ml_string, + "\340\265\206"); + break; + case 'E': + (i == 0) ? strcat (ml_string, "\340\264\217") : strcat (ml_string, + "\340\265\207"); + break; + case '@': + (i == 0) ? strcat (ml_string, "\340\264\220") : strcat (ml_string, + "\340\265\210"); + break; + case 'o': + (i == 0) ? strcat (ml_string, "\340\264\222") : strcat (ml_string, + "\340\265\212"); + break; + case 'O': + (i == 0) ? strcat (ml_string, "\340\264\223") : strcat (ml_string, + "\340\265\213"); + break; + case '`': + (i == 0) ? strcat (ml_string, "\340\264\224") : strcat (ml_string, + "\340\265\227"); + break; + case '.': //am + strcat (ml_string, "\340\264\202"); + break; + case '~': //chandrakkala + strcat (ml_string, "\340\265\215"); + break; + case ':': //Ah + strcat (ml_string, "\340\264\203"); + break; + //Consonants + case 'k': + strcat (ml_string, "\340\264\225"); + break; + case 'K': + strcat (ml_string, "\340\264\226"); + break; + case 'g': + strcat (ml_string, "\340\264\227"); + break; + case '-': + strcat (ml_string, "\340\264\231"); + break; + case 'G': + strcat (ml_string, "\340\264\230"); + break; + case 'c': + strcat (ml_string, "\340\264\232"); + break; + case 'C': + strcat (ml_string, "\340\264\233"); + break; + case 'j': + strcat (ml_string, "\340\264\234"); + break; + case 'J': + strcat (ml_string, "\340\264\235"); + break; + case '#': + strcat (ml_string, "\340\264\236"); + break; + case 't': + strcat (ml_string, "\340\264\237"); + break; + case 'T': + strcat (ml_string, "\340\264\240"); + break; + case 'd': + strcat (ml_string, "\340\264\241"); + break; + case 'D': + strcat (ml_string, "\340\264\242"); + break; + case 'N': + strcat (ml_string, "\340\264\243"); + break; + case 'x': + strcat (ml_string, "\340\264\244"); + break; + case 'X': + strcat (ml_string, "\340\264\245"); + break; + case 'w': + strcat (ml_string, "\340\264\246"); + break; + case 'W': + strcat (ml_string, "\340\264\247"); + break; + case 'n': + strcat (ml_string, "\340\264\250"); + break; + case 'p': + strcat (ml_string, "\340\264\252"); + break; + case 'f': + strcat (ml_string, "\340\264\253"); + break; + case 'b': + strcat (ml_string, "\340\264\254"); + break; + case 'B': + strcat (ml_string, "\340\264\255"); + break; + case 'm': + strcat (ml_string, "\340\264\256"); + break; + case 'y': + strcat (ml_string, "\340\264\257"); + break; + case 'r': + strcat (ml_string, "\340\264\260"); + break; + case 'l': + strcat (ml_string, "\340\264\262"); + break; + case 'v': + strcat (ml_string, "\340\264\265"); + break; + case '$': + strcat (ml_string, "\340\264\266"); + break; + case 's': + strcat (ml_string, "\340\264\270"); + break; + case 'S': + strcat (ml_string, "\340\264\267"); + break; + case 'h': + strcat (ml_string, "\340\264\271"); + break; + case 'L': + strcat (ml_string, "\340\264\263"); + break; + case 'z': + strcat (ml_string, "\340\264\264"); + break; + case 'R': + strcat (ml_string, "\340\264\261"); + break; + default: + strcat (ml_string, "?"); //Not recognized + break; + } + + i++; + } + printf (":%s:\n", ml_string); + return ml_string; +} diff --git a/input-methods/sulekha/src/trans.c~ b/input-methods/sulekha/src/trans.c~ new file mode 100644 index 0000000..c30900d --- /dev/null +++ b/input-methods/sulekha/src/trans.c~ @@ -0,0 +1,231 @@ +/* Transliteration.c + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include<stdio.h> +#include<string.h> +#include<stdlib.h> +#include "Transliteration.h" +/* +Transliterate the a dhvani phonetic string to malayalam. +Algorithm: +1)For all vowels, if it is at the 0th position print as it is +2)If the vowel is in between/end of the string print the sign of the vowel except for A +3)For all consonants print the malayalam character +4)If a phonetic character is not identified print '?' +5)Octal C escaped strings are used for printing the Unicode Malayalam string +*/ + + +char * +transliterate_ml (char *phonetic_string, int start, int end) +{ + char *ml_string; + int length = 0; + int i = start; + length = end - start; + ml_string = (char *) malloc (length * 4 * sizeof (char)); + printf (":%s:\n", phonetic_string); + while (i < end) + { + + switch (phonetic_string[i]) + { + //Vowels + case 'a': + if (i == 0) + strcat (ml_string, "\340\264\205"); + break; + case 'A': + (i == 0) ? strcat (ml_string, "\340\264\206") : strcat (ml_string, + "\340\264\276"); + break; + case 'i': + (i == 0) ? strcat (ml_string, "\340\264\207") : strcat (ml_string, + "\340\264\277"); + break; + case 'I': + (i == 0) ? strcat (ml_string, "\340\264\210") : strcat (ml_string, + "\340\265\200"); + break; + case 'u': + (i == 0) ? strcat (ml_string, "\340\264\211") : strcat (ml_string, + "\340\265\201"); + break; + case 'U': + (i == 0) ? strcat (ml_string, "\340\264\212") : strcat (ml_string, + "\340\265\202"); + break; + case '^': + (i == 0) ? strcat (ml_string, "\340\264\213") : strcat (ml_string, + "\340\265\203"); + break; + case 'e': + (i == 0) ? strcat (ml_string, "\340\264\216") : strcat (ml_string, + "\340\265\206"); + break; + case 'E': + (i == 0) ? strcat (ml_string, "\340\264\217") : strcat (ml_string, + "\340\265\207"); + break; + case '@': + (i == 0) ? strcat (ml_string, "\340\264\220") : strcat (ml_string, + "\340\265\210"); + break; + case 'o': + (i == 0) ? strcat (ml_string, "\340\264\222") : strcat (ml_string, + "\340\265\212"); + break; + case 'O': + (i == 0) ? strcat (ml_string, "\340\264\223") : strcat (ml_string, + "\340\265\213"); + break; + case '`': + (i == 0) ? strcat (ml_string, "\340\264\224") : strcat (ml_string, + "\340\265\227"); + break; + case '.': //am + strcat (ml_string, "\340\264\202"); + break; + case '~': //chandrakkala + strcat (ml_string, "\340\265\215"); + break; + case ':': //Ah + strcat (ml_string, "\340\264\203"); + break; + //Consonants + case 'k': + strcat (ml_string, "\340\264\225"); + break; + case 'K': + strcat (ml_string, "\340\264\226"); + break; + case 'g': + strcat (ml_string, "\340\264\227"); + break; + case '-': + strcat (ml_string, "\340\264\231"); + break; + case 'G': + strcat (ml_string, "\340\264\230"); + break; + case 'c': + strcat (ml_string, "\340\264\232"); + break; + case 'C': + strcat (ml_string, "\340\264\233"); + break; + case 'j': + strcat (ml_string, "\340\264\234"); + break; + case 'J': + strcat (ml_string, "\340\264\235"); + break; + case '#': + strcat (ml_string, "\340\264\236"); + break; + case 't': + strcat (ml_string, "\340\264\237"); + break; + case 'T': + strcat (ml_string, "\340\264\240"); + break; + case 'd': + strcat (ml_string, "\340\264\241"); + break; + case 'D': + strcat (ml_string, "\340\264\242"); + break; + case 'N': + strcat (ml_string, "\340\264\243"); + break; + case 'x': + strcat (ml_string, "\340\264\244"); + break; + case 'X': + strcat (ml_string, "\340\264\245"); + break; + case 'w': + strcat (ml_string, "\340\264\246"); + break; + case 'W': + strcat (ml_string, "\340\264\247"); + break; + case 'n': + strcat (ml_string, "\340\264\250"); + break; + case 'p': + strcat (ml_string, "\340\264\252"); + break; + case 'f': + strcat (ml_string, "\340\264\253"); + break; + case 'b': + strcat (ml_string, "\340\264\254"); + break; + case 'B': + strcat (ml_string, "\340\264\255"); + break; + case 'm': + strcat (ml_string, "\340\264\256"); + break; + case 'y': + strcat (ml_string, "\340\264\257"); + break; + case 'r': + strcat (ml_string, "\340\264\260"); + break; + case 'l': + strcat (ml_string, "\340\264\262"); + break; + case 'v': + strcat (ml_string, "\340\264\265"); + break; + case '$': + strcat (ml_string, "\340\264\266"); + break; + case 's': + strcat (ml_string, "\340\264\270"); + break; + case 'S': + strcat (ml_string, "\340\264\267"); + break; + case 'h': + strcat (ml_string, "\340\264\271"); + break; + case 'L': + strcat (ml_string, "\340\264\263"); + break; + case 'z': + strcat (ml_string, "\340\264\264"); + break; + case 'R': + strcat (ml_string, "\340\264\261"); + break; + default: + strcat (ml_string, "?"); //Not recognized + break; + } + + i++; + } + printf (":%s:\n", ml_string); + return ml_string; +} diff --git a/input-methods/sulekha/src/transliteration.c b/input-methods/sulekha/src/transliteration.c new file mode 100644 index 0000000..4cb1222 --- /dev/null +++ b/input-methods/sulekha/src/transliteration.c @@ -0,0 +1,906 @@ +/* Transliteration.c + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include<stdio.h> +#include<string.h> + +#include<stdlib.h> +#include "transliteration.h" +/* +Transliterate the a dhvani phonetic string to malayalam. +Algorithm: +1)For all vowels, if it is at the 0th position print as it is +2)If the vowel is in between/end of the string print the sign of the vowel except for A +3)For all consonants print the malayalam character +4)If a phonetic character is not identified print '?' +5)Octal C escaped strings are used for printing the Unicode Malayalam string +*/ + +main1 (int argc, const char *argv[]) +{ + const char *word; + const char *transliterated_word; + int word_length = 0; + if (argc == 1) + { + printf ("Usage: %s word\n", argv[0]); + exit (0); + } + word = argv[1]; + transliterated_word = transliterate_ml (word, 0, strlen (word)); +// printf ("%s\n",word); + printf ("%s\n", transliterated_word); + return 0; +} + +int +isVowel (char c) +{ + if ((c == 'a') || (c == 'A') || (c == 'e') || (c == 'E') || (c == 'i') + || (c == 'I') || (c == 'o') || (c == 'O') || (c == 'u') || (c == 'U')) + return 1; + else + return 0; +} + +int +isChillu (char c) +{ + if ((c == 'n') || (c == 'N') || (c == 'r') || (c == 'R') || (c == 'l') + || (c == 'L') || (c == 'm')) + return 1; + else + return 0; +} + + +char * +transliterate_ml (char *phonetic_string, int start, int end) +{ + char *ml_string = NULL; + int length = 0; + int i = start; + length = end - start; + ml_string = (char *) malloc (length * 4 * sizeof (char)); + ml_string[0] = '\0'; + while (i < end) + { + + switch (phonetic_string[i]) + { + //Vowels + case 'a': + if (i == 0) //first letter, use swaram as such + { // as in amaram + + if (i < end && phonetic_string[i + 1] == 'a') + { // as in aana + strcat (ml_string, "\340\264\206"); //aa letter + i++; + } + else if (i < end && phonetic_string[i + 1] == 'i') + { // as in airaavatham + strcat (ml_string, "\340\264\202"); //ai letter + i++; + } + else if (i < end && phonetic_string[i + 1] == 'u') + { // as in airaavatham + strcat (ml_string, "\340\264\224"); //au aushadham + i++; + } + else + { + strcat (ml_string, "\340\264\205"); //a letter + } + } + else + { //swara chihnam + if (i < end && phonetic_string[i + 1] == 'a') //aa sign + { // as in kaazhcha + strcat (ml_string, "\340\264\276"); + i++; + } + else if (i < end && phonetic_string[i + 1] == 'i') + { // as in kaitha + strcat (ml_string, "\340\265\210"); //ai sign + i++; + } + else if (i < end && phonetic_string[i + 1] == 'u') + { // as in kauravar + strcat (ml_string, "\340\265\227"); //au sign + i++; + } + } + break; + + case 'A': + (i == 0) ? strcat (ml_string, "\340\264\206") : strcat (ml_string, + "\340\264\276"); + break; + case 'i': + if (i == 0) + { + if (i < end + && ((phonetic_string[i + 1] == 'i') + || (phonetic_string[i + 1] == 'e'))) + { //ii/ee letter + strcat (ml_string, "\340\264\210"); + i++; + } + else + { + strcat (ml_string, "\340\264\207"); // i/e letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'i') || (phonetic_string[i + 1] == 'e'))) //ii/ee sign + { + strcat (ml_string, "\340\265\200"); + i++; + } + else + { + strcat (ml_string, "\340\264\277"); // i/e sign + } + } + break; + case 'I': + (i == 0) ? strcat (ml_string, "\340\264\210") : strcat (ml_string, + "\340\265\200"); + break; + case 'u': + if (i == 0) + { + if (i < end + && ((phonetic_string[i + 1] == 'o') + || (phonetic_string[i + 1] == 'u'))) + { //ii/ee letter + strcat (ml_string, "\340\264\212"); + i++; + } + else + { + strcat (ml_string, "\340\264\211"); // u letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'u') || (phonetic_string[i + 1] == 'o'))) //ii/ee sign + { + strcat (ml_string, "\340\265\202"); //uu sign + i++; + } + else + { + strcat (ml_string, "\340\265\201"); // u sign + } + } + break; + case 'U': + (i == 0) ? strcat (ml_string, "\340\264\212") : strcat (ml_string, + "\340\265\202"); + break; + case '^': + (i == 0) ? strcat (ml_string, "\340\264\213") : strcat (ml_string, + "\340\265\203"); + break; + case 'e': + if (i == 0) + { + if (i < end + && ((phonetic_string[i + 1] == 'e') + || (phonetic_string[i + 1] == 'a'))) + { //ii/ee letter + strcat (ml_string, "\340\264\217"); + i++; + } + else + { + strcat (ml_string, "\340\264\207"); // e letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'e'))) //e/ee sign + { + strcat (ml_string, "\340\265\200"); //ee sign + i++; + } + else + { + strcat (ml_string, "\340\265\206"); // u sign + } + } + break; + case 'E': + (i == 0) ? strcat (ml_string, "\340\264\217") : strcat (ml_string, + "\340\265\207"); + break; +// case '@': //ai +// (i == 0) ? strcat (ml_string, "\340\264\220") : strcat (ml_string, +// "\340\265\210"); +// break; + case 'o': + if (i == 0) + { + if (i < end && ((phonetic_string[i + 1] == 'o'))) + { //oo letter + strcat (ml_string, "\340\264\222"); + i++; + } + else + { + strcat (ml_string, " \340\264\223"); // o letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'o'))) //oo sign + { + strcat (ml_string, "\340\265\202"); //oo sign + i++; + } + else if (i < end && ((phonetic_string[i + 1] == 'u'))) //ou sign + { + strcat (ml_string, "\340\265\214"); //ou sign + i++; + } + else + { + strcat (ml_string, "\340\265\212"); // o sign + } + } + break; + case 'O': + (i == 0) ? strcat (ml_string, "\340\264\223") : strcat (ml_string, + "\340\265\213"); + break; + case '`': + (i == 0) ? strcat (ml_string, "\340\264\224") : strcat (ml_string, + "\340\265\227"); + break; +// case '.': //am +// strcat (ml_string, "\340\264\202"); +// break; + case '~': //chandrakkala + strcat (ml_string, "\340\265\215"); + break; + case ':': //Ah + strcat (ml_string, "\340\264\203"); + break; + //Consonants + case 'k': + + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //kh + strcat (ml_string, "\340\264\226"); + i++; + } + else + { + strcat (ml_string, "\340\264\225"); //just a k + + } + break; + case 'K': + if (i == start) + { //start of a word- may be a Name.Place..starting with K + strcat (ml_string, "\340\264\225"); //just a k + } + + else if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //KK + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //Kh as in Khalid + strcat (ml_string, "\340\264\226"); + i++; + } + else + { + strcat (ml_string, "\340\264\226"); //just a k + + } + + break; + case 'g': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\227"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\227"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //gh + strcat (ml_string, "\340\264\230"); + i++; + } + else + { + strcat (ml_string, "\340\264\227"); //just a g as in gaanam + + } + break; + case 'G': + + if (i == start) + { //start of a word- may be a Name.Place..starting with G + strcat (ml_string, "\340\264\227"); //just a g + } + + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //Kh as in Gha + strcat (ml_string, "\340\264\230"); + i++; + } + else + { + strcat (ml_string, "\340\264\230"); //just a G + + } + break; + case 'c': + + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //kk/cc + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { + if (i == start) + { + //Ch as in chaaya + strcat (ml_string, "\340\264\232"); + i++; + + } + else + { +//most of the time the ch in side the manglish means chcha as an pacha *wild guess. leaving this to aspell :) +//let he decides + strcat (ml_string, "\340\264\232"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\232"); + i++; + } + } + else if (i == start && (phonetic_string[i + 1] != 'h')) + { //start of a word- may be a Name. as in cibu + strcat (ml_string, "\340\264\270"); //just a c/k + } + else + { + strcat (ml_string, "\340\264\226"); //just a k/c + + } + + break; + case 'C': + + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //kk/CC + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { + if (i == start) + { + //Ch as in chaaya + strcat (ml_string, "\340\264\232"); + i++; + + } + else + { +//most of the time the ch in side the manglish means chcha as an pacha *wild guess. leaving this to aspell :) +//let he decides + strcat (ml_string, "\340\264\232"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\232"); + i++; + } + } + else if (i == start && (phonetic_string[i + 1] != 'h')) + { //start of a word- may be a Name. as in cibu + strcat (ml_string, "\340\264\270"); //just a c/k + } + else + { + strcat (ml_string, "\340\264\226"); //just a k/c + + } + + break; + case 'j': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //jja + strcat (ml_string, "\340\264\234"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\234"); //ja + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //jh + strcat (ml_string, "\340\264\235"); + i++; + } + else + { + strcat (ml_string, "\340\264\234"); //just a j as in janam + + } + break; + case 'J': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //jja + strcat (ml_string, "\340\264\234"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\234"); //ja + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //jh + strcat (ml_string, "\340\264\235"); + i++; + } + else + { + strcat (ml_string, "\340\264\234"); //just a j as in janam + } + break; + case 't': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //tta + strcat (ml_string, "\340\264\237"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\237"); //ja + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //th + strcat (ml_string, "\340\264\244"); + i++; + } + else + { + //usually the words starting with t is very less. A t in the starting is tha most probably. + if (i == start) + { + strcat (ml_string, "\340\264\244"); //tha + } + else + { + strcat (ml_string, "\340\264\237"); //just a t + } + } + break; + case 'T': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //tta + strcat (ml_string, "\340\264\237"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\237"); //ja + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //th + strcat (ml_string, "\340\264\244"); + i++; + } + else + { + //usually the words starting with t is very less. A t in the starting is tha most probably. + if (i == start) + { + strcat (ml_string, "\340\264\244"); //tha + } + else + { + strcat (ml_string, "\340\264\237"); //just a t + } + } + break; + case 'd': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //dda + strcat (ml_string, "\340\264\246"); //da + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\246"); //da + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //th + strcat (ml_string, "\340\264\247"); + i++; + } + else + { + strcat (ml_string, "\340\264\246"); //da + } + break; + case 'D': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //dda + strcat (ml_string, "\340\264\246"); //Da + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\246"); //Da + i++; + + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //Dh as in viDhi + strcat (ml_string, "\340\264\242"); + i++; + } + else + { + if (i == start) + { + strcat (ml_string, "\340\264\246"); //Da + } + else + { + strcat (ml_string, "\340\264\241"); //Da + } + } + break; + case 'N': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\243"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\243"); + i++; + } + else if (i == start) + { + strcat (ml_string, "\340\264\250"); + } + else + { + + if (isVowel (phonetic_string[i + 1])) + { + strcat (ml_string, "\340\264\243"); + } + else if ((i < end)) + { + //chillu N + strcat (ml_string, "\340\264\243"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + } + //words ending with N chillu is less + break; + + case 'n': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\250"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'j')) + { //nja as in njaan + strcat (ml_string, "\340\264\236"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 't')) + { + if (i + 1 < end && (phonetic_string[i + 2] == 'h')) + { +//nthaa as in enthaa + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\244"); + i++; + i++; + } + else + { + //nta as in ente + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\261"); + i++; + } + } + else if (i < end && (phonetic_string[i + 1] == 'g')) + { //nga as in thenga + strcat (ml_string, "\340\264\231"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\231"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'k')) + { //nka as in thankakkutam + strcat (ml_string, "\340\264\231"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i == start) + { + strcat (ml_string, "\340\264\250"); + } + else + { + + if (isVowel (phonetic_string[i + 1])) + { + strcat (ml_string, "\340\264\250"); + } + else if ((i < end)) + { + + //chillu n + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + } + //words ending with N chillu is less + break; + case 'p': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\252"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\252"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //ph + strcat (ml_string, "\340\264\253"); + i++; + } + else + { + strcat (ml_string, "\340\264\252"); //just a p + + } + break; + case 'f': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\253"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\253"); + i++; + } + else + { + strcat (ml_string, "\340\264\253"); //just a f + + } + break; + case 'b': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\254"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\254"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //ph + strcat (ml_string, "\340\264\255"); + i++; + } + else + { + strcat (ml_string, "\340\264\254"); //just a b + + } + break; + case 'B': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\255"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\255"); + i++; + } + else + { + strcat (ml_string, "\340\264\255"); //just a B + + } + break; + case 'm': + if (i == end - 1 && phonetic_string[i] != phonetic_string[i - 1]) //end of word. most probably it is an anuswaram + { + strcat (ml_string, "\340\264\202"); + + } + else if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\256"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\256"); + i++; + } + else + { + if (i + 1 < end && !isVowel (phonetic_string[i + 1])) + { + strcat (ml_string, "\340\264\256"); + strcat (ml_string, "\340\265\215"); + } + else + strcat (ml_string, "\340\264\256"); + } + + break; + case 'y': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\257"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\257"); + i++; + } + else + { + strcat (ml_string, "\340\264\257"); //just a y + + } + break; + case 'r': + if ((i + 1 < end) + && ((phonetic_string[i + 1] == 'a') + || (phonetic_string[i + 1] == 'A') + || (phonetic_string[i + 1] == 'e') + || (phonetic_string[i + 1] == 'E') + || (phonetic_string[i + 1] == 'i') + || (phonetic_string[i + 1] == 'I') + || (phonetic_string[i + 1] == 'o') + || (phonetic_string[i + 1] == 'O'))) + { + strcat (ml_string, "\340\264\260"); //just r + } + else if ((i < end)) + { + + //chillu r + strcat (ml_string, "\340\264\260"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + + break; + case 'l': + if ((i + 1 < end) && (isVowel (phonetic_string[i + 1]))) + { + strcat (ml_string, "\340\264\262"); //just l + } + else if ((i < end)) + { + + //chillu l + strcat (ml_string, "\340\264\262"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + + break; + case 'v': + strcat (ml_string, "\340\264\265"); + break; + case 's': + + if (i + 1 < end && phonetic_string[i + 1] == 'h') + { + strcat (ml_string, "\340\264\267"); //sha + i++; + } + else + { + strcat (ml_string, "\340\264\270"); //sa as in santhosh + } + break; + case 'S': + strcat (ml_string, "\340\264\267"); //sha + break; + case 'h': + strcat (ml_string, "\340\264\271"); + break; + case 'L': + strcat (ml_string, "\340\264\263"); + break; + case 'z': + if (i + 1 < end && phonetic_string[i + 1] == 'h') + { + strcat (ml_string, "\340\264\264"); //zha + i++; + } + else + { + strcat (ml_string, "\340\264\270"); //zoo + } + break; + case 'R': + strcat (ml_string, "\340\264\261"); + break; + default: + strcat (ml_string, phonetic_string[i]); //Not recognized + break; + } + + if ((i + 1 < end) && !isVowel (phonetic_string[i]) + && !isVowel (phonetic_string[i + 1]) + && !isChillu (phonetic_string[i])) + { + strcat (ml_string, "\340\265\215"); //virama - implicit virama for conjuct formation + } + else + if ((i + 1 == end) && !isVowel (phonetic_string[i]) + && !isChillu (phonetic_string[i])) + { + strcat (ml_string, "\340\265\215"); //virama - implicit virama for conjuct formation + + } + i++; + + + } + + printf ("%s\n", ml_string); + return ml_string; +} diff --git a/input-methods/sulekha/src/transliteration.c~ b/input-methods/sulekha/src/transliteration.c~ new file mode 100644 index 0000000..4cb1222 --- /dev/null +++ b/input-methods/sulekha/src/transliteration.c~ @@ -0,0 +1,906 @@ +/* Transliteration.c + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include<stdio.h> +#include<string.h> + +#include<stdlib.h> +#include "transliteration.h" +/* +Transliterate the a dhvani phonetic string to malayalam. +Algorithm: +1)For all vowels, if it is at the 0th position print as it is +2)If the vowel is in between/end of the string print the sign of the vowel except for A +3)For all consonants print the malayalam character +4)If a phonetic character is not identified print '?' +5)Octal C escaped strings are used for printing the Unicode Malayalam string +*/ + +main1 (int argc, const char *argv[]) +{ + const char *word; + const char *transliterated_word; + int word_length = 0; + if (argc == 1) + { + printf ("Usage: %s word\n", argv[0]); + exit (0); + } + word = argv[1]; + transliterated_word = transliterate_ml (word, 0, strlen (word)); +// printf ("%s\n",word); + printf ("%s\n", transliterated_word); + return 0; +} + +int +isVowel (char c) +{ + if ((c == 'a') || (c == 'A') || (c == 'e') || (c == 'E') || (c == 'i') + || (c == 'I') || (c == 'o') || (c == 'O') || (c == 'u') || (c == 'U')) + return 1; + else + return 0; +} + +int +isChillu (char c) +{ + if ((c == 'n') || (c == 'N') || (c == 'r') || (c == 'R') || (c == 'l') + || (c == 'L') || (c == 'm')) + return 1; + else + return 0; +} + + +char * +transliterate_ml (char *phonetic_string, int start, int end) +{ + char *ml_string = NULL; + int length = 0; + int i = start; + length = end - start; + ml_string = (char *) malloc (length * 4 * sizeof (char)); + ml_string[0] = '\0'; + while (i < end) + { + + switch (phonetic_string[i]) + { + //Vowels + case 'a': + if (i == 0) //first letter, use swaram as such + { // as in amaram + + if (i < end && phonetic_string[i + 1] == 'a') + { // as in aana + strcat (ml_string, "\340\264\206"); //aa letter + i++; + } + else if (i < end && phonetic_string[i + 1] == 'i') + { // as in airaavatham + strcat (ml_string, "\340\264\202"); //ai letter + i++; + } + else if (i < end && phonetic_string[i + 1] == 'u') + { // as in airaavatham + strcat (ml_string, "\340\264\224"); //au aushadham + i++; + } + else + { + strcat (ml_string, "\340\264\205"); //a letter + } + } + else + { //swara chihnam + if (i < end && phonetic_string[i + 1] == 'a') //aa sign + { // as in kaazhcha + strcat (ml_string, "\340\264\276"); + i++; + } + else if (i < end && phonetic_string[i + 1] == 'i') + { // as in kaitha + strcat (ml_string, "\340\265\210"); //ai sign + i++; + } + else if (i < end && phonetic_string[i + 1] == 'u') + { // as in kauravar + strcat (ml_string, "\340\265\227"); //au sign + i++; + } + } + break; + + case 'A': + (i == 0) ? strcat (ml_string, "\340\264\206") : strcat (ml_string, + "\340\264\276"); + break; + case 'i': + if (i == 0) + { + if (i < end + && ((phonetic_string[i + 1] == 'i') + || (phonetic_string[i + 1] == 'e'))) + { //ii/ee letter + strcat (ml_string, "\340\264\210"); + i++; + } + else + { + strcat (ml_string, "\340\264\207"); // i/e letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'i') || (phonetic_string[i + 1] == 'e'))) //ii/ee sign + { + strcat (ml_string, "\340\265\200"); + i++; + } + else + { + strcat (ml_string, "\340\264\277"); // i/e sign + } + } + break; + case 'I': + (i == 0) ? strcat (ml_string, "\340\264\210") : strcat (ml_string, + "\340\265\200"); + break; + case 'u': + if (i == 0) + { + if (i < end + && ((phonetic_string[i + 1] == 'o') + || (phonetic_string[i + 1] == 'u'))) + { //ii/ee letter + strcat (ml_string, "\340\264\212"); + i++; + } + else + { + strcat (ml_string, "\340\264\211"); // u letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'u') || (phonetic_string[i + 1] == 'o'))) //ii/ee sign + { + strcat (ml_string, "\340\265\202"); //uu sign + i++; + } + else + { + strcat (ml_string, "\340\265\201"); // u sign + } + } + break; + case 'U': + (i == 0) ? strcat (ml_string, "\340\264\212") : strcat (ml_string, + "\340\265\202"); + break; + case '^': + (i == 0) ? strcat (ml_string, "\340\264\213") : strcat (ml_string, + "\340\265\203"); + break; + case 'e': + if (i == 0) + { + if (i < end + && ((phonetic_string[i + 1] == 'e') + || (phonetic_string[i + 1] == 'a'))) + { //ii/ee letter + strcat (ml_string, "\340\264\217"); + i++; + } + else + { + strcat (ml_string, "\340\264\207"); // e letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'e'))) //e/ee sign + { + strcat (ml_string, "\340\265\200"); //ee sign + i++; + } + else + { + strcat (ml_string, "\340\265\206"); // u sign + } + } + break; + case 'E': + (i == 0) ? strcat (ml_string, "\340\264\217") : strcat (ml_string, + "\340\265\207"); + break; +// case '@': //ai +// (i == 0) ? strcat (ml_string, "\340\264\220") : strcat (ml_string, +// "\340\265\210"); +// break; + case 'o': + if (i == 0) + { + if (i < end && ((phonetic_string[i + 1] == 'o'))) + { //oo letter + strcat (ml_string, "\340\264\222"); + i++; + } + else + { + strcat (ml_string, " \340\264\223"); // o letter + } + } + else + { + if (i < end && ((phonetic_string[i + 1] == 'o'))) //oo sign + { + strcat (ml_string, "\340\265\202"); //oo sign + i++; + } + else if (i < end && ((phonetic_string[i + 1] == 'u'))) //ou sign + { + strcat (ml_string, "\340\265\214"); //ou sign + i++; + } + else + { + strcat (ml_string, "\340\265\212"); // o sign + } + } + break; + case 'O': + (i == 0) ? strcat (ml_string, "\340\264\223") : strcat (ml_string, + "\340\265\213"); + break; + case '`': + (i == 0) ? strcat (ml_string, "\340\264\224") : strcat (ml_string, + "\340\265\227"); + break; +// case '.': //am +// strcat (ml_string, "\340\264\202"); +// break; + case '~': //chandrakkala + strcat (ml_string, "\340\265\215"); + break; + case ':': //Ah + strcat (ml_string, "\340\264\203"); + break; + //Consonants + case 'k': + + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //kh + strcat (ml_string, "\340\264\226"); + i++; + } + else + { + strcat (ml_string, "\340\264\225"); //just a k + + } + break; + case 'K': + if (i == start) + { //start of a word- may be a Name.Place..starting with K + strcat (ml_string, "\340\264\225"); //just a k + } + + else if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //KK + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //Kh as in Khalid + strcat (ml_string, "\340\264\226"); + i++; + } + else + { + strcat (ml_string, "\340\264\226"); //just a k + + } + + break; + case 'g': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\227"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\227"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //gh + strcat (ml_string, "\340\264\230"); + i++; + } + else + { + strcat (ml_string, "\340\264\227"); //just a g as in gaanam + + } + break; + case 'G': + + if (i == start) + { //start of a word- may be a Name.Place..starting with G + strcat (ml_string, "\340\264\227"); //just a g + } + + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //Kh as in Gha + strcat (ml_string, "\340\264\230"); + i++; + } + else + { + strcat (ml_string, "\340\264\230"); //just a G + + } + break; + case 'c': + + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //kk/cc + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { + if (i == start) + { + //Ch as in chaaya + strcat (ml_string, "\340\264\232"); + i++; + + } + else + { +//most of the time the ch in side the manglish means chcha as an pacha *wild guess. leaving this to aspell :) +//let he decides + strcat (ml_string, "\340\264\232"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\232"); + i++; + } + } + else if (i == start && (phonetic_string[i + 1] != 'h')) + { //start of a word- may be a Name. as in cibu + strcat (ml_string, "\340\264\270"); //just a c/k + } + else + { + strcat (ml_string, "\340\264\226"); //just a k/c + + } + + break; + case 'C': + + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //kk/CC + strcat (ml_string, "\340\264\225"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { + if (i == start) + { + //Ch as in chaaya + strcat (ml_string, "\340\264\232"); + i++; + + } + else + { +//most of the time the ch in side the manglish means chcha as an pacha *wild guess. leaving this to aspell :) +//let he decides + strcat (ml_string, "\340\264\232"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\232"); + i++; + } + } + else if (i == start && (phonetic_string[i + 1] != 'h')) + { //start of a word- may be a Name. as in cibu + strcat (ml_string, "\340\264\270"); //just a c/k + } + else + { + strcat (ml_string, "\340\264\226"); //just a k/c + + } + + break; + case 'j': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //jja + strcat (ml_string, "\340\264\234"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\234"); //ja + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //jh + strcat (ml_string, "\340\264\235"); + i++; + } + else + { + strcat (ml_string, "\340\264\234"); //just a j as in janam + + } + break; + case 'J': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //jja + strcat (ml_string, "\340\264\234"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\234"); //ja + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //jh + strcat (ml_string, "\340\264\235"); + i++; + } + else + { + strcat (ml_string, "\340\264\234"); //just a j as in janam + } + break; + case 't': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //tta + strcat (ml_string, "\340\264\237"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\237"); //ja + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //th + strcat (ml_string, "\340\264\244"); + i++; + } + else + { + //usually the words starting with t is very less. A t in the starting is tha most probably. + if (i == start) + { + strcat (ml_string, "\340\264\244"); //tha + } + else + { + strcat (ml_string, "\340\264\237"); //just a t + } + } + break; + case 'T': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //tta + strcat (ml_string, "\340\264\237"); //ja + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\237"); //ja + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //th + strcat (ml_string, "\340\264\244"); + i++; + } + else + { + //usually the words starting with t is very less. A t in the starting is tha most probably. + if (i == start) + { + strcat (ml_string, "\340\264\244"); //tha + } + else + { + strcat (ml_string, "\340\264\237"); //just a t + } + } + break; + case 'd': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //dda + strcat (ml_string, "\340\264\246"); //da + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\246"); //da + i++; + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //th + strcat (ml_string, "\340\264\247"); + i++; + } + else + { + strcat (ml_string, "\340\264\246"); //da + } + break; + case 'D': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama //dda + strcat (ml_string, "\340\264\246"); //Da + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\246"); //Da + i++; + + } + else if (i < end + && ((phonetic_string[i + 1] == 'h') + || (phonetic_string[i + 1] == 'H'))) + { //Dh as in viDhi + strcat (ml_string, "\340\264\242"); + i++; + } + else + { + if (i == start) + { + strcat (ml_string, "\340\264\246"); //Da + } + else + { + strcat (ml_string, "\340\264\241"); //Da + } + } + break; + case 'N': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\243"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\243"); + i++; + } + else if (i == start) + { + strcat (ml_string, "\340\264\250"); + } + else + { + + if (isVowel (phonetic_string[i + 1])) + { + strcat (ml_string, "\340\264\243"); + } + else if ((i < end)) + { + //chillu N + strcat (ml_string, "\340\264\243"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + } + //words ending with N chillu is less + break; + + case 'n': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\250"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'j')) + { //nja as in njaan + strcat (ml_string, "\340\264\236"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 't')) + { + if (i + 1 < end && (phonetic_string[i + 2] == 'h')) + { +//nthaa as in enthaa + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\244"); + i++; + i++; + } + else + { + //nta as in ente + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\261"); + i++; + } + } + else if (i < end && (phonetic_string[i + 1] == 'g')) + { //nga as in thenga + strcat (ml_string, "\340\264\231"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\231"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'k')) + { //nka as in thankakkutam + strcat (ml_string, "\340\264\231"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\225"); + i++; + } + else if (i == start) + { + strcat (ml_string, "\340\264\250"); + } + else + { + + if (isVowel (phonetic_string[i + 1])) + { + strcat (ml_string, "\340\264\250"); + } + else if ((i < end)) + { + + //chillu n + strcat (ml_string, "\340\264\250"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + } + //words ending with N chillu is less + break; + case 'p': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\252"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\252"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //ph + strcat (ml_string, "\340\264\253"); + i++; + } + else + { + strcat (ml_string, "\340\264\252"); //just a p + + } + break; + case 'f': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\253"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\253"); + i++; + } + else + { + strcat (ml_string, "\340\264\253"); //just a f + + } + break; + case 'b': + + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\254"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\254"); + i++; + } + else if (i < end && (phonetic_string[i + 1] == 'h')) + { //ph + strcat (ml_string, "\340\264\255"); + i++; + } + else + { + strcat (ml_string, "\340\264\254"); //just a b + + } + break; + case 'B': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\255"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\255"); + i++; + } + else + { + strcat (ml_string, "\340\264\255"); //just a B + + } + break; + case 'm': + if (i == end - 1 && phonetic_string[i] != phonetic_string[i - 1]) //end of word. most probably it is an anuswaram + { + strcat (ml_string, "\340\264\202"); + + } + else if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\256"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\256"); + i++; + } + else + { + if (i + 1 < end && !isVowel (phonetic_string[i + 1])) + { + strcat (ml_string, "\340\264\256"); + strcat (ml_string, "\340\265\215"); + } + else + strcat (ml_string, "\340\264\256"); + } + + break; + case 'y': + if (i < end && (phonetic_string[i + 1] == phonetic_string[i])) + { //koottaxaram - put a virama + strcat (ml_string, "\340\264\257"); + strcat (ml_string, "\340\265\215"); + strcat (ml_string, "\340\264\257"); + i++; + } + else + { + strcat (ml_string, "\340\264\257"); //just a y + + } + break; + case 'r': + if ((i + 1 < end) + && ((phonetic_string[i + 1] == 'a') + || (phonetic_string[i + 1] == 'A') + || (phonetic_string[i + 1] == 'e') + || (phonetic_string[i + 1] == 'E') + || (phonetic_string[i + 1] == 'i') + || (phonetic_string[i + 1] == 'I') + || (phonetic_string[i + 1] == 'o') + || (phonetic_string[i + 1] == 'O'))) + { + strcat (ml_string, "\340\264\260"); //just r + } + else if ((i < end)) + { + + //chillu r + strcat (ml_string, "\340\264\260"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + + break; + case 'l': + if ((i + 1 < end) && (isVowel (phonetic_string[i + 1]))) + { + strcat (ml_string, "\340\264\262"); //just l + } + else if ((i < end)) + { + + //chillu l + strcat (ml_string, "\340\264\262"); + strcat (ml_string, "\340\265\215"); //virama + strcat (ml_string, "\342\200\215"); //zwj + } + + break; + case 'v': + strcat (ml_string, "\340\264\265"); + break; + case 's': + + if (i + 1 < end && phonetic_string[i + 1] == 'h') + { + strcat (ml_string, "\340\264\267"); //sha + i++; + } + else + { + strcat (ml_string, "\340\264\270"); //sa as in santhosh + } + break; + case 'S': + strcat (ml_string, "\340\264\267"); //sha + break; + case 'h': + strcat (ml_string, "\340\264\271"); + break; + case 'L': + strcat (ml_string, "\340\264\263"); + break; + case 'z': + if (i + 1 < end && phonetic_string[i + 1] == 'h') + { + strcat (ml_string, "\340\264\264"); //zha + i++; + } + else + { + strcat (ml_string, "\340\264\270"); //zoo + } + break; + case 'R': + strcat (ml_string, "\340\264\261"); + break; + default: + strcat (ml_string, phonetic_string[i]); //Not recognized + break; + } + + if ((i + 1 < end) && !isVowel (phonetic_string[i]) + && !isVowel (phonetic_string[i + 1]) + && !isChillu (phonetic_string[i])) + { + strcat (ml_string, "\340\265\215"); //virama - implicit virama for conjuct formation + } + else + if ((i + 1 == end) && !isVowel (phonetic_string[i]) + && !isChillu (phonetic_string[i])) + { + strcat (ml_string, "\340\265\215"); //virama - implicit virama for conjuct formation + + } + i++; + + + } + + printf ("%s\n", ml_string); + return ml_string; +} diff --git a/input-methods/sulekha/src/transliteration.h b/input-methods/sulekha/src/transliteration.h new file mode 100644 index 0000000..946894d --- /dev/null +++ b/input-methods/sulekha/src/transliteration.h @@ -0,0 +1,31 @@ +/* Transliteration.h + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Praveen Arimprathodiyil <pravi.a@gmail.com> + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ +/* +Transliterate the a string to malayalam. +Algorithm: +1)For all vowels, if it is at the 0th position print as it is +2)If the vowel is in between/end of the string print the sign of the vowel except for A +3)For all consonants print the malayalam character +4)If a phonetic character is not identified print '?' +5)Octal C escaped strings are used for printing the Unicode Malayalam string +*/ +char *transliterate_ml (char *, int, int); diff --git a/input-methods/sulekha/src/transliteration.h~ b/input-methods/sulekha/src/transliteration.h~ new file mode 100644 index 0000000..946894d --- /dev/null +++ b/input-methods/sulekha/src/transliteration.h~ @@ -0,0 +1,31 @@ +/* Transliteration.h + * + * Copyright (C) 2007-2008 + * Santhosh Thottingal<santhosh00@gmail.com>, + * Praveen Arimprathodiyil <pravi.a@gmail.com> + * Swathanthra Malayalam Computing. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ +/* +Transliterate the a string to malayalam. +Algorithm: +1)For all vowels, if it is at the 0th position print as it is +2)If the vowel is in between/end of the string print the sign of the vowel except for A +3)For all consonants print the malayalam character +4)If a phonetic character is not identified print '?' +5)Octal C escaped strings are used for printing the Unicode Malayalam string +*/ +char *transliterate_ml (char *, int, int); |