15817
|
1 #include "gntclipboard.h"
|
|
2
|
|
3 gchar *string;
|
|
4
|
|
5 enum {
|
|
6 SIG_CLIPBOARD = 0,
|
|
7 SIGS
|
|
8 };
|
|
9
|
|
10 static guint signals[SIGS] = { 0 };
|
|
11
|
|
12 static void
|
|
13 gnt_clipboard_class_init(GntClipboardClass *klass)
|
|
14 {
|
|
15 signals[SIG_CLIPBOARD] =
|
|
16 g_signal_new("clipboard_changed",
|
|
17 G_TYPE_FROM_CLASS(klass),
|
|
18 G_SIGNAL_RUN_LAST,
|
|
19 0,
|
|
20 NULL, NULL,
|
|
21 g_cclosure_marshal_VOID__POINTER,
|
|
22 G_TYPE_NONE, 1, G_TYPE_POINTER);
|
|
23
|
|
24 }
|
|
25
|
|
26 /******************************************************************************
|
|
27 * GntClipboard API
|
|
28 *****************************************************************************/
|
|
29
|
|
30 void
|
|
31 gnt_clipboard_set_string(GntClipboard *clipboard, gchar *string)
|
|
32 {
|
|
33 g_free(clipboard->string);
|
|
34 clipboard->string = g_strdup(string);
|
|
35 g_signal_emit(clipboard, signals[SIG_CLIPBOARD], 0, clipboard->string);
|
|
36 }
|
|
37
|
|
38 gchar *
|
|
39 gnt_clipboard_get_string(GntClipboard *clipboard)
|
|
40 {
|
|
41 return g_strdup(clipboard->string);
|
|
42 }
|
|
43
|
|
44 static void gnt_clipboard_init(GTypeInstance *instance, gpointer class) {
|
|
45 GntClipboard *clipboard = GNT_CLIPBOARD(instance);
|
|
46 clipboard->string = g_strdup("");
|
|
47 }
|
|
48
|
|
49 GType
|
|
50 gnt_clipboard_get_gtype(void)
|
|
51 {
|
|
52 static GType type = 0;
|
|
53
|
|
54 if (type == 0) {
|
|
55 static const GTypeInfo info = {
|
|
56 sizeof(GntClipboardClass),
|
|
57 NULL, /* base_init */
|
|
58 NULL, /* base_finalize */
|
|
59 (GClassInitFunc)gnt_clipboard_class_init,
|
|
60 NULL,
|
|
61 NULL, /* class_data */
|
|
62 sizeof(GntClipboard),
|
|
63 0, /* n_preallocs */
|
|
64 gnt_clipboard_init, /* instance_init */
|
|
65 NULL /* value_table */
|
|
66 };
|
|
67
|
|
68 type = g_type_register_static(G_TYPE_OBJECT,
|
|
69 "GntClipboard",
|
|
70 &info, 0);
|
|
71 }
|
|
72
|
|
73 return type;
|
|
74 }
|