|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include "config.h"
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include "gcr/gcr.h"
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include <gtk/gtk.h>
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include <unistd.h>
|
|
Packit |
b00eeb |
#include <string.h>
|
|
Packit |
b00eeb |
#include <errno.h>
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
static void
|
|
Packit |
b00eeb |
on_parser_parsed (GcrParser *parser, gpointer user_data)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
GcrSimpleCollection *collection = user_data;
|
|
Packit |
b00eeb |
GcrRenderer *renderer;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
renderer = gcr_renderer_create (gcr_parser_get_parsed_label (parser),
|
|
Packit |
b00eeb |
gcr_parser_get_parsed_attributes (parser));
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
if (renderer) {
|
|
Packit |
b00eeb |
gcr_simple_collection_add (collection, G_OBJECT (renderer));
|
|
Packit |
b00eeb |
g_object_unref (renderer);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
static void
|
|
Packit |
b00eeb |
add_to_selector (GcrParser *parser, const gchar *path)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
GError *err = NULL;
|
|
Packit |
b00eeb |
guchar *data;
|
|
Packit |
b00eeb |
gsize n_data;
|
|
Packit |
b00eeb |
GBytes *bytes;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
if (!g_file_get_contents (path, (gchar**)&data, &n_data, NULL))
|
|
Packit |
b00eeb |
g_error ("couldn't read file: %s", path);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
bytes = g_bytes_new_take (data, n_data);
|
|
Packit |
b00eeb |
if (!gcr_parser_parse_bytes (parser, bytes, &err))
|
|
Packit |
b00eeb |
g_error ("couldn't parse data: %s", err->message);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
g_bytes_unref (bytes);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
int
|
|
Packit |
b00eeb |
main (int argc, char *argv[])
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
GcrCollection *collection;
|
|
Packit |
b00eeb |
GcrComboSelector *selector;
|
|
Packit |
b00eeb |
GtkDialog *dialog;
|
|
Packit |
b00eeb |
GcrParser *parser;
|
|
Packit |
b00eeb |
GObject *selected;
|
|
Packit |
b00eeb |
int i;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
gtk_init (&argc, &argv);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
dialog = GTK_DIALOG (gtk_dialog_new ());
|
|
Packit |
b00eeb |
g_object_ref_sink (dialog);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
collection = gcr_simple_collection_new ();
|
|
Packit |
b00eeb |
selector = gcr_combo_selector_new (collection);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
gtk_widget_show (GTK_WIDGET (selector));
|
|
Packit |
b00eeb |
gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (dialog)), GTK_WIDGET (selector));
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
gtk_window_set_default_size (GTK_WINDOW (dialog), 550, 400);
|
|
Packit |
b00eeb |
gtk_container_set_border_width (GTK_CONTAINER (dialog), 20);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
parser = gcr_parser_new ();
|
|
Packit |
b00eeb |
g_signal_connect (parser, "parsed", G_CALLBACK (on_parser_parsed), collection);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
if (argc == 1) {
|
|
Packit |
b00eeb |
add_to_selector (parser, SRCDIR "/ui/fixtures/ca-certificates.crt");
|
|
Packit |
b00eeb |
} else {
|
|
Packit |
b00eeb |
for (i = 1; i < argc; ++i)
|
|
Packit |
b00eeb |
add_to_selector (parser, argv[i]);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
g_object_unref (parser);
|
|
Packit |
b00eeb |
g_object_unref (collection);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
gtk_dialog_run (dialog);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
selected = gcr_combo_selector_get_selected (selector);
|
|
Packit |
b00eeb |
if (selected == NULL) {
|
|
Packit |
b00eeb |
g_print ("nothing selected\n");
|
|
Packit |
b00eeb |
} else {
|
|
Packit |
b00eeb |
gchar *label;
|
|
Packit |
b00eeb |
g_object_get (selected, "label", &label, NULL);
|
|
Packit |
b00eeb |
g_print ("selected: %s\n", label);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
gtk_widget_destroy (GTK_WIDGET (dialog));
|
|
Packit |
b00eeb |
g_object_unref (dialog);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
return 0;
|
|
Packit |
b00eeb |
}
|