1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
2  *
3  * Copyright (C) 2011 Richard Hughes <richard@hughsie.com>
4  *
5  * Licensed under the GNU General Public License Version 2
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21 
22 #ifndef __NET_OBJECT_H
23 #define __NET_OBJECT_H
24 
25 #include <glib-object.h>
26 #include <gtk/gtk.h>
27 #include <NetworkManager.h>
28 
29 #include "cc-network-panel.h"
30 
31 G_BEGIN_DECLS
32 
33 #define NET_TYPE_OBJECT          (net_object_get_type ())
34 #define NET_OBJECT(o)            (G_TYPE_CHECK_INSTANCE_CAST ((o), NET_TYPE_OBJECT, NetObject))
35 #define NET_OBJECT_CLASS(k)      (G_TYPE_CHECK_CLASS_CAST((k), NET_TYPE_OBJECT, NetObjectClass))
36 #define NET_IS_OBJECT(o)         (G_TYPE_CHECK_INSTANCE_TYPE ((o), NET_TYPE_OBJECT))
37 #define NET_IS_OBJECT_CLASS(k)   (G_TYPE_CHECK_CLASS_TYPE ((k), NET_TYPE_OBJECT))
38 #define NET_OBJECT_GET_CLASS(o)  (G_TYPE_INSTANCE_GET_CLASS ((o), NET_TYPE_OBJECT, NetObjectClass))
39 
40 typedef struct _NetObjectPrivate         NetObjectPrivate;
41 typedef struct _NetObject                NetObject;
42 typedef struct _NetObjectClass           NetObjectClass;
43 
44 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NetObject, g_object_unref)
45 
46 struct _NetObject
47 {
48          GObject                 parent;
49          NetObjectPrivate       *priv;
50 };
51 
52 struct _NetObjectClass
53 {
54         GObjectClass             parent_class;
55 
56         /* vtable */
57         GtkWidget               *(*add_to_notebook)    (NetObject       *object,
58                                                         GtkNotebook     *notebook,
59                                                         GtkSizeGroup    *heading_size_group);
60         void                     (*delete)              (NetObject       *object);
61         void                     (*refresh)             (NetObject       *object);
62         void                     (*edit)                (NetObject       *object);
63 
64         /* signal */
65         void                     (* changed)            (NetObject      *object);
66         void                     (* removed)            (NetObject      *object);
67 };
68 
69 GType            net_object_get_type                    (void);
70 const gchar     *net_object_get_id                      (NetObject      *object);
71 void             net_object_set_id                      (NetObject      *object,
72                                                          const gchar    *id);
73 const gchar     *net_object_get_title                   (NetObject      *object);
74 void             net_object_set_title                   (NetObject      *object,
75                                                          const gchar    *title);
76 NMClient        *net_object_get_client                  (NetObject      *object);
77 GCancellable    *net_object_get_cancellable             (NetObject      *object);
78 CcNetworkPanel  *net_object_get_panel                   (NetObject      *object);
79 void             net_object_emit_changed                (NetObject      *object);
80 void             net_object_emit_removed                (NetObject      *object);
81 void             net_object_delete                      (NetObject      *object);
82 void             net_object_refresh                     (NetObject      *object);
83 void             net_object_edit                        (NetObject      *object);
84 GtkWidget       *net_object_add_to_notebook             (NetObject      *object,
85                                                          GtkNotebook    *notebook,
86                                                          GtkSizeGroup   *heading_size_group);
87 gboolean         net_object_get_removable               (NetObject      *object);
88 void             net_object_set_removable               (NetObject      *object,
89                                                          gboolean        removable);
90 
91 G_END_DECLS
92 
93 #endif /* __NET_OBJECT_H */
94 
95