aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-tree-memory-callbacks.h
blob: df47e9a4911216a92576c98891862cc4d731bfec (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/*
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) version 3.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with the program; if not, see <http://www.gnu.org/licenses/>
 *
 *
 * Authors:
 *      Chris Lahey <clahey@ximian.com>
 *
 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
 *
 */

#if !defined (__E_UTIL_H_INSIDE__) && !defined (LIBEUTIL_COMPILATION)
#error "Only <e-util/e-util.h> should be included directly."
#endif

#ifndef _E_TREE_MEMORY_CALLBACKS_H_
#define _E_TREE_MEMORY_CALLBACKS_H_

#include <e-util/e-tree-memory.h>

/* Standard GObject macros */
#define E_TYPE_TREE_MEMORY_CALLBACKS \
    (e_tree_memory_callbacks_get_type ())
#define E_TREE_MEMORY_CALLBACKS(obj) \
    (G_TYPE_CHECK_INSTANCE_CAST \
    ((obj), E_TYPE_TREE_MEMORY_CALLBACKS, ETreeMemoryCallbacks))
#define E_TREE_MEMORY_CALLBACKS_CLASS(cls) \
    (G_TYPE_CHECK_CLASS_CAST \
    ((cls), E_TYPE_TREE_MEMORY_CALLBACKS, ETreeMemoryCallbacksClass))
#define E_IS_TREE_MEMORY_CALLBACKS(obj) \
    (G_TYPE_CHECK_INSTANCE_TYPE \
    ((obj), E_TYPE_TREE_MEMORY_CALLBACKS))
#define E_IS_TREE_MEMORY_CALLBACKS_CLASS(cls) \
    (G_TYPE_CHECK_CLASS_TYPE \
    ((cls), E_TYPE_TREE_MEMORY_CALLBACKS))
#define E_TREE_MEMORY_CALLBACKS_GET_CLASS(obj) \
    (G_TYPE_INSTANCE_GET_CLASS \
    ((obj), E_TYPE_TREE_MEMORY_CALLBACKS, ETreeMemoryCallbacksClass))

G_BEGIN_DECLS

typedef struct _ETreeMemoryCallbacks ETreeMemoryCallbacks;
typedef struct _ETreeMemoryCallbacksClass ETreeMemoryCallbacksClass;

typedef GdkPixbuf * (*ETreeMemoryCallbacksIconAtFn)
                        (ETreeModel *etree,
                         ETreePath path,
                         gpointer model_data);

typedef gint        (*ETreeMemoryCallbacksColumnCountFn)
                        (ETreeModel *etree,
                         gpointer model_data);

typedef gboolean    (*ETreeMemoryCallbacksHasSaveIdFn)
                        (ETreeModel *etree,
                         gpointer model_data);
typedef gchar *     (*ETreeMemoryCallbacksGetSaveIdFn)
                        (ETreeModel *etree,
                         ETreePath path,
                         gpointer model_data);

typedef gboolean    (*ETreeMemoryCallbacksHasGetNodeByIdFn)
                        (ETreeModel *etree,
                         gpointer model_data);
typedef ETreePath   (*ETreeMemoryCallbacksGetNodeByIdFn)
                        (ETreeModel *etree,
                         const gchar *save_id,
                         gpointer model_data);

typedef gpointer    (*ETreeMemoryCallbacksValueAtFn)
                        (ETreeModel *etree,
                         ETreePath path,
                         gint col,
                         gpointer model_data);
typedef void        (*ETreeMemoryCallbacksSetValueAtFn)
                        (ETreeModel *etree,
                         ETreePath path,
                         gint col,
                         gconstpointer val,
                         gpointer model_data);
typedef gboolean    (*ETreeMemoryCallbacksIsEditableFn)
                        (ETreeModel *etree,
                         ETreePath path,
                         gint col,
                         gpointer model_data);

typedef gpointer    (*ETreeMemoryCallbacksDuplicateValueFn)
                        (ETreeModel *etm,
                         gint col,
                         gconstpointer val,
                         gpointer data);
typedef void        (*ETreeMemoryCallbacksFreeValueFn)
                        (ETreeModel *etm,
                         gint col,
                         gpointer val,
                         gpointer data);
typedef gpointer    (*ETreeMemoryCallbacksInitializeValueFn)
                        (ETreeModel *etm,
                         gint col,
                         gpointer data);
typedef gboolean    (*ETreeMemoryCallbacksValueIsEmptyFn)
                        (ETreeModel *etm,
                         gint col,
                         gconstpointer val,
                         gpointer data);
typedef gchar *     (*ETreeMemoryCallbacksValueToStringFn)
                        (ETreeModel *etm,
                         gint col,
                         gconstpointer val,
                         gpointer data);

struct _ETreeMemoryCallbacks {
    ETreeMemory parent;

    ETreeMemoryCallbacksIconAtFn icon_at;

    ETreeMemoryCallbacksColumnCountFn     column_count;

    ETreeMemoryCallbacksHasSaveIdFn       has_save_id;
    ETreeMemoryCallbacksGetSaveIdFn       get_save_id;

    ETreeMemoryCallbacksHasGetNodeByIdFn  has_get_node_by_id;
    ETreeMemoryCallbacksGetNodeByIdFn     get_node_by_id;

    ETreeMemoryCallbacksValueAtFn         sort_value_at;
    ETreeMemoryCallbacksValueAtFn         value_at;
    ETreeMemoryCallbacksSetValueAtFn      set_value_at;
    ETreeMemoryCallbacksIsEditableFn      is_editable;

    ETreeMemoryCallbacksDuplicateValueFn  duplicate_value;
    ETreeMemoryCallbacksFreeValueFn       free_value;
    ETreeMemoryCallbacksInitializeValueFn initialize_value;
    ETreeMemoryCallbacksValueIsEmptyFn    value_is_empty;
    ETreeMemoryCallbacksValueToStringFn   value_to_string;

    gpointer model_data;
};

struct _ETreeMemoryCallbacksClass {
    ETreeMemoryClass parent_class;
};

GType       e_tree_memory_callbacks_get_type
                (void) G_GNUC_CONST;
ETreeModel *    e_tree_memory_callbacks_new
                (ETreeMemoryCallbacksIconAtFn icon_at,

                 ETreeMemoryCallbacksColumnCountFn column_count,

                 ETreeMemoryCallbacksHasSaveIdFn has_save_id,
                 ETreeMemoryCallbacksGetSaveIdFn get_save_id,

                 ETreeMemoryCallbacksHasGetNodeByIdFn has_get_node_by_id,
                 ETreeMemoryCallbacksGetNodeByIdFn get_node_by_id,

                 ETreeMemoryCallbacksValueAtFn sort_value_at,
                 ETreeMemoryCallbacksValueAtFn value_at,
                 ETreeMemoryCallbacksSetValueAtFn set_value_at,
                 ETreeMemoryCallbacksIsEditableFn is_editable,

                 ETreeMemoryCallbacksDuplicateValueFn duplicate_value,
                 ETreeMemoryCallbacksFreeValueFn free_value,
                 ETreeMemoryCallbacksInitializeValueFn initialize_value,
                 ETreeMemoryCallbacksValueIsEmptyFn value_is_empty,
                 ETreeMemoryCallbacksValueToStringFn value_to_string,

                 gpointer model_data);

G_END_DECLS

#endif /* _E_TREE_MEMORY_CALLBACKS_H_ */