]> www.fi.muni.cz Git - evince.git/blob - cut-n-paste/smclient/eggdesktopfile.h
2be3621019f89a08fd9a3dc390df13683476a83f
[evince.git] / cut-n-paste / smclient / eggdesktopfile.h
1 /* eggdesktopfile.h - Freedesktop.Org Desktop Files
2  * Copyright (C) 2007 Novell, Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 2 of
7  * the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful, but
10  * 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.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; see the file COPYING.LIB. If not,
16  * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
17  * Boston, MA 02110-1301, USA.
18  */
19
20 #ifndef __EGG_DESKTOP_FILE_H__
21 #define __EGG_DESKTOP_FILE_H__
22
23 #include <glib.h>
24
25 G_BEGIN_DECLS
26
27 typedef struct EggDesktopFile EggDesktopFile;
28
29 typedef enum {
30         EGG_DESKTOP_FILE_TYPE_UNRECOGNIZED,
31
32         EGG_DESKTOP_FILE_TYPE_APPLICATION,
33         EGG_DESKTOP_FILE_TYPE_LINK,
34         EGG_DESKTOP_FILE_TYPE_DIRECTORY
35 } EggDesktopFileType;
36
37 EggDesktopFile     *egg_desktop_file_new                (const char   *desktop_file_path,
38                                                          GError      **error);
39
40 EggDesktopFile     *egg_desktop_file_new_from_data_dirs (const char   *desktop_file_path,
41                                                          GError      **error);
42 EggDesktopFile     *egg_desktop_file_new_from_dirs      (const char   *desktop_file_path,
43                                                          const char  **search_dirs,
44                                                          GError      **error);
45 EggDesktopFile     *egg_desktop_file_new_from_key_file  (GKeyFile     *key_file,
46                                                          const char   *source,
47                                                          GError      **error);
48
49 void                egg_desktop_file_free               (EggDesktopFile  *desktop_file);
50
51 const char         *egg_desktop_file_get_source         (EggDesktopFile  *desktop_file);
52
53 EggDesktopFileType  egg_desktop_file_get_desktop_file_type (EggDesktopFile  *desktop_file);
54
55 const char         *egg_desktop_file_get_name           (EggDesktopFile  *desktop_file);
56 const char         *egg_desktop_file_get_icon           (EggDesktopFile  *desktop_file);
57
58 gboolean            egg_desktop_file_can_launch         (EggDesktopFile  *desktop_file,
59                                                          const char      *desktop_environment);
60
61 gboolean            egg_desktop_file_accepts_documents  (EggDesktopFile  *desktop_file);
62 gboolean            egg_desktop_file_accepts_multiple   (EggDesktopFile  *desktop_file);
63 gboolean            egg_desktop_file_accepts_uris       (EggDesktopFile  *desktop_file);
64
65 char               *egg_desktop_file_parse_exec         (EggDesktopFile  *desktop_file,
66                                                          GSList          *documents,
67                                                          GError         **error);
68
69 gboolean            egg_desktop_file_launch             (EggDesktopFile  *desktop_file,
70                                                          GSList          *documents,
71                                                          GError         **error,
72                                                          ...) G_GNUC_NULL_TERMINATED;
73
74 typedef enum {
75         EGG_DESKTOP_FILE_LAUNCH_CLEARENV = 1,
76         EGG_DESKTOP_FILE_LAUNCH_PUTENV,
77         EGG_DESKTOP_FILE_LAUNCH_SCREEN,
78         EGG_DESKTOP_FILE_LAUNCH_WORKSPACE,
79         EGG_DESKTOP_FILE_LAUNCH_DIRECTORY,
80         EGG_DESKTOP_FILE_LAUNCH_TIME,
81         EGG_DESKTOP_FILE_LAUNCH_FLAGS,
82         EGG_DESKTOP_FILE_LAUNCH_SETUP_FUNC,
83         EGG_DESKTOP_FILE_LAUNCH_RETURN_PID,
84         EGG_DESKTOP_FILE_LAUNCH_RETURN_STDIN_PIPE,
85         EGG_DESKTOP_FILE_LAUNCH_RETURN_STDOUT_PIPE,
86         EGG_DESKTOP_FILE_LAUNCH_RETURN_STDERR_PIPE,
87         EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID
88 } EggDesktopFileLaunchOption;
89
90 /* Standard Keys */
91 #define EGG_DESKTOP_FILE_GROUP                  "Desktop Entry"
92
93 #define EGG_DESKTOP_FILE_KEY_TYPE               "Type"
94 #define EGG_DESKTOP_FILE_KEY_VERSION            "Version"
95 #define EGG_DESKTOP_FILE_KEY_NAME               "Name"
96 #define EGG_DESKTOP_FILE_KEY_GENERIC_NAME       "GenericName"
97 #define EGG_DESKTOP_FILE_KEY_NO_DISPLAY         "NoDisplay"
98 #define EGG_DESKTOP_FILE_KEY_COMMENT            "Comment"
99 #define EGG_DESKTOP_FILE_KEY_ICON               "Icon"
100 #define EGG_DESKTOP_FILE_KEY_HIDDEN             "Hidden"
101 #define EGG_DESKTOP_FILE_KEY_ONLY_SHOW_IN       "OnlyShowIn"
102 #define EGG_DESKTOP_FILE_KEY_NOT_SHOW_IN        "NotShowIn"
103 #define EGG_DESKTOP_FILE_KEY_TRY_EXEC           "TryExec"
104 #define EGG_DESKTOP_FILE_KEY_EXEC               "Exec"
105 #define EGG_DESKTOP_FILE_KEY_PATH               "Path"
106 #define EGG_DESKTOP_FILE_KEY_TERMINAL           "Terminal"
107 #define EGG_DESKTOP_FILE_KEY_MIME_TYPE          "MimeType"
108 #define EGG_DESKTOP_FILE_KEY_CATEGORIES         "Categories"
109 #define EGG_DESKTOP_FILE_KEY_STARTUP_NOTIFY     "StartupNotify"
110 #define EGG_DESKTOP_FILE_KEY_STARTUP_WM_CLASS   "StartupWMClass"
111 #define EGG_DESKTOP_FILE_KEY_URL                "URL"
112
113 /* Accessors */
114 gboolean  egg_desktop_file_has_key                (EggDesktopFile  *desktop_file,
115                                                    const char      *key,
116                                                    GError         **error);
117 char     *egg_desktop_file_get_string             (EggDesktopFile  *desktop_file,
118                                                    const char      *key,
119                                                    GError         **error) G_GNUC_MALLOC;
120 char     *egg_desktop_file_get_locale_string      (EggDesktopFile  *desktop_file,
121                                                    const char      *key,
122                                                    const char      *locale,
123                                                    GError         **error) G_GNUC_MALLOC;
124 gboolean  egg_desktop_file_get_boolean            (EggDesktopFile  *desktop_file,
125                                                    const char      *key,
126                                                    GError         **error);
127 double    egg_desktop_file_get_numeric            (EggDesktopFile  *desktop_file,
128                                                    const char      *key,
129                                                    GError         **error);
130 char    **egg_desktop_file_get_string_list        (EggDesktopFile  *desktop_file,
131                                                    const char      *key,
132                                                    gsize           *length,
133                                                    GError         **error) G_GNUC_MALLOC;
134 char    **egg_desktop_file_get_locale_string_list (EggDesktopFile  *desktop_file,
135                                                    const char      *key,
136                                                    const char      *locale,
137                                                    gsize           *length,
138                                                    GError         **error) G_GNUC_MALLOC;
139
140
141 /* Errors */
142 #define EGG_DESKTOP_FILE_ERROR egg_desktop_file_error_quark()
143
144 GQuark egg_desktop_file_error_quark (void);
145
146 typedef enum {
147         EGG_DESKTOP_FILE_ERROR_INVALID,
148         EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
149         EGG_DESKTOP_FILE_ERROR_UNRECOGNIZED_OPTION
150 } EggDesktopFileError;
151
152 /* Global application desktop file */
153 void            egg_set_desktop_file (const char *desktop_file_path);
154 EggDesktopFile *egg_get_desktop_file (void);
155
156
157 G_END_DECLS
158
159 #endif /* __EGG_DESKTOP_FILE_H__ */