1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 2010 Carlos Garnacho <carlosg@gnome.org>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef __GTK_CSS_PROVIDER_H__
19 #define __GTK_CSS_PROVIDER_H__
20 
21 #include <gio/gio.h>
22 #include <gtk/gtkcsssection.h>
23 
24 G_BEGIN_DECLS
25 
26 #define GTK_TYPE_CSS_PROVIDER         (gtk_css_provider_get_type ())
27 #define GTK_CSS_PROVIDER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_CSS_PROVIDER, GtkCssProvider))
28 #define GTK_CSS_PROVIDER_CLASS(c)     (G_TYPE_CHECK_CLASS_CAST    ((c), GTK_TYPE_CSS_PROVIDER, GtkCssProviderClass))
29 #define GTK_IS_CSS_PROVIDER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_CSS_PROVIDER))
30 #define GTK_IS_CSS_PROVIDER_CLASS(c)  (G_TYPE_CHECK_CLASS_TYPE    ((c), GTK_TYPE_CSS_PROVIDER))
31 #define GTK_CSS_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS  ((o), GTK_TYPE_CSS_PROVIDER, GtkCssProviderClass))
32 
33 /**
34  * GTK_CSS_PROVIDER_ERROR:
35  *
36  * Domain for #GtkCssProvider errors.
37  */
38 #define GTK_CSS_PROVIDER_ERROR (gtk_css_provider_error_quark ())
39 
40 /**
41  * GtkCssProviderError:
42  * @GTK_CSS_PROVIDER_ERROR_FAILED: Failed.
43  * @GTK_CSS_PROVIDER_ERROR_SYNTAX: Syntax error.
44  * @GTK_CSS_PROVIDER_ERROR_IMPORT: Import error.
45  * @GTK_CSS_PROVIDER_ERROR_NAME: Name error.
46  * @GTK_CSS_PROVIDER_ERROR_DEPRECATED: Deprecation error.
47  * @GTK_CSS_PROVIDER_ERROR_UNKNOWN_VALUE: Unknown value.
48  *
49  * Error codes for %GTK_CSS_PROVIDER_ERROR.
50  */
51 typedef enum
52 {
53   GTK_CSS_PROVIDER_ERROR_FAILED,
54   GTK_CSS_PROVIDER_ERROR_SYNTAX,
55   GTK_CSS_PROVIDER_ERROR_IMPORT,
56   GTK_CSS_PROVIDER_ERROR_NAME,
57   GTK_CSS_PROVIDER_ERROR_DEPRECATED,
58   GTK_CSS_PROVIDER_ERROR_UNKNOWN_VALUE
59 } GtkCssProviderError;
60 
61 GDK_AVAILABLE_IN_ALL
62 GQuark gtk_css_provider_error_quark (void);
63 
64 typedef struct _GtkCssProvider GtkCssProvider;
65 typedef struct _GtkCssProviderClass GtkCssProviderClass;
66 typedef struct _GtkCssProviderPrivate GtkCssProviderPrivate;
67 
68 struct _GtkCssProvider
69 {
70   GObject parent_instance;
71   GtkCssProviderPrivate *priv;
72 };
73 
74 struct _GtkCssProviderClass
75 {
76   GObjectClass parent_class;
77 
78   void (* parsing_error)                        (GtkCssProvider  *provider,
79                                                  GtkCssSection   *section,
80                                                  const GError *   error);
81 
82   /* Padding for future expansion */
83   void (*_gtk_reserved2) (void);
84   void (*_gtk_reserved3) (void);
85   void (*_gtk_reserved4) (void);
86 };
87 
88 GDK_AVAILABLE_IN_ALL
89 GType gtk_css_provider_get_type (void) G_GNUC_CONST;
90 
91 GDK_AVAILABLE_IN_ALL
92 GtkCssProvider * gtk_css_provider_new (void);
93 
94 GDK_AVAILABLE_IN_3_2
95 char *           gtk_css_provider_to_string      (GtkCssProvider  *provider);
96 
97 GDK_AVAILABLE_IN_ALL
98 gboolean         gtk_css_provider_load_from_data (GtkCssProvider  *css_provider,
99                                                   const gchar     *data,
100                                                   gssize           length,
101                                                   GError         **error);
102 GDK_AVAILABLE_IN_ALL
103 gboolean         gtk_css_provider_load_from_file (GtkCssProvider  *css_provider,
104                                                   GFile           *file,
105                                                   GError         **error);
106 GDK_AVAILABLE_IN_ALL
107 gboolean         gtk_css_provider_load_from_path (GtkCssProvider  *css_provider,
108                                                   const gchar     *path,
109                                                   GError         **error);
110 
111 GDK_AVAILABLE_IN_3_16
112 void             gtk_css_provider_load_from_resource (GtkCssProvider *css_provider,
113                                                       const gchar    *resource_path);
114 
115 GDK_DEPRECATED_FOR(gtk_css_provider_new)
116 GtkCssProvider * gtk_css_provider_get_default (void);
117 
118 GDK_AVAILABLE_IN_ALL
119 GtkCssProvider * gtk_css_provider_get_named (const gchar *name,
120                                              const gchar *variant);
121 
122 G_END_DECLS
123 
124 #endif /* __GTK_CSS_PROVIDER_H__ */
125