Updated with upstream update

This commit is contained in:
2023-10-30 15:55:30 -07:00
parent 098531073c
commit 3bbdd873ef
584 changed files with 91827 additions and 70362 deletions

View File

@ -3,7 +3,7 @@
# Moreover it is generated in 2 steps, first with common mkenums
# arguments, then concatenating with a "tail" file.
pikaenums_notail = custom_target('pikaenums.c.notail',
input : [ 'pikaenums.h', ],
input : [ 'pikaenums.h', stamp_enumcode],
output: [ 'pikaenums.c.notail', ],
command: [
pika_mkenums,
@ -14,6 +14,7 @@ pikaenums_notail = custom_target('pikaenums.c.notail',
+ '#include "libpikabase/pikabase.h"\n'
+ '#include "libpikabase/pikabase-private.h"\n'
+ '#include "libpikaconfig/pikaconfigenums.h"\n'
+ '#include "pdb/stamp-enumcode.h"\n'
+ '#include "pikaenums.h"\n',
'--fprod',
'/* enumerations from "@basename@" */',
@ -40,7 +41,7 @@ pikaenums_notail = custom_target('pikaenums.c.notail',
'@endif@',
'--dtail',
libpika_mkenums_dtails,
'@INPUT@',
'@INPUT0@',
],
capture: true,
)
@ -71,6 +72,7 @@ pdb_wrappers_sources = [
'pikadrawable_pdb.c',
'pikadrawablecolor_pdb.c',
'pikadrawableedit_pdb.c',
'pikadrawableselect_pdb.c',
'pikadynamics_pdb.c',
'pikaedit_pdb.c',
'pikafile_pdb.c',
@ -125,6 +127,7 @@ pdb_wrappers_headers = [
'pikadrawable_pdb.h',
'pikadrawablecolor_pdb.h',
'pikadrawableedit_pdb.h',
'pikadrawableselect_pdb.h',
'pikadynamics_pdb.h',
'pikaedit_pdb.h',
'pikafile_pdb.h',
@ -168,11 +171,14 @@ pdb_wrappers_headers = [
libpika_sources_introspectable = [
'pika.c',
'pikabatchprocedure.c',
'pikabrush.c',
'pikachannel.c',
'pikadisplay.c',
'pikadrawable.c',
'pikafileprocedure.c',
'pikafont.c',
'pikapikarc.c',
'pikagradient.c',
'pikaimage.c',
'pikaimagecolorprofile.c',
'pikaimagemetadata.c',
@ -182,7 +188,9 @@ libpika_sources_introspectable = [
'pikalayer.c',
'pikalayermask.c',
'pikaloadprocedure.c',
'pikapalette.c',
'pikaparamspecs.c',
'pikapattern.c',
'pikapdb.c',
'pikaplugin.c',
'pikaprocedure.c',
@ -222,11 +230,14 @@ libpika_headers_introspectable = [
# Other headers
'pikabatchprocedure.h',
'pikabrush.h',
'pikachannel.h',
'pikadisplay.h',
'pikadrawable.h',
'pikafileprocedure.h',
'pikafont.h',
'pikapikarc.h',
'pikagradient.h',
'pikaimage.h',
'pikaimagecolorprofile.h',
'pikaimagemetadata.h',
@ -235,7 +246,9 @@ libpika_headers_introspectable = [
'pikalayer.h',
'pikalayermask.h',
'pikaloadprocedure.h',
'pikapalette.h',
'pikaparamspecs.h',
'pikapattern.h',
'pikapdb.h',
'pikaplugin.h',
'pikaprocedure.h',
@ -258,21 +271,22 @@ libpika_headers = [
libpikaui_sources_introspectable = [
'pikaaspectpreview.c',
'pikabrushselectbutton.c',
'pikabrushchooser.c',
'pikadrawablechooser.c',
'pikadrawablepreview.c',
'pikaexport.c',
'pikafontselectbutton.c',
'pikagradientselectbutton.c',
'pikafontchooser.c',
'pikagradientchooser.c',
'pikaimagecombobox.c',
'pikaitemcombobox.c',
'pikapaletteselectbutton.c',
'pikapatternselectbutton.c',
'pikapalettechooser.c',
'pikapatternchooser.c',
'pikaprocbrowserdialog.c',
'pikaproceduredialog.c',
'pikaprocview.c',
'pikaprogressbar.c',
'pikapropchooserfactory.c',
'pikaresourceselectbutton.c',
'pikapropwidgets.c',
'pikaresourcechooser.c',
'pikasaveproceduredialog.c',
'pikaui.c',
'pikazoompreview.c',
@ -281,7 +295,6 @@ libpikaui_sources_introspectable = [
libpikaui_sources = [
libpikaui_sources_introspectable,
pikauimarshal,
'pikapropchooser-private.c',
]
libpikaui_headers_introspectable = [
@ -291,21 +304,22 @@ libpikaui_headers_introspectable = [
# Other headers
'pikaaspectpreview.h',
'pikabrushselectbutton.h',
'pikabrushchooser.h',
'pikadrawablechooser.h',
'pikadrawablepreview.h',
'pikaexport.h',
'pikafontselectbutton.h',
'pikagradientselectbutton.h',
'pikafontchooser.h',
'pikagradientchooser.h',
'pikaimagecombobox.h',
'pikaitemcombobox.h',
'pikapaletteselectbutton.h',
'pikapatternselectbutton.h',
'pikapalettechooser.h',
'pikapatternchooser.h',
'pikaprocbrowserdialog.h',
'pikaproceduredialog.h',
'pikaprocview.h',
'pikaprogressbar.h',
'pikapropchooserfactory.h',
'pikaresourceselectbutton.h',
'pikapropwidgets.h',
'pikaresourcechooser.h',
'pikasaveproceduredialog.h',
'pikazoompreview.h',
]
@ -330,6 +344,8 @@ libpika = library('pika-'+ pika_api_version,
gegl,
gexiv2,
drmingw,
pango,
pangoft2,
],
sources: [
pdbgen
@ -451,6 +467,7 @@ else
'Gio-2.0',
'GLib-2.0',
'GObject-2.0',
'Pango-1.0',
]
gir_args = [

View File

@ -497,6 +497,7 @@ pika_main (GType plug_in_type,
_pika_debug_configure (stack_trace_mode);
PLUG_IN = g_object_new (plug_in_type,
"program-name", progname,
"read-channel", read_channel,
"write-channel", write_channel,
NULL);

View File

@ -9,10 +9,11 @@ EXPORTS
pika_brush_application_mode_get_type
pika_brush_get_angle
pika_brush_get_aspect_ratio
pika_brush_get_buffer
pika_brush_get_by_name
pika_brush_get_hardness
pika_brush_get_info
pika_brush_get_pixels
pika_brush_get_mask
pika_brush_get_radius
pika_brush_get_shape
pika_brush_get_spacing
@ -243,6 +244,9 @@ EXPORTS
pika_drawable_type
pika_drawable_type_with_alpha
pika_drawable_update
pika_drawables_close_popup
pika_drawables_popup
pika_drawables_set_popup
pika_dynamics_get_list
pika_dynamics_refresh
pika_edit_copy
@ -290,8 +294,10 @@ EXPORTS
pika_floating_sel_remove
pika_floating_sel_to_layer
pika_font_get_by_name
pika_font_get_pango_font_description
pika_font_get_type
pika_fonts_close_popup
pika_fonts_get_by_name
pika_fonts_get_list
pika_fonts_popup
pika_fonts_refresh
@ -399,6 +405,7 @@ EXPORTS
pika_image_get_layers
pika_image_get_metadata
pika_image_get_name
pika_image_get_palette
pika_image_get_parasite
pika_image_get_parasite_list
pika_image_get_precision
@ -676,9 +683,9 @@ EXPORTS
pika_param_spec_vectors
pika_param_text_layer_get_type
pika_param_vectors_get_type
pika_pattern_get_buffer
pika_pattern_get_by_name
pika_pattern_get_info
pika_pattern_get_pixels
pika_pattern_get_type
pika_patterns_close_popup
pika_patterns_get_list
@ -687,18 +694,12 @@ EXPORTS
pika_patterns_set_popup
pika_pdb_dump_to_file
pika_pdb_get_data
pika_pdb_get_data_size
pika_pdb_get_last_error
pika_pdb_get_last_status
pika_pdb_get_type
pika_pdb_lookup_procedure
pika_pdb_procedure_exists
pika_pdb_query_procedures
pika_pdb_run_procedure
pika_pdb_run_procedure_argv
pika_pdb_run_procedure_array
pika_pdb_run_procedure_config
pika_pdb_run_procedure_valist
pika_pdb_set_data
pika_pdb_temp_procedure_name
pika_pencil
@ -723,22 +724,13 @@ EXPORTS
pika_procedure_add_menu_path
pika_procedure_add_return_value
pika_procedure_add_return_value_from_property
pika_procedure_config_begin_export
pika_procedure_config_begin_run
pika_procedure_config_end_export
pika_procedure_config_end_run
pika_procedure_config_get_choice_id
pika_procedure_config_get_procedure
pika_procedure_config_get_type
pika_procedure_config_get_values
pika_procedure_config_has_default
pika_procedure_config_load_default
pika_procedure_config_load_last
pika_procedure_config_load_parasite
pika_procedure_config_save_default
pika_procedure_config_save_last
pika_procedure_config_save_metadata
pika_procedure_config_save_parasite
pika_procedure_config_set_values
pika_procedure_create_config
pika_procedure_extension_ready
pika_procedure_find_argument
@ -767,9 +759,10 @@ EXPORTS
pika_procedure_get_sensitivity_mask
pika_procedure_get_type
pika_procedure_new
pika_procedure_new_arguments
pika_procedure_new_return_values
pika_procedure_run
pika_procedure_run_config
pika_procedure_run_valist
pika_procedure_set_argument_sync
pika_procedure_set_attribution
pika_procedure_set_documentation
@ -812,7 +805,6 @@ EXPORTS
pika_resource_is_pattern
pika_resource_is_valid
pika_resource_rename
pika_resource_select_destroy
pika_resource_select_new
pika_resource_select_set
pika_save_procedure_get_support_comment
@ -850,8 +842,8 @@ EXPORTS
pika_smudge
pika_smudge_default
pika_temp_file
pika_text_fontname
pika_text_get_extents_fontname
pika_text_font
pika_text_get_extents_font
pika_text_layer_get_antialias
pika_text_layer_get_base_direction
pika_text_layer_get_by_id

View File

@ -25,6 +25,7 @@
#include <glib-object.h>
#include <gegl.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <pango/pango.h>
#include <libpikabase/pikabase.h>
#include <libpikacolor/pikacolor.h>
@ -37,10 +38,13 @@
#include <libpika/pikatypes.h>
#include <libpika/pikabatchprocedure.h>
#include <libpika/pikabrush.h>
#include <libpika/pikachannel.h>
#include <libpika/pikadisplay.h>
#include <libpika/pikadrawable.h>
#include <libpika/pikafont.h>
#include <libpika/pikapikarc.h>
#include <libpika/pikagradient.h>
#include <libpika/pikaimage.h>
#include <libpika/pikaimagecolorprofile.h>
#include <libpika/pikaimagemetadata.h>
@ -49,7 +53,9 @@
#include <libpika/pikalayer.h>
#include <libpika/pikalayermask.h>
#include <libpika/pikaloadprocedure.h>
#include <libpika/pikapalette.h>
#include <libpika/pikaparamspecs.h>
#include <libpika/pikapattern.h>
#include <libpika/pikapdb.h>
#include <libpika/pikaplugin.h>
#include <libpika/pikaprocedureconfig.h>
@ -76,11 +82,6 @@
G_BEGIN_DECLS
#define pika_get_data pika_pdb_get_data
#define pika_get_data_size pika_pdb_get_data_size
#define pika_set_data pika_pdb_set_data
/**
* PIKA_MAIN:
* @plug_in_type: The #GType of the plug-in's #PikaPlugIn subclass

View File

@ -61,9 +61,9 @@ pika_version (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-version",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-version",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -95,9 +95,9 @@ pika_getpid (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-getpid",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-getpid",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -131,9 +131,9 @@ pika_attach_parasite (const PikaParasite *parasite)
PIKA_TYPE_PARASITE, parasite,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-attach-parasite",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-attach-parasite",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -167,9 +167,9 @@ pika_detach_parasite (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-detach-parasite",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-detach-parasite",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -202,9 +202,9 @@ pika_get_parasite (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-parasite",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-parasite",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -238,9 +238,9 @@ pika_get_parasite_list (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-parasite-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-parasite-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -273,9 +273,9 @@ pika_temp_file (const gchar *extension)
G_TYPE_STRING, extension,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-temp-file",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-temp-file",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -39,6 +39,7 @@
#include <libpika/pikadrawable_pdb.h>
#include <libpika/pikadrawablecolor_pdb.h>
#include <libpika/pikadrawableedit_pdb.h>
#include <libpika/pikadrawableselect_pdb.h>
#include <libpika/pikadynamics_pdb.h>
#include <libpika/pikaedit_pdb.h>
#include <libpika/pikafile_pdb.h>

View File

@ -28,6 +28,7 @@
#include "pikauitypes.h"
#include "pika.h"
#include "pikapdb-private.h"
#include "libpika-intl.h"
@ -154,6 +155,7 @@ pika_aspect_preview_constructed (GObject *object)
{
gchar *data_name;
PreviewSettings settings;
GBytes *settings_bytes = NULL;
G_OBJECT_CLASS (parent_class)->constructed (object);
@ -161,10 +163,13 @@ pika_aspect_preview_constructed (GObject *object)
g_get_prgname (),
pika_aspect_preview_counter++);
if (pika_get_data (data_name, &settings))
if (pika_pdb_get_data (data_name, &settings_bytes) &&
g_bytes_get_size (settings_bytes) == sizeof (PreviewSettings))
{
settings = *((PreviewSettings *) g_bytes_get_data (settings_bytes, NULL));
pika_preview_set_update (PIKA_PREVIEW (object), settings.update);
}
g_bytes_unref (settings_bytes);
g_object_set_data_full (object, "pika-aspect-preview-data-name",
data_name, (GDestroyNotify) g_free);
@ -181,11 +186,14 @@ pika_aspect_preview_dispose (GObject *object)
if (data_name)
{
PikaPreview *preview = PIKA_PREVIEW (object);
GBytes *bytes;
PreviewSettings settings;
settings.update = pika_preview_get_update (preview);
pika_set_data (data_name, &settings, sizeof (PreviewSettings));
bytes = g_bytes_new_static (&settings, sizeof (PreviewSettings));
pika_pdb_set_data (data_name, bytes);
g_bytes_unref (bytes);
}
g_clear_object (&priv->drawable);

View File

@ -26,6 +26,7 @@
#include "pika.h"
#include "pikabatchprocedure.h"
#include "pikaprocedureconfig-private.h"
#include "pikapdb_pdb.h"
@ -128,12 +129,14 @@ static PikaValueArray *
pika_batch_procedure_run (PikaProcedure *procedure,
const PikaValueArray *args)
{
PikaBatchProcedure *batch_proc = PIKA_BATCH_PROCEDURE (procedure);
PikaValueArray *remaining;
PikaValueArray *return_values;
PikaRunMode run_mode;
const gchar *cmd;
gint i;
PikaBatchProcedure *batch_proc = PIKA_BATCH_PROCEDURE (procedure);
PikaValueArray *remaining;
PikaValueArray *return_values;
PikaRunMode run_mode;
const gchar *cmd;
PikaProcedureConfig *config;
PikaPDBStatusType status = PIKA_PDB_EXECUTION_ERROR;
gint i;
run_mode = PIKA_VALUES_GET_ENUM (args, 0);
cmd = PIKA_VALUES_GET_STRING (args, 1);
@ -147,12 +150,22 @@ pika_batch_procedure_run (PikaProcedure *procedure,
pika_value_array_append (remaining, value);
}
config = pika_procedure_create_config (procedure);
_pika_procedure_config_begin_run (config, NULL, run_mode, remaining);
pika_value_array_unref (remaining);
return_values = batch_proc->priv->run_func (procedure,
run_mode,
cmd,
remaining,
config,
batch_proc->priv->run_data);
pika_value_array_unref (remaining);
if (return_values != NULL &&
pika_value_array_length (return_values) > 0 &&
G_VALUE_HOLDS_ENUM (pika_value_array_index (return_values, 0)))
status = PIKA_VALUES_GET_ENUM (return_values, 0);
_pika_procedure_config_end_run (config, status);
g_object_unref (config);
return return_values;
}

View File

@ -37,7 +37,7 @@ G_BEGIN_DECLS
* PikaBatchFunc:
* @procedure: the #PikaProcedure that runs.
* @run_mode: the #PikaRunMode.
* @args: the @procedure's remaining arguments.
* @config: the @procedure's remaining arguments.
* @run_data: (closure): the run_data given in pika_batch_procedure_new().
*
* The batch function is run during the lifetime of the PIKA session,
@ -50,7 +50,7 @@ G_BEGIN_DECLS
typedef PikaValueArray * (* PikaBatchFunc) (PikaProcedure *procedure,
PikaRunMode run_mode,
const gchar *command,
const PikaValueArray *args,
PikaProcedureConfig *config,
gpointer run_data);

View File

@ -59,9 +59,9 @@ pika_brush_new (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-new",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-new",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -96,9 +96,9 @@ pika_brush_get_by_name (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-by-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-by-name",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -132,9 +132,9 @@ pika_brush_is_generated (PikaBrush *brush)
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-is-generated",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-is-generated",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -178,9 +178,9 @@ pika_brush_get_info (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-info",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-info",
args);
pika_value_array_unref (args);
*width = 0;
@ -204,7 +204,7 @@ pika_brush_get_info (PikaBrush *brush,
}
/**
* pika_brush_get_pixels:
* _pika_brush_get_pixels:
* @brush: The brush.
* @width: (out): The brush width.
* @height: (out): The brush height.
@ -224,13 +224,13 @@ pika_brush_get_info (PikaBrush *brush,
* Since: 2.2
**/
gboolean
pika_brush_get_pixels (PikaBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
GBytes **mask_bytes,
gint *color_bpp,
GBytes **color_bytes)
_pika_brush_get_pixels (PikaBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
GBytes **mask_bytes,
gint *color_bpp,
GBytes **color_bytes)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -240,9 +240,9 @@ pika_brush_get_pixels (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-pixels",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-pixels",
args);
pika_value_array_unref (args);
*width = 0;
@ -295,9 +295,9 @@ pika_brush_get_spacing (PikaBrush *brush)
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-spacing",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-spacing",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -337,9 +337,9 @@ pika_brush_set_spacing (PikaBrush *brush,
G_TYPE_INT, spacing,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-spacing",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-spacing",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -378,9 +378,9 @@ pika_brush_get_shape (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-shape",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-shape",
args);
pika_value_array_unref (args);
*shape = 0;
@ -426,9 +426,9 @@ pika_brush_set_shape (PikaBrush *brush,
PIKA_TYPE_BRUSH_GENERATED_SHAPE, shape_in,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-shape",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-shape",
args);
pika_value_array_unref (args);
*shape_out = 0;
@ -469,9 +469,9 @@ pika_brush_get_radius (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-radius",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-radius",
args);
pika_value_array_unref (args);
*radius = 0.0;
@ -516,9 +516,9 @@ pika_brush_set_radius (PikaBrush *brush,
G_TYPE_DOUBLE, radius_in,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-radius",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-radius",
args);
pika_value_array_unref (args);
*radius_out = 0.0;
@ -559,9 +559,9 @@ pika_brush_get_spikes (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-spikes",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-spikes",
args);
pika_value_array_unref (args);
*spikes = 0;
@ -606,9 +606,9 @@ pika_brush_set_spikes (PikaBrush *brush,
G_TYPE_INT, spikes_in,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-spikes",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-spikes",
args);
pika_value_array_unref (args);
*spikes_out = 0;
@ -651,9 +651,9 @@ pika_brush_get_hardness (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-hardness",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-hardness",
args);
pika_value_array_unref (args);
*hardness = 0.0;
@ -698,9 +698,9 @@ pika_brush_set_hardness (PikaBrush *brush,
G_TYPE_DOUBLE, hardness_in,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-hardness",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-hardness",
args);
pika_value_array_unref (args);
*hardness_out = 0.0;
@ -742,9 +742,9 @@ pika_brush_get_aspect_ratio (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-aspect-ratio",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-aspect-ratio",
args);
pika_value_array_unref (args);
*aspect_ratio = 0.0;
@ -789,9 +789,9 @@ pika_brush_set_aspect_ratio (PikaBrush *brush,
G_TYPE_DOUBLE, aspect_ratio_in,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-aspect-ratio",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-aspect-ratio",
args);
pika_value_array_unref (args);
*aspect_ratio_out = 0.0;
@ -832,9 +832,9 @@ pika_brush_get_angle (PikaBrush *brush,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-angle",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-get-angle",
args);
pika_value_array_unref (args);
*angle = 0.0;
@ -879,9 +879,9 @@ pika_brush_set_angle (PikaBrush *brush,
G_TYPE_DOUBLE, angle_in,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-angle",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brush-set-angle",
args);
pika_value_array_unref (args);
*angle_out = 0.0;

View File

@ -32,54 +32,54 @@ G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
PikaBrush* pika_brush_new (const gchar *name);
PikaBrush* pika_brush_get_by_name (const gchar *name);
gboolean pika_brush_is_generated (PikaBrush *brush);
gboolean pika_brush_get_info (PikaBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
gint *color_bpp);
gboolean pika_brush_get_pixels (PikaBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
GBytes **mask_bytes,
gint *color_bpp,
GBytes **color_bytes);
gint pika_brush_get_spacing (PikaBrush *brush);
gboolean pika_brush_set_spacing (PikaBrush *brush,
gint spacing);
gboolean pika_brush_get_shape (PikaBrush *brush,
PikaBrushGeneratedShape *shape);
gboolean pika_brush_set_shape (PikaBrush *brush,
PikaBrushGeneratedShape shape_in,
PikaBrushGeneratedShape *shape_out);
gboolean pika_brush_get_radius (PikaBrush *brush,
gdouble *radius);
gboolean pika_brush_set_radius (PikaBrush *brush,
gdouble radius_in,
gdouble *radius_out);
gboolean pika_brush_get_spikes (PikaBrush *brush,
gint *spikes);
gboolean pika_brush_set_spikes (PikaBrush *brush,
gint spikes_in,
gint *spikes_out);
gboolean pika_brush_get_hardness (PikaBrush *brush,
gdouble *hardness);
gboolean pika_brush_set_hardness (PikaBrush *brush,
gdouble hardness_in,
gdouble *hardness_out);
gboolean pika_brush_get_aspect_ratio (PikaBrush *brush,
gdouble *aspect_ratio);
gboolean pika_brush_set_aspect_ratio (PikaBrush *brush,
gdouble aspect_ratio_in,
gdouble *aspect_ratio_out);
gboolean pika_brush_get_angle (PikaBrush *brush,
gdouble *angle);
gboolean pika_brush_set_angle (PikaBrush *brush,
gdouble angle_in,
gdouble *angle_out);
PikaBrush* pika_brush_new (const gchar *name);
PikaBrush* pika_brush_get_by_name (const gchar *name);
gboolean pika_brush_is_generated (PikaBrush *brush);
gboolean pika_brush_get_info (PikaBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
gint *color_bpp);
G_GNUC_INTERNAL gboolean _pika_brush_get_pixels (PikaBrush *brush,
gint *width,
gint *height,
gint *mask_bpp,
GBytes **mask_bytes,
gint *color_bpp,
GBytes **color_bytes);
gint pika_brush_get_spacing (PikaBrush *brush);
gboolean pika_brush_set_spacing (PikaBrush *brush,
gint spacing);
gboolean pika_brush_get_shape (PikaBrush *brush,
PikaBrushGeneratedShape *shape);
gboolean pika_brush_set_shape (PikaBrush *brush,
PikaBrushGeneratedShape shape_in,
PikaBrushGeneratedShape *shape_out);
gboolean pika_brush_get_radius (PikaBrush *brush,
gdouble *radius);
gboolean pika_brush_set_radius (PikaBrush *brush,
gdouble radius_in,
gdouble *radius_out);
gboolean pika_brush_get_spikes (PikaBrush *brush,
gint *spikes);
gboolean pika_brush_set_spikes (PikaBrush *brush,
gint spikes_in,
gint *spikes_out);
gboolean pika_brush_get_hardness (PikaBrush *brush,
gdouble *hardness);
gboolean pika_brush_set_hardness (PikaBrush *brush,
gdouble hardness_in,
gdouble *hardness_out);
gboolean pika_brush_get_aspect_ratio (PikaBrush *brush,
gdouble *aspect_ratio);
gboolean pika_brush_set_aspect_ratio (PikaBrush *brush,
gdouble aspect_ratio_in,
gdouble *aspect_ratio_out);
gboolean pika_brush_get_angle (PikaBrush *brush,
gdouble *angle);
gboolean pika_brush_set_angle (PikaBrush *brush,
gdouble angle_in,
gdouble *angle_out);
G_END_DECLS

View File

@ -56,9 +56,9 @@ pika_brushes_refresh (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-refresh",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-refresh",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -92,9 +92,9 @@ pika_brushes_get_list (const gchar *filter)
G_TYPE_STRING, filter,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-get-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-get-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -41,7 +41,8 @@
* pika_brushes_popup:
* @brush_callback: The callback PDB proc to call when user chooses a brush.
* @popup_title: Title of the brush selection dialog.
* @initial_brush_name: The name of the brush to set as the initial choice.
* @initial_brush: The brush to set as the initial choice.
* @parent_window: An optional parent window handle for the popup to be set transient to.
*
* Invokes the PIKA brush selection dialog.
*
@ -52,7 +53,8 @@
gboolean
pika_brushes_popup (const gchar *brush_callback,
const gchar *popup_title,
const gchar *initial_brush_name)
PikaBrush *initial_brush,
GBytes *parent_window)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -61,12 +63,13 @@ pika_brushes_popup (const gchar *brush_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, brush_callback,
G_TYPE_STRING, popup_title,
G_TYPE_STRING, initial_brush_name,
PIKA_TYPE_BRUSH, initial_brush,
G_TYPE_BYTES, parent_window,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -97,9 +100,9 @@ pika_brushes_close_popup (const gchar *brush_callback)
G_TYPE_STRING, brush_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-close-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-close-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -112,7 +115,7 @@ pika_brushes_close_popup (const gchar *brush_callback)
/**
* pika_brushes_set_popup:
* @brush_callback: The name of the callback registered for this pop-up.
* @brush_name: The name of the brush to set as selected.
* @brush: The brush to set as selected.
*
* Sets the selected brush in a brush selection dialog.
*
@ -122,7 +125,7 @@ pika_brushes_close_popup (const gchar *brush_callback)
**/
gboolean
pika_brushes_set_popup (const gchar *brush_callback,
const gchar *brush_name)
PikaBrush *brush)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -130,12 +133,12 @@ pika_brushes_set_popup (const gchar *brush_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, brush_callback,
G_TYPE_STRING, brush_name,
PIKA_TYPE_BRUSH, brush,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-set-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-brushes-set-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -34,10 +34,11 @@ G_BEGIN_DECLS
gboolean pika_brushes_popup (const gchar *brush_callback,
const gchar *popup_title,
const gchar *initial_brush_name);
PikaBrush *initial_brush,
GBytes *parent_window);
gboolean pika_brushes_close_popup (const gchar *brush_callback);
gboolean pika_brushes_set_popup (const gchar *brush_callback,
const gchar *brush_name);
PikaBrush *brush);
G_END_DECLS

View File

@ -62,9 +62,9 @@ pika_buffers_get_list (const gchar *filter)
G_TYPE_STRING, filter,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffers-get-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffers-get-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -102,9 +102,9 @@ pika_buffer_rename (const gchar *buffer_name,
G_TYPE_STRING, new_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-rename",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-rename",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -138,9 +138,9 @@ pika_buffer_delete (const gchar *buffer_name)
G_TYPE_STRING, buffer_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-delete",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-delete",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -173,9 +173,9 @@ pika_buffer_get_width (const gchar *buffer_name)
G_TYPE_STRING, buffer_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-width",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-width",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -209,9 +209,9 @@ pika_buffer_get_height (const gchar *buffer_name)
G_TYPE_STRING, buffer_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-height",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-height",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -245,9 +245,9 @@ pika_buffer_get_bytes (const gchar *buffer_name)
G_TYPE_STRING, buffer_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-bytes",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-bytes",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -281,9 +281,9 @@ pika_buffer_get_image_type (const gchar *buffer_name)
G_TYPE_STRING, buffer_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-image-type",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-buffer-get-image-type",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -78,9 +78,9 @@ _pika_channel_new (PikaImage *image,
PIKA_TYPE_RGB, color,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-new",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-new",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -124,9 +124,9 @@ pika_channel_new_from_component (PikaImage *image,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-new-from-component",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-new-from-component",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -160,9 +160,9 @@ pika_channel_copy (PikaChannel *channel)
PIKA_TYPE_CHANNEL, channel,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-copy",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-copy",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -207,9 +207,9 @@ pika_channel_combine_masks (PikaChannel *channel1,
G_TYPE_INT, offy,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-combine-masks",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-combine-masks",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -242,9 +242,9 @@ pika_channel_get_show_masked (PikaChannel *channel)
PIKA_TYPE_CHANNEL, channel,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-get-show-masked",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-get-show-masked",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -281,9 +281,9 @@ pika_channel_set_show_masked (PikaChannel *channel,
G_TYPE_BOOLEAN, show_masked,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-set-show-masked",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-set-show-masked",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -314,9 +314,9 @@ pika_channel_get_opacity (PikaChannel *channel)
PIKA_TYPE_CHANNEL, channel,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-get-opacity",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-get-opacity",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -351,9 +351,9 @@ pika_channel_set_opacity (PikaChannel *channel,
G_TYPE_DOUBLE, opacity,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-set-opacity",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-set-opacity",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -386,9 +386,9 @@ pika_channel_get_color (PikaChannel *channel,
PIKA_TYPE_CHANNEL, channel,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-get-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-get-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -425,9 +425,9 @@ pika_channel_set_color (PikaChannel *channel,
PIKA_TYPE_RGB, color,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-set-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-channel-set-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

File diff suppressed because it is too large Load Diff

View File

@ -63,9 +63,9 @@ pika_debug_timer_start (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-debug-timer-start",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-debug-timer-start",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -101,9 +101,9 @@ pika_debug_timer_end (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-debug-timer-end",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-debug-timer-end",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -60,9 +60,9 @@ pika_display_id_is_valid (gint display_id)
G_TYPE_INT, display_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-id-is-valid",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-id-is-valid",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -99,9 +99,9 @@ pika_display_new (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-new",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-new",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -137,9 +137,9 @@ pika_display_delete (PikaDisplay *display)
PIKA_TYPE_DISPLAY, display,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-delete",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-delete",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -156,37 +156,39 @@ pika_display_delete (PikaDisplay *display)
* Get a handle to the native window for an image display.
*
* This procedure returns a handle to the native window for a given
* image display. For example in the X backend of GDK, a native window
* handle is an Xlib XID. A value of 0 is returned for an invalid
* display or if this function is unimplemented for the windowing
* system that is being used.
* image display.
* It can be different types of data depending on the platform you are
* running on. For example in the X backend of GDK, a native window
* handle is an Xlib XID whereas on Wayland, it is a string handle. A
* value of NULL is returned for an invalid display or if this function
* is unimplemented for the windowing system that is being used.
*
* Returns: The native window handle or 0.
* Returns: (transfer full): The native window handle or NULL.
*
* Since: 2.4
**/
gint
GBytes *
pika_display_get_window_handle (PikaDisplay *display)
{
PikaValueArray *args;
PikaValueArray *return_vals;
gint window = 0;
GBytes *handle = NULL;
args = pika_value_array_new_from_types (NULL,
PIKA_TYPE_DISPLAY, display,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-get-window-handle",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-get-window-handle",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
window = PIKA_VALUES_GET_INT (return_vals, 1);
handle = PIKA_VALUES_DUP_BYTES (return_vals, 1);
pika_value_array_unref (return_vals);
return window;
return handle;
}
/**
@ -213,9 +215,9 @@ pika_display_present (PikaDisplay *display)
PIKA_TYPE_DISPLAY, display,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-present",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-display-present",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -247,9 +249,9 @@ pika_displays_flush (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-displays-flush",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-displays-flush",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -286,9 +288,9 @@ pika_displays_reconnect (PikaImage *old_image,
PIKA_TYPE_IMAGE, new_image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-displays-reconnect",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-displays-reconnect",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -35,7 +35,7 @@ G_BEGIN_DECLS
gboolean pika_display_id_is_valid (gint display_id);
PikaDisplay* pika_display_new (PikaImage *image);
gboolean pika_display_delete (PikaDisplay *display);
gint pika_display_get_window_handle (PikaDisplay *display);
GBytes* pika_display_get_window_handle (PikaDisplay *display);
gboolean pika_display_present (PikaDisplay *display);
gboolean pika_displays_flush (void);
gboolean pika_displays_reconnect (PikaImage *old_image,

View File

@ -63,9 +63,9 @@ _pika_drawable_get_format (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-format",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-format",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -102,9 +102,9 @@ _pika_drawable_get_thumbnail_format (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-thumbnail-format",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-thumbnail-format",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -136,9 +136,9 @@ pika_drawable_type (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-type",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-type",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -173,9 +173,9 @@ pika_drawable_type_with_alpha (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-type-with-alpha",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-type-with-alpha",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -209,9 +209,9 @@ pika_drawable_has_alpha (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-has-alpha",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-has-alpha",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -244,9 +244,9 @@ pika_drawable_is_rgb (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-is-rgb",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-is-rgb",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -279,9 +279,9 @@ pika_drawable_is_gray (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-is-gray",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-is-gray",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -314,9 +314,9 @@ pika_drawable_is_indexed (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-is-indexed",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-is-indexed",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -348,9 +348,9 @@ pika_drawable_get_bpp (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-bpp",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-bpp",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -382,9 +382,9 @@ pika_drawable_get_width (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-width",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-width",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -416,9 +416,9 @@ pika_drawable_get_height (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-height",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-height",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -456,9 +456,9 @@ pika_drawable_get_offsets (PikaDrawable *drawable,
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-offsets",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-get-offsets",
args);
pika_value_array_unref (args);
*offset_x = 0;
@ -518,9 +518,9 @@ pika_drawable_mask_bounds (PikaDrawable *drawable,
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-mask-bounds",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-mask-bounds",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -573,9 +573,9 @@ pika_drawable_mask_intersect (PikaDrawable *drawable,
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-mask-intersect",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-mask-intersect",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -619,9 +619,9 @@ pika_drawable_merge_shadow (PikaDrawable *drawable,
G_TYPE_BOOLEAN, undo,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-merge-shadow",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-merge-shadow",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -657,9 +657,9 @@ pika_drawable_free_shadow (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-free-shadow",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-free-shadow",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -705,9 +705,9 @@ pika_drawable_update (PikaDrawable *drawable,
G_TYPE_INT, height,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-update",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-update",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -751,9 +751,9 @@ pika_drawable_fill (PikaDrawable *drawable,
PIKA_TYPE_FILL_TYPE, fill_type,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-fill",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-fill",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -802,9 +802,9 @@ pika_drawable_offset (PikaDrawable *drawable,
G_TYPE_INT, offset_y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-offset",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-offset",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -852,9 +852,9 @@ _pika_drawable_thumbnail (PikaDrawable *drawable,
G_TYPE_INT, height,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-thumbnail",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-thumbnail",
args);
pika_value_array_unref (args);
*actual_width = 0;
@ -929,9 +929,9 @@ _pika_drawable_sub_thumbnail (PikaDrawable *drawable,
G_TYPE_INT, dest_height,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-sub-thumbnail",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-sub-thumbnail",
args);
pika_value_array_unref (args);
*width = 0;
@ -984,9 +984,9 @@ pika_drawable_foreground_extract (PikaDrawable *drawable,
PIKA_TYPE_DRAWABLE, mask,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-foreground-extract",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-foreground-extract",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -68,9 +68,9 @@ pika_drawable_brightness_contrast (PikaDrawable *drawable,
G_TYPE_DOUBLE, contrast,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-brightness-contrast",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-brightness-contrast",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -125,9 +125,9 @@ pika_drawable_color_balance (PikaDrawable *drawable,
G_TYPE_DOUBLE, yellow_blue,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-color-balance",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-color-balance",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -172,9 +172,9 @@ pika_drawable_colorize_hsl (PikaDrawable *drawable,
G_TYPE_DOUBLE, lightness,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-colorize-hsl",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-colorize-hsl",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -222,9 +222,9 @@ pika_drawable_curves_explicit (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 3), values, num_values);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-curves-explicit",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-curves-explicit",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -273,9 +273,9 @@ pika_drawable_curves_spline (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 3), points, num_points);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-curves-spline",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-curves-spline",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -317,9 +317,9 @@ pika_drawable_extract_component (PikaDrawable *drawable,
G_TYPE_BOOLEAN, linear,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-extract-component",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-extract-component",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -358,9 +358,9 @@ pika_drawable_desaturate (PikaDrawable *drawable,
PIKA_TYPE_DESATURATE_MODE, desaturate_mode,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-desaturate",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-desaturate",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -402,9 +402,9 @@ pika_drawable_equalize (PikaDrawable *drawable,
G_TYPE_BOOLEAN, mask_only,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-equalize",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-equalize",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -473,9 +473,9 @@ pika_drawable_histogram (PikaDrawable *drawable,
G_TYPE_DOUBLE, end_range,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-histogram",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-histogram",
args);
pika_value_array_unref (args);
*mean = 0.0;
@ -544,9 +544,9 @@ pika_drawable_hue_saturation (PikaDrawable *drawable,
G_TYPE_DOUBLE, overlap,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-hue-saturation",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-hue-saturation",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -585,9 +585,9 @@ pika_drawable_invert (PikaDrawable *drawable,
G_TYPE_BOOLEAN, linear,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-invert",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-invert",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -655,9 +655,9 @@ pika_drawable_levels (PikaDrawable *drawable,
G_TYPE_BOOLEAN, clamp_output,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-levels",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-levels",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -692,9 +692,9 @@ pika_drawable_levels_stretch (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-levels-stretch",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-levels-stretch",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -750,9 +750,9 @@ pika_drawable_shadows_highlights (PikaDrawable *drawable,
G_TYPE_DOUBLE, highlights_ccorrect,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-shadows-highlights",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-shadows-highlights",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -789,9 +789,9 @@ pika_drawable_posterize (PikaDrawable *drawable,
G_TYPE_INT, levels,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-posterize",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-posterize",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -836,9 +836,9 @@ pika_drawable_threshold (PikaDrawable *drawable,
G_TYPE_DOUBLE, high_threshold,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-threshold",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-threshold",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -64,9 +64,9 @@ pika_drawable_edit_clear (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-clear",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-clear",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -108,9 +108,9 @@ pika_drawable_edit_fill (PikaDrawable *drawable,
PIKA_TYPE_FILL_TYPE, fill_type,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-fill",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-fill",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -164,9 +164,9 @@ pika_drawable_edit_bucket_fill (PikaDrawable *drawable,
G_TYPE_DOUBLE, y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-bucket-fill",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-bucket-fill",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -240,9 +240,9 @@ pika_drawable_edit_gradient_fill (PikaDrawable *drawable,
G_TYPE_DOUBLE, y2,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-gradient-fill",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-gradient-fill",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -284,9 +284,9 @@ pika_drawable_edit_stroke_selection (PikaDrawable *drawable)
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-stroke-selection",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-stroke-selection",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -333,9 +333,9 @@ pika_drawable_edit_stroke_item (PikaDrawable *drawable,
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-stroke-item",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-drawable-edit-stroke-item",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -28,6 +28,7 @@
#include "pikauitypes.h"
#include "pika.h"
#include "pikapdb-private.h"
#include "pikadrawablepreview.h"
@ -152,6 +153,7 @@ pika_drawable_preview_constructed (GObject *object)
{
gchar *data_name;
PreviewSettings settings;
GBytes *settings_bytes = NULL;
G_OBJECT_CLASS (parent_class)->constructed (object);
@ -159,12 +161,15 @@ pika_drawable_preview_constructed (GObject *object)
g_get_prgname (),
++pika_drawable_preview_counter);
if (pika_get_data (data_name, &settings))
if (pika_pdb_get_data (data_name, &settings_bytes) &&
g_bytes_get_size (settings_bytes) == sizeof (PreviewSettings))
{
settings = *((PreviewSettings *) g_bytes_get_data (settings_bytes, NULL));
pika_preview_set_update (PIKA_PREVIEW (object), settings.update);
pika_scrolled_preview_set_position (PIKA_SCROLLED_PREVIEW (object),
settings.x, settings.y);
}
g_bytes_unref (settings_bytes);
g_object_set_data_full (object, "pika-drawable-preview-data-name",
data_name, (GDestroyNotify) g_free);
@ -181,12 +186,15 @@ pika_drawable_preview_dispose (GObject *object)
if (data_name)
{
PikaPreview *preview = PIKA_PREVIEW (object);
GBytes *bytes;
PreviewSettings settings;
pika_preview_get_position (preview, &settings.x, &settings.y);
settings.update = pika_preview_get_update (preview);
pika_set_data (data_name, &settings, sizeof (PreviewSettings));
bytes = g_bytes_new_static (&settings, sizeof (PreviewSettings));
pika_pdb_set_data (data_name, bytes);
g_bytes_unref (bytes);
}
g_clear_object (&priv->drawable);

View File

@ -59,9 +59,9 @@ pika_dynamics_refresh (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dynamics-refresh",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dynamics-refresh",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -97,9 +97,9 @@ pika_dynamics_get_list (const gchar *filter)
G_TYPE_STRING, filter,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dynamics-get-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dynamics-get-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -68,9 +68,9 @@ pika_edit_cut (gint num_drawables,
G_TYPE_NONE);
pika_value_set_object_array (pika_value_array_index (args, 1), PIKA_TYPE_ITEM, (GObject **) drawables, num_drawables);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-cut",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-cut",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -114,9 +114,9 @@ pika_edit_copy (gint num_drawables,
G_TYPE_NONE);
pika_value_set_object_array (pika_value_array_index (args, 1), PIKA_TYPE_ITEM, (GObject **) drawables, num_drawables);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-copy",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-copy",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -155,9 +155,9 @@ pika_edit_copy_visible (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-copy-visible",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-copy-visible",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -210,9 +210,9 @@ pika_edit_paste (PikaDrawable *drawable,
G_TYPE_BOOLEAN, paste_into,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-paste",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-paste",
args);
pika_value_array_unref (args);
*num_layers = 0;
@ -252,9 +252,9 @@ pika_edit_paste_as_new_image (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-paste-as-new-image",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-paste-as-new-image",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -300,9 +300,9 @@ pika_edit_named_cut (gint num_drawables,
G_TYPE_NONE);
pika_value_set_object_array (pika_value_array_index (args, 1), PIKA_TYPE_ITEM, (GObject **) drawables, num_drawables);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-cut",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-cut",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -348,9 +348,9 @@ pika_edit_named_copy (gint num_drawables,
G_TYPE_NONE);
pika_value_set_object_array (pika_value_array_index (args, 1), PIKA_TYPE_ITEM, (GObject **) drawables, num_drawables);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-copy",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-copy",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -392,9 +392,9 @@ pika_edit_named_copy_visible (PikaImage *image,
G_TYPE_STRING, buffer_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-copy-visible",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-copy-visible",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -435,9 +435,9 @@ pika_edit_named_paste (PikaDrawable *drawable,
G_TYPE_BOOLEAN, paste_into,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-paste",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-paste",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -472,9 +472,9 @@ pika_edit_named_paste_as_new_image (const gchar *buffer_name)
G_TYPE_STRING, buffer_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-paste-as-new-image",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-edit-named-paste-as-new-image",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -62,9 +62,9 @@ pika_file_load (PikaRunMode run_mode,
G_TYPE_FILE, file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-load",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-load",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -107,9 +107,9 @@ pika_file_load_layer (PikaRunMode run_mode,
G_TYPE_FILE, file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-load-layer",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-load-layer",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -156,9 +156,9 @@ pika_file_load_layers (PikaRunMode run_mode,
G_TYPE_FILE, file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-load-layers",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-load-layers",
args);
pika_value_array_unref (args);
*num_layers = 0;
@ -209,9 +209,9 @@ pika_file_save (PikaRunMode run_mode,
G_TYPE_NONE);
pika_value_set_object_array (pika_value_array_index (args, 3), PIKA_TYPE_ITEM, (GObject **) drawables, num_drawables);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-save",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-save",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -250,9 +250,9 @@ pika_file_save_thumbnail (PikaImage *image,
G_TYPE_FILE, file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-save-thumbnail",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-file-save-thumbnail",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -28,7 +28,7 @@
#include "pikafileprocedure.h"
struct _PikaFileProcedurePrivate
typedef struct _PikaFileProcedurePrivate
{
gchar *format_name;
gchar *mime_types;
@ -37,7 +37,7 @@ struct _PikaFileProcedurePrivate
gchar *magics;
gint priority;
gboolean handles_remote;
};
} PikaFileProcedurePrivate;
static void pika_file_procedure_constructed (GObject *object);
@ -62,7 +62,6 @@ pika_file_procedure_class_init (PikaFileProcedureClass *klass)
static void
pika_file_procedure_init (PikaFileProcedure *procedure)
{
procedure->priv = pika_file_procedure_get_instance_private (procedure);
}
static void
@ -83,13 +82,17 @@ pika_file_procedure_constructed (GObject *object)
static void
pika_file_procedure_finalize (GObject *object)
{
PikaFileProcedure *procedure = PIKA_FILE_PROCEDURE (object);
PikaFileProcedure *procedure;
PikaFileProcedurePrivate *priv;
g_clear_pointer (&procedure->priv->format_name, g_free);
g_clear_pointer (&procedure->priv->mime_types, g_free);
g_clear_pointer (&procedure->priv->extensions, g_free);
g_clear_pointer (&procedure->priv->prefixes, g_free);
g_clear_pointer (&procedure->priv->magics, g_free);
procedure = PIKA_FILE_PROCEDURE (object);
priv = pika_file_procedure_get_instance_private (procedure);
g_clear_pointer (&priv->format_name, g_free);
g_clear_pointer (&priv->mime_types, g_free);
g_clear_pointer (&priv->extensions, g_free);
g_clear_pointer (&priv->prefixes, g_free);
g_clear_pointer (&priv->magics, g_free);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@ -125,10 +128,13 @@ void
pika_file_procedure_set_format_name (PikaFileProcedure *procedure,
const gchar *format_name)
{
PikaFileProcedurePrivate *priv;
g_return_if_fail (PIKA_IS_FILE_PROCEDURE (procedure));
g_free (procedure->priv->format_name);
procedure->priv->format_name = g_strdup (format_name);
priv = pika_file_procedure_get_instance_private (procedure);
g_free (priv->format_name);
priv->format_name = g_strdup (format_name);
}
/**
@ -145,9 +151,13 @@ pika_file_procedure_set_format_name (PikaFileProcedure *procedure,
const gchar *
pika_file_procedure_get_format_name (PikaFileProcedure *procedure)
{
PikaFileProcedurePrivate *priv;
g_return_val_if_fail (PIKA_IS_FILE_PROCEDURE (procedure), NULL);
return procedure->priv->format_name;
priv = pika_file_procedure_get_instance_private (procedure);
return priv->format_name;
}
/**
@ -170,10 +180,13 @@ void
pika_file_procedure_set_mime_types (PikaFileProcedure *procedure,
const gchar *mime_types)
{
PikaFileProcedurePrivate *priv;
g_return_if_fail (PIKA_IS_FILE_PROCEDURE (procedure));
g_free (procedure->priv->mime_types);
procedure->priv->mime_types = g_strdup (mime_types);
priv = pika_file_procedure_get_instance_private (procedure);
g_free (priv->mime_types);
priv->mime_types = g_strdup (mime_types);
}
/**
@ -190,9 +203,13 @@ pika_file_procedure_set_mime_types (PikaFileProcedure *procedure,
const gchar *
pika_file_procedure_get_mime_types (PikaFileProcedure *procedure)
{
PikaFileProcedurePrivate *priv;
g_return_val_if_fail (PIKA_IS_FILE_PROCEDURE (procedure), NULL);
return procedure->priv->mime_types;
priv = pika_file_procedure_get_instance_private (procedure);
return priv->mime_types;
}
/**
@ -210,10 +227,13 @@ void
pika_file_procedure_set_extensions (PikaFileProcedure *procedure,
const gchar *extensions)
{
PikaFileProcedurePrivate *priv;
g_return_if_fail (PIKA_IS_FILE_PROCEDURE (procedure));
g_free (procedure->priv->extensions);
procedure->priv->extensions = g_strdup (extensions);
priv = pika_file_procedure_get_instance_private (procedure);
g_free (priv->extensions);
priv->extensions = g_strdup (extensions);
}
/**
@ -230,9 +250,13 @@ pika_file_procedure_set_extensions (PikaFileProcedure *procedure,
const gchar *
pika_file_procedure_get_extensions (PikaFileProcedure *procedure)
{
PikaFileProcedurePrivate *priv;
g_return_val_if_fail (PIKA_IS_FILE_PROCEDURE (procedure), NULL);
return procedure->priv->extensions;
priv = pika_file_procedure_get_instance_private (procedure);
return priv->extensions;
}
/**
@ -250,10 +274,13 @@ void
pika_file_procedure_set_prefixes (PikaFileProcedure *procedure,
const gchar *prefixes)
{
PikaFileProcedurePrivate *priv;
g_return_if_fail (PIKA_IS_FILE_PROCEDURE (procedure));
g_free (procedure->priv->prefixes);
procedure->priv->prefixes = g_strdup (prefixes);
priv = pika_file_procedure_get_instance_private (procedure);
g_free (priv->prefixes);
priv->prefixes = g_strdup (prefixes);
}
/**
@ -270,9 +297,13 @@ pika_file_procedure_set_prefixes (PikaFileProcedure *procedure,
const gchar *
pika_file_procedure_get_prefixes (PikaFileProcedure *procedure)
{
PikaFileProcedurePrivate *priv;
g_return_val_if_fail (PIKA_IS_FILE_PROCEDURE (procedure), NULL);
return procedure->priv->prefixes;
priv = pika_file_procedure_get_instance_private (procedure);
return priv->prefixes;
}
/**
@ -288,10 +319,13 @@ void
pika_file_procedure_set_magics (PikaFileProcedure *procedure,
const gchar *magics)
{
PikaFileProcedurePrivate *priv;
g_return_if_fail (PIKA_IS_FILE_PROCEDURE (procedure));
g_free (procedure->priv->magics);
procedure->priv->magics = g_strdup (magics);
priv = pika_file_procedure_get_instance_private (procedure);
g_free (priv->magics);
priv->magics = g_strdup (magics);
}
/**
@ -307,9 +341,13 @@ pika_file_procedure_set_magics (PikaFileProcedure *procedure,
const gchar *
pika_file_procedure_get_magics (PikaFileProcedure *procedure)
{
PikaFileProcedurePrivate *priv;
g_return_val_if_fail (PIKA_IS_FILE_PROCEDURE (procedure), NULL);
return procedure->priv->magics;
priv = pika_file_procedure_get_instance_private (procedure);
return priv->magics;
}
/**
@ -330,9 +368,12 @@ void
pika_file_procedure_set_priority (PikaFileProcedure *procedure,
gint priority)
{
PikaFileProcedurePrivate *priv;
g_return_if_fail (PIKA_IS_FILE_PROCEDURE (procedure));
procedure->priv->priority = priority;
priv = pika_file_procedure_get_instance_private (procedure);
priv->priority = priority;
}
/**
@ -349,9 +390,13 @@ pika_file_procedure_set_priority (PikaFileProcedure *procedure,
gint
pika_file_procedure_get_priority (PikaFileProcedure *procedure)
{
PikaFileProcedurePrivate *priv;
g_return_val_if_fail (PIKA_IS_FILE_PROCEDURE (procedure), 0);
return procedure->priv->priority;
priv = pika_file_procedure_get_instance_private (procedure);
return priv->priority;
}
/**
@ -376,9 +421,12 @@ void
pika_file_procedure_set_handles_remote (PikaFileProcedure *procedure,
gint handles_remote)
{
PikaFileProcedurePrivate *priv;
g_return_if_fail (PIKA_IS_FILE_PROCEDURE (procedure));
procedure->priv->handles_remote = handles_remote;
priv = pika_file_procedure_get_instance_private (procedure);
priv->handles_remote = handles_remote;
}
/**
@ -395,7 +443,10 @@ pika_file_procedure_set_handles_remote (PikaFileProcedure *procedure,
gint
pika_file_procedure_get_handles_remote (PikaFileProcedure *procedure)
{
PikaFileProcedurePrivate *priv;
g_return_val_if_fail (PIKA_IS_FILE_PROCEDURE (procedure), 0);
return procedure->priv->handles_remote;
priv = pika_file_procedure_get_instance_private (procedure);
return priv->handles_remote;
}

View File

@ -33,33 +33,26 @@ G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
#define PIKA_TYPE_FILE_PROCEDURE (pika_file_procedure_get_type ())
#define PIKA_FILE_PROCEDURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_FILE_PROCEDURE, PikaFileProcedure))
#define PIKA_FILE_PROCEDURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_FILE_PROCEDURE, PikaFileProcedureClass))
#define PIKA_IS_FILE_PROCEDURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_FILE_PROCEDURE))
#define PIKA_IS_FILE_PROCEDURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_FILE_PROCEDURE))
#define PIKA_FILE_PROCEDURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIKA_TYPE_FILE_PROCEDURE, PikaFileProcedureClass))
typedef struct _PikaFileProcedure PikaFileProcedure;
typedef struct _PikaFileProcedureClass PikaFileProcedureClass;
typedef struct _PikaFileProcedurePrivate PikaFileProcedurePrivate;
struct _PikaFileProcedure
{
PikaProcedure parent_instance;
PikaFileProcedurePrivate *priv;
};
#define PIKA_TYPE_FILE_PROCEDURE (pika_file_procedure_get_type ())
G_DECLARE_DERIVABLE_TYPE (PikaFileProcedure, pika_file_procedure, PIKA, FILE_PROCEDURE, PikaProcedure)
struct _PikaFileProcedureClass
{
PikaProcedureClass parent_class;
/* Padding for future expansion */
void (*_pika_reserved1) (void);
void (*_pika_reserved2) (void);
void (*_pika_reserved3) (void);
void (*_pika_reserved4) (void);
void (*_pika_reserved5) (void);
void (*_pika_reserved6) (void);
void (*_pika_reserved7) (void);
void (*_pika_reserved8) (void);
void (*_pika_reserved9) (void);
};
GType pika_file_procedure_get_type (void) G_GNUC_CONST;
void pika_file_procedure_set_format_name (PikaFileProcedure *procedure,
const gchar *format_name);
const gchar * pika_file_procedure_get_format_name (PikaFileProcedure *procedure);

View File

@ -59,9 +59,9 @@ pika_floating_sel_remove (PikaLayer *floating_sel)
PIKA_TYPE_LAYER, floating_sel,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-remove",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-remove",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -95,9 +95,9 @@ pika_floating_sel_anchor (PikaLayer *floating_sel)
PIKA_TYPE_LAYER, floating_sel,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-anchor",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-anchor",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -135,9 +135,9 @@ pika_floating_sel_to_layer (PikaLayer *floating_sel)
PIKA_TYPE_LAYER, floating_sel,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-to-layer",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-to-layer",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -172,9 +172,9 @@ pika_floating_sel_attach (PikaLayer *layer,
PIKA_TYPE_DRAWABLE, drawable,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-attach",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-floating-sel-attach",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -40,9 +40,14 @@
* pika_font_get_by_name:
* @name: The name of the font.
*
* Returns the font with the given name.
* Returns a font with the given name.
*
* Returns the font with the given name.
* If several fonts are named identically, the one which is returned by
* this function should be considered random. This can be used when you
* know you won't have multiple fonts of this name or that you don't
* want to choose (non-interactive scripts, etc.).
* If you need more control, you should use pika_fonts_get_by_name()
* instead.
*
* Returns: (transfer none): The font.
*
@ -59,9 +64,9 @@ pika_font_get_by_name (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-font-get-by-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-font-get-by-name",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -71,3 +76,48 @@ pika_font_get_by_name (const gchar *name)
return font;
}
/**
* pika_fonts_get_by_name:
* @name: The name of the font.
* @num_fonts: (out): The number of fonts with the given name.
*
* Returns the fonts with the given name.
*
* Returns the fonts with the given name. There may be more than one.
*
* Returns: (array length=num_fonts) (element-type PikaFont) (transfer container):
* The fonts with the given name.
* The returned value must be freed with g_free().
*
* Since: 3.0
**/
PikaFont **
pika_fonts_get_by_name (const gchar *name,
gint *num_fonts)
{
PikaValueArray *args;
PikaValueArray *return_vals;
PikaFont **fonts = NULL;
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-get-by-name",
args);
pika_value_array_unref (args);
*num_fonts = 0;
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
{
*num_fonts = PIKA_VALUES_GET_INT (return_vals, 1);
{ PikaObjectArray *a = g_value_get_boxed (pika_value_array_index (return_vals, 2)); if (a) fonts = g_memdup2 (a->data, a->length * sizeof (gpointer)); };
}
pika_value_array_unref (return_vals);
return fonts;
}

View File

@ -32,7 +32,9 @@ G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
PikaFont* pika_font_get_by_name (const gchar *name);
PikaFont* pika_font_get_by_name (const gchar *name);
PikaFont** pika_fonts_get_by_name (const gchar *name,
gint *num_fonts);
G_END_DECLS

View File

@ -57,9 +57,9 @@ pika_fonts_refresh (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-refresh",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-refresh",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -92,9 +92,9 @@ pika_fonts_get_list (const gchar *filter)
G_TYPE_STRING, filter,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-get-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-get-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -49,7 +49,8 @@
* pika_fonts_popup:
* @font_callback: The callback PDB proc to call when user chooses a font.
* @popup_title: Title of the font selection dialog.
* @initial_font_name: The name of the initial font choice.
* @initial_font: The name of the initial font choice.
* @parent_window: An optional parent window handle for the popup to be set transient to.
*
* Invokes the Pika font selection dialog.
*
@ -60,7 +61,8 @@
gboolean
pika_fonts_popup (const gchar *font_callback,
const gchar *popup_title,
const gchar *initial_font_name)
PikaFont *initial_font,
GBytes *parent_window)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -69,12 +71,13 @@ pika_fonts_popup (const gchar *font_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, font_callback,
G_TYPE_STRING, popup_title,
G_TYPE_STRING, initial_font_name,
PIKA_TYPE_FONT, initial_font,
G_TYPE_BYTES, parent_window,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -105,9 +108,9 @@ pika_fonts_close_popup (const gchar *font_callback)
G_TYPE_STRING, font_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-close-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-close-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -120,7 +123,7 @@ pika_fonts_close_popup (const gchar *font_callback)
/**
* pika_fonts_set_popup:
* @font_callback: The name of the callback registered in the PDB for the dialog.
* @font_name: The name of the font to set as selected.
* @font: The font to set as selected.
*
* Sets the current font in a font selection dialog.
*
@ -130,7 +133,7 @@ pika_fonts_close_popup (const gchar *font_callback)
**/
gboolean
pika_fonts_set_popup (const gchar *font_callback,
const gchar *font_name)
PikaFont *font)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -138,12 +141,12 @@ pika_fonts_set_popup (const gchar *font_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, font_callback,
G_TYPE_STRING, font_name,
PIKA_TYPE_FONT, font,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-set-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-fonts-set-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -34,10 +34,11 @@ G_BEGIN_DECLS
gboolean pika_fonts_popup (const gchar *font_callback,
const gchar *popup_title,
const gchar *initial_font_name);
PikaFont *initial_font,
GBytes *parent_window);
gboolean pika_fonts_close_popup (const gchar *font_callback);
gboolean pika_fonts_set_popup (const gchar *font_callback,
const gchar *font_name);
PikaFont *font);
G_END_DECLS

View File

@ -74,6 +74,17 @@ _pika_gp_param_def_to_param_spec (const GPParamDef *param_def)
break;
case GP_PARAM_DEF_TYPE_CHOICE:
if (! strcmp (param_def->type_name, "PikaParamChoice"))
{
return pika_param_spec_choice (name, nick, blurb,
g_object_ref (param_def->meta.m_choice.choice),
param_def->meta.m_choice.default_val,
flags);
}
break;
case GP_PARAM_DEF_TYPE_INT:
if (! strcmp (param_def->type_name, "GParamInt"))
return g_param_spec_int (name, nick, blurb,
@ -203,6 +214,10 @@ _pika_gp_param_def_to_param_spec (const GPParamDef *param_def)
param_def->meta.m_id.none_ok,
flags);
if (! strcmp (param_def->type_name, "PikaParamResource"))
return pika_param_spec_resource (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
if (! strcmp (param_def->type_name, "PikaParamBrush"))
return pika_param_spec_brush (name, nick, blurb,
param_def->meta.m_id.none_ok, flags);
@ -302,6 +317,15 @@ _pika_param_spec_to_gp_param_def (GParamSpec *pspec,
param_def->meta.m_enum.default_val = espec->default_value;
}
else if (pspec_type == PIKA_TYPE_PARAM_CHOICE)
{
PikaParamSpecChoice *cspec = PIKA_PARAM_SPEC_CHOICE (pspec);
param_def->param_def_type = GP_PARAM_DEF_TYPE_CHOICE;
param_def->meta.m_choice.default_val = cspec->default_value;
param_def->meta.m_choice.choice = cspec->choice;
}
else if (pspec_type == G_TYPE_PARAM_BOOLEAN)
{
GParamSpecBoolean *bspec = G_PARAM_SPEC_BOOLEAN (pspec);
@ -365,39 +389,7 @@ _pika_param_spec_to_gp_param_def (GParamSpec *pspec,
param_def->meta.m_id.none_ok = ispec->none_ok;
}
else if (PIKA_IS_PARAM_SPEC_BRUSH (pspec))
{
PikaParamSpecResource *rspec = PIKA_PARAM_SPEC_RESOURCE (pspec);
param_def->param_def_type = GP_PARAM_DEF_TYPE_ID;
param_def->meta.m_id.none_ok = rspec->none_ok;
}
else if (PIKA_IS_PARAM_SPEC_PATTERN (pspec))
{
PikaParamSpecResource *rspec = PIKA_PARAM_SPEC_RESOURCE (pspec);
param_def->param_def_type = GP_PARAM_DEF_TYPE_ID;
param_def->meta.m_id.none_ok = rspec->none_ok;
}
else if (PIKA_IS_PARAM_SPEC_GRADIENT (pspec))
{
PikaParamSpecResource *rspec = PIKA_PARAM_SPEC_RESOURCE (pspec);
param_def->param_def_type = GP_PARAM_DEF_TYPE_ID;
param_def->meta.m_id.none_ok = rspec->none_ok;
}
else if (PIKA_IS_PARAM_SPEC_PALETTE (pspec))
{
PikaParamSpecResource *rspec = PIKA_PARAM_SPEC_RESOURCE (pspec);
param_def->param_def_type = GP_PARAM_DEF_TYPE_ID;
param_def->meta.m_id.none_ok = rspec->none_ok;
}
else if (PIKA_IS_PARAM_SPEC_FONT (pspec))
else if (PIKA_IS_PARAM_SPEC_RESOURCE (pspec))
{
PikaParamSpecResource *rspec = PIKA_PARAM_SPEC_RESOURCE (pspec);
@ -455,6 +447,10 @@ _pika_param_spec_to_gp_param_def (GParamSpec *pspec,
{
type_name = "PikaParamVectors";
}
else if (value_type == PIKA_TYPE_RESOURCE)
{
type_name = "PikaParamResource";
}
else if (value_type == PIKA_TYPE_BRUSH)
{
type_name = "PikaParamBrush";
@ -557,6 +553,7 @@ static void
pika_gp_param_to_value (gpointer pika,
const GPParam *param,
GType type,
GParamSpec *pspec,
GValue *value)
{
g_return_if_fail (param != NULL);
@ -613,7 +610,7 @@ pika_gp_param_to_value (gpointer pika,
{
g_value_set_boxed (value, param->data.d_bytes);
}
else if (G_VALUE_TYPE (value) == G_TYPE_FILE)
else if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_FILE))
{
g_value_take_object (value, (param->data.d_string ?
g_file_new_for_uri (param->data.d_string) :
@ -656,7 +653,15 @@ pika_gp_param_to_value (gpointer pika,
GObject **objects;
gint i;
object_type = g_type_from_name (param->data.d_id_array.type_name);
if (param->data.d_id_array.type_name == NULL)
{
g_return_if_fail (param->data.d_id_array.size == 0 && pspec != NULL);
object_type = PIKA_PARAM_SPEC_OBJECT_ARRAY (pspec)->object_type;
}
else
{
object_type = g_type_from_name (param->data.d_id_array.type_name);
}
objects = g_new (GObject *, param->data.d_id_array.size);
@ -676,6 +681,10 @@ pika_gp_param_to_value (gpointer pika,
{
objects[i] = (GObject *) get_display_by_id (pika, id);
}
else if (g_type_is_a (object_type, PIKA_TYPE_RESOURCE))
{
objects[i] = (GObject *) get_resource_by_id (id);
}
if (objects[i])
g_object_ref (objects[i]);
@ -732,8 +741,9 @@ _pika_gp_params_to_value_array (gpointer pika,
for (i = 0; i < n_params; i++)
{
GValue value = G_VALUE_INIT;
GType type;
GParamSpec *pspec = NULL;
GValue value = G_VALUE_INIT;
GType type;
/* first get the GType from the passed GPParam */
type = g_type_from_name (params[i].type_name);
@ -754,6 +764,8 @@ _pika_gp_params_to_value_array (gpointer pika,
{
GType pspec_type = G_PARAM_SPEC_VALUE_TYPE (pspecs[pspec_index]);
pspec = pspecs[pspec_index];
if (type != pspec_type)
{
if (g_type_is_a (pspec_type, type))
@ -786,7 +798,7 @@ _pika_gp_params_to_value_array (gpointer pika,
}
}
pika_gp_param_to_value (pika, &params[i], type, &value);
pika_gp_param_to_value (pika, &params[i], type, pspec, &value);
pika_value_array_append (args, &value);
g_value_unset (&value);
@ -860,7 +872,7 @@ pika_value_to_gp_param (const GValue *value,
else
param->data.d_string = (gchar *) g_value_get_string (value);
}
else if (G_VALUE_TYPE (value) == G_TYPE_FILE)
else if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_FILE))
{
GFile *file = g_value_get_object (value);
@ -997,6 +1009,10 @@ pika_value_to_gp_param (const GValue *value,
param->data.d_id_array.data[i] =
pika_display_get_id (PIKA_DISPLAY (array->data[i]));
}
else if (PIKA_IS_RESOURCE (array->data[i]))
{
param->data.d_id_array.data[i] = get_resource_id (array->data[i]);
}
else
{
param->data.d_id_array.data[i] = -1;

View File

@ -59,9 +59,9 @@ pika_gradient_new (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-new",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-new",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -95,9 +95,9 @@ pika_gradient_get_by_name (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-by-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-by-name",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -131,9 +131,9 @@ pika_gradient_get_number_of_segments (PikaGradient *gradient)
PIKA_TYPE_GRADIENT, gradient,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-number-of-segments",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-number-of-segments",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -182,9 +182,9 @@ pika_gradient_get_uniform_samples (PikaGradient *gradient,
G_TYPE_BOOLEAN, reverse,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-uniform-samples",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-uniform-samples",
args);
pika_value_array_unref (args);
*num_color_samples = 0;
@ -243,9 +243,9 @@ pika_gradient_get_custom_samples (PikaGradient *gradient,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), positions, num_samples);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-custom-samples",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-get-custom-samples",
args);
pika_value_array_unref (args);
*num_color_samples = 0;
@ -295,9 +295,9 @@ pika_gradient_segment_get_left_color (PikaGradient *gradient,
G_TYPE_INT, segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-left-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-left-color",
args);
pika_value_array_unref (args);
*opacity = 0.0;
@ -350,9 +350,9 @@ pika_gradient_segment_set_left_color (PikaGradient *gradient,
G_TYPE_DOUBLE, opacity,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-left-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-left-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -394,9 +394,9 @@ pika_gradient_segment_get_right_color (PikaGradient *gradient,
G_TYPE_INT, segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-right-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-right-color",
args);
pika_value_array_unref (args);
*opacity = 0.0;
@ -448,9 +448,9 @@ pika_gradient_segment_set_right_color (PikaGradient *gradient,
G_TYPE_DOUBLE, opacity,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-right-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-right-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -490,9 +490,9 @@ pika_gradient_segment_get_left_pos (PikaGradient *gradient,
G_TYPE_INT, segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-left-pos",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-left-pos",
args);
pika_value_array_unref (args);
*pos = 0.0;
@ -542,9 +542,9 @@ pika_gradient_segment_set_left_pos (PikaGradient *gradient,
G_TYPE_DOUBLE, pos,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-left-pos",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-left-pos",
args);
pika_value_array_unref (args);
*final_pos = 0.0;
@ -588,9 +588,9 @@ pika_gradient_segment_get_middle_pos (PikaGradient *gradient,
G_TYPE_INT, segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-middle-pos",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-middle-pos",
args);
pika_value_array_unref (args);
*pos = 0.0;
@ -640,9 +640,9 @@ pika_gradient_segment_set_middle_pos (PikaGradient *gradient,
G_TYPE_DOUBLE, pos,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-middle-pos",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-middle-pos",
args);
pika_value_array_unref (args);
*final_pos = 0.0;
@ -687,9 +687,9 @@ pika_gradient_segment_get_right_pos (PikaGradient *gradient,
G_TYPE_INT, segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-right-pos",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-right-pos",
args);
pika_value_array_unref (args);
*pos = 0.0;
@ -739,9 +739,9 @@ pika_gradient_segment_set_right_pos (PikaGradient *gradient,
G_TYPE_DOUBLE, pos,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-right-pos",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-set-right-pos",
args);
pika_value_array_unref (args);
*final_pos = 0.0;
@ -785,9 +785,9 @@ pika_gradient_segment_get_blending_function (PikaGradient *gradient,
G_TYPE_INT, segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-blending-function",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-blending-function",
args);
pika_value_array_unref (args);
*blend_func = 0;
@ -831,9 +831,9 @@ pika_gradient_segment_get_coloring_type (PikaGradient *gradient,
G_TYPE_INT, segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-coloring-type",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-get-coloring-type",
args);
pika_value_array_unref (args);
*coloring_type = 0;
@ -882,9 +882,9 @@ pika_gradient_segment_range_set_blending_function (PikaGradient *grad
PIKA_TYPE_GRADIENT_SEGMENT_TYPE, blending_function,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-set-blending-function",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-set-blending-function",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -928,9 +928,9 @@ pika_gradient_segment_range_set_coloring_type (PikaGradient *gradien
PIKA_TYPE_GRADIENT_SEGMENT_COLOR, coloring_type,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-set-coloring-type",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-set-coloring-type",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -973,9 +973,9 @@ pika_gradient_segment_range_flip (PikaGradient *gradient,
G_TYPE_INT, end_segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-flip",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-flip",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1021,9 +1021,9 @@ pika_gradient_segment_range_replicate (PikaGradient *gradient,
G_TYPE_INT, replicate_times,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-replicate",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-replicate",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1064,9 +1064,9 @@ pika_gradient_segment_range_split_midpoint (PikaGradient *gradient,
G_TYPE_INT, end_segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-split-midpoint",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-split-midpoint",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1111,9 +1111,9 @@ pika_gradient_segment_range_split_uniform (PikaGradient *gradient,
G_TYPE_INT, split_parts,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-split-uniform",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-split-uniform",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1154,9 +1154,9 @@ pika_gradient_segment_range_delete (PikaGradient *gradient,
G_TYPE_INT, end_segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-delete",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-delete",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1199,9 +1199,9 @@ pika_gradient_segment_range_redistribute_handles (PikaGradient *gradient,
G_TYPE_INT, end_segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-redistribute-handles",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-redistribute-handles",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1243,9 +1243,9 @@ pika_gradient_segment_range_blend_colors (PikaGradient *gradient,
G_TYPE_INT, end_segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-blend-colors",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-blend-colors",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1287,9 +1287,9 @@ pika_gradient_segment_range_blend_opacity (PikaGradient *gradient,
G_TYPE_INT, end_segment,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-blend-opacity",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-blend-opacity",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1338,9 +1338,9 @@ pika_gradient_segment_range_move (PikaGradient *gradient,
G_TYPE_BOOLEAN, control_compress,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-move",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradient-segment-range-move",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -56,9 +56,9 @@ pika_gradients_refresh (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-refresh",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-refresh",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -93,9 +93,9 @@ pika_gradients_get_list (const gchar *filter)
G_TYPE_STRING, filter,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-get-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-get-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -41,7 +41,8 @@
* pika_gradients_popup:
* @gradient_callback: The callback PDB proc to call when user chooses a gradient.
* @popup_title: Title of the gradient selection dialog.
* @initial_gradient_name: The name of the initial gradient choice.
* @initial_gradient: The initial gradient choice.
* @parent_window: An optional parent window handle for the popup to be set transient to.
*
* Invokes the Pika gradients selection dialog.
*
@ -50,9 +51,10 @@
* Returns: TRUE on success.
**/
gboolean
pika_gradients_popup (const gchar *gradient_callback,
const gchar *popup_title,
const gchar *initial_gradient_name)
pika_gradients_popup (const gchar *gradient_callback,
const gchar *popup_title,
PikaGradient *initial_gradient,
GBytes *parent_window)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -61,12 +63,13 @@ pika_gradients_popup (const gchar *gradient_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, gradient_callback,
G_TYPE_STRING, popup_title,
G_TYPE_STRING, initial_gradient_name,
PIKA_TYPE_GRADIENT, initial_gradient,
G_TYPE_BYTES, parent_window,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -97,9 +100,9 @@ pika_gradients_close_popup (const gchar *gradient_callback)
G_TYPE_STRING, gradient_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-close-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-close-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -112,7 +115,7 @@ pika_gradients_close_popup (const gchar *gradient_callback)
/**
* pika_gradients_set_popup:
* @gradient_callback: The name of the callback registered for this pop-up.
* @gradient_name: The name of the gradient to set as selected.
* @gradient: The gradient to set as selected.
*
* Sets the current gradient in a gradient selection dialog.
*
@ -121,8 +124,8 @@ pika_gradients_close_popup (const gchar *gradient_callback)
* Returns: TRUE on success.
**/
gboolean
pika_gradients_set_popup (const gchar *gradient_callback,
const gchar *gradient_name)
pika_gradients_set_popup (const gchar *gradient_callback,
PikaGradient *gradient)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -130,12 +133,12 @@ pika_gradients_set_popup (const gchar *gradient_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, gradient_callback,
G_TYPE_STRING, gradient_name,
PIKA_TYPE_GRADIENT, gradient,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-set-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-gradients-set-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -32,12 +32,13 @@ G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
gboolean pika_gradients_popup (const gchar *gradient_callback,
const gchar *popup_title,
const gchar *initial_gradient_name);
gboolean pika_gradients_close_popup (const gchar *gradient_callback);
gboolean pika_gradients_set_popup (const gchar *gradient_callback,
const gchar *gradient_name);
gboolean pika_gradients_popup (const gchar *gradient_callback,
const gchar *popup_title,
PikaGradient *initial_gradient,
GBytes *parent_window);
gboolean pika_gradients_close_popup (const gchar *gradient_callback);
gboolean pika_gradients_set_popup (const gchar *gradient_callback,
PikaGradient *gradient);
G_END_DECLS

View File

@ -65,9 +65,9 @@ pika_help (const gchar *help_domain,
G_TYPE_STRING, help_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-help",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-help",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -641,33 +641,25 @@ pika_image_set_colormap (PikaImage *image,
* are returned in RGB[A] or GRAY[A] format. The bpp return value
* gives the number of bytes per pixel in the image.
*
* Returns: (array) (transfer full): the thumbnail data.
* Returns: (transfer full): the thumbnail data.
**/
guchar *
GBytes *
pika_image_get_thumbnail_data (PikaImage *image,
gint *width,
gint *height,
gint *bpp)
{
gint ret_width;
gint ret_height;
GBytes *image_bytes;
guchar *image_data;
gsize data_size;
_pika_image_thumbnail (image,
*width,
*height,
&ret_width,
&ret_height,
width,
height,
bpp,
&image_bytes);
image_data = g_bytes_unref_to_data (image_bytes, &data_size);
*width = ret_width;
*height = ret_height;
return image_data;
return image_bytes;
}
/**
@ -693,7 +685,8 @@ pika_image_get_thumbnail (PikaImage *image,
gint thumb_width = width;
gint thumb_height = height;
gint thumb_bpp;
guchar *data;
GBytes *data;
gsize data_size;
g_return_val_if_fail (width > 0 && width <= 1024, NULL);
g_return_val_if_fail (height > 0 && height <= 1024, NULL);
@ -703,7 +696,7 @@ pika_image_get_thumbnail (PikaImage *image,
&thumb_height,
&thumb_bpp);
if (data)
return _pika_pixbuf_from_data (data,
return _pika_pixbuf_from_data (g_bytes_unref_to_data (data, &data_size),
thumb_width, thumb_height, thumb_bpp,
alpha);
else

View File

@ -65,7 +65,7 @@ gboolean pika_image_set_colormap (PikaImage *image,
const guchar *colormap,
gint num_colors);
guchar * pika_image_get_thumbnail_data (PikaImage *image,
GBytes * pika_image_get_thumbnail_data (PikaImage *image,
gint *width,
gint *height,
gint *bpp);

File diff suppressed because it is too large Load Diff

View File

@ -118,6 +118,7 @@ PikaLayer* pika_image_merge_layer_group (PikaImage
G_GNUC_INTERNAL GBytes* _pika_image_get_colormap (PikaImage *image);
G_GNUC_INTERNAL gboolean _pika_image_set_colormap (PikaImage *image,
GBytes *colormap);
PikaPalette* pika_image_get_palette (PikaImage *image);
G_GNUC_INTERNAL gchar* _pika_image_get_metadata (PikaImage *image);
G_GNUC_INTERNAL gboolean _pika_image_set_metadata (PikaImage *image,
const gchar *metadata_string);

View File

@ -60,9 +60,9 @@ _pika_image_get_color_profile (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-color-profile",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-color-profile",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -100,9 +100,9 @@ _pika_image_get_effective_color_profile (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-effective-color-profile",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-effective-color-profile",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -143,9 +143,9 @@ _pika_image_set_color_profile (PikaImage *image,
G_TYPE_BYTES, color_profile,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-color-profile",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-color-profile",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -186,9 +186,9 @@ pika_image_set_color_profile_from_file (PikaImage *image,
G_TYPE_FILE, file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-color-profile-from-file",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-color-profile-from-file",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -222,9 +222,9 @@ _pika_image_get_simulation_profile (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-simulation-profile",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-simulation-profile",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -263,9 +263,9 @@ _pika_image_set_simulation_profile (PikaImage *image,
G_TYPE_BYTES, color_profile,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-profile",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-profile",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -303,9 +303,9 @@ pika_image_set_simulation_profile_from_file (PikaImage *image,
G_TYPE_FILE, file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-profile-from-file",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-profile-from-file",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -338,9 +338,9 @@ pika_image_get_simulation_intent (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-simulation-intent",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-simulation-intent",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -377,9 +377,9 @@ pika_image_set_simulation_intent (PikaImage *image,
PIKA_TYPE_COLOR_RENDERING_INTENT, intent,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-intent",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-intent",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -414,9 +414,9 @@ pika_image_get_simulation_bpc (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-simulation-bpc",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-simulation-bpc",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -455,9 +455,9 @@ pika_image_set_simulation_bpc (PikaImage *image,
G_TYPE_BOOLEAN, bpc,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-bpc",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-set-simulation-bpc",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -502,9 +502,9 @@ _pika_image_convert_color_profile (PikaImage *image,
G_TYPE_BOOLEAN, bpc,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-color-profile",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-color-profile",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -549,9 +549,9 @@ pika_image_convert_color_profile_from_file (PikaImage *image,
G_TYPE_BOOLEAN, bpc,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-color-profile-from-file",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-color-profile-from-file",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -60,9 +60,9 @@ pika_image_convert_rgb (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-rgb",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-rgb",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -94,9 +94,9 @@ pika_image_convert_grayscale (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-grayscale",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-grayscale",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -157,9 +157,9 @@ pika_image_convert_indexed (PikaImage *image,
G_TYPE_STRING, palette,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-indexed",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-indexed",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -199,9 +199,9 @@ pika_image_convert_set_dither_matrix (gint width,
G_TYPE_BYTES, matrix,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-set-dither-matrix",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-set-dither-matrix",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -239,9 +239,9 @@ pika_image_convert_precision (PikaImage *image,
PIKA_TYPE_PRECISION, precision,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-precision",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-convert-precision",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -64,9 +64,9 @@ pika_image_grid_get_spacing (PikaImage *image,
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-spacing",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-spacing",
args);
pika_value_array_unref (args);
*xspacing = 0.0;
@ -115,9 +115,9 @@ pika_image_grid_set_spacing (PikaImage *image,
G_TYPE_DOUBLE, yspacing,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-spacing",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-spacing",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -155,9 +155,9 @@ pika_image_grid_get_offset (PikaImage *image,
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-offset",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-offset",
args);
pika_value_array_unref (args);
*xoffset = 0.0;
@ -206,9 +206,9 @@ pika_image_grid_set_offset (PikaImage *image,
G_TYPE_DOUBLE, yoffset,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-offset",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-offset",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -243,9 +243,9 @@ pika_image_grid_get_foreground_color (PikaImage *image,
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-foreground-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-foreground-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -284,9 +284,9 @@ pika_image_grid_set_foreground_color (PikaImage *image,
PIKA_TYPE_RGB, fgcolor,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-foreground-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-foreground-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -321,9 +321,9 @@ pika_image_grid_get_background_color (PikaImage *image,
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-background-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-background-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -362,9 +362,9 @@ pika_image_grid_set_background_color (PikaImage *image,
PIKA_TYPE_RGB, bgcolor,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-background-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-background-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -397,9 +397,9 @@ pika_image_grid_get_style (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-style",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-get-style",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -437,9 +437,9 @@ pika_image_grid_set_style (PikaImage *image,
PIKA_TYPE_GRID_STYLE, style,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-style",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-grid-set-style",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -62,9 +62,9 @@ pika_image_add_hguide (PikaImage *image,
G_TYPE_INT, yposition,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-add-hguide",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-add-hguide",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -101,9 +101,9 @@ pika_image_add_vguide (PikaImage *image,
G_TYPE_INT, xposition,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-add-vguide",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-add-vguide",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -139,9 +139,9 @@ pika_image_delete_guide (PikaImage *image,
G_TYPE_UINT, guide,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-delete-guide",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-delete-guide",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -179,9 +179,9 @@ pika_image_find_next_guide (PikaImage *image,
G_TYPE_UINT, guide,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-find-next-guide",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-find-next-guide",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -217,9 +217,9 @@ pika_image_get_guide_orientation (PikaImage *image,
G_TYPE_UINT, guide,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-guide-orientation",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-guide-orientation",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -255,9 +255,9 @@ pika_image_get_guide_position (PikaImage *image,
G_TYPE_UINT, guide,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-guide-position",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-guide-position",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -887,6 +887,11 @@ pika_image_metadata_save_filter (PikaImage *image,
thumbw = EXIF_THUMBNAIL_SIZE * image_width / image_height;
}
/* TODO: currently our exported thumbnails are always RGB because
* GdkPixbuf only supports RGB so far. While RGB thumbnail may make sense,
* even for CMYK images or other color spaces, grayscale images would be
* better served with a grayscale thumbnail too.
*/
thumb_pixbuf = pika_image_get_thumbnail (image, thumbw, thumbh,
PIKA_PIXBUF_KEEP_ALPHA);

View File

@ -121,7 +121,6 @@ pika_image_metadata_load_finish (PikaImage *image,
PikaMetadataLoadFlags flags)
{
g_return_if_fail (PIKA_IS_IMAGE (image));
g_return_if_fail (mime_type != NULL);
g_return_if_fail (GEXIV2_IS_METADATA (metadata));
if (flags & PIKA_METADATA_LOAD_COMMENT)

View File

@ -26,7 +26,11 @@
#include "pika.h"
#include "libpikabase/pikawire.h" /* FIXME kill this include */
#include "pikaimageprocedure.h"
#include "pikaplugin-private.h"
#include "pikaprocedureconfig-private.h"
/**
@ -148,14 +152,17 @@ static PikaValueArray *
pika_image_procedure_run (PikaProcedure *procedure,
const PikaValueArray *args)
{
PikaImageProcedure *image_proc = PIKA_IMAGE_PROCEDURE (procedure);
PikaValueArray *remaining;
PikaValueArray *return_values;
PikaRunMode run_mode;
PikaImage *image;
PikaDrawable **drawables;
gint n_drawables;
gint i;
PikaPlugIn *plug_in;
PikaImageProcedure *image_proc = PIKA_IMAGE_PROCEDURE (procedure);
PikaPDBStatusType status = PIKA_PDB_EXECUTION_ERROR;
PikaProcedureConfig *config;
PikaValueArray *remaining;
PikaValueArray *return_values;
PikaRunMode run_mode;
PikaImage *image;
PikaDrawable **drawables;
gint n_drawables;
gint i;
run_mode = PIKA_VALUES_GET_ENUM (args, 0);
image = PIKA_VALUES_GET_IMAGE (args, 1);
@ -171,12 +178,32 @@ pika_image_procedure_run (PikaProcedure *procedure,
pika_value_array_append (remaining, value);
}
config = pika_procedure_create_config (procedure);
_pika_procedure_config_begin_run (config, image, run_mode, remaining);
return_values = image_proc->priv->run_func (procedure,
run_mode,
image, n_drawables, drawables,
remaining,
config,
image_proc->priv->run_data);
if (return_values != NULL &&
pika_value_array_length (return_values) > 0 &&
G_VALUE_HOLDS_ENUM (pika_value_array_index (return_values, 0)))
status = PIKA_VALUES_GET_ENUM (return_values, 0);
_pika_procedure_config_end_run (config, status);
/* This is debug printing to help plug-in developers figure out best
* practices.
*/
plug_in = pika_procedure_get_plug_in (procedure);
if (G_OBJECT (config)->ref_count > 1 &&
_pika_plug_in_manage_memory_manually (plug_in))
g_printerr ("%s: ERROR: the PikaProcedureConfig object was refed "
"by plug-in, it MUST NOT do that!\n", G_STRFUNC);
g_object_unref (config);
pika_value_array_unref (remaining);
return return_values;
@ -242,7 +269,7 @@ pika_image_procedure_set_sensitivity (PikaProcedure *procedure,
*
* Since: 3.0
**/
PikaProcedure *
PikaProcedure *
pika_image_procedure_new (PikaPlugIn *plug_in,
const gchar *name,
PikaPDBProcType proc_type,

View File

@ -40,7 +40,7 @@ G_BEGIN_DECLS
* @image: the #PikaImage.
* @n_drawables: the number of #PikaDrawable-s.
* @drawables: (array length=n_drawables): the input #PikaDrawable-s.
* @args: the @procedure's remaining arguments.
* @config: the @procedure's remaining arguments.
* @run_data: (closure): the run_data given in pika_image_procedure_new().
*
* The image function is run during the lifetime of the PIKA session,
@ -55,7 +55,7 @@ typedef PikaValueArray * (* PikaRunImageFunc) (PikaProcedure *procedure,
PikaImage *image,
gint n_drawables,
PikaDrawable **drawables,
const PikaValueArray *args,
PikaProcedureConfig *config,
gpointer run_data);

View File

@ -67,9 +67,9 @@ pika_image_add_sample_point (PikaImage *image,
G_TYPE_INT, position_y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-add-sample-point",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-add-sample-point",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -107,9 +107,9 @@ pika_image_delete_sample_point (PikaImage *image,
G_TYPE_UINT, sample_point,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-delete-sample-point",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-delete-sample-point",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -150,9 +150,9 @@ pika_image_find_next_sample_point (PikaImage *image,
G_TYPE_UINT, sample_point,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-find-next-sample-point",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-find-next-sample-point",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -193,9 +193,9 @@ pika_image_get_sample_point_position (PikaImage *image,
G_TYPE_UINT, sample_point,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-sample-point-position",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-get-sample-point-position",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -84,9 +84,9 @@ pika_image_select_color (PikaImage *image,
PIKA_TYPE_RGB, color,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -156,9 +156,9 @@ pika_image_select_contiguous_color (PikaImage *image,
G_TYPE_DOUBLE, y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-contiguous-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-contiguous-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -211,9 +211,9 @@ pika_image_select_rectangle (PikaImage *image,
G_TYPE_DOUBLE, height,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-rectangle",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-rectangle",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -275,9 +275,9 @@ pika_image_select_round_rectangle (PikaImage *image,
G_TYPE_DOUBLE, corner_radius_y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-round-rectangle",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-round-rectangle",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -331,9 +331,9 @@ pika_image_select_ellipse (PikaImage *image,
G_TYPE_DOUBLE, height,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-ellipse",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-ellipse",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -387,9 +387,9 @@ pika_image_select_polygon (PikaImage *image,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 3), segs, num_segs);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-polygon",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-polygon",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -435,9 +435,9 @@ pika_image_select_item (PikaImage *image,
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-item",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-select-item",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -75,9 +75,9 @@ pika_image_resize (PikaImage *image,
G_TYPE_INT, offy,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-resize",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-resize",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -113,9 +113,9 @@ pika_image_resize_to_layers (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-resize-to-layers",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-resize-to-layers",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -156,9 +156,9 @@ pika_image_scale (PikaImage *image,
G_TYPE_INT, new_height,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-scale",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-scale",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -206,9 +206,9 @@ pika_image_crop (PikaImage *image,
G_TYPE_INT, offy,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-crop",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-crop",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -242,9 +242,9 @@ pika_image_flip (PikaImage *image,
PIKA_TYPE_ORIENTATION_TYPE, flip_type,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-flip",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-flip",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -278,9 +278,9 @@ pika_image_rotate (PikaImage *image,
PIKA_TYPE_ROTATION_TYPE, rotate_type,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-rotate",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-rotate",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -60,9 +60,9 @@ pika_image_undo_group_start (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-group-start",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-group-start",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -94,9 +94,9 @@ pika_image_undo_group_end (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-group-end",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-group-end",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -130,9 +130,9 @@ pika_image_undo_is_enabled (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-is-enabled",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-is-enabled",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -168,9 +168,9 @@ pika_image_undo_disable (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-disable",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-disable",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -205,9 +205,9 @@ pika_image_undo_enable (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-enable",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-enable",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -249,9 +249,9 @@ pika_image_undo_freeze (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-freeze",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-freeze",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -292,9 +292,9 @@ pika_image_undo_thaw (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-thaw",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-image-undo-thaw",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -60,9 +60,9 @@ pika_item_id_is_valid (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-valid",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-valid",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -96,9 +96,9 @@ pika_item_id_is_drawable (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-drawable",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-drawable",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -132,9 +132,9 @@ pika_item_id_is_layer (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-layer",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-layer",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -169,9 +169,9 @@ pika_item_id_is_text_layer (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-text-layer",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-text-layer",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -205,9 +205,9 @@ pika_item_id_is_channel (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-channel",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-channel",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -242,9 +242,9 @@ pika_item_id_is_layer_mask (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-layer-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-layer-mask",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -278,9 +278,9 @@ pika_item_id_is_selection (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-selection",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-selection",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -314,9 +314,9 @@ pika_item_id_is_vectors (gint item_id)
G_TYPE_INT, item_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-vectors",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-id-is-vectors",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -350,9 +350,9 @@ pika_item_get_image (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-image",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-image",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -390,9 +390,9 @@ pika_item_delete (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-delete",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-delete",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -426,9 +426,9 @@ pika_item_is_group (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-is-group",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-is-group",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -462,9 +462,9 @@ pika_item_get_parent (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-parent",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-parent",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -503,9 +503,9 @@ pika_item_get_children (PikaItem *item,
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-children",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-children",
args);
pika_value_array_unref (args);
*num_children = 0;
@ -544,9 +544,9 @@ pika_item_get_expanded (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-expanded",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-expanded",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -583,9 +583,9 @@ pika_item_set_expanded (PikaItem *item,
G_TYPE_BOOLEAN, expanded,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-expanded",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-expanded",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -619,9 +619,9 @@ pika_item_get_name (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-name",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -658,9 +658,9 @@ pika_item_set_name (PikaItem *item,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-name",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -693,9 +693,9 @@ pika_item_get_visible (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-visible",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-visible",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -732,9 +732,9 @@ pika_item_set_visible (PikaItem *item,
G_TYPE_BOOLEAN, visible,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-visible",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-visible",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -767,9 +767,9 @@ pika_item_get_lock_content (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-lock-content",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-lock-content",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -806,9 +806,9 @@ pika_item_set_lock_content (PikaItem *item,
G_TYPE_BOOLEAN, lock_content,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-lock-content",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-lock-content",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -841,9 +841,9 @@ pika_item_get_lock_position (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-lock-position",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-lock-position",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -880,9 +880,9 @@ pika_item_set_lock_position (PikaItem *item,
G_TYPE_BOOLEAN, lock_position,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-lock-position",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-lock-position",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -915,9 +915,9 @@ pika_item_get_lock_visibility (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-lock-visibility",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-lock-visibility",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -954,9 +954,9 @@ pika_item_set_lock_visibility (PikaItem *item,
G_TYPE_BOOLEAN, lock_visibility,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-lock-visibility",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-lock-visibility",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -989,9 +989,9 @@ pika_item_get_color_tag (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-color-tag",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-color-tag",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1028,9 +1028,9 @@ pika_item_set_color_tag (PikaItem *item,
PIKA_TYPE_COLOR_TAG, color_tag,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-color-tag",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-color-tag",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1065,9 +1065,9 @@ pika_item_get_tattoo (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-tattoo",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-tattoo",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1106,9 +1106,9 @@ pika_item_set_tattoo (PikaItem *item,
G_TYPE_UINT, tattoo,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-tattoo",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-set-tattoo",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1145,9 +1145,9 @@ pika_item_attach_parasite (PikaItem *item,
PIKA_TYPE_PARASITE, parasite,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-attach-parasite",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-attach-parasite",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1184,9 +1184,9 @@ pika_item_detach_parasite (PikaItem *item,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-detach-parasite",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-detach-parasite",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1222,9 +1222,9 @@ pika_item_get_parasite (PikaItem *item,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-parasite",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-parasite",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1260,9 +1260,9 @@ pika_item_get_parasite_list (PikaItem *item)
PIKA_TYPE_ITEM, item,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-parasite-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-get-parasite-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -68,9 +68,9 @@ pika_item_transform_translate (PikaItem *item,
G_TYPE_DOUBLE, off_y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-translate",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-translate",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -128,9 +128,9 @@ pika_item_transform_flip_simple (PikaItem *item,
G_TYPE_DOUBLE, axis,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-flip-simple",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-flip-simple",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -191,9 +191,9 @@ pika_item_transform_flip (PikaItem *item,
G_TYPE_DOUBLE, y1,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-flip",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-flip",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -275,9 +275,9 @@ pika_item_transform_perspective (PikaItem *item,
G_TYPE_DOUBLE, y3,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-perspective",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-perspective",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -341,9 +341,9 @@ pika_item_transform_rotate_simple (PikaItem *item,
G_TYPE_DOUBLE, center_y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-rotate-simple",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-rotate-simple",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -409,9 +409,9 @@ pika_item_transform_rotate (PikaItem *item,
G_TYPE_DOUBLE, center_y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-rotate",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-rotate",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -474,9 +474,9 @@ pika_item_transform_scale (PikaItem *item,
G_TYPE_DOUBLE, y1,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-scale",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-scale",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -535,9 +535,9 @@ pika_item_transform_shear (PikaItem *item,
G_TYPE_DOUBLE, magnitude,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-shear",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-shear",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -612,9 +612,9 @@ pika_item_transform_2d (PikaItem *item,
G_TYPE_DOUBLE, dest_y,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-2d",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-2d",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -693,9 +693,9 @@ pika_item_transform_matrix (PikaItem *item,
G_TYPE_DOUBLE, coeff_2_2,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-matrix",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-item-transform-matrix",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -80,9 +80,9 @@ _pika_layer_new (PikaImage *image,
PIKA_TYPE_LAYER_MODE, mode,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-new",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-new",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -126,9 +126,9 @@ pika_layer_new_from_visible (PikaImage *image,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-new-from-visible",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-new-from-visible",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -167,9 +167,9 @@ pika_layer_new_from_drawable (PikaDrawable *drawable,
PIKA_TYPE_IMAGE, dest_image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-new-from-drawable",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-new-from-drawable",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -209,9 +209,9 @@ pika_layer_group_new (PikaImage *image)
PIKA_TYPE_IMAGE, image,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-group-new",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-group-new",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -251,9 +251,9 @@ _pika_layer_copy (PikaLayer *layer,
G_TYPE_BOOLEAN, add_alpha,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-copy",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-copy",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -289,9 +289,9 @@ pika_layer_add_alpha (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-add-alpha",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-add-alpha",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -327,9 +327,9 @@ pika_layer_flatten (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-flatten",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-flatten",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -374,9 +374,9 @@ pika_layer_scale (PikaLayer *layer,
G_TYPE_BOOLEAN, local_origin,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-scale",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-scale",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -422,9 +422,9 @@ pika_layer_resize (PikaLayer *layer,
G_TYPE_INT, offy,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-resize",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-resize",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -456,9 +456,9 @@ pika_layer_resize_to_image_size (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-resize-to-image-size",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-resize-to-image-size",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -497,9 +497,9 @@ pika_layer_set_offsets (PikaLayer *layer,
G_TYPE_INT, offy,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-offsets",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-offsets",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -552,9 +552,9 @@ pika_layer_create_mask (PikaLayer *layer,
PIKA_TYPE_ADD_MASK_TYPE, mask_type,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-create-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-create-mask",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -587,9 +587,9 @@ pika_layer_get_mask (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-mask",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -624,9 +624,9 @@ pika_layer_from_mask (PikaLayerMask *mask)
PIKA_TYPE_LAYER_MASK, mask,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-from-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-from-mask",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -667,9 +667,9 @@ pika_layer_add_mask (PikaLayer *layer,
PIKA_TYPE_LAYER_MASK, mask,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-add-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-add-mask",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -704,9 +704,9 @@ pika_layer_remove_mask (PikaLayer *layer,
PIKA_TYPE_MASK_APPLY_MODE, mode,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-remove-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-remove-mask",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -739,9 +739,9 @@ pika_layer_is_floating_sel (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-is-floating-sel",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-is-floating-sel",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -774,9 +774,9 @@ pika_layer_get_lock_alpha (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-lock-alpha",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-lock-alpha",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -812,9 +812,9 @@ pika_layer_set_lock_alpha (PikaLayer *layer,
G_TYPE_BOOLEAN, lock_alpha,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-lock-alpha",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-lock-alpha",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -847,9 +847,9 @@ pika_layer_get_apply_mask (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-apply-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-apply-mask",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -887,9 +887,9 @@ pika_layer_set_apply_mask (PikaLayer *layer,
G_TYPE_BOOLEAN, apply_mask,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-apply-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-apply-mask",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -923,9 +923,9 @@ pika_layer_get_show_mask (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-show-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-show-mask",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -963,9 +963,9 @@ pika_layer_set_show_mask (PikaLayer *layer,
G_TYPE_BOOLEAN, show_mask,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-show-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-show-mask",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -998,9 +998,9 @@ pika_layer_get_edit_mask (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-edit-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-edit-mask",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1038,9 +1038,9 @@ pika_layer_set_edit_mask (PikaLayer *layer,
G_TYPE_BOOLEAN, edit_mask,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-edit-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-edit-mask",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1071,9 +1071,9 @@ pika_layer_get_opacity (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-opacity",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-opacity",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1108,9 +1108,9 @@ pika_layer_set_opacity (PikaLayer *layer,
G_TYPE_DOUBLE, opacity,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-opacity",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-opacity",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1141,9 +1141,9 @@ pika_layer_get_mode (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-mode",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-mode",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1178,9 +1178,9 @@ pika_layer_set_mode (PikaLayer *layer,
PIKA_TYPE_LAYER_MODE, mode,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-mode",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-mode",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1213,9 +1213,9 @@ pika_layer_get_blend_space (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-blend-space",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-blend-space",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1252,9 +1252,9 @@ pika_layer_set_blend_space (PikaLayer *layer,
PIKA_TYPE_LAYER_COLOR_SPACE, blend_space,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-blend-space",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-blend-space",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1287,9 +1287,9 @@ pika_layer_get_composite_space (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-composite-space",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-composite-space",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1326,9 +1326,9 @@ pika_layer_set_composite_space (PikaLayer *layer,
PIKA_TYPE_LAYER_COLOR_SPACE, composite_space,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-composite-space",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-composite-space",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1361,9 +1361,9 @@ pika_layer_get_composite_mode (PikaLayer *layer)
PIKA_TYPE_LAYER, layer,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-composite-mode",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-get-composite-mode",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -1400,9 +1400,9 @@ pika_layer_set_composite_mode (PikaLayer *layer,
PIKA_TYPE_LAYER_COMPOSITE_MODE, composite_mode,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-composite-mode",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-layer-set-composite-mode",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -26,8 +26,14 @@
#include "pika.h"
#include "libpikabase/pikawire.h" /* FIXME kill this include */
#include "pikaloadprocedure.h"
#include "pikapdb_pdb.h"
#include "pikaplugin-private.h"
#include "pikaprocedureconfig-private.h"
#include "libpika-intl.h"
/**
@ -178,12 +184,19 @@ static PikaValueArray *
pika_load_procedure_run (PikaProcedure *procedure,
const PikaValueArray *args)
{
PikaLoadProcedure *load_proc = PIKA_LOAD_PROCEDURE (procedure);
PikaValueArray *remaining;
PikaValueArray *return_values;
PikaRunMode run_mode;
GFile *file;
gint i;
PikaPlugIn *plug_in;
PikaLoadProcedure *load_proc = PIKA_LOAD_PROCEDURE (procedure);
PikaValueArray *remaining;
PikaValueArray *return_values;
PikaProcedureConfig *config;
PikaImage *image = NULL;
PikaMetadata *metadata = NULL;
gchar *mimetype = NULL;
PikaMetadataLoadFlags flags = PIKA_METADATA_LOAD_ALL;
PikaPDBStatusType status = PIKA_PDB_EXECUTION_ERROR;
PikaRunMode run_mode;
GFile *file;
gint i;
run_mode = PIKA_VALUES_GET_ENUM (args, 0);
file = PIKA_VALUES_GET_FILE (args, 1);
@ -197,12 +210,89 @@ pika_load_procedure_run (PikaProcedure *procedure,
pika_value_array_append (remaining, value);
}
config = pika_procedure_create_config (procedure);
mimetype = (gchar *) pika_file_procedure_get_mime_types (PIKA_FILE_PROCEDURE (procedure));
if (mimetype != NULL)
{
char *delim;
mimetype = g_strdup (mimetype);
mimetype = g_strstrip (mimetype);
delim = strstr (mimetype, ",");
if (delim)
*delim = '\0';
/* Though docs only writes about the list being comma-separated, our
* code apparently also split by spaces.
*/
delim = strstr (mimetype, " ");
if (delim)
*delim = '\0';
delim = strstr (mimetype, "\t");
if (delim)
*delim = '\0';
metadata = pika_metadata_load_from_file (file, NULL);
g_free (mimetype);
}
else
{
flags = PIKA_METADATA_LOAD_NONE;
}
if (metadata == NULL)
metadata = pika_metadata_new ();
_pika_procedure_config_begin_run (config, image, run_mode, remaining);
return_values = load_proc->priv->run_func (procedure,
run_mode,
file,
remaining,
metadata, &flags,
config,
load_proc->priv->run_data);
if (return_values != NULL &&
pika_value_array_length (return_values) > 0 &&
G_VALUE_HOLDS_ENUM (pika_value_array_index (return_values, 0)))
status = PIKA_VALUES_GET_ENUM (return_values, 0);
_pika_procedure_config_end_run (config, status);
if (status == PIKA_PDB_SUCCESS)
{
if (pika_value_array_length (return_values) < 2 ||
! PIKA_VALUE_HOLDS_IMAGE (pika_value_array_index (return_values, 1)))
{
GError *error = NULL;
status = PIKA_PDB_EXECUTION_ERROR;
g_set_error (&error, PIKA_PLUG_IN_ERROR, 0,
_("This file loading plug-in returned SUCCESS as a status without an image. "
"This is a bug in the plug-in code. Contact the plug-in developer."));
pika_value_array_unref (return_values);
return_values = pika_procedure_new_return_values (procedure, status, error);
}
else
{
image = PIKA_VALUES_GET_IMAGE (return_values, 1);
}
}
if (image != NULL && metadata != NULL && flags != PIKA_METADATA_LOAD_NONE)
pika_image_metadata_load_finish (image, NULL, metadata, flags);
/* This is debug printing to help plug-in developers figure out best
* practices.
*/
plug_in = pika_procedure_get_plug_in (procedure);
if (G_OBJECT (config)->ref_count > 1 &&
_pika_plug_in_manage_memory_manually (plug_in))
g_printerr ("%s: ERROR: the PikaSaveProcedureConfig object was refed "
"by plug-in, it MUST NOT do that!\n", G_STRFUNC);
g_object_unref (config);
g_clear_object (&metadata);
pika_value_array_unref (remaining);
return return_values;

View File

@ -35,24 +35,36 @@ G_BEGIN_DECLS
/**
* PikaRunLoadFunc:
* @procedure: the #PikaProcedure that runs.
* @run_mode: the #PikaRunMode.
* @file: the #GFile to load from.
* @args: the @procedure's remaining arguments.
* @procedure: the [class@Gimp.Procedure] that runs.
* @run_mode: the [enum@RunMode].
* @file: the [iface@Gio.File] to load from.
* @metadata: the [class@Gimp.Metadata] which will be added to the new image.
* @flags: (inout): flags to filter which metadata will be added..
* @config: the @procedure's remaining arguments.
* @run_data: (closure): the run_data given in pika_load_procedure_new().
*
* The load function is run during the lifetime of the PIKA session,
* each time a plug-in load procedure is called.
* The load function is run during the lifetime of the PIKA session, each time a
* plug-in load procedure is called.
*
* You are expected to read @file and create a [class@Gimp.Image] out of its
* data. This image will be the first return value.
* @metadata will be filled from metadata from @file if our infrastructure
* supports this format. You may tweak this object, for instance adding metadata
* specific to the format. You can also edit @flags if you need to filter out
* some specific common fields. For instance, it is customary to remove a
* colorspace field with [flags@MetadataLoadFlags] when a profile was added.
*
* Returns: (transfer full): the @procedure's return values.
*
* Since: 3.0
**/
typedef PikaValueArray * (* PikaRunLoadFunc) (PikaProcedure *procedure,
PikaRunMode run_mode,
GFile *file,
const PikaValueArray *args,
gpointer run_data);
typedef PikaValueArray * (* PikaRunLoadFunc) (PikaProcedure *procedure,
PikaRunMode run_mode,
GFile *file,
PikaMetadata *metadata,
PikaMetadataLoadFlags *flags,
PikaProcedureConfig *config,
gpointer run_data);
#define PIKA_TYPE_LOAD_PROCEDURE (pika_load_procedure_get_type ())

View File

@ -58,9 +58,9 @@ pika_message (const gchar *message)
G_TYPE_STRING, message,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-message",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-message",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -91,9 +91,9 @@ pika_message_get_handler (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-message-get-handler",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-message-get-handler",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -127,9 +127,9 @@ pika_message_set_handler (PikaMessageHandlerType handler)
PIKA_TYPE_MESSAGE_HANDLER_TYPE, handler,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-message-set-handler",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-message-set-handler",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -71,9 +71,9 @@ pika_airbrush (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 3), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-airbrush",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-airbrush",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -115,9 +115,9 @@ pika_airbrush_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-airbrush-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-airbrush-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -178,9 +178,9 @@ pika_clone (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 6), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-clone",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-clone",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -223,9 +223,9 @@ pika_clone_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-clone-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-clone-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -272,9 +272,9 @@ pika_convolve (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 4), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-convolve",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-convolve",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -316,9 +316,9 @@ pika_convolve_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-convolve-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-convolve-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -365,9 +365,9 @@ pika_dodgeburn (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 5), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dodgeburn",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dodgeburn",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -408,9 +408,9 @@ pika_dodgeburn_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dodgeburn-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-dodgeburn-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -458,9 +458,9 @@ pika_eraser (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-eraser",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-eraser",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -502,9 +502,9 @@ pika_eraser_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-eraser-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-eraser-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -558,9 +558,9 @@ pika_heal (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 5), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-heal",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-heal",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -605,9 +605,9 @@ pika_heal_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-heal-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-heal-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -663,9 +663,9 @@ pika_paintbrush (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 3), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-paintbrush",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-paintbrush",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -716,9 +716,9 @@ pika_paintbrush_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-paintbrush-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-paintbrush-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -761,9 +761,9 @@ pika_pencil (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pencil",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pencil",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -806,9 +806,9 @@ pika_smudge (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 3), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-smudge",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-smudge",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -849,9 +849,9 @@ pika_smudge_default (PikaDrawable *drawable,
G_TYPE_NONE);
pika_value_set_float_array (pika_value_array_index (args, 2), strokes, num_strokes);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-smudge-default",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-smudge-default",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -62,9 +62,9 @@ pika_palette_new (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-new",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-new",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -98,9 +98,9 @@ pika_palette_get_by_name (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-by-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-by-name",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -134,9 +134,9 @@ pika_palette_get_color_count (PikaPalette *palette)
PIKA_TYPE_PALETTE, palette,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-color-count",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-color-count",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -174,9 +174,9 @@ pika_palette_get_colors (PikaPalette *palette,
PIKA_TYPE_PALETTE, palette,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-colors",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-colors",
args);
pika_value_array_unref (args);
*num_colors = 0;
@ -215,9 +215,9 @@ pika_palette_get_columns (PikaPalette *palette)
PIKA_TYPE_PALETTE, palette,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-columns",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-get-columns",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -256,9 +256,9 @@ pika_palette_set_columns (PikaPalette *palette,
G_TYPE_INT, columns,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-set-columns",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-set-columns",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -302,9 +302,9 @@ pika_palette_add_entry (PikaPalette *palette,
PIKA_TYPE_RGB, color,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-add-entry",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-add-entry",
args);
pika_value_array_unref (args);
*entry_num = 0;
@ -326,8 +326,10 @@ pika_palette_add_entry (PikaPalette *palette,
*
* Deletes an entry from the palette.
*
* Deletes an entry from the palette. Returns an error if the index is
* out or range. Returns an error if the palette is not editable.
* This function will fail and return %FALSE if the index is out or
* range or if the palette is not editable.
* Additionally if the palette belongs to an indexed image, it will
* only be possible to delete palette colors not in use in the image.
*
* Returns: TRUE on success.
*
@ -346,9 +348,9 @@ pika_palette_delete_entry (PikaPalette *palette,
G_TYPE_INT, entry_num,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-delete-entry",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-delete-entry",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -387,9 +389,9 @@ pika_palette_entry_get_color (PikaPalette *palette,
G_TYPE_INT, entry_num,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-get-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-get-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -433,9 +435,9 @@ pika_palette_entry_set_color (PikaPalette *palette,
PIKA_TYPE_RGB, color,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-set-color",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-set-color",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -474,9 +476,9 @@ pika_palette_entry_get_name (PikaPalette *palette,
G_TYPE_INT, entry_num,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-get-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-get-name",
args);
pika_value_array_unref (args);
*entry_name = NULL;
@ -522,9 +524,9 @@ pika_palette_entry_set_name (PikaPalette *palette,
G_TYPE_STRING, entry_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-set-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palette-entry-set-name",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -56,9 +56,9 @@ pika_palettes_refresh (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-refresh",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-refresh",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -93,9 +93,9 @@ pika_palettes_get_list (const gchar *filter)
G_TYPE_STRING, filter,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-get-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-get-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -41,7 +41,8 @@
* pika_palettes_popup:
* @palette_callback: The callback PDB proc to call when user chooses a palette.
* @popup_title: Title of the palette selection dialog.
* @initial_palette_name: The name of the palette to set as the initial choice.
* @initial_palette: The palette to set as the initial choice.
* @parent_window: An optional parent window handle for the popup to be set transient to.
*
* Invokes the Pika palette selection dialog.
*
@ -52,7 +53,8 @@
gboolean
pika_palettes_popup (const gchar *palette_callback,
const gchar *popup_title,
const gchar *initial_palette_name)
PikaPalette *initial_palette,
GBytes *parent_window)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -61,12 +63,13 @@ pika_palettes_popup (const gchar *palette_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, palette_callback,
G_TYPE_STRING, popup_title,
G_TYPE_STRING, initial_palette_name,
PIKA_TYPE_PALETTE, initial_palette,
G_TYPE_BYTES, parent_window,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -97,9 +100,9 @@ pika_palettes_close_popup (const gchar *palette_callback)
G_TYPE_STRING, palette_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-close-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-close-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -112,7 +115,7 @@ pika_palettes_close_popup (const gchar *palette_callback)
/**
* pika_palettes_set_popup:
* @palette_callback: The name of the callback registered for this pop-up.
* @palette_name: The name of the palette to set as selected.
* @palette: The palette to set as selected.
*
* Sets the current palette in a palette selection dialog.
*
@ -122,7 +125,7 @@ pika_palettes_close_popup (const gchar *palette_callback)
**/
gboolean
pika_palettes_set_popup (const gchar *palette_callback,
const gchar *palette_name)
PikaPalette *palette)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -130,12 +133,12 @@ pika_palettes_set_popup (const gchar *palette_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, palette_callback,
G_TYPE_STRING, palette_name,
PIKA_TYPE_PALETTE, palette,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-set-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-palettes-set-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -34,10 +34,11 @@ G_BEGIN_DECLS
gboolean pika_palettes_popup (const gchar *palette_callback,
const gchar *popup_title,
const gchar *initial_palette_name);
PikaPalette *initial_palette,
GBytes *parent_window);
gboolean pika_palettes_close_popup (const gchar *palette_callback);
gboolean pika_palettes_set_popup (const gchar *palette_callback,
const gchar *palette_name);
PikaPalette *palette);
G_END_DECLS

View File

@ -29,70 +29,124 @@
#include "pika.h"
#include "pikaparamspecs-desc.h"
#include "libpika-intl.h"
static gchar *
pika_param_spec_boolean_desc (GParamSpec *pspec)
{
GParamSpecBoolean *bspec = G_PARAM_SPEC_BOOLEAN (pspec);
return g_strdup_printf ("(TRUE or FALSE, default %s)",
return g_strdup_printf ("<i>(TRUE or FALSE, default %s)</i>",
bspec->default_value ? "TRUE" : "FALSE");
}
static gchar *
pika_param_spec_choice_desc (GParamSpec *pspec)
{
PikaParamSpecChoice *cspec = PIKA_PARAM_SPEC_CHOICE (pspec);
GList *choices;
GString *desc;
choices = pika_choice_list_nicks (cspec->choice);
desc = g_string_new ("\n");
g_string_append_printf (desc, "<i>%s</i>", _("Allowed values:"));
for (GList *iter = choices; iter; iter = iter->next)
{
gchar *nick = iter->data;
gchar *label = NULL;
gchar *help = NULL;
pika_choice_get_documentation (cspec->choice, (const gchar *) nick, (const gchar **) &label, (const gchar **) &help);
nick = g_markup_escape_text (nick, -1);
label = g_markup_escape_text (label, -1);
help = (help != NULL ? g_markup_escape_text (help, -1) : NULL);
if (help != NULL)
/* \xe2\x80\xa2 is the UTF-8 for the bullet point. */
g_string_append_printf (desc, "\n\xe2\x80\xa2 <tt>%s</tt>: %s\n\t%s", nick, label, help);
else
g_string_append_printf (desc, "\n\xe2\x80\xa2 <tt>%s</tt>: %s", nick, label);
g_free (nick);
g_free (label);
g_free (help);
}
return g_string_free (desc, FALSE);
}
static gchar *
pika_param_spec_int_desc (GParamSpec *pspec)
{
GParamSpecInt *ispec = G_PARAM_SPEC_INT (pspec);
GParamSpecInt *ispec = G_PARAM_SPEC_INT (pspec);
gchar *bare_text = NULL;
gchar *markup;
if (ispec->minimum == G_MININT32 && ispec->maximum == G_MAXINT32)
return g_strdup_printf ("(default %d)",
ispec->default_value);
bare_text = g_strdup_printf ("(default %d)",
ispec->default_value);
if (ispec->minimum == G_MININT32)
return g_strdup_printf ("(%s <= %d, default %d)",
g_param_spec_get_name (pspec),
ispec->maximum,
ispec->default_value);
bare_text = g_strdup_printf ("(%s <= %d, default %d)",
g_param_spec_get_name (pspec),
ispec->maximum,
ispec->default_value);
if (ispec->maximum == G_MAXINT32)
return g_strdup_printf ("(%s >= %d, default %d)",
g_param_spec_get_name (pspec),
ispec->minimum,
ispec->default_value);
bare_text = g_strdup_printf ("(%s >= %d, default %d)",
g_param_spec_get_name (pspec),
ispec->minimum,
ispec->default_value);
return g_strdup_printf ("(%d <= %s <= %d, default %d)",
ispec->minimum,
g_param_spec_get_name (pspec),
ispec->maximum,
ispec->default_value);
if (bare_text == NULL)
bare_text = g_strdup_printf ("(%d <= %s <= %d, default %d)",
ispec->minimum,
g_param_spec_get_name (pspec),
ispec->maximum,
ispec->default_value);
markup = g_markup_printf_escaped ("<i>%s</i>", bare_text);
g_free (bare_text);
return markup;
}
static gchar *
pika_param_spec_double_desc (GParamSpec *pspec)
{
GParamSpecDouble *dspec = G_PARAM_SPEC_DOUBLE (pspec);
GParamSpecDouble *dspec = G_PARAM_SPEC_DOUBLE (pspec);
gchar *bare_text = NULL;
gchar *markup;
if (dspec->minimum == - G_MAXDOUBLE && dspec->maximum == G_MAXDOUBLE)
return g_strdup_printf ("(default %g)",
dspec->default_value);
bare_text = g_strdup_printf ("(default %g)",
dspec->default_value);
if (dspec->minimum == - G_MAXDOUBLE)
return g_strdup_printf ("(%s <= %g, default %g)",
g_param_spec_get_name (pspec),
dspec->maximum,
dspec->default_value);
bare_text = g_strdup_printf ("(%s <= %g, default %g)",
g_param_spec_get_name (pspec),
dspec->maximum,
dspec->default_value);
if (dspec->maximum == G_MAXDOUBLE)
return g_strdup_printf ("(%s >= %g, default %g)",
g_param_spec_get_name (pspec),
dspec->minimum,
dspec->default_value);
bare_text = g_strdup_printf ("(%s >= %g, default %g)",
g_param_spec_get_name (pspec),
dspec->minimum,
dspec->default_value);
return g_strdup_printf ("(%g <= %s <= %g, default %g)",
dspec->minimum,
g_param_spec_get_name (pspec),
dspec->maximum,
dspec->default_value);
if (bare_text == NULL)
bare_text = g_strdup_printf ("(%g <= %s <= %g, default %g)",
dspec->minimum,
g_param_spec_get_name (pspec),
dspec->maximum,
dspec->default_value);
markup = g_markup_printf_escaped ("<i>%s</i>", bare_text);
g_free (bare_text);
return markup;
}
static gchar *
@ -113,7 +167,7 @@ pika_param_spec_enum_desc (GParamSpec *pspec)
#endif
excluded = NULL;
g_string_append (str, "{ ");
g_string_append (str, "<i>{ ");
for (i = 0, n = 0, enum_value = enum_class->values;
i < enum_class->n_values;
@ -152,7 +206,7 @@ pika_param_spec_enum_desc (GParamSpec *pspec)
n++;
}
g_string_append (str, " }");
g_string_append (str, " }</i>");
if (default_name)
{
@ -168,10 +222,10 @@ pika_param_spec_enum_desc (GParamSpec *pspec)
* pika_param_spec_get_desc:
* @pspec: a #GParamSpec
*
* This function creates a description of the passed @pspec, which is
* suitable for use in the PDB. Actually, it currently only deals with
* parameter types used in the PDB and should not be used for anything
* else.
* This function creates a description of the passed @pspec type restrictions.
* It currently only deals with parameter types used in the PDB and should not
* be used for anything else.
* The returned string is pango-markup formatted.
*
* Returns: A newly allocated string describing the parameter.
*
@ -185,6 +239,10 @@ pika_param_spec_get_desc (GParamSpec *pspec)
if (PIKA_IS_PARAM_SPEC_UNIT (pspec))
{
}
else if (PIKA_IS_PARAM_SPEC_CHOICE (pspec))
{
return pika_param_spec_choice_desc (pspec);
}
else if (G_IS_PARAM_SPEC_INT (pspec))
{
return pika_param_spec_int_desc (pspec);

View File

@ -59,9 +59,9 @@ pika_pattern_get_by_name (const gchar *name)
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pattern-get-by-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pattern-get-by-name",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -102,9 +102,9 @@ pika_pattern_get_info (PikaPattern *pattern,
PIKA_TYPE_PATTERN, pattern,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pattern-get-info",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pattern-get-info",
args);
pika_value_array_unref (args);
*width = 0;
@ -126,7 +126,7 @@ pika_pattern_get_info (PikaPattern *pattern,
}
/**
* pika_pattern_get_pixels:
* _pika_pattern_get_pixels:
* @pattern: The pattern.
* @width: (out): The pattern width.
* @height: (out): The pattern height.
@ -136,19 +136,18 @@ pika_pattern_get_info (PikaPattern *pattern,
* Gets information about the pattern (including pixels).
*
* Gets information about the pattern: the pattern extents (width and
* height), its bpp, and its pixel data. The pixel data is an array in
* C or a list in some languages.
* height), its bpp, and its pixel data.
*
* Returns: TRUE on success.
*
* Since: 2.2
**/
gboolean
pika_pattern_get_pixels (PikaPattern *pattern,
gint *width,
gint *height,
gint *bpp,
GBytes **color_bytes)
_pika_pattern_get_pixels (PikaPattern *pattern,
gint *width,
gint *height,
gint *bpp,
GBytes **color_bytes)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -158,9 +157,9 @@ pika_pattern_get_pixels (PikaPattern *pattern,
PIKA_TYPE_PATTERN, pattern,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pattern-get-pixels",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pattern-get-pixels",
args);
pika_value_array_unref (args);
*width = 0;

View File

@ -32,16 +32,16 @@ G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
PikaPattern* pika_pattern_get_by_name (const gchar *name);
gboolean pika_pattern_get_info (PikaPattern *pattern,
gint *width,
gint *height,
gint *bpp);
gboolean pika_pattern_get_pixels (PikaPattern *pattern,
gint *width,
gint *height,
gint *bpp,
GBytes **color_bytes);
PikaPattern* pika_pattern_get_by_name (const gchar *name);
gboolean pika_pattern_get_info (PikaPattern *pattern,
gint *width,
gint *height,
gint *bpp);
G_GNUC_INTERNAL gboolean _pika_pattern_get_pixels (PikaPattern *pattern,
gint *width,
gint *height,
gint *bpp,
GBytes **color_bytes);
G_END_DECLS

View File

@ -56,9 +56,9 @@ pika_patterns_refresh (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-refresh",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-refresh",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -93,9 +93,9 @@ pika_patterns_get_list (const gchar *filter)
G_TYPE_STRING, filter,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-get-list",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-get-list",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -41,7 +41,8 @@
* pika_patterns_popup:
* @pattern_callback: The callback PDB proc to call when the user chooses a pattern.
* @popup_title: Title of the pattern selection dialog.
* @initial_pattern_name: The name of the pattern to set as the initial choice.
* @initial_pattern: The pattern to set as the initial choice.
* @parent_window: An optional parent window handle for the popup to be set transient to.
*
* Invokes the Pika pattern selection.
*
@ -52,7 +53,8 @@
gboolean
pika_patterns_popup (const gchar *pattern_callback,
const gchar *popup_title,
const gchar *initial_pattern_name)
PikaPattern *initial_pattern,
GBytes *parent_window)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -61,12 +63,13 @@ pika_patterns_popup (const gchar *pattern_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, pattern_callback,
G_TYPE_STRING, popup_title,
G_TYPE_STRING, initial_pattern_name,
PIKA_TYPE_PATTERN, initial_pattern,
G_TYPE_BYTES, parent_window,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -97,9 +100,9 @@ pika_patterns_close_popup (const gchar *pattern_callback)
G_TYPE_STRING, pattern_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-close-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-close-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -112,7 +115,7 @@ pika_patterns_close_popup (const gchar *pattern_callback)
/**
* pika_patterns_set_popup:
* @pattern_callback: The name of the callback registered for this pop-up.
* @pattern_name: The name of the pattern to set as selected.
* @pattern: The pattern to set as selected.
*
* Sets the current pattern in a pattern selection dialog.
*
@ -122,7 +125,7 @@ pika_patterns_close_popup (const gchar *pattern_callback)
**/
gboolean
pika_patterns_set_popup (const gchar *pattern_callback,
const gchar *pattern_name)
PikaPattern *pattern)
{
PikaValueArray *args;
PikaValueArray *return_vals;
@ -130,12 +133,12 @@ pika_patterns_set_popup (const gchar *pattern_callback,
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, pattern_callback,
G_TYPE_STRING, pattern_name,
PIKA_TYPE_PATTERN, pattern,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-set-popup",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-patterns-set-popup",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -34,10 +34,11 @@ G_BEGIN_DECLS
gboolean pika_patterns_popup (const gchar *pattern_callback,
const gchar *popup_title,
const gchar *initial_pattern_name);
PikaPattern *initial_pattern,
GBytes *parent_window);
gboolean pika_patterns_close_popup (const gchar *pattern_callback);
gboolean pika_patterns_set_popup (const gchar *pattern_callback,
const gchar *pattern_name);
PikaPattern *pattern);
G_END_DECLS

View File

@ -45,10 +45,14 @@ typedef enum
GQuark _pika_pdb_error_quark (void) G_GNUC_CONST;
PikaPDB * _pika_pdb_new (PikaPlugIn *plug_in);
PikaPDB * _pika_pdb_new (PikaPlugIn *plug_in);
PikaPlugIn * _pika_pdb_get_plug_in (PikaPDB *pdb);
PikaPlugIn * _pika_pdb_get_plug_in (PikaPDB *pdb);
gboolean pika_pdb_get_data (const gchar *identifier,
GBytes **data);
gboolean pika_pdb_set_data (const gchar *identifier,
GBytes *data);
G_END_DECLS

View File

@ -29,7 +29,6 @@
#include "libpikabase/pikaprotocol.h"
#include "libpikabase/pikawire.h"
#include "pika-private.h"
#include "pikagpparams.h"
#include "pikapdb-private.h"
#include "pikapdb_pdb.h"
@ -191,221 +190,6 @@ pika_pdb_lookup_procedure (PikaPDB *pdb,
return procedure;
}
/**
* pika_pdb_run_procedure: (skip)
* @pdb: the #PikaPDB object.
* @procedure_name: the procedure registered name.
* @first_type: the #GType of the first argument, or #G_TYPE_NONE.
* @...: the call arguments.
*
* Runs the procedure named @procedure_name with arguments given as
* list of (#GType, value) pairs, terminated by #G_TYPE_NONE.
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
pika_pdb_run_procedure (PikaPDB *pdb,
const gchar *procedure_name,
GType first_type,
...)
{
PikaValueArray *return_values;
va_list args;
g_return_val_if_fail (PIKA_IS_PDB (pdb), NULL);
g_return_val_if_fail (pika_is_canonical_identifier (procedure_name), NULL);
va_start (args, first_type);
return_values = pika_pdb_run_procedure_valist (pdb, procedure_name,
first_type, args);
va_end (args);
return return_values;
}
/**
* pika_pdb_run_procedure_valist: (skip)
* @pdb: the #PikaPDB object.
* @procedure_name: the procedure registered name.
* @first_type: the #GType of the first argument, or #G_TYPE_NONE.
* @args: the call arguments.
*
* Runs the procedure named @procedure_name with @args given in the
* order as passed to [method@PDB.run_procedure].
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
pika_pdb_run_procedure_valist (PikaPDB *pdb,
const gchar *procedure_name,
GType first_type,
va_list args)
{
PikaValueArray *arguments;
PikaValueArray *return_values;
gchar *error_msg = NULL;
g_return_val_if_fail (PIKA_IS_PDB (pdb), NULL);
g_return_val_if_fail (pika_is_canonical_identifier (procedure_name), NULL);
arguments = pika_value_array_new_from_types_valist (&error_msg,
first_type,
args);
if (! arguments)
{
GError *error = g_error_new_literal (PIKA_PDB_ERROR,
PIKA_PDB_ERROR_INTERNAL_ERROR,
error_msg);
g_printerr ("%s: %s", G_STRFUNC, error_msg);
g_free (error_msg);
return pika_procedure_new_return_values (NULL,
PIKA_PDB_CALLING_ERROR,
error);
}
return_values = pika_pdb_run_procedure_array (pdb, procedure_name,
arguments);
pika_value_array_unref (arguments);
return return_values;
}
/**
* pika_pdb_run_procedure_argv: (rename-to pika_pdb_run_procedure)
* @pdb: the #PikaPDB object.
* @procedure_name: the registered name to call.
* @arguments: (array length=n_arguments) (nullable): the call arguments or %NULL.
* @n_arguments: the number of arguments.
*
* Runs the procedure named @procedure_name with @arguments.
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
pika_pdb_run_procedure_argv (PikaPDB *pdb,
const gchar *procedure_name,
const GValue *arguments,
gint n_arguments)
{
PikaValueArray *args;
PikaValueArray *return_values;
g_return_val_if_fail (PIKA_IS_PDB (pdb), NULL);
g_return_val_if_fail (pika_is_canonical_identifier (procedure_name), NULL);
/* Not require arguments != NULL.
* pika_value_array_new_from_values(NULL, 0) will return empty GValueArray.
*/
args = pika_value_array_new_from_values (arguments, n_arguments);
return_values = pika_pdb_run_procedure_array (pdb, procedure_name, args);
pika_value_array_unref (args);
return return_values;
}
/**
* pika_pdb_run_procedure_array:
* @pdb: the #PikaPDB object.
* @procedure_name: the procedure registered name.
* @arguments: the call arguments.
*
* Runs the procedure named @procedure_name with @arguments.
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
pika_pdb_run_procedure_array (PikaPDB *pdb,
const gchar *procedure_name,
const PikaValueArray *arguments)
{
GPProcRun proc_run;
GPProcReturn *proc_return;
PikaWireMessage msg;
PikaValueArray *return_values;
g_return_val_if_fail (PIKA_IS_PDB (pdb), NULL);
g_return_val_if_fail (pika_is_canonical_identifier (procedure_name), NULL);
g_return_val_if_fail (arguments != NULL, NULL);
proc_run.name = (gchar *) procedure_name;
proc_run.n_params = pika_value_array_length (arguments);
proc_run.params = _pika_value_array_to_gp_params (arguments, FALSE);
if (! gp_proc_run_write (_pika_plug_in_get_write_channel (pdb->priv->plug_in),
&proc_run, pdb->priv->plug_in))
pika_quit ();
_pika_gp_params_free (proc_run.params, proc_run.n_params, FALSE);
_pika_plug_in_read_expect_msg (pdb->priv->plug_in, &msg, GP_PROC_RETURN);
proc_return = msg.data;
return_values = _pika_gp_params_to_value_array (NULL,
NULL, 0,
proc_return->params,
proc_return->n_params,
TRUE);
pika_wire_destroy (&msg);
pika_pdb_set_error (pdb, return_values);
return return_values;
}
/**
* pika_pdb_run_procedure_config:
* @pdb: the #PikaPDB object.
* @procedure_name: the registered name to call.
* @config: a config object obtained with pika_procedure_create_config().
*
* Runs the procedure named @procedure_name with @config.
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
pika_pdb_run_procedure_config (PikaPDB *pdb,
const gchar *procedure_name,
PikaProcedureConfig *config)
{
PikaProcedure *procedure;
PikaValueArray *args;
PikaValueArray *return_values;
g_return_val_if_fail (PIKA_IS_PDB (pdb), NULL);
g_return_val_if_fail (pika_is_canonical_identifier (procedure_name), NULL);
g_return_val_if_fail (PIKA_IS_PROCEDURE_CONFIG (config), NULL);
procedure = pika_pdb_lookup_procedure (pdb, procedure_name);
g_return_val_if_fail (pika_procedure_config_get_procedure (config) == procedure,
NULL);
args = pika_procedure_new_arguments (procedure);
pika_procedure_config_get_values (config, args);
return_values = pika_pdb_run_procedure_array (pdb, procedure_name, args);
pika_value_array_unref (args);
return return_values;
}
/**
* pika_pdb_temp_procedure_name:
* @pdb: the #PikaPDB object.
@ -603,43 +387,19 @@ pika_pdb_get_last_status (PikaPDB *pdb)
* the specified identifier. The data is copied into the given memory
* location.
*
* WARNING: this function is exported in the library so that it can be used by
* libpikawidgets. Nevertheless it is considered internal, and is not declared
* in any public header on purpose. It should not be considered part of the API
* and therefore should not be used in plug-ins. It may disappear at any time.
*
* Returns: TRUE on success, FALSE if no data has been associated with
* the identifier
*/
gboolean
pika_pdb_get_data (const gchar *identifier,
gpointer data)
pika_pdb_get_data (const gchar *identifier,
GBytes **data)
{
GBytes *hack = NULL;
gboolean success;
success = _pika_pdb_get_data (identifier, &hack);
if (hack)
{
memcpy (data, g_bytes_get_data (hack, NULL), g_bytes_get_size (hack));
g_free (hack);
}
return success;
}
/**
* pika_pdb_get_data_size:
* @identifier: The identifier associated with data.
*
* Returns size of data associated with the specified identifier.
*
* This procedure returns the size of any data which may have been
* associated with the specified identifier. If no data has been
* associated with the identifier, an error is returned.
*
* Returns: The number of bytes in the data.
**/
gint
pika_pdb_get_data_size (const gchar *identifier)
{
return _pika_pdb_get_data_size (identifier);
return _pika_pdb_get_data (identifier, data);
}
/**
@ -652,23 +412,74 @@ pika_pdb_get_data_size (const gchar *identifier)
*
* This procedure associates the supplied data with the provided
* identifier. The data may be subsequently retrieved by a call to
* 'procedural-db-get-data'.
* 'procedural-db-get-data'. This storage is global within the session, even
* shareable between plug-ins, though it won't survive a restart of PIKA.
*
* WARNING: this function is exported in the library so that it can be used by
* libpikawidgets. Nevertheless it is considered internal, and is not declared
* in any public header on purpose. It should not be considered part of the API
* and therefore should not be used in plug-ins. It may disappear at any time.
* Returns: TRUE on success.
*/
gboolean
pika_pdb_set_data (const gchar *identifier,
gconstpointer data,
guint32 data_len)
pika_pdb_set_data (const gchar *identifier,
GBytes *data)
{
GBytes *bytes;
gboolean ret;
return _pika_pdb_set_data (identifier, data);
}
bytes = g_bytes_new_static (data, data_len);
ret = _pika_pdb_set_data (identifier, bytes);
g_bytes_unref (bytes);
/**
* _pika_pdb_run_procedure_array:
* @pdb: the #PikaPDB object.
* @procedure_name: the procedure registered name.
* @arguments: the call arguments.
*
* Runs the procedure named @procedure_name with @arguments.
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
_pika_pdb_run_procedure_array (PikaPDB *pdb,
const gchar *procedure_name,
const PikaValueArray *arguments)
{
GPProcRun proc_run;
GPProcReturn *proc_return;
PikaWireMessage msg;
PikaValueArray *return_values;
return ret;
g_return_val_if_fail (PIKA_IS_PDB (pdb), NULL);
g_return_val_if_fail (pika_is_canonical_identifier (procedure_name), NULL);
g_return_val_if_fail (arguments != NULL, NULL);
proc_run.name = (gchar *) procedure_name;
proc_run.n_params = pika_value_array_length (arguments);
proc_run.params = _pika_value_array_to_gp_params (arguments, FALSE);
if (! gp_proc_run_write (_pika_plug_in_get_write_channel (pdb->priv->plug_in),
&proc_run, pdb->priv->plug_in))
pika_quit ();
_pika_gp_params_free (proc_run.params, proc_run.n_params, FALSE);
_pika_plug_in_read_expect_msg (pdb->priv->plug_in, &msg, GP_PROC_RETURN);
proc_return = msg.data;
return_values = _pika_gp_params_to_value_array (NULL,
NULL, 0,
proc_return->params,
proc_return->n_params,
TRUE);
pika_wire_destroy (&msg);
pika_pdb_set_error (pdb, return_values);
return return_values;
}

View File

@ -77,25 +77,6 @@ gboolean pika_pdb_procedure_exists (PikaPDB *pdb,
PikaProcedure * pika_pdb_lookup_procedure (PikaPDB *pdb,
const gchar *procedure_name);
PikaValueArray * pika_pdb_run_procedure (PikaPDB *pdb,
const gchar *procedure_name,
GType first_type,
...);
PikaValueArray * pika_pdb_run_procedure_valist (PikaPDB *pdb,
const gchar *procedure_name,
GType first_type,
va_list args);
PikaValueArray * pika_pdb_run_procedure_argv (PikaPDB *pdb,
const gchar *procedure_name,
const GValue *arguments,
gint n_arguments);
PikaValueArray * pika_pdb_run_procedure_array (PikaPDB *pdb,
const gchar *procedure_name,
const PikaValueArray *arguments);
PikaValueArray * pika_pdb_run_procedure_config (PikaPDB *pdb,
const gchar *procedure_name,
PikaProcedureConfig *config);
gchar * pika_pdb_temp_procedure_name (PikaPDB *pdb);
gboolean pika_pdb_dump_to_file (PikaPDB *pdb,
@ -114,14 +95,11 @@ const gchar * pika_pdb_get_last_error (PikaPDB *pdb);
PikaPDBStatusType pika_pdb_get_last_status (PikaPDB *pdb);
/* Cruft API */
/* Internal use */
gboolean pika_pdb_get_data (const gchar *identifier,
gpointer data);
gint pika_pdb_get_data_size (const gchar *identifier);
gboolean pika_pdb_set_data (const gchar *identifier,
gconstpointer data,
guint32 data_len);
G_GNUC_INTERNAL PikaValueArray * _pika_pdb_run_procedure_array (PikaPDB *pdb,
const gchar *procedure_name,
const PikaValueArray *arguments);
G_END_DECLS

View File

@ -48,9 +48,9 @@ _pika_pdb_temp_name (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-temp-name",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-temp-name",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -84,9 +84,9 @@ _pika_pdb_dump (GFile *file)
G_TYPE_FILE, file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-dump",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-dump",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -149,9 +149,9 @@ _pika_pdb_query (const gchar *name,
G_TYPE_STRING, proc_type,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-query",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-query",
args);
pika_value_array_unref (args);
*procedure_names = NULL;
@ -190,9 +190,9 @@ _pika_pdb_proc_exists (const gchar *procedure_name)
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-proc-exists",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-proc-exists",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -235,9 +235,9 @@ _pika_pdb_get_proc_info (const gchar *procedure_name,
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-info",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-info",
args);
pika_value_array_unref (args);
*proc_type = 0;
@ -286,9 +286,9 @@ _pika_pdb_get_proc_argument (const gchar *procedure_name,
G_TYPE_INT, arg_num,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-argument",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-argument",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -328,9 +328,9 @@ _pika_pdb_get_proc_return_value (const gchar *procedure_name,
G_TYPE_INT, val_num,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-return-value",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-return-value",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -368,9 +368,9 @@ _pika_pdb_set_proc_image_types (const gchar *procedure_name,
G_TYPE_STRING, image_types,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-image-types",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-image-types",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -406,9 +406,9 @@ _pika_pdb_get_proc_image_types (const gchar *procedure_name)
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-image-types",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-image-types",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -445,9 +445,9 @@ _pika_pdb_set_proc_sensitivity_mask (const gchar *procedure_name,
G_TYPE_INT, mask,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-sensitivity-mask",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-sensitivity-mask",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -483,9 +483,9 @@ _pika_pdb_set_proc_menu_label (const gchar *procedure_name,
G_TYPE_STRING, menu_label,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-menu-label",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-menu-label",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -519,9 +519,9 @@ _pika_pdb_get_proc_menu_label (const gchar *procedure_name)
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-menu-label",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-menu-label",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -559,9 +559,9 @@ _pika_pdb_add_proc_menu_path (const gchar *procedure_name,
G_TYPE_STRING, menu_path,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-add-proc-menu-path",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-add-proc-menu-path",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -596,9 +596,9 @@ _pika_pdb_get_proc_menu_paths (const gchar *procedure_name)
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-menu-paths",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-menu-paths",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -638,9 +638,9 @@ _pika_pdb_set_proc_icon (const gchar *procedure_name,
G_TYPE_BYTES, icon_data,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-icon",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-icon",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -682,9 +682,9 @@ _pika_pdb_set_proc_documentation (const gchar *procedure_name,
G_TYPE_STRING, help_id,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-documentation",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-documentation",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -725,9 +725,9 @@ _pika_pdb_get_proc_documentation (const gchar *procedure_name,
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-documentation",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-documentation",
args);
pika_value_array_unref (args);
*blurb = NULL;
@ -780,9 +780,9 @@ _pika_pdb_set_proc_attribution (const gchar *procedure_name,
G_TYPE_STRING, date,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-attribution",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-proc-attribution",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -823,9 +823,9 @@ _pika_pdb_get_proc_attribution (const gchar *procedure_name,
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-attribution",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-proc-attribution",
args);
pika_value_array_unref (args);
*authors = NULL;
@ -877,9 +877,9 @@ _pika_pdb_set_file_proc_load_handler (const gchar *procedure_name,
G_TYPE_STRING, magics,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-load-handler",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-load-handler",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -917,9 +917,9 @@ _pika_pdb_set_file_proc_save_handler (const gchar *procedure_name,
G_TYPE_STRING, prefixes,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-save-handler",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-save-handler",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -959,9 +959,9 @@ _pika_pdb_set_file_proc_priority (const gchar *procedure_name,
G_TYPE_INT, priority,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-priority",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-priority",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1002,9 +1002,9 @@ _pika_pdb_set_file_proc_mime_types (const gchar *procedure_name,
G_TYPE_STRING, mime_types,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-mime-types",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-mime-types",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1040,9 +1040,9 @@ _pika_pdb_set_file_proc_handles_remote (const gchar *procedure_name)
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-handles-remote",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-handles-remote",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1078,9 +1078,9 @@ _pika_pdb_set_file_proc_handles_raw (const gchar *procedure_name)
G_TYPE_STRING, procedure_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-handles-raw",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-handles-raw",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1121,9 +1121,9 @@ _pika_pdb_set_file_proc_thumbnail_loader (const gchar *load_proc,
G_TYPE_STRING, thumb_proc,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-thumbnail-loader",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-file-proc-thumbnail-loader",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1160,9 +1160,9 @@ _pika_pdb_set_batch_interpreter (const gchar *procedure_name,
G_TYPE_STRING, interpreter_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-batch-interpreter",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-batch-interpreter",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -1198,9 +1198,9 @@ _pika_pdb_get_data (const gchar *identifier,
G_TYPE_STRING, identifier,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-data",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-data",
args);
pika_value_array_unref (args);
*data = NULL;
@ -1215,42 +1215,6 @@ _pika_pdb_get_data (const gchar *identifier,
return success;
}
/**
* _pika_pdb_get_data_size:
* @identifier: The identifier associated with data.
*
* Returns size of data associated with the specified identifier.
*
* This procedure returns the size of any data which may have been
* associated with the specified identifier. If no data has been
* associated with the identifier, an error is returned.
*
* Returns: The number of bytes in the data.
**/
gint
_pika_pdb_get_data_size (const gchar *identifier)
{
PikaValueArray *args;
PikaValueArray *return_vals;
gint bytes = 0;
args = pika_value_array_new_from_types (NULL,
G_TYPE_STRING, identifier,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-get-data-size",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
bytes = PIKA_VALUES_GET_INT (return_vals, 1);
pika_value_array_unref (return_vals);
return bytes;
}
/**
* _pika_pdb_set_data:
* @identifier: The identifier associated with data.
@ -1277,9 +1241,9 @@ _pika_pdb_set_data (const gchar *identifier,
G_TYPE_BYTES, data,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-data",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pdb-set-data",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -100,7 +100,6 @@ G_GNUC_INTERNAL gboolean _pika_pdb_set_batch_interpreter (const gcha
const gchar *interpreter_name);
G_GNUC_INTERNAL gboolean _pika_pdb_get_data (const gchar *identifier,
GBytes **data);
G_GNUC_INTERNAL gint _pika_pdb_get_data_size (const gchar *identifier);
G_GNUC_INTERNAL gboolean _pika_pdb_set_data (const gchar *identifier,
GBytes *data);

View File

@ -181,9 +181,9 @@ pika_pdb_procedure_run (PikaProcedure *procedure,
{
PikaPDBProcedure *pdb_procedure = PIKA_PDB_PROCEDURE (procedure);
return pika_pdb_run_procedure_array (pdb_procedure->priv->pdb,
pika_procedure_get_name (procedure),
(PikaValueArray *) args);
return _pika_pdb_run_procedure_array (pdb_procedure->priv->pdb,
pika_procedure_get_name (procedure),
(PikaValueArray *) args);
}

View File

@ -66,9 +66,9 @@ pika_pikarc_query (const gchar *token)
G_TYPE_STRING, token,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pikarc-query",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pikarc-query",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -107,9 +107,9 @@ pika_pikarc_set (const gchar *token,
G_TYPE_STRING, value,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pikarc-set",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-pikarc-set",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -139,9 +139,9 @@ pika_get_default_comment (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-default-comment",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-default-comment",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -173,9 +173,9 @@ pika_get_default_unit (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-default-unit",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-default-unit",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -211,9 +211,9 @@ pika_get_monitor_resolution (gdouble *xres,
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-monitor-resolution",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-monitor-resolution",
args);
pika_value_array_unref (args);
*xres = 0.0;
@ -255,9 +255,9 @@ _pika_get_color_configuration (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-color-configuration",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-color-configuration",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
@ -288,9 +288,9 @@ pika_get_module_load_inhibit (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-module-load-inhibit",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-get-module-load-inhibit",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -25,36 +25,38 @@
G_BEGIN_DECLS
void _pika_plug_in_query (PikaPlugIn *plug_in);
void _pika_plug_in_init (PikaPlugIn *plug_in);
void _pika_plug_in_run (PikaPlugIn *plug_in);
void _pika_plug_in_quit (PikaPlugIn *plug_in);
void _pika_plug_in_query (PikaPlugIn *plug_in);
void _pika_plug_in_init (PikaPlugIn *plug_in);
void _pika_plug_in_run (PikaPlugIn *plug_in);
void _pika_plug_in_quit (PikaPlugIn *plug_in);
GIOChannel * _pika_plug_in_get_read_channel (PikaPlugIn *plug_in);
GIOChannel * _pika_plug_in_get_write_channel (PikaPlugIn *plug_in);
GIOChannel * _pika_plug_in_get_read_channel (PikaPlugIn *plug_in);
GIOChannel * _pika_plug_in_get_write_channel (PikaPlugIn *plug_in);
void _pika_plug_in_read_expect_msg (PikaPlugIn *plug_in,
PikaWireMessage *msg,
gint type);
void _pika_plug_in_read_expect_msg (PikaPlugIn *plug_in,
PikaWireMessage *msg,
gint type);
gboolean _pika_plug_in_set_i18n (PikaPlugIn *plug_in,
const gchar *procedure_name,
gchar **gettext_domain,
gchar **catalog_dir);
gboolean _pika_plug_in_set_i18n (PikaPlugIn *plug_in,
const gchar *procedure_name,
gchar **gettext_domain,
gchar **catalog_dir);
PikaProcedure * _pika_plug_in_create_procedure (PikaPlugIn *plug_in,
const gchar *procedure_name);
PikaProcedure * _pika_plug_in_create_procedure (PikaPlugIn *plug_in,
const gchar *procedure_name);
PikaProcedure * _pika_plug_in_get_procedure (PikaPlugIn *plug_in);
PikaProcedure * _pika_plug_in_get_procedure (PikaPlugIn *plug_in);
PikaDisplay * _pika_plug_in_get_display (PikaPlugIn *plug_in,
gint32 display_id);
PikaImage * _pika_plug_in_get_image (PikaPlugIn *plug_in,
gint32 image_id);
PikaItem * _pika_plug_in_get_item (PikaPlugIn *plug_in,
gint32 item_id);
PikaResource * _pika_plug_in_get_resource (PikaPlugIn *plug_in,
gint32 resource_id);
PikaDisplay * _pika_plug_in_get_display (PikaPlugIn *plug_in,
gint32 display_id);
PikaImage * _pika_plug_in_get_image (PikaPlugIn *plug_in,
gint32 image_id);
PikaItem * _pika_plug_in_get_item (PikaPlugIn *plug_in,
gint32 item_id);
PikaResource * _pika_plug_in_get_resource (PikaPlugIn *plug_in,
gint32 resource_id);
gboolean _pika_plug_in_manage_memory_manually (PikaPlugIn *plug_in);
G_END_DECLS

View File

@ -114,6 +114,7 @@ G_DEFINE_QUARK (pika-plug-in-error-quark, pika_plug_in_error)
enum
{
PROP_0,
PROP_PROGRAM_NAME,
PROP_READ_CHANNEL,
PROP_WRITE_CHANNEL,
N_PROPS
@ -130,6 +131,8 @@ struct _PikaPlugInMenuBranch
struct _PikaPlugInPrivate
{
gchar *program_name;
GIOChannel *read_channel;
GIOChannel *write_channel;
@ -207,7 +210,9 @@ static void pika_plug_in_push_procedure (PikaPlugIn *plug_in,
static void pika_plug_in_pop_procedure (PikaPlugIn *plug_in,
PikaProcedure *procedure);
static void pika_plug_in_destroy_hashes (PikaPlugIn *plug_in);
static void pika_plug_in_destroy_proxies (GHashTable *hash_table,
static void pika_plug_in_destroy_proxies (PikaPlugIn *plug_in,
GHashTable *hash_table,
const gchar *type,
gboolean destroy_all);
static void pika_plug_in_init_i18n (PikaPlugIn *plug_in);
@ -233,6 +238,19 @@ pika_plug_in_class_init (PikaPlugInClass *klass)
klass->set_i18n = pika_plug_in_real_set_i18n;
/**
* PikaPlugIn:program-name:
*
* The program name as usually found on argv[0]
*/
props[PROP_PROGRAM_NAME] =
g_param_spec_string ("program-name",
"The plug-in executable",
"The executable name as usually found on argv[0]",
NULL,
PIKA_PARAM_WRITABLE |
G_PARAM_CONSTRUCT_ONLY);
/**
* PikaPlugIn:read-channel:
*
@ -310,6 +328,7 @@ pika_plug_in_finalize (GObject *object)
PikaPlugIn *plug_in = PIKA_PLUG_IN (object);
GList *list;
g_clear_pointer (&plug_in->priv->program_name, g_free);
g_clear_pointer (&plug_in->priv->translation_domain_name, g_free);
g_clear_object (&plug_in->priv->translation_domain_path);
@ -327,10 +346,10 @@ pika_plug_in_finalize (GObject *object)
g_clear_pointer (&plug_in->priv->menu_branches, g_list_free);
pika_plug_in_destroy_proxies (plug_in->priv->displays, TRUE);
pika_plug_in_destroy_proxies (plug_in->priv->images, TRUE);
pika_plug_in_destroy_proxies (plug_in->priv->items, TRUE);
pika_plug_in_destroy_proxies (plug_in->priv->resources, TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->displays, "display", TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->images, "image", TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->items, "item", TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->resources, "resource", TRUE);
pika_plug_in_destroy_hashes (plug_in);
@ -347,6 +366,10 @@ pika_plug_in_set_property (GObject *object,
switch (property_id)
{
case PROP_PROGRAM_NAME:
plug_in->priv->program_name = g_value_dup_string (value);
break;
case PROP_READ_CHANNEL:
plug_in->priv->read_channel = g_value_get_boxed (value);
break;
@ -1387,7 +1410,7 @@ pika_plug_in_proc_run_internal (PikaPlugIn *plug_in,
proc_run->n_params,
FALSE);
return_values = pika_procedure_run (procedure, arguments);
return_values = _pika_procedure_run_array (procedure, arguments);
pika_value_array_unref (arguments);
@ -1441,17 +1464,17 @@ pika_plug_in_pop_procedure (PikaPlugIn *plug_in,
_pika_procedure_destroy_proxies (procedure);
pika_plug_in_destroy_proxies (plug_in->priv->displays, FALSE);
pika_plug_in_destroy_proxies (plug_in->priv->images, FALSE);
pika_plug_in_destroy_proxies (plug_in->priv->items, FALSE);
pika_plug_in_destroy_proxies (plug_in->priv->resources, FALSE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->displays, "display", FALSE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->images, "image", FALSE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->items, "item", FALSE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->resources, "resource", FALSE);
if (! plug_in->priv->procedure_stack)
{
pika_plug_in_destroy_proxies (plug_in->priv->displays, TRUE);
pika_plug_in_destroy_proxies (plug_in->priv->images, TRUE);
pika_plug_in_destroy_proxies (plug_in->priv->items, TRUE);
pika_plug_in_destroy_proxies (plug_in->priv->resources, TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->displays, "display", TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->images, "image", TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->items, "item", TRUE);
pika_plug_in_destroy_proxies (plug_in, plug_in->priv->resources, "resource", TRUE);
pika_plug_in_destroy_hashes (plug_in);
}
@ -1483,7 +1506,7 @@ _pika_plug_in_get_display (PikaPlugIn *plug_in,
g_hash_table_insert (plug_in->priv->displays,
GINT_TO_POINTER (display_id),
g_object_ref (display) /* add debug ref */);
display);
}
return display;
@ -1515,7 +1538,7 @@ _pika_plug_in_get_image (PikaPlugIn *plug_in,
g_hash_table_insert (plug_in->priv->images,
GINT_TO_POINTER (image_id),
g_object_ref (image) /* add debug ref */);
image);
}
return image;
@ -1581,7 +1604,7 @@ _pika_plug_in_get_item (PikaPlugIn *plug_in,
if (item)
g_hash_table_insert (plug_in->priv->items,
GINT_TO_POINTER (item_id),
g_object_ref (item) /* add debug ref */);
item);
}
return item;
@ -1641,12 +1664,48 @@ _pika_plug_in_get_resource (PikaPlugIn *plug_in,
if (resource)
g_hash_table_insert (plug_in->priv->resources,
GINT_TO_POINTER (resource_id),
g_object_ref (resource) /* add debug ref */);
resource);
}
return resource;
}
gboolean
_pika_plug_in_manage_memory_manually (PikaPlugIn *plug_in)
{
gboolean manual_management = TRUE;
if (plug_in->priv->program_name)
{
GFile *file = g_file_new_for_path (plug_in->priv->program_name);
/* Limitations:
* 1. Checking a file extension (and trusting argv[0] in general) is not
* the best idea. I thought about the possibility of passing through
* the name of the used interpreter from core to plug-in, but even this
* should not be trusted because it is configurable.
* 2. An alternative could be to pass the information if a plug-in is
* interpreted (i.e. it has an interp file). Though I'm unsure if there
* might be some interpreted language out there with manual memory
* management.
* 3. This list only contains the bindings we actually tested with (and
* have demo plug-ins for). Much more bindings are possible.
*
* So in the end, this test is just worth so far, but it's
* acceptable for the officially supported bindings at least.
*/
if (pika_file_has_extension (file, ".lua") ||
pika_file_has_extension (file, ".py") ||
pika_file_has_extension (file, ".js") ||
pika_file_has_extension (file, ".gjs"))
manual_management = FALSE;
g_object_unref (file);
}
return manual_management;
}
static void
pika_plug_in_destroy_hashes (PikaPlugIn *plug_in)
{
@ -1657,8 +1716,10 @@ pika_plug_in_destroy_hashes (PikaPlugIn *plug_in)
}
static void
pika_plug_in_destroy_proxies (GHashTable *hash_table,
gboolean destroy_all)
pika_plug_in_destroy_proxies (PikaPlugIn *plug_in,
GHashTable *hash_table,
const gchar *type,
gboolean destroy_all)
{
GHashTableIter iter;
gpointer key, value;
@ -1672,52 +1733,56 @@ pika_plug_in_destroy_proxies (GHashTable *hash_table,
{
GObject *object = value;
if (object->ref_count == 2)
if (object->ref_count == 1)
{
/* this is the normal case for an unused proxy */
g_object_unref (object);
/* this is the normal case for an unused proxy, since we already
* destroyed the only other reference in procedure with
* _pika_procedure_destroy_proxies().
*/
g_hash_table_iter_remove (&iter);
}
else if (object->ref_count == 1)
else if (! G_IS_OBJECT (object))
{
/* this is debug code, a plug-in MUST NOT unref a proxy, we
* only catch one unref here, more then one will crash right
* in this function
/* this is debug code, a plug-in MUST NOT unref a proxy. To be nice,
* we steal the object from the table, as removing it normally would
* crash, since the object is not valid anymore.
*/
gint id;
g_object_get (object, "id", &id, NULL);
g_printerr ("%s: ERROR: %s proxy with ID %d was unrefed "
g_printerr ("%s: ERROR: %s proxy was unrefed "
"by plug-in, it MUST NOT do that!\n",
G_STRFUNC, G_OBJECT_TYPE_NAME (object), id);
G_STRFUNC, type);
g_hash_table_iter_remove (&iter);
g_hash_table_iter_steal (&iter);
}
else if (destroy_all)
{
/* this is debug code, a plug-in MUST NOT ref a proxy */
gint id;
g_object_get (object, "id", &id, NULL);
g_printerr ("%s: ERROR: %s proxy with ID %d was refed "
"by plug-in, it MUST NOT do that!\n",
G_STRFUNC, G_OBJECT_TYPE_NAME (object), id);
/* Some bindings are always keeping a reference to objects, in
* particular this is the behavior of lua and gjs bindings where
* object->ref_count == 2 at this point.
* As for the Python binding, it is only true for global
* variables (scoped variables are properly freed before the
* plug-in ends), which anyway is not the best practice.
* In any case, it's not something which the plug-in developer can do
* anything about so this error is only confusing.
* See #3912.
*/
if (_pika_plug_in_manage_memory_manually (plug_in))
g_printerr ("%s: ERROR: %s proxy with ID %d was refed "
"by plug-in, it MUST NOT do that!\n",
G_STRFUNC, G_OBJECT_TYPE_NAME (object), id);
#if 0
/* the code used to do this, but it appears that some bindings
* keep references around until later, let's keep this for
* reference and as a reminder to figure if we can do anything
* generic about it that works for all bindings.
/* The code used to do this, which is only meaningful when the bug is
* really in the plug-in code. If it's one of the cases where the
* reference is actually held by a bindings, it's unwise and will
* likely end up in double-free crashes.
*/
while (object->ref_count > 1)
g_object_unref (object);
#else
g_object_unref (object);
#endif
g_hash_table_iter_remove (&iter);
}

View File

@ -55,9 +55,9 @@ _pika_plug_in_help_register (const gchar *domain_name,
G_TYPE_FILE, domain_file,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-help-register",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-help-register",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -96,9 +96,9 @@ _pika_plug_in_menu_branch_register (const gchar *menu_path,
G_TYPE_STRING, menu_name,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-menu-branch-register",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-menu-branch-register",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -138,9 +138,9 @@ _pika_plug_in_set_pdb_error_handler (PikaPDBErrorHandler handler)
PIKA_TYPE_PDB_ERROR_HANDLER, handler,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-set-pdb-error-handler",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-set-pdb-error-handler",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -173,9 +173,9 @@ _pika_plug_in_get_pdb_error_handler (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-get-pdb-error-handler",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-plug-in-get-pdb-error-handler",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)

View File

@ -224,6 +224,33 @@ G_BEGIN_DECLS
g_value_set_enum (pika_value_array_index (args, n), value)
/* choice */
#define PIKA_PROC_ARG_CHOICE(procedure, name, nick, blurb, choice, default, flags) \
pika_procedure_add_argument (procedure,\
pika_param_spec_choice (name, nick, blurb,\
choice, default,\
flags))
#define PIKA_PROC_AUX_ARG_CHOICE(procedure, name, nick, blurb, choice, default, flags) \
pika_procedure_add_aux_argument (procedure,\
pika_param_spec_choice (name, nick, blurb,\
choice, default,\
flags))
#define PIKA_PROC_VAL_CHOICE(procedure, name, nick, blurb, enum_type, default, flags) \
pika_procedure_add_return_value (procedure,\
pika_param_spec_choice (name, nick, blurb,\
choice, default,\
flags))
#define PIKA_VALUES_GET_CHOICE(args, n) \
g_value_get_int (pika_value_array_index (args, n))
#define PIKA_VALUES_SET_CHOICE(args, n, value) \
g_value_set_int (pika_value_array_index (args, n), value)
/* string */
#define PIKA_PROC_ARG_STRING(procedure, name, nick, blurb, default, flags) \
@ -367,7 +394,7 @@ G_BEGIN_DECLS
#define PIKA_VALUES_DUP_BYTES(args, n) \
g_value_dup_boxed (pika_value_array_index (args, n))
#define PIKA_VALUES_SET_BYTES(args, n, value, length) \
#define PIKA_VALUES_SET_BYTES(args, n, value) \
g_value_set_boxed (pika_value_array_index (args, n), value)
#define PIKA_VALUES_TAKE_BYTES(args, n, value, length) \
@ -861,6 +888,12 @@ G_BEGIN_DECLS
/* Resource */
#define PIKA_PROC_ARG_RESOURCE(procedure, name, nick, blurb, flags) \
pika_procedure_add_argument (procedure,\
pika_param_spec_resource (name, nick, blurb,\
PIKA_TYPE_RESOURCE,\
flags))
#define PIKA_PROC_ARG_BRUSH(procedure, name, nick, blurb, flags) \
pika_procedure_add_argument (procedure,\
pika_param_spec_brush (name, nick, blurb,\

View File

@ -27,6 +27,8 @@
#include <stdarg.h>
#include <sys/types.h>
#include <gobject/gvaluecollector.h>
#include "pika.h"
#include "libpikabase/pikaprotocol.h"
@ -36,6 +38,7 @@
#include "pikapdb-private.h"
#include "pikaplugin-private.h"
#include "pikapdb_pdb.h"
#include "pikaplugin-private.h"
#include "pikaplugin_pdb.h"
#include "pikaprocedure-private.h"
#include "pikaprocedureconfig-private.h"
@ -100,38 +103,36 @@ struct _PikaProcedurePrivate
};
static void pika_procedure_constructed (GObject *object);
static void pika_procedure_finalize (GObject *object);
static void pika_procedure_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec);
static void pika_procedure_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec);
static void pika_procedure_constructed (GObject *object);
static void pika_procedure_finalize (GObject *object);
static void pika_procedure_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec);
static void pika_procedure_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec);
static void pika_procedure_real_install (PikaProcedure *procedure);
static void pika_procedure_real_uninstall (PikaProcedure *procedure);
static PikaValueArray *
pika_procedure_real_run (PikaProcedure *procedure,
const PikaValueArray *args);
static PikaProcedureConfig *
pika_procedure_real_create_config
(PikaProcedure *procedure,
GParamSpec **args,
gint n_args);
static void pika_procedure_real_install (PikaProcedure *procedure);
static void pika_procedure_real_uninstall (PikaProcedure *procedure);
static PikaValueArray * pika_procedure_real_run (PikaProcedure *procedure,
const PikaValueArray *args);
static PikaProcedureConfig * pika_procedure_real_create_config (PikaProcedure *procedure,
GParamSpec **args,
gint n_args);
static gboolean pika_procedure_validate_args (PikaProcedure *procedure,
GParamSpec **param_specs,
gint n_param_specs,
PikaValueArray *args,
gboolean return_vals,
GError **error);
static PikaValueArray * pika_procedure_new_arguments (PikaProcedure *procedure);
static gboolean pika_procedure_validate_args (PikaProcedure *procedure,
GParamSpec **param_specs,
gint n_param_specs,
PikaValueArray *args,
gboolean return_vals,
GError **error);
static void pika_procedure_set_icon (PikaProcedure *procedure,
PikaIconType icon_type,
gconstpointer icon_data);
static void pika_procedure_set_icon (PikaProcedure *procedure,
PikaIconType icon_type,
gconstpointer icon_data);
G_DEFINE_TYPE_WITH_PRIVATE (PikaProcedure, pika_procedure, G_TYPE_OBJECT)
@ -484,8 +485,47 @@ static PikaValueArray *
pika_procedure_real_run (PikaProcedure *procedure,
const PikaValueArray *args)
{
return procedure->priv->run_func (procedure, args,
procedure->priv->run_data);
PikaPlugIn *plug_in;
PikaProcedureConfig *config;
PikaImage *image = NULL;
PikaRunMode run_mode = PIKA_RUN_NONINTERACTIVE;
PikaValueArray *retvals;
PikaPDBStatusType status = PIKA_PDB_EXECUTION_ERROR;
if (pika_value_array_length (args) > 0 &&
G_VALUE_HOLDS_ENUM (pika_value_array_index (args, 0)))
{
run_mode = PIKA_VALUES_GET_ENUM (args, 0);
if (pika_value_array_length (args) > 1 &&
PIKA_VALUE_HOLDS_IMAGE (pika_value_array_index (args, 1)))
image = PIKA_VALUES_GET_IMAGE (args, 1);
}
config = pika_procedure_create_config (procedure);
_pika_procedure_config_begin_run (config, image, run_mode, args);
retvals = procedure->priv->run_func (procedure, config,
procedure->priv->run_data);
if (retvals != NULL &&
pika_value_array_length (retvals) > 0 &&
G_VALUE_HOLDS_ENUM (pika_value_array_index (retvals, 0)))
status = PIKA_VALUES_GET_ENUM (retvals, 0);
_pika_procedure_config_end_run (config, status);
/* This is debug printing to help plug-in developers figure out best
* practices.
*/
plug_in = pika_procedure_get_plug_in (procedure);
if (G_OBJECT (config)->ref_count > 1 &&
_pika_plug_in_manage_memory_manually (plug_in))
g_printerr ("%s: ERROR: the PikaProcedureConfig object was refed "
"by plug-in, it MUST NOT do that!\n", G_STRFUNC);
g_object_unref (config);
return retvals;
}
static PikaProcedureConfig *
@ -582,12 +622,12 @@ pika_procedure_real_create_config (PikaProcedure *procedure,
* Since: 3.0
**/
PikaProcedure *
pika_procedure_new (PikaPlugIn *plug_in,
const gchar *name,
PikaPDBProcType proc_type,
PikaRunFunc run_func,
gpointer run_data,
GDestroyNotify run_data_destroy)
pika_procedure_new (PikaPlugIn *plug_in,
const gchar *name,
PikaPDBProcType proc_type,
PikaRunFunc run_func,
gpointer run_data,
GDestroyNotify run_data_destroy)
{
PikaProcedure *procedure;
@ -608,7 +648,6 @@ pika_procedure_new (PikaPlugIn *plug_in,
return procedure;
}
/**
* pika_procedure_get_plug_in:
* @procedure: A #PikaProcedure.
@ -1630,10 +1669,9 @@ pika_procedure_get_return_values (PikaProcedure *procedure,
* @arg_name: the name of one of @procedure's arguments or auxiliary arguments.
* @sync: how to sync the argument or auxiliary argument.
*
* When using #PikaProcedureConfig, pika_procedure_config_begin_run()
* and pika_procedure_config_end_run(), a #PikaProcedure's arguments
* or auxiliary arguments can be automatically synced with a
* #PikaParasite of the #PikaImage the procedure is running on.
* When the procedure's run() function exits, a #PikaProcedure's arguments
* or auxiliary arguments can be automatically synced with a #PikaParasite of
* the #PikaImage the procedure is running on.
*
* In order to enable this, set @sync to %PIKA_ARGUMENT_SYNC_PARASITE.
*
@ -1711,43 +1749,6 @@ pika_procedure_get_argument_sync (PikaProcedure *procedure,
return sync;
}
/**
* pika_procedure_new_arguments:
* @procedure: the #PikaProcedure.
*
* Format the expected argument values of procedures, in the order as
* added with [method@Procedure.add_argument].
*
* Returns: (transfer full): the expected #PikaValueArray which could be given as
* arguments to run @procedure, with all values set to
* defaults. Free with pika_value_array_unref().
*
* Since: 3.0
**/
PikaValueArray *
pika_procedure_new_arguments (PikaProcedure *procedure)
{
PikaValueArray *args;
GValue value = G_VALUE_INIT;
gint i;
g_return_val_if_fail (PIKA_IS_PROCEDURE (procedure), NULL);
args = pika_value_array_new (procedure->priv->n_args);
for (i = 0; i < procedure->priv->n_args; i++)
{
GParamSpec *pspec = procedure->priv->args[i];
g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
g_param_value_set_default (pspec, &value);
pika_value_array_append (args, &value);
g_value_unset (&value);
}
return args;
}
/**
* pika_procedure_new_return_values:
* @procedure: the procedure.
@ -1828,19 +1829,146 @@ pika_procedure_new_return_values (PikaProcedure *procedure,
}
/**
* pika_procedure_run:
* pika_procedure_run: (skip)
* @pdb: the #PikaPDB object.
* @procedure_name: the procedure registered name.
* @first_arg_name: the name of an argument of @procedure_name.
* @...: the call arguments.
*
* Runs the procedure named @procedure_name with arguments given as
* list of `(name, value)` pairs, terminated by %NULL.
*
* The order of arguments does not matter and if any argument is missing, its
* default value will be used. The value type must correspond to the argument
* type as registered for @procedure_name.
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
pika_procedure_run (PikaProcedure *procedure,
const gchar *first_arg_name,
...)
{
PikaValueArray *return_values;
va_list args;
g_return_val_if_fail (PIKA_IS_PROCEDURE (procedure), NULL);
va_start (args, first_arg_name);
return_values = pika_procedure_run_valist (procedure, first_arg_name, args);
va_end (args);
return return_values;
}
/**
* pika_procedure_run_valist: (skip)
* @pdb: the #PikaPDB object.
* @procedure_name: the procedure registered name.
* @first_arg_name: the name of an argument of @procedure_name.
* @args: the call arguments.
*
* Runs @procedure with arguments names and values, given in the order as passed
* to [method@Procedure.run].
*
* Returns: (transfer full): the return values for the procedure call.
*
* Since: 3.0
*/
PikaValueArray *
pika_procedure_run_valist (PikaProcedure *procedure,
const gchar *first_arg_name,
va_list args)
{
PikaValueArray *return_values;
PikaProcedureConfig *config;
const gchar *arg_name;
g_return_val_if_fail (PIKA_IS_PROCEDURE (procedure), NULL);
config = pika_procedure_create_config (procedure);
arg_name = first_arg_name;
while (arg_name != NULL)
{
GParamSpec *pspec;
gchar *error = NULL;
GValue value = G_VALUE_INIT;
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), arg_name);
if (pspec == NULL)
{
g_warning ("%s: %s has no property named '%s'",
G_STRFUNC,
g_type_name (G_TYPE_FROM_INSTANCE (config)),
arg_name);
g_clear_object (&config);
return NULL;
}
g_value_init (&value, pspec->value_type);
G_VALUE_COLLECT (&value, args, G_VALUE_NOCOPY_CONTENTS, &error);
if (error)
{
g_warning ("%s: %s", G_STRFUNC, error);
g_free (error);
g_clear_object (&config);
return NULL;
}
g_object_set_property (G_OBJECT (config), arg_name, &value);
g_value_unset (&value);
arg_name = va_arg (args, const gchar *);
}
return_values = pika_procedure_run_config (procedure, config);
g_clear_object (&config);
return return_values;
}
/**
* pika_procedure_run_config: (rename-to pika_procedure_run)
* @procedure: a @PikaProcedure.
* @args: the @procedure's arguments.
*
* Runs the procedure, calling the run_func given in [ctor@Procedure.new].
* Runs @procedure, calling the run_func given in [ctor@Procedure.new].
*
* Returns: (transfer full): The @procedure's return values.
*
* Since: 3.0
**/
PikaValueArray *
pika_procedure_run (PikaProcedure *procedure,
PikaValueArray *args)
pika_procedure_run_config (PikaProcedure *procedure,
PikaProcedureConfig *config)
{
PikaValueArray *return_vals;
PikaValueArray *args;
g_return_val_if_fail (PIKA_IS_PROCEDURE (procedure), NULL);
g_return_val_if_fail (PIKA_IS_PROCEDURE_CONFIG (config), NULL);
g_return_val_if_fail (pika_procedure_config_get_procedure (config) == procedure, NULL);
args = pika_procedure_new_arguments (procedure);
_pika_procedure_config_get_values (config, args);
return_vals = _pika_procedure_run_array (procedure, args);
pika_value_array_unref (args);
return return_vals;
}
PikaValueArray *
_pika_procedure_run_array (PikaProcedure *procedure,
PikaValueArray *args)
{
PikaValueArray *return_vals;
GError *error = NULL;
@ -1857,8 +1985,6 @@ pika_procedure_run (PikaProcedure *procedure,
return_vals = pika_procedure_new_return_values (procedure,
PIKA_PDB_CALLING_ERROR,
error);
g_clear_error (&error);
return return_vals;
}
@ -1931,7 +2057,6 @@ pika_procedure_run (PikaProcedure *procedure,
return_vals = pika_procedure_new_return_values (procedure,
PIKA_PDB_EXECUTION_ERROR,
error);
g_clear_error (&error);
}
return return_vals;
@ -1993,6 +2118,43 @@ pika_procedure_create_config (PikaProcedure *procedure)
/* private functions */
/**
* pika_procedure_new_arguments:
* @procedure: the #PikaProcedure.
*
* Format the expected argument values of procedures, in the order as
* added with [method@Procedure.add_argument].
*
* Returns: (transfer full): the expected #PikaValueArray which could be given as
* arguments to run @procedure, with all values set to
* defaults. Free with pika_value_array_unref().
*
* Since: 3.0
**/
static PikaValueArray *
pika_procedure_new_arguments (PikaProcedure *procedure)
{
PikaValueArray *args;
GValue value = G_VALUE_INIT;
gint i;
g_return_val_if_fail (PIKA_IS_PROCEDURE (procedure), NULL);
args = pika_value_array_new (procedure->priv->n_args);
for (i = 0; i < procedure->priv->n_args; i++)
{
GParamSpec *pspec = procedure->priv->args[i];
g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
g_param_value_set_default (pspec, &value);
pika_value_array_append (args, &value);
g_value_unset (&value);
}
return args;
}
static gboolean
pika_procedure_validate_args (PikaProcedure *procedure,
GParamSpec **param_specs,

View File

@ -38,7 +38,7 @@ G_BEGIN_DECLS
/**
* PikaRunFunc:
* @procedure: the #PikaProcedure that runs.
* @args: the @procedure's arguments.
* @config: the @procedure's arguments in a config object.
* @run_data: (closure): the run_data given in pika_procedure_new().
*
* The run function is run during the lifetime of the PIKA session,
@ -48,9 +48,9 @@ G_BEGIN_DECLS
*
* Since: 3.0
**/
typedef PikaValueArray * (* PikaRunFunc) (PikaProcedure *procedure,
const PikaValueArray *args,
gpointer run_data);
typedef PikaValueArray * (* PikaRunFunc) (PikaProcedure *procedure,
PikaProcedureConfig *config,
gpointer run_data);
/**
@ -76,6 +76,7 @@ typedef enum
#define PIKA_IS_PROCEDURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_PROCEDURE))
#define PIKA_PROCEDURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIKA_TYPE_PROCEDURE, PikaProcedureClass))
G_DEFINE_AUTOPTR_CLEANUP_FUNC (PikaProcedure, g_object_unref);
typedef struct _PikaProcedureClass PikaProcedureClass;
typedef struct _PikaProcedurePrivate PikaProcedurePrivate;
@ -233,13 +234,18 @@ void pika_procedure_set_argument_sync (PikaProcedure *proced
PikaArgumentSync pika_procedure_get_argument_sync (PikaProcedure *procedure,
const gchar *arg_name);
PikaValueArray * pika_procedure_new_arguments (PikaProcedure *procedure);
PikaValueArray * pika_procedure_new_return_values (PikaProcedure *procedure,
PikaPDBStatusType status,
GError *error);
PikaValueArray * pika_procedure_run (PikaProcedure *procedure,
PikaValueArray *args);
const gchar *first_arg_name,
...) G_GNUC_NULL_TERMINATED;
PikaValueArray * pika_procedure_run_valist (PikaProcedure *procedure,
const gchar *first_arg_name,
va_list args);
PikaValueArray * pika_procedure_run_config (PikaProcedure *procedure,
PikaProcedureConfig *config);
void pika_procedure_extension_ready (PikaProcedure *procedure);
@ -247,6 +253,12 @@ PikaProcedureConfig *
pika_procedure_create_config (PikaProcedure *procedure);
/* Internal use */
G_GNUC_INTERNAL PikaValueArray * _pika_procedure_run_array (PikaProcedure *procedure,
PikaValueArray *args);
G_END_DECLS
#endif /* __PIKA_PROCEDURE_H__ */

View File

@ -22,7 +22,35 @@
#ifndef __PIKA_PROCEDURE_CONFIG_PRIVATE_H__
#define __PIKA_PROCEDURE_CONFIG_PRIVATE_H__
G_BEGIN_DECLS
void _pika_procedure_config_get_values (PikaProcedureConfig *config,
PikaValueArray *values);
void _pika_procedure_config_begin_run (PikaProcedureConfig *config,
PikaImage *image,
PikaRunMode run_mode,
const PikaValueArray *args);
void _pika_procedure_config_end_run (PikaProcedureConfig *config,
PikaPDBStatusType status);
PikaMetadata *
_pika_procedure_config_begin_export (PikaProcedureConfig *config,
PikaImage *original_image,
PikaRunMode run_mode,
const PikaValueArray *args,
const gchar *mime_type);
void _pika_procedure_config_end_export (PikaProcedureConfig *config,
PikaImage *exported_image,
GFile *file,
PikaPDBStatusType status);
/* These 3 functions are not marked internal because they are used in libpikaui.
* The headers is not installed so these functions should be considered not
* existing. Yet they are still exported in the library.
*/
gboolean pika_procedure_config_has_default (PikaProcedureConfig *config);
gboolean pika_procedure_config_load_default (PikaProcedureConfig *config,
@ -30,17 +58,7 @@ gboolean pika_procedure_config_load_default (PikaProcedureConfig *config,
gboolean pika_procedure_config_save_default (PikaProcedureConfig *config,
GError **error);
gboolean pika_procedure_config_load_last (PikaProcedureConfig *config,
GError **error);
gboolean pika_procedure_config_save_last (PikaProcedureConfig *config,
GError **error);
gboolean pika_procedure_config_load_parasite (PikaProcedureConfig *config,
PikaImage *image,
GError **error);
gboolean pika_procedure_config_save_parasite (PikaProcedureConfig *config,
PikaImage *image,
GError **error);
G_END_DECLS
#endif /* __PIKA_PROCEDURE_CONFIG_PRIVATE_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -70,34 +70,18 @@ GType pika_procedure_config_get_type (void) G_GNUC_CONST;
PikaProcedure *
pika_procedure_config_get_procedure (PikaProcedureConfig *config);
void pika_procedure_config_set_values (PikaProcedureConfig *config,
const PikaValueArray *values);
void pika_procedure_config_get_values (PikaProcedureConfig *config,
PikaValueArray *values);
void pika_procedure_config_begin_run (PikaProcedureConfig *config,
PikaImage *image,
PikaRunMode run_mode,
const PikaValueArray *args);
void pika_procedure_config_end_run (PikaProcedureConfig *config,
PikaPDBStatusType status);
PikaMetadata *
pika_procedure_config_begin_export (PikaProcedureConfig *config,
PikaImage *original_image,
PikaRunMode run_mode,
const PikaValueArray *args,
const gchar *mime_type);
void pika_procedure_config_end_export (PikaProcedureConfig *config,
PikaImage *exported_image,
GFile *file,
PikaPDBStatusType status);
void pika_procedure_config_save_metadata (PikaProcedureConfig *config,
PikaImage *exported_image,
GFile *file);
/* Utility functions */
gint pika_procedure_config_get_choice_id (PikaProcedureConfig *config,
const gchar *property_name);
G_END_DECLS
#endif /* __PIKA_PROCEDURE_CONFIG_H__ */

View File

@ -30,9 +30,10 @@
#include "libpikawidgets/pikawidgets.h"
#include "libpika/pikapropchooser-private.h"
#include "libpika/pikapropwidgets.h"
#include "pika.h"
#include "pikapropwidgets.h"
#include "pikaui.h"
#include "pikaprocedureconfig-private.h"
@ -61,6 +62,7 @@ struct _PikaProcedureDialogPrivate
PikaProcedureConfig *config;
PikaProcedureConfig *initial_config;
GtkWidget *ok_button;
GtkWidget *reset_popover;
GtkWidget *load_settings_button;
@ -81,6 +83,15 @@ typedef struct PikaProcedureDialogSensitiveData
gboolean config_invert;
} PikaProcedureDialogSensitiveData;
typedef struct PikaProcedureDialogSensitiveData2
{
PikaProcedureDialog *dialog;
gchar *widget_property;
PikaValueArray *values;
gboolean in_values;
} PikaProcedureDialogSensitiveData2;
static GObject * pika_procedure_dialog_constructor (GType type,
guint n_construct_properties,
@ -120,7 +131,11 @@ static GtkWidget *
GtkContainer *container,
GList *properties);
static void pika_procedure_dialog_sensitive_data_free (PikaProcedureDialogSensitiveData *data);
static void pika_procedure_dialog_set_sensitive_if_in_cb (GObject *config,
GParamSpec *param_spec,
PikaProcedureDialogSensitiveData2 *data);
static void pika_procedure_dialog_sensitive_data_free (PikaProcedureDialogSensitiveData *data);
static void pika_procedure_dialog_sensitive_cb_data_free (PikaProcedureDialogSensitiveData2 *data);
G_DEFINE_TYPE_WITH_PRIVATE (PikaProcedureDialog, pika_procedure_dialog,
@ -195,9 +210,13 @@ pika_procedure_dialog_constructor (GType type,
gboolean use_header_bar_edited = FALSE;
gboolean help_func_edited = FALSE;
g_object_get (gtk_settings_get_default (),
"gtk-dialogs-use-header", &use_header_bar,
NULL);
if (gtk_settings_get_default () != NULL)
g_object_get (gtk_settings_get_default (),
"gtk-dialogs-use-header", &use_header_bar,
NULL);
else
g_warning ("%s: no default screen. Did you call pika_ui_init()?", G_STRFUNC);
for (guint i = 0; i < n_construct_properties; i++)
{
@ -310,6 +329,7 @@ pika_procedure_dialog_constructed (GObject *object)
pika_procedure_dialog_check_mnemonic (PIKA_PROCEDURE_DIALOG (dialog), button, NULL, "cancel");
button = pika_dialog_add_button (PIKA_DIALOG (dialog),
ok_label, GTK_RESPONSE_OK);
dialog->priv->ok_button = button;
pika_procedure_dialog_check_mnemonic (PIKA_PROCEDURE_DIALOG (dialog), button, NULL, "ok");
/* OK button is the default action and has focus from start.
* This allows to just accept quickly whatever default values.
@ -487,11 +507,6 @@ pika_procedure_dialog_real_fill_list (PikaProcedureDialog *dialog,
widget = pika_procedure_dialog_get_widget (dialog, iter->data, G_TYPE_NONE);
if (widget)
{
/* Reference the widget because the hash table will
* unreference it anyway when getting destroyed so we don't
* want to give the only reference to the parent widget.
*/
g_object_ref (widget);
gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0);
gtk_widget_show (widget);
}
@ -537,6 +552,34 @@ pika_procedure_dialog_new (PikaProcedure *procedure,
NULL);
}
/**
* pika_procedure_dialog_set_ok_label:
* @dialog: the associated #PikaProcedureDialog.
* @ok_label: a label to replace the OK button's text.
*
* Changes the "OK" button's label of @dialog to @ok_label.
*/
void
pika_procedure_dialog_set_ok_label (PikaProcedureDialog *dialog,
const gchar *ok_label)
{
if (ok_label == NULL)
{
PikaProcedure *procedure = dialog->priv->procedure;
if (PIKA_IS_LOAD_PROCEDURE (procedure))
ok_label = _("_Open");
else if (PIKA_IS_SAVE_PROCEDURE (procedure))
ok_label = _("_Export");
else
ok_label = _("_OK");
}
gtk_button_set_label (GTK_BUTTON (dialog->priv->ok_button), ok_label);
pika_procedure_dialog_check_mnemonic (PIKA_PROCEDURE_DIALOG (dialog),
dialog->priv->ok_button, NULL, "ok");
}
/**
* pika_procedure_dialog_get_widget:
* @dialog: the associated #PikaProcedureDialog.
@ -731,27 +774,40 @@ pika_procedure_dialog_get_widget (PikaProcedureDialog *dialog,
property, NULL,
GTK_FILE_CHOOSER_ACTION_OPEN);
}
else if (G_PARAM_SPEC_TYPE (pspec) == PIKA_TYPE_PARAM_CHOICE)
{
widget = pika_prop_choice_combo_box_new (G_OBJECT (dialog->priv->config), property);
gtk_widget_set_vexpand (widget, FALSE);
gtk_widget_set_hexpand (widget, TRUE);
widget = pika_label_string_widget_new (g_param_spec_get_nick (pspec), widget);
}
/* PikaResource subclasses */
/* FUTURE: title the chooser more specifically, with a prefix that is the nick of the property. */
else if (G_IS_PARAM_SPEC_OBJECT (pspec) && pspec->value_type == PIKA_TYPE_BRUSH)
{
widget = pika_prop_chooser_brush_new (G_OBJECT (dialog->priv->config), property, _("Brush Chooser"));
widget = pika_prop_brush_chooser_new (G_OBJECT (dialog->priv->config), property, _("Brush Chooser"));
}
else if (G_IS_PARAM_SPEC_OBJECT (pspec) && pspec->value_type == PIKA_TYPE_FONT)
{
widget = pika_prop_chooser_font_new (G_OBJECT (dialog->priv->config), property, _("Font Chooser"));
widget = pika_prop_font_chooser_new (G_OBJECT (dialog->priv->config), property, _("Font Chooser"));
}
else if (G_IS_PARAM_SPEC_OBJECT (pspec) && pspec->value_type == PIKA_TYPE_GRADIENT)
{
widget = pika_prop_chooser_gradient_new (G_OBJECT (dialog->priv->config), property, _("Gradient Chooser"));
widget = pika_prop_gradient_chooser_new (G_OBJECT (dialog->priv->config), property, _("Gradient Chooser"));
}
else if (G_IS_PARAM_SPEC_OBJECT (pspec) && pspec->value_type == PIKA_TYPE_PALETTE)
{
widget = pika_prop_chooser_palette_new (G_OBJECT (dialog->priv->config), property, _("Palette Chooser"));
widget = pika_prop_palette_chooser_new (G_OBJECT (dialog->priv->config), property, _("Palette Chooser"));
}
else if (G_IS_PARAM_SPEC_OBJECT (pspec) && pspec->value_type == PIKA_TYPE_PATTERN)
{
widget = pika_prop_chooser_pattern_new (G_OBJECT (dialog->priv->config), property, _("Pattern Chooser"));
widget = pika_prop_pattern_chooser_new (G_OBJECT (dialog->priv->config), property, _("Pattern Chooser"));
}
else if (G_IS_PARAM_SPEC_OBJECT (pspec) && (pspec->value_type == PIKA_TYPE_DRAWABLE ||
pspec->value_type == PIKA_TYPE_LAYER ||
pspec->value_type == PIKA_TYPE_CHANNEL))
{
widget = pika_prop_drawable_chooser_new (G_OBJECT (dialog->priv->config), property, NULL);
}
else if (G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_ENUM)
{
@ -786,15 +842,21 @@ pika_procedure_dialog_get_widget (PikaProcedureDialog *dialog,
else
{
const gchar *tooltip = g_param_spec_get_blurb (pspec);
if (tooltip)
pika_help_set_help_data (widget, tooltip, NULL);
if (PIKA_IS_LABELED (widget) || label)
{
if (! label)
label = pika_labeled_get_label (PIKA_LABELED (widget));
gtk_size_group_add_widget (dialog->priv->label_group, label);
if (label == NULL)
{
if (PIKA_IS_LABELED (widget))
label = pika_labeled_get_label (PIKA_LABELED (widget));
else if (PIKA_IS_RESOURCE_CHOOSER (widget))
label = pika_resource_chooser_get_label (PIKA_RESOURCE_CHOOSER (widget));
else if (PIKA_IS_DRAWABLE_CHOOSER (widget))
label = pika_drawable_chooser_get_label (PIKA_DRAWABLE_CHOOSER (widget));
}
if (label != NULL)
gtk_size_group_add_widget (dialog->priv->label_group, label);
}
if ((binding = g_hash_table_lookup (dialog->priv->sensitive_data, property)))
@ -1317,17 +1379,23 @@ pika_procedure_dialog_get_size_entry (PikaProcedureDialog *dialog,
/**
* pika_procedure_dialog_get_label:
* @dialog: the #PikaProcedureDialog.
* @label_id: the label for the #GtkLabel.
* @text: the text for the label.
* @dialog: the #PikaProcedureDialog.
* @label_id: the label for the #GtkLabel.
* @text: the text for the label.
* @is_markup: whether @text is formatted with Pango markup.
* @with_mnemonic: whether @text contains a mnemonic character.
*
* Creates a new #GtkLabel with @text. It can be useful for packing
* textual information in between property settings.
*
* The @label_id must be a unique ID which is neither the name of a
* property of the #PikaProcedureConfig associated to @dialog, nor is it
* the ID of any previously created label or container. This ID can
* later be used together with property names to be packed in other
* If @label_id is an existing string property of the #PikaProcedureConfig
* associated to @dialog, then it will sync to the property value. In this case,
* @text should be %NULL.
*
* If @label_id is a unique ID which is neither the name of a property of the
* #PikaProcedureConfig associated to @dialog, nor is it the ID of any
* previously created label or container, it will be initialized to @text. This
* ID can later be used together with property names to be packed in other
* containers or inside @dialog itself.
*
* Returns: (transfer none): the #GtkWidget representing @label_id. The
@ -1337,16 +1405,21 @@ pika_procedure_dialog_get_size_entry (PikaProcedureDialog *dialog,
GtkWidget *
pika_procedure_dialog_get_label (PikaProcedureDialog *dialog,
const gchar *label_id,
const gchar *text)
const gchar *text,
gboolean is_markup,
gboolean with_mnemonic)
{
GtkWidget *label;
GtkWidget *label;
GParamSpec *pspec;
g_return_val_if_fail (label_id != NULL, NULL);
if (g_object_class_find_property (G_OBJECT_GET_CLASS (dialog->priv->config),
label_id))
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (dialog->priv->config),
label_id);
if (pspec != NULL && G_PARAM_SPEC_TYPE (pspec) != G_TYPE_PARAM_STRING)
{
g_warning ("%s: label identifier '%s' cannot be an existing property name.",
g_warning ("%s: label identifier '%s' must either not already exist or "
"be an existing string property.",
G_STRFUNC, label_id);
return NULL;
}
@ -1358,7 +1431,18 @@ pika_procedure_dialog_get_label (PikaProcedureDialog *dialog,
return label;
}
label = gtk_label_new (text);
label = gtk_label_new (NULL);
g_object_set (label,
"use-markup", is_markup,
"use-underline", with_mnemonic,
NULL);
if (pspec != NULL)
g_object_bind_property (dialog->priv->config, label_id,
label, "label",
G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
else
g_object_set (label, "label", text, NULL);
g_hash_table_insert (dialog->priv->widgets, g_strdup (label_id), label);
if (g_object_is_floating (label))
g_object_ref_sink (label);
@ -1539,6 +1623,8 @@ pika_procedure_dialog_fill_list (PikaProcedureDialog *dialog,
if (properties)
free_properties = TRUE;
g_free (pspecs);
}
PIKA_PROCEDURE_DIALOG_GET_CLASS (dialog)->fill_list (dialog,
@ -1800,7 +1886,6 @@ pika_procedure_dialog_fill_frame (PikaProcedureDialog *dialog,
return frame;
}
g_object_ref (contents);
gtk_container_add (GTK_CONTAINER (frame), contents);
gtk_widget_show (contents);
}
@ -1815,7 +1900,6 @@ pika_procedure_dialog_fill_frame (PikaProcedureDialog *dialog,
return frame;
}
g_object_ref (title);
gtk_frame_set_label_widget (GTK_FRAME (frame), title);
gtk_widget_show (title);
@ -1905,7 +1989,6 @@ pika_procedure_dialog_fill_expander (PikaProcedureDialog *dialog,
return expander;
}
g_object_ref (contents);
gtk_container_add (GTK_CONTAINER (expander), contents);
gtk_widget_show (contents);
}
@ -1920,7 +2003,6 @@ pika_procedure_dialog_fill_expander (PikaProcedureDialog *dialog,
return expander;
}
g_object_ref (title);
gtk_expander_set_label_widget (GTK_EXPANDER (expander), title);
gtk_expander_set_resize_toplevel (GTK_EXPANDER (expander), TRUE);
gtk_widget_show (title);
@ -2002,6 +2084,212 @@ pika_procedure_dialog_fill_scrolled_window (PikaProcedureDialog *dialog,
return scrolled_window;
}
/**
* pika_procedure_dialog_fill_notebook:
* @dialog: the #PikaProcedureDialog.
* @container_id: a container identifier.
* @label_id: the first page's label.
* @page_id: the first page's contents.
* @...: a %NULL-terminated list of other property names.
*
* Creates and populates a new #GtkNotebook with widgets corresponding to every
* listed properties.
* This is similar of how pika_procedure_dialog_fill() works except that it
* creates a new widget which is not inside @dialog itself.
*
* The @container_id must be a unique ID which is neither the name of a
* property of the #PikaProcedureConfig associated to @dialog, nor is it
* the ID of any previously created container. This ID can later be used
* together with property names to be packed in other containers or
* inside @dialog itself.
*
* Returns: (transfer none): the #GtkNotebook representing @property. The
* object belongs to @dialog and must not be
* freed.
*/
GtkWidget *
pika_procedure_dialog_fill_notebook (PikaProcedureDialog *dialog,
const gchar *container_id,
const gchar *label_id,
const gchar *page_id,
...)
{
GtkWidget *notebook;
GList *label_list = NULL;
GList *page_list = NULL;
va_list va_args;
g_return_val_if_fail (PIKA_IS_PROCEDURE_DIALOG (dialog), NULL);
g_return_val_if_fail (container_id != NULL, NULL);
g_return_val_if_fail (label_id != NULL && page_id != NULL, NULL);
va_start (va_args, page_id);
do
{
label_list = g_list_prepend (label_list, (gpointer) label_id);
page_list = g_list_prepend (page_list, (gpointer) page_id);
label_id = va_arg (va_args, const gchar *);
page_id = va_arg (va_args, const gchar *);
}
while (label_id != NULL && page_id != NULL);
va_end (va_args);
label_list = g_list_reverse (label_list);
page_list = g_list_reverse (page_list);
notebook = pika_procedure_dialog_fill_notebook_list (dialog, container_id, label_list, page_list);
g_list_free (label_list);
g_list_free (page_list);
return notebook;
}
/**
* pika_procedure_dialog_fill_notebook_list: (rename-to pika_procedure_dialog_fill_notebook)
* @dialog: the #PikaProcedureDialog.
* @container_id: a container identifier.
* @label_list: (not nullable) (element-type gchar*): the list of label IDs.
* @page_list: (not nullable) (element-type gchar*): the list of page IDs.
*
* Creates and populates a new #GtkNotebook with widgets corresponding to every
* listed properties.
* This is similar of how pika_procedure_dialog_fill_list() works except that it
* creates a new widget which is not inside @dialog itself.
*
* The @container_id must be a unique ID which is neither the name of a
* property of the #PikaProcedureConfig associated to @dialog, nor is it
* the ID of any previously created container. This ID can later be used
* together with property names to be packed in other containers or
* inside @dialog itself.
*
* Returns: (transfer none): the #GtkNotebook representing @property. The
* object belongs to @dialog and must not be
* freed.
*/
GtkWidget *
pika_procedure_dialog_fill_notebook_list (PikaProcedureDialog *dialog,
const gchar *container_id,
GList *label_list,
GList *page_list)
{
GtkWidget *notebook;
GList *iter_label = label_list;
GList *iter_page = page_list;
g_return_val_if_fail (container_id != NULL, NULL);
g_return_val_if_fail (g_list_length (label_list) > 0 &&
g_list_length (label_list) == g_list_length (page_list), NULL);
if (g_object_class_find_property (G_OBJECT_GET_CLASS (dialog->priv->config),
container_id))
{
g_warning ("%s: container identifier '%s' cannot be an existing property name.",
G_STRFUNC, container_id);
return NULL;
}
if (g_hash_table_lookup (dialog->priv->widgets, container_id))
{
g_warning ("%s: container identifier '%s' was already configured.",
G_STRFUNC, container_id);
return g_hash_table_lookup (dialog->priv->widgets, container_id);
}
notebook = gtk_notebook_new ();
g_object_ref_sink (notebook);
for (; iter_label; iter_label = iter_label->next, iter_page = iter_page->next)
{
GtkWidget *label;
GtkWidget *page;
label = pika_procedure_dialog_get_widget (dialog, iter_label->data, G_TYPE_NONE);
page = pika_procedure_dialog_get_widget (dialog, iter_page->data, G_TYPE_NONE);
if (label != NULL && page != NULL)
{
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
gtk_widget_show (label);
gtk_widget_show (page);
}
}
g_hash_table_insert (dialog->priv->widgets, g_strdup (container_id), notebook);
return notebook;
}
/**
* pika_procedure_dialog_fill_paned:
* @dialog: the #PikaProcedureDialog.
* @container_id: a container identifier.
* @child1_id: (nullable): the first child's ID.
* @child2_id: (nullable): the second child's ID.
*
* Creates and populates a new #GtkPaned containing widgets corresponding to
* @child1_id and @child2_id.
* This is similar of how pika_procedure_dialog_fill() works except that it
* creates a new widget which is not inside @dialog itself.
*
* The @container_id must be a unique ID which is neither the name of a
* property of the #PikaProcedureConfig associated to @dialog, nor is it
* the ID of any previously created container. This ID can later be used
* together with property names to be packed in other containers or
* inside @dialog itself.
*
* Returns: (transfer none): the #GtkPaned representing @property. The
* object belongs to @dialog and must not be
* freed.
*/
GtkWidget *
pika_procedure_dialog_fill_paned (PikaProcedureDialog *dialog,
const gchar *container_id,
GtkOrientation orientation,
const gchar *child1_id,
const gchar *child2_id)
{
GtkWidget *paned;
GtkWidget *child1;
GtkWidget *child2;
g_return_val_if_fail (container_id != NULL, NULL);
if (g_object_class_find_property (G_OBJECT_GET_CLASS (dialog->priv->config),
container_id))
{
g_warning ("%s: container identifier '%s' cannot be an existing property name.",
G_STRFUNC, container_id);
return NULL;
}
if (g_hash_table_lookup (dialog->priv->widgets, container_id))
{
g_warning ("%s: container identifier '%s' was already configured.",
G_STRFUNC, container_id);
return g_hash_table_lookup (dialog->priv->widgets, container_id);
}
paned = gtk_paned_new (orientation);
g_object_ref_sink (paned);
if (child1_id != NULL)
{
child1 = pika_procedure_dialog_get_widget (dialog, child1_id, G_TYPE_NONE);
gtk_paned_pack1 (GTK_PANED (paned), child1, TRUE, FALSE);
gtk_widget_show (child1);
}
if (child2_id != NULL)
{
child2 = pika_procedure_dialog_get_widget (dialog, child2_id, G_TYPE_NONE);
gtk_paned_pack2 (GTK_PANED (paned), child2, TRUE, FALSE);
gtk_widget_show (child2);
}
g_hash_table_insert (dialog->priv->widgets, g_strdup (container_id), paned);
return paned;
}
/**
* pika_procedure_dialog_set_sensitive:
@ -2093,6 +2381,82 @@ pika_procedure_dialog_set_sensitive (PikaProcedureDialog *dialog,
}
}
/**
* pika_procedure_dialog_set_sensitive_if_in:
* @dialog: the #PikaProcedureDialog.
* @property: name of a property of the #PikaProcedure @dialog
* has been created for.
* @config: (nullable): an optional config object (if %NULL,
* @property's config will be used).
* @config_property: name of a property of @config.
* @values: (not nullable) (transfer full):
* an array of GValues which could be values of @config_property.
* @in_values: whether @property should be sensitive when @config_property
* is one of @values, or the opposite.
*
* Sets sensitivity of the widget associated to @property in @dialog if the
* value of @config_property in @config is equal to one of @values.
*
* If @config is %NULL, then the configuration object of @dialog is used.
*
* If @in_values is FALSE, then the widget is set sensitive if the value of
* @config_property is **not** in @values.
*/
void
pika_procedure_dialog_set_sensitive_if_in (PikaProcedureDialog *dialog,
const gchar *property,
GObject *config,
const gchar *config_property,
PikaValueArray *values,
gboolean in_values)
{
PikaProcedureDialogSensitiveData2 *data;
GParamSpec *pspec;
gchar *signal_name;
g_return_if_fail (PIKA_IS_PROCEDURE_DIALOG (dialog));
g_return_if_fail (property != NULL);
g_return_if_fail (config_property != NULL);
g_return_if_fail (values != NULL);
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (dialog->priv->config),
property);
if (! pspec)
{
g_warning ("%s: parameter %s does not exist on the PikaProcedure.",
G_STRFUNC, property);
return;
}
if (! config)
config = G_OBJECT (dialog->priv->config);
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config),
config_property);
if (! pspec)
{
g_warning ("%s: parameter %s does not exist on the config object.",
G_STRFUNC, config_property);
return;
}
data = g_new (PikaProcedureDialogSensitiveData2, 1);
data->dialog = dialog;
data->widget_property = g_strdup (property);
data->values = values;
data->in_values = in_values;
signal_name = g_strconcat ("notify::", config_property, NULL);
g_signal_connect_data (config, signal_name,
G_CALLBACK (pika_procedure_dialog_set_sensitive_if_in_cb),
data,
(GClosureNotify) pika_procedure_dialog_sensitive_cb_data_free,
0);
pika_procedure_dialog_set_sensitive_if_in_cb (config, pspec, data);
g_free (signal_name);
}
/**
* pika_procedure_dialog_run:
* @dialog: the #PikaProcedureDialog.
@ -2234,6 +2598,14 @@ pika_procedure_dialog_check_mnemonic (PikaProcedureDialog *dialog,
{
label = pika_labeled_get_label (PIKA_LABELED (widget));
}
else if (PIKA_IS_RESOURCE_CHOOSER (widget))
{
label = pika_resource_chooser_get_label (PIKA_RESOURCE_CHOOSER (widget));
}
else if (PIKA_IS_DRAWABLE_CHOOSER (widget))
{
label = pika_drawable_chooser_get_label (PIKA_DRAWABLE_CHOOSER (widget));
}
else
{
GList *labels = gtk_widget_list_mnemonic_labels (widget);
@ -2374,6 +2746,8 @@ pika_procedure_dialog_fill_container_list (PikaProcedureDialog *dialog,
if (properties)
free_properties = TRUE;
g_free (pspecs);
}
sz_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
@ -2384,11 +2758,6 @@ pika_procedure_dialog_fill_container_list (PikaProcedureDialog *dialog,
widget = pika_procedure_dialog_get_widget (dialog, iter->data, G_TYPE_NONE);
if (widget)
{
/* Reference the widget because the hash table will
* unreference it anyway when getting destroyed so we don't
* want to give the only reference to the parent widget.
*/
g_object_ref (widget);
gtk_container_add (container, widget);
if (PIKA_IS_LABELED (widget))
{
@ -2411,6 +2780,49 @@ pika_procedure_dialog_fill_container_list (PikaProcedureDialog *dialog,
return GTK_WIDGET (container);
}
static void
pika_procedure_dialog_set_sensitive_if_in_cb (GObject *config,
GParamSpec *param_spec,
PikaProcedureDialogSensitiveData2 *data)
{
PikaProcedureDialog *dialog = data->dialog;
GtkWidget *widget;
widget = g_hash_table_lookup (dialog->priv->widgets, data->widget_property);
if (widget)
{
GValue param_value = G_VALUE_INIT;
gboolean sensitive;
gint n_values = pika_value_array_length (data->values);
g_value_init (&param_value, param_spec->value_type);
g_object_get_property (config, param_spec->name, &param_value);
sensitive = (! data->in_values);
for (gint i = 0; i < n_values; i++)
{
GValue *value;
value = pika_value_array_index (data->values, i);
if (g_param_values_cmp (param_spec, &param_value, value) == 0)
{
sensitive = data->in_values;
break;
}
}
gtk_widget_set_sensitive (widget, sensitive);
g_value_unset (&param_value);
}
else
{
g_printerr ("pika_procedure_dialog_set_sensitive_if_in: "
"no widget was created for property \"%s\".\n",
data->widget_property);
}
}
static void
pika_procedure_dialog_sensitive_data_free (PikaProcedureDialogSensitiveData *data)
{
@ -2419,3 +2831,12 @@ pika_procedure_dialog_sensitive_data_free (PikaProcedureDialogSensitiveData *dat
g_slice_free (PikaProcedureDialogSensitiveData, data);
}
static void
pika_procedure_dialog_sensitive_cb_data_free (PikaProcedureDialogSensitiveData2 *data)
{
g_free (data->widget_property);
pika_value_array_unref (data->values);
g_free (data);
}

View File

@ -78,6 +78,8 @@ GType pika_procedure_dialog_get_type (void) G_GNUC_CONST;
GtkWidget * pika_procedure_dialog_new (PikaProcedure *procedure,
PikaProcedureConfig *config,
const gchar *title);
void pika_procedure_dialog_set_ok_label (PikaProcedureDialog *dialog,
const gchar *ok_label);
GtkWidget * pika_procedure_dialog_get_widget (PikaProcedureDialog *dialog,
const gchar *property,
@ -108,7 +110,9 @@ GtkWidget * pika_procedure_dialog_get_size_entry (PikaProcedureDialog *dialog
gdouble resolution);
GtkWidget * pika_procedure_dialog_get_label (PikaProcedureDialog *dialog,
const gchar *label_id,
const gchar *text);
const gchar *text,
gboolean is_markup,
gboolean with_mnemonic);
GtkWidget * pika_procedure_dialog_get_file_chooser (PikaProcedureDialog *dialog,
const gchar *property,
GtkFileChooserAction action);
@ -141,9 +145,26 @@ GtkWidget * pika_procedure_dialog_fill_expander (PikaProcedureDialog *dialog
const gchar *contents_id);
GtkWidget * pika_procedure_dialog_fill_scrolled_window
(PikaProcedureDialog *dialog,
const gchar *container_id,
const gchar *contents_id);
(PikaProcedureDialog *dialog,
const gchar *container_id,
const gchar *contents_id);
GtkWidget * pika_procedure_dialog_fill_notebook (PikaProcedureDialog *dialog,
const gchar *container_id,
const gchar *label_id,
const gchar *page_id,
...) G_GNUC_NULL_TERMINATED;
GtkWidget * pika_procedure_dialog_fill_notebook_list
(PikaProcedureDialog *dialog,
const gchar *container_id,
GList *label_list,
GList *page_list);
GtkWidget * pika_procedure_dialog_fill_paned (PikaProcedureDialog *dialog,
const gchar *container_id,
GtkOrientation orientation,
const gchar *child1_id,
const gchar *child2_id);
void pika_procedure_dialog_fill (PikaProcedureDialog *dialog,
...) G_GNUC_NULL_TERMINATED;
@ -157,6 +178,13 @@ void pika_procedure_dialog_set_sensitive (PikaProcedureDialog *dialog
const gchar *config_property,
gboolean config_invert);
void pika_procedure_dialog_set_sensitive_if_in (PikaProcedureDialog *dialog,
const gchar *property,
GObject *config,
const gchar *config_property,
PikaValueArray *values,
gboolean in_values);
gboolean pika_procedure_dialog_run (PikaProcedureDialog *dialog);

View File

@ -365,6 +365,7 @@ pika_proc_view_create_args (PikaProcedure *procedure,
/* description */
label = gtk_label_new (blurb);
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_label_set_selectable (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
gtk_label_set_yalign (GTK_LABEL (label), 0.0);

View File

@ -40,11 +40,11 @@ typedef struct
/* local function prototypes */
static void pika_progress_data_free (PikaProgressData *data);
static void pika_progress_data_free (PikaProgressData *data);
static PikaValueArray * pika_temp_progress_run (PikaProcedure *procedure,
const PikaValueArray *args,
gpointer run_data);
static PikaValueArray * pika_temp_progress_run (PikaProcedure *procedure,
PikaProcedureConfig *config,
gpointer run_data);
/* private variables */
@ -89,15 +89,15 @@ pika_progress_install_vtable (const PikaProgressVtable *vtable,
progress_data = g_slice_new0 (PikaProgressData);
progress_data->progress_callback = progress_callback;
progress_data->vtable.start = vtable->start;
progress_data->vtable.end = vtable->end;
progress_data->vtable.set_text = vtable->set_text;
progress_data->vtable.set_value = vtable->set_value;
progress_data->vtable.pulse = vtable->pulse;
progress_data->vtable.get_window = vtable->get_window;
progress_data->data = user_data;
progress_data->data_destroy = user_data_destroy;
progress_data->progress_callback = progress_callback;
progress_data->vtable.start = vtable->start;
progress_data->vtable.end = vtable->end;
progress_data->vtable.set_text = vtable->set_text;
progress_data->vtable.set_value = vtable->set_value;
progress_data->vtable.pulse = vtable->pulse;
progress_data->vtable.get_window_handle = vtable->get_window_handle;
progress_data->data = user_data;
progress_data->data_destroy = user_data_destroy;
procedure = pika_procedure_new (plug_in,
progress_callback,
@ -340,18 +340,20 @@ pika_progress_data_free (PikaProgressData *data)
}
static PikaValueArray *
pika_temp_progress_run (PikaProcedure *procedure,
const PikaValueArray *args,
gpointer run_data)
pika_temp_progress_run (PikaProcedure *procedure,
PikaProcedureConfig *config,
gpointer run_data)
{
PikaProgressData *progress_data = run_data;
PikaProgressCommand command;
const gchar *text;
gchar *text;
gdouble value;
command = PIKA_VALUES_GET_ENUM (args, 0);
text = PIKA_VALUES_GET_STRING (args, 1);
value = PIKA_VALUES_GET_DOUBLE (args, 2);
g_object_get (config,
"command", &command,
"text", &text,
"value", &value,
NULL);
switch (command)
{
@ -382,25 +384,30 @@ pika_temp_progress_run (PikaProcedure *procedure,
case PIKA_PROGRESS_COMMAND_GET_WINDOW:
{
PikaValueArray *return_vals;
guint64 window_id = 0;
GBytes *window_handle = NULL;
if (progress_data->vtable.get_window)
window_id = progress_data->vtable.get_window (progress_data->data);
if (progress_data->vtable.get_window_handle)
window_handle = progress_data->vtable.get_window_handle (progress_data->data);
return_vals = pika_procedure_new_return_values (procedure,
PIKA_PDB_SUCCESS,
NULL);
PIKA_VALUES_SET_DOUBLE (return_vals, 1, window_id);
PIKA_VALUES_SET_BYTES (return_vals, 1, window_handle);
g_bytes_unref (window_handle);
g_free (text);
return return_vals;
}
break;
default:
g_free (text);
return pika_procedure_new_return_values (procedure,
PIKA_PDB_CALLING_ERROR,
NULL);
}
g_free (text);
return pika_procedure_new_return_values (procedure, PIKA_PDB_SUCCESS, NULL);
}

View File

@ -79,9 +79,9 @@ typedef void (* PikaProgressVtablePulseFunc) (gpointer user_data);
* PikaProgressVtableGetWindowFunc:
* @user_data: (closure): User data
*
* Returns: the ID of the window where the progress is displayed.
* Returns: the handle of the window where the progress is displayed.
*/
typedef guint64 (* PikaProgressVtableGetWindowFunc) (gpointer user_data);
typedef GBytes * (* PikaProgressVtableGetWindowFunc) (gpointer user_data);
typedef struct _PikaProgressVtable PikaProgressVtable;
@ -93,7 +93,7 @@ typedef struct _PikaProgressVtable PikaProgressVtable;
* @set_text: sets a new text on the progress.
* @set_value: sets a new percentage on the progress.
* @pulse: makes the progress pulse.
* @get_window: returns the ID of the window where the progress is displayed.
* @get_window_handle: returns the handle of the window where the progress is displayed.
* @_pika_reserved1: reserved pointer for future expansion.
* @_pika_reserved2: reserved pointer for future expansion.
* @_pika_reserved3: reserved pointer for future expansion.
@ -110,7 +110,7 @@ struct _PikaProgressVtable
PikaProgressVtableSetTextFunc set_text;
PikaProgressVtableSetValueFunc set_value;
PikaProgressVtablePulseFunc pulse;
PikaProgressVtableGetWindowFunc get_window;
PikaProgressVtableGetWindowFunc get_window_handle;
/* Padding for future expansion. Must be initialized with NULL! */
void (* _pika_reserved1) (void);

View File

@ -61,9 +61,9 @@ _pika_progress_init (const gchar *message,
PIKA_TYPE_DISPLAY, gdisplay,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-init",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-init",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -95,9 +95,9 @@ _pika_progress_update (gdouble percentage)
G_TYPE_DOUBLE, percentage,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-update",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-update",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -132,9 +132,9 @@ pika_progress_pulse (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-pulse",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-pulse",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -169,9 +169,9 @@ pika_progress_set_text (const gchar *message)
G_TYPE_STRING, message,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-set-text",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-set-text",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -204,9 +204,9 @@ pika_progress_end (void)
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-end",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-end",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -219,37 +219,40 @@ pika_progress_end (void)
/**
* pika_progress_get_window_handle:
*
* Returns the native window ID of the toplevel window this plug-in's
* Returns the native handle of the toplevel window this plug-in's
* progress is displayed in.
*
* This function returns the native window ID of the toplevel window
* this plug-in\'s progress is displayed in.
* This function returns the native handle allowing to identify the
* toplevel window this plug-in's progress is displayed in.
* This handle can be of various types (integer, string, etc.)
* depending on the platform you are running on which is why it returns
* a GBytes. There are usually no reasons to call this directly.
*
* Returns: The progress bar's toplevel window.
* Returns: (transfer full): The progress bar's toplevel window's handle.
*
* Since: 2.2
**/
gint
GBytes *
pika_progress_get_window_handle (void)
{
PikaValueArray *args;
PikaValueArray *return_vals;
gint window = 0;
GBytes *handle = NULL;
args = pika_value_array_new_from_types (NULL,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-get-window-handle",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-get-window-handle",
args);
pika_value_array_unref (args);
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
window = PIKA_VALUES_GET_INT (return_vals, 1);
handle = PIKA_VALUES_DUP_BYTES (return_vals, 1);
pika_value_array_unref (return_vals);
return window;
return handle;
}
/**
@ -278,9 +281,9 @@ _pika_progress_install (const gchar *progress_callback)
G_TYPE_STRING, progress_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-install",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-install",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -314,9 +317,9 @@ _pika_progress_uninstall (const gchar *progress_callback)
G_TYPE_STRING, progress_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-uninstall",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-uninstall",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
@ -349,9 +352,9 @@ pika_progress_cancel (const gchar *progress_callback)
G_TYPE_STRING, progress_callback,
G_TYPE_NONE);
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-cancel",
args);
return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (),
"pika-progress-cancel",
args);
pika_value_array_unref (args);
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;

View File

@ -38,7 +38,7 @@ G_GNUC_INTERNAL gboolean _pika_progress_update (gdouble percentag
gboolean pika_progress_pulse (void);
gboolean pika_progress_set_text (const gchar *message);
gboolean pika_progress_end (void);
gint pika_progress_get_window_handle (void);
GBytes* pika_progress_get_window_handle (void);
G_GNUC_INTERNAL gboolean _pika_progress_install (const gchar *progress_callback);
G_GNUC_INTERNAL gboolean _pika_progress_uninstall (const gchar *progress_callback);
gboolean pika_progress_cancel (const gchar *progress_callback);

View File

@ -21,6 +21,7 @@
#include "config.h"
#include <gegl.h>
#include <gtk/gtk.h>
#ifdef GDK_WINDOWING_WIN32
@ -35,6 +36,8 @@
#include <gdk/gdkwayland.h>
#endif
#include "libpikawidgets/pikawidgets.h"
#include "pikauitypes.h"
#include "pika.h"
@ -52,21 +55,27 @@
**/
static void pika_progress_bar_dispose (GObject *object);
static void pika_progress_bar_start (const gchar *message,
gboolean cancelable,
gpointer user_data);
static void pika_progress_bar_end (gpointer user_data);
static void pika_progress_bar_set_text (const gchar *message,
gpointer user_data);
static void pika_progress_bar_set_value (gdouble percentage,
gpointer user_data);
static void pika_progress_bar_pulse (gpointer user_data);
static guint64 pika_progress_bar_get_window (gpointer user_data);
typedef struct _PikaProgressBarPrivate
{
GBytes *window_handle;
} PikaProgressBarPrivate;
G_DEFINE_TYPE (PikaProgressBar, pika_progress_bar, GTK_TYPE_PROGRESS_BAR)
static void pika_progress_bar_dispose (GObject *object);
static void pika_progress_bar_start (const gchar *message,
gboolean cancelable,
gpointer user_data);
static void pika_progress_bar_end (gpointer user_data);
static void pika_progress_bar_set_text (const gchar *message,
gpointer user_data);
static void pika_progress_bar_set_value (gdouble percentage,
gpointer user_data);
static void pika_progress_bar_pulse (gpointer user_data);
static GBytes * pika_progress_bar_get_window_handle (gpointer user_data);
G_DEFINE_TYPE_WITH_PRIVATE (PikaProgressBar, pika_progress_bar, GTK_TYPE_PROGRESS_BAR)
#define parent_class pika_progress_bar_parent_class
@ -82,25 +91,29 @@ pika_progress_bar_class_init (PikaProgressBarClass *klass)
static void
pika_progress_bar_init (PikaProgressBar *bar)
{
PikaProgressVtable vtable = { 0, };
PikaProgressVtable vtable = { 0, };
PikaProgressBarPrivate *priv = pika_progress_bar_get_instance_private (bar);
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (bar), " ");
gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR (bar), PANGO_ELLIPSIZE_END);
vtable.start = pika_progress_bar_start;
vtable.end = pika_progress_bar_end;
vtable.set_text = pika_progress_bar_set_text;
vtable.set_value = pika_progress_bar_set_value;
vtable.pulse = pika_progress_bar_pulse;
vtable.get_window = pika_progress_bar_get_window;
vtable.start = pika_progress_bar_start;
vtable.end = pika_progress_bar_end;
vtable.set_text = pika_progress_bar_set_text;
vtable.set_value = pika_progress_bar_set_value;
vtable.pulse = pika_progress_bar_pulse;
vtable.get_window_handle = pika_progress_bar_get_window_handle;
bar->progress_callback = pika_progress_install_vtable (&vtable, bar, NULL);
pika_widget_set_native_handle (GTK_WIDGET (bar), &priv->window_handle);
}
static void
pika_progress_bar_dispose (GObject *object)
{
PikaProgressBar *bar = PIKA_PROGRESS_BAR (object);
PikaProgressBar *bar = PIKA_PROGRESS_BAR (object);
PikaProgressBarPrivate *priv = pika_progress_bar_get_instance_private (bar);
if (bar->progress_callback)
{
@ -108,6 +121,17 @@ pika_progress_bar_dispose (GObject *object)
bar->progress_callback = NULL;
}
if (priv->window_handle != NULL)
{
#ifdef GDK_WINDOWING_WAYLAND
if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ()) &&
/* The GdkWindow is likely already destroyed. */
gtk_widget_get_window (GTK_WIDGET (bar)) != NULL)
gdk_wayland_window_unexport_handle (gtk_widget_get_window (GTK_WIDGET (bar)));
#endif
g_clear_pointer (&priv->window_handle, g_bytes_unref);
}
G_OBJECT_CLASS (parent_class)->dispose (object);
}
@ -180,47 +204,13 @@ pika_progress_bar_pulse (gpointer user_data)
gtk_main_iteration ();
}
static guint64
pika_window_get_native_id (GtkWindow *window)
static GBytes *
pika_progress_bar_get_window_handle (gpointer user_data)
{
GdkWindow *surface;
PikaProgressBar *bar = PIKA_PROGRESS_BAR (user_data);
PikaProgressBarPrivate *priv = pika_progress_bar_get_instance_private (bar);
g_return_val_if_fail (GTK_IS_WINDOW (window), 0);
surface = gtk_widget_get_window (GTK_WIDGET (window));
if (!surface) /* aka window is not yet realized */
return 0;
#ifdef GDK_WINDOWING_WIN32
if (GDK_IS_WIN32_WINDOW (surface))
return GPOINTER_TO_INT (GDK_WINDOW_HWND (gtk_widget_get_window (GTK_WIDGET (window))));
#endif
#ifdef GDK_WINDOWING_X11
if (GDK_IS_X11_WINDOW (surface))
return GPOINTER_TO_INT (GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (window))));
#endif
#ifdef GDK_WINDOWING_WAYLAND
if (GDK_IS_WAYLAND_WINDOW (surface))
g_debug ("Getting window ID for progress not supported on Wayland yet");
#endif
return 0;
}
static guint64
pika_progress_bar_get_window (gpointer user_data)
{
PikaProgressBar *bar = PIKA_PROGRESS_BAR (user_data);
GtkWidget *toplevel;
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (bar));
if (GTK_IS_WINDOW (toplevel))
return pika_window_get_native_id (GTK_WINDOW (toplevel));
return 0;
return g_bytes_ref (priv->window_handle);
}
/**

View File

@ -458,58 +458,3 @@ pika_resource_is_font (PikaResource *resource)
{
return pika_resource_id_is_font (pika_resource_get_id (resource));
}
struct _PikaBrush
{
PikaResource parent_instance;
};
G_DEFINE_TYPE (PikaBrush, pika_brush, PIKA_TYPE_RESOURCE);
static void pika_brush_class_init (PikaBrushClass *klass) {}
static void pika_brush_init (PikaBrush *self) {}
struct _PikaPattern
{
PikaResource parent_instance;
};
G_DEFINE_TYPE (PikaPattern, pika_pattern, PIKA_TYPE_RESOURCE);
static void pika_pattern_class_init (PikaPatternClass *klass) {}
static void pika_pattern_init (PikaPattern *self) {}
struct _PikaGradient
{
PikaResource parent_instance;
};
G_DEFINE_TYPE (PikaGradient, pika_gradient, PIKA_TYPE_RESOURCE);
static void pika_gradient_class_init (PikaGradientClass *klass) {}
static void pika_gradient_init (PikaGradient *self) {}
struct _PikaPalette
{
PikaResource parent_instance;
};
G_DEFINE_TYPE (PikaPalette, pika_palette, PIKA_TYPE_RESOURCE);
static void pika_palette_class_init (PikaPaletteClass *klass) {}
static void pika_palette_init (PikaPalette *self) {}
struct _PikaFont
{
PikaResource parent_instance;
};
G_DEFINE_TYPE (PikaFont, pika_font, PIKA_TYPE_RESOURCE);
static void pika_font_class_init (PikaFontClass *klass) {}
static void pika_font_init (PikaFont *self) {}

View File

@ -60,22 +60,6 @@ gboolean pika_resource_is_palette (PikaResource *resource);
gboolean pika_resource_is_font (PikaResource *resource);
#define PIKA_TYPE_BRUSH (pika_brush_get_type ())
G_DECLARE_FINAL_TYPE (PikaBrush, pika_brush, PIKA, BRUSH, PikaResource)
#define PIKA_TYPE_PATTERN (pika_pattern_get_type ())
G_DECLARE_FINAL_TYPE (PikaPattern, pika_pattern, PIKA, PATTERN, PikaResource)
#define PIKA_TYPE_GRADIENT (pika_gradient_get_type ())
G_DECLARE_FINAL_TYPE (PikaGradient, pika_gradient, PIKA, GRADIENT, PikaResource)
#define PIKA_TYPE_PALETTE (pika_palette_get_type ())
G_DECLARE_FINAL_TYPE (PikaPalette, pika_palette, PIKA, PALETTE, PikaResource)
#define PIKA_TYPE_FONT (pika_font_get_type ())
G_DECLARE_FINAL_TYPE (PikaFont, pika_font, PIKA, FONT, PikaResource)
G_END_DECLS
#endif /* __PIKA_RESOURCE_H__ */

Some files were not shown because too many files have changed in this diff Show More