mirror of https://github.com/GNOME/gimp.git
Add dynamics context and factory data and functions (need debugging).
This commit is contained in:
parent
3a78004757
commit
f48a7e4a8b
|
@ -75,6 +75,8 @@
|
||||||
#include "gimptemplate.h"
|
#include "gimptemplate.h"
|
||||||
#include "gimptoolinfo.h"
|
#include "gimptoolinfo.h"
|
||||||
|
|
||||||
|
#include "paint/gimpdynamicsoptions.h"
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -238,6 +240,7 @@ gimp_init (Gimp *gimp)
|
||||||
|
|
||||||
gimp->fonts = NULL;
|
gimp->fonts = NULL;
|
||||||
gimp->brush_factory = NULL;
|
gimp->brush_factory = NULL;
|
||||||
|
gimp->dynamics_factory = NULL;
|
||||||
gimp->pattern_factory = NULL;
|
gimp->pattern_factory = NULL;
|
||||||
gimp->gradient_factory = NULL;
|
gimp->gradient_factory = NULL;
|
||||||
gimp->palette_factory = NULL;
|
gimp->palette_factory = NULL;
|
||||||
|
@ -277,6 +280,9 @@ gimp_dispose (GObject *object)
|
||||||
if (gimp->brush_factory)
|
if (gimp->brush_factory)
|
||||||
gimp_data_factory_data_free (gimp->brush_factory);
|
gimp_data_factory_data_free (gimp->brush_factory);
|
||||||
|
|
||||||
|
if (gimp->dynamics_factory)
|
||||||
|
gimp_data_factory_data_free (gimp->dynamics_factory);
|
||||||
|
|
||||||
if (gimp->pattern_factory)
|
if (gimp->pattern_factory)
|
||||||
gimp_data_factory_data_free (gimp->pattern_factory);
|
gimp_data_factory_data_free (gimp->pattern_factory);
|
||||||
|
|
||||||
|
@ -339,6 +345,12 @@ gimp_finalize (GObject *object)
|
||||||
gimp->brush_factory = NULL;
|
gimp->brush_factory = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gimp->dynamics_factory)
|
||||||
|
{
|
||||||
|
g_object_unref (gimp->dynamics_factory);
|
||||||
|
gimp->dynamics_factory = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (gimp->pattern_factory)
|
if (gimp->pattern_factory)
|
||||||
{
|
{
|
||||||
g_object_unref (gimp->pattern_factory);
|
g_object_unref (gimp->pattern_factory);
|
||||||
|
@ -478,6 +490,8 @@ gimp_get_memsize (GimpObject *object,
|
||||||
gui_size);
|
gui_size);
|
||||||
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimp->brush_factory),
|
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimp->brush_factory),
|
||||||
gui_size);
|
gui_size);
|
||||||
|
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimp->dynamics_factory),
|
||||||
|
gui_size);
|
||||||
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimp->pattern_factory),
|
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimp->pattern_factory),
|
||||||
gui_size);
|
gui_size);
|
||||||
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimp->gradient_factory),
|
memsize += gimp_object_get_memsize (GIMP_OBJECT (gimp->gradient_factory),
|
||||||
|
@ -526,6 +540,12 @@ gimp_real_initialize (Gimp *gimp,
|
||||||
{ gimp_brush_pipe_load, GIMP_BRUSH_PIPE_FILE_EXTENSION, FALSE }
|
{ gimp_brush_pipe_load, GIMP_BRUSH_PIPE_FILE_EXTENSION, FALSE }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const GimpDataFactoryLoaderEntry dynamics_loader_entries[] =
|
||||||
|
{
|
||||||
|
{ gimp_pattern_load, GIMP_PATTERN_FILE_EXTENSION, FALSE },
|
||||||
|
{ gimp_pattern_load_pixbuf, NULL, FALSE }
|
||||||
|
};
|
||||||
|
|
||||||
static const GimpDataFactoryLoaderEntry pattern_loader_entries[] =
|
static const GimpDataFactoryLoaderEntry pattern_loader_entries[] =
|
||||||
{
|
{
|
||||||
{ gimp_pattern_load, GIMP_PATTERN_FILE_EXTENSION, FALSE },
|
{ gimp_pattern_load, GIMP_PATTERN_FILE_EXTENSION, FALSE },
|
||||||
|
@ -566,6 +586,18 @@ gimp_real_initialize (Gimp *gimp,
|
||||||
gimp_object_set_static_name (GIMP_OBJECT (gimp->brush_factory),
|
gimp_object_set_static_name (GIMP_OBJECT (gimp->brush_factory),
|
||||||
"brush factory");
|
"brush factory");
|
||||||
|
|
||||||
|
|
||||||
|
gimp->dynamics_factory =
|
||||||
|
gimp_data_factory_new (gimp,
|
||||||
|
GIMP_TYPE_DYNAMICS_OPTIONS,
|
||||||
|
"dynamics-path", "dynamics-path-writable",
|
||||||
|
dynamics_loader_entries,
|
||||||
|
G_N_ELEMENTS (dynamics_loader_entries),
|
||||||
|
gimp_dynamics_options_new,
|
||||||
|
gimp_dynamics_get_standard);
|
||||||
|
gimp_object_set_static_name (GIMP_OBJECT (gimp->dynamics_factory),
|
||||||
|
"dynamics factory");
|
||||||
|
|
||||||
gimp->pattern_factory =
|
gimp->pattern_factory =
|
||||||
gimp_data_factory_new (gimp,
|
gimp_data_factory_new (gimp,
|
||||||
GIMP_TYPE_PATTERN,
|
GIMP_TYPE_PATTERN,
|
||||||
|
|
|
@ -90,6 +90,7 @@ struct _Gimp
|
||||||
GimpContainer *fonts;
|
GimpContainer *fonts;
|
||||||
|
|
||||||
GimpDataFactory *brush_factory;
|
GimpDataFactory *brush_factory;
|
||||||
|
GimpDataFactory *dynamics_factory;
|
||||||
GimpDataFactory *pattern_factory;
|
GimpDataFactory *pattern_factory;
|
||||||
GimpDataFactory *gradient_factory;
|
GimpDataFactory *gradient_factory;
|
||||||
GimpDataFactory *palette_factory;
|
GimpDataFactory *palette_factory;
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#include "gimptemplate.h"
|
#include "gimptemplate.h"
|
||||||
#include "gimptoolinfo.h"
|
#include "gimptoolinfo.h"
|
||||||
|
|
||||||
|
#include "paint/gimpdynamicsoptions.h"
|
||||||
#include "text/gimpfont.h"
|
#include "text/gimpfont.h"
|
||||||
|
|
||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
@ -156,9 +157,22 @@ static void gimp_context_brush_removed (GimpContainer *brush_list,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
static void gimp_context_brush_list_thaw (GimpContainer *container,
|
static void gimp_context_brush_list_thaw (GimpContainer *container,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
|
|
||||||
static void gimp_context_real_set_brush (GimpContext *context,
|
static void gimp_context_real_set_brush (GimpContext *context,
|
||||||
GimpBrush *brush);
|
GimpBrush *brush);
|
||||||
|
|
||||||
|
/* dynamics */
|
||||||
|
|
||||||
|
static void gimp_context_dynamics_dirty (GimpDynamicsOptions *dynamics,
|
||||||
|
GimpContext *context);
|
||||||
|
static void gimp_context_dynamics_removed (GimpContainer *dynamics_list,
|
||||||
|
GimpDynamicsOptions *dynamics,
|
||||||
|
GimpContext *context);
|
||||||
|
static void gimp_context_dynamics_list_thaw (GimpContainer *container,
|
||||||
|
GimpContext *context);
|
||||||
|
static void gimp_context_real_set_dynamics (GimpContext *context,
|
||||||
|
GimpDynamicsOptions *dynamics);
|
||||||
|
|
||||||
/* pattern */
|
/* pattern */
|
||||||
static void gimp_context_pattern_dirty (GimpPattern *pattern,
|
static void gimp_context_pattern_dirty (GimpPattern *pattern,
|
||||||
GimpContext *context);
|
GimpContext *context);
|
||||||
|
@ -267,6 +281,7 @@ enum
|
||||||
OPACITY_CHANGED,
|
OPACITY_CHANGED,
|
||||||
PAINT_MODE_CHANGED,
|
PAINT_MODE_CHANGED,
|
||||||
BRUSH_CHANGED,
|
BRUSH_CHANGED,
|
||||||
|
DYNAMICS_CHANGED,
|
||||||
PATTERN_CHANGED,
|
PATTERN_CHANGED,
|
||||||
GRADIENT_CHANGED,
|
GRADIENT_CHANGED,
|
||||||
PALETTE_CHANGED,
|
PALETTE_CHANGED,
|
||||||
|
@ -440,6 +455,16 @@ gimp_context_class_init (GimpContextClass *klass)
|
||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
GIMP_TYPE_BRUSH);
|
GIMP_TYPE_BRUSH);
|
||||||
|
|
||||||
|
gimp_context_signals[DYNAMICS_CHANGED] =
|
||||||
|
g_signal_new ("dynamics-changed",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_FIRST,
|
||||||
|
G_STRUCT_OFFSET (GimpContextClass, dynamics_changed),
|
||||||
|
NULL, NULL,
|
||||||
|
gimp_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
GIMP_TYPE_DYNAMICS_OPTIONS);
|
||||||
|
|
||||||
gimp_context_signals[PATTERN_CHANGED] =
|
gimp_context_signals[PATTERN_CHANGED] =
|
||||||
g_signal_new ("pattern-changed",
|
g_signal_new ("pattern-changed",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
@ -527,6 +552,7 @@ gimp_context_class_init (GimpContextClass *klass)
|
||||||
klass->opacity_changed = NULL;
|
klass->opacity_changed = NULL;
|
||||||
klass->paint_mode_changed = NULL;
|
klass->paint_mode_changed = NULL;
|
||||||
klass->brush_changed = NULL;
|
klass->brush_changed = NULL;
|
||||||
|
klass->dynamics_changed = NULL;
|
||||||
klass->pattern_changed = NULL;
|
klass->pattern_changed = NULL;
|
||||||
klass->gradient_changed = NULL;
|
klass->gradient_changed = NULL;
|
||||||
klass->palette_changed = NULL;
|
klass->palette_changed = NULL;
|
||||||
|
@ -539,6 +565,7 @@ gimp_context_class_init (GimpContextClass *klass)
|
||||||
gimp_context_prop_types[GIMP_CONTEXT_PROP_TOOL] = GIMP_TYPE_TOOL_INFO;
|
gimp_context_prop_types[GIMP_CONTEXT_PROP_TOOL] = GIMP_TYPE_TOOL_INFO;
|
||||||
gimp_context_prop_types[GIMP_CONTEXT_PROP_PAINT_INFO] = GIMP_TYPE_PAINT_INFO;
|
gimp_context_prop_types[GIMP_CONTEXT_PROP_PAINT_INFO] = GIMP_TYPE_PAINT_INFO;
|
||||||
gimp_context_prop_types[GIMP_CONTEXT_PROP_BRUSH] = GIMP_TYPE_BRUSH;
|
gimp_context_prop_types[GIMP_CONTEXT_PROP_BRUSH] = GIMP_TYPE_BRUSH;
|
||||||
|
gimp_context_prop_types[GIMP_CONTEXT_PROP_DYNAMICS] = GIMP_TYPE_DYNAMICS_OPTIONS;
|
||||||
gimp_context_prop_types[GIMP_CONTEXT_PROP_PATTERN] = GIMP_TYPE_PATTERN;
|
gimp_context_prop_types[GIMP_CONTEXT_PROP_PATTERN] = GIMP_TYPE_PATTERN;
|
||||||
gimp_context_prop_types[GIMP_CONTEXT_PROP_GRADIENT] = GIMP_TYPE_GRADIENT;
|
gimp_context_prop_types[GIMP_CONTEXT_PROP_GRADIENT] = GIMP_TYPE_GRADIENT;
|
||||||
gimp_context_prop_types[GIMP_CONTEXT_PROP_PALETTE] = GIMP_TYPE_PALETTE;
|
gimp_context_prop_types[GIMP_CONTEXT_PROP_PALETTE] = GIMP_TYPE_PALETTE;
|
||||||
|
@ -609,6 +636,12 @@ gimp_context_class_init (GimpContextClass *klass)
|
||||||
GIMP_TYPE_BRUSH,
|
GIMP_TYPE_BRUSH,
|
||||||
GIMP_PARAM_STATIC_STRINGS);
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_DYNAMICS,
|
||||||
|
gimp_context_prop_names[GIMP_CONTEXT_PROP_DYNAMICS],
|
||||||
|
NULL,
|
||||||
|
GIMP_TYPE_DYNAMICS_OPTIONS,
|
||||||
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_PATTERN,
|
GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_PATTERN,
|
||||||
gimp_context_prop_names[GIMP_CONTEXT_PROP_PATTERN],
|
gimp_context_prop_names[GIMP_CONTEXT_PROP_PATTERN],
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -748,6 +781,13 @@ gimp_context_constructor (GType type,
|
||||||
G_CALLBACK (gimp_context_brush_list_thaw),
|
G_CALLBACK (gimp_context_brush_list_thaw),
|
||||||
object, 0);
|
object, 0);
|
||||||
|
|
||||||
|
g_signal_connect_object (gimp_data_factory_get_container (gimp->dynamics_factory), "remove",
|
||||||
|
G_CALLBACK (gimp_context_dynamics_removed),
|
||||||
|
object, 0);
|
||||||
|
g_signal_connect_object (gimp_data_factory_get_container (gimp->dynamics_factory), "thaw",
|
||||||
|
G_CALLBACK (gimp_context_dynamics_list_thaw),
|
||||||
|
object, 0);
|
||||||
|
|
||||||
g_signal_connect_object (gimp_data_factory_get_container (gimp->pattern_factory), "remove",
|
g_signal_connect_object (gimp_data_factory_get_container (gimp->pattern_factory), "remove",
|
||||||
G_CALLBACK (gimp_context_pattern_removed),
|
G_CALLBACK (gimp_context_pattern_removed),
|
||||||
object, 0);
|
object, 0);
|
||||||
|
@ -977,6 +1017,9 @@ gimp_context_set_property (GObject *object,
|
||||||
case GIMP_CONTEXT_PROP_BRUSH:
|
case GIMP_CONTEXT_PROP_BRUSH:
|
||||||
gimp_context_set_brush (context, g_value_get_object (value));
|
gimp_context_set_brush (context, g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
|
case GIMP_CONTEXT_PROP_DYNAMICS:
|
||||||
|
gimp_context_set_dynamics (context, g_value_get_object (value));
|
||||||
|
break;
|
||||||
case GIMP_CONTEXT_PROP_PATTERN:
|
case GIMP_CONTEXT_PROP_PATTERN:
|
||||||
gimp_context_set_pattern (context, g_value_get_object (value));
|
gimp_context_set_pattern (context, g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
|
@ -1054,6 +1097,9 @@ gimp_context_get_property (GObject *object,
|
||||||
case GIMP_CONTEXT_PROP_BRUSH:
|
case GIMP_CONTEXT_PROP_BRUSH:
|
||||||
g_value_set_object (value, gimp_context_get_brush (context));
|
g_value_set_object (value, gimp_context_get_brush (context));
|
||||||
break;
|
break;
|
||||||
|
case GIMP_CONTEXT_PROP_DYNAMICS:
|
||||||
|
g_value_set_object (value, gimp_context_get_dynamics (context));
|
||||||
|
break;
|
||||||
case GIMP_CONTEXT_PROP_PATTERN:
|
case GIMP_CONTEXT_PROP_PATTERN:
|
||||||
g_value_set_object (value, gimp_context_get_pattern (context));
|
g_value_set_object (value, gimp_context_get_pattern (context));
|
||||||
break;
|
break;
|
||||||
|
@ -1129,6 +1175,7 @@ gimp_context_serialize_property (GimpConfig *config,
|
||||||
case GIMP_CONTEXT_PROP_TOOL:
|
case GIMP_CONTEXT_PROP_TOOL:
|
||||||
case GIMP_CONTEXT_PROP_PAINT_INFO:
|
case GIMP_CONTEXT_PROP_PAINT_INFO:
|
||||||
case GIMP_CONTEXT_PROP_BRUSH:
|
case GIMP_CONTEXT_PROP_BRUSH:
|
||||||
|
case GIMP_CONTEXT_PROP_DYNAMICS:
|
||||||
case GIMP_CONTEXT_PROP_PATTERN:
|
case GIMP_CONTEXT_PROP_PATTERN:
|
||||||
case GIMP_CONTEXT_PROP_GRADIENT:
|
case GIMP_CONTEXT_PROP_GRADIENT:
|
||||||
case GIMP_CONTEXT_PROP_PALETTE:
|
case GIMP_CONTEXT_PROP_PALETTE:
|
||||||
|
@ -1189,6 +1236,12 @@ gimp_context_deserialize_property (GimpConfig *object,
|
||||||
name_loc = &context->brush_name;
|
name_loc = &context->brush_name;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GIMP_CONTEXT_PROP_DYNAMICS:
|
||||||
|
container = gimp_data_factory_get_container (context->gimp->dynamics_factory);
|
||||||
|
current = (GimpObject *) context->dynamics;
|
||||||
|
name_loc = &context->dynamics_name;
|
||||||
|
break;
|
||||||
|
|
||||||
case GIMP_CONTEXT_PROP_PATTERN:
|
case GIMP_CONTEXT_PROP_PATTERN:
|
||||||
container = gimp_data_factory_get_container (context->gimp->pattern_factory);
|
container = gimp_data_factory_get_container (context->gimp->pattern_factory);
|
||||||
current = (GimpObject *) context->pattern;
|
current = (GimpObject *) context->pattern;
|
||||||
|
@ -1492,6 +1545,14 @@ gimp_context_copy_property (GimpContext *src,
|
||||||
dest_name_loc = &dest->brush_name;
|
dest_name_loc = &dest->brush_name;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GIMP_CONTEXT_PROP_DYNAMICS:
|
||||||
|
gimp_context_real_set_dynamics (dest, src->dynamics);
|
||||||
|
object = src->dynamics;
|
||||||
|
standard_object = standard_dynamics;
|
||||||
|
src_name = src->dynamics_name;
|
||||||
|
dest_name_loc = &dest->dynamics_name;
|
||||||
|
break;
|
||||||
|
|
||||||
case GIMP_CONTEXT_PROP_PATTERN:
|
case GIMP_CONTEXT_PROP_PATTERN:
|
||||||
gimp_context_real_set_pattern (dest, src->pattern);
|
gimp_context_real_set_pattern (dest, src->pattern);
|
||||||
object = src->pattern;
|
object = src->pattern;
|
||||||
|
@ -2404,6 +2465,127 @@ gimp_context_real_set_brush (GimpContext *context,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* dynamics *****************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
GimpBrush *
|
||||||
|
gimp_context_get_dynamics (GimpContext *context)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
|
||||||
|
|
||||||
|
return context->dynamics;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_context_set_dynamics (GimpContext *context,
|
||||||
|
GimpDynamicsOptions *dynamics)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GIMP_IS_CONTEXT (context));
|
||||||
|
g_return_if_fail (! dynamics || GIMP_IS_DYNAMICS (dynamics));
|
||||||
|
context_find_defined (context, GIMP_CONTEXT_PROP_DYNAMICS);
|
||||||
|
|
||||||
|
gimp_context_real_set_dynamics (context, dynamics);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_context_dynamics_changed (GimpContext *context)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GIMP_IS_CONTEXT (context));
|
||||||
|
|
||||||
|
g_signal_emit (context,
|
||||||
|
gimp_context_signals[DYNAMICS_CHANGED], 0,
|
||||||
|
context->dynamics);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gimp_context_dynamics_dirty (GimpDynamicsOptions *dynamics,
|
||||||
|
GimpContext *context)
|
||||||
|
{
|
||||||
|
g_free (context->dynamics_name);
|
||||||
|
context->dynamics_name = g_strdup (GIMP_OBJECT (dynamics)->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void gimp_context_dynamics_removed (GimpContainer *dynamics_list,
|
||||||
|
GimpDynamicsOptions *dynamics,
|
||||||
|
GimpContext *context);
|
||||||
|
{
|
||||||
|
if (dynamics == context->dynamics)
|
||||||
|
{
|
||||||
|
context->dynamics = NULL;
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_func (dynamics,
|
||||||
|
gimp_context_dynamics_dirty,
|
||||||
|
context);
|
||||||
|
g_object_unref (dynamics);
|
||||||
|
|
||||||
|
if (! gimp_container_frozen (container))
|
||||||
|
gimp_context_dynamics_list_thaw (container, context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void gimp_context_dynamics_list_thaw (GimpContainer *container,
|
||||||
|
GimpContext *context);
|
||||||
|
{
|
||||||
|
GimpDynamicsOptions *dynamics;
|
||||||
|
/*
|
||||||
|
if (! context->dynamics_name)
|
||||||
|
context->dynamics_name = g_strdup (context->gimp->config->default_dynamics);
|
||||||
|
*/
|
||||||
|
dynamics = gimp_context_find_object (context, container,
|
||||||
|
context->dynamics_name,
|
||||||
|
gimp_dynamics_get_standard ());
|
||||||
|
|
||||||
|
gimp_context_real_set_dynamics (context, dynamics);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
gimp_context_real_set_dynamics (GimpContext *context,
|
||||||
|
GimpDynamicsOptions *dynamics)
|
||||||
|
{
|
||||||
|
/* if (! standard_dynamics)
|
||||||
|
standard_dynamics = GIMP_BRUSH (gimp_dynamics_get_standard ());
|
||||||
|
*/
|
||||||
|
if (context->dynamics == dynamics)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (context->dynamics_name && dynamics != standard_dynamics)
|
||||||
|
{
|
||||||
|
g_free (context->dynamics_name);
|
||||||
|
context->dynamics_name = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* disconnect from the old brush's signals */
|
||||||
|
if (context->dynamics)
|
||||||
|
{
|
||||||
|
g_signal_handlers_disconnect_by_func (context->dynamics,
|
||||||
|
gimp_context_dynamics_dirty,
|
||||||
|
context);
|
||||||
|
g_object_unref (context->dynamics);
|
||||||
|
}
|
||||||
|
|
||||||
|
context->dynamics = dynamics;
|
||||||
|
|
||||||
|
if (dynamics)
|
||||||
|
{
|
||||||
|
g_object_ref (dynamics);
|
||||||
|
|
||||||
|
g_signal_connect_object (dynamics, "name-changed",
|
||||||
|
G_CALLBACK (gimp_context_dynamics_dirty),
|
||||||
|
context,
|
||||||
|
0);
|
||||||
|
|
||||||
|
if (dynamics != standard_dynamics)
|
||||||
|
context->dynamics_name = g_strdup (GIMP_OBJECT (dynamics)->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_object_notify (G_OBJECT (context), "dynamics");
|
||||||
|
gimp_context_dynamics_changed (context);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* pattern *****************************************************************/
|
/* pattern *****************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,9 @@ struct _GimpContext
|
||||||
GimpBrush *brush;
|
GimpBrush *brush;
|
||||||
gchar *brush_name;
|
gchar *brush_name;
|
||||||
|
|
||||||
|
GimpDynamicsOptions *dynamics;
|
||||||
|
gchar *dynamics_name;
|
||||||
|
|
||||||
GimpPattern *pattern;
|
GimpPattern *pattern;
|
||||||
gchar *pattern_name;
|
gchar *pattern_name;
|
||||||
|
|
||||||
|
@ -110,6 +113,8 @@ struct _GimpContextClass
|
||||||
GimpLayerModeEffects paint_mode);
|
GimpLayerModeEffects paint_mode);
|
||||||
void (* brush_changed) (GimpContext *context,
|
void (* brush_changed) (GimpContext *context,
|
||||||
GimpBrush *brush);
|
GimpBrush *brush);
|
||||||
|
void (* dynamics_changed) (GimpContext *context,
|
||||||
|
GimpDynamicsOptions *dynamics);
|
||||||
void (* pattern_changed) (GimpContext *context,
|
void (* pattern_changed) (GimpContext *context,
|
||||||
GimpPattern *pattern);
|
GimpPattern *pattern);
|
||||||
void (* gradient_changed) (GimpContext *context,
|
void (* gradient_changed) (GimpContext *context,
|
||||||
|
@ -257,6 +262,20 @@ void gimp_context_set_brush (GimpContext *context,
|
||||||
GimpBrush *brush);
|
GimpBrush *brush);
|
||||||
void gimp_context_brush_changed (GimpContext *context);
|
void gimp_context_brush_changed (GimpContext *context);
|
||||||
|
|
||||||
|
/* brush */
|
||||||
|
GimpBrush * gimp_context_get_brush (GimpContext *context);
|
||||||
|
void gimp_context_set_brush (GimpContext *context,
|
||||||
|
GimpBrush *brush);
|
||||||
|
void gimp_context_brush_changed (GimpContext *context);
|
||||||
|
|
||||||
|
|
||||||
|
/* dynamics */
|
||||||
|
GimpDynamicsOptions * gimp_context_get_dynamics (GimpContext *context);
|
||||||
|
void gimp_context_set_dynamics (GimpContext *context,
|
||||||
|
GimpDynamicsOptions *dynamics);
|
||||||
|
void gimp_context_dynamics_changed (GimpContext *context);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* pattern */
|
/* pattern */
|
||||||
GimpPattern * gimp_context_get_pattern (GimpContext *context);
|
GimpPattern * gimp_context_get_pattern (GimpContext *context);
|
||||||
|
|
|
@ -1023,6 +1023,26 @@ gimp_dynamics_options_new (GimpPaintInfo *dynamics_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GimpData *
|
||||||
|
gimp_dynamics_get_standard (void)
|
||||||
|
{
|
||||||
|
static GimpData *standard_dynamics = NULL;
|
||||||
|
|
||||||
|
if (! standard_dynamics)
|
||||||
|
{
|
||||||
|
standard_dynamics = gimp_dynamics_options_new ("Standard");
|
||||||
|
|
||||||
|
standard_dynamics->dirty = FALSE;
|
||||||
|
gimp_data_make_internal (standard_dynamics,
|
||||||
|
"gimp-dynamics-standard");
|
||||||
|
|
||||||
|
g_object_ref (standard_dynamics);
|
||||||
|
}
|
||||||
|
|
||||||
|
return standard_dynamics;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Calculates dynamics mix to be used for same parameter
|
/* Calculates dynamics mix to be used for same parameter
|
||||||
* (velocity/pressure/direction/tilt/random) mix Needed in may places and tools.
|
* (velocity/pressure/direction/tilt/random) mix Needed in may places and tools.
|
||||||
*
|
*
|
||||||
|
|
|
@ -98,6 +98,6 @@ GType gimp_dynamics_options_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
GimpData * gimp_dynamics_options_new (GimpPaintInfo *dynamics_info);
|
GimpData * gimp_dynamics_options_new (GimpPaintInfo *dynamics_info);
|
||||||
|
|
||||||
|
GimpData * gimp_dynamics_get_standard (void);
|
||||||
|
|
||||||
#endif /* __GIMP_DYNAMICS_OPTIONS_H__ */
|
#endif /* __GIMP_DYNAMICS_OPTIONS_H__ */
|
||||||
|
|
|
@ -201,8 +201,8 @@ gimp_dynamics_editor_init (GimpDynamicsEditor *editor)
|
||||||
gtk_container_add (GTK_CONTAINER (frame), data_editor->view);
|
gtk_container_add (GTK_CONTAINER (frame), data_editor->view);
|
||||||
gtk_widget_show (data_editor->view);
|
gtk_widget_show (data_editor->view);
|
||||||
|
|
||||||
|
/*
|
||||||
//editor->shape_group = NULL;
|
//editor->shape_group = NULL;
|
||||||
/* table for sliders/labels */
|
|
||||||
editor->options_vbox = gtk_table_new (4, 3, FALSE);
|
editor->options_vbox = gtk_table_new (4, 3, FALSE);
|
||||||
gtk_table_set_row_spacings (GTK_TABLE (editor->options_vbox), 2);
|
gtk_table_set_row_spacings (GTK_TABLE (editor->options_vbox), 2);
|
||||||
gtk_table_set_col_spacings (GTK_TABLE (editor->options_vbox), 2);
|
gtk_table_set_col_spacings (GTK_TABLE (editor->options_vbox), 2);
|
||||||
|
@ -214,7 +214,7 @@ gimp_dynamics_editor_init (GimpDynamicsEditor *editor)
|
||||||
gtk_table_set_row_spacings (GTK_TABLE (table), 2);
|
gtk_table_set_row_spacings (GTK_TABLE (table), 2);
|
||||||
gtk_box_pack_start (GTK_BOX (editor->options_vbox), table, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (editor->options_vbox), table, FALSE, FALSE, 0);
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
g_object_set_data (G_OBJECT (vbox), "set_options", table);
|
g_object_set_data (G_OBJECT (vbox), "set_options", table);
|
||||||
|
|
||||||
|
@ -279,9 +279,9 @@ gimp_dynamics_editor_new (GimpContext *context,
|
||||||
"menu-factory", menu_factory,
|
"menu-factory", menu_factory,
|
||||||
"menu-identifier", "<DynamicsEditor>",
|
"menu-identifier", "<DynamicsEditor>",
|
||||||
"ui-path", "/dynamics-editor-popup",
|
"ui-path", "/dynamics-editor-popup",
|
||||||
"data-factory", context->gimp->brush_factory,
|
"data-factory", context->gimp->dynamics_factory,
|
||||||
"context", context,
|
"context", context,
|
||||||
"data", gimp_context_get_brush (context),
|
"data", gimp_context_get_dynamics (context),*/
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
GtkWidget *vbox;
|
GtkWidget *vbox;
|
||||||
|
@ -297,17 +297,6 @@ gimp_dynamics_editor_new (GimpContext *context,
|
||||||
|
|
||||||
//tool_type = tool_options->tool_info->tool_type;
|
//tool_type = tool_options->tool_info->tool_type;
|
||||||
|
|
||||||
/* the main table */
|
|
||||||
/*
|
|
||||||
return g_object_new (GIMP_TYPE_DYNAMICS_EDITOR,
|
|
||||||
"menu-factory", menu_factory,
|
|
||||||
"menu-identifier", "<DynamicsEditor>",
|
|
||||||
"ui-path", "/dynamics-editor-popup",
|
|
||||||
"data-factory", context->gimp->brush_factory,
|
|
||||||
"context", context,
|
|
||||||
"data", gimp_context_get_brush (context),
|
|
||||||
NULL);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue