2
* Copyright (C) 2004 Red Hat, Inc.
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2 of the License, or (at your option) any later version.
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with this library; if not, write to the
16
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17
* Boston, MA 02111-1307, USA.
20
#ifndef __GMENU_TREE_H__
21
#define __GMENU_TREE_H__
23
#ifndef GMENU_I_KNOW_THIS_IS_UNSTABLE
24
#error "libgnome-menu should only be used if you understand that it's subject to frequent change, and is not supported as a fixed API/ABI or as part of the platform"
31
typedef struct GMenuTree GMenuTree;
32
typedef struct GMenuTreeItem GMenuTreeItem;
33
typedef struct GMenuTreeDirectory GMenuTreeDirectory;
34
typedef struct GMenuTreeEntry GMenuTreeEntry;
35
typedef struct GMenuTreeSeparator GMenuTreeSeparator;
36
typedef struct GMenuTreeHeader GMenuTreeHeader;
37
typedef struct GMenuTreeAlias GMenuTreeAlias;
39
typedef void (*GMenuTreeChangedFunc) (GMenuTree *tree,
44
GMENU_TREE_ITEM_INVALID = 0,
45
GMENU_TREE_ITEM_DIRECTORY,
46
GMENU_TREE_ITEM_ENTRY,
47
GMENU_TREE_ITEM_SEPARATOR,
48
GMENU_TREE_ITEM_HEADER,
52
#define GMENU_TREE_ITEM(i) ((GMenuTreeItem *)(i))
53
#define GMENU_TREE_DIRECTORY(i) ((GMenuTreeDirectory *)(i))
54
#define GMENU_TREE_ENTRY(i) ((GMenuTreeEntry *)(i))
55
#define GMENU_TREE_SEPARATOR(i) ((GMenuTreeSeparator *)(i))
56
#define GMENU_TREE_HEADER(i) ((GMenuTreeHeader *)(i))
57
#define GMENU_TREE_ALIAS(i) ((GMenuTreeAlias *)(i))
61
GMENU_TREE_FLAGS_NONE = 0,
62
GMENU_TREE_FLAGS_INCLUDE_EXCLUDED = 1 << 0,
63
GMENU_TREE_FLAGS_SHOW_EMPTY = 1 << 1,
64
GMENU_TREE_FLAGS_INCLUDE_NODISPLAY = 1 << 2,
65
GMENU_TREE_FLAGS_SHOW_ALL_SEPARATORS = 1 << 3,
66
GMENU_TREE_FLAGS_MASK = 0x0f
71
#define GMENU_TREE_SORT_FIRST GMENU_TREE_SORT_NAME
72
GMENU_TREE_SORT_NAME = 0,
73
GMENU_TREE_SORT_DISPLAY_NAME
74
#define GMENU_TREE_SORT_LAST GMENU_TREE_SORT_DISPLAY_NAME
77
GMenuTree *gmenu_tree_lookup (const char *menu_file,
78
GMenuTreeFlags flags);
80
GMenuTree *gmenu_tree_ref (GMenuTree *tree);
81
void gmenu_tree_unref (GMenuTree *tree);
83
void gmenu_tree_set_user_data (GMenuTree *tree,
85
GDestroyNotify dnotify);
86
gpointer gmenu_tree_get_user_data (GMenuTree *tree);
88
const char *gmenu_tree_get_menu_file (GMenuTree *tree);
89
GMenuTreeDirectory *gmenu_tree_get_root_directory (GMenuTree *tree);
90
GMenuTreeDirectory *gmenu_tree_get_directory_from_path (GMenuTree *tree,
93
GMenuTreeSortKey gmenu_tree_get_sort_key (GMenuTree *tree);
94
void gmenu_tree_set_sort_key (GMenuTree *tree,
95
GMenuTreeSortKey sort_key);
99
gpointer gmenu_tree_item_ref (gpointer item);
100
void gmenu_tree_item_unref (gpointer item);
102
void gmenu_tree_item_set_user_data (GMenuTreeItem *item,
104
GDestroyNotify dnotify);
105
gpointer gmenu_tree_item_get_user_data (GMenuTreeItem *item);
107
GMenuTreeItemType gmenu_tree_item_get_type (GMenuTreeItem *item);
108
GMenuTreeDirectory *gmenu_tree_item_get_parent (GMenuTreeItem *item);
111
GSList *gmenu_tree_directory_get_contents (GMenuTreeDirectory *directory);
112
const char *gmenu_tree_directory_get_name (GMenuTreeDirectory *directory);
113
const char *gmenu_tree_directory_get_comment (GMenuTreeDirectory *directory);
114
const char *gmenu_tree_directory_get_icon (GMenuTreeDirectory *directory);
115
const char *gmenu_tree_directory_get_desktop_file_path (GMenuTreeDirectory *directory);
116
const char *gmenu_tree_directory_get_menu_id (GMenuTreeDirectory *directory);
117
GMenuTree *gmenu_tree_directory_get_tree (GMenuTreeDirectory *directory);
119
gboolean gmenu_tree_directory_get_is_nodisplay (GMenuTreeDirectory *directory);
121
char *gmenu_tree_directory_make_path (GMenuTreeDirectory *directory,
122
GMenuTreeEntry *entry);
125
const char *gmenu_tree_entry_get_name (GMenuTreeEntry *entry);
126
const char *gmenu_tree_entry_get_generic_name (GMenuTreeEntry *entry);
127
const char *gmenu_tree_entry_get_display_name (GMenuTreeEntry *entry);
128
const char *gmenu_tree_entry_get_comment (GMenuTreeEntry *entry);
129
const char *gmenu_tree_entry_get_icon (GMenuTreeEntry *entry);
130
const char *gmenu_tree_entry_get_exec (GMenuTreeEntry *entry);
131
gboolean gmenu_tree_entry_get_launch_in_terminal (GMenuTreeEntry *entry);
133
const char *gmenu_tree_entry_get_desktop_file_path (GMenuTreeEntry *entry);
134
const char *gmenu_tree_entry_get_desktop_file_id (GMenuTreeEntry *entry);
136
gboolean gmenu_tree_entry_get_is_excluded (GMenuTreeEntry *entry);
137
gboolean gmenu_tree_entry_get_is_nodisplay (GMenuTreeEntry *entry);
139
GMenuTreeDirectory *gmenu_tree_header_get_directory (GMenuTreeHeader *header);
141
GMenuTreeDirectory *gmenu_tree_alias_get_directory (GMenuTreeAlias *alias);
142
GMenuTreeItem *gmenu_tree_alias_get_item (GMenuTreeAlias *alias);
144
void gmenu_tree_add_monitor (GMenuTree *tree,
145
GMenuTreeChangedFunc callback,
147
void gmenu_tree_remove_monitor (GMenuTree *tree,
148
GMenuTreeChangedFunc callback,
153
#endif /* __GMENU_TREE_H__ */