static cairo_test_status_t draw (cairo_t *cr, int width, int height) { settings_t check; settings_set (cr, &settings[0]); cairo_save (cr); { settings_set (cr, &settings[1]); if (settings_get (cr, &check)) return CAIRO_TEST_FAILURE; if (!settings_equal (&settings[1], &check)) return CAIRO_TEST_FAILURE; } cairo_restore (cr); if (settings_get (cr, &check)) return CAIRO_TEST_FAILURE; if (!settings_equal (&settings[0], &check)) return CAIRO_TEST_FAILURE; return CAIRO_TEST_SUCCESS; }
static gboolean confirm_overwrite() { GtkTreeIter iter; gboolean valid; gboolean exist = FALSE; gboolean settings_different = TRUE; Settings * user_settings; user_settings = settings_get_from_gui(); if (settings_on_execute) { settings_different = !settings_equal(user_settings, settings_on_execute); } valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter); while (valid) { gchar *output_file; gchar *status; gboolean done; gtk_tree_model_get (GTK_TREE_MODEL(list_store), &iter, COL_OUTPUT_FILE, &output_file, COL_STATUS, &status, -1); done = strcmp("Done", status) == 0; if ((settings_different || !done) && g_file_test(output_file, G_FILE_TEST_EXISTS)) exist = TRUE; g_free(output_file); g_free(status); if (exist) break; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &iter); } settings_delete(user_settings); if (exist) { GtkWidget * dialog_confirm_overwrite; gint result; dialog_confirm_overwrite = get_widget_checked("dialog_confirm_overwrite"); result = gtk_dialog_run( GTK_DIALOG(dialog_confirm_overwrite) ); gtk_widget_hide( dialog_confirm_overwrite ); switch (result) { default: return FALSE; case GTK_RESPONSE_OK: return TRUE; } } else { /* no need to confirm -- no overwrites */ return TRUE; } }