/* PIKA - Photo and Image Kooker Application * a rebranding of The GNU Image Manipulation Program (created with heckimp) * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio * * Original copyright, applying to most contents (license remains unchanged): * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * pikapluginprocedure.h * * 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 3 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 details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __PIKA_PLUG_IN_PROCEDURE_H__ #define __PIKA_PLUG_IN_PROCEDURE_H__ #include "pdb/pikaprocedure.h" #define PIKA_TYPE_PLUG_IN_PROCEDURE (pika_plug_in_procedure_get_type ()) #define PIKA_PLUG_IN_PROCEDURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_PLUG_IN_PROCEDURE, PikaPlugInProcedure)) #define PIKA_PLUG_IN_PROCEDURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_PLUG_IN_PROCEDURE, PikaPlugInProcedureClass)) #define PIKA_IS_PLUG_IN_PROCEDURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_PLUG_IN_PROCEDURE)) #define PIKA_IS_PLUG_IN_PROCEDURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_PLUG_IN_PROCEDURE)) #define PIKA_PLUG_IN_PROCEDURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIKA_TYPE_PLUG_IN_PROCEDURE, PikaPlugInProcedureClass)) typedef struct _PikaPlugInProcedureClass PikaPlugInProcedureClass; struct _PikaPlugInProcedure { PikaProcedure parent_instance; /* common members */ GFile *file; GQuark help_domain; gchar *menu_label; GList *menu_paths; gchar *help_id_with_domain; PikaIconType icon_type; gint icon_data_length; guint8 *icon_data; gchar *image_types; PikaPlugInImageType image_types_val; gchar *insensitive_reason; gint sensitivity_mask; gint64 mtime; gboolean installed_during_init; /* file proc specific members */ gboolean file_proc; gboolean generic_file_proc; /* not returning an image. */ gchar *extensions; gchar *prefixes; gchar *magics; gint priority; gchar *mime_types; gboolean handles_remote; gboolean handles_raw; gboolean batch_interpreter; gchar *batch_interpreter_name; GSList *extensions_list; GSList *prefixes_list; GSList *magics_list; GSList *mime_types_list; gchar *thumb_loader; }; struct _PikaPlugInProcedureClass { PikaProcedureClass parent_class; /* virtual functions */ GFile * (* get_file) (PikaPlugInProcedure *procedure); /* signals */ void (* menu_path_added) (PikaPlugInProcedure *procedure, const gchar *menu_path); }; GType pika_plug_in_procedure_get_type (void) G_GNUC_CONST; PikaProcedure * pika_plug_in_procedure_new (PikaPDBProcType proc_type, GFile *file); PikaPlugInProcedure * pika_plug_in_procedure_find (GSList *list, const gchar *proc_name); GFile * pika_plug_in_procedure_get_file (PikaPlugInProcedure *proc); void pika_plug_in_procedure_set_help_domain (PikaPlugInProcedure *proc, const gchar *help_domain); const gchar * pika_plug_in_procedure_get_help_domain (PikaPlugInProcedure *proc); gboolean pika_plug_in_procedure_set_menu_label (PikaPlugInProcedure *proc, const gchar *menu_label, GError **error); gboolean pika_plug_in_procedure_add_menu_path (PikaPlugInProcedure *proc, const gchar *menu_path, GError **error); gboolean pika_plug_in_procedure_set_icon (PikaPlugInProcedure *proc, PikaIconType type, const guint8 *data, gint data_length, GError **error); gboolean pika_plug_in_procedure_take_icon (PikaPlugInProcedure *proc, PikaIconType type, guint8 *data, gint data_length, GError **error); void pika_plug_in_procedure_set_image_types (PikaPlugInProcedure *proc, const gchar *image_types); void pika_plug_in_procedure_set_sensitivity_mask (PikaPlugInProcedure *proc, gint sensitivity_mask); void pika_plug_in_procedure_set_file_proc (PikaPlugInProcedure *proc, const gchar *extensions, const gchar *prefixes, const gchar *magics); void pika_plug_in_procedure_set_generic_file_proc (PikaPlugInProcedure *proc, gboolean is_generic_file_proc); void pika_plug_in_procedure_set_priority (PikaPlugInProcedure *proc, gint priority); void pika_plug_in_procedure_set_mime_types (PikaPlugInProcedure *proc, const gchar *mime_ypes); void pika_plug_in_procedure_set_handles_remote(PikaPlugInProcedure *proc); void pika_plug_in_procedure_set_handles_raw (PikaPlugInProcedure *proc); void pika_plug_in_procedure_set_thumb_loader (PikaPlugInProcedure *proc, const gchar *thumbnailer); void pika_plug_in_procedure_set_batch_interpreter (PikaPlugInProcedure *proc, const gchar *name); void pika_plug_in_procedure_handle_return_values (PikaPlugInProcedure *proc, Pika *pika, PikaProgress *progress, PikaValueArray *return_vals); #endif /* __PIKA_PLUG_IN_PROCEDURE_H__ */