diff options
Diffstat (limited to 'walls_model.h')
-rw-r--r-- | walls_model.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/walls_model.h b/walls_model.h new file mode 100644 index 0000000..a5cc779 --- /dev/null +++ b/walls_model.h @@ -0,0 +1,63 @@ +#ifndef _WALLS_MODEL_H_ +#define _WALLS_MODEL_H_ + +#include <gtk/gtk.h> +#include <glib.h> + +#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_ID, + 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_append_record(WallsModel*, void*); + +#endif |