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
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* Author :
* Damon Chaplin <damon@helixcode.com>
*
* Copyright 1999, Helix Code, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
#ifndef _E_SHORTCUT_MODEL_H_
#define _E_SHORTCUT_MODEL_H_
#include <gtk/gtkobject.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*
* EShortcutModel keeps track of a number of groups of shortcuts.
* Each shortcut has a URL and a short textual name.
* It is used as the model of the EShortcutBar.
*/
typedef struct _EShortcutModel EShortcutModel;
typedef struct _EShortcutModelClass EShortcutModelClass;
#define E_TYPE_SHORTCUT_MODEL (e_shortcut_model_get_type ())
#define E_SHORTCUT_MODEL(obj) GTK_CHECK_CAST (obj, e_shortcut_model_get_type (), EShortcutModel)
#define E_SHORTCUT_MODEL_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_shortcut_model_get_type (), EShortcutModelClass)
#define E_IS_SHORTCUT_MODEL(obj) GTK_CHECK_TYPE (obj, e_shortcut_model_get_type ())
struct _EShortcutModel
{
GtkObject object;
/* This is a private array of EShortcutModelGroup elements. */
GArray *groups;
};
struct _EShortcutModelClass
{
GtkObjectClass parent_class;
/*
* Signals - These act like virtual functions as well as notification
* signals. The class function is run first and does the actual action.
*/
void (*group_added) (EShortcutModel *shortcut_model,
gint group_num,
const gchar *group_name);
void (*group_removed) (EShortcutModel *shortcut_model,
gint group_num);
void (*item_added) (EShortcutModel *shortcut_model,
gint group_num,
gint item_num,
const gchar *item_url,
const gchar *item_name);
void (*item_removed) (EShortcutModel *shortcut_model,
gint group_num,
gint item_num);
/*
* Virtual methods.
*/
gint (*get_num_groups) (EShortcutModel *shortcut_model);
gint (*get_num_items) (EShortcutModel *shortcut_model,
gint group_num);
/* This returns a copy of the group name. */
gchar* (*get_group_name) (EShortcutModel *shortcut_model,
gint group_num);
/* This returns a copy of the item url and name. */
void (*get_item_info) (EShortcutModel *shortcut_model,
gint group_num,
gint item_num,
gchar **item_url,
gchar **item_name);
};
GtkType e_shortcut_model_get_type (void);
EShortcutModel* e_shortcut_model_new (void);
/* Adds a new group at the given position, or last if position is -1.
It returns the index of the new group. */
gint e_shortcut_model_add_group (EShortcutModel *shortcut_model,
gint position,
const gchar *group_name);
void e_shortcut_model_remove_group (EShortcutModel *shortcut_model,
gint group_num);
/* Adds a new item to a group at the given position, or last if position is -1.
It returns the index of the new item within the group. */
gint e_shortcut_model_add_item (EShortcutModel *shortcut_model,
gint group_num,
gint position,
const gchar *item_url,
const gchar *item_name);
void e_shortcut_model_remove_item (EShortcutModel *shortcut_model,
gint group_num,
gint item_num);
gint e_shortcut_model_get_num_groups(EShortcutModel *shortcut_model);
gint e_shortcut_model_get_num_items (EShortcutModel *shortcut_model,
gint group_num);
/* The group_name should be freed after use. */
gchar* e_shortcut_model_get_group_name(EShortcutModel *shortcut_model,
gint group_num);
/* The item_url and item_name should be freed after use. */
void e_shortcut_model_get_item_info (EShortcutModel *shortcut_model,
gint group_num,
gint item_num,
gchar **item_url,
gchar **item_name);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _E_SHORTCUT_MODEL_H_ */
|