UNIXworkcode

1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3 * 4 * Copyright 2017 Olaf Wintermann. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #ifndef MODEL_H 30 #define MODEL_H 31 32 #include "../ui/toolkit.h" 33 #include "../common/context.h" 34 #include "../ui/tree.h" 35 36 #ifdef __cplusplus 37 extern "C" { 38 #endif 39 40 typedef struct UiListModel UiListModel; 41 42 /* 43 * UiList to GtkTreeModel wrapper 44 */ 45 struct UiListModel { 46 GObject object; 47 UiObject *obj; 48 UiModel *model; 49 UiVar *var; 50 GType *columntypes; 51 int numcolumns; 52 int stamp; 53 }; 54 55 /* 56 * initialize the class and register the type 57 */ 58 void ui_list_init(); 59 60 /* 61 * Creates a UiListModel for a given UiList 62 */ 63 UiListModel* ui_list_model_new(UiObject *obj, UiVar *var, UiModel *info); 64 65 void ui_list_model_dispose(GObject *obj); 66 void ui_list_model_finalize(GObject *obj); 67 68 69 // interface functions 70 71 GtkTreeModelFlags ui_list_model_get_flags(GtkTreeModel *tree_model); 72 73 gint ui_list_model_get_n_columns(GtkTreeModel *tree_model); 74 75 GType ui_list_model_get_column_type(GtkTreeModel *tree_model, gint index); 76 77 gboolean ui_list_model_get_iter( 78 GtkTreeModel *tree_model, 79 GtkTreeIter *iter, 80 GtkTreePath *path); 81 82 GtkTreePath* ui_list_model_get_path( 83 GtkTreeModel *tree_model, 84 GtkTreeIter *iter); 85 86 void ui_list_model_get_value( 87 GtkTreeModel *tree_model, 88 GtkTreeIter *iter, 89 gint column, 90 GValue *value); 91 92 gboolean ui_list_model_iter_next( 93 GtkTreeModel *tree_model, 94 GtkTreeIter *iter); 95 96 gboolean ui_list_model_iter_children( 97 GtkTreeModel *tree_model, 98 GtkTreeIter *iter, 99 GtkTreeIter *parent); 100 101 gboolean ui_list_model_iter_has_child( 102 GtkTreeModel *tree_model, 103 GtkTreeIter *iter); 104 105 gint ui_list_model_iter_n_children( 106 GtkTreeModel *tree_model, 107 GtkTreeIter *iter); 108 109 gboolean ui_list_model_iter_nth_child( 110 GtkTreeModel *tree_model, 111 GtkTreeIter *iter, 112 GtkTreeIter *parent, 113 gint n); 114 115 gboolean ui_list_model_iter_parent( 116 GtkTreeModel *tree_model, 117 GtkTreeIter *iter, 118 GtkTreeIter *child); 119 120 /* dnd */ 121 122 gboolean ui_list_model_drag_data_received( 123 GtkTreeDragDest *drag_dest, 124 GtkTreePath *dest, 125 GtkSelectionData *selection_data); 126 127 gboolean ui_list_model_row_drop_possible( 128 GtkTreeDragDest *drag_dest, 129 GtkTreePath *dest_path, 130 GtkSelectionData *selection_data); 131 132 gboolean ui_list_model_row_draggable( 133 GtkTreeDragSource *drag_source, 134 GtkTreePath *path); 135 136 gboolean ui_list_model_drag_data_get( 137 GtkTreeDragSource *drag_source, 138 GtkTreePath *path, 139 GtkSelectionData *selection_data); 140 141 gboolean ui_list_model_drag_data_delete( 142 GtkTreeDragSource *drag_source, 143 GtkTreePath *path); 144 145 #ifdef __cplusplus 146 } 147 #endif 148 149 #endif /* MODEL_H */ 150