#ifndef _TAG_MODEL_H_ #define _TAG_MODEL_H_ #include #include #include "db.h" #define MODEL_TYPE_TAG (tag_model_get_type()) #define TAG_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), MODEL_TYPE_TAG, TagModel)) #define TAG_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), MODEL_TYPE_TAG, TagModelClass)) #define MODEL_IS_TAG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), MODEL_TYPE_TAG)) #define MODEL_IS_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), MODEL_TYPE_TAG)) #define TAG_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), MODEL_TYPE_TAG, TagModelClass)) enum { TAG_MODEL_COL_CHECKED = 0, TAG_MODEL_COL_INCONSISTENT, TAG_MODEL_COL_NAME, TAG_MODEL_N_COLUMNS, }; typedef struct _TagModelRecord TagModelRecord; typedef struct _TagModel TagModel; typedef struct _TagModelClass TagModelClass; struct _TagModelRecord { struct tag_t tag; gboolean checked; gboolean inconsistent; TagModelRecord *parent; GArray *children; guint pos; }; struct _TagModel { GObject parent; guint num_rows; GArray *rows; gint n_columns; GType column_types[TAG_MODEL_N_COLUMNS]; gint stamp; }; struct _TagModelClass { GObjectClass parent_class; }; GType tag_model_get_type(); TagModel *tag_model_new(); void tag_model_get_tag_record(GtkTreeModel*, GtkTreeIter*, struct tag_t**); gboolean tag_model_get_checked(GtkTreeModel*, GtkTreeIter*); void tag_model_set_checked(GtkTreeModel*, GtkTreeIter*, gboolean); gboolean tag_model_get_inconsistent(GtkTreeModel*, GtkTreeIter*); void tag_model_set_inconsistent(GtkTreeModel*, GtkTreeIter*, gboolean); #endif