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 33 G_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 42 typedef struct _GtkPlacesSidebar GtkPlacesSidebar; 43 typedef 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 */ 72 typedef 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 78 GDK_AVAILABLE_IN_3_10 79 GType gtk_places_sidebar_get_type (void) G_GNUC_CONST; 80 GDK_AVAILABLE_IN_3_10 81 GtkWidget * gtk_places_sidebar_new (void); 82 83 GDK_AVAILABLE_IN_3_10 84 GtkPlacesOpenFlags gtk_places_sidebar_get_open_flags (GtkPlacesSidebar *sidebar); 85 GDK_AVAILABLE_IN_3_10 86 void gtk_places_sidebar_set_open_flags (GtkPlacesSidebar *sidebar, 87 GtkPlacesOpenFlags flags); 88 89 GDK_AVAILABLE_IN_3_10 90 GFile * gtk_places_sidebar_get_location (GtkPlacesSidebar *sidebar); 91 GDK_AVAILABLE_IN_3_10 92 void gtk_places_sidebar_set_location (GtkPlacesSidebar *sidebar, 93 GFile *location); 94 95 GDK_AVAILABLE_IN_3_18 96 gboolean gtk_places_sidebar_get_show_recent (GtkPlacesSidebar *sidebar); 97 GDK_AVAILABLE_IN_3_18 98 void gtk_places_sidebar_set_show_recent (GtkPlacesSidebar *sidebar, 99 gboolean show_recent); 100 101 GDK_AVAILABLE_IN_3_10 102 gboolean gtk_places_sidebar_get_show_desktop (GtkPlacesSidebar *sidebar); 103 GDK_AVAILABLE_IN_3_10 104 void gtk_places_sidebar_set_show_desktop (GtkPlacesSidebar *sidebar, 105 gboolean show_desktop); 106 107 GDK_DEPRECATED_IN_3_18 108 gboolean gtk_places_sidebar_get_show_connect_to_server (GtkPlacesSidebar *sidebar); 109 GDK_DEPRECATED_IN_3_18 110 void gtk_places_sidebar_set_show_connect_to_server (GtkPlacesSidebar *sidebar, 111 gboolean show_connect_to_server); 112 GDK_AVAILABLE_IN_3_14 113 gboolean gtk_places_sidebar_get_show_enter_location (GtkPlacesSidebar *sidebar); 114 GDK_AVAILABLE_IN_3_14 115 void gtk_places_sidebar_set_show_enter_location (GtkPlacesSidebar *sidebar, 116 gboolean show_enter_location); 117 118 GDK_AVAILABLE_IN_3_12 119 void gtk_places_sidebar_set_local_only (GtkPlacesSidebar *sidebar, 120 gboolean local_only); 121 GDK_AVAILABLE_IN_3_12 122 gboolean gtk_places_sidebar_get_local_only (GtkPlacesSidebar *sidebar); 123 124 125 GDK_AVAILABLE_IN_3_10 126 void gtk_places_sidebar_add_shortcut (GtkPlacesSidebar *sidebar, 127 GFile *location); 128 GDK_AVAILABLE_IN_3_10 129 void gtk_places_sidebar_remove_shortcut (GtkPlacesSidebar *sidebar, 130 GFile *location); 131 GDK_AVAILABLE_IN_3_10 132 GSList * gtk_places_sidebar_list_shortcuts (GtkPlacesSidebar *sidebar); 133 134 GDK_AVAILABLE_IN_3_10 135 GFile * gtk_places_sidebar_get_nth_bookmark (GtkPlacesSidebar *sidebar, 136 gint n); 137 GDK_AVAILABLE_IN_3_18 138 void gtk_places_sidebar_set_drop_targets_visible (GtkPlacesSidebar *sidebar, 139 gboolean visible, 140 GdkDragContext *context); 141 GDK_AVAILABLE_IN_3_18 142 gboolean gtk_places_sidebar_get_show_trash (GtkPlacesSidebar *sidebar); 143 GDK_AVAILABLE_IN_3_18 144 void gtk_places_sidebar_set_show_trash (GtkPlacesSidebar *sidebar, 145 gboolean show_trash); 146 147 GDK_AVAILABLE_IN_3_18 148 void gtk_places_sidebar_set_show_other_locations (GtkPlacesSidebar *sidebar, 149 gboolean show_other_locations); 150 GDK_AVAILABLE_IN_3_18 151 gboolean gtk_places_sidebar_get_show_other_locations (GtkPlacesSidebar *sidebar); 152 153 GDK_AVAILABLE_IN_3_22 154 void gtk_places_sidebar_set_show_starred_location (GtkPlacesSidebar *sidebar, 155 gboolean show_starred_location); 156 GDK_AVAILABLE_IN_3_22 157 gboolean gtk_places_sidebar_get_show_starred_location (GtkPlacesSidebar *sidebar); 158 G_END_DECLS 159 160 #endif /* __GTK_PLACES_SIDEBAR_H__ */ 161