]> Pileus Git - ~andy/gtk/commitdiff
GtkColorSwatch: Add accessible actions
authorMatthias Clasen <mclasen@redhat.com>
Wed, 15 Feb 2012 02:03:11 +0000 (21:03 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 15 Feb 2012 02:16:52 +0000 (21:16 -0500)
gtk/a11y/Makefile.am
gtk/a11y/gtkcolorswatchaccessible.c [new file with mode: 0644]
gtk/a11y/gtkcolorswatchaccessible.h [new file with mode: 0644]
gtk/gtkcolorswatch.c

index b8b69e4e24445e23d1dea7725223c42af9f6445b..c3e92694f04caa61506845a7865958ada334f27f 100644 (file)
@@ -11,6 +11,7 @@ gail_c_sources =                      \
        gtkcellaccessible.c             \
        gtkcellaccessibleparent.c       \
        gtkcheckmenuitemaccessible.c    \
+       gtkcolorswatchaccessible.c      \
        gtkcomboboxaccessible.c         \
        gtkcontaineraccessible.c        \
        gtkcontainercellaccessible.c    \
@@ -59,6 +60,7 @@ gail_private_h_sources =              \
        gtkcellaccessible.h             \
        gtkcellaccessibleparent.h       \
        gtkcheckmenuitemaccessible.h    \
+       gtkcolorswatchaccessible.h      \
        gtkcomboboxaccessible.h         \
        gtkcontaineraccessible.h        \
        gtkcontainercellaccessible.h    \
diff --git a/gtk/a11y/gtkcolorswatchaccessible.c b/gtk/a11y/gtkcolorswatchaccessible.c
new file mode 100644 (file)
index 0000000..825e25b
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2012 Red Hat, Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gtk/gtk.h>
+#include "gtkcolorswatchaccessible.h"
+
+static void atk_action_interface_init (AtkActionIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (GtkColorSwatchAccessible, _gtk_color_swatch_accessible, GTK_TYPE_WIDGET_ACCESSIBLE,
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_action_interface_init))
+
+static void
+_gtk_color_swatch_accessible_class_init (GtkColorSwatchAccessibleClass *klass)
+{
+}
+
+static void
+_gtk_color_swatch_accessible_init (GtkColorSwatchAccessible *scale)
+{
+}
+
+static gint
+gtk_color_swatch_accessible_get_n_actions (AtkAction *action)
+{
+  return 3;
+}
+
+static const gchar *
+gtk_color_swatch_accessible_get_keybinding (AtkAction *action,
+                                            gint       i)
+{
+  return NULL;
+}
+
+static const gchar *
+gtk_color_swatch_accessible_get_name (AtkAction *action,
+                                      gint       i)
+{
+  switch (i)
+    {
+    case 0: return "select";
+    case 1: return "activate";
+    case 2: return "customize";
+    default: return NULL;
+    }
+}
+
+static gboolean
+gtk_color_swatch_accessible_do_action (AtkAction *action,
+                                       gint       i)
+{
+  GtkWidget *widget;
+
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (action));
+  if (widget == NULL)
+    return FALSE;
+
+  switch (i)
+    {
+    case 0:
+      gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_SELECTED, FALSE);
+      break;
+
+    case 1:
+      g_signal_emit_by_name (widget, "activate");
+      break;
+
+    case 2:
+      g_signal_emit_by_name (widget, "customize");
+      break;
+
+    default:
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
+static void
+atk_action_interface_init (AtkActionIface *iface)
+{
+  iface->do_action = gtk_color_swatch_accessible_do_action;
+  iface->get_n_actions = gtk_color_swatch_accessible_get_n_actions;
+  iface->get_keybinding = gtk_color_swatch_accessible_get_keybinding;
+  iface->get_name = gtk_color_swatch_accessible_get_name;
+}
diff --git a/gtk/a11y/gtkcolorswatchaccessible.h b/gtk/a11y/gtkcolorswatchaccessible.h
new file mode 100644 (file)
index 0000000..c1cb2f4
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2012, Red Hat, Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GTK_COLOR_SWATCH_ACCESSIBLE_H__
+#define __GTK_COLOR_SWATCH_ACCESSIBLE_H__
+
+#include "gtkwidgetaccessible.h"
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_COLOR_SWATCH_ACCESSIBLE                         (_gtk_color_swatch_accessible_get_type ())
+#define GTK_COLOR_SWATCH_ACCESSIBLE(obj)                         (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_COLOR_SWATCH_ACCESSIBLE, GtkColorSwatchAccessible))
+#define GTK_COLOR_SWATCH_ACCESSIBLE_CLASS(klass)                       (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_COLOR_SWATCH_ACCESSIBLE, GtkColorSwatchAccessibleClass))
+#define GTK_IS_COLOR_SWATCH_ACCESSIBLE(obj)                      (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_COLOR_SWATCH_ACCESSIBLE))
+#define GTK_IS_COLOR_SWATCH_ACCESSIBLE_CLASS(klass)              (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_COLOR_SWATCH_ACCESSIBLE))
+#define GTK_COLOR_SWATCH_ACCESSIBLE_GET_CLASS(obj)             (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_COLOR_SWATCH_ACCESSIBLE, GtkColorSwatchAccessibleClass))
+
+typedef struct _GtkColorSwatchAccessible      GtkColorSwatchAccessible;
+typedef struct _GtkColorSwatchAccessibleClass GtkColorSwatchAccessibleClass;
+
+struct _GtkColorSwatchAccessible
+{
+  GtkWidgetAccessible parent;
+};
+
+struct _GtkColorSwatchAccessibleClass
+{
+  GtkWidgetAccessibleClass parent_class;
+};
+
+GType _gtk_color_swatch_accessible_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GTK_COLOR_SWATCH_ACCESSIBLE_H__ */
index 8e9c38525e6442246b8f5a4d5ba87ffc2e386ae9..11f5d392ea08a54b056c963d529254ea21942857 100644 (file)
@@ -32,6 +32,7 @@
 #include "gtkmenushell.h"
 #include "gtkprivate.h"
 #include "gtkintl.h"
+#include "a11y/gtkcolorswatchaccessible.h"
 
 
 struct _GtkColorSwatchPrivate
@@ -589,6 +590,8 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
                           GDK_TYPE_RGBA, GTK_PARAM_READWRITE));
 
   g_type_class_add_private (object_class, sizeof (GtkColorSwatchPrivate));
+
+  gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_COLOR_SWATCH_ACCESSIBLE);
 }
 
 /* Public API {{{1 */