diff --git a/app/core/gimp.c b/app/core/gimp.c index ab28202094..be357910c4 100644 --- a/app/core/gimp.c +++ b/app/core/gimp.c @@ -593,7 +593,7 @@ gimp_real_initialize (Gimp *gimp, gimp->dynamics_factory = gimp_data_factory_new (gimp, GIMP_TYPE_DYNAMICS, - "dynamics-path", "dynamics-path-writable", + "brush-path", "brush-path-writable", dynamics_loader_entries, G_N_ELEMENTS (dynamics_loader_entries), gimp_dynamics_new, @@ -700,6 +700,7 @@ gimp_real_exit (Gimp *gimp, gimp_tag_cache_save (gimp->tag_cache); gimp_data_factory_data_save (gimp->brush_factory); + gimp_data_factory_data_save (gimp->dynamics_factory); gimp_data_factory_data_save (gimp->pattern_factory); gimp_data_factory_data_save (gimp->gradient_factory); gimp_data_factory_data_save (gimp->palette_factory); @@ -921,33 +922,37 @@ gimp_restore (Gimp *gimp, status_callback (NULL, _("Brushes"), 0.1); gimp_data_factory_data_init (gimp->brush_factory, gimp->no_data); + /* initialize the list of gimp dynamics */ + status_callback (NULL, _("Dynamics"), 0.2); + gimp_data_factory_data_init (gimp->dynamics_factory, gimp->no_data); + /* initialize the list of gimp patterns */ - status_callback (NULL, _("Patterns"), 0.2); + status_callback (NULL, _("Patterns"), 0.3); gimp_data_factory_data_init (gimp->pattern_factory, gimp->no_data); /* initialize the list of gimp palettes */ - status_callback (NULL, _("Palettes"), 0.3); + status_callback (NULL, _("Palettes"), 0.4); gimp_data_factory_data_init (gimp->palette_factory, gimp->no_data); /* initialize the list of gimp gradients */ - status_callback (NULL, _("Gradients"), 0.4); + status_callback (NULL, _("Gradients"), 0.5); gimp_data_factory_data_init (gimp->gradient_factory, gimp->no_data); /* initialize the list of fonts */ - status_callback (NULL, _("Fonts (this may take a while)"), 0.5); + status_callback (NULL, _("Fonts (this may take a while)"), 0.6); if (! gimp->no_fonts) gimp_fonts_load (gimp); /* initialize the template list */ - status_callback (NULL, _("Templates"), 0.6); + status_callback (NULL, _("Templates"), 0.7); gimp_templates_load (gimp); /* initialize the module list */ - status_callback (NULL, _("Modules"), 0.7); + status_callback (NULL, _("Modules"), 0.8); gimp_modules_load (gimp); /* update tag cache */ - status_callback (NULL, _("Updating tag cache"), 0.8); + status_callback (NULL, _("Updating tag cache"), 0.9); gimp_tag_cache_load (gimp->tag_cache); gimp_tag_cache_add_container (gimp->tag_cache, gimp_data_factory_get_container (gimp->brush_factory)); diff --git a/app/core/gimpcontext.c b/app/core/gimpcontext.c index 6eaf684685..06b24c0483 100644 --- a/app/core/gimpcontext.c +++ b/app/core/gimpcontext.c @@ -164,10 +164,10 @@ static void gimp_context_real_set_brush (GimpContext *context, /* dynamics */ -static void gimp_context_dynamics_dirty (GimpDynamicsOptions *dynamics, - GimpContext *context); +static void gimp_context_dynamics_dirty (GimpDynamics *dynamics, + GimpContext *context); static void gimp_context_dynamics_removed (GimpContainer *container, - GimpDynamicsOptions *dynamics, + GimpDynamics *dynamics, GimpContext *context); static void gimp_context_dynamics_list_thaw (GimpContainer *container, GimpContext *context); @@ -351,7 +351,7 @@ static guint gimp_context_signals[LAST_SIGNAL] = { 0 }; static GimpToolInfo *standard_tool_info = NULL; static GimpPaintInfo *standard_paint_info = NULL; static GimpBrush *standard_brush = NULL; -static GimpDynamicsOptions *standard_dynamics = NULL; +static GimpDynamics *standard_dynamics = NULL; static GimpPattern *standard_pattern = NULL; static GimpGradient *standard_gradient = NULL; static GimpPalette *standard_palette = NULL; @@ -2491,6 +2491,7 @@ GimpDynamics * gimp_context_get_dynamics (GimpContext *context) { g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GIMP_IS_DYNAMICS (context->dynamics), NULL); return context->dynamics; } @@ -2503,6 +2504,7 @@ gimp_context_set_dynamics (GimpContext *context, g_return_if_fail (! dynamics || GIMP_IS_DYNAMICS (dynamics)); context_find_defined (context, GIMP_CONTEXT_PROP_DYNAMICS); + printf("setting&OK\n"); gimp_context_real_set_dynamics (context, dynamics); } @@ -2517,7 +2519,7 @@ gimp_context_dynamics_changed (GimpContext *context) } static void -gimp_context_dynamics_dirty (GimpDynamicsOptions *dynamics, +gimp_context_dynamics_dirty (GimpDynamics *dynamics, GimpContext *context) { g_free (context->dynamics_name); @@ -2525,7 +2527,7 @@ gimp_context_dynamics_dirty (GimpDynamicsOptions *dynamics, } static void gimp_context_dynamics_removed (GimpContainer *container, - GimpDynamicsOptions *dynamics, + GimpDynamics *dynamics, GimpContext *context) { if (dynamics == context->dynamics) @@ -2546,7 +2548,7 @@ static void gimp_context_dynamics_removed (GimpContainer *container, static void gimp_context_dynamics_list_thaw (GimpContainer *container, GimpContext *context) { - GimpDynamicsOptions *dynamics; + GimpDynamics *dynamics; /* if (! context->dynamics_name) context->dynamics_name = g_strdup (context->gimp->config->default_dynamics); @@ -2563,11 +2565,18 @@ static void gimp_context_real_set_dynamics (GimpContext *context, GimpDynamics *dynamics) { + g_return_val_if_fail (GIMP_IS_DYNAMICS (dynamics), NULL); + if (! standard_dynamics) - standard_dynamics = GIMP_DYNAMICS (gimp_dynamics_get_standard ()); + { + standard_dynamics = GIMP_DYNAMICS (gimp_dynamics_get_standard ()); + } if (context->dynamics == dynamics) - return; + { + return; + } + if (context->dynamics_name && dynamics != standard_dynamics) { @@ -2575,7 +2584,7 @@ gimp_context_real_set_dynamics (GimpContext *context, context->dynamics_name = NULL; } - /* disconnect from the old brush's signals */ + /* disconnect from the old 's signals */ if (context->dynamics) { g_signal_handlers_disconnect_by_func (context->dynamics, @@ -2586,6 +2595,7 @@ gimp_context_real_set_dynamics (GimpContext *context, context->dynamics = dynamics; + if (dynamics) { g_object_ref (dynamics); diff --git a/app/core/gimpdynamics.c b/app/core/gimpdynamics.c index 0a62891c77..c2637f3830 100644 --- a/app/core/gimpdynamics.c +++ b/app/core/gimpdynamics.c @@ -26,7 +26,6 @@ #include "paint/paint-types.h" - #include "gimp.h" #include "gimpimage.h" #include "gimpcurve.h" @@ -146,7 +145,7 @@ static void gimp_dynamics_finalize (GObject *object); static void gimp_dynamics_notify (GObject *object, - GParamSpec *pspec); + GParamSpec *pspec); static void gimp_dynamics_set_property (GObject *object, guint property_id, @@ -840,29 +839,11 @@ gimp_dynamics_get_property (GObject *object, static void gimp_dynamics_notify (GObject *object, - GParamSpec *pspec) + GParamSpec *pspec) { -/* + GimpDynamics *options = GIMP_DYNAMICS (object); - if (pspec->param_id == PROP_USE_GRADIENT) - { - if (options->gradient_options->use_gradient) - { - options->application_mode_save = options->application_mode; - options->application_mode = GIMP_PAINT_INCREMENTAL; - } - else - { - options->application_mode = options->application_mode_save; - } - - g_object_notify (object, "application-mode"); - } - - if (G_OBJECT_CLASS (parent_class)->notify) - G_OBJECT_CLASS (parent_class)->notify (object, pspec); - */ } diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c index a41525033f..58563960da 100644 --- a/app/paint/gimpbrushcore.c +++ b/app/paint/gimpbrushcore.c @@ -378,12 +378,7 @@ gimp_brush_core_start (GimpPaintCore *paint_core, GimpBrush *brush; core->dynamics = gimp_context_get_dynamics (GIMP_CONTEXT (paint_options)); - /* If context does not have dynamics object for us, lets get standard*/ - if (!core->dynamics) - { - core->dynamics = GIMP_DYNAMICS(gimp_dynamics_get_standard()); - gimp_context_set_dynamics (GIMP_CONTEXT (paint_options), core->dynamics); - } + printf("PC: %d\n", GIMP_CONTEXT (paint_options)); brush = gimp_context_get_brush (GIMP_CONTEXT (paint_options)); diff --git a/app/paint/gimppaintoptions.c b/app/paint/gimppaintoptions.c index 2ced440080..1b02acc7fc 100644 --- a/app/paint/gimppaintoptions.c +++ b/app/paint/gimppaintoptions.c @@ -172,14 +172,6 @@ gimp_paint_options_class_init (GimpPaintOptionsClass *klass) "jitter-amount", NULL, 0.0, 50.0, DEFAULT_JITTER_AMOUNT, GIMP_PARAM_STATIC_STRINGS); -/*(object_class, PROP_RANDOM_ASPECT_RATIO, - "random-aspect-ratio", NULL, - DEFAULT_RANDOM_ASPECT_RATIO, - GIMP_PARAM_STATIC_STRINGS); - GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_FADING_ASPECT_RATIO, - "fading-aspect-ratio", NULL, - DEFAULT_FADING_ASPECT_RATIO, - GIMP_PARAM_STATIC_STRINGS);*/ GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_USE_GRADIENT, "use-gradient", NULL, DEFAULT_USE_GRADIENT, diff --git a/app/widgets/gimpdynamicseditor.c b/app/widgets/gimpdynamicseditor.c index dfbb3caa84..8cd0dafd26 100644 --- a/app/widgets/gimpdynamicseditor.c +++ b/app/widgets/gimpdynamicseditor.c @@ -37,6 +37,8 @@ #include "core/gimp.h" #include "core/gimpcontext.h" +#include "libgimpconfig/gimpconfig.h" + #include "gimpdocked.h" #include "gimpview.h" #include "gimpviewrenderer.h" @@ -90,9 +92,9 @@ static void gimp_dynamics_editor_set_data (GimpDataEditor *editor, static void gimp_dynamics_editor_set_context (GimpDocked *docked, GimpContext *context); - +/* static void gimp_dynamics_editor_update_dynamics(GtkAdjustment *adjustment, - GimpDynamicsEditor *editor); + GimpDynamicsEditor *editor);*/ static void gimp_dynamics_editor_notify_dynamics (GimpDynamics *options, GParamSpec *pspec, @@ -152,10 +154,7 @@ gimp_dynamics_editor_set_data (GimpDataEditor *editor, GimpData *data) { GimpDynamicsEditor *dynamics_editor = GIMP_DYNAMICS_EDITOR (editor); - //GimpBrushGeneratedShape shape = GIMP_BRUSH_GENERATED_CIRCLE; - //gdouble radius = 0.0; - gboolean pressure_hardness = DEFAULT_PRESSURE_HARDNESS; if (editor->data) g_signal_handlers_disconnect_by_func (editor->data, @@ -174,111 +173,26 @@ gimp_dynamics_editor_set_data (GimpDataEditor *editor, if (editor->data && GIMP_IS_DYNAMICS (editor->data)) { GimpDynamics *options = GIMP_DYNAMICS (editor->data); - // dynamics_editor->pressure_hardness_data = options->hardness_dynamics->pressure; } - //gtk_adjustment_set_value (dynamics_editor->pressure_hardness_data, pressure_hardness ); - } static void gimp_dynamics_editor_notify_dynamics (GimpDynamics *options, - GParamSpec *pspec, - GimpDynamicsEditor *editor) + GParamSpec *pspec, + GimpDynamicsEditor *editor) { - GtkAdjustment *adj = NULL; - gdouble value = 0.0; -/* - if (! strcmp (pspec->name, "pressure-hardness")) - { - g_signal_handlers_block_by_func (editor->pressure_hardness_data, - gimp_brush_editor_update_shape, - editor); + GimpDataEditor *data_editor = GIMP_DATA_EDITOR (editor); - gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (editor->shape_group), - brush->shape); + g_return_val_if_fail (GIMP_IS_CONTEXT (data_editor->context), NULL); - g_signal_handlers_unblock_by_func (editor->shape_group, - gimp_brush_editor_update_shape, - editor); + GimpDynamics *context_dyn = gimp_get_user_context(data_editor->context->gimp)->dynamics; - adj = editor->radius_data; - value = brush->radius; - } - else if (! strcmp (pspec->name, "radius")) - { - adj = editor->radius_data; - value = brush->radius; - } - */ - if (adj) - { - g_signal_handlers_block_by_func (adj, - gimp_dynamics_editor_update_dynamics, - editor); + g_return_val_if_fail (GIMP_IS_DYNAMICS (context_dyn), NULL); - gtk_adjustment_set_value (adj, value); + gimp_config_copy(options, context_dyn, 0); + printf("SET to context %d\n", gimp_get_user_context(data_editor->context->gimp)); - g_signal_handlers_unblock_by_func (adj, - gimp_dynamics_editor_update_dynamics, - editor); - } -} - - -static void -gimp_dynamics_editor_update_dynamics (GtkAdjustment *adjustment, - GimpDynamicsEditor *editor) -{ - GimpDynamics *dynamics; - gboolean pressure_hardness; - /*gint spikes; - gdouble hardness; - gdouble ratio; - gdouble angle; - gdouble spacing; -*/ - if (! GIMP_IS_DYNAMICS (GIMP_DATA_EDITOR (editor)->data)) - return; - - dynamics = GIMP_DYNAMICS (GIMP_DATA_EDITOR (editor)->data); - - //pressure_hardness = gtk_adjustment_get_value (editor->pressure_hardness_data); - /*spikes = ROUND (gtk_adjustment_get_value (editor->spikes_data)); - hardness = gtk_adjustment_get_value (editor->hardness_data); - ratio = gtk_adjustment_get_value (editor->aspect_ratio_data); - angle = gtk_adjustment_get_value (editor->angle_data); - spacing = gtk_adjustment_get_value (editor->spacing_data); -*/ - if (pressure_hardness != DEFAULT_PRESSURE_HARDNESS) - /*|| - spikes != gimp_brush_generated_get_spikes (brush) || - hardness != gimp_brush_generated_get_hardness (brush) || - ratio != gimp_brush_generated_get_aspect_ratio (brush) || - angle != gimp_brush_generated_get_angle (brush) || - spacing != gimp_brush_get_spacing (GIMP_BRUSH (brush))) - */{ - g_signal_handlers_block_by_func (dynamics, - gimp_dynamics_editor_notify_dynamics, - editor); - - gimp_data_freeze (GIMP_DATA (dynamics)); - g_object_freeze_notify (G_OBJECT (dynamics)); -/* - gimp_brush_generated_set_radius (brush, radius); - gimp_brush_generated_set_spikes (brush, spikes); - gimp_brush_generated_set_hardness (brush, hardness); - gimp_brush_generated_set_aspect_ratio (brush, ratio); - gimp_brush_generated_set_angle (brush, angle); - gimp_brush_set_spacing (GIMP_BRUSH (brush), spacing); -*/ - g_object_thaw_notify (G_OBJECT (dynamics)); - gimp_data_thaw (GIMP_DATA (dynamics)); - - g_signal_handlers_unblock_by_func (dynamics, - gimp_dynamics_editor_notify_dynamics, - editor); - } } @@ -316,6 +230,11 @@ gimp_dynamics_editor_new (GimpContext *context, "data", gimp_context_get_dynamics (context), NULL); + + g_signal_connect (editor->dynamics_model, "notify", + G_CALLBACK (gimp_dynamics_editor_notify_dynamics), + editor); + return editor; } @@ -342,18 +261,20 @@ gimp_dynamics_editor_init (GimpDynamicsEditor *editor) GimpDynamics *dynamics = editor->dynamics_model; + GtkWidget *frame; + GtkWidget *box; + GtkWidget *vbox; GtkWidget *table; GtkWidget *label; gint n_dynamics = 0; GtkWidget *dynamics_labels[7]; - //GObject *config = get_config_value (editor); - //GObject *config = G_OBJECT(editor->data); GObject *config = G_OBJECT(dynamics); - vbox = gtk_vbox_new (FALSE, 6); - gtk_box_pack_start (GTK_BOX (data_editor), vbox, TRUE, TRUE, 0); - gtk_widget_show (vbox); + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); + gtk_box_pack_start (GTK_BOX (editor), frame, TRUE, TRUE, 0); + gtk_widget_show (frame); data_editor->view = gimp_view_new_full_by_types (NULL, GIMP_TYPE_VIEW, @@ -361,11 +282,19 @@ gimp_dynamics_editor_init (GimpDynamicsEditor *editor) DYNAMICS_VIEW_SIZE, DYNAMICS_VIEW_SIZE, 0, FALSE, FALSE, TRUE); + gtk_widget_set_size_request (data_editor->view, -1, DYNAMICS_VIEW_SIZE); gimp_view_set_expand (GIMP_VIEW (data_editor->view), TRUE); - gtk_container_add (GTK_CONTAINER (vbox), data_editor->view); + gtk_container_add (GTK_CONTAINER (frame), data_editor->view); gtk_widget_show (data_editor->view); + + + vbox = gtk_vbox_new (FALSE, 6); + gtk_container_add (GTK_CONTAINER (data_editor->view), vbox); + //gtk_box_pack_start (GTK_BOX (data_editor), vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + //n_dynamics = 5; dynamics_labels[n_dynamics] = gtk_label_new (_("Opacity"));