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
69
GMenuTree *gmenu_tree_lookup (const char *menu_file,
70
GMenuTreeFlags flags);
72
GMenuTree *gmenu_tree_ref (GMenuTree *tree);
73
void gmenu_tree_unref (GMenuTree *tree);
75
void gmenu_tree_set_user_data (GMenuTree *tree,
77
GDestroyNotify dnotify);
78
gpointer gmenu_tree_get_user_data (GMenuTree *tree);
80
GSList *gmenu_tree_get_menu_file_monitors (GMenuTree *tree);
81
GSList *gmenu_tree_get_monitors (GMenuTree *tree);
83
const char *gmenu_tree_get_menu_file (GMenuTree *tree);
84
const char *gmenu_tree_get_menu_file_full_path (GMenuTree *tree);
85
GMenuTreeDirectory *gmenu_tree_get_root_directory (GMenuTree *tree);
86
GMenuTreeDirectory *gmenu_tree_get_directory_from_path (GMenuTree *tree,
89
gpointer gmenu_tree_item_ref (gpointer item);
90
void gmenu_tree_item_unref (gpointer item);
92
void gmenu_tree_item_set_user_data (GMenuTreeItem *item,
94
GDestroyNotify dnotify);
95
gpointer gmenu_tree_item_get_user_data (GMenuTreeItem *item);
97
GMenuTreeItemType gmenu_tree_item_get_type (GMenuTreeItem *item);
98
GMenuTreeDirectory *gmenu_tree_item_get_parent (GMenuTreeItem *item);
101
GSList *gmenu_tree_directory_get_contents (GMenuTreeDirectory *directory);
102
const char *gmenu_tree_directory_get_name (GMenuTreeDirectory *directory);
103
const char *gmenu_tree_directory_get_comment (GMenuTreeDirectory *directory);
104
const char *gmenu_tree_directory_get_icon (GMenuTreeDirectory *directory);
105
const char *gmenu_tree_directory_get_desktop_file_path (GMenuTreeDirectory *directory);
106
const char *gmenu_tree_directory_get_menu_id (GMenuTreeDirectory *directory);
107
GMenuTree *gmenu_tree_directory_get_tree (GMenuTreeDirectory *directory);
109
gboolean gmenu_tree_directory_get_is_nodisplay (GMenuTreeDirectory *directory);
111
char *gmenu_tree_directory_make_path (GMenuTreeDirectory *directory,
112
GMenuTreeEntry *entry);
115
const char *gmenu_tree_entry_get_name (GMenuTreeEntry *entry);
116
const char *gmenu_tree_entry_get_generic_name (GMenuTreeEntry *entry);
117
const char *gmenu_tree_entry_get_comment (GMenuTreeEntry *entry);
118
const char *gmenu_tree_entry_get_icon (GMenuTreeEntry *entry);
119
const char *gmenu_tree_entry_get_exec (GMenuTreeEntry *entry);
120
gboolean gmenu_tree_entry_get_launch_in_terminal (GMenuTreeEntry *entry);
121
gboolean gmenu_tree_entry_get_use_startup_notify (GMenuTreeEntry *entry);
123
guint32 gmenu_tree_entry_get_show_in_flags (GMenuTreeEntry *entry);
125
const char *gmenu_tree_entry_get_desktop_file_path (GMenuTreeEntry *entry);
126
const char *gmenu_tree_entry_get_desktop_file_id (GMenuTreeEntry *entry);
128
gboolean gmenu_tree_entry_get_is_excluded (GMenuTreeEntry *entry);
129
gboolean gmenu_tree_entry_get_is_nodisplay (GMenuTreeEntry *entry);
131
const GQuark *gmenu_tree_entry_get_categories (GMenuTreeEntry *entry);
133
GMenuTreeDirectory *gmenu_tree_header_get_directory (GMenuTreeHeader *header);
135
GMenuTreeDirectory *gmenu_tree_alias_get_directory (GMenuTreeAlias *alias);
136
GMenuTreeItem *gmenu_tree_alias_get_item (GMenuTreeAlias *alias);
138
void gmenu_tree_add_monitor (GMenuTree *tree,
139
GMenuTreeChangedFunc callback,
141
void gmenu_tree_remove_monitor (GMenuTree *tree,
142
GMenuTreeChangedFunc callback,
147
#endif /* __GMENU_TREE_H__ */