summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2009-02-15 14:25:38 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2009-02-15 14:25:38 +0800
commit3693f5e4e4066ca76cb3412ad5ddfb58b3e0994d (patch)
tree6dcb07f50fb905d2665453fd28329bfe61e9aac7
parentfa8ead03037eb3cd5a522db1452a847fcd32ac57 (diff)
downloadibus-3693f5e4e4066ca76cb3412ad5ddfb58b3e0994d.tar.gz
ibus-3693f5e4e4066ca76cb3412ad5ddfb58b3e0994d.tar.xz
ibus-3693f5e4e4066ca76cb3412ad5ddfb58b3e0994d.zip
Implement several methods of IBusLookupTable.
-rw-r--r--src/ibuslookuptable.c45
-rw-r--r--src/ibuslookuptable.h11
2 files changed, 56 insertions, 0 deletions
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);