From d09d8de870b6697c8a8b262e7e077b871a69b315 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 10 Dec 2012 08:09:59 -0500 Subject: 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. --- e-util/e-misc-utils.h | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 e-util/e-misc-utils.h (limited to 'e-util/e-misc-utils.h') diff --git a/e-util/e-misc-utils.h b/e-util/e-misc-utils.h new file mode 100644 index 0000000000..0bd465e7d1 --- /dev/null +++ b/e-util/e-misc-utils.h @@ -0,0 +1,175 @@ +/* + * 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 + * + * + * Authors: + * Chris Lahey + * + * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) + * + */ + +#if !defined (__E_UTIL_H_INSIDE__) && !defined (LIBEUTIL_COMPILATION) +#error "Only should be included directly." +#endif + +#ifndef E_MISC_UTILS_H +#define E_MISC_UTILS_H + +#include +#include +#include + +#include + +#include "e-marshal.h" +#include "e-util-enums.h" + +G_BEGIN_DECLS + +typedef enum { + E_FOCUS_NONE, + E_FOCUS_CURRENT, + E_FOCUS_START, + E_FOCUS_END +} EFocus; + +typedef enum { + E_RESTORE_WINDOW_SIZE = 1 << 0, + E_RESTORE_WINDOW_POSITION = 1 << 1 +} ERestoreWindowFlags; + +const gchar * e_get_accels_filename (void); +void e_show_uri (GtkWindow *parent, + const gchar *uri); +void e_display_help (GtkWindow *parent, + const gchar *link_id); +void e_restore_window (GtkWindow *window, + const gchar *settings_path, + ERestoreWindowFlags flags); +GtkAction * e_lookup_action (GtkUIManager *ui_manager, + const gchar *action_name); +GtkActionGroup *e_lookup_action_group (GtkUIManager *ui_manager, + const gchar *group_name); +gint e_action_compare_by_label (GtkAction *action1, + GtkAction *action2); +void e_action_group_remove_all_actions + (GtkActionGroup *action_group); +GtkRadioAction *e_radio_action_get_current_action + (GtkRadioAction *radio_action); +void e_action_group_add_actions_localized + (GtkActionGroup *action_group, + const gchar *translation_domain, + const GtkActionEntry *entries, + guint n_entries, + gpointer user_data); +GtkWidget * e_builder_get_widget (GtkBuilder *builder, + const gchar *widget_name); +void e_load_ui_builder_definition (GtkBuilder *builder, + const gchar *basename); +void e_categories_add_change_hook (GHookFunc func, + gpointer object); + +/* String to/from double conversion functions */ +gdouble e_flexible_strtod (const gchar *nptr, + gchar **endptr); + +/* 29 bytes should enough for all possible values that + * g_ascii_dtostr can produce with the %.17g format. + * Then add 10 for good measure */ +#define E_ASCII_DTOSTR_BUF_SIZE (DBL_DIG + 12 + 10) +gchar * e_ascii_dtostr (gchar *buffer, + gint buf_len, + const gchar *format, + gdouble d); + +gchar * e_str_without_underscores (const gchar *string); +gint e_str_compare (gconstpointer x, + gconstpointer y); +gint e_str_case_compare (gconstpointer x, + gconstpointer y); +gint e_collate_compare (gconstpointer x, + gconstpointer y); +gint e_int_compare (gconstpointer x, + gconstpointer y); +guint32 e_color_to_value (GdkColor *color); + +guint32 e_rgba_to_value (GdkRGBA *rgba); + +/* This only makes a filename safe for usage as a filename. + * It still may have shell meta-characters in it. */ +gchar * e_format_number (gint number); + +typedef gint (*ESortCompareFunc) (gconstpointer first, + gconstpointer second, + gpointer closure); + +void e_bsearch (gconstpointer key, + gconstpointer base, + gsize nmemb, + gsize size, + ESortCompareFunc compare, + gpointer closure, + gsize *start, + gsize *end); + +gsize e_strftime_fix_am_pm (gchar *str, + gsize max, + const gchar *fmt, + const struct tm *tm); +gsize e_utf8_strftime_fix_am_pm (gchar *str, + gsize max, + const gchar *fmt, + const struct tm *tm); +const gchar * e_get_month_name (GDateMonth month, + gboolean abbreviated); +const gchar * e_get_weekday_name (GDateWeekday weekday, + gboolean abbreviated); + +gboolean e_file_lock_create (void); +void e_file_lock_destroy (void); +gboolean e_file_lock_exists (void); + +gchar * e_util_guess_mime_type (const gchar *filename, + gboolean localfile); + +GSList * e_util_get_category_filter_options + (void); +GList * e_util_get_searchable_categories (void); + +/* Useful GBinding transform functions */ +gboolean e_binding_transform_color_to_string + (GBinding *binding, + const GValue *source_value, + GValue *target_value, + gpointer not_used); +gboolean e_binding_transform_string_to_color + (GBinding *binding, + const GValue *source_value, + GValue *target_value, + gpointer not_used); +gboolean e_binding_transform_source_to_uid + (GBinding *binding, + const GValue *source_value, + GValue *target_value, + ESourceRegistry *registry); +gboolean e_binding_transform_uid_to_source + (GBinding *binding, + const GValue *source_value, + GValue *target_value, + ESourceRegistry *registry); + +G_END_DECLS + +#endif /* E_MISC_UTILS_H */ -- cgit v1.2.3