1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
4 * Copyright (C) Naba Kumar <naba@gnome.org>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 #ifndef _ANJUTA_SHELL_H
21 #define _ANJUTA_SHELL_H
23 #include <glib-object.h>
26 #include <libanjuta/anjuta-shell.h>
27 #include <libanjuta/anjuta-status.h>
28 #include <libanjuta/anjuta-ui.h>
29 #include <libanjuta/anjuta-preferences.h>
30 #include <libanjuta/anjuta-plugin-manager.h>
31 #include <libanjuta/anjuta-profile-manager.h>
32 #include <libanjuta/anjuta-session.h>
33 #include <libanjuta/anjuta-save-prompt.h>
37 #define ANJUTA_TYPE_SHELL (anjuta_shell_get_type ())
38 #define ANJUTA_SHELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ANJUTA_TYPE_SHELL, AnjutaShell))
39 #define ANJUTA_IS_SHELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ANJUTA_TYPE_SHELL))
40 #define ANJUTA_SHELL_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), ANJUTA_TYPE_SHELL, AnjutaShellIface))
42 #define ANJUTA_SHELL_ERROR anjuta_shell_error_quark()
44 typedef struct _AnjutaShell AnjutaShell
;
45 typedef struct _AnjutaShellIface AnjutaShellIface
;
49 * @ANJUTA_SHELL_ERROR_DOESNT_EXIST:
53 ANJUTA_SHELL_ERROR_DOESNT_EXIST
,
58 ANJUTA_SHELL_PLACEMENT_NONE
= 0,
59 ANJUTA_SHELL_PLACEMENT_TOP
,
60 ANJUTA_SHELL_PLACEMENT_BOTTOM
,
61 ANJUTA_SHELL_PLACEMENT_RIGHT
,
62 ANJUTA_SHELL_PLACEMENT_LEFT
,
63 ANJUTA_SHELL_PLACEMENT_CENTER
,
64 ANJUTA_SHELL_PLACEMENT_FLOATING
65 } AnjutaShellPlacement
;
67 struct _AnjutaShellIface
{
68 GTypeInterface g_iface
;
71 void (*value_added
) (AnjutaShell
*shell
, char *name
, GValue
*value
);
72 void (*value_removed
) (AnjutaShell
*shell
, char *name
);
73 void (*save_session
) (AnjutaShell
*shell
, AnjutaSessionPhase phase
,
74 AnjutaSession
*session
);
75 void (*load_session
) (AnjutaShell
*shell
, AnjutaSessionPhase phase
,
76 AnjutaSession
*session
);
77 void (*save_prompt
) (AnjutaShell
*shell
, AnjutaSavePrompt
*save_prompt
);
80 AnjutaStatus
* (*get_status
) (AnjutaShell
*shell
, GError
**error
);
81 AnjutaUI
* (*get_ui
) (AnjutaShell
*shell
, GError
**error
);
82 AnjutaPreferences
* (*get_preferences
) (AnjutaShell
*shell
, GError
**error
);
83 AnjutaPluginManager
* (*get_plugin_manager
) (AnjutaShell
*shell
,
85 AnjutaProfileManager
* (*get_profile_manager
) (AnjutaShell
*shell
,
88 void (*add_widget_full
) (AnjutaShell
*shell
,
93 AnjutaShellPlacement placement
,
96 void (*add_widget_custom
) (AnjutaShell
*shell
,
100 const char *stock_id
,
102 AnjutaShellPlacement placement
,
105 void (*remove_widget
) (AnjutaShell
*shell
,
108 void (*present_widget
) (AnjutaShell
*shell
,
112 void (*iconify_dockable_widget
) (AnjutaShell
*shell
,
115 void (*hide_dockable_widget
) (AnjutaShell
*shell
,
118 void (*show_dockable_widget
) (AnjutaShell
*shell
,
121 void (*maximize_widget
) (AnjutaShell
*shell
,
122 const char *widget_name
,
124 void (*unmaximize
) (AnjutaShell
*shell
,
126 void (*add_value
) (AnjutaShell
*shell
,
130 void (*get_value
) (AnjutaShell
*shell
,
134 void (*remove_value
) (AnjutaShell
*shell
,
137 void (*saving_push
) (AnjutaShell
* shell
);
138 void (*saving_pop
) (AnjutaShell
* shell
);
139 GObject
* (*get_object
) (AnjutaShell
*shell
,
140 const char *iface_name
,
142 AnjutaShell
* (*create_window
) (AnjutaShell
*shell
,
146 GQuark
anjuta_shell_error_quark (void);
147 GType
anjuta_shell_get_type (void);
149 AnjutaStatus
* anjuta_shell_get_status (AnjutaShell
*shell
, GError
**error
);
151 AnjutaUI
* anjuta_shell_get_ui (AnjutaShell
*shell
, GError
**error
);
153 AnjutaPreferences
* anjuta_shell_get_preferences (AnjutaShell
*shell
,
156 AnjutaPluginManager
* anjuta_shell_get_plugin_manager (AnjutaShell
*shell
,
159 AnjutaProfileManager
* anjuta_shell_get_profile_manager (AnjutaShell
*shell
,
162 void anjuta_shell_freeze (AnjutaShell
*shell
, GError
**error
);
163 void anjuta_shell_thaw (AnjutaShell
*shell
, GError
**error
);
165 void anjuta_shell_add_widget (AnjutaShell
*shell
,
169 const char *stock_id
,
170 AnjutaShellPlacement placement
,
173 void anjuta_shell_add_widget_custom (AnjutaShell
*shell
,
177 const char *stock_id
,
179 AnjutaShellPlacement placement
,
182 void anjuta_shell_add_widget_full (AnjutaShell
*shell
,
186 const char *stock_id
,
187 AnjutaShellPlacement placement
,
191 void anjuta_shell_remove_widget (AnjutaShell
*shell
,
194 void anjuta_shell_present_widget (AnjutaShell
*shell
,
197 void anjuta_shell_iconify_dockable_widget (AnjutaShell
*shell
,
200 void anjuta_shell_hide_dockable_widget (AnjutaShell
*shell
,
203 void anjuta_shell_show_dockable_widget (AnjutaShell
*shell
,
206 void anjuta_shell_maximize_widget (AnjutaShell
*shell
,
207 const char *widget_name
,
209 void anjuta_shell_unmaximize (AnjutaShell
*shell
,
211 AnjutaShell
* anjuta_shell_create_window (AnjutaShell
* shell
,
213 void anjuta_shell_add_value (AnjutaShell
*shell
,
217 void anjuta_shell_add_valist (AnjutaShell
*shell
,
218 const char *first_name
,
221 void anjuta_shell_add (AnjutaShell
*shell
,
222 const char *first_name
,
225 void anjuta_shell_get_value (AnjutaShell
*shell
,
229 void anjuta_shell_get_valist (AnjutaShell
*shell
,
230 const char *first_name
,
233 void anjuta_shell_get (AnjutaShell
*shell
,
234 const char *first_name
,
237 void anjuta_shell_remove_value (AnjutaShell
*shell
,
241 GObject
*anjuta_shell_get_object (AnjutaShell
*shell
,
242 const gchar
*iface_name
,
244 void anjuta_shell_session_save (AnjutaShell
*shell
,
245 const gchar
*session_directory
,
247 void anjuta_shell_session_load (AnjutaShell
*shell
,
248 const gchar
*session_directory
,
250 void anjuta_shell_save_prompt (AnjutaShell
*shell
,
251 AnjutaSavePrompt
*prompt
,
253 void anjuta_shell_saving_push (AnjutaShell
* shell
);
254 void anjuta_shell_saving_pop (AnjutaShell
* shell
);
258 * anjuta_shell_get_interface:
259 * @shell: A #AnjutaShell object
260 * @iface_type: The interface type implemented by the object to be found
261 * @error: Error propagation object.
263 * Equivalent to anjuta_shell_get_object(), but additionally typecasts returned
264 * object to the interface type. It also takes interface type directly. A
265 * usage of this function is:
267 * IAnjutaDocumentManager *docman =
268 * anjuta_shell_get_interface (shell, IAnjutaDocumentManager, error);
271 #define anjuta_shell_get_interface(shell, iface_type, error) \
272 ((iface_type*) anjuta_shell_get_object((shell), #iface_type, (error)))