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
|
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) version 3.
*
* 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with the program; if not, see <http://www.gnu.org/licenses/>
*
*
* Authors:
* Michael Zucchi <notzed@ximian.com>
*
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
*
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string.h>
#include <stdlib.h>
#include "es-event.h"
#include "e-shell.h"
static ESEvent *es_event;
G_DEFINE_TYPE (ESEvent, es_event, E_TYPE_EVENT)
static void
es_event_class_init (ESEventClass *class)
{
}
static void
es_event_init (ESEvent *event)
{
}
/**
* es_event_peek:
*
* Get the singular instance of the shell event handler.
*
* Return: the shell event handler
**/
ESEvent *
es_event_peek (void)
{
if (es_event == NULL) {
es_event = g_object_new (es_event_get_type (), NULL);
/** @HookPoint: Shell Events Hookpoint
* Id: org.gnome.evolution.shell.events
*
* This is the hook point which emits shell events.
*/
e_event_construct (&es_event->event, "org.gnome.evolution.shell.events");
}
return es_event;
}
ESEventTargetUpgrade *
es_event_target_new_upgrade (ESEvent *eme,
gint major,
gint minor,
gint revision)
{
ESEventTargetUpgrade *t;
t = e_event_target_new (
&eme->event, ES_EVENT_TARGET_UPGRADE, sizeof (*t));
t->major = major;
t->minor = minor;
t->revision = revision;
return t;
}
/* ********************************************************************** */
G_DEFINE_TYPE (ESEventHook, es_event_hook, E_TYPE_EVENT_HOOK)
static const EEventHookTargetMap emeh_targets[] = {
{ "upgrade", ES_EVENT_TARGET_UPGRADE, NULL },
{ NULL }
};
static void
es_event_hook_class_init (ESEventHookClass *class)
{
EPluginHookClass *plugin_hook_class;
EEventHookClass *event_hook_class;
gint i;
/** @HookClass: Shell Main Menu
* @Id: org.gnome.evolution.shell.events:1.0
* @Target: ESEventTargetState
*
* A hook for events coming from the shell.
**/
plugin_hook_class = E_PLUGIN_HOOK_CLASS (class);
plugin_hook_class->id = "org.gnome.evolution.shell.events:1.0";
for (i = 0; emeh_targets[i].type; i++)
e_event_hook_class_add_target_map (
(EEventHookClass *) class, &emeh_targets[i]);
event_hook_class = E_EVENT_HOOK_CLASS (class);
event_hook_class->event = (EEvent *) es_event_peek ();
}
static void
es_event_hook_init (ESEventHook *hook)
{
}
|