aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shell.h
blob: 5dfaafac930d4ee454160541ff083162754601a3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* e-shell.h
 *
 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of version 2 of the GNU General Public
 * License as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 *
 * Author: Ettore Perazzoli
 */

#ifndef _E_SHELL_H_
#define _E_SHELL_H_

#include <bonobo-activation/bonobo-activation.h>
#include <bonobo/bonobo-object.h>

#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus */

typedef struct _EShell        EShell;
typedef struct _EShellPrivate EShellPrivate;
typedef struct _EShellClass   EShellClass;

#include "Evolution.h"

#include "e-component-registry.h"
#include "e-shell-window.h"


#define E_TYPE_SHELL            (e_shell_get_type ())
#define E_SHELL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_SHELL, EShell))
#define E_SHELL_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_SHELL, EShellClass))
#define E_IS_SHELL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SHELL))
#define E_IS_SHELL_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE ((obj), E_TYPE_SHELL))


enum _EShellLineStatus {
    E_SHELL_LINE_STATUS_ONLINE,
    E_SHELL_LINE_STATUS_GOING_OFFLINE, /* NB: really means changing state in either direction */
    E_SHELL_LINE_STATUS_OFFLINE,
    E_SHELL_LINE_STATUS_FORCED_OFFLINE
};
typedef enum _EShellLineStatus EShellLineStatus;

enum _EShellStartupLineMode {
    E_SHELL_STARTUP_LINE_MODE_CONFIG,
    E_SHELL_STARTUP_LINE_MODE_ONLINE,
    E_SHELL_STARTUP_LINE_MODE_OFFLINE
};
typedef enum _EShellStartupLineMode EShellStartupLineMode;

struct _EShell {
    BonoboObject parent;

    EShellPrivate *priv;
};

struct _EShellClass {
    BonoboObjectClass parent_class;

    POA_GNOME_Evolution_Shell__epv epv;

    void (* no_windows_left) (EShell *shell);
    void (* line_status_changed) (EShell *shell, EShellLineStatus status);
    void (* new_window_created) (EShell *shell, EShellWindow *window);
};


/* ID for registering the shell in the OAF name service.  */
#define E_SHELL_OAFIID  "OAFIID:GNOME_Evolution_Shell:" BASE_VERSION

enum _EShellConstructResult {
    E_SHELL_CONSTRUCT_RESULT_OK,
    E_SHELL_CONSTRUCT_RESULT_INVALIDARG,
    E_SHELL_CONSTRUCT_RESULT_CANNOTREGISTER,
    E_SHELL_CONSTRUCT_RESULT_NOCONFIGDB,
    E_SHELL_CONSTRUCT_RESULT_GENERICERROR
};
typedef enum _EShellConstructResult EShellConstructResult;


GType                  e_shell_get_type   (void);
EShellConstructResult  e_shell_construct  (EShell                *shell,
                       const char            *iid,
                       EShellStartupLineMode  startup_line_mode);
EShell                *e_shell_new        (EShellStartupLineMode  startup_line_mode,
                       EShellConstructResult *construct_result_return);

gboolean  e_shell_attempt_upgrade  (EShell     *shell);

EShellWindow *e_shell_create_window         (EShell       *shell,
                         const char   *component_id,
                         EShellWindow *template_window);
gboolean      e_shell_request_close_window  (EShell       *shell,
                         EShellWindow *window);


#if 0
EUriSchemaRegistry *e_shell_peek_uri_schema_registry  (EShell *shell);
#endif

EComponentRegistry *e_shell_peek_component_registry   (EShell *shell);

gboolean            e_shell_save_settings            (EShell *shell);
void                e_shell_close_all_windows        (EShell *shell);

EShellLineStatus  e_shell_get_line_status  (EShell       *shell);
void              e_shell_go_offline       (EShell       *shell,
                        EShellWindow *action_window, GNOME_Evolution_ShellState shell_state);
void              e_shell_go_online        (EShell       *shell,
                        EShellWindow *action_window, GNOME_Evolution_ShellState shell_state);

gboolean    e_shell_get_crash_recovery  (EShell *shell);
void        e_shell_set_crash_recovery  (EShell *shell,
                         gboolean crash_recovery);

void  e_shell_send_receive  (EShell *shell);

void  e_shell_show_settings  (EShell       *shell,
                  const char   *type,
                  EShellWindow *shell_window);

gboolean e_shell_can_quit (EShell *shell);
gboolean e_shell_do_quit  (EShell *shell);
gboolean e_shell_quit     (EShell *shell);

const char *e_shell_construct_result_to_string (EShellConstructResult result);

typedef gboolean (*EMainShellFunc) (EShell *shell, EShellWindow *window, gpointer user_data);
void e_shell_foreach_shell_window (EShell *shell, EMainShellFunc func, gpointer user_data);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* _E_SHELL_H_ */