1 #include <webkit/webkitpopupfactory.h>
3 #include <clutter/clutter.h>
4 #include "popup-factory.h"
6 static void popup_factory_iface_init (WebKitPopupFactoryInterface *iface);
19 G_DEFINE_TYPE_WITH_CODE (PopupFactory, popup_factory, TIDY_TYPE_LIST_VIEW,
20 G_IMPLEMENT_INTERFACE (WEBKIT_TYPE_POPUP_FACTORY,
21 popup_factory_iface_init));
22 #define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), POPUP_TYPE_FACTORY, PopupFactoryPrivate))
24 struct _PopupFactoryPrivate
29 static guint32 signals[LAST_SIGNAL] = {0, };
32 popup_factory_class_init (PopupFactoryClass *klass)
34 g_type_class_add_private (klass, sizeof (PopupFactoryPrivate));
36 signals[SHOW_MENU] = g_signal_new ("show-menu",
37 G_TYPE_FROM_CLASS (klass),
40 G_STRUCT_OFFSET ( PopupFactoryClass,
43 g_cclosure_marshal_VOID__VOID,
46 signals[HIDE_MENU] = g_signal_new ("hide-menu",
47 G_TYPE_FROM_CLASS (klass),
50 G_STRUCT_OFFSET ( PopupFactoryClass,
53 g_cclosure_marshal_VOID__VOID,
58 popup_factory_init (PopupFactory *factory)
60 PopupFactoryPrivate *priv = factory->priv = GET_PRIVATE (factory);
62 priv->model = clutter_list_model_new (LAST_COLUMN, G_TYPE_STRING, "name");
63 g_object_set (G_OBJECT (factory),
69 factory_clear (WebKitPopupFactory *factory)
71 PopupFactoryPrivate *priv = POPUP_FACTORY (factory)->priv;
74 g_object_unref (priv->model);
77 priv->model = clutter_list_model_new (LAST_COLUMN, G_TYPE_STRING, "name");
81 factory_append_separator (WebKitPopupFactory *factory)
86 factory_append_item (WebKitPopupFactory *factory,
89 PopupFactoryPrivate *priv = POPUP_FACTORY (factory)->priv;
91 clutter_model_append (priv->model, NAME_COLUMN, text, -1);
95 factory_show (WebKitPopupFactory *factory, int index)
97 PopupFactoryPrivate *priv = POPUP_FACTORY (factory)->priv;
99 tidy_list_view_set_model (TIDY_LIST_VIEW (factory), priv->model);
100 g_signal_emit (factory, signals[SHOW_MENU], 0);
104 factory_hide (WebKitPopupFactory *factory)
106 g_signal_emit (factory, signals[HIDE_MENU], 0);
107 tidy_list_view_set_model (TIDY_LIST_VIEW (factory), NULL);
111 popup_factory_iface_init (WebKitPopupFactoryInterface *iface)
113 iface->clear = factory_clear;
114 iface->append_separator = factory_append_separator;
115 iface->append_item = factory_append_item;
116 iface->show = factory_show;
117 iface->hide = factory_hide;