2
* geanyobject.c - this file is part of Geany, a fast and lightweight IDE
4
* Copyright 2007-2008 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
5
* Copyright 2007-2008 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22
* $Id: geanyobject.c 2287 2008-02-27 13:17:29Z eht16 $
25
/* GObject used for connecting and emitting signals when certain events happen,
26
* e.g. opening a document.
27
* Mainly used for plugins - geany_object is created in plugins_init(). */
30
#include "geanyobject.h"
32
GObject *geany_object;
34
static guint geany_object_signals[GCB_MAX] = { 0 };
37
typedef struct _GeanyObjectPrivate GeanyObjectPrivate;
39
#define GEANY_OBJECT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj),\
40
GEANY_OBJECT_TYPE, GeanyObjectPrivate))
42
struct _GeanyObjectPrivate
44
/* to avoid warnings (g_type_class_add_private: assertion `private_size > 0' failed) */
48
static void geany_object_class_init (GeanyObjectClass *klass);
49
static void geany_object_init (GeanyObject *self);
50
static void geany_object_finalize (GObject *object);
53
static GObjectClass *parent_class = NULL;
56
GType geany_object_get_type(void)
58
static GType self_type = 0;
61
static const GTypeInfo self_info =
63
sizeof(GeanyObjectClass),
65
NULL, /* base_finalize */
66
(GClassInitFunc)geany_object_class_init,
67
NULL, /* class_finalize */
68
NULL, /* class_data */
71
(GInstanceInitFunc)geany_object_init,
75
self_type = g_type_register_static(G_TYPE_OBJECT, "GeanyObject", &self_info, 0); }
81
static void create_signals(GObjectClass *g_object_class)
83
geany_object_signals[GCB_DOCUMENT_NEW] = g_signal_new (
85
G_OBJECT_CLASS_TYPE (g_object_class),
87
G_STRUCT_OFFSET (GeanyObjectClass, document_new),
89
gtk_marshal_NONE__INT,
92
geany_object_signals[GCB_DOCUMENT_OPEN] = g_signal_new (
94
G_OBJECT_CLASS_TYPE (g_object_class),
96
G_STRUCT_OFFSET (GeanyObjectClass, document_open),
98
gtk_marshal_NONE__INT,
101
geany_object_signals[GCB_DOCUMENT_SAVE] = g_signal_new (
103
G_OBJECT_CLASS_TYPE (g_object_class),
105
G_STRUCT_OFFSET (GeanyObjectClass, document_save),
107
gtk_marshal_NONE__INT,
110
geany_object_signals[GCB_DOCUMENT_ACTIVATE] = g_signal_new (
112
G_OBJECT_CLASS_TYPE (g_object_class),
114
G_STRUCT_OFFSET (GeanyObjectClass, document_activate),
116
gtk_marshal_NONE__INT,
120
geany_object_signals[GCB_PROJECT_OPEN] = g_signal_new (
122
G_OBJECT_CLASS_TYPE (g_object_class),
124
G_STRUCT_OFFSET (GeanyObjectClass, project_open),
126
gtk_marshal_NONE__INT,
129
geany_object_signals[GCB_PROJECT_SAVE] = g_signal_new (
131
G_OBJECT_CLASS_TYPE (g_object_class),
133
G_STRUCT_OFFSET (GeanyObjectClass, project_save),
135
gtk_marshal_NONE__INT,
138
geany_object_signals[GCB_PROJECT_CLOSE] = g_signal_new (
140
G_OBJECT_CLASS_TYPE (g_object_class),
142
G_STRUCT_OFFSET (GeanyObjectClass, project_close),
144
gtk_marshal_NONE__NONE,
149
static void geany_object_class_init(GeanyObjectClass *klass)
151
GObjectClass *g_object_class;
153
g_object_class = G_OBJECT_CLASS(klass);
155
g_object_class->finalize = geany_object_finalize;
157
parent_class = (GObjectClass*)g_type_class_peek(G_TYPE_OBJECT);
158
g_type_class_add_private((gpointer)klass, sizeof(GeanyObjectPrivate));
160
create_signals(g_object_class);
164
static void geany_object_init(GeanyObject *self)
170
GObject* geany_object_new(void)
172
return (GObject*)g_object_new(GEANY_OBJECT_TYPE, NULL);
176
static void geany_object_finalize(GObject *object)
180
g_return_if_fail(object != NULL);
181
g_return_if_fail(IS_GEANY_OBJECT(object));
183
self = GEANY_OBJECT(object);
185
if (G_OBJECT_CLASS(parent_class)->finalize)
186
(* G_OBJECT_CLASS(parent_class)->finalize)(object);