1/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
2
3/* GtkPlacesSidebar - sidebar widget for places in the filesystem
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published
7 * by the Free Software Foundation, either version 2.1 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * This code comes from Nautilus, GNOME’s file manager.
19 *
20 * Authors : Mr Jamie McCracken (jamiemcc at blueyonder dot co dot uk)
21 * Federico Mena Quintero <federico@gnome.org>
22 */
23
24#ifndef __GTK_PLACES_SIDEBAR_H__
25#define __GTK_PLACES_SIDEBAR_H__
26
27#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
28#error "Only <gtk/gtk.h> can be included directly."
29#endif
30
31#include <gtk/gtkwidget.h>
32
33G_BEGIN_DECLS
34
35#define GTK_TYPE_PLACES_SIDEBAR (gtk_places_sidebar_get_type ())
36#define GTK_PLACES_SIDEBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PLACES_SIDEBAR, GtkPlacesSidebar))
37#define GTK_PLACES_SIDEBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PLACES_SIDEBAR, GtkPlacesSidebarClass))
38#define GTK_IS_PLACES_SIDEBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PLACES_SIDEBAR))
39#define GTK_IS_PLACES_SIDEBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PLACES_SIDEBAR))
40#define GTK_PLACES_SIDEBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PLACES_SIDEBAR, GtkPlacesSidebarClass))
41
42typedef struct _GtkPlacesSidebar GtkPlacesSidebar;
43typedef struct _GtkPlacesSidebarClass GtkPlacesSidebarClass;
44
45/**
46 * GtkPlacesOpenFlags:
47 * @GTK_PLACES_OPEN_NORMAL: This is the default mode that #GtkPlacesSidebar uses if no other flags
48 * are specified. It indicates that the calling application should open the selected location
49 * in the normal way, for example, in the folder view beside the sidebar.
50 * @GTK_PLACES_OPEN_NEW_TAB: When passed to gtk_places_sidebar_set_open_flags(), this indicates
51 * that the application can open folders selected from the sidebar in new tabs. This value
52 * will be passed to the #GtkPlacesSidebar::open-location signal when the user selects
53 * that a location be opened in a new tab instead of in the standard fashion.
54 * @GTK_PLACES_OPEN_NEW_WINDOW: Similar to @GTK_PLACES_OPEN_NEW_TAB, but indicates that the application
55 * can open folders in new windows.
56 *
57 * These flags serve two purposes. First, the application can call gtk_places_sidebar_set_open_flags()
58 * using these flags as a bitmask. This tells the sidebar that the application is able to open
59 * folders selected from the sidebar in various ways, for example, in new tabs or in new windows in
60 * addition to the normal mode.
61 *
62 * Second, when one of these values gets passed back to the application in the
63 * #GtkPlacesSidebar::open-location signal, it means that the application should
64 * open the selected location in the normal way, in a new tab, or in a new
65 * window. The sidebar takes care of determining the desired way to open the location,
66 * based on the modifier keys that the user is pressing at the time the selection is made.
67 *
68 * If the application never calls gtk_places_sidebar_set_open_flags(), then the sidebar will only
69 * use #GTK_PLACES_OPEN_NORMAL in the #GtkPlacesSidebar::open-location signal. This is the
70 * default mode of operation.
71 */
72typedef enum {
73 GTK_PLACES_OPEN_NORMAL = 1 << 0,
74 GTK_PLACES_OPEN_NEW_TAB = 1 << 1,
75 GTK_PLACES_OPEN_NEW_WINDOW = 1 << 2
76} GtkPlacesOpenFlags;
77
78GDK_AVAILABLE_IN_3_10
79GType gtk_places_sidebar_get_type (void) G_GNUC_CONST;
80GDK_AVAILABLE_IN_3_10
81GtkWidget * gtk_places_sidebar_new (void);
82
83GDK_AVAILABLE_IN_3_10
84GtkPlacesOpenFlags gtk_places_sidebar_get_open_flags (GtkPlacesSidebar *sidebar);
85GDK_AVAILABLE_IN_3_10
86void gtk_places_sidebar_set_open_flags (GtkPlacesSidebar *sidebar,
87 GtkPlacesOpenFlags flags);
88
89GDK_AVAILABLE_IN_3_10
90GFile * gtk_places_sidebar_get_location (GtkPlacesSidebar *sidebar);
91GDK_AVAILABLE_IN_3_10
92void gtk_places_sidebar_set_location (GtkPlacesSidebar *sidebar,
93 GFile *location);
94
95GDK_AVAILABLE_IN_3_18
96gboolean gtk_places_sidebar_get_show_recent (GtkPlacesSidebar *sidebar);
97GDK_AVAILABLE_IN_3_18
98void gtk_places_sidebar_set_show_recent (GtkPlacesSidebar *sidebar,
99 gboolean show_recent);
100
101GDK_AVAILABLE_IN_3_10
102gboolean gtk_places_sidebar_get_show_desktop (GtkPlacesSidebar *sidebar);
103GDK_AVAILABLE_IN_3_10
104void gtk_places_sidebar_set_show_desktop (GtkPlacesSidebar *sidebar,
105 gboolean show_desktop);
106
107GDK_DEPRECATED_IN_3_18
108gboolean gtk_places_sidebar_get_show_connect_to_server (GtkPlacesSidebar *sidebar);
109GDK_DEPRECATED_IN_3_18
110void gtk_places_sidebar_set_show_connect_to_server (GtkPlacesSidebar *sidebar,
111 gboolean show_connect_to_server);
112GDK_AVAILABLE_IN_3_14
113gboolean gtk_places_sidebar_get_show_enter_location (GtkPlacesSidebar *sidebar);
114GDK_AVAILABLE_IN_3_14
115void gtk_places_sidebar_set_show_enter_location (GtkPlacesSidebar *sidebar,
116 gboolean show_enter_location);
117
118GDK_AVAILABLE_IN_3_12
119void gtk_places_sidebar_set_local_only (GtkPlacesSidebar *sidebar,
120 gboolean local_only);
121GDK_AVAILABLE_IN_3_12
122gboolean gtk_places_sidebar_get_local_only (GtkPlacesSidebar *sidebar);
123
124
125GDK_AVAILABLE_IN_3_10
126void gtk_places_sidebar_add_shortcut (GtkPlacesSidebar *sidebar,
127 GFile *location);
128GDK_AVAILABLE_IN_3_10
129void gtk_places_sidebar_remove_shortcut (GtkPlacesSidebar *sidebar,
130 GFile *location);
131GDK_AVAILABLE_IN_3_10
132GSList * gtk_places_sidebar_list_shortcuts (GtkPlacesSidebar *sidebar);
133
134GDK_AVAILABLE_IN_3_10
135GFile * gtk_places_sidebar_get_nth_bookmark (GtkPlacesSidebar *sidebar,
136 gint n);
137GDK_AVAILABLE_IN_3_18
138void gtk_places_sidebar_set_drop_targets_visible (GtkPlacesSidebar *sidebar,
139 gboolean visible,
140 GdkDragContext *context);
141GDK_AVAILABLE_IN_3_18
142gboolean gtk_places_sidebar_get_show_trash (GtkPlacesSidebar *sidebar);
143GDK_AVAILABLE_IN_3_18
144void gtk_places_sidebar_set_show_trash (GtkPlacesSidebar *sidebar,
145 gboolean show_trash);
146
147GDK_AVAILABLE_IN_3_18
148void gtk_places_sidebar_set_show_other_locations (GtkPlacesSidebar *sidebar,
149 gboolean show_other_locations);
150GDK_AVAILABLE_IN_3_18
151gboolean gtk_places_sidebar_get_show_other_locations (GtkPlacesSidebar *sidebar);
152
153GDK_AVAILABLE_IN_3_22
154void gtk_places_sidebar_set_show_starred_location (GtkPlacesSidebar *sidebar,
155 gboolean show_starred_location);
156GDK_AVAILABLE_IN_3_22
157gboolean gtk_places_sidebar_get_show_starred_location (GtkPlacesSidebar *sidebar);
158G_END_DECLS
159
160#endif /* __GTK_PLACES_SIDEBAR_H__ */
161