int main (int argc, char **argv) { GList *toplevels; GList *node; /* If there's no DISPLAY, we silently error out. We don't want to break * headless builds. */ if (! gtk_init_check (&argc, &argv)) return 0; toplevels = get_all_widgets (); for (node = toplevels; node; node = g_list_next (node)) { WidgetInfo *info; char *filename; cairo_surface_t *surface; info = node->data; gtk_widget_show (info->window); surface = snapshot_widget (info->window, info->include_decorations ? SNAPSHOT_WINDOW : SNAPSHOT_DRAW); filename = g_strdup_printf ("./%s.png", info->name); g_assert (cairo_surface_write_to_png (surface, filename) == CAIRO_STATUS_SUCCESS); g_free (filename); cairo_surface_destroy (surface); } return 0; }
static cairo_surface_t * snapshot_ui_file (const char *ui_file, const char *str) { GtkWidget *window; GtkBuilder *builder; GtkWidget *label; GError *error = NULL; builder = gtk_builder_new (); gtk_builder_add_from_file (builder, ui_file, &error); g_assert_no_error (error); if (strstr (ui_file, "ref.ui") == NULL) { label = GTK_WIDGET (gtk_builder_get_object (builder, "label1")); g_assert (label); gtk_label_set_label (GTK_LABEL (label), str); } window = builder_get_toplevel (builder); g_object_unref (builder); g_assert (window); gtk_widget_show (window); return snapshot_widget (window, SNAPSHOT_WINDOW); }
static cairo_surface_t * snapshot_ui_file (const char *ui_file) { GtkWidget *window; GtkBuilder *builder; GError *error = NULL; builder = gtk_builder_new (); gtk_builder_add_from_file (builder, ui_file, &error); g_assert_no_error (error); window = builder_get_toplevel (builder); g_object_unref (builder); g_assert (window); gtk_widget_show (window); return snapshot_widget (window, SNAPSHOT_WINDOW); }