Mercurial > pidgin.yaz
comparison finch/libgnt/gntprogressbar.c @ 26638:cd7fa6306f85
Indentation changes, initialization changes etc.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sun, 12 Apr 2009 18:58:27 +0000 |
parents | 35430bc421c2 |
children | a372ea58c3ae |
comparison
equal
deleted
inserted
replaced
26637:35430bc421c2 | 26638:cd7fa6306f85 |
---|---|
25 | 25 |
26 #include <string.h> | 26 #include <string.h> |
27 | 27 |
28 typedef struct _GntProgressBarPrivate | 28 typedef struct _GntProgressBarPrivate |
29 { | 29 { |
30 gdouble fraction; | 30 gdouble fraction; |
31 gboolean show_value; | 31 gboolean show_value; |
32 GntProgressBarOrientation orientation; | 32 GntProgressBarOrientation orientation; |
33 } GntProgressBarPrivate; | 33 } GntProgressBarPrivate; |
34 | 34 |
35 struct _GntProgressBar | |
36 { | |
37 GntWidget parent; | |
38 #if !GLIB_CHECK_VERSION(2,4,0) | |
39 GntProgressBarPrivate priv; | |
40 #endif | |
41 }; | |
42 | |
43 #if GLIB_CHECK_VERSION(2,4,0) | |
35 #define GNT_PROGRESS_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNT_TYPE_PROGRESS_BAR, GntProgressBarPrivate)) | 44 #define GNT_PROGRESS_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNT_TYPE_PROGRESS_BAR, GntProgressBarPrivate)) |
36 | 45 #else |
46 #define GNT_PROGRESS_BAR_GET_PRIVATE(o) &(GNT_PROGRESS_BAR(o)->priv) | |
47 #endif | |
37 | 48 |
38 static GntWidgetClass *parent_class = NULL; | 49 static GntWidgetClass *parent_class = NULL; |
39 | 50 |
40 | 51 |
41 static void | 52 static void |
42 gnt_progress_bar_draw (GntWidget *widget) | 53 gnt_progress_bar_draw (GntWidget *widget) |
43 { | 54 { |
44 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); | 55 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); |
45 gchar progress[6]; /* strlen("100 %") == 5 */ | 56 gchar progress[8]; |
46 gint start, end, i, pos; | 57 gint start, end, i, pos; |
47 | 58 |
48 g_snprintf (progress, sizeof (progress), "%.0f %%", priv->fraction * 100); | 59 g_snprintf (progress, sizeof (progress), "%.1f%%", priv->fraction * 100); |
49 | 60 |
50 switch (priv->orientation) | 61 switch (priv->orientation) { |
51 { | 62 case GNT_PROGRESS_LEFT_TO_RIGHT: |
52 case GNT_PROGRESS_LEFT_TO_RIGHT: | 63 case GNT_PROGRESS_RIGHT_TO_LEFT: |
53 case GNT_PROGRESS_RIGHT_TO_LEFT: | 64 start = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? 0 : (1.0 - priv->fraction) * widget->priv.width); |
54 start = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? 0 : (1.0 - priv->fraction) * widget->priv.width); | 65 end = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? widget->priv.width * priv->fraction : widget->priv.width); |
55 end = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? widget->priv.width * priv->fraction : widget->priv.width); | 66 |
56 | 67 /* background */ |
57 /* background */ | 68 for (i = 0; i < widget->priv.height; i++) |
58 for (i = 0; i < widget->priv.height; i++) | 69 mvwhline (widget->window, i, 0, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.width); |
59 mvwhline (widget->window, i, 0, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.width); | 70 |
60 | 71 /* foreground */ |
61 /* foreground */ | 72 for (i = 0; i < widget->priv.height; i++) |
62 for (i = 0; i < widget->priv.height; i++) | 73 mvwhline (widget->window, i, start, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); |
63 mvwhline (widget->window, i, start, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); | 74 |
64 | 75 /* text */ |
65 /* text */ | 76 if (priv->show_value) { |
66 if (priv->show_value) | 77 for (i = 0; i < strlen(progress); i++) { |
67 { | 78 pos = widget->priv.width / 2 - strlen (progress) / 2 + i; |
68 for (i = 0; i < strlen(progress); i++) | 79 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); |
69 { | 80 mvwprintw (widget->window, widget->priv.height / 2, pos, "%c", progress[i]); |
70 pos = widget->priv.width / 2 - strlen (progress) / 2 + i; | 81 } |
71 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); | 82 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); |
72 mvwprintw (widget->window, widget->priv.height / 2, pos, "%c", progress[i]); | 83 } |
73 } | 84 |
74 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); | 85 break; |
75 } | 86 case GNT_PROGRESS_TOP_TO_BOTTOM: |
76 | 87 case GNT_PROGRESS_BOTTOM_TO_TOP: |
77 break; | 88 start = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? 0 : (1.0 - priv->fraction) * widget->priv.height); |
78 case GNT_PROGRESS_TOP_TO_BOTTOM: | 89 end = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? widget->priv.height * priv->fraction : widget->priv.height); |
79 case GNT_PROGRESS_BOTTOM_TO_TOP: | 90 |
80 start = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? 0 : (1.0 - priv->fraction) * widget->priv.height); | 91 /* background */ |
81 end = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? widget->priv.height * priv->fraction : widget->priv.height); | 92 for (i = 0; i < widget->priv.width; i++) |
82 | 93 mvwvline (widget->window, 0, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.height); |
83 /* background */ | 94 |
84 for (i = 0; i < widget->priv.width; i++) | 95 /* foreground */ |
85 mvwvline (widget->window, 0, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.height); | 96 for (i = 0; i < widget->priv.width; i++) |
86 | 97 mvwvline (widget->window, start, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); |
87 /* foreground */ | 98 |
88 for (i = 0; i < widget->priv.width; i++) | 99 /* text */ |
89 mvwvline (widget->window, start, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); | 100 if (priv->show_value) { |
90 | 101 for (i = 0; i < strlen(progress); i++) { |
91 /* text */ | 102 pos = widget->priv.height / 2 - strlen (progress) / 2 + i; |
92 if (priv->show_value) | 103 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); |
93 { | 104 mvwprintw (widget->window, pos, widget->priv.width / 2, "%c\n", progress[i]); |
94 for (i = 0; i < strlen(progress); i++) | 105 } |
95 { | 106 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); |
96 pos = widget->priv.height / 2 - strlen (progress) / 2 + i; | 107 } |
97 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); | 108 |
98 mvwprintw (widget->window, pos, widget->priv.width / 2, "%c\n", progress[i]); | 109 break; |
99 } | 110 default: |
100 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); | 111 g_assert_not_reached (); |
101 } | 112 } |
102 | |
103 break; | |
104 default: | |
105 g_assert_not_reached (); | |
106 } | |
107 } | 113 } |
108 | 114 |
109 static void | 115 static void |
110 gnt_progress_bar_size_request (GntWidget *widget) | 116 gnt_progress_bar_size_request (GntWidget *widget) |
111 { | 117 { |
112 gnt_widget_set_size (widget, widget->priv.minw, widget->priv.minh); | 118 gnt_widget_set_size (widget, widget->priv.minw, widget->priv.minh); |
113 } | 119 } |
114 | 120 |
115 static void | 121 static void |
116 gnt_progress_bar_class_init (gpointer klass, gpointer class_data) | 122 gnt_progress_bar_class_init (gpointer klass, gpointer class_data) |
117 { | 123 { |
118 GObjectClass *g_class = G_OBJECT_CLASS (klass); | 124 GObjectClass *g_class = G_OBJECT_CLASS (klass); |
119 | 125 |
120 parent_class = GNT_WIDGET_CLASS (klass); | 126 parent_class = GNT_WIDGET_CLASS (klass); |
121 | 127 |
122 g_type_class_add_private (g_class, sizeof (GntProgressBarPrivate)); | 128 #if GLIB_CHECK_VERSION(2,4,0) |
123 | 129 g_type_class_add_private (g_class, sizeof (GntProgressBarPrivate)); |
124 parent_class->draw = gnt_progress_bar_draw; | 130 #endif |
125 parent_class->size_request = gnt_progress_bar_size_request; | 131 |
132 parent_class->draw = gnt_progress_bar_draw; | |
133 parent_class->size_request = gnt_progress_bar_size_request; | |
126 } | 134 } |
127 | 135 |
128 static void | 136 static void |
129 gnt_progress_bar_init (GTypeInstance *instance, gpointer g_class) | 137 gnt_progress_bar_init (GTypeInstance *instance, gpointer g_class) |
130 { | 138 { |
131 GntWidget *widget = GNT_WIDGET (instance); | 139 GntWidget *widget = GNT_WIDGET (instance); |
132 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); | 140 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); |
133 | 141 |
134 gnt_widget_set_take_focus (widget, FALSE); | 142 gnt_widget_set_take_focus (widget, FALSE); |
135 GNT_WIDGET_SET_FLAGS (widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW); | 143 GNT_WIDGET_SET_FLAGS (widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW | GNT_WIDGET_GROW_X); |
136 | 144 |
137 widget->priv.minw = 1; | 145 widget->priv.minw = 1; |
138 widget->priv.minh = 1; | 146 widget->priv.minh = 1; |
139 | 147 |
140 priv->show_value = FALSE; | 148 priv->show_value = TRUE; |
141 } | 149 } |
142 | 150 |
143 GType | 151 GType |
144 gnt_progress_bar_get_type (void) | 152 gnt_progress_bar_get_type (void) |
145 { | 153 { |
146 static GType type = 0; | 154 static GType type = 0; |
147 | 155 |
148 if (type == 0) | 156 if (type == 0) { |
149 { | 157 static const GTypeInfo info = { |
150 static const GTypeInfo info = | 158 sizeof (GntProgressBarClass), |
151 { | 159 NULL, /* base_init */ |
152 sizeof (GntProgressBarClass), | 160 NULL, /* base_finalize */ |
153 NULL, /* base_init */ | 161 gnt_progress_bar_class_init, /* class_init */ |
154 NULL, /* base_finalize */ | 162 NULL, /* class_finalize */ |
155 gnt_progress_bar_class_init, /* class_init */ | 163 NULL, /* class_data */ |
156 NULL, /* class_finalize */ | 164 sizeof (GntProgressBar), |
157 NULL, /* class_data */ | 165 0, /* n_preallocs */ |
158 sizeof (GntProgressBar), | 166 gnt_progress_bar_init, /* instance_init */ |
159 0, /* n_preallocs */ | 167 NULL /* value_table */ |
160 gnt_progress_bar_init, /* instance_init */ | 168 }; |
161 NULL /* value_table */ | 169 |
162 }; | 170 type = g_type_register_static (GNT_TYPE_WIDGET, "GntProgressBar", &info, 0); |
163 | 171 } |
164 type = g_type_register_static (GNT_TYPE_WIDGET, "GntProgressBar", &info, 0); | 172 |
165 } | 173 return type; |
166 | |
167 return type; | |
168 } | 174 } |
169 | 175 |
170 GntWidget * | 176 GntWidget * |
171 gnt_progress_bar_new (void) | 177 gnt_progress_bar_new (void) |
172 { | 178 { |
173 GntWidget *widget = g_object_new (GNT_TYPE_PROGRESS_BAR, NULL); | 179 GntWidget *widget = g_object_new (GNT_TYPE_PROGRESS_BAR, NULL); |
174 return widget; | 180 return widget; |
175 } | 181 } |
176 | 182 |
177 void | 183 void |
178 gnt_progress_bar_set_fraction (GntProgressBar *pbar, gdouble fraction) | 184 gnt_progress_bar_set_fraction (GntProgressBar *pbar, gdouble fraction) |
179 { | 185 { |
180 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); | 186 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); |
181 | 187 |
182 if (fraction > 1.0) | 188 if (fraction > 1.0) |
183 priv->fraction = 1.0; | 189 priv->fraction = 1.0; |
184 else if (fraction < 0.0) | 190 else if (fraction < 0.0) |
185 priv->fraction = 0.0; | 191 priv->fraction = 0.0; |
186 else | 192 else |
187 priv->fraction = fraction; | 193 priv->fraction = fraction; |
188 | 194 |
189 gnt_progress_bar_draw (GNT_WIDGET (pbar)); | 195 if ((GNT_WIDGET_FLAGS(pbar) & GNT_WIDGET_MAPPED)) |
190 gnt_widget_queue_update (GNT_WIDGET (pbar)); | 196 gnt_widget_draw(GNT_WIDGET(pbar)); |
191 } | 197 } |
192 | 198 |
193 void | 199 void |
194 gnt_progress_bar_set_orientation (GntProgressBar *pbar, | 200 gnt_progress_bar_set_orientation (GntProgressBar *pbar, |
195 GntProgressBarOrientation orientation) | 201 GntProgressBarOrientation orientation) |
196 { | 202 { |
197 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); | 203 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); |
198 priv->orientation = orientation; | 204 priv->orientation = orientation; |
199 | 205 if (orientation == GNT_PROGRESS_LEFT_TO_RIGHT || |
200 gnt_progress_bar_draw (GNT_WIDGET (pbar)); | 206 orientation == GNT_PROGRESS_RIGHT_TO_LEFT) { |
201 gnt_widget_queue_update (GNT_WIDGET (pbar)); | 207 GNT_WIDGET_SET_FLAGS(pbar, GNT_WIDGET_GROW_X); |
208 GNT_WIDGET_UNSET_FLAGS(pbar, GNT_WIDGET_GROW_Y); | |
209 } else { | |
210 GNT_WIDGET_UNSET_FLAGS(pbar, GNT_WIDGET_GROW_X); | |
211 GNT_WIDGET_SET_FLAGS(pbar, GNT_WIDGET_GROW_Y); | |
212 } | |
213 | |
214 if ((GNT_WIDGET_FLAGS(pbar) & GNT_WIDGET_MAPPED)) | |
215 gnt_widget_draw(GNT_WIDGET(pbar)); | |
202 } | 216 } |
203 | 217 |
204 void | 218 void |
205 gnt_progress_bar_set_show_progress (GntProgressBar *pbar, gboolean show) | 219 gnt_progress_bar_set_show_progress (GntProgressBar *pbar, gboolean show) |
206 { | 220 { |
207 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); | 221 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); |
208 priv->show_value = show; | 222 priv->show_value = show; |
209 } | 223 } |
210 | 224 |
211 gdouble | 225 gdouble |
212 gnt_progress_bar_get_fraction (GntProgressBar *pbar) | 226 gnt_progress_bar_get_fraction (GntProgressBar *pbar) |
213 { | 227 { |
214 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); | 228 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); |
215 return priv->fraction; | 229 return priv->fraction; |
216 } | 230 } |
217 | 231 |
218 GntProgressBarOrientation | 232 GntProgressBarOrientation |
219 gnt_progress_bar_get_orientation (GntProgressBar *pbar) | 233 gnt_progress_bar_get_orientation (GntProgressBar *pbar) |
220 { | 234 { |
221 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); | 235 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); |
222 return priv->orientation; | 236 return priv->orientation; |
223 } | 237 } |
224 | 238 |
225 gboolean | 239 gboolean |
226 gnt_progress_bar_get_show_progress (GntProgressBar *pbar) | 240 gnt_progress_bar_get_show_progress (GntProgressBar *pbar) |
227 { | 241 { |
228 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); | 242 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); |
229 return priv->show_value; | 243 return priv->show_value; |
230 } | 244 } |
231 | 245 |