Commit b002be50 authored by Hiroshi Sumita's avatar Hiroshi Sumita
Browse files

Refactoring APIs.

- Add many APIs to replace processKeyEvent.
- Remove pager related codes.

BUG=None
TEST=Run a test

Review URL: http://codereview.appspot.com/5314054
parent 32c13912
Loading
Loading
Loading
Loading

po/Makefile.in.in

deleted100644 → 0
+0 −279
Original line number Diff line number Diff line
# Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file file be copied and used freely without restrictions.  It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
#
# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
#
# - Modified by jacob berkman <jacob@ximian.com> to install
#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize

GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
PACKAGE = @PACKAGE@
VERSION = @VERSION@

SHELL = @SHELL@
@SET_MAKE@

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@

prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
datadir = @datadir@
libdir = @libdir@
localedir = $(libdir)/locale
gnulocaledir = $(datadir)/locale
gettextsrcdir = $(datadir)/glib-2.0/gettext/po
subdir = po

INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@

CC = @CC@
GENCAT = @GENCAT@
GMSGFMT = @GMSGFMT@
MSGFMT = @MSGFMT@
MSGFMT_OPTS = @MSGFMT_OPTS@
XGETTEXT = @XGETTEXT@
MSGMERGE = msgmerge

DEFS = @DEFS@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@

INCLUDES = -I.. -I$(top_srcdir)/intl

COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)

SOURCES = 
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = LINGUAS ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
$(POFILES) $(GMOFILES) $(SOURCES)

POTFILES = \

CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
INSTOBJEXT = @INSTOBJEXT@

.SUFFIXES:
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat

.c.o:
	$(COMPILE) $<

.po.pox:
	$(MAKE) $(GETTEXT_PACKAGE).pot
	$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox

.po.mo:
	$(MSGFMT) -o $@ $<

.po.gmo:
	file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
	  && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $<

.po.cat:
	sed -f ../intl/po2msg.sed < $< > $*.msg \
	  && rm -f $@ && $(GENCAT) $@ $*.msg


all: all-@USE_NLS@

all-yes: $(CATALOGS)
all-no:

$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
	$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \
	  --add-comments --keyword=_ --keyword=N_ \
	  --keyword=C_:1c,2 \
	  --keyword=NC_:1c,2 \
	  --keyword=g_dcgettext:2 \
	  --keyword=g_dngettext:2,3 \
	  --keyword=g_dpgettext2:2c,3 \
	  --flag=N_:1:pass-c-format \
	  --flag=C_:2:pass-c-format \
	  --flag=NC_:2:pass-c-format \
	  --flag=g_dngettext:2:pass-c-format \
          --flag=g_strdup_printf:1:c-format \
          --flag=g_string_printf:2:c-format \
          --flag=g_string_append_printf:2:c-format \
          --flag=g_error_new:3:c-format \
          --flag=g_set_error:4:c-format \
          --flag=g_markup_printf_escaped:1:c-format \
          --flag=g_log:3:c-format \
          --flag=g_print:1:c-format \
          --flag=g_printerr:1:c-format \
          --flag=g_printf:1:c-format \
          --flag=g_fprintf:2:c-format \
          --flag=g_sprintf:2:c-format \
          --flag=g_snprintf:3:c-format \
          --flag=g_scanner_error:2:c-format \
          --flag=g_scanner_warn:2:c-format \
	  --files-from=$(srcdir)/POTFILES.in \
	&& test ! -f $(GETTEXT_PACKAGE).po \
	   || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
		&& mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot )

install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
install-data-no: all
install-data-yes: all
	if test -r "$(MKINSTALLDIRS)"; then \
	  $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
	else \
	  $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
	fi
	@catalogs='$(CATALOGS)'; \
	for cat in $$catalogs; do \
	  cat=`basename $$cat`; \
	  case "$$cat" in \
	    *.gmo) destdir=$(gnulocaledir);; \
	    *)     destdir=$(localedir);; \
	  esac; \
	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
	  if test -r "$(MKINSTALLDIRS)"; then \
	    $(MKINSTALLDIRS) $$dir; \
	  else \
	    $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
	  fi; \
	  if test -r $$cat; then \
	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
	  else \
	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
	    echo "installing $(srcdir)/$$cat as" \
		 "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
	  fi; \
	  if test -r $$cat.m; then \
	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
	  else \
	    if test -r $(srcdir)/$$cat.m ; then \
	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
		$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
	      echo "installing $(srcdir)/$$cat as" \
		   "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
	    else \
	      true; \
	    fi; \
	  fi; \
	done
	if test "$(PACKAGE)" = "glib"; then \
	  if test -r "$(MKINSTALLDIRS)"; then \
	    $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
	  else \
	    $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
	  fi; \
	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
	else \
	  : ; \
	fi

