From 3693f5e4e4066ca76cb3412ad5ddfb58b3e0994d Mon Sep 17 00:00:00 2001 From: Huang Peng Date: Sun, 15 Feb 2009 14:25:38 +0800 Subject: Implement several methods of IBusLookupTable. --- src/ibuslookuptable.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/ibuslookuptable.h | 11 +++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/ibuslookuptable.c b/src/ibuslookuptable.c index 53ea6d7..37342c5 100644 --- a/src/ibuslookuptable.c +++ b/src/ibuslookuptable.c @@ -223,6 +223,8 @@ ibus_lookup_table_new (guint page_size, gboolean cursor_visible, gboolean round) { + g_assert (page_size > 0); + IBusLookupTable *table; table= g_object_new (IBUS_TYPE_LOOKUP_TABLE, NULL); @@ -278,19 +280,62 @@ ibus_lookup_table_set_cursor_pos (IBusLookupTable *table, guint cursor_pos) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); + g_assert (cursor_pos < table->candidates->len); table->cursor_pos = cursor_pos; } +guint +ibus_lookup_table_get_cursor_pos (IBusLookupTable *table) +{ + g_assert (IBUS_IS_LOOKUP_TABLE (table)); + + return table->cursor_pos; +} + +guint +ibus_lookup_table_get_cursor_in_page (IBusLookupTable *table) +{ + g_assert (IBUS_IS_LOOKUP_TABLE (table)); + + return table->cursor_pos % table->page_size; +} + +void +ibus_lookup_table_set_cursor_visible (IBusLookupTable *table, + gboolean visible) +{ + g_assert (IBUS_IS_LOOKUP_TABLE (table)); + + table->cursor_visible = visible; +} + +gboolean +ibus_lookup_table_is_cursor_visible (IBusLookupTable *table) +{ + g_assert (IBUS_IS_LOOKUP_TABLE (table)); + + return table->cursor_visible; +} + void ibus_lookup_table_set_page_size (IBusLookupTable *table, guint page_size) { g_assert (IBUS_IS_LOOKUP_TABLE (table)); + g_assert (page_size > 0); table->page_size = page_size; } +guint +ibus_lookup_table_get_page_size (IBusLookupTable *table) +{ + g_assert (IBUS_IS_LOOKUP_TABLE (table)); + + return table->page_size; +} + gboolean ibus_lookup_table_page_up (IBusLookupTable *table) { diff --git a/src/ibuslookuptable.h b/src/ibuslookuptable.h index 87e9b0f..ede02b1 100644 --- a/src/ibuslookuptable.h +++ b/src/ibuslookuptable.h @@ -76,9 +76,20 @@ IBusText *ibus_lookup_table_get_candidate void ibus_lookup_table_set_cursor_pos (IBusLookupTable *table, guint cursor_pos); +guint ibus_lookup_table_get_cursor_pos + (IBusLookupTable *table); +void ibus_lookup_table_set_cursor_visible + (IBusLookupTable *table, + gboolean visible); +gboolean ibus_lookup_table_is_cursor_visible + (IBusLookupTable *table); +guint ibus_lookup_table_get_cursor_in_page + (IBusLookupTable *table); void ibus_lookup_table_set_page_size (IBusLookupTable *table, guint page_size); +guint ibus_lookup_table_get_page_size + (IBusLookupTable *table); void ibus_lookup_table_clear (IBusLookupTable *table); gboolean ibus_lookup_table_page_up (IBusLookupTable *table); gboolean ibus_lookup_table_page_down(IBusLookupTable *table); -- cgit