#include <entity.h>
#include <gnome.h>
#include <applet-widget.h>
#include <gtk-common.h>
static void
rendapplet_applet_ondestroy_callback (GtkWidget *widget, gpointer * data)
{
ENode *node = (ENode *)data;
gchar *function = NULL;
function = enode_attrib_str (node, "ondelete", NULL);
enode_call(node, function, "");
}
static void rendapplet_applet_destroy (ENode *node) {
//bah.
}
static void
rendapplet_applet_pack (ENode * parent_node, ENode * child_node)
{
GtkWidget *applet;
applet = enode_get_kv (parent_node, "top-widget");
rendgtk_box_pack (parent_node, child_node);
}
static void
rendapplet_applet_render (ENode * node)
{
GtkWidget *applet;
GtkWidget *vbox;
EDEBUG(("applet", "creating applet widget.."));
applet = applet_widget_new ("blah");
EDEBUG(("applet", "realizing applet widget.."));
gtk_widget_realize (applet);
EDEBUG(("applet", "creating vbox widget.."));
vbox = gtk_vbox_new(FALSE, 0);
EDEBUG(("applet", "adding vbox to applet widget.."));
applet_widget_add (APPLET_WIDGET(applet), vbox);
EDEBUG(("applet", "showing vbox .."));
gtk_widget_show(vbox);
EDEBUG(("applet", "setting node keys .."));
enode_set_kv (node, "top-widget", applet);
enode_set_kv (node, "bottom-widget", vbox);
EDEBUG(("applet", "connection applet widget destroy signal .."));
gtk_signal_connect (GTK_OBJECT (applet), "destroy",
GTK_SIGNAL_FUNC (rendapplet_applet_ondestroy_callback),
(gpointer)node);
EDEBUG(("applet", "synching attribs .."));
enode_attribs_sync (node);
EDEBUG(("applet", "showing applet widget .."));
gtk_widget_show(applet);
}
void
renderer_init (RendererFlags flags)
{
Element *element;
ElementAttr *e_attr;
int entity_argc;
char **entity_argv;
if (flags & RENDERER_INIT) {
entity_argc = entity_get_argc();
entity_argv = entity_get_argv();
applet_widget_init ( entity_argv[0], "000", entity_argc, entity_argv, NULL, 0, 0);
}
if (!flags & RENDERER_REGISTER)
return;
element = g_new0 (Element, 1);
element->tag = "applet";
element->render_func = rendapplet_applet_render;
element->destroy_func = rendapplet_applet_destroy;
element->parent_func = rendapplet_applet_pack;
element_register (element);
e_attr = g_new0(ElementAttr, 1);
e_attr->attribute = "appletname";
e_attr->description = "";
e_attr->value_desc = "string";
element_register_attrib (element, e_attr);
}
syntax highlighted by Code2HTML, v. 0.9.1