/* * Copyright 2016 (c) Anna Schumaker. */ #include static const GTypeInfo queue_type_info; static const GInterfaceInfo queue_tree_model; static GObjectClass *parent_class = NULL; static GtkTreeModelFlags _queue_model_get_flags(GtkTreeModel *model) { return GTK_TREE_MODEL_LIST_ONLY; } static void _queue_model_init(GuiQueueModel *model) { model->gqm_stamp = g_random_int(); } static void _queue_model_finalize(GObject *object) { parent_class->finalize(object); } static void _queue_model_class_init(GuiQueueModelClass *class) { GObjectClass *object_class; parent_class = g_type_class_peek_parent(class); object_class = (GObjectClass *)class; object_class->finalize = _queue_model_finalize; } static void _queue_tree_model_init(GtkTreeModelIface *iface) { iface->get_flags = _queue_model_get_flags; } GuiQueueModel *gui_queue_model_new() { GuiQueueModel *model = g_object_new(GUI_QUEUE_MODEL_TYPE, NULL); g_assert(model != NULL); return model; } GType gui_queue_model_get_type() { static GType queue_type = 0; if (queue_type == 0) { queue_type = g_type_register_static(G_TYPE_OBJECT, "GuiQueueModel", &queue_type_info, (GTypeFlags)0); g_type_add_interface_static(queue_type, GTK_TYPE_TREE_MODEL, &queue_tree_model); } return queue_type; } static const GTypeInfo queue_type_info = { .class_size = sizeof(GuiQueueModelClass), .base_init = NULL, .base_finalize = NULL, .class_init = (GClassInitFunc)_queue_model_class_init, .class_finalize = NULL, .class_data = NULL, .instance_size = sizeof(GuiQueueModel), .n_preallocs = 0, .instance_init = (GInstanceInitFunc)_queue_model_init, }; static const GInterfaceInfo queue_tree_model = { .interface_init = (GInterfaceInitFunc)_queue_tree_model_init, .interface_finalize = NULL, .interface_data = NULL, };