Mercurial > geeqie
diff src/layout.c @ 1240:30e207ac22e4
added a status bar button for writting metadata immediately
author | nadvornik |
---|---|
date | Sun, 11 Jan 2009 18:58:05 +0000 |
parents | ca8ccf0c3e81 |
children | a5c78d3cfea0 |
line wrap: on
line diff
--- a/src/layout.c Sun Jan 11 12:13:30 2009 +0000 +++ b/src/layout.c Sun Jan 11 18:58:05 2009 +0000 @@ -523,6 +523,36 @@ return button; } +/* + *----------------------------------------------------------------------------- + * write button + *----------------------------------------------------------------------------- + */ + +static void layout_write_button_press_cb(GtkWidget *widget, gpointer data) +{ + LayoutWindow *lw = data; + metadata_write_queue_confirm(NULL, NULL); +} + +static GtkWidget *layout_write_button(LayoutWindow *lw) +{ + GtkWidget *button; + GtkWidget *image; + + button = gtk_button_new(); + image = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU); + gtk_container_add(GTK_CONTAINER(button), image); + gtk_widget_show(image); + g_signal_connect(G_OBJECT(button), "clicked", + G_CALLBACK(layout_write_button_press_cb), lw); + gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); + + gtk_widget_set_sensitive(button, metadata_queue_length() > 0); + + return button; +} + /* *----------------------------------------------------------------------------- @@ -530,6 +560,30 @@ *----------------------------------------------------------------------------- */ +void layout_status_update_write(LayoutWindow *lw) +{ + if (!layout_valid(&lw)) return; + if (!lw->info_write) return; + + gtk_widget_set_sensitive(lw->info_write, metadata_queue_length() > 0); + /* FIXME: maybe show also the number of files */ +} + +void layout_status_update_write_all(void) +{ + GList *work; + + work = layout_window_list; + while (work) + { + LayoutWindow *lw = work->data; + work = work->next; + + layout_status_update_write(lw); + } +} + + void layout_status_update_progress(LayoutWindow *lw, gdouble val, const gchar *text) { if (!layout_valid(&lw)) return; @@ -667,6 +721,7 @@ layout_status_update_progress(lw, 0.0, NULL); layout_status_update_info(lw, NULL); layout_status_update_image(lw); + layout_status_update_write(lw); } static GtkWidget *layout_status_label(gchar *text, GtkWidget *box, gint start, gint size, gint expand) @@ -733,7 +788,11 @@ lw->info_color = layout_color_button(lw); gtk_widget_show(lw->info_color); + lw->info_write = layout_write_button(lw); + gtk_widget_show(lw->info_write); + if (small_format) gtk_box_pack_end(GTK_BOX(hbox), lw->info_color, FALSE, FALSE, 0); + if (small_format) gtk_box_pack_end(GTK_BOX(hbox), lw->info_write, FALSE, FALSE, 0); lw->info_status = layout_status_label(NULL, lw->info_box, TRUE, 0, (!small_format)); @@ -749,6 +808,7 @@ } lw->info_details = layout_status_label(NULL, hbox, TRUE, 0, TRUE); if (!small_format) gtk_box_pack_start(GTK_BOX(hbox), lw->info_color, FALSE, FALSE, 0); + if (!small_format) gtk_box_pack_start(GTK_BOX(hbox), lw->info_write, FALSE, FALSE, 0); lw->info_zoom = layout_status_label(NULL, hbox, FALSE, ZOOM_LABEL_WIDTH, FALSE); }