diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 03:13:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 03:13:10 +0000 |
commit | 3c57dd931145d43f2b0aef96c4d178135956bf91 (patch) | |
tree | 3de698981e9f0cc2c4f9569b19a5f3595e741f6b /app/widgets/gimpstringaction.c | |
parent | Initial commit. (diff) | |
download | gimp-3c57dd931145d43f2b0aef96c4d178135956bf91.tar.xz gimp-3c57dd931145d43f2b0aef96c4d178135956bf91.zip |
Adding upstream version 2.10.36.upstream/2.10.36
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | app/widgets/gimpstringaction.c | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/app/widgets/gimpstringaction.c b/app/widgets/gimpstringaction.c new file mode 100644 index 0000000..a2db7ca --- /dev/null +++ b/app/widgets/gimpstringaction.c @@ -0,0 +1,162 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * gimpstringaction.c + * Copyright (C) 2004 Michael Natterer <mitch@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gtk/gtk.h> + +#include "widgets-types.h" + +#include "gimpaction.h" +#include "gimpaction-history.h" +#include "gimpstringaction.h" + + +enum +{ + PROP_0, + PROP_VALUE +}; + + +static void gimp_string_action_finalize (GObject *object); +static void gimp_string_action_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gimp_string_action_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +static void gimp_string_action_activate (GtkAction *action); + + +G_DEFINE_TYPE (GimpStringAction, gimp_string_action, GIMP_TYPE_ACTION_IMPL) + +#define parent_class gimp_string_action_parent_class + + +static void +gimp_string_action_class_init (GimpStringActionClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkActionClass *action_class = GTK_ACTION_CLASS (klass); + + object_class->finalize = gimp_string_action_finalize; + object_class->set_property = gimp_string_action_set_property; + object_class->get_property = gimp_string_action_get_property; + + action_class->activate = gimp_string_action_activate; + + g_object_class_install_property (object_class, PROP_VALUE, + g_param_spec_string ("value", + NULL, NULL, + NULL, + GIMP_PARAM_READWRITE)); +} + +static void +gimp_string_action_init (GimpStringAction *action) +{ +} + +static void +gimp_string_action_finalize (GObject *object) +{ + GimpStringAction *action = GIMP_STRING_ACTION (object); + + g_clear_pointer (&action->value, g_free); + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +static void +gimp_string_action_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GimpStringAction *action = GIMP_STRING_ACTION (object); + + switch (prop_id) + { + case PROP_VALUE: + g_value_set_string (value, action->value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gimp_string_action_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GimpStringAction *action = GIMP_STRING_ACTION (object); + + switch (prop_id) + { + case PROP_VALUE: + g_free (action->value); + action->value = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +GimpStringAction * +gimp_string_action_new (const gchar *name, + const gchar *label, + const gchar *tooltip, + const gchar *icon_name, + const gchar *help_id, + const gchar *value) +{ + GimpStringAction *action; + + action = g_object_new (GIMP_TYPE_STRING_ACTION, + "name", name, + "label", label, + "tooltip", tooltip, + "icon-name", icon_name, + "value", value, + NULL); + + gimp_action_set_help_id (GIMP_ACTION (action), help_id); + + return action; +} + +static void +gimp_string_action_activate (GtkAction *action) +{ + GimpStringAction *string_action = GIMP_STRING_ACTION (action); + + gimp_action_emit_activate (GIMP_ACTION (action), + g_variant_new_string (string_action->value)); + + gimp_action_history_action_activated (GIMP_ACTION (action)); +} |