diff options
Diffstat (limited to 'filter/filter-option.c')
-rw-r--r-- | filter/filter-option.c | 195 |
1 files changed, 104 insertions, 91 deletions
diff --git a/filter/filter-option.c b/filter/filter-option.c index 28b7f88850..10ac977a1d 100644 --- a/filter/filter-option.c +++ b/filter/filter-option.c @@ -70,7 +70,7 @@ filter_option_get_type (void) (GtkArgGetFunc)NULL }; - type = gtk_type_unique(filter_element_get_type (), &type_info); + type = gtk_type_unique (filter_element_get_type (), &type_info); } return type; @@ -81,12 +81,12 @@ filter_option_class_init (FilterOptionClass *class) { GtkObjectClass *object_class; FilterElementClass *filter_element = (FilterElementClass *)class; - + object_class = (GtkObjectClass *)class; parent_class = gtk_type_class(filter_element_get_type ()); object_class->finalize = filter_option_finalise; - + /* override methods */ filter_element->xml_create = xml_create; filter_element->xml_encode = xml_encode; @@ -95,25 +95,25 @@ filter_option_class_init (FilterOptionClass *class) filter_element->get_widget = get_widget; filter_element->build_code = build_code; filter_element->format_sexp = format_sexp; - + /* signals */ - + gtk_object_class_add_signals(object_class, signals, LAST_SIGNAL); } static void filter_option_init (FilterOption *o) { - o->priv = g_malloc0(sizeof(*o->priv)); + o->priv = g_malloc0 (sizeof (*o->priv)); } static void -filter_option_finalise(GtkObject *obj) +filter_option_finalise (GtkObject *obj) { FilterOption *o = (FilterOption *)obj; - + o = o; - + ((GtkObjectClass *)(parent_class))->finalize(obj); } @@ -125,188 +125,201 @@ filter_option_finalise(GtkObject *obj) * Return value: A new #FilterOption object. **/ FilterOption * -filter_option_new(void) +filter_option_new (void) { - FilterOption *o = (FilterOption *)gtk_type_new(filter_option_get_type ()); + FilterOption *o = (FilterOption *)gtk_type_new (filter_option_get_type ()); return o; } static struct _filter_option * -find_option(FilterOption *fo, const char *name) +find_option (FilterOption *fo, const char *name) { GList *l = fo->options; struct _filter_option *op; - + while (l) { op = l->data; - if (!strcmp(name, op->value)) { + if (!strcmp (name, op->value)) { return op; } - l = g_list_next(l); + l = g_list_next (l); } + return NULL; } -void filter_option_set_current(FilterOption *option, const char *name) +void +filter_option_set_current (FilterOption *option, const char *name) { g_assert(IS_FILTER_OPTION(option)); - - option->current = find_option(option, name); + + option->current = find_option (option, name); } -static void xml_create(FilterElement *fe, xmlNodePtr node) +static void +xml_create (FilterElement *fe, xmlNodePtr node) { FilterOption *fo = (FilterOption *)fe; xmlNodePtr n, work; struct _filter_option *op; - + /* parent implementation */ ((FilterElementClass *)(parent_class))->xml_create(fe, node); - + n = node->childs; while (n) { - if (!strcmp(n->name, "option")) { - op = g_malloc0(sizeof(*op)); - op->value = xmlGetProp(n, "value"); + if (!strcmp (n->name, "option")) { + op = g_malloc0 (sizeof (*op)); + op->value = xmlGetProp (n, "value"); work = n->childs; while (work) { - if (!strcmp(work->name, "title")) { + if (!strcmp (work->name, "title")) { if (!op->title) { - op->title = xmlNodeGetContent(work); + op->title = xmlNodeGetContent (work); } - } else if (!strcmp(work->name, "code")) { + } else if (!strcmp (work->name, "code")) { if (!op->code) { - op->code = xmlNodeGetContent(work); + op->code = xmlNodeGetContent (work); } } work = work->next; } - d(printf("creating new option:\n title %s\n value %s\n code %s\n", op->title, op->value, op->code)); - fo->options = g_list_append(fo->options, op); + d(printf ("creating new option:\n title %s\n value %s\n code %s\n", + op->title, op->value, op->code)); + fo->options = g_list_append (fo->options, op); if (fo->current == NULL) fo->current = op; } else { - g_warning("Unknown xml node within optionlist: %s\n", n->name); + g_warning ("Unknown xml node within optionlist: %s\n", n->name); } n = n->next; } } -static xmlNodePtr xml_encode(FilterElement *fe) +static xmlNodePtr +xml_encode (FilterElement *fe) { xmlNodePtr value; FilterOption *fo = (FilterOption *)fe; - - d(printf("Encoding option as xml\n")); - value = xmlNewNode(NULL, "value"); - xmlSetProp(value, "name", fe->name); - xmlSetProp(value, "type", "option"); + + d(printf ("Encoding option as xml\n")); + value = xmlNewNode (NULL, "value"); + xmlSetProp (value, "name", fe->name); + xmlSetProp (value, "type", "option"); if (fo->current) { - xmlSetProp(value, "value", fo->current->value); + xmlSetProp (value, "value", fo->current->value); } + return value; } -static int xml_decode(FilterElement *fe, xmlNodePtr node) +static int +xml_decode (FilterElement *fe, xmlNodePtr node) { FilterOption *fo = (FilterOption *)fe; char *value; - - d(printf("Decoding option from xml\n")); - fe->name = xmlGetProp(node, "name"); - value = xmlGetProp(node, "value"); + + d(printf ("Decoding option from xml\n")); + fe->name = xmlGetProp (node, "name"); + value = xmlGetProp (node, "value"); if (value) { - fo->current = find_option(fo, value); - xmlFree(value); + fo->current = find_option (fo, value); + xmlFree (value); } else { fo->current = NULL; } return 0; } -static void option_activate(GtkMenuItem *item, FilterOption *fo) +static void +option_activate (GtkMenuItem *item, FilterOption *fo) { - fo->current = gtk_object_get_data((GtkObject *)item, "option"); - d(printf("option changed to %s\n", fo->current->title)); + fo->current = gtk_object_get_data (GTK_OBJECT (item), "option"); + d(printf ("option changed to %s\n", fo->current->title)); } -static GtkWidget *get_widget(FilterElement *fe) +static GtkWidget * +get_widget (FilterElement *fe) { FilterOption *fo = (FilterOption *)fe; - GtkMenu *menu; - GtkOptionMenu *omenu; - GtkMenuItem *item; + GtkWidget *menu; + GtkWidget *omenu; + GtkWidget *item; GList *l = fo->options; struct _filter_option *op; - int index = 0, current=0; - - menu = (GtkMenu *)gtk_menu_new(); + int index = 0, current = 0; + + menu = gtk_menu_new (); while (l) { op = l->data; - item = (GtkMenuItem *)gtk_menu_item_new_with_label(_(op->title)); - gtk_object_set_data((GtkObject *)item, "option", op); - gtk_signal_connect((GtkObject *)item, "activate", option_activate, fo); - gtk_menu_append(menu, (GtkWidget *)item); - gtk_widget_show((GtkWidget *)item); + item = gtk_menu_item_new_with_label (_(op->title)); + gtk_object_set_data (GTK_OBJECT (item), "option", op); + gtk_signal_connect (GTK_OBJECT (item), "activate", option_activate, fo); + gtk_menu_append (GTK_MENU (menu), item); + gtk_widget_show (item); if (op == fo->current) { current = index; } - l = g_list_next(l); + + l = g_list_next (l); index++; } - - omenu = (GtkOptionMenu *)gtk_option_menu_new(); - gtk_option_menu_set_menu(omenu, (GtkWidget *)menu); - gtk_option_menu_set_history(omenu, current); - - return (GtkWidget *)omenu; + + omenu = gtk_option_menu_new (); + gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); + gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), current); + + return omenu; } -static void build_code(FilterElement *fe, GString *out, struct _FilterPart *ff) +static void +build_code (FilterElement *fe, GString *out, struct _FilterPart *ff) { FilterOption *fo = (FilterOption *)fe; - - d(printf("building option code %p, current = %p\n", fo, fo->current)); - + + d(printf ("building option code %p, current = %p\n", fo, fo->current)); + if (fo->current) { - filter_part_expand_code(ff, fo->current->code, out); + filter_part_expand_code (ff, fo->current->code, out); } } -static void format_sexp(FilterElement *fe, GString *out) +static void +format_sexp (FilterElement *fe, GString *out) { FilterOption *fo = (FilterOption *)fe; - + if (fo->current) { - e_sexp_encode_string(out, fo->current->value); + e_sexp_encode_string (out, fo->current->value); } } -static FilterElement *clone(FilterElement *fe) +static FilterElement * +clone (FilterElement *fe) { FilterOption *fo = (FilterOption *)fe, *new; GList *l; struct _filter_option *fn, *op; - - d(printf("cloning option\n")); - - new = FILTER_OPTION(((FilterElementClass *)(parent_class))->clone(fe)); + + d(printf ("cloning option\n")); + + new = FILTER_OPTION (((FilterElementClass *)(parent_class))->clone(fe)); l = fo->options; while (l) { op = l->data; - fn = g_malloc(sizeof(*fn)); - d(printf(" option %s\n", op->title)); - fn->title = g_strdup(op->title); - fn->value = g_strdup(op->value); - fn->code = g_strdup(op->code); - new->options = g_list_append(new->options, fn); - l = g_list_next(l); - + fn = g_malloc (sizeof (*fn)); + d(printf (" option %s\n", op->title)); + fn->title = g_strdup (op->title); + fn->value = g_strdup (op->value); + fn->code = g_strdup (op->code); + new->options = g_list_append (new->options, fn); + l = g_list_next (l); + if (new->current == NULL) new->current = fn; } - - d(printf("cloning option code %p, current = %p\n", new, new->current)); - + + d(printf ("cloning option code %p, current = %p\n", new, new->current)); + return (FilterElement *)new; } |