summaryrefslogtreecommitdiff
path: root/walls_model.h
diff options
context:
space:
mode:
Diffstat (limited to 'walls_model.h')
-rw-r--r--walls_model.h63
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