--- a/console/libgnt/gntwidget.h Sun Nov 05 14:57:05 2006 +0000 +++ b/console/libgnt/gntwidget.h Sun Nov 05 17:28:33 2006 +0000 @@ -3,14 +3,15 @@ #include <stdio.h> #include <glib.h> -#include <glib-object.h> #include <ncurses.h> +#include "gntbindable.h" + #define GNT_TYPE_WIDGET (gnt_widget_get_gtype()) #define GNT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_WIDGET, GntWidget)) #define GNT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_WIDGET, GntWidgetClass)) #define GNT_IS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_WIDGET)) -#define GNT_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_WIDGET)) +#define GNT_IS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_WIDGET)) #define GNT_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_WIDGET, GntWidgetClass)) #define GNT_WIDGET_FLAGS(obj) (GNT_WIDGET(obj)->priv.flags) @@ -18,8 +19,6 @@ #define GNT_WIDGET_UNSET_FLAGS(obj, flags) (GNT_WIDGET_FLAGS(obj) &= ~(flags)) #define GNT_WIDGET_IS_FLAG_SET(obj, flags) (GNT_WIDGET_FLAGS(obj) & (flags)) -#define GNTDEBUG fprintf(stderr, "%s\n", __FUNCTION__) - typedef struct _GnWidget GntWidget; typedef struct _GnWidgetPriv GntWidgetPriv; typedef struct _GnWidgetClass GntWidgetClass; @@ -42,6 +41,7 @@ GNT_WIDGET_TRANSIENT = 1 << 11, } GntWidgetFlags; +/* XXX: This will probably move elsewhere */ typedef enum _GnMouseEvent { GNT_LEFT_MOUSE_DOWN = 1, @@ -70,7 +70,7 @@ struct _GnWidget { - GObject inherit; + GntBindable inherit; GntWidget *parent; @@ -85,11 +85,7 @@ struct _GnWidgetClass { - GObjectClass parent; - - GHashTable *remaps; /* Key remaps */ - GHashTable *actions; /* name -> Action */ - GHashTable *bindings; /* key -> ActionParam */ + GntBindableClass parent; void (*map)(GntWidget *obj); void (*show)(GntWidget *obj); /* This will call draw() and take focus (if it can take focus) */ @@ -151,44 +147,6 @@ gboolean gnt_widget_has_shadow(GntWidget *widget); -/******************/ -/* Widget Actions */ -/******************/ -typedef gboolean (*GntWidgetActionCallback) (GntWidget *widget, GList *params); -typedef gboolean (*GntWidgetActionCallbackNoParam)(GntWidget *widget); - -typedef struct _GnWidgetAction GntWidgetAction; -typedef struct _GnWidgetActionParam GntWidgetActionParam; - -struct _GnWidgetAction -{ - char *name; /* The name of the action */ - union { - gboolean (*action)(GntWidget *widget, GList *params); - gboolean (*action_noparam)(GntWidget *widget); - } u; -}; - -struct _GnWidgetActionParam -{ - GntWidgetAction *action; - GList *list; -}; - - -GntWidgetAction *gnt_widget_action_parse(const char *name); - -void gnt_widget_action_free(GntWidgetAction *action); -void gnt_widget_action_param_free(GntWidgetActionParam *param); - -void gnt_widget_register_binding(GntWidgetClass *klass, const char *name, - const char *trigger, ...); - -void gnt_widget_class_register_action(GntWidgetClass *klass, const char *name, - GntWidgetActionCallback callback, const char *trigger, ...); - -gboolean gnt_widget_perform_action_named(GntWidget *widget, const char *name, ...); - G_END_DECLS #endif /* GNT_WIDGET_H */