mirror of https://github.com/GNOME/gimp.git
2076 lines
59 KiB
Plaintext
2076 lines
59 KiB
Plaintext
headers
|
|
#include <Python.h>
|
|
|
|
#define NO_IMPORT_PYGOBJECT
|
|
#include <pygobject.h>
|
|
|
|
#include <pycairo.h>
|
|
extern Pycairo_CAPI_t *Pycairo_CAPI;
|
|
|
|
#define GIMP_DISABLE_DEPRECATION_WARNINGS
|
|
#include <libgimp/gimp.h>
|
|
#undef GIMP_DISABLE_DEPRECATED
|
|
#include <libgimp/gimpui.h>
|
|
#define GIMP_DISABLE_DEPRECATED
|
|
|
|
#define NO_IMPORT_PYGIMP
|
|
#include "pygimp-api.h"
|
|
|
|
#define NO_IMPORT_PYGIMPCOLOR
|
|
#include "pygimpcolor-api.h"
|
|
|
|
typedef struct {
|
|
PyObject *constraint;
|
|
PyObject *user_data;
|
|
} PyGimpConstraintData;
|
|
|
|
typedef struct {
|
|
PyObject *sensitivity_func;
|
|
PyObject *user_data;
|
|
} PyGimpIntSensitivityData;
|
|
|
|
/* TODO: Add a header for these */
|
|
void gimpui_register_classes(PyObject *d);
|
|
void gimpui_add_constants(PyObject *module, const gchar *strip_prefix);
|
|
|
|
static void
|
|
pygimp_decref_callback(PyObject* obj) {
|
|
Py_XDECREF (obj);
|
|
}
|
|
|
|
%%
|
|
modulename gimpui
|
|
%%
|
|
import gobject.GObject as PyGObject_Type
|
|
import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
|
|
import gtk.Object as PyGtkObject_Type
|
|
import gtk.Widget as PyGtkWidget_Type
|
|
import gtk.Dialog as PyGtkDialog_Type
|
|
import gtk.Window as PyGtkWindow_Type
|
|
import gtk.Label as PyGtkLabel_Type
|
|
import gtk.Button as PyGtkButton_Type
|
|
import gtk.ToggleButton as PyGtkToggleButton_Type
|
|
import gtk.RadioButton as PyGtkRadioButton_Type
|
|
import gtk.SpinButton as PyGtkSpinButton_Type
|
|
import gtk.Entry as PyGtkEntry_Type
|
|
import gtk.DrawingArea as PyGtkDrawingArea_Type
|
|
import gtk.Grid as PyGtkGrid_Type
|
|
import gtk.Frame as PyGtkFrame_Type
|
|
import gtk.HBox as PyGtkHBox_Type
|
|
import gtk.VBox as PyGtkVBox_Type
|
|
import gtk.HPaned as PyGtkHPaned_Type
|
|
import gtk.VPaned as PyGtkVPaned_Type
|
|
import gtk.Scale as PyGtkScale_Type
|
|
import gtk.ProgressBar as PyGtkProgressBar_Type
|
|
import gtk.OptionMenu as PyGtkOptionMenu_Type
|
|
import gtk.ComboBox as PyGtkComboBox_Type
|
|
import gtk.ListStore as PyGtkListStore_Type
|
|
import gtk.TreeModel as PyGtkTreeModel_Type
|
|
import gtk.CellRenderer as PyGtkCellRenderer_Type
|
|
import gtk.CellRendererToggle as PyGtkCellRendererToggle_Type
|
|
import gimp.Parasite as PyGimpParasite_Type
|
|
%%
|
|
ignore
|
|
gimp_dialog_add_buttons
|
|
gimp_int_combo_box_connect
|
|
gimp_color_profile_combo_box_new
|
|
gimp_enum_store_new_with_values
|
|
gimp_int_combo_box_new_array
|
|
%%
|
|
ignore-glob
|
|
*_get_type
|
|
*_valist
|
|
gimp_resolution_*
|
|
%%
|
|
ignore-type
|
|
GimpIntStoreColumns
|
|
%%
|
|
override gimp_drawable_combo_box_new kwargs
|
|
static gboolean
|
|
pygimp_drawable_constraint_marshal(gint32 image_id, gint32 drawable_id,
|
|
gpointer user_data)
|
|
{
|
|
PyObject *img, *drw, *ret;
|
|
gboolean res;
|
|
PyGimpConstraintData *data = user_data;
|
|
|
|
img = pygimp_image_new(image_id);
|
|
if (!img) {
|
|
PyErr_Print();
|
|
return FALSE;
|
|
}
|
|
|
|
drw = pygimp_drawable_new(NULL, drawable_id);
|
|
if (!drw) {
|
|
PyErr_Print();
|
|
Py_DECREF(img);
|
|
return FALSE;
|
|
}
|
|
|
|
if (data->user_data && data->user_data != Py_None)
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, drw,
|
|
data->user_data, NULL);
|
|
else
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, drw, NULL);
|
|
|
|
if (!ret) {
|
|
PyErr_Print();
|
|
res = FALSE;
|
|
} else {
|
|
res = PyObject_IsTrue(ret);
|
|
Py_DECREF(ret);
|
|
}
|
|
|
|
Py_DECREF(drw);
|
|
Py_DECREF(img);
|
|
|
|
return res;
|
|
}
|
|
|
|
static int
|
|
_wrap_gimp_drawable_combo_box_new(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *constraint = NULL, *user_data = NULL;
|
|
GimpDrawableConstraintFunc func = NULL;
|
|
PyGimpConstraintData *data = NULL;
|
|
|
|
static char *kwlist[] = { "constraint", "data", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"|OO:gimpui.DrawableComboBox.__init__",
|
|
kwlist,
|
|
&constraint, &user_data))
|
|
return -1;
|
|
|
|
if (constraint && constraint != Py_None) {
|
|
if (!PyCallable_Check(constraint)) {
|
|
PyErr_SetString(PyExc_TypeError, "first arg must be callable");
|
|
return -1;
|
|
}
|
|
|
|
data = g_new(PyGimpConstraintData, 1);
|
|
|
|
data->constraint = constraint;
|
|
Py_XINCREF(constraint);
|
|
|
|
data->user_data = user_data;
|
|
Py_XINCREF(user_data);
|
|
|
|
func = pygimp_drawable_constraint_marshal;
|
|
}
|
|
|
|
self->obj = (GObject *)gimp_drawable_combo_box_new(func, data);
|
|
|
|
Py_XDECREF(constraint);
|
|
Py_XDECREF(user_data);
|
|
g_free(data);
|
|
|
|
if (pyg_type_from_object((PyObject *)self) != GIMP_TYPE_DRAWABLE_COMBO_BOX) {
|
|
PyErr_SetString(PyExc_RuntimeError, "__gobject_init__ must be used "
|
|
"when subclassing gimpui.DrawableComboBox");
|
|
return -1;
|
|
}
|
|
|
|
pygobject_register_wrapper((PyObject *)self);
|
|
return 0;
|
|
}
|
|
%%
|
|
define GimpDrawableComboBox.set_active_drawable kwargs
|
|
static PyObject *
|
|
_wrap_gimp_drawable_combo_box_set_active_drawable(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyGimpDrawable *drw;
|
|
|
|
static char *kwlist[] = { "drawable", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpDrawableComboBox.set_active_drawable",
|
|
kwlist,
|
|
PyGimpDrawable_Type, &drw))
|
|
return NULL;
|
|
|
|
if (!gimp_int_combo_box_set_active(GIMP_INT_COMBO_BOX(self->obj), drw->ID)) {
|
|
PyErr_Format(pygimp_error,
|
|
"Drawable (ID %d) does not exist in GimpDrawableComboBox",
|
|
drw->ID);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
define GimpDrawableComboBox.get_active_drawable noargs
|
|
static PyObject *
|
|
_wrap_gimp_drawable_combo_box_get_active_drawable(PyGObject *self)
|
|
{
|
|
int value;
|
|
|
|
if (gimp_int_combo_box_get_active(GIMP_INT_COMBO_BOX(self->obj), &value))
|
|
return pygimp_drawable_new(NULL, value);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_channel_combo_box_new kwargs
|
|
static gboolean
|
|
pygimp_channel_constraint_marshal(gint32 image_id, gint32 channel_id,
|
|
gpointer user_data)
|
|
{
|
|
PyObject *img, *chn, *ret;
|
|
gboolean res;
|
|
PyGimpConstraintData *data = user_data;
|
|
|
|
img = pygimp_image_new(image_id);
|
|
if (!img) {
|
|
PyErr_Print();
|
|
return FALSE;
|
|
}
|
|
|
|
chn = pygimp_channel_new(channel_id);
|
|
if (!chn) {
|
|
PyErr_Print();
|
|
Py_DECREF(img);
|
|
return FALSE;
|
|
}
|
|
|
|
if (data->user_data && data->user_data != Py_None)
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, chn,
|
|
data->user_data, NULL);
|
|
else
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, chn, NULL);
|
|
|
|
if (!ret) {
|
|
PyErr_Print();
|
|
res = FALSE;
|
|
} else {
|
|
res = PyObject_IsTrue(ret);
|
|
Py_DECREF(ret);
|
|
}
|
|
|
|
Py_DECREF(chn);
|
|
Py_DECREF(img);
|
|
|
|
return res;
|
|
}
|
|
|
|
static int
|
|
_wrap_gimp_channel_combo_box_new(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *constraint = NULL, *user_data = NULL;
|
|
GimpDrawableConstraintFunc func = NULL;
|
|
PyGimpConstraintData *data = NULL;
|
|
|
|
static char *kwlist[] = { "constraint", "data", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"|OO:gimpui.ChannelComboBox.__init__",
|
|
kwlist,
|
|
&constraint, &user_data))
|
|
return -1;
|
|
|
|
if (constraint && constraint != Py_None) {
|
|
if (!PyCallable_Check(constraint)) {
|
|
PyErr_SetString(PyExc_TypeError, "first arg must be callable");
|
|
return -1;
|
|
}
|
|
|
|
data = g_new(PyGimpConstraintData, 1);
|
|
|
|
data->constraint = constraint;
|
|
Py_INCREF(constraint);
|
|
|
|
data->user_data = user_data;
|
|
Py_XINCREF(user_data);
|
|
|
|
func = pygimp_channel_constraint_marshal;
|
|
}
|
|
|
|
self->obj = (GObject *)gimp_channel_combo_box_new(func, data);
|
|
|
|
Py_XDECREF(constraint);
|
|
Py_XDECREF(user_data);
|
|
g_free(data);
|
|
|
|
if (pyg_type_from_object((PyObject *)self) != GIMP_TYPE_CHANNEL_COMBO_BOX) {
|
|
PyErr_SetString(PyExc_RuntimeError, "__gobject_init__ must be used "
|
|
"when subclassing gimpui.ChannelComboBox");
|
|
return -1;
|
|
}
|
|
|
|
pygobject_register_wrapper((PyObject *)self);
|
|
return 0;
|
|
}
|
|
%%
|
|
define GimpChannelComboBox.set_active_channel kwargs
|
|
static PyObject *
|
|
_wrap_gimp_channel_combo_box_set_active_channel(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyGimpChannel *chn;
|
|
|
|
static char *kwlist[] = { "channel", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpChannelComboBox.set_active_channel",
|
|
kwlist,
|
|
PyGimpChannel_Type, &chn))
|
|
return NULL;
|
|
|
|
if (!gimp_int_combo_box_set_active(GIMP_INT_COMBO_BOX(self->obj), chn->ID)) {
|
|
PyErr_Format(pygimp_error,
|
|
"Channel (ID %d) does not exist in GimpChannelComboBox",
|
|
chn->ID);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
define GimpChannelComboBox.get_active_channel noargs
|
|
static PyObject *
|
|
_wrap_gimp_channel_combo_box_get_active_channel(PyGObject *self)
|
|
{
|
|
int value;
|
|
|
|
if (gimp_int_combo_box_get_active(GIMP_INT_COMBO_BOX(self->obj), &value))
|
|
return pygimp_channel_new(value);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_layer_combo_box_new kwargs
|
|
static gboolean
|
|
pygimp_layer_constraint_marshal(gint32 image_id, gint32 layer_id,
|
|
gpointer user_data)
|
|
{
|
|
PyObject *img, *lay, *ret;
|
|
gboolean res;
|
|
PyGimpConstraintData *data = user_data;
|
|
|
|
img = pygimp_image_new(image_id);
|
|
if (!img) {
|
|
PyErr_Print();
|
|
return FALSE;
|
|
}
|
|
|
|
lay = pygimp_layer_new(layer_id);
|
|
if (!lay) {
|
|
PyErr_Print();
|
|
Py_DECREF(img);
|
|
return FALSE;
|
|
}
|
|
|
|
if (data->user_data && data->user_data != Py_None)
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, lay,
|
|
data->user_data, NULL);
|
|
else
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, lay, NULL);
|
|
|
|
if (!ret) {
|
|
PyErr_Print();
|
|
res = FALSE;
|
|
} else {
|
|
res = PyObject_IsTrue(ret);
|
|
Py_DECREF(ret);
|
|
}
|
|
|
|
Py_DECREF(lay);
|
|
Py_DECREF(img);
|
|
|
|
return res;
|
|
}
|
|
|
|
static int
|
|
_wrap_gimp_layer_combo_box_new(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *constraint = NULL, *user_data = NULL;
|
|
GimpDrawableConstraintFunc func = NULL;
|
|
PyGimpConstraintData *data = NULL;
|
|
|
|
static char *kwlist[] = { "constraint", "data", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"|OO:gimpui.LayerComboBox.__init__",
|
|
kwlist,
|
|
&constraint, &user_data))
|
|
return -1;
|
|
|
|
if (constraint && constraint != Py_None) {
|
|
if (!PyCallable_Check(constraint)) {
|
|
PyErr_SetString(PyExc_TypeError, "first arg must be callable");
|
|
return -1;
|
|
}
|
|
|
|
data = g_new(PyGimpConstraintData, 1);
|
|
|
|
data->constraint = constraint;
|
|
Py_INCREF(constraint);
|
|
|
|
data->user_data = user_data;
|
|
Py_XINCREF(user_data);
|
|
|
|
func = pygimp_layer_constraint_marshal;
|
|
}
|
|
|
|
self->obj = (GObject *)gimp_layer_combo_box_new(func, data);
|
|
|
|
Py_XDECREF(constraint);
|
|
Py_XDECREF(user_data);
|
|
g_free(data);
|
|
|
|
if (pyg_type_from_object((PyObject *)self) != GIMP_TYPE_LAYER_COMBO_BOX) {
|
|
PyErr_SetString(PyExc_RuntimeError, "__gobject_init__ must be used "
|
|
"when subclassing gimpui.LayerComboBox");
|
|
return -1;
|
|
}
|
|
|
|
pygobject_register_wrapper((PyObject *)self);
|
|
return 0;
|
|
}
|
|
%%
|
|
define GimpLayerComboBox.set_active_layer kwargs
|
|
static PyObject *
|
|
_wrap_gimp_layer_combo_box_set_active_layer(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyGimpLayer *lay;
|
|
|
|
static char *kwlist[] = { "layer", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpLayerComboBox.set_active_layer",
|
|
kwlist,
|
|
PyGimpLayer_Type, &lay))
|
|
return NULL;
|
|
|
|
if (!gimp_int_combo_box_set_active(GIMP_INT_COMBO_BOX(self->obj), lay->ID)) {
|
|
PyErr_Format(pygimp_error,
|
|
"Layer (ID %d) does not exist in GimpLayerComboBox",
|
|
lay->ID);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
define GimpLayerComboBox.get_active_layer noargs
|
|
static PyObject *
|
|
_wrap_gimp_layer_combo_box_get_active_layer(PyGObject *self)
|
|
{
|
|
int value;
|
|
|
|
if (gimp_int_combo_box_get_active(GIMP_INT_COMBO_BOX(self->obj), &value))
|
|
return pygimp_layer_new(value);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_vectors_combo_box_new kwargs
|
|
static gboolean
|
|
pygimp_vectors_constraint_marshal(gint32 image_id, gint32 vectors_id,
|
|
gpointer user_data)
|
|
{
|
|
PyObject *img, *vect, *ret;
|
|
gboolean res;
|
|
PyGimpConstraintData *data = user_data;
|
|
|
|
img = pygimp_image_new(image_id);
|
|
if (!img) {
|
|
PyErr_Print();
|
|
return FALSE;
|
|
}
|
|
|
|
vect = pygimp_vectors_new(vectors_id);
|
|
if (!vect) {
|
|
PyErr_Print();
|
|
Py_DECREF(img);
|
|
return FALSE;
|
|
}
|
|
|
|
if (data->user_data && data->user_data != Py_None)
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, vect,
|
|
data->user_data, NULL);
|
|
else
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, vect, NULL);
|
|
|
|
if (!ret) {
|
|
PyErr_Print();
|
|
res = FALSE;
|
|
} else {
|
|
res = PyObject_IsTrue(ret);
|
|
Py_DECREF(ret);
|
|
}
|
|
|
|
Py_DECREF(vect);
|
|
Py_DECREF(img);
|
|
|
|
return res;
|
|
}
|
|
|
|
static int
|
|
_wrap_gimp_vectors_combo_box_new(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *constraint = NULL, *user_data = NULL;
|
|
GimpVectorsConstraintFunc func = NULL;
|
|
PyGimpConstraintData *data = NULL;
|
|
|
|
static char *kwlist[] = { "constraint", "data", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"|OO:gimpui.VectorsComboBox.__init__",
|
|
kwlist,
|
|
&constraint, &user_data))
|
|
return -1;
|
|
|
|
if (constraint && constraint != Py_None) {
|
|
if (!PyCallable_Check(constraint)) {
|
|
PyErr_SetString(PyExc_TypeError, "first arg must be callable");
|
|
return -1;
|
|
}
|
|
|
|
data = g_new(PyGimpConstraintData, 1);
|
|
|
|
data->constraint = constraint;
|
|
Py_INCREF(constraint);
|
|
|
|
data->user_data = user_data;
|
|
Py_XINCREF(user_data);
|
|
|
|
func = pygimp_vectors_constraint_marshal;
|
|
}
|
|
|
|
self->obj = (GObject *)gimp_vectors_combo_box_new(func, data);
|
|
|
|
Py_XDECREF(constraint);
|
|
Py_XDECREF(user_data);
|
|
g_free(data);
|
|
|
|
if (pyg_type_from_object((PyObject *)self) != GIMP_TYPE_VECTORS_COMBO_BOX) {
|
|
PyErr_SetString(PyExc_RuntimeError, "__gobject_init__ must be used "
|
|
"when subclassing gimpui.VectorsComboBox");
|
|
return -1;
|
|
}
|
|
|
|
pygobject_register_wrapper((PyObject *)self);
|
|
return 0;
|
|
}
|
|
%%
|
|
define GimpVectorsComboBox.set_active_vectors kwargs
|
|
static PyObject *
|
|
_wrap_gimp_vectors_combo_box_set_active_vectors(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyGimpVectors *vect;
|
|
|
|
static char *kwlist[] = { "vectors", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpVectorsComboBox.set_active_vectors",
|
|
kwlist,
|
|
PyGimpVectors_Type, &vect))
|
|
return NULL;
|
|
|
|
if (!gimp_int_combo_box_set_active(GIMP_INT_COMBO_BOX(self->obj), vect->ID)) {
|
|
PyErr_Format(pygimp_error,
|
|
"Vectors (ID %d) does not exist in GimpVectorsComboBox",
|
|
vect->ID);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
define GimpVectorsComboBox.get_active_vectors noargs
|
|
static PyObject *
|
|
_wrap_gimp_vectors_combo_box_get_active_vectors(PyGObject *self)
|
|
{
|
|
int value;
|
|
|
|
if (gimp_int_combo_box_get_active(GIMP_INT_COMBO_BOX(self->obj), &value))
|
|
return pygimp_vectors_new(value);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_image_combo_box_new kwargs
|
|
static gboolean
|
|
pygimp_image_constraint_marshal(gint32 image_id, gpointer user_data)
|
|
{
|
|
PyObject *img, *ret;
|
|
gboolean res;
|
|
PyGimpConstraintData *data = user_data;
|
|
|
|
img = pygimp_image_new(image_id);
|
|
if (!img) {
|
|
PyErr_Print();
|
|
return FALSE;
|
|
}
|
|
|
|
if (data->user_data && data->user_data != Py_None)
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img,
|
|
data->user_data, NULL);
|
|
else
|
|
ret = PyObject_CallFunctionObjArgs(data->constraint, img, NULL);
|
|
|
|
if (!ret) {
|
|
PyErr_Print();
|
|
res = FALSE;
|
|
} else {
|
|
res = PyObject_IsTrue(ret);
|
|
Py_DECREF(ret);
|
|
}
|
|
|
|
Py_DECREF(img);
|
|
|
|
return res;
|
|
}
|
|
|
|
static int
|
|
_wrap_gimp_image_combo_box_new(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *constraint = NULL, *user_data = NULL;
|
|
GimpImageConstraintFunc func = NULL;
|
|
PyGimpConstraintData *data = NULL;
|
|
|
|
static char *kwlist[] = { "constraint", "data", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"|OO:gimpui.ImageComboBox.__init__",
|
|
kwlist,
|
|
&constraint, &user_data))
|
|
return -1;
|
|
|
|
if (constraint && constraint != Py_None) {
|
|
if (!PyCallable_Check(constraint)) {
|
|
PyErr_SetString(PyExc_TypeError, "first arg must be callable");
|
|
return -1;
|
|
}
|
|
|
|
data = g_new(PyGimpConstraintData, 1);
|
|
|
|
data->constraint = constraint;
|
|
Py_INCREF(constraint);
|
|
|
|
data->user_data = user_data;
|
|
Py_XINCREF(user_data);
|
|
|
|
func = pygimp_image_constraint_marshal;
|
|
}
|
|
|
|
self->obj = (GObject *)gimp_image_combo_box_new(func, data);
|
|
|
|
Py_XDECREF(constraint);
|
|
Py_XDECREF(user_data);
|
|
g_free(data);
|
|
|
|
if (pyg_type_from_object((PyObject *)self) != GIMP_TYPE_IMAGE_COMBO_BOX) {
|
|
PyErr_SetString(PyExc_RuntimeError, "__gobject_init__ must be used "
|
|
"when subclassing gimpui.ImageComboBox");
|
|
return -1;
|
|
}
|
|
|
|
pygobject_register_wrapper((PyObject *)self);
|
|
return 0;
|
|
}
|
|
%%
|
|
define GimpImageComboBox.set_active_image kwargs
|
|
static PyObject *
|
|
_wrap_gimp_image_combo_box_set_active_image(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyGimpImage *img;
|
|
|
|
static char *kwlist[] = { "image", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpImageComboBox.set_active_image",
|
|
kwlist,
|
|
PyGimpImage_Type, &img))
|
|
return NULL;
|
|
|
|
if (!gimp_int_combo_box_set_active(GIMP_INT_COMBO_BOX(self->obj), img->ID)) {
|
|
PyErr_Format(pygimp_error,
|
|
"Image (ID %d) does not exist in GimpImageComboBox",
|
|
img->ID);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
define GimpImageComboBox.get_active_image noargs
|
|
static PyObject *
|
|
_wrap_gimp_image_combo_box_get_active_image(PyGObject *self)
|
|
{
|
|
int value;
|
|
|
|
if (gimp_int_combo_box_get_active(GIMP_INT_COMBO_BOX(self->obj), &value))
|
|
return pygimp_image_new(value);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_dialog_new kwargs
|
|
static void
|
|
pygimp_help_func_marshal(const gchar *help_id, gpointer help_data)
|
|
{
|
|
GObject *dialog = help_data;
|
|
PyObject *py_dialog, *help_func, *ret;
|
|
|
|
py_dialog = g_object_get_data(dialog, "pygimp-dialog-pyobject");
|
|
help_func = g_object_get_data(dialog, "pygimp-dialog-help_func");
|
|
|
|
ret = PyObject_CallFunction(help_func, "sO", help_id, py_dialog);
|
|
|
|
if (ret)
|
|
Py_DECREF(ret);
|
|
else
|
|
PyErr_Print();
|
|
}
|
|
|
|
static void
|
|
pygimp_help_func_destroy(gpointer data)
|
|
{
|
|
PyObject *help_func = data;
|
|
|
|
Py_DECREF(help_func);
|
|
}
|
|
|
|
static void
|
|
pygimp_dialog_close(GtkWidget *widget)
|
|
{
|
|
/* Synthesize delete_event to close dialog. */
|
|
|
|
if (gtk_widget_get_window (widget)) {
|
|
GdkEvent *event = gdk_event_new(GDK_DELETE);
|
|
|
|
event->any.window = g_object_ref (gtk_widget_get_window (widget));
|
|
event->any.send_event = TRUE;
|
|
|
|
gtk_main_do_event(event);
|
|
gdk_event_free(event);
|
|
}
|
|
}
|
|
|
|
static int
|
|
_wrap_gimp_dialog_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
gchar *title, *role;
|
|
PyGObject *py_window = NULL;
|
|
PyObject *py_flags = NULL, *py_buttons = Py_None;
|
|
PyObject *help_func = NULL;
|
|
gchar *help_id = NULL;
|
|
GtkDialogFlags flags = 0;
|
|
int len, i;
|
|
GtkWidget *parent;
|
|
GimpHelpFunc func;
|
|
|
|
static char *kwlist[] = { "title", "role", "parent", "flags",
|
|
"help_func", "help_id", "buttons", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"zz|OOOzO:gimpui.GimpDialog.__init__",
|
|
kwlist,
|
|
&title, &role, &py_window, &py_flags,
|
|
&help_func, &help_id, &py_buttons))
|
|
return -1;
|
|
|
|
if (py_window == NULL || (PyObject*)py_window == Py_None)
|
|
parent = NULL;
|
|
else if (pygobject_check(py_window, &PyGtkWindow_Type))
|
|
parent = GTK_WIDGET(py_window->obj);
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError, "parent must be a GtkWindow or None");
|
|
return -1;
|
|
}
|
|
|
|
if (pyg_flags_get_value(GTK_TYPE_DIALOG_FLAGS, py_flags, (gint *)&flags))
|
|
return -1;
|
|
|
|
if (py_buttons == Py_None)
|
|
len = 0;
|
|
else if (PyTuple_Check(py_buttons))
|
|
len = PyTuple_Size(py_buttons);
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError, "buttons must be a tuple containing text/response pairs or None");
|
|
return -1;
|
|
}
|
|
|
|
if (len % 2) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"buttons tuple must contain text/response id pairs");
|
|
return -1;
|
|
}
|
|
|
|
if (help_func) {
|
|
if (help_func != Py_None) {
|
|
if (!PyCallable_Check(help_func)) {
|
|
PyErr_SetString(PyExc_TypeError, "help_func must be callable");
|
|
return -1;
|
|
}
|
|
|
|
func = pygimp_help_func_marshal;
|
|
|
|
} else {
|
|
func = gimp_standard_help_func;
|
|
}
|
|
} else {
|
|
func = gimp_standard_help_func;
|
|
}
|
|
|
|
pygobject_construct(self,
|
|
"title", title,
|
|
"role", role,
|
|
"modal", (flags & GTK_DIALOG_MODAL),
|
|
"help-func", func,
|
|
"help-id", help_id,
|
|
NULL);
|
|
|
|
if (!self->obj) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"could not create GimpDialog object");
|
|
return -1;
|
|
}
|
|
|
|
if (parent) {
|
|
if (GTK_IS_WINDOW(parent))
|
|
gtk_window_set_transient_for(GTK_WINDOW(self->obj),
|
|
GTK_WINDOW(parent));
|
|
else
|
|
gtk_window_set_screen(GTK_WINDOW(self->obj),
|
|
gtk_widget_get_screen(parent));
|
|
|
|
if (flags & GTK_DIALOG_DESTROY_WITH_PARENT)
|
|
g_signal_connect_object(parent, "destroy",
|
|
G_CALLBACK(pygimp_dialog_close),
|
|
self->obj, G_CONNECT_SWAPPED);
|
|
}
|
|
|
|
for (i = 0; i < len; i += 2) {
|
|
PyObject *text = PyTuple_GetItem(py_buttons, i);
|
|
PyObject *id = PyTuple_GetItem(py_buttons, i + 1);
|
|
if (!PyString_Check(text) && !PyUnicode_Check(text)) {
|
|
gtk_object_destroy(GTK_OBJECT(self->obj));
|
|
self->obj = NULL;
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"first member of each text/response id pair "
|
|
"must be a string");
|
|
return -1;
|
|
}
|
|
if (!PyInt_Check(id)) {
|
|
gtk_object_destroy(GTK_OBJECT(self->obj));
|
|
self->obj = NULL;
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"second member of each text/response id pair "
|
|
"must be a number");
|
|
return -1;
|
|
}
|
|
|
|
gimp_dialog_add_button(GIMP_DIALOG(self->obj), PyString_AsString(text),
|
|
PyInt_AsLong(id));
|
|
}
|
|
|
|
if (help_func && help_func != Py_None) {
|
|
g_object_set_data(self->obj, "pygimp-dialog-help-data", self);
|
|
|
|
Py_INCREF(help_func);
|
|
g_object_set_data_full(self->obj, "pygimp-dialog-help-func",
|
|
help_func, pygimp_help_func_destroy);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_DIALOG
|
|
%%
|
|
override gimp_color_button_get_color noargs
|
|
static PyObject *
|
|
_wrap_gimp_color_button_get_color(PyGObject *self)
|
|
{
|
|
GimpRGB rgb;
|
|
|
|
gimp_color_button_get_color(GIMP_COLOR_BUTTON(self->obj), &rgb);
|
|
|
|
return pygimp_rgb_new(&rgb);
|
|
}
|
|
%%
|
|
override gimp_brush_select_button_get_brush noargs
|
|
static PyObject *
|
|
_wrap_gimp_brush_select_button_get_brush(PyGObject *self)
|
|
{
|
|
const gchar *brush_name;
|
|
gdouble opacity;
|
|
gint spacing;
|
|
GimpLayerMode paint_mode;
|
|
|
|
brush_name =
|
|
gimp_brush_select_button_get_brush(GIMP_BRUSH_SELECT_BUTTON(self->obj),
|
|
&opacity, &spacing, &paint_mode);
|
|
|
|
return Py_BuildValue("(sdiN)", brush_name, opacity, spacing,
|
|
pyg_enum_from_gtype(GIMP_TYPE_LAYER_MODE,
|
|
paint_mode));
|
|
}
|
|
%%
|
|
override gimp_window_set_transient
|
|
static PyObject *
|
|
_wrap_gimp_window_set_transient(PyGObject *self)
|
|
{
|
|
gimp_window_set_transient(GTK_WINDOW(self->obj));
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_color_button_new kwargs
|
|
static int
|
|
_wrap_gimp_color_button_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
gchar *title = NULL;
|
|
gint width = -1, height = -1;
|
|
PyObject *py_color = NULL, *py_type = NULL;
|
|
GimpRGB *color, default_color = { 0.0, 0.0, 0.0, 100.0 };
|
|
GimpColorAreaType type;
|
|
|
|
static char *kwlist[] = { "title", "width", "height", "color", "type",
|
|
NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"|ziiOO:gimpui.ColorButton.__init__",
|
|
kwlist,
|
|
&title, &width, &height,
|
|
&py_color, &py_type))
|
|
return -1;
|
|
|
|
if (py_color == NULL || (PyObject*)py_color == Py_None)
|
|
color = &default_color;
|
|
else if (pyg_boxed_check(py_color, GIMP_TYPE_RGB))
|
|
color = pyg_boxed_get(py_color, GimpRGB);
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError, "color should be a GimpRGB or None");
|
|
return -1;
|
|
}
|
|
|
|
if (py_type == NULL || (PyObject*)py_type == Py_None)
|
|
type = GIMP_COLOR_AREA_FLAT;
|
|
else if (pyg_enum_get_value(GIMP_TYPE_COLOR_AREA_TYPE, py_type,
|
|
(gint*)&type))
|
|
return -1;
|
|
|
|
if (pygobject_construct(self,
|
|
"title", title,
|
|
"type", type,
|
|
"color", color,
|
|
"area-width", width,
|
|
"area-height", height,
|
|
NULL))
|
|
return -1;
|
|
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_COLOR_BUTTON
|
|
%%
|
|
override gimp_color_scale_new kwargs
|
|
static int
|
|
_wrap_gimp_color_scale_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
PyObject *py_orientation, *py_channel;
|
|
GtkOrientation orientation;
|
|
GimpColorSelectorChannel channel;
|
|
|
|
static char *kwlist[] = { "orientation", "channel", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"OO:gimpui.ColorScale.__init__",
|
|
kwlist,
|
|
&py_orientation, &py_channel))
|
|
return -1;
|
|
|
|
if (pyg_enum_get_value(GTK_TYPE_ORIENTATION, py_orientation,
|
|
(gint*)&orientation))
|
|
return -1;
|
|
|
|
if (pyg_enum_get_value(GIMP_TYPE_COLOR_SELECTOR_CHANNEL, py_channel,
|
|
(gint*)&channel))
|
|
return -1;
|
|
|
|
if (pygobject_construct(self,
|
|
"orientation", orientation,
|
|
"channel", channel,
|
|
NULL))
|
|
return -1;
|
|
|
|
gtk_range_set_flippable (GTK_RANGE (self->obj),
|
|
orientation == GTK_ORIENTATION_HORIZONTAL);
|
|
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_COLOR_SCALE
|
|
%%
|
|
override gimp_enum_label_new kwargs
|
|
static int
|
|
_wrap_gimp_enum_label_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
PyObject *py_enum_type = NULL;
|
|
GType enum_type;
|
|
gint value;
|
|
|
|
static char *kwlist[] = { "enum_type", "value", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"Oi:gimpui.GimpEnumLabel.__init__",
|
|
kwlist,
|
|
&py_enum_type, &value))
|
|
return -1;
|
|
|
|
if ((enum_type = pyg_type_from_object(py_enum_type)) == 0)
|
|
return -1;
|
|
|
|
if (pygobject_construct(self,
|
|
"enum-type", enum_type,
|
|
"enum-value", value,
|
|
NULL))
|
|
return -1;
|
|
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_ENUM_LABEL
|
|
%%
|
|
override gimp_int_combo_box_new kwargs
|
|
static int
|
|
_wrap_gimp_int_combo_box_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
PyObject *py_items = NULL;
|
|
int len, i;
|
|
|
|
static char *kwlist[] = { "items", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"|O:gimpui.IntComboBox.__init__",
|
|
kwlist,
|
|
&py_items))
|
|
return -1;
|
|
|
|
if (py_items == NULL || py_items == Py_None)
|
|
len = 0;
|
|
else if (PyTuple_Check(py_items))
|
|
len = PyTuple_Size(py_items);
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError,
|
|
"items must be a tuple containing label/value pairs "
|
|
"or None");
|
|
return -1;
|
|
}
|
|
|
|
if (len % 2) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"items tuple must contain label/value pairs");
|
|
return -1;
|
|
}
|
|
|
|
if (pygobject_construct(self, NULL))
|
|
return -1;
|
|
|
|
for (i = 0; i < len; i += 2) {
|
|
PyObject *label = PyTuple_GetItem(py_items, i);
|
|
PyObject *value = PyTuple_GetItem(py_items, i + 1);
|
|
|
|
if (!PyString_Check(label)) {
|
|
gtk_object_destroy(GTK_OBJECT(self->obj));
|
|
self->obj = NULL;
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"first member of each label/value pair "
|
|
"must be a string");
|
|
return -1;
|
|
}
|
|
|
|
if (!PyInt_Check(value)) {
|
|
gtk_object_destroy(GTK_OBJECT(self->obj));
|
|
self->obj = NULL;
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"second member of each label/value pair "
|
|
"must be a number");
|
|
return -1;
|
|
}
|
|
|
|
gimp_int_combo_box_append(GIMP_INT_COMBO_BOX(self->obj),
|
|
GIMP_INT_STORE_LABEL,
|
|
PyString_AsString(label),
|
|
GIMP_INT_STORE_VALUE,
|
|
PyInt_AsLong(value),
|
|
-1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_INT_COMBO_BOX
|
|
%%
|
|
override gimp_int_combo_box_set_sensitivity kwargs
|
|
static gboolean
|
|
pygimp_int_combo_box_sensitivity_marshal(gint value, gpointer user_data)
|
|
{
|
|
PyObject *py_value;
|
|
PyGimpIntSensitivityData *data;
|
|
PyObject *ret;
|
|
gboolean res;
|
|
|
|
data = user_data;
|
|
|
|
py_value = PyInt_FromLong(value);
|
|
|
|
ret = PyObject_CallFunctionObjArgs(data->sensitivity_func, py_value,
|
|
data->user_data, NULL);
|
|
|
|
if (!ret) {
|
|
PyErr_Print();
|
|
res = FALSE;
|
|
} else {
|
|
res = PyObject_IsTrue(ret);
|
|
Py_DECREF(ret);
|
|
}
|
|
|
|
Py_DECREF(py_value);
|
|
|
|
return res;
|
|
}
|
|
|
|
static void
|
|
pygimp_int_combo_box_sensitivity_data_destroy(gpointer user_data)
|
|
{
|
|
PyGimpIntSensitivityData *data;
|
|
data = user_data;
|
|
|
|
Py_DECREF(data->sensitivity_func);
|
|
Py_XDECREF(data->user_data);
|
|
|
|
g_free(data);
|
|
}
|
|
|
|
static PyObject *
|
|
_wrap_gimp_int_combo_box_set_sensitivity(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *py_sensitivity_func;
|
|
PyObject *py_user_data = NULL;
|
|
PyGimpIntSensitivityData *data;
|
|
|
|
static char *kwlist[] = { "sensitivity_func", "user_data", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O|O:GimpIntComboBox.set_sensitivity",
|
|
kwlist, &py_sensitivity_func,
|
|
&py_user_data))
|
|
return NULL;
|
|
|
|
if (!PyCallable_Check(py_sensitivity_func)) {
|
|
PyErr_SetString(PyExc_TypeError, "first argument must be callable.");
|
|
return NULL;
|
|
}
|
|
|
|
data = g_new(PyGimpIntSensitivityData, 1);
|
|
|
|
data->sensitivity_func = py_sensitivity_func;
|
|
Py_INCREF(data->sensitivity_func);
|
|
|
|
if (py_user_data == NULL || py_user_data == Py_None)
|
|
data->user_data = NULL;
|
|
else {
|
|
data->user_data = py_user_data;
|
|
Py_INCREF(data->user_data);
|
|
}
|
|
|
|
gimp_int_combo_box_set_sensitivity(GIMP_INT_COMBO_BOX(self->obj),
|
|
pygimp_int_combo_box_sensitivity_marshal,
|
|
data,
|
|
pygimp_int_combo_box_sensitivity_data_destroy);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_int_combo_box_get_active noargs
|
|
static PyObject *
|
|
_wrap_gimp_int_combo_box_get_active(PyGObject *self)
|
|
{
|
|
int value;
|
|
|
|
if (gimp_int_combo_box_get_active(GIMP_INT_COMBO_BOX(self->obj), &value))
|
|
return PyLong_FromLong(value);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_int_combo_box_set_active kwargs
|
|
static PyObject *
|
|
_wrap_gimp_int_combo_box_set_active(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
int value;
|
|
|
|
static char *kwlist[] = { "value", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"i:GimpIntComboBox.set_active", kwlist,
|
|
&value))
|
|
return NULL;
|
|
|
|
if (!gimp_int_combo_box_set_active(GIMP_INT_COMBO_BOX(self->obj), value)) {
|
|
PyErr_Format(pygimp_error,
|
|
"Value %d does not exist in GimpIntComboBox",
|
|
value);
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_int_combo_box_append kwargs
|
|
static PyObject *
|
|
_wrap_gimp_int_combo_box_append(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *py_items;
|
|
int i, len;
|
|
|
|
static char *kwlist[] = { "items", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O:gimpui.IntComboBox.append",
|
|
kwlist,
|
|
&py_items))
|
|
return NULL;
|
|
|
|
if (py_items == NULL || py_items == Py_None)
|
|
len = 0;
|
|
else if (PyTuple_Check(py_items))
|
|
len = PyTuple_Size(py_items);
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError,
|
|
"items must be a tuple containing label/value pairs "
|
|
"or None");
|
|
return NULL;
|
|
}
|
|
|
|
if (len % 2) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"items tuple must contain label/value pairs");
|
|
return NULL;
|
|
}
|
|
|
|
for (i = 0; i < len; i += 2) {
|
|
PyObject *label = PyTuple_GetItem(py_items, i);
|
|
PyObject *value = PyTuple_GetItem(py_items, i + 1);
|
|
|
|
if (!PyString_Check(label)) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"first member of each label/value pair "
|
|
"must be a string");
|
|
return NULL;
|
|
}
|
|
|
|
if (!PyInt_Check(value)) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"second member of each label/value pair "
|
|
"must be a number");
|
|
return NULL;
|
|
}
|
|
|
|
gimp_int_combo_box_append(GIMP_INT_COMBO_BOX(self->obj),
|
|
GIMP_INT_STORE_LABEL,
|
|
PyString_AsString(label),
|
|
GIMP_INT_STORE_VALUE,
|
|
PyInt_AsLong(value),
|
|
-1);
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_int_combo_box_prepend kwargs
|
|
static PyObject *
|
|
_wrap_gimp_int_combo_box_prepend(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *py_items;
|
|
int i, len;
|
|
|
|
static char *kwlist[] = { "items", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O:gimpui.IntComboBox.prepend",
|
|
kwlist,
|
|
&py_items))
|
|
return NULL;
|
|
|
|
if (py_items == NULL || py_items == Py_None)
|
|
len = 0;
|
|
else if (PyTuple_Check(py_items))
|
|
len = PyTuple_Size(py_items);
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError,
|
|
"items must be a tuple containing label/value pairs "
|
|
"or None");
|
|
return NULL;
|
|
}
|
|
|
|
if (len % 2) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"items tuple must contain label/value pairs");
|
|
return NULL;
|
|
}
|
|
|
|
for (i = 0; i < len; i += 2) {
|
|
PyObject *label = PyTuple_GetItem(py_items, i);
|
|
PyObject *value = PyTuple_GetItem(py_items, i + 1);
|
|
|
|
if (!PyString_Check(label)) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"first member of each label/value pair "
|
|
"must be a string");
|
|
return NULL;
|
|
}
|
|
|
|
if (!PyInt_Check(value)) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"second member of each label/value pair "
|
|
"must be a number");
|
|
return NULL;
|
|
}
|
|
|
|
gimp_int_combo_box_prepend(GIMP_INT_COMBO_BOX(self->obj),
|
|
GIMP_INT_STORE_LABEL,
|
|
PyString_AsString(label),
|
|
GIMP_INT_STORE_VALUE,
|
|
PyInt_AsLong(value),
|
|
-1);
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_browser_add_search_types args
|
|
static PyObject *
|
|
_wrap_gimp_browser_add_search_types(PyGObject *self, PyObject *args)
|
|
{
|
|
GimpBrowser *browser;
|
|
int len, i;
|
|
PyObject *element;
|
|
gchar *label;
|
|
gint id;
|
|
|
|
browser = GIMP_BROWSER(self->obj);
|
|
|
|
len = PyTuple_Size(args);
|
|
|
|
for (i = 0; i < len; ++i) {
|
|
element = PyTuple_GetItem(args, i);
|
|
if (!PyTuple_Check(element)) {
|
|
PyErr_SetString(PyExc_TypeError, "GimpBrowser.add_search_types: Arguments must be tuples");
|
|
return NULL;
|
|
}
|
|
if (!PyArg_ParseTuple(element, "si", &label, &id))
|
|
return NULL;
|
|
gimp_browser_add_search_types(browser, label, id, NULL);
|
|
}
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_proc_browser_dialog_new kwargs
|
|
static int
|
|
_wrap_gimp_proc_browser_dialog_new(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
gchar *title, *role;
|
|
PyObject *py_buttons = Py_None;
|
|
PyObject *help_func = NULL;
|
|
gchar *help_id = NULL;
|
|
int len, i;
|
|
GimpHelpFunc func;
|
|
|
|
static char *kwlist[] = { "title", "role", "help_func", "help_id",
|
|
"buttons", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"zz|OzO:gimpui.GimpProcBrowserDialog.__init__",
|
|
kwlist,
|
|
&title, &role, &help_func, &help_id,
|
|
&py_buttons))
|
|
return -1;
|
|
|
|
if (py_buttons == Py_None)
|
|
len = 0;
|
|
else if (PyTuple_Check(py_buttons))
|
|
len = PyTuple_Size(py_buttons);
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError,
|
|
"buttons must be a tuple containing text/response "
|
|
"pairs or None");
|
|
return -1;
|
|
}
|
|
|
|
if (len % 2) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"buttons tuple must contain text/response id pairs");
|
|
return -1;
|
|
}
|
|
|
|
if (help_func) {
|
|
if (help_func != Py_None) {
|
|
if (!PyCallable_Check(help_func)) {
|
|
PyErr_SetString(PyExc_TypeError, "help_func must be callable");
|
|
return -1;
|
|
}
|
|
|
|
func = pygimp_help_func_marshal;
|
|
|
|
} else {
|
|
func = gimp_standard_help_func;
|
|
}
|
|
} else {
|
|
func = gimp_standard_help_func;
|
|
}
|
|
|
|
pygobject_construct(self,
|
|
"title", title,
|
|
"role", role,
|
|
"help-func", func,
|
|
"help-id", help_id,
|
|
NULL);
|
|
|
|
if (!self->obj) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"could not create GimpProcBrowserDialog object");
|
|
return -1;
|
|
}
|
|
|
|
for (i = 0; i < len; i += 2) {
|
|
PyObject *text = PyTuple_GetItem(py_buttons, i);
|
|
PyObject *id = PyTuple_GetItem(py_buttons, i + 1);
|
|
if (!PyString_Check(text) && !PyUnicode_Check(text)) {
|
|
gtk_object_destroy(GTK_OBJECT(self->obj));
|
|
self->obj = NULL;
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"first member of each text/response id pair "
|
|
"must be a string");
|
|
return -1;
|
|
}
|
|
if (!PyInt_Check(id)) {
|
|
gtk_object_destroy(GTK_OBJECT(self->obj));
|
|
self->obj = NULL;
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"second member of each text/response id pair "
|
|
"must be a number");
|
|
return -1;
|
|
}
|
|
|
|
gimp_dialog_add_button(GIMP_DIALOG(self->obj), PyString_AsString(text),
|
|
PyInt_AsLong(id));
|
|
}
|
|
|
|
if (help_func && help_func != Py_None) {
|
|
g_object_set_data(self->obj, "pygimp-dialog-help-data", self);
|
|
|
|
Py_INCREF(help_func);
|
|
g_object_set_data_full(self->obj, "pygimp-dialog-help-func",
|
|
help_func, pygimp_help_func_destroy);
|
|
}
|
|
|
|
g_signal_emit_by_name(GIMP_PROC_BROWSER_DIALOG(self->obj)->browser,
|
|
"search", "", 0, self->obj);
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_PROC_BROWSER_DIALOG
|
|
%%
|
|
override gimp_number_pair_entry_get_values noargs
|
|
static PyObject *
|
|
_wrap_gimp_number_pair_entry_get_values(PyGObject *self)
|
|
{
|
|
gdouble left, right;
|
|
|
|
gimp_number_pair_entry_get_values(GIMP_NUMBER_PAIR_ENTRY(self->obj),
|
|
&left, &right);
|
|
|
|
return Py_BuildValue("(dd)", left, right);
|
|
}
|
|
%%
|
|
override gimp_number_pair_entry_get_default_values noargs
|
|
static PyObject *
|
|
_wrap_gimp_number_pair_entry_get_default_values(PyGObject *self)
|
|
{
|
|
gdouble left, right;
|
|
|
|
gimp_number_pair_entry_get_default_values(
|
|
GIMP_NUMBER_PAIR_ENTRY(self->obj),
|
|
&left, &right);
|
|
|
|
return Py_BuildValue("(dd)", left, right);
|
|
}
|
|
%%
|
|
override gimp_number_pair_entry_get_aspect noargs
|
|
static PyObject *
|
|
_wrap_gimp_number_pair_entry_get_aspect(PyGObject *self)
|
|
{
|
|
GimpAspectType aspect;
|
|
|
|
aspect =
|
|
gimp_number_pair_entry_get_aspect(GIMP_NUMBER_PAIR_ENTRY(self->obj));
|
|
|
|
return pyg_enum_from_gtype(GIMP_TYPE_ASPECT_TYPE, aspect);
|
|
}
|
|
%%
|
|
override gimp_number_pair_entry_set_aspect kwargs
|
|
static PyObject *
|
|
_wrap_gimp_number_pair_entry_set_aspect(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PyObject *py_aspect;
|
|
GimpAspectType aspect;
|
|
|
|
static char *kwlist[] = {"aspect", NULL};
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O:GimpNumberPairEntry.set_aspect",
|
|
kwlist, &py_aspect))
|
|
return NULL;
|
|
|
|
if (pyg_enum_get_value(GIMP_TYPE_ASPECT_TYPE, py_aspect, (gint*)&aspect))
|
|
{
|
|
Py_XDECREF(py_aspect);
|
|
return NULL;
|
|
}
|
|
|
|
gimp_number_pair_entry_set_aspect(GIMP_NUMBER_PAIR_ENTRY(self->obj),
|
|
aspect);
|
|
|
|
Py_DECREF(py_aspect);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_page_selector_get_selected_pages noargs
|
|
static PyObject *
|
|
_wrap_gimp_page_selector_get_selected_pages(PyGObject *self)
|
|
{
|
|
gint *selected_pages;
|
|
gint n_selected_pages;
|
|
PyObject *py_selected_pages;
|
|
int i;
|
|
|
|
selected_pages = gimp_page_selector_get_selected_pages(
|
|
GIMP_PAGE_SELECTOR (self->obj),
|
|
&n_selected_pages);
|
|
|
|
py_selected_pages = PyTuple_New(n_selected_pages);
|
|
for (i = 0; i < n_selected_pages; ++i)
|
|
PyTuple_SetItem(py_selected_pages, i,
|
|
PyInt_FromLong(selected_pages[i]));
|
|
|
|
g_free(selected_pages);
|
|
|
|
return py_selected_pages;
|
|
}
|
|
%%
|
|
override gimp_preview_get_position noargs
|
|
static PyObject *
|
|
_wrap_gimp_preview_get_position(PyGObject *self)
|
|
{
|
|
gint x;
|
|
gint y;
|
|
|
|
gimp_preview_get_position(GIMP_PREVIEW(self->obj), &x, &y);
|
|
|
|
return Py_BuildValue("(ii)", x, y);
|
|
}
|
|
%%
|
|
override gimp_preview_get_size noargs
|
|
static PyObject *
|
|
_wrap_gimp_preview_get_size(PyGObject *self)
|
|
{
|
|
gint width;
|
|
gint height;
|
|
|
|
gimp_preview_get_size(GIMP_PREVIEW(self->obj), &width, &height);
|
|
|
|
return Py_BuildValue("(ii)", width, height);
|
|
}
|
|
%%
|
|
override gimp_preview_transform kwargs
|
|
static PyObject *
|
|
_wrap_gimp_preview_transform(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
gint src_x;
|
|
gint src_y;
|
|
gint dest_x;
|
|
gint dest_y;
|
|
|
|
static char *kwlist[] = {"x", "y", NULL};
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:GimpPreview.transform",
|
|
kwlist, &src_x, &src_y))
|
|
return NULL;
|
|
|
|
gimp_preview_transform(GIMP_PREVIEW(self->obj), src_x, src_y, &dest_x,
|
|
&dest_y);
|
|
|
|
return Py_BuildValue("(ii)", dest_x, dest_y);
|
|
}
|
|
%%
|
|
override gimp_preview_untransform kwargs
|
|
static PyObject *
|
|
_wrap_gimp_preview_untransform(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
gint src_x;
|
|
gint src_y;
|
|
gint dest_x;
|
|
gint dest_y;
|
|
|
|
static char *kwlist[] = {"x", "y", NULL};
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"ii:GimpPreview.untransform",
|
|
kwlist, &src_x, &src_y))
|
|
return NULL;
|
|
|
|
gimp_preview_untransform(GIMP_PREVIEW(self->obj), src_x, src_y, &dest_x,
|
|
&dest_y);
|
|
|
|
return Py_BuildValue("(ii)", dest_x, dest_y);
|
|
}
|
|
%%
|
|
override gimp_zoom_model_get_fraction noargs
|
|
static PyObject *
|
|
_wrap_gimp_zoom_model_get_fraction(PyGObject *self)
|
|
{
|
|
gint numerator;
|
|
gint denominator;
|
|
|
|
gimp_zoom_model_get_fraction(GIMP_ZOOM_MODEL(self->obj), &numerator,
|
|
&denominator);
|
|
|
|
return Py_BuildValue("(ii)", numerator, denominator);
|
|
}
|
|
%%
|
|
override gimp_drawable_preview_get_drawable noargs
|
|
static PyObject *
|
|
_wrap_gimp_drawable_preview_get_drawable(PyGObject *self)
|
|
{
|
|
PyObject *drawable;
|
|
|
|
drawable = g_object_get_data(self->obj,
|
|
"pygimp-drawable-preview-pydrawable");
|
|
Py_INCREF(drawable);
|
|
return drawable;
|
|
}
|
|
%%
|
|
override gimp_zoom_preview_get_drawable noargs
|
|
static PyObject *
|
|
_wrap_gimp_zoom_preview_get_drawable(PyGObject *self)
|
|
{
|
|
PyObject *drawable;
|
|
|
|
drawable = g_object_get_data(self->obj,
|
|
"pygimp-zoom-preview-pydrawable");
|
|
Py_INCREF(drawable);
|
|
return drawable;
|
|
}
|
|
%%
|
|
override gimp_drawable_preview_draw_region kwargs
|
|
static PyObject *
|
|
_wrap_gimp_drawable_preview_draw_region(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
/* PyGimpPixelRgn *pypixelrgn;
|
|
|
|
static char *kwlist[] = {"drawable", NULL};
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpDrawablePreview.draw_region",
|
|
kwlist, PyGimpPixelRgn_Type, &pypixelrgn))
|
|
return NULL;
|
|
|
|
gimp_drawable_preview_draw_region(GIMP_DRAWABLE_PREVIEW(self->obj),
|
|
&pypixelrgn->pr);
|
|
*/
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_int_store_lookup_by_value
|
|
static PyObject *
|
|
_wrap_gimp_int_store_lookup_by_value(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
static char *kwlist[] = { "value", NULL };
|
|
int value, ret;
|
|
GtkTreeIter iter;
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"i:GimpIntStore.gimp_int_store_lookup_by_value",
|
|
kwlist, &value))
|
|
return NULL;
|
|
|
|
ret = gimp_int_store_lookup_by_value(GTK_TREE_MODEL(self->obj), value,
|
|
&iter);
|
|
if (ret)
|
|
pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_memsize_entry_new
|
|
static int
|
|
_wrap_gimp_memsize_entry_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
static char *kwlist[] = { "value", "lower", "upper", NULL };
|
|
guint64 value, lower, upper;
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"LLL:GimpMemsizeEntry.__init__",
|
|
kwlist, &value, &lower, &upper))
|
|
return -1;
|
|
|
|
self->obj = (GObject *)gimp_memsize_entry_new(value, lower, upper);
|
|
|
|
if (!self->obj) {
|
|
PyErr_SetString(PyExc_RuntimeError,
|
|
"could not create GimpMemsizeEntry object");
|
|
return -1;
|
|
}
|
|
pygobject_register_wrapper((PyObject *)self);
|
|
return 0;
|
|
}
|
|
%%
|
|
override gimp_memsize_entry_set_value
|
|
static PyObject *
|
|
_wrap_gimp_memsize_entry_set_value(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
static char *kwlist[] = { "value", NULL };
|
|
guint64 value;
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"L:GimpMemsizeEntry.set_value",
|
|
kwlist, &value))
|
|
return NULL;
|
|
|
|
gimp_memsize_entry_set_value(GIMP_MEMSIZE_ENTRY(self->obj), value);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_color_area_get_color noargs
|
|
static PyObject *
|
|
_wrap_gimp_color_area_get_color(PyGObject *self)
|
|
{
|
|
GimpRGB rgb;
|
|
|
|
gimp_color_area_get_color(GIMP_COLOR_AREA(self->obj), &rgb);
|
|
|
|
return pygimp_rgb_new(&rgb);
|
|
}
|
|
%%
|
|
override gimp_color_hex_entry_get_color noargs
|
|
static PyObject *
|
|
_wrap_gimp_color_hex_entry_get_color(PyGObject *self)
|
|
{
|
|
GimpRGB rgb;
|
|
|
|
gimp_color_hex_entry_get_color(GIMP_COLOR_HEX_ENTRY(self->obj), &rgb);
|
|
|
|
return pygimp_rgb_new(&rgb);
|
|
}
|
|
%%
|
|
override gimp_color_notebook_get_color noargs
|
|
static PyObject *
|
|
_wrap_gimp_color_notebook_get_color(PyGObject *self)
|
|
{
|
|
GimpRGB rgb;
|
|
|
|
gimp_color_notebook_get_color(GIMP_COLOR_NOTEBOOK(self->obj), &rgb);
|
|
|
|
return pygimp_rgb_new(&rgb);
|
|
}
|
|
%%
|
|
override gimp_color_selection_get_color noargs
|
|
static PyObject *
|
|
_wrap_gimp_color_selection_get_color(PyGObject *self)
|
|
{
|
|
GimpRGB rgb;
|
|
|
|
gimp_color_selection_get_color(GIMP_COLOR_SELECTION(self->obj), &rgb);
|
|
|
|
return pygimp_rgb_new(&rgb);
|
|
}
|
|
%%
|
|
override gimp_color_selection_get_old_color noargs
|
|
static PyObject *
|
|
_wrap_gimp_color_selection_get_old_color(PyGObject *self)
|
|
{
|
|
GimpRGB rgb;
|
|
|
|
gimp_color_selection_get_old_color(GIMP_COLOR_SELECTION(self->obj), &rgb);
|
|
|
|
return pygimp_rgb_new(&rgb);
|
|
}
|
|
%%
|
|
override gimp_enum_store_new kwargs
|
|
static int
|
|
_wrap_gimp_enum_store_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
static char *kwlist[] = { "enum_type", "minimum", "maximum", NULL };
|
|
PyObject *py_enum_type = NULL;
|
|
PyObject *py_minimum = NULL;
|
|
PyObject *py_maximum = NULL;
|
|
GType enum_type;
|
|
GEnumClass *enum_class;
|
|
gint minimum, maximum;
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O|O!O!:GimpEnumStore.__init__", kwlist,
|
|
&py_enum_type, &PyInt_Type, &py_minimum,
|
|
&PyInt_Type, &py_maximum))
|
|
return -1;
|
|
if ((enum_type = pyg_type_from_object(py_enum_type)) == 0)
|
|
return -1;
|
|
|
|
enum_class = g_type_class_ref(enum_type);
|
|
|
|
if (py_minimum == NULL)
|
|
minimum = enum_class->minimum;
|
|
else
|
|
minimum = PyInt_AsLong(py_minimum);
|
|
|
|
if (py_maximum == NULL)
|
|
maximum = enum_class->maximum;
|
|
else
|
|
maximum = PyInt_AsLong(py_maximum);
|
|
|
|
g_type_class_unref(enum_class);
|
|
|
|
self->obj = (GObject *)gimp_enum_store_new_with_range(enum_type, minimum, maximum);
|
|
|
|
if (!self->obj) {
|
|
PyErr_SetString(PyExc_RuntimeError, "could not create GimpEnumStore object");
|
|
return -1;
|
|
}
|
|
pygobject_register_wrapper((PyObject *)self);
|
|
return 0;
|
|
}
|
|
%%
|
|
override gimp_zoom_preview_new_with_model kwargs
|
|
static int
|
|
_wrap_gimp_zoom_preview_new_with_model(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
static char *kwlist[] = { "drawable", "model", NULL };
|
|
PyGimpDrawable *py_drawable;
|
|
PyGObject *py_zoom_model = NULL;
|
|
GimpZoomModel *zoom_model;
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!|O!:GimpZoomPreview.__init__", kwlist,
|
|
PyGimpDrawable_Type, &py_drawable,
|
|
&PyGimpZoomModel_Type, &py_zoom_model))
|
|
return -1;
|
|
|
|
if (py_zoom_model)
|
|
zoom_model = (GimpZoomModel*)py_zoom_model->obj;
|
|
else
|
|
zoom_model = NULL;
|
|
|
|
if (!py_drawable->drawable)
|
|
py_drawable->drawable = gimp_drawable_get(py_drawable->ID);
|
|
|
|
if (pygobject_construct(self, "drawable", py_drawable->drawable, "model", zoom_model, NULL))
|
|
return -1;
|
|
|
|
g_object_set_data_full(self->obj, "pygimp-zoom-preview-pydrawable",
|
|
py_drawable,
|
|
(GDestroyNotify)pygimp_decref_callback);
|
|
|
|
Py_INCREF(py_drawable);
|
|
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_ZOOM_PREVIEW
|
|
%%
|
|
override gimp_aspect_preview_new kwargs
|
|
static int
|
|
_wrap_gimp_aspect_preview_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
static char *kwlist[] = { "drawable", NULL };
|
|
PyGimpDrawable *py_drawable;
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!|:GimpAspectPreview.__init__", kwlist,
|
|
PyGimpDrawable_Type, &py_drawable))
|
|
return -1;
|
|
|
|
if (!py_drawable->drawable)
|
|
py_drawable->drawable = gimp_drawable_get(py_drawable->ID);
|
|
|
|
if (pygobject_construct(self, "drawable", py_drawable->drawable, NULL))
|
|
return -1;
|
|
|
|
g_signal_connect_swapped(self->obj, "destroy",
|
|
(GCallback)pygimp_decref_callback, py_drawable);
|
|
Py_INCREF(py_drawable);
|
|
|
|
return 0;
|
|
}
|
|
%%
|
|
new-constructor GIMP_TYPE_ASPECT_PREVIEW
|
|
%%
|
|
override gimp_drawable_preview_new kwargs
|
|
static int
|
|
_wrap_gimp_drawable_preview_new(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|
{
|
|
static char *kwlist[] = { "drawable", NULL };
|
|
PyGimpDrawable *py_drawable;
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!|:GimpDrawablePreview.__init__", kwlist,
|
|
PyGimpDrawable_Type, &py_drawable))
|
|
return -1;
|
|
|
|
if (!py_drawable->drawable)
|
|
py_drawable->drawable = gimp_drawable_get(py_drawable->ID);
|
|
|
|
if (pygobject_construct(self, "drawable", py_drawable->drawable, NULL))
|
|
return -1;
|
|
|
|
g_object_set_data_full(self->obj, "pygimp-drawable-preview-pydrawable",
|
|
py_drawable,
|
|
(GDestroyNotify)pygimp_decref_callback);
|
|
|
|
Py_INCREF(py_drawable);
|
|
|
|
return 0;
|
|
}
|
|
|
|
%%
|
|
new-constructor GIMP_TYPE_DRAWABLE_PREVIEW
|
|
%%
|
|
override gimp_ruler_get_range noargs
|
|
static PyObject *
|
|
_wrap_gimp_ruler_get_range(PyGObject *self)
|
|
{
|
|
gdouble lower, upper, max_size;
|
|
|
|
gimp_ruler_get_range(GIMP_RULER(self->obj), &lower, &upper, &max_size);
|
|
|
|
return Py_BuildValue("(ddd)", lower, upper, max_size);
|
|
}
|
|
%%
|
|
override gimp_color_display_convert_surface kwargs
|
|
static PyObject *
|
|
_wrap_gimp_color_display_convert_surface(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PycairoSurface *pysurface;
|
|
|
|
static char *kwlist[] = { "surface", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpColorDisplay.convert_surface",
|
|
kwlist,
|
|
&PycairoSurface_Type, &pysurface))
|
|
return NULL;
|
|
|
|
gimp_color_display_convert_surface(GIMP_COLOR_DISPLAY(self->obj),
|
|
pysurface->surface);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_color_display_stack_convert_surface kwargs
|
|
static PyObject *
|
|
_wrap_gimp_color_display_stack_convert_surface(PyGObject *self, PyObject *args,
|
|
PyObject *kwargs)
|
|
{
|
|
PycairoSurface *pysurface;
|
|
|
|
static char *kwlist[] = { "surface", NULL };
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
|
"O!:GimpColorDisplayStack.convert_surface",
|
|
kwlist,
|
|
&PycairoSurface_Type, &pysurface))
|
|
return NULL;
|
|
|
|
gimp_color_display_stack_convert_surface(GIMP_COLOR_DISPLAY_STACK(self->obj),
|
|
pysurface->surface);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
%%
|
|
override gimp_zoom_preview_get_source noargs
|
|
static PyObject *
|
|
_wrap_gimp_zoom_preview_get_source(PyGObject *self)
|
|
{
|
|
gint width, height, bpp;
|
|
guchar *image;
|
|
PyObject *pyimage;
|
|
|
|
image = gimp_zoom_preview_get_source(GIMP_ZOOM_PREVIEW(self->obj),
|
|
&width, &height, &bpp);
|
|
|
|
if (image)
|
|
{
|
|
pyimage = PyByteArray_FromStringAndSize((const char *)image,
|
|
width * height * bpp);
|
|
g_free (image);
|
|
}
|
|
else
|
|
{
|
|
Py_INCREF(Py_None);
|
|
pyimage = Py_None;
|
|
}
|
|
|
|
return Py_BuildValue("(Niii)", pyimage, width, height, bpp);
|
|
}
|
|
%%
|
|
override gimp_ui_init noargs
|
|
static PyObject *
|
|
_wrap_gimp_ui_init(PyObject *self)
|
|
{
|
|
extern const char *prog_name;
|
|
|
|
gimp_ui_init (prog_name, FALSE);
|
|
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|