summaryrefslogtreecommitdiff
path: root/libnautilus-extensions/nautilus-link.h
blob: b9596eb7d764f82a2914b18bb2c25b04eaedbe39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-

   nautilus-link.h: xml-based link files that control their appearance
   and behavior.

   Copyright (C) 2000 Eazel, Inc.

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.
  
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.
  
   You should have received a copy of the GNU General Public
   License along with this program; if not, write to the
   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.
  
   Authors: Andy Hertzfeld <andy@eazel.com>
*/

#ifndef NAUTILUS_LINK_H
#define NAUTILUS_LINK_H

#include "nautilus-file.h"
#include <gdk/gdk.h>
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-dentry.h>

/* Link types */
typedef enum {
	NAUTILUS_LINK_GENERIC,
	NAUTILUS_LINK_TRASH,
	NAUTILUS_LINK_MOUNT,
	NAUTILUS_LINK_HOME
} NautilusLinkType;

/* Create a new link file. Takes a path, works locally, and uses sync. I/O.
 * Returns TRUE if it succeeds, FALSE if it fails.
 */
gboolean         nautilus_link_local_create                     (const char       *directory_path,
								 const char       *name,
								 const char       *image,
								 const char       *target_uri,
								 const GdkPoint   *point,
								 NautilusLinkType  type);

/* Change the icon of an existing link file. Takes a path, works
 * locally, and uses sync. I/O. Returns TRUE if it succeeds, FALSE if
 * it fails. Does not check and see if it is a link file.
 */
gboolean         nautilus_link_local_set_icon                   (const char       *path,
								 const char       *icon_name);

/* Specify the type of link that is represented
 * Takes a path, works locally, and uses sync. I/O. 
 * Returns TRUE if it succeeds, FALSE if
 * it fails. Does not check and see if it is a link file.
 */
gboolean         nautilus_link_local_set_type                   (const char       *path,
								 NautilusLinkType  type);

/* Specify the link uri of link that is represented
 * Takes a path, works locally, and uses sync. I/O. 
 * Returns TRUE if it succeeds, FALSE if
 * it fails. Does not check and see if it is a link file.
 */
gboolean         nautilus_link_local_set_link_uri               (const char       *path,
								 const char       *uri);

/* Returns additional text to display under the name, NULL if
 * none. Despite the fact that it takes a URI parameter, works only if
 * the file is local and does sync. I/O.
 */
char *	nautilus_link_local_get_additional_text        (const char       *path);

/* Returns the image associated with a link file. Despite the fact
 * that it takes a URI parameter, works only if the file is local and
 * does sync. I/O on the link, although it does async. on the image
 * and caches if the image is remote.
 */
char *		nautilus_link_local_get_image_uri              (const char       *path);

/* returns the moniker of the component associated with a link file, as well as configuration data.
 * It works only if the file is local and does sync. I/O.
 */
void		nautilus_link_local_get_component_info         (const char       *path,
								 char 		  **control_moniker,
								 char		  **control_data);

/* Returns the link type of a link file.
 * Works only if the file is local and does sync. I/O
 */
NautilusLinkType nautilus_link_local_get_link_type              (const char       *path);


/* Returns if a link is a mount link.
 * Works only if the file is local and does sync. I/O
 */
gboolean         nautilus_link_local_is_volume_link             (const char       *path);

/* Returns if a link is a home link.
 * Works only if the file is local and does sync. I/O
 */
gboolean         nautilus_link_local_is_home_link               (const char       *path);

/* Returns if a link is a trash link.
 * Works only if the file is local and does sync. I/O
 */
gboolean         nautilus_link_local_is_trash_link              (const char       *path);


/* Returns the link uri associated with a link file. The first version
 * works only if the file is local and does sync. I/O, despite the
 * fact that it takes a URI parameter. The second version takes the
 * contents of a file already in memory.
 */
char *           nautilus_link_local_get_link_uri               (const char       *path);
char *           nautilus_link_get_link_uri_given_file_contents (const char       *link_file_contents,
								 int               link_file_size);

void		nautilus_link_local_create_from_gnome_entry 	(GnomeDesktopEntry *entry,
								 const char 	   *dest_path,
								 const GdkPoint    *position);
								 								 
#endif /* NAUTILUS_LINK_H */