* initial code dump into SVN; needs some work
[modest] / src / modest-window-mgr.h
1 /* modest-window-mgr.h */
2 /* insert (c)/licensing information) */
3
4 #ifndef __MODEST_WINDOW_MGR_H__
5 #define __MODEST_WINDOW_MGR_H__
6
7 #include <glib-object.h>
8 /* other include files */
9
10 G_BEGIN_DECLS
11
12 /* convenience macros */
13 #define MODEST_TYPE_WINDOW_MGR             (modest_window_mgr_get_type())
14 #define MODEST_WINDOW_MGR(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_WINDOW_MGR,ModestWindowMgr))
15 #define MODEST_WINDOW_MGR_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_WINDOW_MGR,GObject))
16 #define MODEST_IS_WINDOW_MGR(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_WINDOW_MGR))
17 #define MODEST_IS_WINDOW_MGR_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_WINDOW_MGR))
18 #define MODEST_WINDOW_MGR_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_WINDOW_MGR,ModestWindowMgrClass))
19
20 enum {
21         MODEST_MAIN_WINDOW,        /* the main window */
22         MODEST_EDIT_WINDOW,        /* a window to edit a mail */
23         MODEST_ACCOUNT_WINDOW,     /* a window to edit account information */
24         MODEST_VIEW_WINDOW         /* a window to view mails */
25 };
26 typedef guint ModestWindowType;
27
28
29 typedef struct _ModestOpenWindow ModestOpenWindow;
30 struct _ModestOpenWindow {
31         GObject          *win;
32         ModestWindowType type;
33         guint            id;
34 };
35
36
37 typedef struct _ModestWindowMgr      ModestWindowMgr;
38 typedef struct _ModestWindowMgrClass ModestWindowMgrClass;
39
40 struct _ModestWindowMgr {
41         GObject parent;
42 };
43
44 struct _ModestWindowMgrClass {
45         GObjectClass parent_class;
46         
47         void (* last_window_closed) (ModestWindowMgr* obj);
48 };
49
50 /* member functions */
51 GType        modest_window_mgr_get_type    (void) G_GNUC_CONST;
52
53 /* typical parameter-less _new function */
54 /* if this is a kind of GtkWidget, it should probably return at GtkWidget*, */
55 /*    otherwise probably a GObject*. */
56 GObject*    modest_window_mgr_new         (void);
57
58 gboolean    modest_window_mgr_register   (ModestWindowMgr *self, GObject *win,
59                                           ModestWindowType type, guint window_id);
60 gboolean    modest_window_mgr_unregister (ModestWindowMgr *self, GObject *win);
61 GObject*    modest_window_mgr_find_by_type (ModestWindowMgr *self, ModestWindowType type);
62 GObject*    modest_window_mgr_find_by_id (ModestWindowMgr *self, gint window_id);
63
64 G_END_DECLS
65
66 #endif /* __MODEST_WINDOW_MGR_H__ */
67