1 /* vi: set sw=4 ts=4 wrap ai: */ 2 /* 3 * caja-widget-view-provider.h: This file is part of caja. 4 * 5 * Copyright (C) 2019 Wu Xiaotian <yetist@gmail.com> 6 * Copyright (C) 2019-2021 The MATE developers 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License along 19 * with this program; if not, write to the Free Software Foundation, Inc., 20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 21 * */ 22 23 #ifndef __CAJA_WIDGET_VIEW_PROVIDER_H__ 24 #define __CAJA_WIDGET_VIEW_PROVIDER_H__ 1 25 26 #include <glib-object.h> 27 #include <gtk/gtk.h> 28 #include "caja-file-info.h" 29 #include "caja-extension-types.h" 30 31 G_BEGIN_DECLS 32 33 #define CAJA_TYPE_WIDGET_VIEW_PROVIDER (caja_widget_view_provider_get_type ()) 34 #define CAJA_WIDGET_VIEW_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAJA_TYPE_WIDGET_VIEW_PROVIDER, CajaWidgetViewProvider)) 35 #define CAJA_IS_WIDGET_VIEW_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAJA_TYPE_WIDGET_VIEW_PROVIDER)) 36 #define CAJA_WIDGET_VIEW_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CAJA_TYPE_WIDGET_VIEW_PROVIDER, CajaWidgetViewProviderIface)) 37 38 typedef struct _CajaWidgetViewProvider CajaWidgetViewProvider; 39 typedef struct _CajaWidgetViewProviderIface CajaWidgetViewProviderIface; 40 41 /** 42 * CajaWidgetViewProviderIface: 43 * @supports_uri: Whether this extension works for this uri 44 * @get_widget: Returns a #GtkWidget. 45 * See caja_widget_view_provider_get_widget() for details. 46 * @add_file: Adds a file to this widget view. 47 * @set_location: Set location to this widget view. 48 * @set_window: Set the main window to this widget view. 49 * @get_item_count: Return the item count of this widget view. 50 * @get_first_visible_file: Return the first visible file from this widget view. 51 * @clear: Clear items in this widget view. 52 * 53 * Interface for extensions to provide widgets view for content. 54 */ 55 struct _CajaWidgetViewProviderIface { 56 GTypeInterface g_iface; 57 58 gboolean (*supports_uri) (CajaWidgetViewProvider *provider, 59 const char *uri, 60 GFileType file_type, 61 const char *mime_type); 62 GtkWidget* (*get_widget) (CajaWidgetViewProvider *provider); 63 void (*add_file) (CajaWidgetViewProvider *provider, CajaFile *file, CajaFile *directory); 64 void (*set_location) (CajaWidgetViewProvider *provider, const char *location); 65 void (*set_window) (CajaWidgetViewProvider *provider, GtkWindow *window); 66 guint (*get_item_count) (CajaWidgetViewProvider *provider); 67 gchar* (*get_first_visible_file) (CajaWidgetViewProvider *provider); 68 void (*clear) (CajaWidgetViewProvider *provider); 69 }; 70 71 /* Interface Functions */ 72 GType caja_widget_view_provider_get_type (void); 73 74 GtkWidget *caja_widget_view_provider_get_widget (CajaWidgetViewProvider *provider); 75 void caja_widget_view_provider_add_file (CajaWidgetViewProvider *provider, 76 CajaFile *file, 77 CajaFile *directory); 78 void caja_widget_view_provider_set_location (CajaWidgetViewProvider *provider, 79 const char *location); 80 void caja_widget_view_provider_set_window (CajaWidgetViewProvider *provider, 81 GtkWindow *window); 82 guint caja_widget_view_provider_get_item_count (CajaWidgetViewProvider *provider); 83 gchar* caja_widget_view_provider_get_first_visible_file (CajaWidgetViewProvider *provider); 84 void caja_widget_view_provider_clear (CajaWidgetViewProvider *provider); 85 gboolean caja_widget_view_provider_supports_uri (CajaWidgetViewProvider *provider, 86 const char *uri, 87 GFileType file_type, 88 const char *mime_type); 89 G_END_DECLS 90 91 #endif /* __CAJA_WIDGET_VIEW_PROVIDER_H__ */ 92