Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
|
17586
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
1 | /** |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
2 | * GNT - The GLib Ncurses Toolkit |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
3 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
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:
16187
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:
16187
diff
changeset
|
6 | * source distribution. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
7 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
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:
16187
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:
16187
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:
16187
diff
changeset
|
11 | * (at your option) any later version. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
12 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
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:
16187
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
16 | * GNU General Public License for more details. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
17 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
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:
16187
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:
19561
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:
16187
diff
changeset
|
21 | */ |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16187
diff
changeset
|
22 | |
|
24822
d7774462f2ba
Use glib log functions to show error messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
23 | #include "gntinternal.h" |
|
d7774462f2ba
Use glib log functions to show error messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
24 | #undef GNT_LOG_DOMAIN |
|
d7774462f2ba
Use glib log functions to show error messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
25 | #define GNT_LOG_DOMAIN "Utils" |
|
d7774462f2ba
Use glib log functions to show error messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
26 | |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
27 | #include "gntbutton.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
28 | #include "gntcheckbox.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
29 | #include "gntcombobox.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
30 | #include "gntentry.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
31 | #include "gntlabel.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
32 | #include "gntline.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
33 | #include "gnttextview.h" |
|
16047
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
34 | #include "gnttree.h" |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
35 | #include "gntutils.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
36 | #include "gntwindow.h" |
|
14121
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
37 | |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
38 | #include "config.h" |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
39 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
40 | #include <stdarg.h> |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
41 | #include <stdlib.h> |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
42 | #include <string.h> |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
43 | |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
44 | #ifndef NO_LIBXML |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
45 | #include <libxml/parser.h> |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
46 | #include <libxml/tree.h> |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
47 | #endif |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
48 | |
|
14479
ab5407a042eb
[gaim-migrate @ 17125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14428
diff
changeset
|
49 | #include "config.h" |
|
ab5407a042eb
[gaim-migrate @ 17125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14428
diff
changeset
|
50 | |
|
14121
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
51 | void gnt_util_get_text_bound(const char *text, int *width, int *height) |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
52 | { |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
53 | const char *s = text, *last; |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
54 | int count = 1, max = 0; |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
55 | int len; |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
56 | |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
57 | /* XXX: ew ... everyone look away */ |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
58 | last = s; |
|
14122
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
59 | if (s) |
|
14121
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
60 | { |
|
14122
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
61 | while (*s) |
|
14121
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
62 | { |
|
14122
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
63 | if (*s == '\n' || *s == '\r') |
|
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
64 | { |
|
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
65 | count++; |
|
14482
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14481
diff
changeset
|
66 | len = gnt_util_onscreen_width(last, s); |
|
14122
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
67 | if (max < len) |
|
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
68 | max = len; |
|
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
69 | last = s + 1; |
|
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
70 | } |
|
14482
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14481
diff
changeset
|
71 | s = g_utf8_next_char(s); |
|
14121
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
72 | } |
|
14122
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
73 | |
|
14482
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14481
diff
changeset
|
74 | len = gnt_util_onscreen_width(last, s); |
|
14122
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
75 | if (max < len) |
|
daf2aaa61829
[gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14121
diff
changeset
|
76 | max = len; |
|
14121
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
77 | } |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
78 | |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
79 | if (height) |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
80 | *height = count; |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
81 | if (width) |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
82 | *width = max + (count > 1); |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
83 | } |
|
3d8804b82150
[gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
84 | |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
85 | int gnt_util_onscreen_width(const char *start, const char *end) |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
86 | { |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
87 | int width = 0; |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
88 | |
|
14539
7d5528c864a1
[gaim-migrate @ 17195]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14486
diff
changeset
|
89 | if (end == NULL) |
|
7d5528c864a1
[gaim-migrate @ 17195]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14486
diff
changeset
|
90 | end = start + strlen(start); |
|
7d5528c864a1
[gaim-migrate @ 17195]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14486
diff
changeset
|
91 | |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
92 | while (start < end) { |
| 14481 | 93 | width += g_unichar_iswide(g_utf8_get_char(start)) ? 2 : 1; |
| 94 | start = g_utf8_next_char(start); | |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
95 | } |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
96 | return width; |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
97 | } |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
98 | |
|
14482
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14481
diff
changeset
|
99 | const char *gnt_util_onscreen_width_to_pointer(const char *string, int len, int *w) |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
100 | { |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
101 | int size; |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
102 | int width = 0; |
|
14482
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14481
diff
changeset
|
103 | const char *str = string; |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
104 | |
|
14776
f34432aa0233
[gaim-migrate @ 17468]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14539
diff
changeset
|
105 | if (len <= 0) { |
|
14886
9f76d3a61aa7
[gaim-migrate @ 17591]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14855
diff
changeset
|
106 | len = gnt_util_onscreen_width(string, NULL); |
|
14776
f34432aa0233
[gaim-migrate @ 17468]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14539
diff
changeset
|
107 | } |
|
f34432aa0233
[gaim-migrate @ 17468]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14539
diff
changeset
|
108 | |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
109 | while (width < len && *str) { |
| 14481 | 110 | size = g_unichar_iswide(g_utf8_get_char(str)) ? 2 : 1; |
| 111 | if (width + size > len) | |
| 112 | break; | |
| 113 | str = g_utf8_next_char(str); | |
| 114 | width += size; | |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
115 | } |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
116 | if (w) |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
117 | *w = width; |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
118 | return str; |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
119 | } |
|
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14122
diff
changeset
|
120 | |
|
14485
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
121 | char *gnt_util_onscreen_fit_string(const char *string, int maxw) |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
122 | { |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
123 | const char *start, *end; |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
124 | GString *str; |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
125 | |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
126 | if (maxw <= 0) |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
127 | maxw = getmaxx(stdscr) - 4; |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
128 | |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
129 | start = string; |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
130 | str = g_string_new(NULL); |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
131 | |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
132 | while (*start) { |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
133 | if ((end = strchr(start, '\n')) != NULL || |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
134 | (end = strchr(start, '\r')) != NULL) { |
|
14486
002fe2ca0159
[gaim-migrate @ 17132]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14485
diff
changeset
|
135 | if (gnt_util_onscreen_width(start, end) > maxw) |
|
14485
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
136 | end = NULL; |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
137 | } |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
138 | if (end == NULL) |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
139 | end = gnt_util_onscreen_width_to_pointer(start, maxw, NULL); |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
140 | str = g_string_append_len(str, start, end - start); |
|
14486
002fe2ca0159
[gaim-migrate @ 17132]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14485
diff
changeset
|
141 | if (*end) { |
|
002fe2ca0159
[gaim-migrate @ 17132]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14485
diff
changeset
|
142 | str = g_string_append_c(str, '\n'); |
|
002fe2ca0159
[gaim-migrate @ 17132]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14485
diff
changeset
|
143 | if (*end == '\n' || *end == '\r') |
|
002fe2ca0159
[gaim-migrate @ 17132]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14485
diff
changeset
|
144 | end++; |
|
002fe2ca0159
[gaim-migrate @ 17132]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14485
diff
changeset
|
145 | } |
|
14485
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
146 | start = end; |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
147 | } |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
148 | return g_string_free(str, FALSE); |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
149 | } |
|
4fc80c5c8c84
[gaim-migrate @ 17131]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
150 | |
|
15365
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
151 | struct duplicate_fns |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
152 | { |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
153 | GDupFunc key_dup; |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
154 | GDupFunc value_dup; |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
155 | GHashTable *table; |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
156 | }; |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
157 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
158 | static void |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
159 | duplicate_values(gpointer key, gpointer value, gpointer data) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
160 | { |
|
15365
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
161 | struct duplicate_fns *fns = data; |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
162 | g_hash_table_insert(fns->table, fns->key_dup ? fns->key_dup(key) : key, |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
163 | fns->value_dup ? fns->value_dup(value) : value); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
164 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
165 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
166 | GHashTable *g_hash_table_duplicate(GHashTable *src, GHashFunc hash, |
|
15365
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
167 | GEqualFunc equal, GDestroyNotify key_d, GDestroyNotify value_d, |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
168 | GDupFunc key_dup, GDupFunc value_dup) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
169 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
170 | GHashTable *dest = g_hash_table_new_full(hash, equal, key_d, value_d); |
|
15365
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
171 | struct duplicate_fns fns = {key_dup, value_dup, dest}; |
|
5a83efd6955d
[gaim-migrate @ 18094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
172 | g_hash_table_foreach(src, duplicate_values, &fns); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
173 | return dest; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
174 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14776
diff
changeset
|
175 | |
|
15220
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
176 | gboolean gnt_boolean_handled_accumulator(GSignalInvocationHint *ihint, |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
177 | GValue *return_accu, |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
178 | const GValue *handler_return, |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
179 | gpointer dummy) |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
180 | { |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
181 | gboolean continue_emission; |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
182 | gboolean signal_handled; |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
183 | |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
184 | signal_handled = g_value_get_boolean (handler_return); |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
185 | g_value_set_boolean (return_accu, signal_handled); |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
186 | continue_emission = !signal_handled; |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
187 | |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
188 | return continue_emission; |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
189 | } |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
190 | |
|
16047
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
191 | typedef struct { |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
192 | GHashTable *hash; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
193 | GntTree *tree; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
194 | } BindingView; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
195 | |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
196 | static void |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
197 | add_binding(gpointer key, gpointer value, gpointer data) |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
198 | { |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
199 | BindingView *bv = data; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
200 | GntBindableActionParam *act = value; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
201 | const char *name = g_hash_table_lookup(bv->hash, act->action); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
202 | if (name && *name) { |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
203 | const char *k = gnt_key_lookup(key); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
204 | if (!k) |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
205 | k = key; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
206 | gnt_tree_add_row_after(bv->tree, (gpointer)k, |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
207 | gnt_tree_create_row(bv->tree, k, name), NULL, NULL); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
208 | } |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
209 | } |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
210 | |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
211 | static void |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
212 | add_action(gpointer key, gpointer value, gpointer data) |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
213 | { |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
214 | BindingView *bv = data; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
215 | g_hash_table_insert(bv->hash, value, key); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
216 | } |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
217 | |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
218 | GntWidget *gnt_widget_bindings_view(GntWidget *widget) |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
219 | { |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
220 | GntBindable *bind = GNT_BINDABLE(widget); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
221 | GntWidget *tree = gnt_tree_new_with_columns(2); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
222 | GntBindableClass *klass = GNT_BINDABLE_CLASS(GNT_BINDABLE_GET_CLASS(bind)); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
223 | GHashTable *hash = g_hash_table_new(g_direct_hash, g_direct_equal); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
224 | BindingView bv = {hash, GNT_TREE(tree)}; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
225 | |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
226 | gnt_tree_set_compare_func(bv.tree, (GCompareFunc)g_utf8_collate); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
227 | g_hash_table_foreach(klass->actions, add_action, &bv); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
228 | g_hash_table_foreach(klass->bindings, add_binding, &bv); |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
229 | if (GNT_TREE(tree)->list == NULL) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
230 | gnt_widget_destroy(tree); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
231 | tree = NULL; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
232 | } else |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
233 | gnt_tree_adjust_columns(bv.tree); |
|
16047
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
234 | g_hash_table_destroy(hash); |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
235 | |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
236 | return tree; |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
237 | } |
|
03880dc14852
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
238 | |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
239 | #ifndef NO_LIBXML |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
240 | static GntWidget * |
|
18849
9d803f3e8447
Guard against possible weird crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18763
diff
changeset
|
241 | gnt_widget_from_xmlnode(xmlNode *node, GntWidget **data[], int max) |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
242 | { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
243 | GntWidget *widget = NULL; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
244 | char *name; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
245 | char *id, *prop, *content; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
246 | int val; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
247 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
248 | if (node == NULL || node->name == NULL || node->type != XML_ELEMENT_NODE) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
249 | return NULL; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
250 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
251 | name = (char*)node->name; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
252 | content = (char*)xmlNodeGetContent(node); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
253 | if (strcmp(name + 1, "window") == 0 || strcmp(name + 1, "box") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
254 | xmlNode *ch; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
255 | char *title; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
256 | gboolean vert = (*name == 'v'); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
257 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
258 | if (name[1] == 'w') |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
259 | widget = gnt_window_box_new(FALSE, vert); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
260 | else |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
261 | widget = gnt_box_new(FALSE, vert); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
262 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
263 | title = (char*)xmlGetProp(node, (xmlChar*)"title"); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
264 | if (title) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
265 | gnt_box_set_title(GNT_BOX(widget), title); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
266 | xmlFree(title); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
267 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
268 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
269 | prop = (char*)xmlGetProp(node, (xmlChar*)"fill"); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
270 | if (prop) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
271 | if (sscanf(prop, "%d", &val) == 1) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
272 | gnt_box_set_fill(GNT_BOX(widget), !!val); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
273 | xmlFree(prop); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
274 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
275 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
276 | prop = (char*)xmlGetProp(node, (xmlChar*)"align"); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
277 | if (prop) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
278 | if (sscanf(prop, "%d", &val) == 1) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
279 | gnt_box_set_alignment(GNT_BOX(widget), val); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
280 | xmlFree(prop); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
281 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
282 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
283 | prop = (char*)xmlGetProp(node, (xmlChar*)"pad"); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
284 | if (prop) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
285 | if (sscanf(prop, "%d", &val) == 1) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
286 | gnt_box_set_pad(GNT_BOX(widget), val); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
287 | xmlFree(prop); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
288 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
289 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
290 | for (ch = node->children; ch; ch=ch->next) |
|
18849
9d803f3e8447
Guard against possible weird crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18763
diff
changeset
|
291 | gnt_box_add_widget(GNT_BOX(widget), gnt_widget_from_xmlnode(ch, data, max)); |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
292 | } else if (strcmp(name, "button") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
293 | widget = gnt_button_new(content); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
294 | } else if (strcmp(name, "label") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
295 | widget = gnt_label_new(content); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
296 | } else if (strcmp(name, "entry") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
297 | widget = gnt_entry_new(content); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
298 | } else if (strcmp(name, "combobox") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
299 | widget = gnt_combo_box_new(); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
300 | } else if (strcmp(name, "checkbox") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
301 | widget = gnt_check_box_new(content); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
302 | } else if (strcmp(name, "tree") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
303 | widget = gnt_tree_new(); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
304 | } else if (strcmp(name, "textview") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
305 | widget = gnt_text_view_new(); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
306 | } else if (strcmp(name + 1, "line") == 0) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
307 | widget = gnt_line_new(*name == 'v'); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
308 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
309 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
310 | xmlFree(content); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
311 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
312 | if (widget == NULL) { |
|
24822
d7774462f2ba
Use glib log functions to show error messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
313 | gnt_warning("Invalid widget name %s", name); |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
314 | return NULL; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
315 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
316 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
317 | id = (char*)xmlGetProp(node, (xmlChar*)"id"); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
318 | if (id) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
319 | int i; |
|
18849
9d803f3e8447
Guard against possible weird crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18763
diff
changeset
|
320 | if (sscanf(id, "%d", &i) == 1 && i >= 0 && i < max) { |
|
9d803f3e8447
Guard against possible weird crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18763
diff
changeset
|
321 | *data[i] = widget; |
|
9d803f3e8447
Guard against possible weird crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18763
diff
changeset
|
322 | xmlFree(id); |
|
9d803f3e8447
Guard against possible weird crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18763
diff
changeset
|
323 | } |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
324 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
325 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
326 | prop = (char*)xmlGetProp(node, (xmlChar*)"border"); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
327 | if (prop) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
328 | int val; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
329 | if (sscanf(prop, "%d", &val) == 1) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
330 | if (val) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
331 | GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_NO_BORDER); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
332 | else |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
333 | GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
334 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
335 | xmlFree(prop); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
336 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
337 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
338 | prop = (char*)xmlGetProp(node, (xmlChar*)"shadow"); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
339 | if (prop) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
340 | int val; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
341 | if (sscanf(prop, "%d", &val) == 1) { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
342 | if (val) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
343 | GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_NO_BORDER); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
344 | else |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
345 | GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
346 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
347 | xmlFree(prop); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
348 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
349 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
350 | return widget; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
351 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
352 | #endif |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
353 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
354 | void gnt_util_parse_widgets(const char *string, int num, ...) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
355 | { |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
356 | #ifndef NO_LIBXML |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
357 | xmlParserCtxtPtr ctxt; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
358 | xmlDocPtr doc; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
359 | xmlNodePtr node; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
360 | va_list list; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
361 | GntWidget ***data; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
362 | int id; |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
363 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
364 | ctxt = xmlNewParserCtxt(); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
365 | doc = xmlCtxtReadDoc(ctxt, (xmlChar*)string, NULL, NULL, XML_PARSE_NOBLANKS); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
366 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
367 | data = g_new0(GntWidget **, num); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
368 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
369 | va_start(list, num); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
370 | for (id = 0; id < num; id++) |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
371 | data[id] = va_arg(list, gpointer); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
372 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
373 | node = xmlDocGetRootElement(doc); |
|
18849
9d803f3e8447
Guard against possible weird crashes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18763
diff
changeset
|
374 | gnt_widget_from_xmlnode(node, data, num); |
|
16187
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
375 | |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
376 | xmlFreeDoc(doc); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
377 | xmlCleanupParser(); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
378 | va_end(list); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
379 | g_free(data); |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
380 | #endif |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
381 | } |
|
2977f4a9cc80
Add a utility function to create widgets from an XML description.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16047
diff
changeset
|
382 | |
|
19456
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
383 | #ifndef NO_LIBXML |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
384 | static void |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
385 | util_parse_html_to_tv(xmlNode *node, GntTextView *tv, GntTextFormatFlags flag) |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
386 | { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
387 | const char *name; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
388 | char *content; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
389 | xmlNode *ch; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
390 | gboolean processed = FALSE; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
391 | char *url = NULL; |
|
19561
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
392 | gboolean insert_nl_s = FALSE, insert_nl_e = FALSE; |
|
19456
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
393 | |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
394 | if (node == NULL || node->name == NULL || node->type != XML_ELEMENT_NODE) |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
395 | return; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
396 | |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
397 | name = (char*)node->name; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
398 | if (g_ascii_strcasecmp(name, "b") == 0 || |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
399 | g_ascii_strcasecmp(name, "strong") == 0 || |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
400 | g_ascii_strcasecmp(name, "i") == 0 || |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
401 | g_ascii_strcasecmp(name, "blockquote") == 0) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
402 | flag |= GNT_TEXT_FLAG_BOLD; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
403 | } else if (g_ascii_strcasecmp(name, "u") == 0) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
404 | flag |= GNT_TEXT_FLAG_UNDERLINE; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
405 | } else if (g_ascii_strcasecmp(name, "br") == 0) { |
|
19561
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
406 | insert_nl_e = TRUE; |
|
19456
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
407 | } else if (g_ascii_strcasecmp(name, "a") == 0) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
408 | flag |= GNT_TEXT_FLAG_UNDERLINE; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
409 | url = (char *)xmlGetProp(node, (xmlChar*)"href"); |
|
19561
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
410 | } else if (g_ascii_strcasecmp(name, "h1") == 0 || |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
411 | g_ascii_strcasecmp(name, "h2") == 0 || |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
412 | g_ascii_strcasecmp(name, "h3") == 0 || |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
413 | g_ascii_strcasecmp(name, "h4") == 0 || |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
414 | g_ascii_strcasecmp(name, "h5") == 0 || |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
415 | g_ascii_strcasecmp(name, "h6") == 0) { |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
416 | insert_nl_s = TRUE; |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
417 | insert_nl_e = TRUE; |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
418 | } else if (g_ascii_strcasecmp(name, "title") == 0) { |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
419 | insert_nl_s = TRUE; |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
420 | insert_nl_e = TRUE; |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
421 | flag |= GNT_TEXT_FLAG_BOLD | GNT_TEXT_FLAG_UNDERLINE; |
|
19456
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
422 | } else { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
423 | /* XXX: Process other possible tags */ |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
424 | } |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
425 | |
|
19561
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
426 | if (insert_nl_s) |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
427 | gnt_text_view_append_text_with_flags(tv, "\n", flag); |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
428 | |
|
19456
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
429 | for (ch = node->children; ch; ch = ch->next) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
430 | if (ch->type == XML_ELEMENT_NODE) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
431 | processed = TRUE; |
|
19561
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
432 | util_parse_html_to_tv(ch, tv, flag); |
|
19456
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
433 | } |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
434 | } |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
435 | |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
436 | if (!processed) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
437 | content = (char*)xmlNodeGetContent(node); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
438 | gnt_text_view_append_text_with_flags(tv, content, flag); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
439 | xmlFree(content); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
440 | } |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
441 | |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
442 | if (url) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
443 | char *href = g_strdup_printf(" (%s)", url); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
444 | gnt_text_view_append_text_with_flags(tv, href, flag); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
445 | g_free(href); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
446 | xmlFree(url); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
447 | } |
|
19561
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
448 | |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
449 | if (insert_nl_e) |
|
249b4eca3431
Add support for a few more XHTML tags.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19456
diff
changeset
|
450 | gnt_text_view_append_text_with_flags(tv, "\n", flag); |
|
19456
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
451 | } |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
452 | #endif |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
453 | |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
454 | gboolean gnt_util_parse_xhtml_to_textview(const char *string, GntTextView *tv) |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
455 | { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
456 | #ifdef NO_LIBXML |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
457 | return FALSE; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
458 | #else |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
459 | xmlParserCtxtPtr ctxt; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
460 | xmlDocPtr doc; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
461 | xmlNodePtr node; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
462 | GntTextFormatFlags flag = GNT_TEXT_FLAG_NORMAL; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
463 | gboolean ret = FALSE; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
464 | |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
465 | ctxt = xmlNewParserCtxt(); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
466 | doc = xmlCtxtReadDoc(ctxt, (xmlChar*)string, NULL, NULL, XML_PARSE_NOBLANKS | XML_PARSE_RECOVER); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
467 | if (doc) { |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
468 | node = xmlDocGetRootElement(doc); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
469 | util_parse_html_to_tv(node, tv, flag); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
470 | xmlFreeDoc(doc); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
471 | ret = TRUE; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
472 | } |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
473 | xmlCleanupParser(); |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
474 | return ret; |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
475 | #endif |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
476 | } |
|
a37d7ba493d4
Add support to parse and add XHTML in a textview. This we can use for logs,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19235
diff
changeset
|
477 | |
|
18763
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
478 | /* Setup trigger widget */ |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
479 | typedef struct { |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
480 | char *text; |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
481 | GntWidget *button; |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
482 | } TriggerButton; |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
483 | |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
484 | static void |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
485 | free_trigger_button(TriggerButton *b) |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
486 | { |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
487 | g_free(b->text); |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
488 | g_free(b); |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
489 | } |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
490 | |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
491 | static gboolean |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
492 | key_pressed(GntWidget *widget, const char *text, TriggerButton *trig) |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
493 | { |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
494 | if (text && trig->text && |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
495 | strcmp(text, trig->text) == 0) { |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
496 | gnt_widget_activate(trig->button); |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
497 | return TRUE; |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
498 | } |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
499 | return FALSE; |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
500 | } |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
501 | |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
502 | void gnt_util_set_trigger_widget(GntWidget *wid, const char *text, GntWidget *button) |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
503 | { |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
504 | TriggerButton *tb = g_new0(TriggerButton, 1); |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
505 | tb->text = g_strdup(text); |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
506 | tb->button = button; |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
507 | g_signal_connect(G_OBJECT(wid), "key_pressed", G_CALLBACK(key_pressed), tb); |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
508 | g_signal_connect_swapped(G_OBJECT(button), "destroy", G_CALLBACK(free_trigger_button), tb); |
|
7731e1028071
Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
509 | } |