Exemplo n.º 1
0
SIGNAL_CALLBACK void
on_execute_button_clicked (GtkWidget *button)
{
    GtkTreeIter iter;
    gboolean valid;
    Settings * user_settings;
    GList * rows;

    /* gui should prevent this from happening */
    if (processing)
        return;

    if (confirm_overwrite())
    {
        keep_going = TRUE;
        user_settings = settings_get_from_gui();
        settings_on_execute = settings_copy(user_settings);

        rows = NULL;
        valid = gtk_tree_model_get_iter_first(
            GTK_TREE_MODEL(list_store), &iter);

        if (valid) {
            hide_sections_for_execute();
        }
        else {
            message_box(" No files to process (click Browse...) ");
        }

        while (valid && keep_going)
        {
            GtkTreeRowReference * ref;
            GtkTreePath * path;

            path = gtk_tree_model_get_path(GTK_TREE_MODEL(list_store), &iter);
            ref = gtk_tree_row_reference_new(GTK_TREE_MODEL(list_store), path);

            rows = g_list_append(rows, ref);

            valid = gtk_tree_model_iter_next(
                GTK_TREE_MODEL(list_store), &iter);
        }

        process_items_from_list(rows, TRUE);
        settings_delete(user_settings);
    }
}
Exemplo n.º 2
0
void
process_items_from_list(GList * list_of_row_refs, gboolean skip_done)
{
    GList * i;
    Settings * user_settings;
    GtkTreeIter iter;
    int is_first = TRUE;

    processing = TRUE;
    keep_going = TRUE;
    show_execute_button(FALSE);
    user_settings = settings_get_from_gui();

    i = list_of_row_refs;

    while (i && keep_going)
    {
        GtkTreeRowReference * ref;
        GtkTreePath * path;

        ref = (GtkTreeRowReference *) i->data;
        path = gtk_tree_row_reference_get_path(ref);

        gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path);

        process_item(&iter, user_settings, skip_done, is_first);

        while (gtk_events_pending())
            gtk_main_iteration();

        i = g_list_next(i);
        is_first = FALSE;
    }

    processing = FALSE;
    settings_delete_dem_and_mask(user_settings);
    settings_delete(user_settings);
    show_execute_button(TRUE);

    g_list_foreach(list_of_row_refs, (GFunc)gtk_tree_row_reference_free, NULL);
    g_list_free(list_of_row_refs);
}
Exemplo n.º 3
0
            current_naming_scheme->scheme);
    }

    gtk_widget_show(dialog_cons);
}

static void apply_naming_scheme(const NamingScheme * new,
                                const NamingScheme * old)
{
    gboolean valid;
    GtkTreeIter iter;
    Settings * user_settings;

    assert(list_store);

    user_settings = settings_get_from_gui();

    valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter);
    while (valid)
    {
        gchar * current_output_name;
        gchar * input_file_name;
        gchar * old_output_name;

        gtk_tree_model_get(GTK_TREE_MODEL(list_store), &iter,
			   COL_INPUT_FILE, &input_file_name,
			   COL_OUTPUT_FILE, &current_output_name, -1);

        old_output_name =
            determine_default_output_file_name_schemed(input_file_name, old);
Exemplo n.º 4
0
void
do_rename(GtkTreeModel *model, GtkTreeIter *iter, const gchar *new_name)
{
    const gchar * ext;
    gchar *user_ext, *basename, *name_without_path, *p, *fixed_name,
      *file_name, *path, *polsarpro_aux_info;
    Settings * user_settings;

    user_settings = settings_get_from_gui();
    ext = settings_get_output_format_extension(user_settings);

    gtk_tree_model_get(model, iter, 
		       COL_INPUT_FILE, &file_name, 
		       COL_POLSARPRO_INFO, &polsarpro_aux_info, -1);
    int image_data_type = extract_image_data_type(polsarpro_aux_info);

    if (output_directory)
    {
        path = g_strdup(output_directory);
    }
    else
    {
        path = g_path_get_dirname(file_name);
        if (strcmp(path, ".") == 0)
        {
            *path = '\0';
        }
        else
        {
            int len = strlen(path);
            path = (gchar *) g_realloc(path, sizeof(gchar) * (len + 2));
            *(path + len) = DIR_SEPARATOR;
            *(path + len + 1) = '\0';
        }
    }

    g_free(file_name);
    g_free(polsarpro_aux_info);

    /* do not allow user to move output file to a different location */
    name_without_path = g_path_get_basename(new_name);

    /* replace illegal characters with _ */
    p = name_without_path;
    do
    {
        /* figure out a better way here */
        if (*p == '?' || isspace(*p) || *p == '>' || *p == '<' || *p == '|')
            *p = '_';
    }
    while (*p++);

    /* add appropriate extension if was not given by user */
    basename = g_strdup(name_without_path);
    p = findExt(basename);
    if (p)
    {
        *p = '\0';
        user_ext = p + 1;
    }
    else
    {
        user_ext = NULL;
    }

    if (user_ext == NULL)
    {
        int len = strlen(path) + strlen(basename) + strlen(ext) + 2;
        fixed_name = (gchar *) g_malloc( sizeof(gchar) * len );

	if (image_data_type == SELECT_POLARIMETRIC_MATRIX ||
	    image_data_type == SELECT_POLARIMETRIC_DECOMPOSITION)
	  g_snprintf(fixed_name, len, "%s%s", path, basename);
	else
	  g_snprintf(fixed_name, len, "%s%s.%s", path, basename, ext);
    }
    else if (strcmp(user_ext, ext) != 0)
    {
        int len = strlen(path) + strlen(name_without_path) + strlen(ext) + 2;
        fixed_name = (gchar *) g_malloc( sizeof(gchar) * len );

	if (image_data_type == SELECT_POLARIMETRIC_MATRIX ||
	    image_data_type == SELECT_POLARIMETRIC_DECOMPOSITION)
	  g_snprintf(fixed_name, len, "%s%s", path, name_without_path);
	else
	  g_snprintf(fixed_name, len, "%s%s.%s", path, name_without_path, ext);
    }
    else
    {
        int len = strlen(path) + strlen(name_without_path) + 2;
        fixed_name = (gchar *) g_malloc( sizeof(gchar) * len );

        g_snprintf(fixed_name, len, "%s%s", path, name_without_path);
    }

    g_free(basename);
    g_free(name_without_path);
    g_free(path);

    set_output_name(iter, fixed_name);

    g_free(fixed_name);
    settings_delete(user_settings);
}
Exemplo n.º 5
0
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;
    }
}