1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- 2 * 3 * Copyright (c) 2010 Intel, Inc. 4 * 5 * The Control Center is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by the 7 * Free Software Foundation; either version 2 of the License, or (at your 8 * option) any later version. 9 * 10 * The Control Center is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 * for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with the Control Center; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 * 19 * Author: Thomas Wood <thos@gnome.org> 20 */ 21 22 #ifndef _CC_SHELL_H 23 #define _CC_SHELL_H 24 25 #include <gtk/gtk.h> 26 27 G_BEGIN_DECLS 28 29 #define CC_TYPE_SHELL cc_shell_get_type() 30 31 #define CC_SHELL(obj) \ 32 (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ 33 CC_TYPE_SHELL, CcShell)) 34 35 #define CC_SHELL_CLASS(klass) \ 36 (G_TYPE_CHECK_CLASS_CAST ((klass), \ 37 CC_TYPE_SHELL, CcShellClass)) 38 39 #define CC_IS_SHELL(obj) \ 40 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ 41 CC_TYPE_SHELL)) 42 43 #define CC_IS_SHELL_CLASS(klass) \ 44 (G_TYPE_CHECK_CLASS_TYPE ((klass), \ 45 CC_TYPE_SHELL)) 46 47 #define CC_SHELL_GET_CLASS(obj) \ 48 (G_TYPE_INSTANCE_GET_CLASS ((obj), \ 49 CC_TYPE_SHELL, CcShellClass)) 50 51 52 #define CC_SHELL_PANEL_EXTENSION_POINT "cinnamon-control-center-1" 53 54 typedef struct _CcShell CcShell; 55 typedef struct _CcShellClass CcShellClass; 56 typedef struct _CcShellPrivate CcShellPrivate; 57 58 /* cc-panel.h requires CcShell, so make sure they are defined first */ 59 #include "cc-panel.h" 60 61 /** 62 * CcShell: 63 * 64 * The contents of this struct are private should not be accessed directly. 65 */ 66 struct _CcShell 67 { 68 /*< private >*/ 69 GObject parent; 70 71 CcShellPrivate *priv; 72 }; 73 74 /** 75 * CcShellClass: 76 * @set_active_panel_from_id: virtual function to set the active panel from an 77 * id string 78 * 79 */ 80 struct _CcShellClass 81 { 82 /*< private >*/ 83 GObjectClass parent_class; 84 85 /*< public >*/ 86 /* vfuncs */ 87 gboolean (*set_active_panel_from_id) (CcShell *shell, 88 const gchar *id, 89 GVariant *parameters, 90 GError **error); 91 GtkWidget * (*get_toplevel) (CcShell *shell); 92 void (*embed_widget_in_header) (CcShell *shell, 93 GtkWidget *widget); 94 }; 95 96 GType cc_shell_get_type (void) G_GNUC_CONST; 97 98 CcPanel* cc_shell_get_active_panel (CcShell *shell); 99 void cc_shell_set_active_panel (CcShell *shell, 100 CcPanel *panel); 101 gboolean cc_shell_set_active_panel_from_id (CcShell *shell, 102 const gchar *id, 103 GVariant *parameters, 104 GError **error); 105 GtkWidget * cc_shell_get_toplevel (CcShell *shell); 106 107 void cc_shell_embed_widget_in_header (CcShell *shell, 108 GtkWidget *widget); 109 110 G_END_DECLS 111 112 #endif /* _CC_SHELL_H */ 113