584 lines
17 KiB
C
584 lines
17 KiB
C
/* LIBPIKA - The PIKA Library
|
|
* Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
|
|
*
|
|
* pikaresource_pdb.c
|
|
*
|
|
* This library is free software: you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/* NOTE: This file is auto-generated by pdbgen.pl */
|
|
|
|
#include "config.h"
|
|
|
|
#include "stamp-pdbgen.h"
|
|
|
|
#include "pika.h"
|
|
|
|
|
|
/**
|
|
* SECTION: pikaresource
|
|
* @title: pikaresource
|
|
* @short_description: Functions to manipulate resources.
|
|
*
|
|
* Functions to manipulate resources.
|
|
**/
|
|
|
|
|
|
/**
|
|
* _pika_resource_get_by_name:
|
|
* @type_name: The name of the resource type.
|
|
* @resource_name: The name of the resource.
|
|
*
|
|
* Returns a resource with the given name.
|
|
*
|
|
* Returns a resource with the given name.
|
|
*
|
|
* Returns: (transfer none): The resource.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
PikaResource *
|
|
_pika_resource_get_by_name (const gchar *type_name,
|
|
const gchar *resource_name)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
PikaResource *resource = NULL;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, type_name,
|
|
G_TYPE_STRING, resource_name,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-get-by-name",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
resource = PIKA_VALUES_GET_RESOURCE (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return resource;
|
|
}
|
|
|
|
/**
|
|
* _pika_resource_get_by_identifiers:
|
|
* @type_name: The name of the resource type.
|
|
* @resource_name: The name of the resource.
|
|
* @collection: The collection identifier.
|
|
* @is_internal: Whether this is the identifier for internal data.
|
|
*
|
|
* Returns the resource contained in a given file with a given name.
|
|
*
|
|
* Returns a resource specifically stored in a given file path, under a
|
|
* given name (a single path may be a collection containing several
|
|
* resources).
|
|
*
|
|
* Returns: (transfer none): The resource.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
PikaResource *
|
|
_pika_resource_get_by_identifiers (const gchar *type_name,
|
|
const gchar *resource_name,
|
|
const gchar *collection,
|
|
gboolean is_internal)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
PikaResource *resource = NULL;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, type_name,
|
|
G_TYPE_STRING, resource_name,
|
|
G_TYPE_STRING, collection,
|
|
G_TYPE_BOOLEAN, is_internal,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-get-by-identifiers",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
resource = PIKA_VALUES_GET_RESOURCE (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return resource;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_id_is_valid:
|
|
* @resource_id: The resource ID to check.
|
|
*
|
|
* Returns TRUE if the resource ID is valid.
|
|
*
|
|
* This procedure checks if the given resource ID is valid and refers
|
|
* to an existing resource.
|
|
*
|
|
* Returns: Whether the resource ID is valid.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_id_is_valid (gint resource_id)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean valid = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_INT, resource_id,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-id-is-valid",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
valid = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return valid;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_id_is_brush:
|
|
* @resource_id: The resource ID.
|
|
*
|
|
* Returns whether the resource ID is a brush.
|
|
*
|
|
* This procedure returns TRUE if the specified resource ID is a brush.
|
|
*
|
|
* Returns: TRUE if the resource ID is a brush, FALSE otherwise.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_id_is_brush (gint resource_id)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean brush = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_INT, resource_id,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-id-is-brush",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
brush = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return brush;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_id_is_pattern:
|
|
* @resource_id: The resource ID.
|
|
*
|
|
* Returns whether the resource ID is a pattern.
|
|
*
|
|
* This procedure returns TRUE if the specified resource ID is a
|
|
* pattern.
|
|
*
|
|
* Returns: TRUE if the resource ID is a pattern, FALSE otherwise.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_id_is_pattern (gint resource_id)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean pattern = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_INT, resource_id,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-id-is-pattern",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
pattern = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return pattern;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_id_is_gradient:
|
|
* @resource_id: The resource ID.
|
|
*
|
|
* Returns whether the resource ID is a gradient.
|
|
*
|
|
* This procedure returns TRUE if the specified resource ID is a
|
|
* gradient.
|
|
*
|
|
* Returns: TRUE if the resource ID is a gradient, FALSE otherwise.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_id_is_gradient (gint resource_id)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean gradient = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_INT, resource_id,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-id-is-gradient",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
gradient = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return gradient;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_id_is_palette:
|
|
* @resource_id: The resource ID.
|
|
*
|
|
* Returns whether the resource ID is a palette.
|
|
*
|
|
* This procedure returns TRUE if the specified resource ID is a
|
|
* palette.
|
|
*
|
|
* Returns: TRUE if the resource ID is a palette, FALSE otherwise.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_id_is_palette (gint resource_id)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean palette = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_INT, resource_id,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-id-is-palette",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
palette = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return palette;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_id_is_font:
|
|
* @resource_id: The resource ID.
|
|
*
|
|
* Returns whether the resource ID is a font.
|
|
*
|
|
* This procedure returns TRUE if the specified resource ID is a font.
|
|
*
|
|
* Returns: TRUE if the resource ID is a font, FALSE otherwise.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_id_is_font (gint resource_id)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean font = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
G_TYPE_INT, resource_id,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-id-is-font",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
font = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return font;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_get_name:
|
|
* @resource: The resource.
|
|
*
|
|
* Returns the resource's name.
|
|
*
|
|
* This procedure returns the resource's name.
|
|
*
|
|
* Returns: (transfer full): The resource's name.
|
|
* The returned value must be freed with g_free().
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gchar *
|
|
pika_resource_get_name (PikaResource *resource)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gchar *name = NULL;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
PIKA_TYPE_RESOURCE, resource,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-get-name",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
name = PIKA_VALUES_DUP_STRING (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return name;
|
|
}
|
|
|
|
/**
|
|
* _pika_resource_get_identifiers:
|
|
* @resource: The resource.
|
|
* @name: (out) (transfer full): The resource's name.
|
|
* @collection_id: (out) (transfer full): The resource's collection identifier.
|
|
*
|
|
* Returns a triplet identifying the resource.
|
|
*
|
|
* This procedure returns 2 strings and a boolean. The first string is
|
|
* the resource name, similar to what you would obtain calling
|
|
* pika_resource_get_name(). The second is an opaque identifier for the
|
|
* collection this resource belongs to.
|
|
* Note: as far as PIKA is concerned, a collection of resource usually
|
|
* corresponds to a single file on disk (which may or may not contain
|
|
* several resources). Therefore the identifier may be derived from the
|
|
* local file path. Nevertheless you should not use this string as such
|
|
* as this is not guaranteed to be always the case. You should consider
|
|
* it as an opaque identifier only to be used again through
|
|
* _pika_resource_get_by_identifier().
|
|
*
|
|
* Returns: Whether this is the identifier for internal data.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
_pika_resource_get_identifiers (PikaResource *resource,
|
|
gchar **name,
|
|
gchar **collection_id)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean is_internal = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
PIKA_TYPE_RESOURCE, resource,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-get-identifiers",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
{
|
|
is_internal = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
*name = PIKA_VALUES_DUP_STRING (return_vals, 2);
|
|
*collection_id = PIKA_VALUES_DUP_STRING (return_vals, 3);
|
|
}
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return is_internal;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_is_editable:
|
|
* @resource: The resource.
|
|
*
|
|
* Whether the resource can be edited.
|
|
*
|
|
* Returns TRUE if you have permission to change the resource.
|
|
*
|
|
* Returns: TRUE if the resource can be edited.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_is_editable (PikaResource *resource)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean editable = FALSE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
PIKA_TYPE_RESOURCE, resource,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-is-editable",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
editable = PIKA_VALUES_GET_BOOLEAN (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return editable;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_duplicate:
|
|
* @resource: The resource.
|
|
*
|
|
* Duplicates a resource.
|
|
*
|
|
* Returns a copy having a different, unique ID.
|
|
*
|
|
* Returns: (transfer none): A copy of the resource.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
PikaResource *
|
|
pika_resource_duplicate (PikaResource *resource)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
PikaResource *resource_copy = NULL;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
PIKA_TYPE_RESOURCE, resource,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-duplicate",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS)
|
|
resource_copy = PIKA_VALUES_GET_RESOURCE (return_vals, 1);
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return resource_copy;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_rename:
|
|
* @resource: The resource.
|
|
* @new_name: The proposed new name of the resource.
|
|
*
|
|
* Renames a resource. When the name is in use, renames to a unique
|
|
* name.
|
|
*
|
|
* Renames a resource. When the proposed name is already used, PIKA
|
|
* generates a unique name.
|
|
*
|
|
* Returns: TRUE on success.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_rename (PikaResource *resource,
|
|
const gchar *new_name)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
PIKA_TYPE_RESOURCE, resource,
|
|
G_TYPE_STRING, new_name,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-rename",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* pika_resource_delete:
|
|
* @resource: The resource.
|
|
*
|
|
* Deletes a resource.
|
|
*
|
|
* Deletes a resource. Returns an error if the resource is not
|
|
* deletable. Deletes the resource's data. You should not use the
|
|
* resource afterwards.
|
|
*
|
|
* Returns: TRUE on success.
|
|
*
|
|
* Since: 3.0
|
|
**/
|
|
gboolean
|
|
pika_resource_delete (PikaResource *resource)
|
|
{
|
|
PikaValueArray *args;
|
|
PikaValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = pika_value_array_new_from_types (NULL,
|
|
PIKA_TYPE_RESOURCE, resource,
|
|
G_TYPE_NONE);
|
|
|
|
return_vals = pika_pdb_run_procedure_array (pika_get_pdb (),
|
|
"pika-resource-delete",
|
|
args);
|
|
pika_value_array_unref (args);
|
|
|
|
success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS;
|
|
|
|
pika_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|