aboutsummaryrefslogtreecommitdiffstats
path: root/filter/e-filter-element.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-12-10 21:09:59 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-12-13 03:33:43 +0800
commitd09d8de870b6697c8a8b262e7e077b871a69b315 (patch)
tree3b718882e7a0bb0a996daf2967a033d91714c9b5 /filter/e-filter-element.c
parentb61331ed03ac1c7a9b8614e25510040b9c60ae02 (diff)
downloadgsoc2013-evolution-d09d8de870b6697c8a8b262e7e077b871a69b315.tar
gsoc2013-evolution-d09d8de870b6697c8a8b262e7e077b871a69b315.tar.gz
gsoc2013-evolution-d09d8de870b6697c8a8b262e7e077b871a69b315.tar.bz2
gsoc2013-evolution-d09d8de870b6697c8a8b262e7e077b871a69b315.tar.lz
gsoc2013-evolution-d09d8de870b6697c8a8b262e7e077b871a69b315.tar.xz
gsoc2013-evolution-d09d8de870b6697c8a8b262e7e077b871a69b315.tar.zst
gsoc2013-evolution-d09d8de870b6697c8a8b262e7e077b871a69b315.zip
Consolidate base utility libraries into libeutil.
Evolution consists of entirely too many small utility libraries, which increases linking and loading time, places a burden on higher layers of the application (e.g. modules) which has to remember to link to all the small in-tree utility libraries, and makes it difficult to generate API documentation for these utility libraries in one Gtk-Doc module. Merge the following utility libraries under the umbrella of libeutil, and enforce a single-include policy on libeutil so we can reorganize the files as desired without disrupting its pseudo-public API. libemail-utils/libemail-utils.la libevolution-utils/libevolution-utils.la filter/libfilter.la widgets/e-timezone-dialog/libetimezonedialog.la widgets/menus/libmenus.la widgets/misc/libemiscwidgets.la widgets/table/libetable.la widgets/text/libetext.la This also merges libedataserverui from the Evolution-Data-Server module, since Evolution is its only consumer nowadays, and I'd like to make some improvements to those APIs without concern for backward-compatibility. And finally, start a Gtk-Doc module for libeutil. It's going to be a project just getting all the symbols _listed_ much less _documented_. But the skeletal structure is in place and I'm off to a good start.
Diffstat (limited to 'filter/e-filter-element.c')
-rw-r--r--filter/e-filter-element.c446
1 files changed, 0 insertions, 446 deletions
diff --git a/filter/e-filter-element.c b/filter/e-filter-element.c
deleted file mode 100644
index e00651ec03..0000000000
--- a/filter/e-filter-element.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * This program 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) version 3.
- *
- * This program 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 the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Authors:
- * Not Zed <notzed@lostzed.mmc.com.au>
- * Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-
-#include "e-filter-element.h"
-#include "e-filter-part.h"
-
-struct _element_type {
- gchar *name;
-
- EFilterElementFunc create;
- gpointer data;
-};
-
-G_DEFINE_TYPE (
- EFilterElement,
- e_filter_element,
- G_TYPE_OBJECT)
-
-static gboolean
-filter_element_validate (EFilterElement *element,
- EAlert **alert)
-{
- return TRUE;
-}
-
-static gint
-filter_element_eq (EFilterElement *element_a,
- EFilterElement *element_b)
-{
- return (g_strcmp0 (element_a->name, element_b->name) == 0);
-}
-
-static void
-filter_element_xml_create (EFilterElement *element,
- xmlNodePtr node)
-{
- element->name = (gchar *) xmlGetProp (node, (xmlChar *) "name");
-}
-
-static EFilterElement *
-filter_element_clone (EFilterElement *element)
-{
- EFilterElement *clone;
- xmlNodePtr node;
-
- clone = g_object_new (G_OBJECT_TYPE (element), NULL);
-
- node = e_filter_element_xml_encode (element);
- e_filter_element_xml_decode (clone, node);
- xmlFreeNodeList (node);
-
- return clone;
-}
-
-/* This is somewhat hackish, implement all the base cases in here */
-#include "e-filter-input.h"
-#include "e-filter-option.h"
-#include "e-filter-code.h"
-#include "e-filter-color.h"
-#include "e-filter-datespec.h"
-#include "e-filter-int.h"
-#include "e-filter-file.h"
-
-static void
-filter_element_copy_value (EFilterElement *dst_element,
- EFilterElement *src_element)
-{
- if (E_IS_FILTER_INPUT (src_element)) {
- EFilterInput *src_input;
-
- src_input = E_FILTER_INPUT (src_element);
-
- if (E_IS_FILTER_INPUT (dst_element)) {
- EFilterInput *dst_input;
-
- dst_input = E_FILTER_INPUT (dst_element);
-
- if (src_input->values)
- e_filter_input_set_value (
- dst_input,
- src_input->values->data);
-
- } else if (E_IS_FILTER_INT (dst_element)) {
- EFilterInt *dst_int;
-
- dst_int = E_FILTER_INT (dst_element);
-
- dst_int->val = atoi (src_input->values->data);
- }
-
- } else if (E_IS_FILTER_COLOR (src_element)) {
- EFilterColor *src_color;
-
- src_color = E_FILTER_COLOR (src_element);
-
- if (E_IS_FILTER_COLOR (dst_element)) {
- EFilterColor *dst_color;
-
- dst_color = E_FILTER_COLOR (dst_element);
-
- dst_color->color = src_color->color;
- }
-
- } else if (E_IS_FILTER_DATESPEC (src_element)) {
- EFilterDatespec *src_datespec;
-
- src_datespec = E_FILTER_DATESPEC (src_element);
-
- if (E_IS_FILTER_DATESPEC (dst_element)) {
- EFilterDatespec *dst_datespec;
-
- dst_datespec = E_FILTER_DATESPEC (dst_element);
-
- dst_datespec->type = src_datespec->type;
- dst_datespec->value = src_datespec->value;
- }
-
- } else if (E_IS_FILTER_INT (src_element)) {
- EFilterInt *src_int;
-
- src_int = E_FILTER_INT (src_element);
-
- if (E_IS_FILTER_INT (dst_element)) {
- EFilterInt *dst_int;
-
- dst_int = E_FILTER_INT (dst_element);
-
- dst_int->val = src_int->val;
-
- } else if (E_IS_FILTER_INPUT (dst_element)) {
- EFilterInput *dst_input;
- gchar *values;
-
- dst_input = E_FILTER_INPUT (dst_element);
-
- values = g_strdup_printf ("%d", src_int->val);
- e_filter_input_set_value (dst_input, values);
- g_free (values);
- }
-
- } else if (E_IS_FILTER_OPTION (src_element)) {
- EFilterOption *src_option;
-
- src_option = E_FILTER_OPTION (src_element);
-
- if (E_IS_FILTER_OPTION (dst_element)) {
- EFilterOption *dst_option;
-
- dst_option = E_FILTER_OPTION (dst_element);
-
- if (src_option->current)
- e_filter_option_set_current (
- dst_option,
- src_option->current->value);
- }
- }
-}
-
-static void
-filter_element_finalize (GObject *object)
-{
- EFilterElement *element = E_FILTER_ELEMENT (object);
-
- xmlFree (element->name);
-
- /* Chain up to parent's finalize () method. */
- G_OBJECT_CLASS (e_filter_element_parent_class)->finalize (object);
-}
-
-static void
-e_filter_element_class_init (EFilterElementClass *class)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (class);
- object_class->finalize = filter_element_finalize;
-
- class->validate = filter_element_validate;
- class->eq = filter_element_eq;
- class->xml_create = filter_element_xml_create;
- class->clone = filter_element_clone;
- class->copy_value = filter_element_copy_value;
-}
-
-static void
-e_filter_element_init (EFilterElement *element)
-{
-}
-
-/**
- * filter_element_new:
- *
- * Create a new EFilterElement object.
- *
- * Return value: A new #EFilterElement object.
- **/
-EFilterElement *
-e_filter_element_new (void)
-{
- return g_object_new (E_TYPE_FILTER_ELEMENT, NULL);
-}
-
-gboolean
-e_filter_element_validate (EFilterElement *element,
- EAlert **alert)
-{
- EFilterElementClass *class;
-
- g_return_val_if_fail (E_IS_FILTER_ELEMENT (element), FALSE);
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
- g_return_val_if_fail (class->validate != NULL, FALSE);
-
- return class->validate (element, alert);
-}
-
-gint
-e_filter_element_eq (EFilterElement *element_a,
- EFilterElement *element_b)
-{
- EFilterElementClass *class;
-
- g_return_val_if_fail (E_IS_FILTER_ELEMENT (element_a), FALSE);
- g_return_val_if_fail (E_IS_FILTER_ELEMENT (element_b), FALSE);
-
- /* The elements must be the same type. */
- if (G_OBJECT_TYPE (element_a) != G_OBJECT_TYPE (element_b))
- return FALSE;
-
- class = E_FILTER_ELEMENT_GET_CLASS (element_a);
- g_return_val_if_fail (class->eq != NULL, FALSE);
-
- return class->eq (element_a, element_b);
-}
-
-/**
- * filter_element_xml_create:
- * @fe: filter element
- * @node: xml node
- *
- * Create a new filter element based on an xml definition of
- * that element.
- **/
-void
-e_filter_element_xml_create (EFilterElement *element,
- xmlNodePtr node)
-{
- EFilterElementClass *class;
-
- g_return_if_fail (E_IS_FILTER_ELEMENT (element));
- g_return_if_fail (node != NULL);
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
- g_return_if_fail (class->xml_create != NULL);
-
- class->xml_create (element, node);
-}
-
-/**
- * filter_element_xml_encode:
- * @fe: filter element
- *
- * Encode the values of a filter element into xml format.
- *
- * Return value:
- **/
-xmlNodePtr
-e_filter_element_xml_encode (EFilterElement *element)
-{
- EFilterElementClass *class;
-
- g_return_val_if_fail (E_IS_FILTER_ELEMENT (element), NULL);
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
- g_return_val_if_fail (class->xml_encode != NULL, NULL);
-
- return class->xml_encode (element);
-}
-
-/**
- * filter_element_xml_decode:
- * @fe: filter element
- * @node: xml node
- *
- * Decode the values of a fitler element from xml format.
- *
- * Return value:
- **/
-gint
-e_filter_element_xml_decode (EFilterElement *element,
- xmlNodePtr node)
-{
- EFilterElementClass *class;
-
- g_return_val_if_fail (E_IS_FILTER_ELEMENT (element), FALSE);
- g_return_val_if_fail (node != NULL, FALSE);
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
- g_return_val_if_fail (class->xml_decode != NULL, FALSE);
-
- return class->xml_decode (element, node);
-}
-
-/**
- * filter_element_clone:
- * @fe: filter element
- *
- * Clones the EFilterElement @fe.
- *
- * Return value:
- **/
-EFilterElement *
-e_filter_element_clone (EFilterElement *element)
-{
- EFilterElementClass *class;
-
- g_return_val_if_fail (E_IS_FILTER_ELEMENT (element), NULL);
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
- g_return_val_if_fail (class->clone != NULL, NULL);
-
- return class->clone (element);
-}
-
-/**
- * filter_element_get_widget:
- * @fe: filter element
- * @node: xml node
- *
- * Create a widget to represent this element.
- *
- * Return value:
- **/
-GtkWidget *
-e_filter_element_get_widget (EFilterElement *element)
-{
- EFilterElementClass *class;
-
- g_return_val_if_fail (E_IS_FILTER_ELEMENT (element), NULL);
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
- g_return_val_if_fail (class->get_widget != NULL, NULL);
-
- return class->get_widget (element);
-}
-
-/**
- * filter_element_build_code:
- * @fe: filter element
- * @out: output buffer
- * @ff:
- *
- * Add the code representing this element to the output string @out.
- **/
-void
-e_filter_element_build_code (EFilterElement *element,
- GString *out,
- EFilterPart *part)
-{
- EFilterElementClass *class;
-
- g_return_if_fail (E_IS_FILTER_ELEMENT (element));
- g_return_if_fail (out != NULL);
- g_return_if_fail (E_IS_FILTER_PART (part));
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
-
- /* This method is optional. */
- if (class->build_code != NULL)
- class->build_code (element, out, part);
-}
-
-/**
- * filter_element_format_sexp:
- * @fe: filter element
- * @out: output buffer
- *
- * Format the value(s) of this element in a method suitable for the context of
- * sexp where it is used. Usually as space separated, double-quoted strings.
- **/
-void
-e_filter_element_format_sexp (EFilterElement *element,
- GString *out)
-{
- EFilterElementClass *class;
-
- g_return_if_fail (E_IS_FILTER_ELEMENT (element));
- g_return_if_fail (out != NULL);
-
- class = E_FILTER_ELEMENT_GET_CLASS (element);
- g_return_if_fail (class->format_sexp != NULL);
-
- class->format_sexp (element, out);
-}
-
-void
-e_filter_element_set_data (EFilterElement *element,
- gpointer data)
-{
- g_return_if_fail (E_IS_FILTER_ELEMENT (element));
-
- element->data = data;
-}
-
-/* only copies the value, not the name/type */
-void
-e_filter_element_copy_value (EFilterElement *dst_element,
- EFilterElement *src_element)
-{
- EFilterElementClass *class;
-
- g_return_if_fail (E_IS_FILTER_ELEMENT (dst_element));
- g_return_if_fail (E_IS_FILTER_ELEMENT (src_element));
-
- class = E_FILTER_ELEMENT_GET_CLASS (dst_element);
- g_return_if_fail (class->copy_value != NULL);
-
- class->copy_value (dst_element, src_element);
-}