1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
/*
* gnome-keyring
*
* Copyright (C) 2011 Collabora Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, see <http://www.gnu.org/licenses/>.
*
* Author: Stef Walter <stefw@collabora.co.uk>
*/
#include "config.h"
#include "gcr/gcr.h"
#include "gcr/gcr-gnupg-collection.h"
#include "gcr/gcr-gnupg-key.h"
#include "gcr-gtk3/gcr-live-search.h"
#include "gcr-gtk3/gcr-list-selector-private.h"
#include <gtk/gtk.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
static void
on_collection_loaded (GObject *source, GAsyncResult *result, gpointer unused)
{
GError *error = NULL;
_gcr_gnupg_collection_load_finish (GCR_GNUPG_COLLECTION (source), result, &error);
if (error) {
g_warning ("collection load failed: %s", error->message);
g_clear_error (&error);
}
}
int
main (int argc, char *argv[])
{
GcrCollection *collection;
GcrListSelector *selector;
GtkWidget *scroll;
GtkDialog *dialog;
GtkWidget *search;
GtkBox *box;
gtk_init (&argc, &argv);
dialog = GTK_DIALOG (gtk_dialog_new ());
g_object_ref_sink (dialog);
collection = _gcr_gnupg_collection_new (NULL);
selector = gcr_list_selector_new (collection);
search = _gcr_live_search_new (GTK_WIDGET (selector));
_gcr_list_selector_set_live_search (selector, GCR_LIVE_SEARCH (search));
scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (selector));
box = GTK_BOX (gtk_dialog_get_content_area (dialog));
gtk_box_pack_start (box, GTK_WIDGET (scroll), TRUE, TRUE, 0);
gtk_box_pack_end (box, search, FALSE, TRUE, 0);
gtk_widget_show (GTK_WIDGET (selector));
gtk_widget_show (scroll);
_gcr_gnupg_collection_load_async (GCR_GNUPG_COLLECTION (collection), NULL,
on_collection_loaded, NULL);
gtk_window_set_default_size (GTK_WINDOW (dialog), 550, 400);
gtk_container_set_border_width (GTK_CONTAINER (dialog), 20);
g_object_unref (collection);
gtk_dialog_run (dialog);
gtk_widget_destroy (GTK_WIDGET (dialog));
g_object_unref (dialog);
return 0;
}
|