finch/libgnt/gntlabel.c

Sat, 25 Nov 2017 21:42:28 +0800

author
Tom Li <tomli@tomli.me>
date
Sat, 25 Nov 2017 21:42:28 +0800
branch
release-2.x.y
changeset 38792
fdb68b9b02b8
parent 28937
5f87e66597d9
child 35059
5fd94b14cc49
permissions
-rw-r--r--

jabber.c: fix #17270, ignore STARTTLS when using BOSH.

Pidgin wants to establish a TLS connection with a STARTTLS request, but
it doesn't make any sense, since the XMPP stream is proxied by the BOSH
connection, which is already encrypted by HTTPS. It is impossible to
STARTTLS with BOSH.

According to XEP-0206: The client SHOULD ignore any Transport Layer Security
(TLS) feature since BOSH channel encryption SHOULD be negotiated at the HTTP
layer.

Failing to do it causes Pidgin fails to create any connection with BOSH to any
XMPP server with STARTTLS enabled.

https://developer.pidgin.im/ticket/17270

17586
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
1 /**
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
2 * GNT - The GLib Ncurses Toolkit
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
3 *
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
4 * GNT is the legal property of its developers, whose names are too numerous
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
6 * source distribution.
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
7 *
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
8 * This library is free software; you can redistribute it and/or modify
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
9 * it under the terms of the GNU General Public License as published by
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
11 * (at your option) any later version.
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
12 *
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
13 * This program is distributed in the hope that it will be useful,
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
16 * GNU General Public License for more details.
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
17 *
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
18 * You should have received a copy of the GNU General Public License
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19235
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
17586
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
21 */
5beb8d987e84 applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents: 15886
diff changeset
22
28937
5f87e66597d9 Fix showing umlauts etc. on non-utf8 locales.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21575
diff changeset
23 #include "gntinternal.h"
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24 #include "gntlabel.h"
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
25 #include "gntutils.h"
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include <string.h>
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 enum
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 {
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
31 PROP_0,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
32 PROP_TEXT,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
33 PROP_TEXT_FLAG
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
34 };
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
35
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
36 enum
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
37 {
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 SIGS = 1,
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 };
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
40
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 static GntWidgetClass *parent_class = NULL;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
43 static void
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44 gnt_label_destroy(GntWidget *widget)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 GntLabel *label = GNT_LABEL(widget);
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 g_free(label->text);
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
50 static void
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51 gnt_label_draw(GntWidget *widget)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
52 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
53 GntLabel *label = GNT_LABEL(widget);
14014
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
54 chtype flag = gnt_text_format_flag_to_chtype(label->flags);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55
14014
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
56 wbkgdset(widget->window, '\0' | flag);
28937
5f87e66597d9 Fix showing umlauts etc. on non-utf8 locales.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21575
diff changeset
57 mvwaddstr(widget->window, 0, 0, C_(label->text));
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58
14494
3575eac3a518 [gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14485
diff changeset
59 GNTDEBUG;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 static void
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63 gnt_label_size_request(GntWidget *widget)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
64 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 GntLabel *label = GNT_LABEL(widget);
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
67 gnt_util_get_text_bound(label->text,
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14026
diff changeset
68 &widget->priv.width, &widget->priv.height);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
69 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 static void
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
72 gnt_label_set_property(GObject *obj, guint prop_id, const GValue *value,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
73 GParamSpec *spec)
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
74 {
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
75 GntLabel *label = GNT_LABEL(obj);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
76 switch (prop_id) {
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
77 case PROP_TEXT:
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
78 g_free(label->text);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
79 label->text = gnt_util_onscreen_fit_string(g_value_get_string(value), -1);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
80 break;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
81 case PROP_TEXT_FLAG:
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
82 label->flags = g_value_get_int(value);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
83 break;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
84 default:
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
85 g_return_if_reached();
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
86 break;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
87 }
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
88 }
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
89
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
90 static void
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
91 gnt_label_get_property(GObject *obj, guint prop_id, GValue *value,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
92 GParamSpec *spec)
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
93 {
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
94 GntLabel *label = GNT_LABEL(obj);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
95 switch (prop_id) {
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
96 case PROP_TEXT:
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
97 g_value_set_string(value, label->text);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
98 break;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
99 case PROP_TEXT_FLAG:
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
100 g_value_set_int(value, label->flags);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
101 break;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
102 default:
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
103 break;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
104 }
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
105 }
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
106
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
107 static void
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13852
diff changeset
108 gnt_label_class_init(GntLabelClass *klass)
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 {
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
110 GObjectClass *gclass = G_OBJECT_CLASS(klass);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
111
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112 parent_class = GNT_WIDGET_CLASS(klass);
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113 parent_class->destroy = gnt_label_destroy;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 parent_class->draw = gnt_label_draw;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 parent_class->map = NULL;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116 parent_class->size_request = gnt_label_size_request;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
118 gclass->set_property = gnt_label_set_property;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
119 gclass->get_property = gnt_label_get_property;
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
120
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
121 g_object_class_install_property(gclass,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
122 PROP_TEXT,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
123 g_param_spec_string("text", "Text",
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
124 "The text for the label.",
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
125 NULL,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
126 G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
127 )
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
128 );
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
129
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
130 g_object_class_install_property(gclass,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
131 PROP_TEXT_FLAG,
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
132 g_param_spec_int("text-flag", "Text flag",
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
133 "Text attribute to use when displaying the text in the label.",
21575
34c1086fcd5a Fix the max value for gntlabel's text-flag property
Richard Nelson <wabz@pidgin.im>
parents: 21272
diff changeset
134 GNT_TEXT_FLAG_NORMAL,
34c1086fcd5a Fix the max value for gntlabel's text-flag property
Richard Nelson <wabz@pidgin.im>
parents: 21272
diff changeset
135 GNT_TEXT_FLAG_NORMAL|GNT_TEXT_FLAG_BOLD|GNT_TEXT_FLAG_UNDERLINE|
34c1086fcd5a Fix the max value for gntlabel's text-flag property
Richard Nelson <wabz@pidgin.im>
parents: 21272
diff changeset
136 GNT_TEXT_FLAG_BLINK|GNT_TEXT_FLAG_DIM|GNT_TEXT_FLAG_HIGHLIGHT,
34c1086fcd5a Fix the max value for gntlabel's text-flag property
Richard Nelson <wabz@pidgin.im>
parents: 21272
diff changeset
137 GNT_TEXT_FLAG_NORMAL,
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
138 G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
139 )
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
140 );
14494
3575eac3a518 [gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14485
diff changeset
141 GNTDEBUG;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
142 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
143
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 static void
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 gnt_label_init(GTypeInstance *instance, gpointer class)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 {
14005
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
147 GntWidget *widget = GNT_WIDGET(instance);
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
148 gnt_widget_set_take_focus(widget, FALSE);
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
149 GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW);
14005
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
150 GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X);
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
151 widget->priv.minw = 3;
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
152 widget->priv.minh = 1;
14494
3575eac3a518 [gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14485
diff changeset
153 GNTDEBUG;
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156 /******************************************************************************
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
157 * GntLabel API
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
158 *****************************************************************************/
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
159 GType
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
160 gnt_label_get_gtype(void)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
161 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
162 static GType type = 0;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
163
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
164 if(type == 0)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
165 {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
166 static const GTypeInfo info = {
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 sizeof(GntLabelClass),
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168 NULL, /* base_init */
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169 NULL, /* base_finalize */
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170 (GClassInitFunc)gnt_label_class_init,
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 NULL, /* class_finalize */
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 NULL, /* class_data */
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173 sizeof(GntLabel),
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 0, /* n_preallocs */
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175 gnt_label_init, /* instance_init */
15874
46df7421a1b5 Enable DEBUG_CFLAGS in libgnt and fix up a number of compile warnings and
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15647
diff changeset
176 NULL /* value_table */
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 };
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179 type = g_type_register_static(GNT_TYPE_WIDGET,
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180 "GntLabel",
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 &info, 0);
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184 return type;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
185 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
186
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187 GntWidget *gnt_label_new(const char *text)
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 {
14014
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
189 return gnt_label_new_with_format(text, 0);
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
190 }
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
191
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
192 GntWidget *gnt_label_new_with_format(const char *text, GntTextFormatFlags flags)
223d99ce2f06 [gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
193 {
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
194 GntWidget *widget = g_object_new(GNT_TYPE_LABEL, "text-flag", flags, "text", text, NULL);
13852
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 return widget;
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 }
1d3ae9f34d42 [gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
198 void gnt_label_set_text(GntLabel *label, const char *text)
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
199 {
21272
2226d681d245 Use gobject properties for labels.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
200 g_object_set(label, "text", text, NULL);
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
201
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
202 if (GNT_WIDGET(label)->window)
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
203 {
18405
3f3fbda44c68 Erase the old text when the text in a label changes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17586
diff changeset
204 werase(GNT_WIDGET(label)->window);
14026
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
205 gnt_widget_draw(GNT_WIDGET(label));
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
206 }
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
207 }
ad91ce0effe2 [gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14014
diff changeset
208

mercurial