Beispiel #1
0
static void
facet_view_recompute(GtkAdjustment *adj,
                     FacetsControls *controls)
{
    GwyVectorLayer *layer;
    GwyDataField *dfield;
    GwySelection *selection;
    const gchar *key;

    controls->args->kernel_size = gwy_adjustment_get_int(adj);
    gwy_app_wait_cursor_start(GTK_WINDOW(controls->dialog));
    dfield = gwy_container_get_object_by_name(controls->mydata, "/0/data");
    gwy_data_field_facet_distribution(dfield, 2*controls->args->kernel_size + 1,
                                      controls->fdata);

    /* XXX: Clear selections since we cannot recalculate it properly */
    if (gwy_container_gis_object_by_name(controls->mydata, "/0/mask",
                                         &dfield)) {
        gwy_data_field_clear(dfield);
        gwy_data_field_data_changed(dfield);
    }

    layer = gwy_data_view_get_top_layer(GWY_DATA_VIEW(controls->fview));
    key = gwy_vector_layer_get_selection_key(layer);
    selection = gwy_container_get_object_by_name(controls->fdata, key);
    gwy_selection_clear(selection);
    gwy_app_wait_cursor_finish(GTK_WINDOW(controls->dialog));
    facets_invalidate(controls);
}
Beispiel #2
0
static void
gwy_app_recent_file_list_filter_apply(GtkEntry *entry,
                                      Controls *controls)
{
    GPatternSpec *oldpattern;
    GwyContainer *settings;
    gchar *s, *t;

    settings = gwy_app_settings_get();
    g_string_assign(controls->glob, gtk_entry_get_text(entry));
    gwy_container_set_string_by_name(settings, "/app/file/recent/glob",
                                     g_strdup(controls->glob->str));

    oldpattern = controls->pattern;

    if (controls->casesens) {
        if (!strchr(controls->glob->str, '*')
            && !strchr(controls->glob->str, '?'))
            s = g_strconcat("*", controls->glob->str, "*", NULL);
        else
            s = g_strdup(controls->glob->str);
    }
    else {
        /* FIXME: This is crude. */
        s = g_utf8_strdown(controls->glob->str, controls->glob->len);
        if (!strchr(s, '*') && !strchr(s, '?')) {
            t = s;
            s = g_strconcat("*", t, "*", NULL);
            g_free(t);
        }
    }
    controls->pattern = g_pattern_spec_new(s);
    g_free(s);

    if (oldpattern)
        g_pattern_spec_free(oldpattern);

    if (GTK_WIDGET_REALIZED(controls->window))
        gwy_app_wait_cursor_start(GTK_WINDOW(controls->window));
    gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(controls->filter));
    if (GTK_WIDGET_REALIZED(controls->window))
        gwy_app_wait_cursor_finish(GTK_WINDOW(controls->window));
}
Beispiel #3
0
static void
gwy_app_recent_file_list_prune(Controls *controls)
{
    GtkTreeIter iter;
    GtkTreeModel *model;
    GwyRecentFile *rf;
    gboolean ok;

    g_return_if_fail(controls->store);

    model = GTK_TREE_MODEL(controls->store);
    if (!gtk_tree_model_get_iter_first(model, &iter))
        return;

    gwy_app_wait_cursor_start(GTK_WINDOW(controls->window));
    g_object_ref(controls->filter);
    gtk_tree_view_set_model(GTK_TREE_VIEW(controls->list), NULL);

    do {
        gtk_tree_model_get(model, &iter, FILELIST_RAW, &rf, -1);
        gwy_debug("<%s>", rf->file_utf8);
        if (!g_file_test(rf->file_utf8, G_FILE_TEST_IS_REGULAR)) {
            if (rf->thumb_sys && rf->thumb_state != FILE_STATE_FAILED)
                g_unlink(rf->thumb_sys);
            gwy_app_recent_file_free(rf);
            ok = gtk_list_store_remove(controls->store, &iter);
        }
        else
            ok = gtk_tree_model_iter_next(model, &iter);
    } while (ok);

    gtk_tree_view_set_model(GTK_TREE_VIEW(controls->list), controls->filter);
    g_object_unref(controls->filter);

    gwy_app_recent_file_list_update_menu(controls);
    gwy_app_recent_file_list_update_sensitivity(controls);
    gwy_app_wait_cursor_finish(GTK_WINDOW(controls->window));
}