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); }
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)); }
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)); }