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