# Define this as empty until I found a useful application.
installcheck:

uninstall:
	catalogs='$(CATALOGS)'; \
	for cat in $$catalogs; do \
	  cat=`basename $$cat`; \
	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
	done
	if test "$(PACKAGE)" = "glib"; then \
	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
	fi

check: all

dvi info tags TAGS ID:

mostlyclean:
	rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
	rm -fr *.o

clean: mostlyclean

distclean: clean
	rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m

maintainer-clean: distclean
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."
	rm -f $(GMOFILES)

distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
dist distdir: $(DISTFILES)
	dists="$(DISTFILES)"; \
	for file in $$dists; do \
	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
	    || cp -p $(srcdir)/$$file $(distdir); \
	done

update-po: Makefile
	$(MAKE) $(GETTEXT_PACKAGE).pot
	tmpdir=`pwd`; \
	cd $(srcdir); \
	catalogs='$(CATALOGS)'; \
	for cat in $$catalogs; do \
	  cat=`basename $$cat`; \
	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
	  echo "$$lang:"; \
	  if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \
	    if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
	      rm -f $$tmpdir/$$lang.new.po; \
            else \
	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
	        :; \
	      else \
	        echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
	        rm -f $$tmpdir/$$lang.new.po; \
	        exit 1; \
	      fi; \
	    fi; \
	  else \
	    echo "msgmerge for $$cat failed!"; \
	    rm -f $$tmpdir/$$lang.new.po; \
	  fi; \
	done

# POTFILES is created from POTFILES.in by stripping comments, empty lines
# and Intltool tags (enclosed in square brackets), and appending a full
# relative path to them
POTFILES: POTFILES.in
	( if test 'x$(srcdir)' != 'x.'; then \
	    posrcprefix='$(top_srcdir)/'; \
	  else \
	    posrcprefix="../"; \
	  fi; \
	  rm -f $@-t $@ \
	    && (sed -e '/^#/d' 						\
		    -e "s/^\[.*\] +//" 					\
		    -e '/^[ 	]*$$/d' 				\
		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in	\
		| sed -e '$$s/\\$$//') > $@-t \
	    && chmod a-w $@-t \
	    && mv $@-t $@ )

Makefile: Makefile.in.in ../config.status POTFILES
	cd .. \
	  && $(SHELL) ./config.status $(subdir)/$@.in

# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+52 −91
Original line number Diff line number Diff line
@@ -41,8 +41,7 @@ const static gchar * bopomofo_select_keys[] = {
};

BopomofoContext::BopomofoContext (Config & config, PhoneticContext::Observer *observer)
    : PhoneticContext (config, observer),
      m_select_mode (FALSE)
    : PhoneticContext (config, observer)
{
}

@@ -50,19 +49,16 @@ BopomofoContext::~BopomofoContext (void)
{
}

