~ubuntu-branches/ubuntu/precise/gedit/precise

« back to all changes in this revision

Viewing changes to gedit/gedit-tab-label.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2010-04-14 16:41:13 UTC
  • mfrom: (1.1.78 upstream)
  • Revision ID: james.westby@ubuntu.com-20100414164113-0xgl3u73pcs0ngbc
Tags: 2.30.0git20100413-0ubuntu1
* Updating to git snaptshot since 2.30.1 will be after lucid
* debian/patches/90_autoconf.patch:
  - new version update

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
 
36
36
#define GEDIT_TAB_LABEL_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GEDIT_TYPE_TAB_LABEL, GeditTabLabelPrivate))
37
37
 
 
38
/* Signals */
 
39
enum
 
40
{
 
41
        CLOSE_CLICKED,
 
42
        LAST_SIGNAL
 
43
};
 
44
 
 
45
enum
 
46
{
 
47
        PROP_0,
 
48
        PROP_TAB
 
49
};
 
50
 
38
51
struct _GeditTabLabelPrivate
39
52
{
40
53
        GeditTab *tab;
48
61
        gboolean close_button_sensitive;
49
62
};
50
63
 
51
 
/* Signals */
52
 
enum
53
 
{
54
 
        CLOSE_CLICKED,
55
 
        LAST_SIGNAL
56
 
};
57
 
 
58
64
static guint signals[LAST_SIGNAL] = { 0 };
59
65
 
60
66
G_DEFINE_TYPE (GeditTabLabel, gedit_tab_label, GTK_TYPE_HBOX)
66
72
}
67
73
 
68
74
static void
69
 
gedit_tab_label_class_init (GeditTabLabelClass *klass)
70
 
{
71
 
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
72
 
        
73
 
        object_class->finalize = gedit_tab_label_finalize;
74
 
 
75
 
        signals[CLOSE_CLICKED] =
76
 
                g_signal_new ("close-clicked",
77
 
                              G_OBJECT_CLASS_TYPE (object_class),
78
 
                              G_SIGNAL_RUN_LAST,
79
 
                              G_STRUCT_OFFSET (GeditTabLabelClass, close_clicked),
80
 
                              NULL, NULL,
81
 
                              g_cclosure_marshal_VOID__VOID,
82
 
                              G_TYPE_NONE,
83
 
                              0);
84
 
 
85
 
        g_type_class_add_private (object_class, sizeof(GeditTabLabelPrivate));
 
75
gedit_tab_label_set_property (GObject      *object,
 
76
                              guint         prop_id,
 
77
                              const GValue *value,
 
78
                              GParamSpec   *pspec)
 
79
{
 
80
        GeditTabLabel *tab_label = GEDIT_TAB_LABEL (object);
 
81
 
 
82
        switch (prop_id)
 
83
        {
 
84
                case PROP_TAB:
 
85
                        tab_label->priv->tab = GEDIT_TAB (g_value_get_object (value));
 
86
                        break;
 
87
 
 
88
                default:
 
89
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 
90
                        break;
 
91
        }
 
92
}
 
93
 
 
94
static void
 
95
gedit_tab_label_get_property (GObject    *object,
 
96
                              guint       prop_id,
 
97
                              GValue     *value,
 
98
                              GParamSpec *pspec)
 
99
{
 
100
        GeditTabLabel *tab_label = GEDIT_TAB_LABEL (object);
 
101
 
 
102
        switch (prop_id)
 
103
        {
 
104
                case PROP_TAB:
 
105
                        g_value_set_object (value, tab_label->priv->tab);
 
106
                        break;
 
107
 
 
108
                default:
 
109
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 
110
                        break;
 
111
        }
86
112
}
87
113
 
88
114
static void
174
200
}
175
201
 
176
202
static void
 
203
gedit_tab_label_constructed (GObject *object)
 
204
{
 
205
        GeditTabLabel *tab_label = GEDIT_TAB_LABEL (object);
 
206
 
 
207
        if (!tab_label->priv->tab)
 
208
        {
 
209
                g_critical ("The tab label was not properly constructed");
 
210
                return;
 
211
        }
 
212
 
 
213
        sync_name (tab_label->priv->tab, NULL, tab_label);
 
214
        sync_state (tab_label->priv->tab, NULL, tab_label);
 
215
 
 
216
        g_signal_connect_object (tab_label->priv->tab,
 
217
                                 "notify::name",
 
218
                                 G_CALLBACK (sync_name),
 
219
                                 tab_label,
 
220
                                 0);
 
221
 
 
222
        g_signal_connect_object (tab_label->priv->tab,
 
223
                                 "notify::state",
 
224
                                 G_CALLBACK (sync_state),
 
225
                                 tab_label,
 
226
                                 0);
 
227
}
 
228
 
 
229
static void
 
230
gedit_tab_label_class_init (GeditTabLabelClass *klass)
 
231
{
 
232
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
233
        
 
234
        object_class->finalize = gedit_tab_label_finalize;
 
235
        object_class->set_property = gedit_tab_label_set_property;
 
236
        object_class->get_property = gedit_tab_label_get_property;
 
237
        object_class->constructed = gedit_tab_label_constructed;
 
238
 
 
239
        signals[CLOSE_CLICKED] =
 
240
                g_signal_new ("close-clicked",
 
241
                              G_OBJECT_CLASS_TYPE (object_class),
 
242
                              G_SIGNAL_RUN_LAST,
 
243
                              G_STRUCT_OFFSET (GeditTabLabelClass, close_clicked),
 
244
                              NULL, NULL,
 
245
                              g_cclosure_marshal_VOID__VOID,
 
246
                              G_TYPE_NONE,
 
247
                              0);
 
248
 
 
249
        g_object_class_install_property (object_class,
 
250
                                         PROP_TAB,
 
251
                                         g_param_spec_object ("tab",
 
252
                                                              "Tab",
 
253
                                                              "The GeditTab",
 
254
                                                              GEDIT_TYPE_TAB,
 
255
                                                              G_PARAM_READWRITE |
 
256
                                                              G_PARAM_CONSTRUCT_ONLY));
 
257
 
 
258
        g_type_class_add_private (object_class, sizeof(GeditTabLabelPrivate));
 
259
}
 
260
 
 
261
static void
177
262
gedit_tab_label_init (GeditTabLabel *tab_label)
178
263
{
179
264
        GtkWidget *ebox;
279
364
 
280
365
        tab_label = g_object_new (GEDIT_TYPE_TAB_LABEL,
281
366
                                  "homogeneous", FALSE,
 
367
                                  "tab", tab,
282
368
                                  NULL);
283
369
 
284
 
        /* FIXME: should turn tab in a property */
285
 
        tab_label->priv->tab = tab;
286
 
 
287
 
        sync_name (tab, NULL, tab_label);
288
 
        sync_state (tab, NULL, tab_label);
289
 
 
290
 
        g_signal_connect_object (tab, 
291
 
                                 "notify::name",
292
 
                                 G_CALLBACK (sync_name), 
293
 
                                 tab_label, 
294
 
                                 0);
295
 
        g_signal_connect_object (tab, 
296
 
                                 "notify::state",
297
 
                                 G_CALLBACK (sync_state), 
298
 
                                 tab_label, 
299
 
                                 0);
300
 
 
301
370
        return GTK_WIDGET (tab_label);
302
371
}