Mercurial > geeqie
comparison src/bar.c @ 1469:607c60506863
added a possibility to update existing bars from config
author | nadvornik |
---|---|
date | Fri, 20 Mar 2009 21:28:31 +0000 |
parents | 1b3751ac4743 |
children | 65a5c27823c2 |
comparison
equal
deleted
inserted
replaced
1468:e9f9d3da3f43 | 1469:607c60506863 |
---|---|
149 } | 149 } |
150 g_list_free(list); | 150 g_list_free(list); |
151 return ret; | 151 return ret; |
152 } | 152 } |
153 | 153 |
154 GtkWidget *bar_find_pane_by_id(GtkWidget *bar, PaneType type, const gchar *id) | |
155 { | |
156 BarData *bd; | |
157 GList *list, *work; | |
158 GtkWidget *ret = NULL; | |
159 | |
160 if (!id || !id[0]) return NULL; | |
161 | |
162 bd = g_object_get_data(G_OBJECT(bar), "bar_data"); | |
163 if (!bd) return NULL; | |
164 | |
165 list = gtk_container_get_children(GTK_CONTAINER(bd->vbox)); | |
166 | |
167 work = list; | |
168 while (work) | |
169 { | |
170 GtkWidget *widget = gtk_bin_get_child(GTK_BIN(work->data)); | |
171 PaneData *pd = g_object_get_data(G_OBJECT(widget), "pane_data"); | |
172 if (!pd) continue; | |
173 | |
174 if (type == pd->type && strcmp(id, pd->id) == 0) | |
175 { | |
176 ret = widget; | |
177 break; | |
178 } | |
179 work = work->next; | |
180 } | |
181 g_list_free(list); | |
182 return ret; | |
183 } | |
184 | |
185 void bar_clear(GtkWidget *bar) | |
186 { | |
187 BarData *bd; | |
188 GList *list, *work; | |
189 | |
190 bd = g_object_get_data(G_OBJECT(bar), "bar_data"); | |
191 if (!bd) return; | |
192 | |
193 list = gtk_container_get_children(GTK_CONTAINER(bd->vbox)); | |
194 | |
195 work = list; | |
196 while (work) | |
197 { | |
198 GtkWidget *widget = work->data; | |
199 gtk_widget_destroy(widget); | |
200 work = work->next; | |
201 } | |
202 g_list_free(list); | |
203 } | |
204 | |
154 void bar_write_config(GtkWidget *bar, GString *outstr, gint indent) | 205 void bar_write_config(GtkWidget *bar, GString *outstr, gint indent) |
155 { | 206 { |
156 BarData *bd; | 207 BarData *bd; |
157 GList *list, *work; | 208 GList *list, *work; |
158 | 209 |
163 | 214 |
164 WRITE_NL(); WRITE_STRING("<bar "); | 215 WRITE_NL(); WRITE_STRING("<bar "); |
165 write_bool_option(outstr, indent, "enabled", GTK_WIDGET_VISIBLE(bar)); | 216 write_bool_option(outstr, indent, "enabled", GTK_WIDGET_VISIBLE(bar)); |
166 write_uint_option(outstr, indent, "width", bd->width); | 217 write_uint_option(outstr, indent, "width", bd->width); |
167 WRITE_STRING(">"); | 218 WRITE_STRING(">"); |
219 | |
220 indent++; | |
221 WRITE_NL(); WRITE_STRING("<clear/>"); | |
168 | 222 |
169 list = gtk_container_get_children(GTK_CONTAINER(bd->vbox)); | 223 list = gtk_container_get_children(GTK_CONTAINER(bd->vbox)); |
170 work = list; | 224 work = list; |
171 while (work) | 225 while (work) |
172 { | 226 { |
176 if (!pd) continue; | 230 if (!pd) continue; |
177 | 231 |
178 pd->expanded = gtk_expander_get_expanded(GTK_EXPANDER(expander)); | 232 pd->expanded = gtk_expander_get_expanded(GTK_EXPANDER(expander)); |
179 | 233 |
180 if (pd->pane_write_config) | 234 if (pd->pane_write_config) |
181 pd->pane_write_config(widget, outstr, indent + 1); | 235 pd->pane_write_config(widget, outstr, indent); |
182 | 236 |
183 work = work->next; | 237 work = work->next; |
184 } | 238 } |
185 g_list_free(list); | 239 g_list_free(list); |
186 | 240 indent--; |
187 WRITE_NL(); WRITE_STRING("</bar>"); | 241 WRITE_NL(); WRITE_STRING("</bar>"); |
188 } | 242 } |
189 | 243 |
244 void bar_update_expander(GtkWidget *pane) | |
245 { | |
246 PaneData *pd = g_object_get_data(G_OBJECT(pane), "pane_data"); | |
247 GtkWidget *expander; | |
248 | |
249 if (!pd) return; | |
250 | |
251 expander = pane->parent; | |
252 | |
253 gtk_expander_set_expanded(GTK_EXPANDER(expander), pd->expanded); | |
254 } | |
190 | 255 |
191 void bar_add(GtkWidget *bar, GtkWidget *pane) | 256 void bar_add(GtkWidget *bar, GtkWidget *pane) |
192 { | 257 { |
193 GtkWidget *expander; | 258 GtkWidget *expander; |
194 BarData *bd = g_object_get_data(G_OBJECT(bar), "bar_data"); | 259 BarData *bd = g_object_get_data(G_OBJECT(bar), "bar_data"); |
222 | 287 |
223 static void bar_populate_default(GtkWidget *bar) | 288 static void bar_populate_default(GtkWidget *bar) |
224 { | 289 { |
225 GtkWidget *widget; | 290 GtkWidget *widget; |
226 | 291 |
227 widget = bar_pane_histogram_new(_("Histogram"), 80, TRUE, HCHAN_RGB, 0); | 292 widget = bar_pane_histogram_new("histogram", _("Histogram"), 80, TRUE, HCHAN_RGB, 0); |
228 bar_add(bar, widget); | 293 bar_add(bar, widget); |
229 | 294 |
230 widget = bar_pane_comment_new(_("Title"), "Xmp.dc.title", TRUE, 40); | 295 widget = bar_pane_comment_new("title", _("Title"), "Xmp.dc.title", TRUE, 40); |
231 bar_add(bar, widget); | 296 bar_add(bar, widget); |
232 | 297 |
233 widget = bar_pane_keywords_new(_("Keywords"), KEYWORD_KEY, TRUE); | 298 widget = bar_pane_keywords_new("keywords", _("Keywords"), KEYWORD_KEY, TRUE); |
234 bar_add(bar, widget); | 299 bar_add(bar, widget); |
235 | 300 |
236 widget = bar_pane_comment_new(_("Comment"), "Xmp.dc.description", TRUE, 150); | 301 widget = bar_pane_comment_new("comment", _("Comment"), "Xmp.dc.description", TRUE, 150); |
237 bar_add(bar, widget); | 302 bar_add(bar, widget); |
238 | 303 |
239 widget = bar_pane_exif_new(_("Exif"), TRUE, TRUE); | 304 widget = bar_pane_exif_new("exif", _("Exif"), TRUE, TRUE); |
240 bar_add(bar, widget); | 305 bar_add(bar, widget); |
241 } | 306 } |
242 | 307 |
243 static void bar_size_allocate(GtkWidget *widget, GtkAllocation *allocation, gpointer data) | 308 static void bar_size_allocate(GtkWidget *widget, GtkAllocation *allocation, gpointer data) |
244 { | 309 { |
333 gtk_widget_show(bar); | 398 gtk_widget_show(bar); |
334 | 399 |
335 return bar; | 400 return bar; |
336 } | 401 } |
337 | 402 |
338 GtkWidget *bar_new_from_config(LayoutWindow *lw, const gchar **attribute_names, const gchar **attribute_values) | 403 GtkWidget *bar_update_from_config(GtkWidget *bar, const gchar **attribute_names, const gchar **attribute_values) |
339 { | 404 { |
340 GtkWidget *bar = bar_new(lw); | |
341 | |
342 gboolean enabled = TRUE; | 405 gboolean enabled = TRUE; |
343 gint width = SIDEBAR_DEFAULT_WIDTH; | 406 gint width = SIDEBAR_DEFAULT_WIDTH; |
344 | 407 |
345 while (*attribute_names) | 408 while (*attribute_names) |
346 { | 409 { |
353 | 416 |
354 log_printf("unknown attribute %s = %s\n", option, value); | 417 log_printf("unknown attribute %s = %s\n", option, value); |
355 } | 418 } |
356 | 419 |
357 gtk_widget_set_size_request(bar, width, -1); | 420 gtk_widget_set_size_request(bar, width, -1); |
358 if (enabled) gtk_widget_show(bar); | 421 if (enabled) |
422 { | |
423 gtk_widget_show(bar); | |
424 } | |
425 else | |
426 { | |
427 gtk_widget_hide(bar); | |
428 } | |
359 return bar; | 429 return bar; |
430 } | |
431 | |
432 GtkWidget *bar_new_from_config(LayoutWindow *lw, const gchar **attribute_names, const gchar **attribute_values) | |
433 { | |
434 GtkWidget *bar = bar_new(lw); | |
435 return bar_update_from_config(bar, attribute_names, attribute_values); | |
360 } | 436 } |
361 | 437 |
362 GtkWidget *bar_pane_expander_title(const gchar *title) | 438 GtkWidget *bar_pane_expander_title(const gchar *title) |
363 { | 439 { |
364 GtkWidget *widget = gtk_label_new(title); | 440 GtkWidget *widget = gtk_label_new(title); |