void
BopomofoContext::reset ()
bool
BopomofoContext::insert (char ch)
{
    m_select_mode = FALSE;
    PhoneticContext::reset ();
    if (keyvalToBopomofo (ch) == BOPOMOFO_ZERO) {
        return false;
    }

gboolean
BopomofoContext::insert (gint ch)
{
    /* is full */
    if (G_UNLIKELY (m_text.length () >= MAX_PINYIN_LEN))
        return TRUE;
        return true;

    m_text.insert (m_cursor++, ch);

@@ -83,14 +79,14 @@ BopomofoContext::insert (gint ch)
            updateAuxiliaryText ();
        }
    }
    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::removeCharBefore (void)
{
    if (G_UNLIKELY (m_cursor == 0))
        return FALSE;
        return false;

    m_cursor --;
    m_text.erase (m_cursor, 1);
@@ -98,27 +94,27 @@ BopomofoContext::removeCharBefore (void)
    updateSpecialPhrases ();
    updatePinyin ();

    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::removeCharAfter (void)
{
    if (G_UNLIKELY (m_cursor == m_text.length ()))
        return FALSE;
        return false;

    m_text.erase (m_cursor, 1);
    updatePreeditText ();
    updateAuxiliaryText ();

    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::removeWordBefore (void)
{
    if (G_UNLIKELY (m_cursor == 0))
        return FALSE;
        return false;

    guint cursor;

@@ -137,57 +133,57 @@ BopomofoContext::removeWordBefore (void)
    updateSpecialPhrases ();
    updatePhraseEditor ();
    update ();
    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::removeWordAfter (void)
{
    if (G_UNLIKELY (m_cursor == m_text.length ()))
        return FALSE;
        return false;

    m_text.erase (m_cursor, -1);
    updatePreeditText ();
    updateAuxiliaryText ();
    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::moveCursorLeft (void)
{
    if (G_UNLIKELY (m_cursor == 0))
        return FALSE;
        return false;

    m_cursor --;
    updateSpecialPhrases ();
    updatePinyin ();

    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::moveCursorRight (void)
{
    if (G_UNLIKELY (m_cursor == m_text.length ()))
        return FALSE;
        return false;

    m_cursor ++;

    updateSpecialPhrases ();
    updatePinyin ();

    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::moveCursorLeftByWord (void)
{
    if (G_UNLIKELY (m_cursor == 0))
        return FALSE;
        return false;

    if (G_UNLIKELY (m_cursor > m_pinyin_len)) {
        m_cursor = m_pinyin_len;
        return TRUE;
        return true;
    }

    const Pinyin & p = *m_pinyin.back ();
@@ -199,20 +195,20 @@ BopomofoContext::moveCursorLeftByWord (void)
    updatePhraseEditor ();
    update ();

    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::moveCursorRightByWord (void)
{
    return moveCursorToEnd ();
}

gboolean
bool
BopomofoContext::moveCursorToBegin (void)
{
    if (G_UNLIKELY (m_cursor == 0))
        return FALSE;
        return false;

    m_cursor = 0;
    m_pinyin.clear ();
@@ -222,62 +218,20 @@ BopomofoContext::moveCursorToBegin (void)
    updatePhraseEditor ();
    update ();

    return TRUE;
    return true;
}

gboolean
bool
BopomofoContext::moveCursorToEnd (void)
{
    if (G_UNLIKELY (m_cursor == m_text.length ()))
        return FALSE;
        return false;

    m_cursor = m_text.length ();
    updateSpecialPhrases ();
    updatePinyin ();

    return TRUE;
}

bool
BopomofoContext::processKeyEvent (unsigned short key_event)
{
  const guint key_code = key_event & 0x00ff;
  const guint vkey_code = key_event & 0xff00;

  if (vkey_code == 0 && keyvalToBopomofo (key_code) != BOPOMOFO_ZERO) {
      m_select_mode = FALSE;
      return insert (key_code);
  }

  switch (vkey_code) {
  case VKEY_BOPOMOFO_SELECT_MODE:
      m_select_mode = TRUE;
      return TRUE;
      
  case VKEY_CANDIDATE_SELECT:
  case VKEY_CANDIDATE_FOCUS:
  case VKEY_CANDIDATE_RESET:
  case VKEY_PAGE_PREVIOUS:
  case VKEY_PAGE_NEXT:
  case VKEY_PAGE_BEGIN:
  case VKEY_PAGE_END:
      m_select_mode = TRUE;
      break;
      
  case VKEY_CURSOR_RIGHT:
  case VKEY_CURSOR_LEFT:
  case VKEY_CURSOR_RIGHT_BY_WORD:
  case VKEY_CURSOR_LEFT_BY_WORD:
  case VKEY_CURSOR_TO_BEGIN:
  case VKEY_CURSOR_TO_END:
  case VKEY_DELETE_CHARACTER_AFTER:
  case VKEY_DELETE_WORD_BEFORE:
  case VKEY_DELETE_WORD_AFTER:
      m_select_mode = FALSE;
      break;
  }

  return PhoneticContext::processKeyEvent (key_event);
    return true;
}

void
@@ -288,7 +242,7 @@ BopomofoContext::updatePinyin (void)
        m_pinyin_len = 0;
    }
    else {
        bopomofo.clear();
        std::wstring bopomofo;
        for(String::iterator i = m_text.begin (); i != m_text.end (); ++i) {
            bopomofo += bopomofo_char[keyvalToBopomofo (*i)];
        }
@@ -353,14 +307,14 @@ BopomofoContext::updateAuxiliaryText (void)
}

void
BopomofoContext::commit ()
BopomofoContext::commit (CommitType type)
{
    if (G_UNLIKELY (m_buffer.empty ()))
        return;

    m_buffer.clear ();

    if (m_select_mode) {
    if (G_LIKELY (type == TYPE_CONVERTED)) {
        m_buffer << m_phrase_editor.selectedString ();

        const gchar *p;
@@ -376,13 +330,20 @@ BopomofoContext::commit ()
        while (*p != '\0') {
            m_buffer.appendUnichar ((gunichar)bopomofo_char[keyvalToBopomofo (*p++)]);
        }

        m_phrase_editor.commit ();
    }
    else {
        m_buffer << m_text;
    else if (type == TYPE_PHONETIC) {
        const gchar *p = m_text;
        while (*p != '\0') {
            m_buffer.appendUnichar ((gunichar)bopomofo_char[keyvalToBopomofo (*p++)]);
        }
    } else {
        m_buffer = m_text;
        m_phrase_editor.reset ();
    }

    m_phrase_editor.commit ();
    reset ();
    resetContext ();
    update ();
    PhoneticContext::commitText (m_buffer);
}
+19 −24
Original line number Diff line number Diff line
@@ -33,36 +33,31 @@ class BopomofoContext : public PhoneticContext {

public:
    BopomofoContext (Config & config, PhoneticContext::Observer *observer);
    ~BopomofoContext (void);
    bool processKeyEvent (unsigned short key_event);
    void reset ();
    virtual ~BopomofoContext (void);

protected:
    std::wstring bopomofo;
    gboolean m_select_mode;
    /* API of InputContext */
    virtual bool insert (char ch);
    virtual void commit (CommitType type);

    gboolean processBopomofo (guint keyval, guint keycode, guint modifiers);
    virtual bool removeCharBefore (void);
    virtual bool removeCharAfter (void);
    virtual bool removeWordBefore (void);
    virtual bool removeWordAfter (void);

    void updateAuxiliaryText ();
    void updatePinyin ();
    void updatePreeditText ();
    virtual bool moveCursorLeft (void);
    virtual bool moveCursorRight (void);
    virtual bool moveCursorLeftByWord (void);
    virtual bool moveCursorRightByWord (void);
    virtual bool moveCursorToBegin (void);
    virtual bool moveCursorToEnd (void);

    void commit ();
protected:
    virtual void updateAuxiliaryText ();
    virtual void updatePinyin ();
    virtual void updatePreeditText ();

    gboolean insert (gint ch);
    bool processBopomofo (guint keyval, guint keycode, guint modifiers);
    gint keyvalToBopomofo(gint ch);

    gboolean removeCharBefore (void);
    gboolean removeCharAfter (void);
    gboolean removeWordBefore (void);
    gboolean removeWordAfter (void);

    gboolean moveCursorLeft (void);
    gboolean moveCursorRight (void);
    gboolean moveCursorLeftByWord (void);
    gboolean moveCursorRightByWord (void);
    gboolean moveCursorToBegin (void);
    gboolean moveCursorToEnd (void);
};

};
+0 −14
Original line number Diff line number Diff line
@@ -63,7 +63,6 @@ struct Config::ConfigImpl {
    unsigned int m_option_mask;
    unsigned int m_double_pinyin_schema;
    unsigned int m_bopomofo_keyboard_mapping;
    unsigned int m_page_size;
};

Config::Config ()
@@ -108,12 +107,6 @@ Config::bopomofoKeyboardMapping (void) const
    return m_impl->m_bopomofo_keyboard_mapping;
}

unsigned int
Config::pageSize (void) const
{
    return m_impl->m_page_size;
}

void
Config::setOption (unsigned int value)
{
@@ -144,18 +137,11 @@ Config::setBopomofoKeyboardMapping (unsigned int value)
    m_impl->m_bopomofo_keyboard_mapping = value;
}

void
Config::setPageSize (unsigned int value)
{
    m_impl->m_page_size = value;
}

void
Config::readDefaultValues ()
{
    m_impl->m_option = PINYIN_DEFAULT_OPTION;
    m_impl->m_option_mask = PINYIN_INCOMPLETE_PINYIN | PINYIN_CORRECT_ALL;
    m_impl->m_page_size = 5;
    m_impl->m_double_pinyin_schema = 0;
    m_impl->m_mode_simp = TRUE;
    m_impl->m_special_phrases = TRUE;
+2 −4
Original line number Diff line number Diff line
@@ -48,14 +48,12 @@ public:
    bool specialPhrases (void) const;
    bool modeSimp (void) const;
    unsigned int bopomofoKeyboardMapping (void) const;
    unsigned int pageSize (void) const;

    void setOption (unsigned int value);
    void setDoublePinyinSchema (unsigned int value);
    void setSpecialPhrases (bool value);
    void setModeSimp (bool value);
    void setBopomofoKeyboardMapping (unsigned int value);
    void setPageSize (unsigned int value);

protected:
    struct ConfigImpl;
@@ -67,10 +65,10 @@ class PinyinConfig : public Config {
public:
    static void init ();
    static PinyinConfig & instance (void);
    virtual void readDefaultValues (void);

protected:
    PinyinConfig ();
    virtual void readDefaultValues (void);

private:
    struct PinyinConfigImpl;
@@ -82,10 +80,10 @@ class BopomofoConfig : public Config {
public:
    static void init ();
    static BopomofoConfig & instance (void);
    virtual void readDefaultValues (void);

protected:
    BopomofoConfig ();
    virtual void readDefaultValues (void);

private:
    struct BopomofoConfigImpl;
Loading