From 0b0e6bc987da4fd88a7854ebb12bde705e92c428 Mon Sep 17 00:00:00 2001 From: Perberos Date: Thu, 1 Dec 2011 21:51:44 -0300 Subject: moving from https://github.com/perberos/mate-desktop-environment --- capplets/common/mate-theme-info.h | 190 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 capplets/common/mate-theme-info.h (limited to 'capplets/common/mate-theme-info.h') diff --git a/capplets/common/mate-theme-info.h b/capplets/common/mate-theme-info.h new file mode 100644 index 00000000..095e98ae --- /dev/null +++ b/capplets/common/mate-theme-info.h @@ -0,0 +1,190 @@ +/* mate-theme-info.h - MATE Theme information + + Copyright (C) 2002 Jonathan Blandford + All rights reserved. + + This file is part of the Mate Library. + + The Mate Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The Mate Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the Mate Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef MATE_THEME_INFO_H +#define MATE_THEME_INFO_H + +#include +#include +#include +#include + +typedef enum { + MATE_THEME_TYPE_METATHEME, + MATE_THEME_TYPE_ICON, + MATE_THEME_TYPE_CURSOR, + MATE_THEME_TYPE_REGULAR +} MateThemeType; + +typedef enum { + MATE_THEME_CHANGE_CREATED, + MATE_THEME_CHANGE_DELETED, + MATE_THEME_CHANGE_CHANGED +} MateThemeChangeType; + +typedef enum { + MATE_THEME_MARCO = 1 << 0, + MATE_THEME_GTK_2 = 1 << 1, + MATE_THEME_GTK_2_KEYBINDING = 1 << 2 +} MateThemeElement; + +typedef struct _MateThemeCommonInfo MateThemeCommonInfo; +typedef struct _MateThemeCommonInfo MateThemeIconInfo; +struct _MateThemeCommonInfo +{ + MateThemeType type; + gchar* path; + gchar* name; + gchar* readable_name; + gint priority; + gboolean hidden; +}; + +typedef struct _MateThemeInfo MateThemeInfo; +struct _MateThemeInfo +{ + MateThemeType type; + gchar* path; + gchar* name; + gchar* readable_name; + gint priority; + gboolean hidden; + + guint has_gtk : 1; + guint has_keybinding : 1; + guint has_marco : 1; +}; + +typedef struct _MateThemeCursorInfo MateThemeCursorInfo; +struct _MateThemeCursorInfo { + MateThemeType type; + gchar* path; + gchar* name; + gchar* readable_name; + gint priority; + gboolean hidden; + + GArray* sizes; + GdkPixbuf* thumbnail; +}; + +typedef struct _MateThemeMetaInfo MateThemeMetaInfo; +struct _MateThemeMetaInfo { + MateThemeType type; + gchar* path; + gchar* name; + gchar* readable_name; + gint priority; + gboolean hidden; + + gchar* comment; + gchar* icon_file; + + gchar* gtk_theme_name; + gchar* gtk_color_scheme; + gchar* marco_theme_name; + gchar* icon_theme_name; + gchar* notification_theme_name; + gchar* sound_theme_name; + gchar* cursor_theme_name; + guint cursor_size; + + gchar* application_font; + gchar* documents_font; + gchar* desktop_font; + gchar* windowtitle_font; + gchar* monospace_font; + gchar* background_image; +}; + +enum { + COLOR_FG, + COLOR_BG, + COLOR_TEXT, + COLOR_BASE, + COLOR_SELECTED_FG, + COLOR_SELECTED_BG, + COLOR_TOOLTIP_FG, + COLOR_TOOLTIP_BG, + NUM_SYMBOLIC_COLORS +}; + +typedef void (*ThemeChangedCallback) (MateThemeCommonInfo* theme, MateThemeChangeType change_type, MateThemeElement element_type, gpointer user_data); + +#define MATE_THEME_ERROR mate_theme_info_error_quark() + +enum { + MATE_THEME_ERROR_GTK_THEME_NOT_AVAILABLE = 1, + MATE_THEME_ERROR_WM_THEME_NOT_AVAILABLE, + MATE_THEME_ERROR_ICON_THEME_NOT_AVAILABLE, + MATE_THEME_ERROR_GTK_ENGINE_NOT_AVAILABLE, + MATE_THEME_ERROR_UNKNOWN +}; + + +/* GTK/Marco/keybinding Themes */ +MateThemeInfo *mate_theme_info_new (void); +void mate_theme_info_free (MateThemeInfo *theme_info); +MateThemeInfo *mate_theme_info_find (const gchar *theme_name); +GList *mate_theme_info_find_by_type (guint elements); +GQuark mate_theme_info_error_quark (void); +gchar *gtk_theme_info_missing_engine (const gchar *gtk_theme, + gboolean nameOnly); + +/* Icon Themes */ +MateThemeIconInfo *mate_theme_icon_info_new (void); +void mate_theme_icon_info_free (MateThemeIconInfo *icon_theme_info); +MateThemeIconInfo *mate_theme_icon_info_find (const gchar *icon_theme_name); +GList *mate_theme_icon_info_find_all (void); +gint mate_theme_icon_info_compare (MateThemeIconInfo *a, + MateThemeIconInfo *b); + +/* Cursor Themes */ +MateThemeCursorInfo *mate_theme_cursor_info_new (void); +void mate_theme_cursor_info_free (MateThemeCursorInfo *info); +MateThemeCursorInfo *mate_theme_cursor_info_find (const gchar *name); +GList *mate_theme_cursor_info_find_all (void); +gint mate_theme_cursor_info_compare (MateThemeCursorInfo *a, + MateThemeCursorInfo *b); + +/* Meta themes*/ +MateThemeMetaInfo *mate_theme_meta_info_new (void); +void mate_theme_meta_info_free (MateThemeMetaInfo *meta_theme_info); +MateThemeMetaInfo *mate_theme_meta_info_find (const gchar *meta_theme_name); +GList *mate_theme_meta_info_find_all (void); +gint mate_theme_meta_info_compare (MateThemeMetaInfo *a, + MateThemeMetaInfo *b); +gboolean mate_theme_meta_info_validate (const MateThemeMetaInfo *info, + GError **error); +MateThemeMetaInfo *mate_theme_read_meta_theme (GFile *meta_theme_uri); + +/* Other */ +void mate_theme_init (void); +void mate_theme_info_register_theme_change (ThemeChangedCallback func, + gpointer data); + +gboolean mate_theme_color_scheme_parse (const gchar *scheme, + GdkColor *colors); +gboolean mate_theme_color_scheme_equal (const gchar *s1, + const gchar *s2); + +#endif /* MATE_THEME_INFO_H */ -- cgit v1.2.1