Mercurial > pidgin
annotate finch/libgnt/gntline.c @ 31144:7986f4e5a05f
jabber: Be friendlier to servers when we have nothing to say.
Don't try to reconnect immediately, but do so when we have something
to send. Untested (I'll test it later), but I'm hoping hsitas444 will
test it first. Refs #13008.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Wed, 12 Jan 2011 14:31:52 +0000 |
parents | 88d889b54df4 |
children |
rev | line source |
---|---|
17928
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
1 /** |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
2 * GNT - The GLib Ncurses Toolkit |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
3 * |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
4 * GNT is the legal property of its developers, whose names are too numerous |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
5 * to list here. Please refer to the COPYRIGHT file distributed with this |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
6 * source distribution. |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
7 * |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
8 * This library is free software; you can redistribute it and/or modify |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
10 * the Free Software Foundation; either version 2 of the License, or |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
11 * (at your option) any later version. |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
12 * |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
16 * GNU General Public License for more details. |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
17 * |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
19 * along with this program; if not, write to the Free Software |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18869
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
17928
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
21 */ |
8410511f4dbb
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15817
diff
changeset
|
22 |
28836
88d889b54df4
Fix building finch & libgnt using older gcc or non-gcc compilers that do
Stu Tomlinson <stu@nosnilmot.com>
parents:
21250
diff
changeset
|
23 #include "gntinternal.h" |
15817 | 24 #include "gntline.h" |
25 | |
26 enum | |
27 { | |
18869
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
28 PROP_0, |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
29 PROP_VERTICAL |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
30 }; |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
31 |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
32 enum |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
33 { |
15817 | 34 SIGS = 1, |
35 }; | |
36 | |
37 static GntWidgetClass *parent_class = NULL; | |
38 | |
39 static void | |
40 gnt_line_draw(GntWidget *widget) | |
41 { | |
42 GntLine *line = GNT_LINE(widget); | |
43 if (line->vertical) | |
21250
9187d331aebe
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
44 mvwvline(widget->window, 1, 0, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL), |
15817 | 45 widget->priv.height - 2); |
46 else | |
21250
9187d331aebe
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
47 mvwhline(widget->window, 0, 1, ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL), |
15817 | 48 widget->priv.width - 2); |
49 } | |
50 | |
51 static void | |
52 gnt_line_size_request(GntWidget *widget) | |
53 { | |
54 if (GNT_LINE(widget)->vertical) | |
55 { | |
56 widget->priv.width = 1; | |
57 widget->priv.height = 5; | |
58 } | |
59 else | |
60 { | |
61 widget->priv.width = 5; | |
62 widget->priv.height = 1; | |
63 } | |
64 } | |
65 | |
66 static void | |
67 gnt_line_map(GntWidget *widget) | |
68 { | |
69 if (widget->priv.width == 0 || widget->priv.height == 0) | |
70 gnt_widget_size_request(widget); | |
71 GNTDEBUG; | |
72 } | |
73 | |
74 static void | |
18869
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
75 gnt_line_set_property(GObject *obj, guint prop_id, const GValue *value, |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
76 GParamSpec *spec) |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
77 { |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
78 GntLine *line = GNT_LINE(obj); |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
79 switch (prop_id) { |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
80 case PROP_VERTICAL: |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
81 line->vertical = g_value_get_boolean(value); |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
82 if (line->vertical) { |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
83 GNT_WIDGET_SET_FLAGS(line, GNT_WIDGET_GROW_Y); |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
84 } else { |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
85 GNT_WIDGET_SET_FLAGS(line, GNT_WIDGET_GROW_X); |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
86 } |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
87 break; |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
88 default: |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
89 break; |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
90 } |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
91 } |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
92 |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
93 static void |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
94 gnt_line_get_property(GObject *obj, guint prop_id, GValue *value, |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
95 GParamSpec *spec) |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
96 { |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
97 GntLine *line = GNT_LINE(obj); |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
98 switch (prop_id) { |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
99 case PROP_VERTICAL: |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
100 g_value_set_boolean(value, line->vertical); |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
101 break; |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
102 default: |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
103 break; |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
104 } |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
105 } |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
106 |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
107 static void |
15817 | 108 gnt_line_class_init(GntLineClass *klass) |
109 { | |
18869
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
110 GObjectClass *gclass = G_OBJECT_CLASS(klass); |
15817 | 111 parent_class = GNT_WIDGET_CLASS(klass); |
112 parent_class->draw = gnt_line_draw; | |
113 parent_class->map = gnt_line_map; | |
114 parent_class->size_request = gnt_line_size_request; | |
115 | |
18869
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
116 gclass->set_property = gnt_line_set_property; |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
117 gclass->get_property = gnt_line_get_property; |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
118 g_object_class_install_property(gclass, |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
119 PROP_VERTICAL, |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
120 g_param_spec_boolean("vertical", "Vertical", |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
121 "Whether it's a vertical line or a horizontal one.", |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
122 TRUE, |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
123 G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
124 ) |
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
125 ); |
15817 | 126 } |
127 | |
128 static void | |
129 gnt_line_init(GTypeInstance *instance, gpointer class) | |
130 { | |
131 GntWidget *widget = GNT_WIDGET(instance); | |
132 GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER); | |
133 widget->priv.minw = 1; | |
134 widget->priv.minh = 1; | |
135 GNTDEBUG; | |
136 } | |
137 | |
138 /****************************************************************************** | |
139 * GntLine API | |
140 *****************************************************************************/ | |
141 GType | |
142 gnt_line_get_gtype(void) | |
143 { | |
144 static GType type = 0; | |
145 | |
146 if(type == 0) | |
147 { | |
148 static const GTypeInfo info = { | |
149 sizeof(GntLineClass), | |
150 NULL, /* base_init */ | |
151 NULL, /* base_finalize */ | |
152 (GClassInitFunc)gnt_line_class_init, | |
153 NULL, /* class_finalize */ | |
154 NULL, /* class_data */ | |
155 sizeof(GntLine), | |
156 0, /* n_preallocs */ | |
157 gnt_line_init, /* instance_init */ | |
158 NULL /* value_table */ | |
159 }; | |
160 | |
161 type = g_type_register_static(GNT_TYPE_WIDGET, | |
162 "GntLine", | |
163 &info, 0); | |
164 } | |
165 | |
166 return type; | |
167 } | |
168 | |
169 GntWidget *gnt_line_new(gboolean vertical) | |
170 { | |
18869
5dc587a877d6
Use gobject properties for lines.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
17928
diff
changeset
|
171 GntWidget *widget = g_object_new(GNT_TYPE_LINE, "vertical", vertical, NULL); |
15817 | 172 return widget; |
173 } | |
174 |