From 0d4b1caee4135b6e0dcd2aa3bd6ce2387c1c3773 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Sun, 25 Apr 2010 17:28:49 +0200 Subject: Added a tree model to display tags in tree structures. Adding children to tags is not yet implemented. --- tag_model.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 tag_model.h (limited to 'tag_model.h') diff --git a/tag_model.h b/tag_model.h new file mode 100644 index 0000000..43e59a1 --- /dev/null +++ b/tag_model.h @@ -0,0 +1,58 @@ +#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 -- cgit v1.2.3