From f3b7f4161cdc873858de320ff3a4fc06b4af45f4 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Wed, 16 Jun 2004 00:52:28 +0000 Subject: [PATCH] added a "name" property. Dispatch events only if the controller is 2004-06-16 Michael Natterer * libgimpwidgets/gimpcontroller.[ch]: added a "name" property. Dispatch events only if the controller is enabled. * app/widgets/gimpcontrollerwheel.c: added controller events for all possible modifier combinations. * etc/Makefile.am * etc/controllerrc: default controllerrc which maps all unused wheel+modifier combinations to more-or-less usefull stuff. --- ChangeLog | 12 +++++ app/widgets/gimpcontrollerwheel.c | 80 ++++++++++++++++++++++++------- etc/Makefile.am | 3 +- etc/controllerrc | 13 +++++ libgimpwidgets/gimpcontroller.c | 19 +++++++- libgimpwidgets/gimpcontroller.h | 5 +- 6 files changed, 111 insertions(+), 21 deletions(-) create mode 100644 etc/controllerrc diff --git a/ChangeLog b/ChangeLog index 6439b1b9d1..159278d96e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2004-06-16 Michael Natterer + + * libgimpwidgets/gimpcontroller.[ch]: added a "name" property. + Dispatch events only if the controller is enabled. + + * app/widgets/gimpcontrollerwheel.c: added controller events for + all possible modifier combinations. + + * etc/Makefile.am + * etc/controllerrc: default controllerrc which maps all unused + wheel+modifier combinations to more-or-less usefull stuff. + 2004-06-16 Michael Natterer Started to fix bug #106920 in a more genreral way: diff --git a/app/widgets/gimpcontrollerwheel.c b/app/widgets/gimpcontrollerwheel.c index 07ed06f970..5d1ac63a74 100644 --- a/app/widgets/gimpcontrollerwheel.c +++ b/app/widgets/gimpcontrollerwheel.c @@ -54,25 +54,73 @@ static GimpControllerClass *parent_class = NULL; static const WheelEvent wheel_events[] = { - { GDK_SCROLL_UP, GDK_MOD1_MASK, N_("Alt + Scroll Up") }, - { GDK_SCROLL_UP, GDK_CONTROL_MASK, N_("Control + Scroll Up") }, - { GDK_SCROLL_UP, GDK_SHIFT_MASK, N_("Shift + Scroll Up") }, - { GDK_SCROLL_UP, 0, N_("Scroll Up") }, + { GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Alt + Control + Shift + Scroll Up") }, + { GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_CONTROL_MASK, + N_("Alt + Control + Scroll Up") }, + { GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_SHIFT_MASK, + N_("Alt + Shift + Scroll Up") }, + { GDK_SCROLL_UP, GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Control + Shift + Scroll Up") }, + { GDK_SCROLL_UP, GDK_MOD1_MASK, + N_("Alt + Scroll Up") }, + { GDK_SCROLL_UP, GDK_CONTROL_MASK, + N_("Control + Scroll Up") }, + { GDK_SCROLL_UP, GDK_SHIFT_MASK, + N_("Shift + Scroll Up") }, + { GDK_SCROLL_UP, 0, + N_("Scroll Up") }, - { GDK_SCROLL_DOWN, GDK_MOD1_MASK, N_("Alt + Scroll Down") }, - { GDK_SCROLL_DOWN, GDK_CONTROL_MASK, N_("Control + Scroll Down") }, - { GDK_SCROLL_DOWN, GDK_SHIFT_MASK, N_("Shift + Scroll Down") }, - { GDK_SCROLL_DOWN, 0, N_("Scroll Down") }, + { GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Alt + Control + Shift + Scroll Down") }, + { GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_CONTROL_MASK, + N_("Alt + Control + Scroll Down") }, + { GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_SHIFT_MASK, + N_("Alt + Shift + Scroll Down") }, + { GDK_SCROLL_DOWN, GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Control + Shift + Scroll Down") }, + { GDK_SCROLL_DOWN, GDK_MOD1_MASK, + N_("Alt + Scroll Down") }, + { GDK_SCROLL_DOWN, GDK_CONTROL_MASK, + N_("Control + Scroll Down") }, + { GDK_SCROLL_DOWN, GDK_SHIFT_MASK, + N_("Shift + Scroll Down") }, + { GDK_SCROLL_DOWN, 0, + N_("Scroll Down") }, - { GDK_SCROLL_LEFT, GDK_MOD1_MASK, N_("Alt + Scroll Left") }, - { GDK_SCROLL_LEFT, GDK_CONTROL_MASK, N_("Control + Scroll Left") }, - { GDK_SCROLL_LEFT, GDK_SHIFT_MASK, N_("Shift + Scroll Left") }, - { GDK_SCROLL_LEFT, 0, N_("Scroll Left") }, + { GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Alt + Control + Shift + Scroll Left") }, + { GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_CONTROL_MASK, + N_("Alt + Control + Scroll Left") }, + { GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_SHIFT_MASK, + N_("Alt + Shift + Scroll Left") }, + { GDK_SCROLL_LEFT, GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Control + Shift + Scroll Left") }, + { GDK_SCROLL_LEFT, GDK_MOD1_MASK, + N_("Alt + Scroll Left") }, + { GDK_SCROLL_LEFT, GDK_CONTROL_MASK, + N_("Control + Scroll Left") }, + { GDK_SCROLL_LEFT, GDK_SHIFT_MASK, + N_("Shift + Scroll Left") }, + { GDK_SCROLL_LEFT, 0, + N_("Scroll Left") }, - { GDK_SCROLL_RIGHT, GDK_MOD1_MASK, N_("Alt + Scroll Right") }, - { GDK_SCROLL_RIGHT, GDK_CONTROL_MASK, N_("Control + Scroll Right") }, - { GDK_SCROLL_RIGHT, GDK_SHIFT_MASK, N_("Shift + Scroll Right") }, - { GDK_SCROLL_RIGHT, 0, N_("Scroll Right") } + { GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Alt + Control + Shift + Scroll Right") }, + { GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_CONTROL_MASK, + N_("Alt + Control + Scroll Right") }, + { GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_SHIFT_MASK, + N_("Alt + Shift + Scroll Right") }, + { GDK_SCROLL_RIGHT, GDK_CONTROL_MASK | GDK_SHIFT_MASK, + N_("Control + Shift + Scroll Right") }, + { GDK_SCROLL_RIGHT, GDK_MOD1_MASK, + N_("Alt + Scroll Right") }, + { GDK_SCROLL_RIGHT, GDK_CONTROL_MASK, + N_("Control + Scroll Right") }, + { GDK_SCROLL_RIGHT, GDK_SHIFT_MASK, + N_("Shift + Scroll Right") }, + { GDK_SCROLL_RIGHT, 0, + N_("Scroll Right") } }; diff --git a/etc/Makefile.am b/etc/Makefile.am index e69c36af2c..dc17a4fea9 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -6,7 +6,8 @@ gimpsysconf_DATA = \ templaterc \ unitrc \ ps-menurc \ - sessionrc + sessionrc \ + controllerrc EXTRA_DIST = \ $(gimpsysconf_DATA) diff --git a/etc/controllerrc b/etc/controllerrc new file mode 100644 index 0000000000..b8142ebce7 --- /dev/null +++ b/etc/controllerrc @@ -0,0 +1,13 @@ +# GIMP controllerrc + +(controller "GimpControllerWheel" + (mapping 0 "context-font-next") + (mapping 1 "context-gradient-next") + (mapping 2 "context-pattern-next") + (mapping 3 "context-brush-next") + (mapping 4 "context-opacity-increase") + (mapping 8 "context-font-previous") + (mapping 9 "context-gradient-previous") + (mapping 10 "context-pattern-previous") + (mapping 11 "context-brush-previous") + (mapping 12 "context-opacity-decrease")) diff --git a/libgimpwidgets/gimpcontroller.c b/libgimpwidgets/gimpcontroller.c index 9937691b73..77eea90344 100644 --- a/libgimpwidgets/gimpcontroller.c +++ b/libgimpwidgets/gimpcontroller.c @@ -35,6 +35,7 @@ enum { PROP_0, + PROP_NAME, PROP_ENABLED }; @@ -115,6 +116,11 @@ gimp_controller_class_init (GimpControllerClass *klass) object_class->set_property = gimp_controller_set_property; object_class->get_property = gimp_controller_get_property; + g_object_class_install_property (object_class, PROP_NAME, + g_param_spec_string ("name", NULL, NULL, + "Unnamed Controller", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT)); g_object_class_install_property (object_class, PROP_ENABLED, g_param_spec_boolean ("enabled", NULL, NULL, TRUE, @@ -149,6 +155,11 @@ gimp_controller_set_property (GObject *object, switch (property_id) { + case PROP_NAME: + if (controller->name) + g_free (controller->name); + controller->name = g_value_dup_string (value); + break; case PROP_ENABLED: controller->enabled = g_value_get_boolean (value); break; @@ -168,6 +179,9 @@ gimp_controller_get_property (GObject *object, switch (property_id) { + case PROP_NAME: + g_value_set_string (value, controller->name); + break; case PROP_ENABLED: g_value_set_boolean (value, controller->enabled); break; @@ -245,8 +259,9 @@ gimp_controller_event (GimpController *controller, g_return_val_if_fail (GIMP_IS_CONTROLLER (controller), FALSE); g_return_val_if_fail (event != NULL, FALSE); - g_signal_emit (controller, controller_signals[EVENT], 0, - event, &retval); + if (controller->enabled) + g_signal_emit (controller, controller_signals[EVENT], 0, + event, &retval); return retval; } diff --git a/libgimpwidgets/gimpcontroller.h b/libgimpwidgets/gimpcontroller.h index 5cf4ab7209..e87f6ebee9 100644 --- a/libgimpwidgets/gimpcontroller.h +++ b/libgimpwidgets/gimpcontroller.h @@ -81,9 +81,10 @@ typedef struct _GimpControllerClass GimpControllerClass; struct _GimpController { - GObject parent_instance; + GObject parent_instance; - gboolean enabled; + gchar *name; + gboolean enabled; }; struct _GimpControllerClass