1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 /*
3  * Copyright (C) 2012 Red Hat
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation; either version 2 of the
8  * License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, see <http://www.gnu.org/licenses/>.
17  *
18  * Written by:
19  *     Jasper St. Pierre <jstpierre@mecheye.net>
20  */
21 
22 #ifndef __GIS_PAGE_H__
23 #define __GIS_PAGE_H__
24 
25 #include "gnome-initial-setup.h"
26 
27 G_BEGIN_DECLS
28 
29 #define GIS_TYPE_PAGE               (gis_page_get_type ())
30 #define GIS_PAGE(obj)                           (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIS_TYPE_PAGE, GisPage))
31 #define GIS_PAGE_CLASS(klass)                   (G_TYPE_CHECK_CLASS_CAST ((klass),  GIS_TYPE_PAGE, GisPageClass))
32 #define GIS_IS_PAGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIS_TYPE_PAGE))
33 #define GIS_IS_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  GIS_TYPE_PAGE))
34 #define GIS_PAGE_GET_CLASS(obj)                 (G_TYPE_INSTANCE_GET_CLASS ((obj),  GIS_TYPE_PAGE, GisPageClass))
35 
36 typedef struct _GisPage        GisPage;
37 typedef struct _GisPageClass   GisPageClass;
38 
39 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GisPage, g_object_unref)
40 
41 typedef void (* GisPageApplyCallback) (GisPage *page,
42                                        gboolean valid,
43                                        gpointer user_data);
44 
45 struct _GisPage
46 {
47   GtkBin parent;
48 
49   GisDriver *driver;
50 };
51 
52 struct _GisPageClass
53 {
54   GtkBinClass parent_class;
55   char *page_id;
56 
57   void         (*locale_changed) (GisPage *page);
58   gboolean     (*apply) (GisPage *page,
59                          GCancellable *cancellable);
60   gboolean     (*save_data) (GisPage  *page,
61                              GError  **error);
62   void         (*shown) (GisPage *page);
63   void         (*skip) (GisPage *page);
64 };
65 
66 GType gis_page_get_type (void);
67 
68 char *       gis_page_get_title (GisPage *page);
69 void         gis_page_set_title (GisPage *page, char *title);
70 gboolean     gis_page_get_complete (GisPage *page);
71 void         gis_page_set_complete (GisPage *page, gboolean complete);
72 gboolean     gis_page_get_skippable (GisPage *page);
73 void         gis_page_set_skippable (GisPage *page, gboolean skippable);
74 gboolean     gis_page_get_needs_accept (GisPage *page);
75 void         gis_page_set_needs_accept (GisPage *page, gboolean needs_accept);
76 gboolean     gis_page_get_has_forward (GisPage *page);
77 void         gis_page_set_has_forward (GisPage *page, gboolean has_forward);
78 void         gis_page_locale_changed (GisPage *page);
79 void         gis_page_apply_begin (GisPage *page, GisPageApplyCallback callback, gpointer user_data);
80 void         gis_page_apply_cancel (GisPage *page);
81 void         gis_page_apply_complete (GisPage *page, gboolean valid);
82 gboolean     gis_page_get_applying (GisPage *page);
83 gboolean     gis_page_save_data (GisPage  *page,
84                                  GError  **error);
85 void         gis_page_shown (GisPage *page);
86 void         gis_page_skip (GisPage *page);
87 
88 G_END_DECLS
89 
90 #endif /* __GIS_PAGE_H__ */
91