1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/attr.e,v 1.8 2011/05/16 16:21:56 william Exp $
19 */
20
21#ifndef _ATTR_E_
22#define _ATTR_E_
23
24typedef struct tagAttrGroupInfo {
25    char *group_name;
26    char *group_value;
27    char *displayed_names; /* better looking group_value */
28    int num_attrs;
29    char **attr_name; /* just pointers, do not free */
30} AttrGroupInfo;
31
32extern int	dropObsIconAttrWhenUpdate;
33extern int	maxAttrGroups;
34
35extern AttrGroupInfo	**gAttrGroupInfo;
36extern EditAttrInfo	*gpEditAttrInEditorAttrInfo;
37
38#ifdef _INCLUDE_FROM_ATTR_C_
39#undef extern
40#define extern
41#endif /*_INCLUDE_FROM_ATTR_C_*/
42
43extern void	LinkInAttr ARGS_DECL((struct AttrRec *, struct AttrRec *,
44		                      struct AttrRec *));
45extern void	FreeAttr ARGS_DECL((struct AttrRec *));
46extern void	UnlinkAttr ARGS_DECL((struct AttrRec *));
47extern void	UpdAttrOwner ARGS_DECL((struct AttrRec *first_attr,
48		                        struct ObjRec *owner_obj));
49extern void	ParseAttrStr ARGS_DECL((char *buf, char *name, int name_sz,
50		                        char *value, int value_sz));
51extern void	UpdateAttr ARGS_DECL((struct TextRec *, struct AttrRec *));
52extern void	DrawAttrs ARGS_DECL((Window, int X, int Y, struct AttrRec *));
53extern void	MoveAttrs ARGS_DECL((struct AttrRec *, int Dx, int Dy));
54extern void	DelAllAttrs ARGS_DECL((struct AttrRec *));
55extern struct AttrRec	* AddAttrByNameAndValue ARGS_DECL((struct ObjRec *,
56		                                           char *AttrName,
57		                                           char *AttrValue));
58extern void	DupAttrs ARGS_DECL((struct ObjRec *From, struct ObjRec *To));
59extern void	AddAttrs ARGS_DECL((void));
60extern void	SaveAttrs ARGS_DECL((FILE *, struct AttrRec *));
61extern char	* ReadAttrString ARGS_DECL((char *));
62extern int	ReadAttr ARGS_DECL((FILE *, struct AttrRec **));
63extern struct ObjRec	*FindTopLevelObjWithType ARGS_DECL((char*));
64extern void	ShowAllAttrNames ARGS_DECL((void));
65extern void	ShowAllAttrs ARGS_DECL((void));
66extern void	HideAllAttrs ARGS_DECL((void));
67extern void	HideAllAttrNames ARGS_DECL((void));
68extern void	DetachGroupAttrs ARGS_DECL((struct ObjRec *,
69		                            struct SelRec **Top,
70		                            struct SelRec **Bot));
71extern void	DetachAllObjAttrs ARGS_DECL((struct ObjRec *,
72		                             struct SelRec **Top,
73		                             struct SelRec **Bot));
74extern void	DetachAttrs ARGS_DECL((void));
75extern void	UpdAttr ARGS_DECL((struct AttrRec *));
76extern TgMenu	*CreateAttrMenu ARGS_DECL((TgMenu*, int x, int y, int num_items,
77		                           char **menu_strings,
78		                           char **status_strings, int *pixels));
79extern void	FreeEditAttrInfo ARGS_DECL((EditAttrInfo*));
80extern int	HasEditAttrsInContextMenu ARGS_DECL((struct ObjRec *,
81		                                     struct AttrRec **));
82extern void	FreeRestrictedAttrNames ARGS_DECL((char **ppsz_restricted,
83		                                   int num_restricted));
84extern void	GetRestrictedAttrNames ARGS_DECL((struct ObjRec *,
85		                                  char ***pppsz_restricted,
86		                                  int *pn_num_restricted));
87extern void	GetAttrGroupAttrNames ARGS_DECL((struct ObjRec *,
88                                                 int group_index,
89		                                 char ***pppsz_restricted,
90		                                 int *pn_num_restricted));
91extern int	IsRestrictedAttr ARGS_DECL((char *attr_name,
92		                            char **ppsz_restricted,
93		                            int num_restricted));
94extern EditAttrInfo	*CreateEditAttrInfo ARGS_DECL((struct ObjRec *));
95extern EditAttrInfo	*CreateEditAttrGroupInfo ARGS_DECL((struct ObjRec *));
96extern void	MoveAttr ARGS_DECL((void));
97extern void	CopyAndUpdateAttrs ARGS_DECL((struct ObjRec *To,
98		                              struct ObjRec *From));
99extern void	ToggleNamedAttrShown ARGS_DECL((char *));
100extern void	ToggleEqAttrShown ARGS_DECL((void));
101extern void	AddFileAttrs ARGS_DECL((void));
102extern void	DetachFileAttrs ARGS_DECL((void));
103extern int	BlankStr ARGS_DECL((char*));
104extern void	EditFileAttrs ARGS_DECL((void));
105extern void	EditAttrs ARGS_DECL((void));
106
107extern void	CleanUpAttr ARGS_DECL((void));
108extern int	InitAttr ARGS_DECL((void));
109
110#ifdef _INCLUDE_FROM_ATTR_C_
111#undef extern
112#ifndef _NO_RECURSIVE_EXTERN
113#define extern extern
114#endif /* ~_NO_RECURSIVE_EXTERN */
115#endif /*_INCLUDE_FROM_ATTR_C_*/
116
117#endif /*_ATTR_E_*/
118