diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2009-02-05 10:39:56 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2009-02-05 10:39:56 +0800 |
commit | aedad1ea0a7fef604aa27f4b58433fd8f2ece29e (patch) | |
tree | ffcb531d8474bde18b90341bcd4eb639edd74525 /src/ibusproperty.h | |
parent | 41ad46305a88637dd99f00a2d2a3f455505d357b (diff) | |
download | ibus-aedad1ea0a7fef604aa27f4b58433fd8f2ece29e.tar.gz ibus-aedad1ea0a7fef604aa27f4b58433fd8f2ece29e.tar.xz ibus-aedad1ea0a7fef604aa27f4b58433fd8f2ece29e.zip |
re-implement ibus in c language.
Diffstat (limited to 'src/ibusproperty.h')
-rw-r--r-- | src/ibusproperty.h | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/src/ibusproperty.h b/src/ibusproperty.h new file mode 100644 index 0000000..7cd90c9 --- /dev/null +++ b/src/ibusproperty.h @@ -0,0 +1,140 @@ +/* vim:set et sts=4: */ +/* IBus - The Input Bus + * Copyright (C) 2008-2009 Huang Peng <shawn.p.huang@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifndef __IBUS_PROPERTY_H_ +#define __IBUS_PROPERTY_H_ + +#include "ibusserializable.h" +#include "ibustext.h" + +G_BEGIN_DECLS + +/* + * Type macros. + */ +#define IBUS_TYPE_PROPERTY (ibus_property_get_type ()) +#define IBUS_TYPE_PROP_LIST (ibus_prop_list_get_type ()) + +/* define IBusProperty macros */ +#define IBUS_TYPE_PROPERTY \ + (ibus_property_get_type ()) +#define IBUS_PROPERTY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROPERTY, IBusProperty)) +#define IBUS_PROPERTY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROPERTY, IBusPropertyClass)) +#define IBUS_IS_PROPERTY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROPERTY)) +#define IBUS_IS_PROPERTY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROPERTY)) +#define IBUS_PROPERTY_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROPERTY, IBusPropertyClass)) + +/* define IBusPropList macros */ +#define IBUS_TYPE_PROP_LIST \ + (ibus_prop_list_get_type ()) +#define IBUS_PROP_LIST(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROP_LIST, IBusPropList)) +#define IBUS_PROP_LIST_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROP_LIST, IBusPropListClass)) +#define IBUS_IS_PROP_LIST(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROP_LIST)) +#define IBUS_IS_PROP_LIST_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROP_LIST)) +#define IBUS_PROP_LIST_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass)) + + +typedef enum { + PROP_TYPE_NORMAL = 0, + PROP_TYPE_TOGGLE = 1, + PROP_TYPE_RADIO = 2, + PROP_TYPE_MENU = 3, + PROP_TYPE_SEPARATOR = 4, +} IBusPropType; + +typedef enum { + PROP_STATE_UNCHECKED = 0, + PROP_STATE_CHECKED = 1, + PROP_STATE_INCONSISTENT = 2, +} IBusPropState; + + +typedef struct _IBusProperty IBusProperty; +typedef struct _IBusPropertyClass IBusPropertyClass; +typedef struct _IBusPropList IBusPropList; +typedef struct _IBusPropListClass IBusPropListClass; + +struct _IBusProperty { + IBusSerializable parent; + + gchar *key; + gchar *icon; + IBusText *label; + IBusText *tooltip; + + gboolean sensitive; + gboolean visible; + guint type; + guint state; + + IBusPropList *sub_props; +}; + +struct _IBusPropertyClass { + IBusSerializableClass parent; +}; + +struct _IBusPropList { + IBusSerializable parent; + + GArray *properties; +}; + +struct _IBusPropListClass { + IBusSerializableClass parent; +}; + +GType ibus_property_get_type (); +IBusProperty *ibus_property_new (const gchar *key, + IBusPropType type, + IBusText *label, + const gchar *icon, + IBusText *tooltip, + gboolean sensitive, + gboolean visible, + IBusPropState state, + IBusPropList *prop_list); +void ibus_property_set_label (IBusProperty *prop, + IBusText *label); +void ibus_property_set_visible (IBusProperty *prop, + gboolean visible); +void ibus_property_set_sub_props(IBusProperty *prop, + IBusPropList *prop_list); + +GType ibus_prop_list_get_type (); +IBusPropList *ibus_prop_list_new (); +void ibus_prop_list_append (IBusPropList *prop_list, + IBusProperty *prop); +IBusProperty *ibus_prop_list_get (IBusPropList *prop_list, + guint index); +gboolean ibus_prop_list_update_property + (IBusPropList *prop_list, + IBusProperty *prop); +G_END_DECLS +#endif |