Esempio n. 1
0
/**
* client: ignored
* id: ignored
* entry: used for validation only
* sctx: The context to work with
*
* Refreshes the sources generated from the keyservers
*
**/
static void
refresh_keyservers (GConfClient *client, guint id, GConfEntry *entry, 
                    SeahorseContext *sctx)
{
#ifdef WITH_KEYSERVER
#ifdef WITH_PGP
    SeahorseServerSource *ssrc;
    GSList *keyservers, *l;
    GHashTable *check;
    const gchar *uri;
    
    if (!sctx->pv->auto_sources)
        return;
    
    if (entry && !g_str_equal (KEYSERVER_KEY, gconf_entry_get_key (entry)))
        return;

    /* Make a light copy of the auto_source table */    
    check = g_hash_table_new (g_str_hash, g_str_equal);
    g_hash_table_foreach (sctx->pv->auto_sources, (GHFunc)auto_source_to_hash, check);

    
    /* Load and strip names from keyserver list */
    keyservers = seahorse_servers_get_uris ();
    
    for (l = keyservers; l; l = g_slist_next (l)) {
        uri = (const gchar*)(l->data);
        
        /* If we don't have a keysource then add it */
        if (!g_hash_table_lookup (sctx->pv->auto_sources, uri)) {
            ssrc = seahorse_server_source_new (uri);
            if (ssrc != NULL) {
                seahorse_context_take_source (sctx, SEAHORSE_SOURCE (ssrc));
                g_hash_table_replace (sctx->pv->auto_sources, g_strdup (uri), ssrc);
            }
        }
        
        /* Mark this one as present */
        g_hash_table_remove (check, uri);
    }
    
    /* Now remove any extras */
    g_hash_table_foreach (check, (GHFunc)auto_source_remove, sctx);
    
    g_hash_table_destroy (check);
    seahorse_util_string_slist_free (keyservers);
#endif /* WITH_PGP */
#endif /* WITH_KEYSERVER */
}
Esempio n. 2
0
/* Perform keyserver page initialization */
static void
setup_keyservers (SeahorseWidget *swidget)
{
	GtkTreeView *treeview;
	SeahorseKeyserverControl *skc;
	GtkTreeModel *model;
	GtkTreeSelection *selection;
	GtkWidget *widget;
	gchar **keyservers;

	keyservers = seahorse_servers_get_uris ();
	populate_keyservers (swidget, keyservers);
	g_strfreev (keyservers);

	treeview = GTK_TREE_VIEW (seahorse_widget_get_widget (swidget, "keyservers"));
	model = gtk_tree_view_get_model (treeview);
	g_signal_connect (model, "row-changed", G_CALLBACK (keyserver_row_changed), swidget);
	g_signal_connect (model, "row-deleted", G_CALLBACK (keyserver_row_deleted), swidget);

	selection = gtk_tree_view_get_selection (treeview);
	gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
	g_signal_connect (selection, "changed", G_CALLBACK (keyserver_sel_changed), swidget);

	gtk_builder_connect_signals (swidget->gtkbuilder, swidget);
	g_signal_connect_object (seahorse_application_pgp_settings (NULL), "changed::keyserver",
	                         G_CALLBACK (on_settings_keyserver_changed), swidget, 0);

	widget = seahorse_widget_get_widget (swidget, "keyserver-publish");
	g_return_if_fail (widget != NULL);

	skc = seahorse_keyserver_control_new ("server-publish-to", _("None: Don’t publish keys"));
	gtk_container_add (GTK_CONTAINER (widget), GTK_WIDGET (skc));
	gtk_widget_show_all (widget);

	widget = seahorse_widget_get_widget (swidget, "keyserver-publish-to-label");
	gtk_label_set_mnemonic_widget (GTK_LABEL (widget), GTK_WIDGET (skc));

	widget = seahorse_widget_get_widget (swidget, "auto_retrieve");
	g_return_if_fail (widget != NULL);
	g_settings_bind (seahorse_application_settings (NULL), "server-auto-retrieve",
	                 widget, "active", G_SETTINGS_BIND_DEFAULT);

	widget = seahorse_widget_get_widget (swidget, "auto_sync");
	g_return_if_fail (widget != NULL);
	g_settings_bind (seahorse_application_settings (NULL), "server-auto-publish",
	                 widget, "active", G_SETTINGS_BIND_DEFAULT);
}