diff options
Diffstat (limited to 'sendto/caja-sendto-plugin.h')
-rw-r--r-- | sendto/caja-sendto-plugin.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/sendto/caja-sendto-plugin.h b/sendto/caja-sendto-plugin.h new file mode 100644 index 0000000..f208718 --- /dev/null +++ b/sendto/caja-sendto-plugin.h @@ -0,0 +1,116 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + +/* + * Copyright (C) 2004 Roberto Majadas + * Copyright (C) 2009 Bastien Nocera <[email protected]> + * + * 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 av. + * + * 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., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Authors: Roberto Majadas <[email protected]> + * Bastien Nocera <[email protected]> + */ + +#ifndef _CAJA_SENDTO_PLUGIN_H_ +#define _CAJA_SENDTO_PLUGIN_H_ + +#include <gmodule.h> +#include <gtk/gtk.h> + +/** + * SECTION:caja-sendto-plugin + * @short_description: caja-sento plug-in + * @stability: Stable + * @include: bluetooth-plugin.h + * + * Plug-ins can be used to extend caja-sendto. + **/ + +typedef struct _NstPluginInfo NstPluginInfo; +typedef struct _NstPlugin NstPlugin; + +/** + * NstPluginCapabilities: + * @CAJA_CAPS_NONE: No capabilities + * @CAJA_CAPS_SEND_DIRECTORIES: The plugin can send whole directories without compression + * @CAJA_CAPS_SEND_IMAGES: The plugin only sends images which could be resized + * + * Capabilities of the plugin. + **/ +typedef enum { + CAJA_CAPS_NONE = 0, + CAJA_CAPS_SEND_DIRECTORIES = 1 << 0, + CAJA_CAPS_SEND_IMAGES = 1 << 1, +} NstPluginCapabilities; + +/** + * NstPluginInfo: + * @icon: The icon name for the plugin selection drop-down + * @id: A unique ID representing the plugin + * @description: The label used in the plugin selection drop-down + * @gettext_package: The domain to use to translate the description, %NULL if the plugin is part of caja-sendto + * @capabilities: a bitmask of #NstPluginCapabilities + * @init: Check for dependencies, and return %FALSE if dependencies such as programs are missing. + * @get_contacts_widget: Return the contact widget, the widget to select the destination of the files + * @validate_destination: Validate whether the destination can receive the file. This callback is optional. + * @send_files: Actually send the files to the selected destination. The file list is a #GList of URI strings. + * @destroy: Free all the resources used by the plugin. + * + * A structure representing a caja-sendto plugin. You should also call NST_INIT_PLUGIN() on the plugin structure to export it. + **/ +struct _NstPluginInfo +{ + gchar *icon; + gchar *id; + gchar *description; + gchar *gettext_package; + NstPluginCapabilities capabilities; + gboolean (*init) (NstPlugin *plugin); + GtkWidget* (*get_contacts_widget) (NstPlugin *plugin); + gboolean (*validate_destination) (NstPlugin *plugin, GtkWidget *contact_widget, char **error); + gboolean (*send_files) (NstPlugin *plugin, + GtkWidget *contact_widget, + GList *file_list); + gboolean (*destroy) (NstPlugin *plugin) ; +}; + +/** + * NstPlugin: + * @module: the #GModule for the opened shared library + * @info: a #NstPluginInfo structure + * + * A structure as used in caja-sendto. + **/ +struct _NstPlugin +{ + GModule *module; + NstPluginInfo *info; +}; + +/** + * NST_INIT_PLUGIN: + * @plugininfo: a #NstPluginInfo structure representing the plugin + * + * Call this on an #NstPluginInfo structure to make it available to caja-sendto. + **/ +# define NST_INIT_PLUGIN(plugininfo) \ + gboolean nst_init_plugin(NstPlugin *plugin); \ + G_MODULE_EXPORT gboolean nst_init_plugin(NstPlugin *plugin) { \ + plugin->info = &(plugininfo); \ + return TRUE; \ + } + +#endif /* _CAJA_SENDTO_PLUGIN_H_ */ + |