comparison src/desktopitem.h @ 10229:9aa0b6d11bbf

[gaim-migrate @ 11364] This is a heavily warmenhoved patch from Alceste Scalas. Here's what it changes: If the user drags an image file into the buddy list or conversation, it presents three options (when applicable): Set as buddy icon - sets this image to be the buddy icon for this buddy Send image file - Initiates a file transfer to send this image. Insert in message - Inserts in the gtkimhtml for use as an IM image. If the user drags a .desktop web link, it will insert a hyperlink in the conversation. All other types of .desktop files fail with an error dialog. If anyone can think of better ways to handle any of them, let me know. This also happens to implement gaim_request_choice, which had previously been unimplemented. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Mon, 22 Nov 2004 02:57:34 +0000
parents
children e8d62dc363c5
comparison
equal deleted inserted replaced
10228:37c411c8cde3 10229:9aa0b6d11bbf
1 /**
2 * @file gaim-desktop-item.h Functions for managing .desktop files
3 * @ingroup core
4 *
5 * Gaim is the legal property of its developers, whose names are too numerous
6 * to list here. Please refer to the COPYRIGHT file distributed with this
7 * source distribution.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 *
23 */
24
25 /*
26 * The following code has been adapted from gnome-desktop-item.[ch],
27 * as found on gnome-desktop-2.8.1.
28 *
29 * Copyright (C) 2004 by Alceste Scalas <alceste.scalas@gmx.net>.
30 *
31 * Original copyright notice:
32 *
33 * Copyright (C) 1999, 2000 Red Hat Inc.
34 * Copyright (C) 2001 Sid Vicious
35 * All rights reserved.
36 *
37 * This file is part of the Gnome Library.
38 *
39 * The Gnome Library is free software; you can redistribute it and/or
40 * modify it under the terms of the GNU Library General Public License as
41 * published by the Free Software Foundation; either version 2 of the
42 * License, or (at your option) any later version.
43 *
44 * The Gnome Library is distributed in the hope that it will be useful,
45 * but WITHOUT ANY WARRANTY; without even the implied warranty of
46 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
47 * Library General Public License for more details.
48 *
49 * You should have received a copy of the GNU Library General Public
50 * License along with the Gnome Library; see the file COPYING.LIB. If not,
51 * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
52 * Boston, MA 02111-1307, USA.
53 */
54
55 #ifndef _GAIM_DESKTOP_ITEM_H_
56 #define _GAIM_DESKTOP_ITEM_H_
57
58 #include <glib.h>
59 #include <glib-object.h>
60
61 G_BEGIN_DECLS
62
63 typedef enum {
64 GAIM_DESKTOP_ITEM_TYPE_NULL = 0 /* This means its NULL, that is, not
65 * set */,
66 GAIM_DESKTOP_ITEM_TYPE_OTHER /* This means it's not one of the below
67 strings types, and you must get the
68 Type attribute. */,
69
70 /* These are the standard compliant types: */
71 GAIM_DESKTOP_ITEM_TYPE_APPLICATION,
72 GAIM_DESKTOP_ITEM_TYPE_LINK,
73 GAIM_DESKTOP_ITEM_TYPE_FSDEVICE,
74 GAIM_DESKTOP_ITEM_TYPE_MIME_TYPE,
75 GAIM_DESKTOP_ITEM_TYPE_DIRECTORY,
76 GAIM_DESKTOP_ITEM_TYPE_SERVICE,
77 GAIM_DESKTOP_ITEM_TYPE_SERVICE_TYPE
78 } GaimDesktopItemType;
79
80 typedef struct _GaimDesktopItem GaimDesktopItem;
81
82 #define GAIM_TYPE_DESKTOP_ITEM (gaim_desktop_item_get_type ())
83 GType gaim_desktop_item_get_type (void);
84
85 /* standard */
86 #define GAIM_DESKTOP_ITEM_ENCODING "Encoding" /* string */
87 #define GAIM_DESKTOP_ITEM_VERSION "Version" /* numeric */
88 #define GAIM_DESKTOP_ITEM_NAME "Name" /* localestring */
89 #define GAIM_DESKTOP_ITEM_GENERIC_NAME "GenericName" /* localestring */
90 #define GAIM_DESKTOP_ITEM_TYPE "Type" /* string */
91 #define GAIM_DESKTOP_ITEM_FILE_PATTERN "FilePattern" /* regexp(s) */
92 #define GAIM_DESKTOP_ITEM_TRY_EXEC "TryExec" /* string */
93 #define GAIM_DESKTOP_ITEM_NO_DISPLAY "NoDisplay" /* boolean */
94 #define GAIM_DESKTOP_ITEM_COMMENT "Comment" /* localestring */
95 #define GAIM_DESKTOP_ITEM_EXEC "Exec" /* string */
96 #define GAIM_DESKTOP_ITEM_ACTIONS "Actions" /* strings */
97 #define GAIM_DESKTOP_ITEM_ICON "Icon" /* string */
98 #define GAIM_DESKTOP_ITEM_MINI_ICON "MiniIcon" /* string */
99 #define GAIM_DESKTOP_ITEM_HIDDEN "Hidden" /* boolean */
100 #define GAIM_DESKTOP_ITEM_PATH "Path" /* string */
101 #define GAIM_DESKTOP_ITEM_TERMINAL "Terminal" /* boolean */
102 #define GAIM_DESKTOP_ITEM_TERMINAL_OPTIONS "TerminalOptions" /* string */
103 #define GAIM_DESKTOP_ITEM_SWALLOW_TITLE "SwallowTitle" /* string */
104 #define GAIM_DESKTOP_ITEM_SWALLOW_EXEC "SwallowExec" /* string */
105 #define GAIM_DESKTOP_ITEM_MIME_TYPE "MimeType" /* regexp(s) */
106 #define GAIM_DESKTOP_ITEM_PATTERNS "Patterns" /* regexp(s) */
107 #define GAIM_DESKTOP_ITEM_DEFAULT_APP "DefaultApp" /* string */
108 #define GAIM_DESKTOP_ITEM_DEV "Dev" /* string */
109 #define GAIM_DESKTOP_ITEM_FS_TYPE "FSType" /* string */
110 #define GAIM_DESKTOP_ITEM_MOUNT_POINT "MountPoint" /* string */
111 #define GAIM_DESKTOP_ITEM_READ_ONLY "ReadOnly" /* boolean */
112 #define GAIM_DESKTOP_ITEM_UNMOUNT_ICON "UnmountIcon" /* string */
113 #define GAIM_DESKTOP_ITEM_SORT_ORDER "SortOrder" /* strings */
114 #define GAIM_DESKTOP_ITEM_URL "URL" /* string */
115 #define GAIM_DESKTOP_ITEM_DOC_PATH "X-GNOME-DocPath" /* string */
116
117 /**
118 * This function loads 'filename' and turns it into a GnomeDesktopItem.
119 *
120 * @param file The filename or directory path to load the GaimDesktopItem from
121 * @param flags Flags to influence the loading process
122 *
123 * @return The newly loaded item, or NULL on error.
124 */
125 GaimDesktopItem *gaim_desktop_item_new_from_file (const char *filename);
126
127 /**
128 * Gets the type attribute (the 'Type' field) of the item. This should
129 * usually be 'Application' for an application, but it can be 'Directory'
130 * for a directory description. There are other types available as well.
131 * The type usually indicates how the desktop item should be handeled and
132 * how the 'Exec' field should be handeled.
133 *
134 * @param item A desktop item
135 *
136 * @return The type of the specified 'item'. The returned memory
137 * remains owned by the GnomeDesktopItem and should not be freed.
138 */
139 GaimDesktopItemType gaim_desktop_item_get_entry_type (const GaimDesktopItem *item);
140
141 /**
142 * Gets the value of an attribute of the item, as a string.
143 *
144 * @param item A desktop item
145 * @param attr The attribute to look for
146 *
147 * @return The value of the specified item attribute.
148 */
149 const char *gaim_desktop_item_get_string (const GaimDesktopItem *item,
150 const char *attr);
151
152 /**
153 * Creates a copy of a GnomeDesktopItem. The new copy has a refcount of 1.
154 * Note: Section stack is NOT copied.
155 *
156 * @param item The item to be copied
157 *
158 * @return The new copy
159 */
160 GaimDesktopItem *gaim_desktop_item_copy (const GaimDesktopItem *item);
161
162 /**
163 * Decreases the reference count of the specified item, and destroys
164 * the item if there are no more references left.
165 *
166 * @param item A desktop item
167 */
168 void gaim_desktop_item_unref (GaimDesktopItem *item);
169
170 G_END_DECLS
171
172 #endif /* _GAIM_DESKTOP_ITEM_H_ */