#ifndef _WALLS_MODEL_H_ #define _WALLS_MODEL_H_ #include #include #include "db.h" #define MODEL_TYPE_WALLS (walls_model_get_type()) #define WALLS_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), MODEL_TYPE_WALLS, WallsModel)) #define WALLS_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), MODEL_TYPE_WALLS, WallsModelClass)) #define MODEL_IS_WALLS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), MODEL_TYPE_WALLS)) #define MODEL_IS_WALLS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), MODEL_TYPE_WALLS)) #define WALLS_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), MODEL_TYPE_WALLS, WallsModelClass)) enum { WALLS_MODEL_TYPE_DIR = 0, WALLS_MODEL_TYPE_WALL, }; enum { WALLS_MODEL_COL_NAME = 0, WALLS_MODEL_COL_SIZE, WALLS_MODEL_COL_WIDTH, WALLS_MODEL_COL_HEIGHT, WALLS_MODEL_N_COLUMNS, }; typedef struct _WallsModelRecord WallsModelRecord; typedef struct _WallsModel WallsModel; typedef struct _WallsModelClass WallsModelClass; struct _WallsModelRecord { guint type; union { struct directory_t dir; struct wallpaper_t wall; }; WallsModelRecord *parent; GArray *children; guint pos; }; struct _WallsModel { GObject parent; guint num_rows; GArray *rows; gint n_columns; GType column_types[WALLS_MODEL_N_COLUMNS]; gint stamp; }; struct _WallsModelClass { GObjectClass parent_class; }; GType walls_model_get_type(); WallsModel *walls_model_new(); void walls_model_get_dir_record(GtkTreeModel*, GtkTreeIter*, struct directory_t**); void walls_model_get_wall_record(GtkTreeModel*, GtkTreeIter*, struct wallpaper_t**); guint walls_model_get_record_type(GtkTreeModel*, GtkTreeIter*); #endif