[gcr] Separate the base and ui parts of the Gcr library more thoroughly.



commit 41d96e69e8b56aa88e36e8bd176c51c5aa93caf9
Author: Stef Walter <stefw gnome org>
Date:   Sat Dec 22 21:26:10 2012 +0100

    Separate the base and ui parts of the Gcr library more thoroughly.
    
     * This is due to gobject introspection not being able to have separate
       GIRs provide the same namespace, and the desire to conditionally
       build the GTK+ dependent stuff.
     * Partially based on a patch by Mathias Hasselmann
     * Separate GIRs: Gcr and GcrUi
     * Separate libraries: libgcr-base-3.so and libgcr-ui-3.so. The latter
       links to the former.
     * Symlink libgcr-3.so to libgcr-ui-3.so
     * Expose internal symbols in libgcr-base-3.so so they can be easily
       shared by libgcr-ui-3.so
     * Add --without-gtk argument
    
    https://bugzilla.gnome.org/show_bug.cgi?id=688678

 .gitignore                                         |   15 +-
 Makefile.am                                        |    8 +
 Makefile.decl                                      |    5 +
 build/Makefile.am                                  |    4 +-
 .../enum-template.c                                |    4 -
 .../enum-template.h                                |   10 +-
 configure.ac                                       |   44 ++-
 docs/reference/gcr/Makefile.am                     |   12 +-
 gck/Makefile.am                                    |   12 +-
 gck/gck-enum-types.h.template                      |   28 --
 gcr/Makefile.am                                    |  332 +++-----------------
 gcr/gcr-base.h                                     |    1 +
 gcr/gcr-base.symbols                               |    1 +
 gcr/gcr-enum-types.c.template                      |   43 ---
 gcr/gcr-simple-certificate.h                       |    2 +
 gcr/gcr.h                                          |    4 +-
 gcr/tests/Makefile.am                              |   23 +-
 gcr/tests/frob-certificate-request.c               |    3 -
 gcr/tests/frob-openpgp.c                           |    2 +-
 gcr/tests/test-openpgp.c                           |    2 +-
 gcr/tests/test-openssh.c                           |    2 +-
 gcr/tests/test-secret-exchange.c                   |    2 +-
 po/POTFILES.in                                     |   38 ++--
 ui/Makefile.am                                     |  276 ++++++++++++++++
 {gcr => ui}/gcr-certificate-basics-widget.c        |    0
 {gcr => ui}/gcr-certificate-basics-widget.h        |    5 +-
 {gcr => ui}/gcr-certificate-details-widget.c       |    0
 {gcr => ui}/gcr-certificate-details-widget.h       |    5 +-
 {gcr => ui}/gcr-certificate-exporter.c             |    3 +-
 {gcr => ui}/gcr-certificate-exporter.h             |    2 +-
 {gcr => ui}/gcr-certificate-renderer-private.h     |    0
 {gcr => ui}/gcr-certificate-renderer.c             |   13 +-
 {gcr => ui}/gcr-certificate-renderer.h             |    5 +-
 {gcr => ui}/gcr-certificate-request-renderer.c     |    5 +-
 {gcr => ui}/gcr-certificate-request-renderer.h     |    5 +-
 {gcr => ui}/gcr-certificate-widget.c               |    3 +-
 {gcr => ui}/gcr-certificate-widget.h               |    4 +-
 {gcr => ui}/gcr-collection-model.c                 |    0
 {gcr => ui}/gcr-collection-model.h                 |    4 +-
 {gcr => ui}/gcr-combo-selector.c                   |    3 +-
 {gcr => ui}/gcr-combo-selector.h                   |    2 +-
 {gcr => ui}/gcr-crypto-types.xml                   |    0
 {gcr => ui}/gcr-deprecated.h                       |    0
 {gcr => ui}/gcr-dialog-util.c                      |    0
 {gcr => ui}/gcr-dialog-util.h                      |    0
 {gcr => ui}/gcr-display-scrolled.c                 |    0
 {gcr => ui}/gcr-display-scrolled.h                 |    0
 {gcr => ui}/gcr-display-view.c                     |    0
 {gcr => ui}/gcr-display-view.h                     |    5 +-
 {gcr => ui}/gcr-failure-renderer.c                 |    5 +-
 {gcr => ui}/gcr-failure-renderer.h                 |    0
 {gcr => ui}/gcr-gnupg-renderer.c                   |   11 +-
 {gcr => ui}/gcr-gnupg-renderer.h                   |    2 +-
 {gcr => ui}/gcr-import-button.c                    |    9 +-
 {gcr => ui}/gcr-import-button.h                    |    2 +-
 {gcr => ui}/gcr-key-renderer.c                     |    7 +-
 {gcr => ui}/gcr-key-renderer.h                     |    2 +-
 {gcr => ui}/gcr-key-widget.c                       |    0
 {gcr => ui}/gcr-key-widget.h                       |    2 +-
 {gcr => ui}/gcr-list-selector-private.h            |    3 +-
 {gcr => ui}/gcr-list-selector.c                    |    3 +-
 {gcr => ui}/gcr-list-selector.h                    |    2 +-
 {gcr => ui}/gcr-live-search.c                      |    3 +-
 {gcr => ui}/gcr-live-search.h                      |    0
 {gcr => ui}/gcr-pkcs11-import-dialog.c             |    3 +-
 {gcr => ui}/gcr-pkcs11-import-dialog.h             |    0
 {gcr => ui}/gcr-pkcs11-import-dialog.ui            |    0
 {gcr => ui}/gcr-pkcs11-import-interaction.c        |    3 +-
 {gcr => ui}/gcr-pkcs11-import-interaction.h        |    0
 {gcr => ui}/gcr-prompt-dialog.c                    |    5 +-
 {gcr => ui}/gcr-prompt-dialog.h                    |    0
 {gcr => ui}/gcr-prompter-tool.c                    |    7 +-
 {gcr => ui}/gcr-prompter.desktop.in.in             |    0
 {gcr => ui}/gcr-renderer.c                         |    0
 {gcr => ui}/gcr-renderer.h                         |    5 +-
 {gcr => ui}/gcr-secure-entry-buffer.c              |    0
 {gcr => ui}/gcr-secure-entry-buffer.h              |    0
 {gcr => ui}/gcr-tree-selector.c                    |    3 +-
 {gcr => ui}/gcr-tree-selector.h                    |    2 +-
 {gcr => ui}/gcr-ui.h                               |   44 ++--
 {gcr => ui}/gcr-ui.pc.in                           |    0
 {gcr => ui}/gcr-ui.symbols                         |    2 -
 {gcr => ui}/gcr-unlock-options-widget.c            |    0
 {gcr => ui}/gcr-unlock-options-widget.h            |    4 +-
 {gcr => ui}/gcr-unlock-options-widget.ui           |    0
 {gcr => ui}/gcr-unlock-renderer.c                  |    5 +-
 {gcr => ui}/gcr-unlock-renderer.h                  |    3 +-
 {gcr => ui}/gcr-viewer-tool.c                      |    0
 {gcr => ui}/gcr-viewer-widget.c                    |    7 +-
 {gcr => ui}/gcr-viewer-widget.h                    |    0
 {gcr => ui}/gcr-viewer-window.c                    |    0
 {gcr => ui}/gcr-viewer-window.h                    |    0
 {gcr => ui}/gcr-viewer.c                           |    0
 {gcr => ui}/gcr-viewer.desktop.in.in               |    0
 {gcr => ui}/gcr-viewer.h                           |    2 +-
 {gcr => ui}/gcr.pc.in                              |    2 +-
 {gcr => ui}/icons/16x16/Makefile.am                |    0
 {gcr => ui}/icons/16x16/gcr-gnupg.png              |  Bin 637 -> 637 bytes
 {gcr => ui}/icons/16x16/gcr-key-pair.png           |  Bin 879 -> 879 bytes
 {gcr => ui}/icons/16x16/gcr-key.png                |  Bin 650 -> 650 bytes
 {gcr => ui}/icons/16x16/gcr-password.png           |  Bin 483 -> 483 bytes
 {gcr => ui}/icons/16x16/gcr-smart-card.png         |  Bin 509 -> 509 bytes
 {gcr => ui}/icons/22x22/Makefile.am                |    0
 {gcr => ui}/icons/22x22/gcr-gnupg.png              |  Bin 843 -> 843 bytes
 {gcr => ui}/icons/22x22/gcr-key-pair.png           |  Bin 1275 -> 1275 bytes
 {gcr => ui}/icons/22x22/gcr-key.png                |  Bin 868 -> 868 bytes
 {gcr => ui}/icons/22x22/gcr-password.png           |  Bin 803 -> 803 bytes
 {gcr => ui}/icons/22x22/gcr-smart-card.png         |  Bin 666 -> 666 bytes
 {gcr => ui}/icons/24x24/Makefile.am                |    0
 {gcr => ui}/icons/24x24/gcr-gnupg.png              |  Bin 858 -> 858 bytes
 {gcr => ui}/icons/24x24/gcr-key-pair.png           |  Bin 1278 -> 1278 bytes
 {gcr => ui}/icons/24x24/gcr-key.png                |  Bin 882 -> 882 bytes
 {gcr => ui}/icons/24x24/gcr-password.png           |  Bin 744 -> 744 bytes
 {gcr => ui}/icons/24x24/gcr-smart-card.png         |  Bin 645 -> 645 bytes
 {gcr => ui}/icons/256x256/Makefile.am              |    0
 {gcr => ui}/icons/256x256/gcr-gnupg.png            |  Bin 8863 -> 8863 bytes
 {gcr => ui}/icons/256x256/gcr-password.png         |  Bin 5596 -> 5596 bytes
 {gcr => ui}/icons/256x256/gcr-smart-card.png       |  Bin 10098 -> 10098 bytes
 {gcr => ui}/icons/32x32/Makefile.am                |    0
 {gcr => ui}/icons/32x32/gcr-gnupg.png              |  Bin 1129 -> 1129 bytes
 {gcr => ui}/icons/32x32/gcr-key-pair.png           |  Bin 1903 -> 1903 bytes
 {gcr => ui}/icons/32x32/gcr-key.png                |  Bin 1176 -> 1176 bytes
 {gcr => ui}/icons/32x32/gcr-password.png           |  Bin 902 -> 902 bytes
 {gcr => ui}/icons/32x32/gcr-smart-card.png         |  Bin 1093 -> 1093 bytes
 {gcr => ui}/icons/48x48/Makefile.am                |    0
 {gcr => ui}/icons/48x48/gcr-gnupg.png              |  Bin 1679 -> 1679 bytes
 {gcr => ui}/icons/48x48/gcr-key-pair.png           |  Bin 3502 -> 3502 bytes
 {gcr => ui}/icons/48x48/gcr-key.png                |  Bin 2036 -> 2036 bytes
 {gcr => ui}/icons/48x48/gcr-password.png           |  Bin 1525 -> 1525 bytes
 {gcr => ui}/icons/48x48/gcr-smart-card.png         |  Bin 1724 -> 1724 bytes
 {gcr => ui}/icons/Makefile.am                      |    0
 {gcr => ui}/icons/Makefile.decl                    |    0
 {gcr => ui}/icons/render-icons.py                  |    0
 {gcr => ui}/icons/src/gcr-gnupg.svg                |    0
 {gcr => ui}/icons/src/gcr-key-and-keypair.svg      |    0
 {gcr => ui}/icons/src/gcr-password.svg             |    0
 {gcr => ui}/icons/src/gcr-smart-card.svg           |    0
 ui/tests/Makefile.am                               |   41 +++
 {gcr => ui}/tests/frob-certificate.c               |    0
 {gcr => ui}/tests/frob-combo-selector.c            |    0
 {gcr => ui}/tests/frob-gnupg-selector.c            |    5 +-
 {gcr => ui}/tests/frob-key.c                       |    0
 {gcr => ui}/tests/frob-prompt.c                    |    0
 {gcr => ui}/tests/frob-request.c                   |    3 +-
 {gcr => ui}/tests/frob-system-prompt.c             |    0
 {gcr => ui}/tests/frob-tree-selector.c             |    0
 {gcr => ui}/tests/frob-unlock-options.c            |    0
 {gcr => ui}/tests/frob-unlock.c                    |    5 +-
 148 files changed, 592 insertions(+), 547 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index d71b7e6..a954e72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -88,12 +88,15 @@ stamp-*
 /gcr/gcr-enum-types*
 /gcr/gcr-oids.*
 /gcr/gcr-marshal.*
-/gcr/gcr-prompter
-/gcr/gcr-prompter.desktop
-/gcr/gcr-prompter.desktop.in
-/gcr/gcr-viewer
-/gcr/gcr-viewer.desktop
-/gcr/gcr-viewer.desktop.in
+
+/ui/*.pc
+/ui/gcr-enum-types*
+/ui/gcr-prompter
+/ui/gcr-prompter.desktop
+/ui/gcr-prompter.desktop.in
+/ui/gcr-viewer
+/ui/gcr-viewer.desktop
+/ui/gcr-viewer.desktop.in
 
 /po/Makefile.in.in
 /po/*.sed
diff --git a/Makefile.am b/Makefile.am
index 5037b91..025c76b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,11 +1,18 @@
 include $(top_srcdir)/Makefile.decl
 
+if WITH_GTK
+UI_DIR = ui
+else
+UI_DIR =
+endif
+
 SUBDIRS = \
 	. \
 	build \
 	egg \
 	gck \
 	gcr \
+	$(UI_DIR) \
 	schema \
 	testing \
 	po \
@@ -25,6 +32,7 @@ DISTCHECK_CONFIGURE_FLAGS = \
 	--disable-code-coverage \
 	--disable-update-mime \
 	--disable-update-icon-cache \
+	--with-gtk \
 	--with-pkcs11-modules=$(abs_srcdir)/$(top_distdir)/_inst/lib/
 
 DISTCLEANFILES = \
diff --git a/Makefile.decl b/Makefile.decl
index 643d080..61a00ec 100644
--- a/Makefile.decl
+++ b/Makefile.decl
@@ -57,4 +57,9 @@ SED_SUBST = sed \
 .service.in.service:
 	$(V_SED) $(SED_SUBST) $< > $@
 
+pkgconfigdir = $(libdir)/pkgconfig
+
+ENUM_TEMPLATE_C = $(top_srcdir)/build/enum-template.c
+ENUM_TEMPLATE_H = $(top_srcdir)/build/enum-template.h
+
 SUFFIXES = .asn .asn.h .desktop.in .desktop.in.in .service .service.in
diff --git a/build/Makefile.am b/build/Makefile.am
index a123562..ae72110 100644
--- a/build/Makefile.am
+++ b/build/Makefile.am
@@ -18,7 +18,9 @@ valgrind-suppressions: $(SUPPRESSIONS)
 
 EXTRA_DIST = \
 	$(VALGRIND_CONTRIB) \
-	$(SUPPRESSIONS)
+	$(SUPPRESSIONS) \
+	enum-template.c \
+	enum-template.h
 
 all-local: valgrind-suppressions
 
diff --git a/gck/gck-enum-types.c.template b/build/enum-template.c
similarity index 93%
rename from gck/gck-enum-types.c.template
rename to build/enum-template.c
index d609535..a4a4ee7 100644
--- a/gck/gck-enum-types.c.template
+++ b/build/enum-template.c
@@ -2,10 +2,6 @@
 
 #include <glib-object.h>
 
-#ifndef GCR_COMPILATION
-#define GCR_COMPILATION
-#endif
-
 /*** END file-header ***/
 
 /*** BEGIN file-production ***/
diff --git a/gcr/gcr-enum-types.h.template b/build/enum-template.h
similarity index 67%
rename from gcr/gcr-enum-types.h.template
rename to build/enum-template.h
index 91d5a60..edb428b 100644
--- a/gcr/gcr-enum-types.h.template
+++ b/build/enum-template.h
@@ -1,10 +1,4 @@
 /*** BEGIN file-header ***/
-#if !defined (__GCR_INSIDE_HEADER__) && !defined (GCR_COMPILATION)
-#error "Only <gcr/gcr.h> can be included directly."
-#endif
-
-#ifndef __GCR_ENUM_TYPES_H__
-#define __GCR_ENUM_TYPES_H__
 
 #include <glib-object.h>
 
@@ -17,12 +11,14 @@ G_BEGIN_DECLS
 /*** END file-production ***/
 
 /*** BEGIN value-header ***/
+#ifndef @ENUMPREFIX _TYPE_@ENUMSHORT@
 GType @enum_name _get_type (void) G_GNUC_CONST;
 #define @ENUMPREFIX _TYPE_@ENUMSHORT@ (@enum_name _get_type ())
+#endif
+
 /*** END value-header ***/
 
 /*** BEGIN file-tail ***/
 G_END_DECLS
 
-#endif /* __GCR_ENUM_TYPES_H__ */
 /*** END file-tail ***/
diff --git a/configure.ac b/configure.ac
index 8dde56d..2c93587 100644
--- a/configure.ac
+++ b/configure.ac
@@ -81,9 +81,26 @@ AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
 
 GTK_DOC_CHECK(1.9)
 
-PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 3.0)
-AC_SUBST(GTK_CFLAGS)
-AC_SUBST(GTK_LIBS)
+# --------------------------------------------------------------------
+# Optional GTK+ widgets build, avoid building gtk-doc wihtout GTK+
+#
+AC_ARG_WITH(gtk, [
+            AC_HELP_STRING([--without-gtk],
+            [do not build code that uses GTK+]),
+            ], [], [with_gtk=yes])
+AM_CONDITIONAL(WITH_GTK, test "$with_gtk" != "no")
+
+if test "x$with_gtk" != "xno"; then
+	PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 3.0)
+	AC_SUBST(GTK_CFLAGS)
+	AC_SUBST(GTK_LIBS)
+fi
+
+if test "x$enable_gtk_doc" = "xyes"; then
+  if test "x$with_gtk" = "xno"; then
+    AC_MSG_ERROR([Cannot build documentation if building GTK+ widgets is disabled])
+  fi
+fi
 
 # --------------------------------------------------------------------
 # Checks for functions
@@ -353,21 +370,23 @@ egg/tests/Makefile
 gck/gck.pc
 gck/Makefile
 gck/tests/Makefile
-gcr/gcr.pc
 gcr/gcr-base.pc
-gcr/gcr-ui.pc
 gcr/Makefile
-gcr/icons/Makefile
-gcr/icons/16x16/Makefile
-gcr/icons/22x22/Makefile
-gcr/icons/24x24/Makefile
-gcr/icons/32x32/Makefile
-gcr/icons/48x48/Makefile
-gcr/icons/256x256/Makefile
 gcr/tests/Makefile
 po/Makefile.in
 schema/Makefile
 testing/Makefile
+ui/gcr.pc
+ui/gcr-ui.pc
+ui/icons/Makefile
+ui/icons/16x16/Makefile
+ui/icons/22x22/Makefile
+ui/icons/24x24/Makefile
+ui/icons/32x32/Makefile
+ui/icons/48x48/Makefile
+ui/icons/256x256/Makefile
+ui/Makefile
+ui/tests/Makefile
 ])
 
 # ------------------------------------------------------------------------------
@@ -378,6 +397,7 @@ echo
 echo "BUILD"
 echo "  Debug Build:          $debug_status"
 echo "  Strict Compilation:   $strict_status"
+echo "  GTK+ Widgets:         $with_gtk"
 echo "  Introspection:        $found_introspection"
 echo "  Valgrind:             $valgrind_status"
 echo "  Test Coverage:        ${enable_code_coverage:-no}"
diff --git a/docs/reference/gcr/Makefile.am b/docs/reference/gcr/Makefile.am
index 2b21161..72eeaed 100644
--- a/docs/reference/gcr/Makefile.am
+++ b/docs/reference/gcr/Makefile.am
@@ -48,12 +48,12 @@ FIXXREF_OPTIONS=
 # Used for dependencies. The docs will be rebuilt if any of these change.
 # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
 # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.h
-CFILE_GLOB=$(top_srcdir)/$(DOC_MODULE)/*.c
+HFILE_GLOB=$(top_srcdir)/gcr/*.h $(top_srcdir)/ui/*.h
+CFILE_GLOB=$(top_srcdir)/gcr/*.c $(top_srcdir)/ui/*.c
 
 # Extra header to include when scanning, which are not under DOC_SOURCE_DIR
 # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
-EXTRA_HFILES=
+EXTRA_HFILES=$(top_srcdir)/ui/*.h
 
 # Header files to ignore when scanning. Use base file name, no paths
 # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
@@ -119,8 +119,8 @@ expand_content_files=
 GTKDOC_CFLAGS= -I$(top_srcdir) -I$(top_builddir) $(GLIB_CFLAGS) -Wno-error \
 	-Wno-deprecated-declarations
 GTKDOC_LIBS= $(GLIB_LIBS) \
-	$(top_builddir)/$(DOC_MODULE)/libgcr-ui- GCR_MAJOR@.la \
-	$(top_builddir)/$(DOC_MODULE)/libgcr-base- GCR_MAJOR@.la \
+	$(top_builddir)/ui/libgcr-ui- GCR_MAJOR@.la \
+	$(top_builddir)/gcr/libgcr-base- GCR_MAJOR@.la \
 	$(top_builddir)/gck/libgck- GCK_MAJOR@.la
 
 # This includes the standard gtk-doc make rules, copied by gtkdocize.
@@ -167,7 +167,7 @@ gcr-shooter: $(SHOOTER_SRCS) $(SHOOTER_HEADERS) Makefile
 		-I$(top_srcdir)/gcr -DGCR_API_SUBJECT_TO_CHANGE \
 		-DSRCDIR=\"$(srcdir)\" -DTOPDIR=\"$(top_srcdir)\" \
 		`pkg-config x11 xext --cflags --libs` \
-		$(GTK_LDFLAGS) -lm $(top_builddir)/gcr/libgcr-testable.la \
+		$(GTK_LDFLAGS) -lm $(top_builddir)/ui/libgcr-ui- GCR_MAJOR@.la \
 		$(SHOOTER_SRCS)
 
 EXTRA_DIST += $(SHOOTER_SRCS) \
diff --git a/gck/Makefile.am b/gck/Makefile.am
index 2319bf7..771a443 100644
--- a/gck/Makefile.am
+++ b/gck/Makefile.am
@@ -1,3 +1,4 @@
+include $(top_srcdir)/Makefile.decl
 
 SUBDIRS = . tests
 
@@ -93,11 +94,11 @@ gck-marshal.c: gck-marshal.list $(GLIB_GENMARSHAL)
 	echo "#include \"gck-marshal.h\"" > $@ && \
 	$(GLIB_GENMARSHAL) $< --body --prefix=_gck_marshal >> $@
 
-gck-enum-types.h: gck-enum-types.h.template $(HEADER_FILES)
-	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
+gck-enum-types.h: $(ENUM_TEMPLATE_H) $(HEADER_FILES)
+	$(GLIB_MKENUMS) --template $^ > $@
 
-gck-enum-types.c: gck-enum-types.c.template $(HEADER_FILES)
-	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
+gck-enum-types.c: $(ENUM_TEMPLATE_C) $(HEADER_FILES)
+	$(GLIB_MKENUMS) --template $^ > $@
 
 # ------------------------------------------------------------------
 # INTROSPECTION
@@ -130,7 +131,6 @@ endif
 
 # ----------------------------------------------------------------
 
-pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = gck-$(GCK_MAJOR).pc
 
 gck-$(GCK_MAJOR).pc: gck.pc
@@ -156,8 +156,6 @@ EXTRA_DIST = \
 	gck.pc.in \
 	gck-marshal.list \
 	gck.symbols \
-	gck-enum-types.h.template \
-	gck-enum-types.c.template \
 	pkcs11-trust-assertions.h \
 	pkcs11i.h
 
diff --git a/gcr/Makefile.am b/gcr/Makefile.am
index ebf26df..e6b3a63 100644
--- a/gcr/Makefile.am
+++ b/gcr/Makefile.am
@@ -1,26 +1,31 @@
 include $(top_srcdir)/Makefile.decl
 
-SUBDIRS = . icons tests
+SUBDIRS = . tests
 
-# ------------------------------------------------------------------
-# UI BUILDER
-#
+incdir = $(includedir)/gcr- GCR_MAJOR@/gcr
 
-uidir = $(datadir)/gcr- GCR_MAJOR@/ui/
+INCLUDES = \
+	-I$(top_builddir) \
+	-I$(top_srcdir) \
+	$(GLIB_CFLAGS) \
+	$(LIBGCRYPT_CFLAGS) \
+	$(P11_KIT_CFLAGS) \
+	-DG_LOG_DOMAIN=\"Gcr\" \
+	-DGCR_API_SUBJECT_TO_CHANGE \
+	-DLOCALEDIR=\""$(datadir)/locale"\"
 
-ui_DATA = \
-	gcr-pkcs11-import-dialog.ui \
-	gcr-unlock-options-widget.ui
+check-local: check-symbols
 
-# ------------------------------------------------------------------
-# HEADERS
+check-memory:
+	make -C tests check-memory
 
-HEADER_BASE_FILES = \
+HEADER_FILES = \
 	gcr-base.h \
 	gcr-certificate.h \
 	gcr-certificate-chain.h \
 	gcr-certificate-request.h \
 	gcr-collection.h \
+	gcr-column.h \
 	gcr-comparable.h \
 	gcr-deprecated-base.h \
 	gcr-fingerprint.h \
@@ -44,76 +49,30 @@ HEADER_BASE_FILES = \
 	gcr-union-collection.h \
 	gcr-unlock-options.h
 
-HEADER_UI_FILES = \
-	gcr-ui.h \
-	gcr-certificate-basics-widget.h \
-	gcr-certificate-details-widget.h \
-	gcr-certificate-renderer.h \
-	gcr-certificate-widget.h \
-	gcr-collection-model.h \
-	gcr-column.h \
-	gcr-combo-selector.h \
-	gcr-deprecated.h \
-	gcr-failure-renderer.h \
-	gcr-key-renderer.h \
-	gcr-key-widget.h \
-	gcr-import-button.h \
-	gcr-list-selector.h \
-	gcr-prompt-dialog.h \
-	gcr-renderer.h \
-	gcr-secure-entry-buffer.h \
-	gcr-tree-selector.h \
-	gcr-unlock-options-widget.h \
-	gcr-viewer.h \
-	gcr-viewer-widget.h
-
-incdir = $(includedir)/gcr- GCR_MAJOR@/gcr
-
 inc_HEADERS = \
-	$(HEADER_BASE_FILES) \
-	$(HEADER_UI_FILES) \
-	gcr-enum-types-base.h \
-	gcr-enum-types.h \
-	gcr.h
-
-# ------------------------------------------------------------------
-# LIBRARY
+	$(HEADER_FILES) \
+	gcr-enum-types-base.h
 
-INCLUDES = \
-	-I$(top_builddir) \
-	-I$(top_srcdir) \
-	$(GLIB_CFLAGS) \
-	$(LIBGCRYPT_CFLAGS) \
-	$(P11_KIT_CFLAGS) \
-	-DG_LOG_DOMAIN=\"Gcr\" \
-	-DGCR_API_SUBJECT_TO_CHANGE \
-	-DLOCALEDIR=\""$(datadir)/locale"\"
+if WITH_GTK
+inc_HEADERS += gcr.h
+endif
 
 lib_LTLIBRARIES = \
-	libgcr-base- GCR_MAJOR@.la \
-	libgcr-ui- GCR_MAJOR@.la
+	libgcr-base- GCR_MAJOR@.la
 
-BUILT_BASE_FILES = \
+BUILT_SOURCES = \
 	gcr-marshal.c gcr-marshal.h \
 	gcr-enum-types-base.c gcr-enum-types-base.h \
 	gcr-oids.c gcr-oids.h \
 	gcr-dbus-generated.c gcr-dbus-generated.h
 
-BUILT_UI_FILES = \
-	gcr-marshal.c gcr-marshal.h \
-	gcr-enum-types.c gcr-enum-types.h \
-	gcr-oids.c gcr-oids.h
-
-BUILT_SOURCES = \
-	$(BUILT_BASE_FILES) \
-	$(BUILT_UI_FILES)
-
-PUBLIC_BASE_FILES = \
+PUBLIC_FILES = \
 	gcr-base.h \
 	gcr-certificate.c gcr-certificate.h \
 	gcr-certificate-chain.c gcr-certificate-chain.h \
 	gcr-certificate-request.c gcr-certificate-request.h \
 	gcr-collection.c gcr-collection.h \
+	gcr-column.h \
 	gcr-comparable.c gcr-comparable.h \
 	gcr-filter-collection.c gcr-filter-collection.h \
 	gcr-fingerprint.c gcr-fingerprint.h \
@@ -136,9 +95,10 @@ PUBLIC_BASE_FILES = \
 	gcr-unlock-options.h \
 	$(NULL)
 
-PRIVATE_BASE_FILES = \
+PRIVATE_FILES = \
 	gcr-callback-output-stream.c gcr-callback-output-stream.h \
 	gcr-certificate-extensions.c gcr-certificate-extensions.h \
+	gcr-column.c \
 	gcr-dbus-constants.h \
 	gcr-debug.c gcr-debug.h \
 	gcr-deprecated-base.h \
@@ -159,90 +119,26 @@ PRIVATE_BASE_FILES = \
 	gcr-single-collection.c gcr-single-collection.h \
 	gcr-subject-public-key.c gcr-subject-public-key.h \
 	gcr-trust.c gcr-trust.h \
-	gcr-ui.h \
 	gcr-util.c gcr-util.h \
 	$(NULL)
 
 libgcr_base_ GCR_MAJOR@_la_SOURCES = \
-	$(PUBLIC_BASE_FILES) \
-	$(PRIVATE_BASE_FILES) \
+	$(PUBLIC_FILES) \
+	$(PRIVATE_FILES) \
 	$(NULL)
 
 nodist_libgcr_base_ GCR_MAJOR@_la_SOURCES = \
-	$(BUILT_BASE_FILES)
-
-PUBLIC_UI_FILES = \
-	gcr-certificate-renderer.c gcr-certificate-renderer.h \
-	gcr-certificate-widget.c gcr-certificate-widget.h \
-	gcr-collection-model.c gcr-collection-model.h \
-	gcr-column.h \
-	gcr-combo-selector.c gcr-combo-selector.h \
-	gcr-failure-renderer.c gcr-failure-renderer.h \
-	gcr-key-renderer.c gcr-key-renderer.h \
-	gcr-key-widget.c gcr-key-widget.h \
-	gcr-import-button.c  gcr-import-button.h \
-	gcr-list-selector.c gcr-list-selector.h \
-	gcr-prompt-dialog.c gcr-prompt-dialog.h \
-	gcr-renderer.c gcr-renderer.h \
-	gcr-secure-entry-buffer.c gcr-secure-entry-buffer.h \
-	gcr-tree-selector.c gcr-tree-selector.h \
-	gcr-unlock-options-widget.c gcr-unlock-options-widget.h \
-	gcr-viewer.c gcr-viewer.h \
-	gcr-viewer-widget.c gcr-viewer-widget.h \
-	gcr-ui.h \
-	$(NULL)
-
-PRIVATE_UI_FILES = \
-	gcr-certificate-basics-widget.c gcr-certificate-basics-widget.h \
-	gcr-certificate-details-widget.c gcr-certificate-details-widget.h \
-	gcr-certificate-exporter.c gcr-certificate-exporter.h \
-	gcr-certificate-extensions.c gcr-certificate-extensions.h \
-	gcr-certificate-renderer-private.h \
-	gcr-certificate-request-renderer.c gcr-certificate-request-renderer.h \
-	gcr-debug.c gcr-debug.h \
-	gcr-deprecated.h \
-	gcr-dialog-util.c gcr-dialog-util.h \
-	gcr-display-scrolled.c gcr-display-scrolled.h \
-	gcr-display-view.c gcr-display-view.h \
-	gcr-gnupg-renderer.c gcr-gnupg-renderer.h \
-	gcr-gnupg-records.c gcr-gnupg-records.h \
-	gcr-list-selector-private.h \
-	gcr-live-search.c gcr-live-search.h \
-	gcr-memory.c \
-	gcr-memory-icon.c gcr-memory-icon.h \
-	gcr-pkcs11-import-interaction.c gcr-pkcs11-import-interaction.h \
-	gcr-pkcs11-import-dialog.c gcr-pkcs11-import-dialog.h \
-	gcr-record.c gcr-record.h \
-	gcr-subject-public-key.c gcr-subject-public-key.h \
-	gcr-unlock-renderer.c gcr-unlock-renderer.h \
-	gcr-viewer-window.c gcr-viewer-window.h \
-	$(NULL)
-
-libgcr_ui_ GCR_MAJOR@_la_SOURCES = \
-	$(PUBLIC_UI_FILES) \
-	$(PRIVATE_UI_FILES) \
-	$(NULL)
-
-nodist_libgcr_ui_ GCR_MAJOR@_la_SOURCES = \
-	$(BUILT_UI_FILES)
+	$(BUILT_SOURCES)
 
 libgcr_base_ GCR_MAJOR@_la_CFLAGS = \
 	-DGCK_API_SUBJECT_TO_CHANGE \
 	-DP11_KIT_API_SUBJECT_TO_CHANGE \
 	-DGCR_COMPILATION
 
-libgcr_ui_ GCR_MAJOR@_la_CFLAGS = \
-	$(GTK_CFLAGS) \
-	-DUIDIR=\""$(uidir)"\" \
-	$(libgcr_base_ GCR_MAJOR@_la_CFLAGS)
-
 libgcr_base_ GCR_MAJOR@_la_LDFLAGS = \
 	-version-info $(GCR_LT_RELEASE) \
 	-no-undefined \
-	-export-symbols-regex '^gcr_.*|^SECMEM_.*'
-
-libgcr_ui_ GCR_MAJOR@_la_LDFLAGS = \
-	$(libgcr_base_ GCR_MAJOR@_la_LDFLAGS)
+	-export-symbols-regex '^_gcr_.*|^gcr_.*|^SECMEM_.*'
 
 libgcr_base_ GCR_MAJOR@_la_LIBADD = \
 	$(top_builddir)/egg/libegg.la \
@@ -251,27 +147,6 @@ libgcr_base_ GCR_MAJOR@_la_LIBADD = \
 	$(LIBGCRYPT_LIBS) \
 	$(P11_KIT_LIBS)
 
-libgcr_ui_ GCR_MAJOR@_la_LIBADD = \
-	$(GTK_LIBS) \
-	$(libgcr_base_ GCR_MAJOR@_la_LIBADD) \
-	$(builddir)/libgcr-base-$(GCR_MAJOR).la
-
-# libgcr-3.so (and  friends) symlink to libgcr-ui-3.so for compatibility raisons
-install-exec-hook:
-	$(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui- GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr- GCR_MAJOR@.so
-	$(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui- GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr- GCR_MAJOR@ so  GCR_CURRENT@
-	$(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui- GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr- GCR_MAJOR@ so  GCR_LT_RELEASE@
-
-noinst_LTLIBRARIES = libgcr-testable.la
-libgcr_testable_la_SOURCES =
-libgcr_testable_la_LIBADD = \
-	$(libgcr_base_ GCR_MAJOR@_la_OBJECTS) \
-	$(libgcr_ui_ GCR_MAJOR@_la_OBJECTS) \
-	$(libgcr_base_ GCR_MAJOR@_la_LIBADD)
-libgcr_testable_la_DEPENDENCIES = \
-	$(libgcr_base_ GCR_MAJOR@_la_OBJECTS) \
-	$(libgcr_ui_ GCR_MAJOR@_la_OBJECTS)
-
 gcr-marshal.h: gcr-marshal.list $(GLIB_GENMARSHAL)
 	$(AM_V_GEN) $(GLIB_GENMARSHAL) $< --header --prefix=_gcr_marshal > $@
 
@@ -279,17 +154,12 @@ gcr-marshal.c: gcr-marshal.list $(GLIB_GENMARSHAL)
 	$(AM_V_GEN) ( echo "#include \"gcr-marshal.h\"" > $@ && \
 		$(GLIB_GENMARSHAL) $< --body --prefix=_gcr_marshal >> $@ )
 
-gcr-enum-types.h: gcr-enum-types.h.template $(HEADER_UI_FILES)
-	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
+gcr-enum-types-base.h: $(ENUM_TEMPLATE_H) $(HEADER_FILES)
+	$(GLIB_MKENUMS) --template $^ > $@
+gcr-enum-types-base.c: $(ENUM_TEMPLATE_C) $(HEADER_FILES)
+	$(GLIB_MKENUMS) --template $^ > $@
 
-gcr-enum-types.c: gcr-enum-types.c.template $(HEADER_UI_FILES)
-	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
-
-gcr-enum-types-base.h: gcr-enum-types.h.template $(HEADER_BASE_FILES)
-	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
-
-gcr-enum-types-base.c: gcr-enum-types.c.template $(HEADER_BASE_FILES)
-	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
+# $(AM_V_GEN) 
 
 gcr-oids.c: gcr-oids.list gcr-mkoids
 	$(AM_V_GEN) sh $(srcdir)/gcr-mkoids -p GCR -c gcr-oids.c -h gcr-oids.h $(srcdir)/gcr-oids.list
@@ -306,46 +176,11 @@ gcr-dbus-generated.c: $(DBUS_XML_DEFINITIONS)
 
 gcr-dbus-generated.h: gcr-dbus-generated.c
 
-pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = \
-	gcr-$(GCR_MAJOR).pc \
-	gcr-base-$(GCR_MAJOR).pc \
-	gcr-ui-$(GCR_MAJOR).pc
+	gcr-base-$(GCR_MAJOR).pc
 
-gcr-$(GCR_MAJOR).pc: gcr.pc
-	cp gcr.pc gcr-$(GCR_MAJOR).pc
 gcr-base-$(GCR_MAJOR).pc: gcr-base.pc
 	cp gcr-base.pc gcr-base-$(GCR_MAJOR).pc
-gcr-ui-$(GCR_MAJOR).pc: gcr-ui.pc
-	cp gcr-ui.pc gcr-ui-$(GCR_MAJOR).pc
-
-# ----------------------------------------------------------------
-# SYSTEM INTEGRATION
-
-# The new mime system
-mimedir = $(datadir)/mime/packages
-mime_DATA = gcr-crypto-types.xml
-
-if WITH_UPDATE_MIME
-update_mime_database_cmd = update-mime-database $(datadir)/mime/
-
-install-data-hook: update_mime_database
-uninstall-hook: update_mime_database
-
-update_mime_database:
-	@-if test -z "$(DESTDIR)"; then \
-		echo "Updating MIME database."; \
-		$(update_mime_database_cmd); \
-	else \
-		echo "*** MIME database not updated.  After (un)install, run this:"; \
-		echo "***   $(update_mime_database_cmd)"; \
-	fi
-endif
-
-desktopdir = $(datadir)/applications
-desktop_in_in_files = gcr-viewer.desktop.in.in gcr-prompter.desktop.in.in
-desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
-desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 
 service_in_files = \
 	org.gnome.keyring.SystemPrompter.service.in \
@@ -353,80 +188,30 @@ service_in_files = \
 servicedir       = $(DBUS_SERVICES_DIR)
 service_DATA     = $(service_in_files:.service.in=.service)
 
-# ----------------------------------------------------------------
-# TOOLS
-
-bin_PROGRAMS = gcr-viewer
-
-gcr_viewer_SOURCES = \
-	gcr-viewer-tool.c
-
-gcr_viewer_CFLAGS = \
-	$(GLIB_CFLAGS) \
-	$(GTK_CFLAGS) \
-	-DLOCALEDIR=\""$(datadir)/locale"\" \
-	-DGCR_API_SUBJECT_TO_CHANGE
-
-gcr_viewer_LDADD = \
-	$(builddir)/libgcr-ui-$(GCR_MAJOR).la \
-	$(builddir)/libgcr-base-$(GCR_MAJOR).la \
-	$(top_builddir)/gck/libgck- GCK_MAJOR@.la \
-	$(GLIB_LIBS) \
-	$(GTK_LIBS)
-
-libexec_PROGRAMS = gcr-prompter
-
-gcr_prompter_SOURCES = \
-	gcr-prompter-tool.c \
-	gcr-debug.c gcr-debug.h
-
-gcr_prompter_CFLAGS = \
-	$(GTK_CFLAGS)
-
-gcr_prompter_LDADD = \
-	$(builddir)/libgcr-ui-$(GCR_MAJOR).la \
-	$(builddir)/libgcr-base-$(GCR_MAJOR).la \
-	$(top_builddir)/gck/libgck- GCK_MAJOR@.la \
-	$(GTK_LIBS)
-
-
 EXTRA_DIST = \
-	gcr.pc.in \
 	gcr-base.pc.in \
 	gcr-marshal.list \
 	gcr-oids.list \
 	gcr-mkoids \
-	$(ui_DATA) \
 	$(DBUS_XML_DEFINITIONS) \
-	gcr-enum-types.h.template \
-	gcr-enum-types.c.template \
 	gcr-base.symbols \
-	gcr-ui.symbols \
-	$(desktop_in_in_files) \
-	$(service_in_files) \
-	$(mime_DATA)
+	$(service_in_files)
 
 CLEANFILES = \
 	$(BUILT_SOURCES) \
 	$(pkgconfig_DATA) \
 	$(service_DATA) \
 	$(desktop_in_files) \
-	$(desktop_DATA) \
 	$(gir_DATA) \
 	$(typelibs_DATA) \
 	gcr-base-actual.abi \
-	gcr-base-expected.abi \
-	gcr-ui-actual.abi \
-	gcr-ui-expected.abi
-
-# ------------------------------------------------------------------
-# INTROSPECTION
+	gcr-base-expected.abi
 
 if HAVE_INTROSPECTION
 
 include $(INTROSPECTION_MAKEFILE)
 
-INTROSPECTION_GIRS = Gcr- GCR_MAJOR@.gir GcrUi- GCR_MAJOR@.gir
+INTROSPECTION_GIRS = Gcr- GCR_MAJOR@.gir
 INTROSPECTION_SCANNER_ARGS = \
 	$(INTROSPECTION_FLAGS) \
 	--warn-all \
@@ -442,52 +227,27 @@ Gcr_ GCR_MAJOR@_gir_PACKAGES = p11-kit-1
 Gcr_ GCR_MAJOR@_gir_EXPORT_PACKAGES = gcr-base- GCR_MAJOR@
 Gcr_ GCR_MAJOR@_gir_INCLUDES = GLib-2.0 GObject-2.0
 Gcr_ GCR_MAJOR@_gir_LIBS = libgcr-base- GCR_MAJOR@.la
-Gcr_ GCR_MAJOR@_gir_CFLAGS = -I$(top_srcdir) -I$(top_builddir) -DGCR_COMPILATION -DGCR_API_SUBJECT_TO_CHANGE
-Gcr_ GCR_MAJOR@_gir_FILES = $(PUBLIC_BASE_FILES)
+Gcr_ GCR_MAJOR@_gir_CFLAGS = -I$(top_srcdir) -I$(top_builddir) \
+	-DGCR_COMPILATION -DGCR_API_SUBJECT_TO_CHANGE
+Gcr_ GCR_MAJOR@_gir_FILES = $(PUBLIC_FILES)
 Gcr_ GCR_MAJOR@_gir_SCANNERFLAGS = --c-include "gcr-base.h" \
 	--identifier-prefix Gcr
 
-GcrUi- GCR_MAJOR@.gir: libgcr-ui- GCR_MAJOR@.la Gcr- GCR_MAJOR@.gir
-
-GcrUi_ GCR_MAJOR@_gir_PACKAGES = gtk+-3.0 p11-kit-1
-GcrUi_ GCR_MAJOR@_gir_EXPORT_PACKAGES = gcr-ui- GCR_MAJOR@
-GcrUi_ GCR_MAJOR@_gir_INCLUDES = GLib-2.0 GObject-2.0 Gtk-3.0
-GcrUi_ GCR_MAJOR@_gir_LIBS = libgcr-ui- GCR_MAJOR@.la
-GcrUi_ GCR_MAJOR@_gir_CFLAGS = -I$(top_srcdir) -I$(top_builddir) -DGCR_COMPILATION -DGCR_API_SUBJECT_TO_CHANGE
-GcrUi_ GCR_MAJOR@_gir_FILES = $(PUBLIC_UI_FILES)
-GcrUi_ GCR_MAJOR@_gir_SCANNERFLAGS = --c-include "gcr-ui.h" \
-	--identifier-prefix Gcr --symbol-prefix gcr \
-	--include-uninstalled=$(builddir)/Gcr- GCR_MAJOR@.gir
-
 girdir = $(datadir)/gir-1.0
 gir_DATA = $(INTROSPECTION_GIRS)
 
 typelibsdir = $(libdir)/girepository-1.0
 typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
 
-endif
-
-# ----------------------------------------------------------------
+endif # HAVE_INTROSPECTON
 
 gcr-base-expected.abi: gcr-base.symbols
 	$(AM_V_GEN) cpp -P $< | sort > $@
-gcr-ui-expected.abi: gcr-ui.symbols
-	$(AM_V_GEN) cpp -P $< | sort > $@
 
 gcr-base-actual.abi: $(builddir)/.libs/libgcr-base- GCR_MAJOR@.so
 	$(AM_V_GEN)  $(NM) -D -g --defined-only $< | \
-		cut -d ' ' -f 3 | grep -Ev '^(__bss_start|_edata|_end)' | sort > $@
-gcr-ui-actual.abi: $(builddir)/.libs/libgcr-ui- GCR_MAJOR@.so
-	$(AM_V_GEN)  $(NM) -D -g --defined-only $< | \
-		cut -d ' ' -f 3 | grep -Ev '^(__bss_start|_edata|_end)' | sort > $@
+		cut -d ' ' -f 3 | grep -Ev '^(__bss_start|_edata|_end|_gcr_)' | sort > $@
 
-check-symbols: gcr-ui-expected.abi gcr-ui-actual.abi gcr-base-expected.abi gcr-base-actual.abi
+check-symbols: gcr-base-expected.abi gcr-base-actual.abi
 	$(AM_V_GEN) diff -U0 --ignore-blank-lines gcr-base-expected.abi gcr-base-actual.abi || \
 		(echo "check-symbols: Symbols have CHANGED. Fix gcr-base.symbols"; exit 1)
-	$(AM_V_GEN) diff -U0 --ignore-blank-lines gcr-ui-expected.abi gcr-ui-actual.abi || \
-		(echo "check-symbols: Symbols have CHANGED. Fix gcr-ui.symbols"; exit 1)
-
-check-local: check-symbols
-
-check-memory:
-	make -C tests check-memory
diff --git a/gcr/gcr-base.h b/gcr/gcr-base.h
index ddaa6f3..36c209b 100644
--- a/gcr/gcr-base.h
+++ b/gcr/gcr-base.h
@@ -37,6 +37,7 @@
 #include <gcr/gcr-certificate.h>
 #include <gcr/gcr-certificate-chain.h>
 #include <gcr/gcr-certificate-request.h>
+#include <gcr/gcr-column.h>
 #include <gcr/gcr-deprecated-base.h>
 #include <gcr/gcr-enum-types-base.h>
 #include <gcr/gcr-filter-collection.h>
diff --git a/gcr/gcr-base.symbols b/gcr/gcr-base.symbols
index 35a74a1..2520a42 100644
--- a/gcr/gcr-base.symbols
+++ b/gcr/gcr-base.symbols
@@ -65,6 +65,7 @@ gcr_collection_get_type
 gcr_comparable_compare
 gcr_comparable_get_type
 gcr_comparable_memcmp
+gcr_column_flags_get_type
 gcr_data_error_get_domain
 gcr_data_error_get_type
 gcr_data_format_get_type
diff --git a/gcr/gcr-simple-certificate.h b/gcr/gcr-simple-certificate.h
index 3346f92..a9491f9 100644
--- a/gcr/gcr-simple-certificate.h
+++ b/gcr/gcr-simple-certificate.h
@@ -28,6 +28,8 @@
 
 #include <glib-object.h>
 
+#include "gcr-certificate.h"
+
 G_BEGIN_DECLS
 
 #define GCR_TYPE_SIMPLE_CERTIFICATE               (gcr_simple_certificate_get_type ())
diff --git a/gcr/gcr.h b/gcr/gcr.h
index ae8c752..490772c 100644
--- a/gcr/gcr.h
+++ b/gcr/gcr.h
@@ -30,8 +30,8 @@
 
 #include <glib.h>
 
-#include "gcr-base.h"
-#include "gcr-ui.h"
+#include "gcr/gcr-base.h"
+#include "ui/gcr-ui.h"
 
 #undef __GCR_INSIDE_HEADER__
 
diff --git a/gcr/tests/Makefile.am b/gcr/tests/Makefile.am
index b0215c5..35fc63c 100644
--- a/gcr/tests/Makefile.am
+++ b/gcr/tests/Makefile.am
@@ -8,15 +8,13 @@ INCLUDES = \
 	-DGCK_API_SUBJECT_TO_CHANGE \
 	-DGCR_COMPILATION \
 	$(GLIB_CFLAGS) \
-	$(GTK_CFLAGS) \
 	$(LIBGCRYPT_CFLAGS) \
 	$(P11_KIT_CFLAGS)
 
 LDADD = \
-	$(top_builddir)/gcr/libgcr-testable.la \
+	$(top_builddir)/gcr/libgcr-base- GCR_MAJOR@.la \
 	$(top_builddir)/egg/libegg.la \
 	$(top_builddir)/gck/libgck-testable.la \
-	$(GTK_LIBS) \
 	$(GLIB_LIBS) \
 	$(LIBGCRYPT_LIBS) \
 	$(P11_KIT_LIBS)
@@ -61,23 +59,12 @@ EXTRA_DIST = \
 # ------------------------------------------------------------------
 
 noinst_PROGRAMS = \
-	frob-certificate \
-	frob-certificate-request \
-	frob-combo-selector \
-	frob-gnupg-selector \
-	frob-key \
-	frob-tree-selector \
 	frob-openpgp \
-	frob-parser \
-	frob-prompt \
-	frob-request \
-	frob-system-prompt \
-	frob-unlock \
-	frob-unlock-options
+	frob-parser
 
-frob_unlock_SOURCES = \
-	frob-unlock.c \
-	../gcr-viewer-window.c
+noinst_PROGRAMS += \
+	frob-certificate-request \
+	frob-parser
 
 frob_certificate_request_SOURCES = \
 	frob-certificate-request.c \
diff --git a/gcr/tests/frob-certificate-request.c b/gcr/tests/frob-certificate-request.c
index c2ab7c3..ef6d456 100644
--- a/gcr/tests/frob-certificate-request.c
+++ b/gcr/tests/frob-certificate-request.c
@@ -29,8 +29,6 @@
 
 #include "egg/egg-armor.h"
 
-#include <gtk/gtk.h>
-
 #include <unistd.h>
 #include <string.h>
 #include <errno.h>
@@ -104,7 +102,6 @@ test_request (const gchar *uri)
 int
 main(int argc, char *argv[])
 {
-	gtk_init (&argc, &argv);
 	g_set_prgname ("frob-certificate-request");
 
 	if (argc <= 1)
diff --git a/gcr/tests/frob-openpgp.c b/gcr/tests/frob-openpgp.c
index 9763a62..cd54f72 100644
--- a/gcr/tests/frob-openpgp.c
+++ b/gcr/tests/frob-openpgp.c
@@ -23,7 +23,7 @@
 
 #include "config.h"
 
-#include "gcr/gcr.h"
+#include "gcr/gcr-base.h"
 #include "gcr/gcr-openpgp.h"
 #include "gcr/gcr-record.h"
 
diff --git a/gcr/tests/test-openpgp.c b/gcr/tests/test-openpgp.c
index c221e94..6c9d8fa 100644
--- a/gcr/tests/test-openpgp.c
+++ b/gcr/tests/test-openpgp.c
@@ -22,7 +22,7 @@
 
 #include "config.h"
 
-#include "gcr/gcr.h"
+#include "gcr/gcr-base.h"
 #include "gcr/gcr-openpgp.h"
 #include "gcr/gcr-record.h"
 
diff --git a/gcr/tests/test-openssh.c b/gcr/tests/test-openssh.c
index 6347359..c9e84a3 100644
--- a/gcr/tests/test-openssh.c
+++ b/gcr/tests/test-openssh.c
@@ -22,7 +22,7 @@
 
 #include "config.h"
 
-#include "gcr/gcr.h"
+#include "gcr/gcr-base.h"
 #include "gcr/gcr-openssh.h"
 
 #include "egg/egg-testing.h"
diff --git a/gcr/tests/test-secret-exchange.c b/gcr/tests/test-secret-exchange.c
index 7c7fd5b..810ec69 100644
--- a/gcr/tests/test-secret-exchange.c
+++ b/gcr/tests/test-secret-exchange.c
@@ -22,7 +22,7 @@
 
 #include "config.h"
 
-#include "gcr/gcr.h"
+#include "gcr/gcr-base.h"
 
 #include "egg/egg-testing.h"
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0a47de2..bb70c17 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -7,34 +7,34 @@ gck/gck-modules.c
 gck/gck-uri.c
 gcr/gcr-callback-output-stream.c
 gcr/gcr-certificate.c
-gcr/gcr-certificate-exporter.c
 gcr/gcr-certificate-extensions.c
-gcr/gcr-certificate-renderer.c
 gcr/gcr-certificate-request.c
-gcr/gcr-certificate-request-renderer.c
-gcr/gcr-certificate-widget.c
-gcr/gcr-display-view.c
-gcr/gcr-failure-renderer.c
 gcr/gcr-gnupg-importer.c
 gcr/gcr-gnupg-key.c
 gcr/gcr-gnupg-process.c
-gcr/gcr-gnupg-renderer.c
-gcr/gcr-import-button.c
 gcr/gcr-importer.c
-gcr/gcr-key-renderer.c
 gcr/gcr-library.c
 gcr/gcr-parser.c
-gcr/gcr-pkcs11-import-dialog.c
-[type: gettext/glade]gcr/gcr-pkcs11-import-dialog.ui
-gcr/gcr-pkcs11-import-interaction.c
 gcr/gcr-prompt.c
-gcr/gcr-prompt-dialog.c
-gcr/gcr-prompter.desktop.in.in
 gcr/gcr-subject-public-key.c
 gcr/gcr-system-prompt.c
 gcr/gcr-trust.c
-[type: gettext/glade]gcr/gcr-unlock-options-widget.ui
-gcr/gcr-unlock-renderer.c
-gcr/gcr-viewer-tool.c
-gcr/gcr-viewer-widget.c
-gcr/gcr-viewer-window.c
+ui/gcr-certificate-renderer.c
+ui/gcr-certificate-request-renderer.c
+ui/gcr-certificate-widget.c
+ui/gcr-display-view.c
+ui/gcr-failure-renderer.c
+ui/gcr-gnupg-renderer.c
+ui/gcr-import-button.c
+ui/gcr-key-renderer.c
+ui/gcr-pkcs11-import-dialog.c
+[type: gettext/glade]ui/gcr-pkcs11-import-dialog.ui
+ui/gcr-pkcs11-import-interaction.c
+ui/gcr-prompt-dialog.c
+ui/gcr-prompter.desktop.in.in
+ui/gcr-certificate-exporter.c
+[type: gettext/glade]ui/gcr-unlock-options-widget.ui
+ui/gcr-unlock-renderer.c
+ui/gcr-viewer-tool.c
+ui/gcr-viewer-widget.c
+ui/gcr-viewer-window.c
diff --git a/ui/Makefile.am b/ui/Makefile.am
new file mode 100644
index 0000000..4fd40fa
--- /dev/null
+++ b/ui/Makefile.am
@@ -0,0 +1,276 @@
+include $(top_srcdir)/Makefile.decl
+
+SUBDIRS = . icons tests
+
+incdir = $(includedir)/gcr- GCR_MAJOR@/ui
+
+INCLUDES = \
+	-I$(top_builddir) \
+	-I$(top_srcdir) \
+	$(GLIB_CFLAGS) \
+	$(LIBGCRYPT_CFLAGS) \
+	$(P11_KIT_CFLAGS) \
+	-DG_LOG_DOMAIN=\"Gcr\" \
+	-DGCR_API_SUBJECT_TO_CHANGE \
+	-DLOCALEDIR=\""$(datadir)/locale"\"
+
+check-local: check-symbols
+
+check-memory:
+	make -C tests check-memory
+
+check-symbols: gcr-ui-expected.abi gcr-ui-actual.abi
+	$(AM_V_GEN) diff -U0 --ignore-blank-lines gcr-ui-expected.abi gcr-ui-actual.abi || \
+		(echo "check-symbols: Symbols have CHANGED. Fix gcr-ui.symbols"; exit 1)
+
+BUILT_SOURCES = \
+	gcr-enum-types.c gcr-enum-types.h
+
+libgcr_ui_ GCR_MAJOR@_la_CFLAGS = \
+	-DGCK_API_SUBJECT_TO_CHANGE \
+	-DP11_KIT_API_SUBJECT_TO_CHANGE \
+	-DGCR_COMPILATION \
+	$(GTK_CFLAGS) \
+	-DUIDIR=\""$(uidir)"\"
+
+libgcr_ui_ GCR_MAJOR@_la_LDFLAGS = \
+	-version-info $(GCR_LT_RELEASE) \
+	-no-undefined \
+	-export-symbols-regex '^_gcr_.*|^gcr_.*|^SECMEM_.*'
+
+libgcr_ui_ GCR_MAJOR@_la_LIBADD = \
+	$(top_builddir)/egg/libegg.la \
+	$(top_builddir)/gcr/libgcr-base-$(GCR_MAJOR).la \
+	$(top_builddir)/gck/libgck- GCK_MAJOR@.la \
+	$(GLIB_LIBS) \
+	$(LIBGCRYPT_LIBS) \
+	$(P11_KIT_LIBS) \
+	$(GTK_LIBS) \
+	$(NULL)
+
+# libgcr-3.so (and  friends) symlink to libgcr-ui-3.so for compatibility raisons
+install-exec-hook:
+	$(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui- GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr- GCR_MAJOR@.so
+	$(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui- GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr- GCR_MAJOR@ so  GCR_CURRENT@
+	$(LN_S) -f `readlink $(DESTDIR)$(libdir)/libgcr-ui- GCR_MAJOR@.so` $(DESTDIR)$(libdir)/libgcr- GCR_MAJOR@ so  GCR_LT_RELEASE@
+
+uidir = $(datadir)/gcr- GCR_MAJOR@/ui/
+
+ui_DATA = \
+	gcr-pkcs11-import-dialog.ui \
+	gcr-unlock-options-widget.ui
+
+lib_LTLIBRARIES = \
+	libgcr-ui- GCR_MAJOR@.la
+
+HEADER_FILES = \
+	gcr-ui.h \
+	gcr-certificate-basics-widget.h \
+	gcr-certificate-details-widget.h \
+	gcr-certificate-renderer.h \
+	gcr-certificate-widget.h \
+	gcr-collection-model.h \
+	gcr-combo-selector.h \
+	gcr-deprecated.h \
+	gcr-failure-renderer.h \
+	gcr-key-renderer.h \
+	gcr-key-widget.h \
+	gcr-import-button.h \
+	gcr-list-selector.h \
+	gcr-prompt-dialog.h \
+	gcr-renderer.h \
+	gcr-secure-entry-buffer.h \
+	gcr-tree-selector.h \
+	gcr-unlock-options-widget.h \
+	gcr-viewer.h \
+	gcr-viewer-widget.h
+
+inc_HEADERS = \
+	$(HEADER_FILES) \
+	gcr-enum-types.h
+
+PUBLIC_FILES = \
+	gcr-certificate-renderer.c gcr-certificate-renderer.h \
+	gcr-certificate-widget.c gcr-certificate-widget.h \
+	gcr-collection-model.c gcr-collection-model.h \
+	gcr-combo-selector.c gcr-combo-selector.h \
+	gcr-failure-renderer.c gcr-failure-renderer.h \
+	gcr-key-renderer.c gcr-key-renderer.h \
+	gcr-key-widget.c gcr-key-widget.h \
+	gcr-import-button.c  gcr-import-button.h \
+	gcr-list-selector.c gcr-list-selector.h \
+	gcr-prompt-dialog.c gcr-prompt-dialog.h \
+	gcr-renderer.c gcr-renderer.h \
+	gcr-secure-entry-buffer.c gcr-secure-entry-buffer.h \
+	gcr-tree-selector.c gcr-tree-selector.h \
+	gcr-unlock-options-widget.c gcr-unlock-options-widget.h \
+	gcr-viewer.c gcr-viewer.h \
+	gcr-viewer-widget.c gcr-viewer-widget.h \
+	gcr-ui.h \
+	$(NULL)
+
+PRIVATE_FILES = \
+	gcr-certificate-basics-widget.c gcr-certificate-basics-widget.h \
+	gcr-certificate-details-widget.c gcr-certificate-details-widget.h \
+	gcr-certificate-exporter.c gcr-certificate-exporter.h \
+	gcr-certificate-renderer-private.h \
+	gcr-certificate-request-renderer.c gcr-certificate-request-renderer.h \
+	gcr-deprecated.h \
+	gcr-dialog-util.c gcr-dialog-util.h \
+	gcr-display-scrolled.c gcr-display-scrolled.h \
+	gcr-display-view.c gcr-display-view.h \
+	gcr-gnupg-renderer.c gcr-gnupg-renderer.h \
+	gcr-list-selector-private.h \
+	gcr-live-search.c gcr-live-search.h \
+	gcr-pkcs11-import-dialog.c gcr-pkcs11-import-dialog.h \
+	gcr-pkcs11-import-interaction.c gcr-pkcs11-import-interaction.h \
+	gcr-unlock-renderer.c gcr-unlock-renderer.h \
+	gcr-viewer-window.c gcr-viewer-window.h \
+	$(NULL)
+
+libgcr_ui_ GCR_MAJOR@_la_SOURCES = \
+	$(PUBLIC_FILES) \
+	$(PRIVATE_FILES) \
+	$(NULL)
+
+nodist_libgcr_ui_ GCR_MAJOR@_la_SOURCES = \
+	$(BUILT_SOURCES)
+
+gcr-enum-types.h: $(ENUM_TEMPLATE_H) $(HEADER_FILES)
+	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
+
+gcr-enum-types.c: $(ENUM_TEMPLATE_C) $(HEADER_FILES)
+	$(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
+
+gcr-ui-$(GCR_MAJOR).pc: gcr-ui.pc
+	cp gcr-ui.pc gcr-ui-$(GCR_MAJOR).pc
+gcr-$(GCR_MAJOR).pc: gcr.pc
+	cp gcr.pc gcr-$(GCR_MAJOR).pc
+
+if HAVE_INTROSPECTION
+
+include $(INTROSPECTION_MAKEFILE)
+
+INTROSPECTION_GIRS = GcrUi- GCR_MAJOR@.gir
+INTROSPECTION_SCANNER_ARGS = \
+	$(INTROSPECTION_FLAGS) \
+	--warn-all \
+	--add-include-path=$(top_builddir)/gck \
+	--add-include-path=$(top_builddir)/gcr \
+	--include-uninstalled=$(top_builddir)/gck/Gck- GCK_MAJOR@.gir \
+	--include-uninstalled=$(top_builddir)/gcr/Gcr- GCR_MAJOR@.gir \
+	$(NULL)
+
+INTROSPECTION_COMPILER_ARGS = \
+	--includedir=$(srcdir) \
+	--includedir=$(top_builddir)/gck \
+	--includedir=$(top_builddir)/gcr \
+	$(NULL)
+
+GcrUi- GCR_MAJOR@.gir: $(builddir)/libgcr-ui- GCR_MAJOR@.la $(top_builddir)/gcr/Gcr- GCR_MAJOR@.gir
+
+GcrUi_ GCR_MAJOR@_gir_PACKAGES = gtk+-3.0 p11-kit-1
+GcrUi_ GCR_MAJOR@_gir_EXPORT_PACKAGES = gcr-ui- GCR_MAJOR@
+GcrUi_ GCR_MAJOR@_gir_INCLUDES = GLib-2.0 GObject-2.0 Gtk-3.0
+GcrUi_ GCR_MAJOR@_gir_LIBS = libgcr-ui- GCR_MAJOR@.la
+GcrUi_ GCR_MAJOR@_gir_CFLAGS = -I$(top_srcdir) -I$(top_builddir) -DGCR_COMPILATION -DGCR_API_SUBJECT_TO_CHANGE
+GcrUi_ GCR_MAJOR@_gir_FILES = $(PUBLIC_FILES)
+GcrUi_ GCR_MAJOR@_gir_SCANNERFLAGS = --c-include "gcr-ui.h" \
+	--identifier-prefix Gcr --symbol-prefix gcr \
+	--include-uninstalled=$(top_builddir)/gcr/Gcr- GCR_MAJOR@.gir
+
+girdir = $(datadir)/gir-1.0
+gir_DATA = $(INTROSPECTION_GIRS)
+
+typelibsdir = $(libdir)/girepository-1.0
+typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+
+endif # HAVE_INTROSPECTION
+
+pkgconfig_DATA = \
+	gcr-$(GCR_MAJOR).pc \
+	gcr-ui-$(GCR_MAJOR).pc
+
+gcr-ui-expected.abi: gcr-ui.symbols
+	$(AM_V_GEN) cpp -P $< | sort > $@
+
+desktopdir = $(datadir)/applications
+desktop_in_in_files = gcr-viewer.desktop.in.in gcr-prompter.desktop.in.in
+desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+
+bin_PROGRAMS = gcr-viewer
+
+gcr_viewer_SOURCES = \
+	gcr-viewer-tool.c
+
+gcr_viewer_CFLAGS = \
+	$(GLIB_CFLAGS) \
+	$(GTK_CFLAGS) \
+	-DLOCALEDIR=\""$(datadir)/locale"\" \
+	-DGCR_API_SUBJECT_TO_CHANGE
+
+gcr_viewer_LDADD = \
+	$(builddir)/libgcr-ui-$(GCR_MAJOR).la \
+	$(top_builddir)/gcr/libgcr-base-$(GCR_MAJOR).la \
+	$(top_builddir)/gck/libgck- GCK_MAJOR@.la \
+	$(GLIB_LIBS) \
+	$(GTK_LIBS)
+
+libexec_PROGRAMS = gcr-prompter
+
+gcr_prompter_SOURCES = \
+	gcr-prompter-tool.c
+
+gcr_prompter_CFLAGS = \
+	$(GTK_CFLAGS)
+
+gcr_prompter_LDADD = \
+	$(builddir)/libgcr-ui-$(GCR_MAJOR).la \
+	$(top_builddir)/gcr/libgcr-base-$(GCR_MAJOR).la \
+	$(top_builddir)/gck/libgck- GCK_MAJOR@.la \
+	$(GTK_LIBS)
+
+EXTRA_DIST = \
+	gcr.pc.in \
+	gcr-ui.pc.in \
+	$(ui_DATA) \
+	gcr-ui.symbols \
+	$(desktop_in_in_files) \
+	$(mime_DATA)
+
+CLEANFILES = \
+	$(desktop_DATA) \
+	gcr-ui-actual.abi \
+	gcr-ui-expected.abi \
+	$(BUILT_SOURCES) \
+	$(pkgconfig_DATA) \
+	$(gir_DATA) \
+	$(typelibs_DATA) \
+	$(NULL)
+
+# The new mime system
+mimedir = $(datadir)/mime/packages
+mime_DATA = gcr-crypto-types.xml
+
+if WITH_UPDATE_MIME
+
+update_mime_database_cmd = update-mime-database $(datadir)/mime/
+
+install-data-hook: update_mime_database
+uninstall-hook: update_mime_database
+
+update_mime_database:
+	@-if test -z "$(DESTDIR)"; then \
+		echo "Updating MIME database."; \
+		$(update_mime_database_cmd); \
+	else \
+		echo "*** MIME database not updated.  After (un)install, run this:"; \
+		echo "***   $(update_mime_database_cmd)"; \
+	fi
+
+endif # WITH_UPDATE_MIME
+
+gcr-ui-actual.abi: $(builddir)/.libs/libgcr-ui- GCR_MAJOR@.so
+	$(AM_V_GEN)  $(NM) -D -g --defined-only $< | \
+		cut -d ' ' -f 3 | grep -Ev '^(__bss_start|_edata|_end|_gcr_)' | sort > $@
diff --git a/gcr/gcr-certificate-basics-widget.c b/ui/gcr-certificate-basics-widget.c
similarity index 100%
rename from gcr/gcr-certificate-basics-widget.c
rename to ui/gcr-certificate-basics-widget.c
diff --git a/gcr/gcr-certificate-basics-widget.h b/ui/gcr-certificate-basics-widget.h
similarity index 97%
rename from gcr/gcr-certificate-basics-widget.h
rename to ui/gcr-certificate-basics-widget.h
index 4dee8e5..aaf91e2 100644
--- a/gcr/gcr-certificate-basics-widget.h
+++ b/ui/gcr-certificate-basics-widget.h
@@ -30,9 +30,10 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-certificate.h"
+#include "gcr/gcr-certificate.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-certificate-widget.h"
-#include "gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-certificate-details-widget.c b/ui/gcr-certificate-details-widget.c
similarity index 100%
rename from gcr/gcr-certificate-details-widget.c
rename to ui/gcr-certificate-details-widget.c
diff --git a/gcr/gcr-certificate-details-widget.h b/ui/gcr-certificate-details-widget.h
similarity index 97%
rename from gcr/gcr-certificate-details-widget.h
rename to ui/gcr-certificate-details-widget.h
index 5a3d74b..b4ad638 100644
--- a/gcr/gcr-certificate-details-widget.h
+++ b/ui/gcr-certificate-details-widget.h
@@ -30,9 +30,10 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-certificate.h"
+#include "gcr/gcr-certificate.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-certificate-widget.h"
-#include "gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-certificate-exporter.c b/ui/gcr-certificate-exporter.c
similarity index 99%
rename from gcr/gcr-certificate-exporter.c
rename to ui/gcr-certificate-exporter.c
index 7806533..196cf1d 100644
--- a/gcr/gcr-certificate-exporter.c
+++ b/ui/gcr-certificate-exporter.c
@@ -21,7 +21,8 @@
 
 #include "config.h"
 
-#include "gcr-certificate.h"
+#include "gcr/gcr-certificate.h"
+
 #include "gcr-certificate-exporter.h"
 
 #include "egg/egg-armor.h"
diff --git a/gcr/gcr-certificate-exporter.h b/ui/gcr-certificate-exporter.h
similarity index 99%
rename from gcr/gcr-certificate-exporter.h
rename to ui/gcr-certificate-exporter.h
index fd04a20..2aab7c3 100644
--- a/gcr/gcr-certificate-exporter.h
+++ b/ui/gcr-certificate-exporter.h
@@ -29,7 +29,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-certificate-renderer-private.h b/ui/gcr-certificate-renderer-private.h
similarity index 100%
rename from gcr/gcr-certificate-renderer-private.h
rename to ui/gcr-certificate-renderer-private.h
diff --git a/gcr/gcr-certificate-renderer.c b/ui/gcr-certificate-renderer.c
similarity index 99%
rename from gcr/gcr-certificate-renderer.c
rename to ui/gcr-certificate-renderer.c
index d4e05f4..1c06345 100644
--- a/gcr/gcr-certificate-renderer.c
+++ b/ui/gcr-certificate-renderer.c
@@ -19,16 +19,17 @@
 
 #include "config.h"
 
-#include "gcr-certificate.h"
+#include "gcr/gcr-certificate.h"
+#include "gcr/gcr-certificate-extensions.h"
+#include "gcr/gcr-fingerprint.h"
+#include "gcr/gcr-icons.h"
+#include "gcr/gcr-oids.h"
+#include "gcr/gcr-simple-certificate.h"
+
 #include "gcr-certificate-exporter.h"
-#include "gcr-certificate-extensions.h"
 #include "gcr-certificate-renderer.h"
 #include "gcr-certificate-renderer-private.h"
 #include "gcr-display-view.h"
-#include "gcr-fingerprint.h"
-#include "gcr-icons.h"
-#include "gcr-oids.h"
-#include "gcr-simple-certificate.h"
 #include "gcr-renderer.h"
 
 #include "egg/egg-asn1x.h"
diff --git a/gcr/gcr-certificate-renderer.h b/ui/gcr-certificate-renderer.h
similarity index 98%
rename from gcr/gcr-certificate-renderer.h
rename to ui/gcr-certificate-renderer.h
index 6167dd5..13fa960 100644
--- a/gcr/gcr-certificate-renderer.h
+++ b/ui/gcr-certificate-renderer.h
@@ -27,9 +27,10 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-certificate.h"
+#include "gcr/gcr-certificate.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-renderer.h"
-#include "gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-certificate-request-renderer.c b/ui/gcr-certificate-request-renderer.c
similarity index 99%
rename from gcr/gcr-certificate-request-renderer.c
rename to ui/gcr-certificate-request-renderer.c
index 51e0a4f..1985346 100644
--- a/gcr/gcr-certificate-request-renderer.c
+++ b/ui/gcr-certificate-request-renderer.c
@@ -19,11 +19,12 @@
 
 #include "config.h"
 
+#include "gcr/gcr-oids.h"
+#include "gcr/gcr-subject-public-key.h"
+
 #include "gcr-certificate-renderer-private.h"
 #include "gcr-certificate-request-renderer.h"
 #include "gcr-display-view.h"
-#include "gcr-oids.h"
-#include "gcr-subject-public-key.h"
 
 #include "egg/egg-asn1x.h"
 #include "egg/egg-asn1-defs.h"
diff --git a/gcr/gcr-certificate-request-renderer.h b/ui/gcr-certificate-request-renderer.h
similarity index 98%
rename from gcr/gcr-certificate-request-renderer.h
rename to ui/gcr-certificate-request-renderer.h
index 5e35057..1292c63 100644
--- a/gcr/gcr-certificate-request-renderer.h
+++ b/ui/gcr-certificate-request-renderer.h
@@ -27,9 +27,10 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-certificate.h"
+#include "gcr/gcr-certificate.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-renderer.h"
-#include "gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-certificate-widget.c b/ui/gcr-certificate-widget.c
similarity index 99%
rename from gcr/gcr-certificate-widget.c
rename to ui/gcr-certificate-widget.c
index 6ffdd44..75f80ad 100644
--- a/gcr/gcr-certificate-widget.c
+++ b/ui/gcr-certificate-widget.c
@@ -19,7 +19,8 @@
 
 #include "config.h"
 
-#include "gcr-certificate.h"
+#include "gcr/gcr-certificate.h"
+
 #include "gcr-certificate-renderer.h"
 #include "gcr-certificate-widget.h"
 #include "gcr-renderer.h"
diff --git a/gcr/gcr-certificate-widget.h b/ui/gcr-certificate-widget.h
similarity index 98%
rename from gcr/gcr-certificate-widget.h
rename to ui/gcr-certificate-widget.h
index 3ad2f19..9371a63 100644
--- a/gcr/gcr-certificate-widget.h
+++ b/ui/gcr-certificate-widget.h
@@ -27,8 +27,8 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-certificate.h"
-#include "gcr-types.h"
+#include "gcr/gcr-certificate.h"
+#include "gcr/gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-collection-model.c b/ui/gcr-collection-model.c
similarity index 100%
rename from gcr/gcr-collection-model.c
rename to ui/gcr-collection-model.c
diff --git a/gcr/gcr-collection-model.h b/ui/gcr-collection-model.h
similarity index 98%
rename from gcr/gcr-collection-model.h
rename to ui/gcr-collection-model.h
index a55f587..bc45db0 100644
--- a/gcr/gcr-collection-model.h
+++ b/ui/gcr-collection-model.h
@@ -27,8 +27,8 @@
 
 #include <gtk/gtk.h>
 
-#include "gcr-collection.h"
-#include "gcr-column.h"
+#include "gcr/gcr-collection.h"
+#include "gcr/gcr-column.h"
 
 typedef enum {
 	GCR_COLLECTION_MODEL_LIST = 0,
diff --git a/gcr/gcr-combo-selector.c b/ui/gcr-combo-selector.c
similarity index 99%
rename from gcr/gcr-combo-selector.c
rename to ui/gcr-combo-selector.c
index afbe4d7..30a53ff 100644
--- a/gcr/gcr-combo-selector.c
+++ b/ui/gcr-combo-selector.c
@@ -21,8 +21,9 @@
 
 #include "config.h"
 
+#include "gcr/gcr-internal.h"
+
 #include "gcr-collection-model.h"
-#include "gcr-internal.h"
 #include "gcr-combo-selector.h"
 
 #include <glib/gi18n-lib.h>
diff --git a/gcr/gcr-combo-selector.h b/ui/gcr-combo-selector.h
similarity index 98%
rename from gcr/gcr-combo-selector.h
rename to ui/gcr-combo-selector.h
index 2e519a0..9723e61 100644
--- a/gcr/gcr-combo-selector.h
+++ b/ui/gcr-combo-selector.h
@@ -22,7 +22,7 @@
 #ifndef __GCR_COMBO_SELECTOR_H__
 #define __GCR_COMBO_SELECTOR_H__
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
 
 #include <gtk/gtk.h>
 
diff --git a/gcr/gcr-crypto-types.xml b/ui/gcr-crypto-types.xml
similarity index 100%
rename from gcr/gcr-crypto-types.xml
rename to ui/gcr-crypto-types.xml
diff --git a/gcr/gcr-deprecated.h b/ui/gcr-deprecated.h
similarity index 100%
rename from gcr/gcr-deprecated.h
rename to ui/gcr-deprecated.h
diff --git a/gcr/gcr-dialog-util.c b/ui/gcr-dialog-util.c
similarity index 100%
rename from gcr/gcr-dialog-util.c
rename to ui/gcr-dialog-util.c
diff --git a/gcr/gcr-dialog-util.h b/ui/gcr-dialog-util.h
similarity index 100%
rename from gcr/gcr-dialog-util.h
rename to ui/gcr-dialog-util.h
diff --git a/gcr/gcr-display-scrolled.c b/ui/gcr-display-scrolled.c
similarity index 100%
rename from gcr/gcr-display-scrolled.c
rename to ui/gcr-display-scrolled.c
diff --git a/gcr/gcr-display-scrolled.h b/ui/gcr-display-scrolled.h
similarity index 100%
rename from gcr/gcr-display-scrolled.h
rename to ui/gcr-display-scrolled.h
diff --git a/gcr/gcr-display-view.c b/ui/gcr-display-view.c
similarity index 100%
rename from gcr/gcr-display-view.c
rename to ui/gcr-display-view.c
diff --git a/gcr/gcr-display-view.h b/ui/gcr-display-view.h
similarity index 98%
rename from gcr/gcr-display-view.h
rename to ui/gcr-display-view.h
index 0882624..ac13150 100644
--- a/gcr/gcr-display-view.h
+++ b/ui/gcr-display-view.h
@@ -23,8 +23,9 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-certificate.h"
-#include "gcr-types.h"
+#include "gcr/gcr-certificate.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-viewer.h"
 
 G_BEGIN_DECLS
diff --git a/gcr/gcr-failure-renderer.c b/ui/gcr-failure-renderer.c
similarity index 99%
rename from gcr/gcr-failure-renderer.c
rename to ui/gcr-failure-renderer.c
index 6b92317..baf6800 100644
--- a/gcr/gcr-failure-renderer.c
+++ b/ui/gcr-failure-renderer.c
@@ -19,10 +19,11 @@
 
 #include "config.h"
 
+#include "gcr/gcr-icons.h"
+#include "gcr/gcr-parser.h"
+
 #include "gcr-display-view.h"
 #include "gcr-failure-renderer.h"
-#include "gcr-icons.h"
-#include "gcr-parser.h"
 #include "gcr-secure-entry-buffer.h"
 
 #include <gdk/gdk.h>
diff --git a/gcr/gcr-failure-renderer.h b/ui/gcr-failure-renderer.h
similarity index 100%
rename from gcr/gcr-failure-renderer.h
rename to ui/gcr-failure-renderer.h
diff --git a/gcr/gcr-gnupg-renderer.c b/ui/gcr-gnupg-renderer.c
similarity index 99%
rename from gcr/gcr-gnupg-renderer.c
rename to ui/gcr-gnupg-renderer.c
index 5180503..1704896 100644
--- a/gcr/gcr-gnupg-renderer.c
+++ b/ui/gcr-gnupg-renderer.c
@@ -21,14 +21,15 @@
 
 #include "config.h"
 
+#include "gcr/gcr-icons.h"
+#include "gcr/gcr-gnupg-records.h"
+#include "gcr/gcr-openpgp.h"
+#include "gcr/gcr-simple-certificate.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-display-view.h"
-#include "gcr-icons.h"
-#include "gcr-gnupg-records.h"
 #include "gcr-gnupg-renderer.h"
-#include "gcr-openpgp.h"
-#include "gcr-simple-certificate.h"
 #include "gcr-renderer.h"
-#include "gcr-types.h"
 
 #include "gck/gck.h"
 
diff --git a/gcr/gcr-gnupg-renderer.h b/ui/gcr-gnupg-renderer.h
similarity index 99%
rename from gcr/gcr-gnupg-renderer.h
rename to ui/gcr-gnupg-renderer.h
index 0d09c31..3b75f86 100644
--- a/gcr/gcr-gnupg-renderer.h
+++ b/ui/gcr-gnupg-renderer.h
@@ -29,7 +29,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-record.h"
+#include "gcr/gcr-record.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-import-button.c b/ui/gcr-import-button.c
similarity index 99%
rename from gcr/gcr-import-button.c
rename to ui/gcr-import-button.c
index 373eebb..9e87e25 100644
--- a/gcr/gcr-import-button.c
+++ b/ui/gcr-import-button.c
@@ -23,11 +23,12 @@
 
 #include "config.h"
 
+#include "gcr/gcr-internal.h"
+#include "gcr/gcr-library.h"
+#include "gcr/gcr-marshal.h"
+#include "gcr/gcr-parser.h"
+
 #include "gcr-import-button.h"
-#include "gcr-internal.h"
-#include "gcr-library.h"
-#include "gcr-marshal.h"
-#include "gcr-parser.h"
 #include "gcr-pkcs11-import-interaction.h"
 
 #include <glib/gi18n-lib.h>
diff --git a/gcr/gcr-import-button.h b/ui/gcr-import-button.h
similarity index 98%
rename from gcr/gcr-import-button.h
rename to ui/gcr-import-button.h
index b30f3f3..2b116b6 100644
--- a/gcr/gcr-import-button.h
+++ b/ui/gcr-import-button.h
@@ -24,7 +24,7 @@
 #ifndef __GCR_IMPORT_BUTTON_H__
 #define __GCR_IMPORT_BUTTON_H__
 
-#include "gcr-importer.h"
+#include "gcr/gcr-importer.h"
 
 #include <gtk/gtk.h>
 
diff --git a/gcr/gcr-key-renderer.c b/ui/gcr-key-renderer.c
similarity index 99%
rename from gcr/gcr-key-renderer.c
rename to ui/gcr-key-renderer.c
index 722c7f5..bfb2f13 100644
--- a/gcr/gcr-key-renderer.c
+++ b/ui/gcr-key-renderer.c
@@ -19,12 +19,13 @@
 
 #include "config.h"
 
+#include "gcr/gcr-fingerprint.h"
+#include "gcr/gcr-icons.h"
+#include "gcr/gcr-subject-public-key.h"
+
 #include "gcr-key-renderer.h"
 #include "gcr-display-view.h"
-#include "gcr-fingerprint.h"
-#include "gcr-icons.h"
 #include "gcr-renderer.h"
-#include "gcr-subject-public-key.h"
 #include "gcr-viewer.h"
 
 #include "gck/gck.h"
diff --git a/gcr/gcr-key-renderer.h b/ui/gcr-key-renderer.h
similarity index 98%
rename from gcr/gcr-key-renderer.h
rename to ui/gcr-key-renderer.h
index 1c79644..70f129e 100644
--- a/gcr/gcr-key-renderer.h
+++ b/ui/gcr-key-renderer.h
@@ -27,7 +27,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-key-widget.c b/ui/gcr-key-widget.c
similarity index 100%
rename from gcr/gcr-key-widget.c
rename to ui/gcr-key-widget.c
diff --git a/gcr/gcr-key-widget.h b/ui/gcr-key-widget.h
similarity index 98%
rename from gcr/gcr-key-widget.h
rename to ui/gcr-key-widget.h
index 4901aad..d7d9eb5 100644
--- a/gcr/gcr-key-widget.h
+++ b/ui/gcr-key-widget.h
@@ -27,7 +27,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-list-selector-private.h b/ui/gcr-list-selector-private.h
similarity index 97%
rename from gcr/gcr-list-selector-private.h
rename to ui/gcr-list-selector-private.h
index 5f73e0b..2668598 100644
--- a/gcr/gcr-list-selector-private.h
+++ b/ui/gcr-list-selector-private.h
@@ -24,7 +24,8 @@
 #ifndef __GCR_LIST_SELECTOR_PRIVATE_H__
 #define __GCR_LIST_SELECTOR_PRIVATE_H__
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-list-selector.h"
 #include "gcr-live-search.h"
 
diff --git a/gcr/gcr-list-selector.c b/ui/gcr-list-selector.c
similarity index 99%
rename from gcr/gcr-list-selector.c
rename to ui/gcr-list-selector.c
index fc7a9d4..64a3e62 100644
--- a/gcr/gcr-list-selector.c
+++ b/ui/gcr-list-selector.c
@@ -24,8 +24,9 @@
 
 #include "config.h"
 
+#include "gcr/gcr-internal.h"
+
 #include "gcr-collection-model.h"
-#include "gcr-internal.h"
 #include "gcr-list-selector.h"
 #include "gcr-list-selector-private.h"
 #include "gcr-live-search.h"
diff --git a/gcr/gcr-list-selector.h b/ui/gcr-list-selector.h
similarity index 98%
rename from gcr/gcr-list-selector.h
rename to ui/gcr-list-selector.h
index e109167..42ab5a9 100644
--- a/gcr/gcr-list-selector.h
+++ b/ui/gcr-list-selector.h
@@ -25,7 +25,7 @@
 #ifndef __GCR_LIST_SELECTOR_H__
 #define __GCR_LIST_SELECTOR_H__
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
 
 #include <gtk/gtk.h>
 
diff --git a/gcr/gcr-live-search.c b/ui/gcr-live-search.c
similarity index 99%
rename from gcr/gcr-live-search.c
rename to ui/gcr-live-search.c
index f062e8c..7e85729 100644
--- a/gcr/gcr-live-search.c
+++ b/ui/gcr-live-search.c
@@ -27,8 +27,9 @@
 
 #include "config.h"
 
+#include "gcr/gcr-marshal.h"
+
 #include "gcr-live-search.h"
-#include "gcr-marshal.h"
 
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
diff --git a/gcr/gcr-live-search.h b/ui/gcr-live-search.h
similarity index 100%
rename from gcr/gcr-live-search.h
rename to ui/gcr-live-search.h
diff --git a/gcr/gcr-pkcs11-import-dialog.c b/ui/gcr-pkcs11-import-dialog.c
similarity index 99%
rename from gcr/gcr-pkcs11-import-dialog.c
rename to ui/gcr-pkcs11-import-dialog.c
index 8f52816..ca56ceb 100644
--- a/gcr/gcr-pkcs11-import-dialog.c
+++ b/ui/gcr-pkcs11-import-dialog.c
@@ -21,8 +21,9 @@
 
 #include "config.h"
 
+#include "gcr/gcr-icons.h"
+
 #include "gcr-dialog-util.h"
-#include "gcr-icons.h"
 #include "gcr-secure-entry-buffer.h"
 #include "gcr-pkcs11-import-dialog.h"
 
diff --git a/gcr/gcr-pkcs11-import-dialog.h b/ui/gcr-pkcs11-import-dialog.h
similarity index 100%
rename from gcr/gcr-pkcs11-import-dialog.h
rename to ui/gcr-pkcs11-import-dialog.h
diff --git a/gcr/gcr-pkcs11-import-dialog.ui b/ui/gcr-pkcs11-import-dialog.ui
similarity index 100%
rename from gcr/gcr-pkcs11-import-dialog.ui
rename to ui/gcr-pkcs11-import-dialog.ui
diff --git a/gcr/gcr-pkcs11-import-interaction.c b/ui/gcr-pkcs11-import-interaction.c
similarity index 99%
rename from gcr/gcr-pkcs11-import-interaction.c
rename to ui/gcr-pkcs11-import-interaction.c
index 2d42d7b..867dca6 100644
--- a/gcr/gcr-pkcs11-import-interaction.c
+++ b/ui/gcr-pkcs11-import-interaction.c
@@ -21,8 +21,9 @@
 
 #include "config.h"
 
+#include "gcr/gcr-import-interaction.h"
+
 #include "gcr-dialog-util.h"
-#include "gcr-import-interaction.h"
 #include "gcr-pkcs11-import-interaction.h"
 
 #include <glib/gi18n-lib.h>
diff --git a/gcr/gcr-pkcs11-import-interaction.h b/ui/gcr-pkcs11-import-interaction.h
similarity index 100%
rename from gcr/gcr-pkcs11-import-interaction.h
rename to ui/gcr-pkcs11-import-interaction.h
diff --git a/gcr/gcr-prompt-dialog.c b/ui/gcr-prompt-dialog.c
similarity index 99%
rename from gcr/gcr-prompt-dialog.c
rename to ui/gcr-prompt-dialog.c
index 1fb7363..59747ac 100644
--- a/gcr/gcr-prompt-dialog.c
+++ b/ui/gcr-prompt-dialog.c
@@ -24,8 +24,9 @@
 #include "config.h"
 
 #define DEBUG_FLAG GCR_DEBUG_PROMPT
-#include "gcr-debug.h"
-#include "gcr-prompt.h"
+#include "gcr/gcr-debug.h"
+#include "gcr/gcr-prompt.h"
+
 #include "gcr-prompt-dialog.h"
 #include "gcr-secure-entry-buffer.h"
 
diff --git a/gcr/gcr-prompt-dialog.h b/ui/gcr-prompt-dialog.h
similarity index 100%
rename from gcr/gcr-prompt-dialog.h
rename to ui/gcr-prompt-dialog.h
diff --git a/gcr/gcr-prompter-tool.c b/ui/gcr-prompter-tool.c
similarity index 98%
rename from gcr/gcr-prompter-tool.c
rename to ui/gcr-prompter-tool.c
index 093aec4..54aa024 100644
--- a/gcr/gcr-prompter-tool.c
+++ b/ui/gcr-prompter-tool.c
@@ -23,11 +23,10 @@
 
 #include "config.h"
 
-#include "gcr.h"
-
-#include "gcr-dbus-constants.h"
+#include "gcr/gcr.h"
+#include "gcr/gcr-dbus-constants.h"
 #define DEBUG_FLAG GCR_DEBUG_PROMPT
-#include "gcr-debug.h"
+#include "gcr/gcr-debug.h"
 
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
diff --git a/gcr/gcr-prompter.desktop.in.in b/ui/gcr-prompter.desktop.in.in
similarity index 100%
rename from gcr/gcr-prompter.desktop.in.in
rename to ui/gcr-prompter.desktop.in.in
diff --git a/gcr/gcr-renderer.c b/ui/gcr-renderer.c
similarity index 100%
rename from gcr/gcr-renderer.c
rename to ui/gcr-renderer.c
diff --git a/gcr/gcr-renderer.h b/ui/gcr-renderer.h
similarity index 98%
rename from gcr/gcr-renderer.h
rename to ui/gcr-renderer.h
index 242374a..2c898fa 100644
--- a/gcr/gcr-renderer.h
+++ b/ui/gcr-renderer.h
@@ -24,8 +24,9 @@
 
 #include <glib-object.h>
 
-#include "gcr-column.h"
-#include "gcr-types.h"
+#include "gcr/gcr-column.h"
+#include "gcr/gcr-types.h"
+
 #include "gcr-viewer.h"
 
 G_BEGIN_DECLS
diff --git a/gcr/gcr-secure-entry-buffer.c b/ui/gcr-secure-entry-buffer.c
similarity index 100%
rename from gcr/gcr-secure-entry-buffer.c
rename to ui/gcr-secure-entry-buffer.c
diff --git a/gcr/gcr-secure-entry-buffer.h b/ui/gcr-secure-entry-buffer.h
similarity index 100%
rename from gcr/gcr-secure-entry-buffer.h
rename to ui/gcr-secure-entry-buffer.h
diff --git a/gcr/gcr-tree-selector.c b/ui/gcr-tree-selector.c
similarity index 99%
rename from gcr/gcr-tree-selector.c
rename to ui/gcr-tree-selector.c
index 1c3a7c9..6766b5e 100644
--- a/gcr/gcr-tree-selector.c
+++ b/ui/gcr-tree-selector.c
@@ -21,8 +21,9 @@
 
 #include "config.h"
 
+#include "gcr/gcr-internal.h"
+
 #include "gcr-collection-model.h"
-#include "gcr-internal.h"
 #include "gcr-tree-selector.h"
 
 #include <glib/gi18n-lib.h>
diff --git a/gcr/gcr-tree-selector.h b/ui/gcr-tree-selector.h
similarity index 98%
rename from gcr/gcr-tree-selector.h
rename to ui/gcr-tree-selector.h
index 7792153..9e68e98 100644
--- a/gcr/gcr-tree-selector.h
+++ b/ui/gcr-tree-selector.h
@@ -22,7 +22,7 @@
 #ifndef __GCR_TREE_SELECTOR_H__
 #define __GCR_TREE_SELECTOR_H__
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
 
 #include <gtk/gtk.h>
 
diff --git a/gcr/gcr-ui.h b/ui/gcr-ui.h
similarity index 58%
rename from gcr/gcr-ui.h
rename to ui/gcr-ui.h
index 0570f52..23e9fd3 100644
--- a/gcr/gcr-ui.h
+++ b/ui/gcr-ui.h
@@ -30,32 +30,30 @@
 
 #include <glib.h>
 
-#include "gcr-base.h"
+#include <gcr/gcr-base.h>
 
 #define __GCR_INSIDE_HEADER__
 
-#include <gcr/gcr-certificate-renderer.h>
-#include <gcr/gcr-certificate-widget.h>
-#include <gcr/gcr-collection-model.h>
-#include <gcr/gcr-column.h>
-#include <gcr/gcr-combo-selector.h>
-#include <gcr/gcr-deprecated.h>
-#include <gcr/gcr-key-renderer.h>
-#include <gcr/gcr-key-widget.h>
-#include <gcr/gcr-enum-types.h>
-#include <gcr/gcr-failure-renderer.h>
-#include <gcr/gcr-key-renderer.h>
-#include <gcr/gcr-key-widget.h>
-#include <gcr/gcr-import-button.h>
-#include <gcr/gcr-list-selector.h>
-#include <gcr/gcr-prompt-dialog.h>
-#include <gcr/gcr-renderer.h>
-#include <gcr/gcr-secure-entry-buffer.h>
-#include <gcr/gcr-tree-selector.h>
-#include <gcr/gcr-union-collection.h>
-#include <gcr/gcr-unlock-options-widget.h>
-#include <gcr/gcr-viewer.h>
-#include <gcr/gcr-viewer-widget.h>
+#include <ui/gcr-certificate-renderer.h>
+#include <ui/gcr-certificate-widget.h>
+#include <ui/gcr-collection-model.h>
+#include <ui/gcr-combo-selector.h>
+#include <ui/gcr-deprecated.h>
+#include <ui/gcr-key-renderer.h>
+#include <ui/gcr-key-widget.h>
+#include <ui/gcr-enum-types.h>
+#include <ui/gcr-failure-renderer.h>
+#include <ui/gcr-key-renderer.h>
+#include <ui/gcr-key-widget.h>
+#include <ui/gcr-import-button.h>
+#include <ui/gcr-list-selector.h>
+#include <ui/gcr-prompt-dialog.h>
+#include <ui/gcr-renderer.h>
+#include <ui/gcr-secure-entry-buffer.h>
+#include <ui/gcr-tree-selector.h>
+#include <ui/gcr-unlock-options-widget.h>
+#include <ui/gcr-viewer.h>
+#include <ui/gcr-viewer-widget.h>
 
 #undef __GCR_INSIDE_HEADER__
 
diff --git a/gcr/gcr-ui.pc.in b/ui/gcr-ui.pc.in
similarity index 100%
rename from gcr/gcr-ui.pc.in
rename to ui/gcr-ui.pc.in
diff --git a/gcr/gcr-ui.symbols b/ui/gcr-ui.symbols
similarity index 98%
rename from gcr/gcr-ui.symbols
rename to ui/gcr-ui.symbols
index 4017eb2..d334d49 100644
--- a/gcr/gcr-ui.symbols
+++ b/ui/gcr-ui.symbols
@@ -38,7 +38,6 @@ gcr_collection_model_set_collection
 gcr_collection_model_set_columns
 gcr_collection_model_set_selected_objects
 gcr_collection_model_toggle_selected
-gcr_column_flags_get_type
 gcr_combo_selector_get_collection
 gcr_combo_selector_get_selected
 gcr_combo_selector_get_type
@@ -110,4 +109,3 @@ gcr_viewer_widget_load_file
 gcr_viewer_widget_new
 gcr_viewer_widget_show_error
 gcr_viewer_widget_set_display_name
-SECMEM_pool_data_v1_0
diff --git a/gcr/gcr-unlock-options-widget.c b/ui/gcr-unlock-options-widget.c
similarity index 100%
rename from gcr/gcr-unlock-options-widget.c
rename to ui/gcr-unlock-options-widget.c
diff --git a/gcr/gcr-unlock-options-widget.h b/ui/gcr-unlock-options-widget.h
similarity index 98%
rename from gcr/gcr-unlock-options-widget.h
rename to ui/gcr-unlock-options-widget.h
index ca274f5..d3a17cc 100644
--- a/gcr/gcr-unlock-options-widget.h
+++ b/ui/gcr-unlock-options-widget.h
@@ -27,8 +27,8 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-types.h"
-#include "gcr-unlock-options.h"
+#include "gcr/gcr-types.h"
+#include "gcr/gcr-unlock-options.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-unlock-options-widget.ui b/ui/gcr-unlock-options-widget.ui
similarity index 100%
rename from gcr/gcr-unlock-options-widget.ui
rename to ui/gcr-unlock-options-widget.ui
diff --git a/gcr/gcr-unlock-renderer.c b/ui/gcr-unlock-renderer.c
similarity index 99%
rename from gcr/gcr-unlock-renderer.c
rename to ui/gcr-unlock-renderer.c
index 127c448..2e762df 100644
--- a/gcr/gcr-unlock-renderer.c
+++ b/ui/gcr-unlock-renderer.c
@@ -19,9 +19,10 @@
 
 #include "config.h"
 
+#include "gcr/gcr-icons.h"
+#include "gcr/gcr-parser.h"
+
 #include "gcr-display-view.h"
-#include "gcr-icons.h"
-#include "gcr-parser.h"
 #include "gcr-secure-entry-buffer.h"
 #include "gcr-unlock-renderer.h"
 
diff --git a/gcr/gcr-unlock-renderer.h b/ui/gcr-unlock-renderer.h
similarity index 99%
rename from gcr/gcr-unlock-renderer.h
rename to ui/gcr-unlock-renderer.h
index d8beb74..63e89bc 100644
--- a/gcr/gcr-unlock-renderer.h
+++ b/ui/gcr-unlock-renderer.h
@@ -29,8 +29,9 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
+#include "gcr/gcr-types.h"
+
 #include "gcr-renderer.h"
-#include "gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr-viewer-tool.c b/ui/gcr-viewer-tool.c
similarity index 100%
rename from gcr/gcr-viewer-tool.c
rename to ui/gcr-viewer-tool.c
diff --git a/gcr/gcr-viewer-widget.c b/ui/gcr-viewer-widget.c
similarity index 99%
rename from gcr/gcr-viewer-widget.c
rename to ui/gcr-viewer-widget.c
index 682976d..b594dc1 100644
--- a/gcr/gcr-viewer-widget.c
+++ b/ui/gcr-viewer-widget.c
@@ -23,11 +23,12 @@
 
 #include "config.h"
 
+#include "gcr/gcr-importer.h"
+#include "gcr/gcr-marshal.h"
+#include "gcr/gcr-parser.h"
+
 #include "gcr-display-scrolled.h"
 #include "gcr-failure-renderer.h"
-#include "gcr-importer.h"
-#include "gcr-marshal.h"
-#include "gcr-parser.h"
 #include "gcr-renderer.h"
 #include "gcr-unlock-renderer.h"
 #include "gcr-viewer-widget.h"
diff --git a/gcr/gcr-viewer-widget.h b/ui/gcr-viewer-widget.h
similarity index 100%
rename from gcr/gcr-viewer-widget.h
rename to ui/gcr-viewer-widget.h
diff --git a/gcr/gcr-viewer-window.c b/ui/gcr-viewer-window.c
similarity index 100%
rename from gcr/gcr-viewer-window.c
rename to ui/gcr-viewer-window.c
diff --git a/gcr/gcr-viewer-window.h b/ui/gcr-viewer-window.h
similarity index 100%
rename from gcr/gcr-viewer-window.h
rename to ui/gcr-viewer-window.h
diff --git a/gcr/gcr-viewer.c b/ui/gcr-viewer.c
similarity index 100%
rename from gcr/gcr-viewer.c
rename to ui/gcr-viewer.c
diff --git a/gcr/gcr-viewer.desktop.in.in b/ui/gcr-viewer.desktop.in.in
similarity index 100%
rename from gcr/gcr-viewer.desktop.in.in
rename to ui/gcr-viewer.desktop.in.in
diff --git a/gcr/gcr-viewer.h b/ui/gcr-viewer.h
similarity index 99%
rename from gcr/gcr-viewer.h
rename to ui/gcr-viewer.h
index b806cda..6b6c9f3 100644
--- a/gcr/gcr-viewer.h
+++ b/ui/gcr-viewer.h
@@ -23,7 +23,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
-#include "gcr-types.h"
+#include "gcr/gcr-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/gcr/gcr.pc.in b/ui/gcr.pc.in
similarity index 80%
rename from gcr/gcr.pc.in
rename to ui/gcr.pc.in
index c118b1e..f581de3 100644
--- a/gcr/gcr.pc.in
+++ b/ui/gcr.pc.in
@@ -9,4 +9,4 @@ sysconfdir= sysconfdir@
 Name: gcr- GCR_MAJOR@
 Description: GObject and GUI library for high level crypto parsing and display
 Version: @VERSION@
-Requires: gcr-ui- GCR_MAJOR@ gcr-base- GCR_MAJOR@
+Requires: gck- GCK_MAJOR@ gcr-ui- GCR_MAJOR@ gcr-base- GCR_MAJOR@
diff --git a/gcr/icons/16x16/Makefile.am b/ui/icons/16x16/Makefile.am
similarity index 100%
rename from gcr/icons/16x16/Makefile.am
rename to ui/icons/16x16/Makefile.am
diff --git a/gcr/icons/16x16/gcr-gnupg.png b/ui/icons/16x16/gcr-gnupg.png
similarity index 100%
rename from gcr/icons/16x16/gcr-gnupg.png
rename to ui/icons/16x16/gcr-gnupg.png
diff --git a/gcr/icons/16x16/gcr-key-pair.png b/ui/icons/16x16/gcr-key-pair.png
similarity index 100%
rename from gcr/icons/16x16/gcr-key-pair.png
rename to ui/icons/16x16/gcr-key-pair.png
diff --git a/gcr/icons/16x16/gcr-key.png b/ui/icons/16x16/gcr-key.png
similarity index 100%
rename from gcr/icons/16x16/gcr-key.png
rename to ui/icons/16x16/gcr-key.png
diff --git a/gcr/icons/16x16/gcr-password.png b/ui/icons/16x16/gcr-password.png
similarity index 100%
rename from gcr/icons/16x16/gcr-password.png
rename to ui/icons/16x16/gcr-password.png
diff --git a/gcr/icons/16x16/gcr-smart-card.png b/ui/icons/16x16/gcr-smart-card.png
similarity index 100%
rename from gcr/icons/16x16/gcr-smart-card.png
rename to ui/icons/16x16/gcr-smart-card.png
diff --git a/gcr/icons/22x22/Makefile.am b/ui/icons/22x22/Makefile.am
similarity index 100%
rename from gcr/icons/22x22/Makefile.am
rename to ui/icons/22x22/Makefile.am
diff --git a/gcr/icons/22x22/gcr-gnupg.png b/ui/icons/22x22/gcr-gnupg.png
similarity index 100%
rename from gcr/icons/22x22/gcr-gnupg.png
rename to ui/icons/22x22/gcr-gnupg.png
diff --git a/gcr/icons/22x22/gcr-key-pair.png b/ui/icons/22x22/gcr-key-pair.png
similarity index 100%
rename from gcr/icons/22x22/gcr-key-pair.png
rename to ui/icons/22x22/gcr-key-pair.png
diff --git a/gcr/icons/22x22/gcr-key.png b/ui/icons/22x22/gcr-key.png
similarity index 100%
rename from gcr/icons/22x22/gcr-key.png
rename to ui/icons/22x22/gcr-key.png
diff --git a/gcr/icons/22x22/gcr-password.png b/ui/icons/22x22/gcr-password.png
similarity index 100%
rename from gcr/icons/22x22/gcr-password.png
rename to ui/icons/22x22/gcr-password.png
diff --git a/gcr/icons/22x22/gcr-smart-card.png b/ui/icons/22x22/gcr-smart-card.png
similarity index 100%
rename from gcr/icons/22x22/gcr-smart-card.png
rename to ui/icons/22x22/gcr-smart-card.png
diff --git a/gcr/icons/24x24/Makefile.am b/ui/icons/24x24/Makefile.am
similarity index 100%
rename from gcr/icons/24x24/Makefile.am
rename to ui/icons/24x24/Makefile.am
diff --git a/gcr/icons/24x24/gcr-gnupg.png b/ui/icons/24x24/gcr-gnupg.png
similarity index 100%
rename from gcr/icons/24x24/gcr-gnupg.png
rename to ui/icons/24x24/gcr-gnupg.png
diff --git a/gcr/icons/24x24/gcr-key-pair.png b/ui/icons/24x24/gcr-key-pair.png
similarity index 100%
rename from gcr/icons/24x24/gcr-key-pair.png
rename to ui/icons/24x24/gcr-key-pair.png
diff --git a/gcr/icons/24x24/gcr-key.png b/ui/icons/24x24/gcr-key.png
similarity index 100%
rename from gcr/icons/24x24/gcr-key.png
rename to ui/icons/24x24/gcr-key.png
diff --git a/gcr/icons/24x24/gcr-password.png b/ui/icons/24x24/gcr-password.png
similarity index 100%
rename from gcr/icons/24x24/gcr-password.png
rename to ui/icons/24x24/gcr-password.png
diff --git a/gcr/icons/24x24/gcr-smart-card.png b/ui/icons/24x24/gcr-smart-card.png
similarity index 100%
rename from gcr/icons/24x24/gcr-smart-card.png
rename to ui/icons/24x24/gcr-smart-card.png
diff --git a/gcr/icons/256x256/Makefile.am b/ui/icons/256x256/Makefile.am
similarity index 100%
rename from gcr/icons/256x256/Makefile.am
rename to ui/icons/256x256/Makefile.am
diff --git a/gcr/icons/256x256/gcr-gnupg.png b/ui/icons/256x256/gcr-gnupg.png
similarity index 100%
rename from gcr/icons/256x256/gcr-gnupg.png
rename to ui/icons/256x256/gcr-gnupg.png
diff --git a/gcr/icons/256x256/gcr-password.png b/ui/icons/256x256/gcr-password.png
similarity index 100%
rename from gcr/icons/256x256/gcr-password.png
rename to ui/icons/256x256/gcr-password.png
diff --git a/gcr/icons/256x256/gcr-smart-card.png b/ui/icons/256x256/gcr-smart-card.png
similarity index 100%
rename from gcr/icons/256x256/gcr-smart-card.png
rename to ui/icons/256x256/gcr-smart-card.png
diff --git a/gcr/icons/32x32/Makefile.am b/ui/icons/32x32/Makefile.am
similarity index 100%
rename from gcr/icons/32x32/Makefile.am
rename to ui/icons/32x32/Makefile.am
diff --git a/gcr/icons/32x32/gcr-gnupg.png b/ui/icons/32x32/gcr-gnupg.png
similarity index 100%
rename from gcr/icons/32x32/gcr-gnupg.png
rename to ui/icons/32x32/gcr-gnupg.png
diff --git a/gcr/icons/32x32/gcr-key-pair.png b/ui/icons/32x32/gcr-key-pair.png
similarity index 100%
rename from gcr/icons/32x32/gcr-key-pair.png
rename to ui/icons/32x32/gcr-key-pair.png
diff --git a/gcr/icons/32x32/gcr-key.png b/ui/icons/32x32/gcr-key.png
similarity index 100%
rename from gcr/icons/32x32/gcr-key.png
rename to ui/icons/32x32/gcr-key.png
diff --git a/gcr/icons/32x32/gcr-password.png b/ui/icons/32x32/gcr-password.png
similarity index 100%
rename from gcr/icons/32x32/gcr-password.png
rename to ui/icons/32x32/gcr-password.png
diff --git a/gcr/icons/32x32/gcr-smart-card.png b/ui/icons/32x32/gcr-smart-card.png
similarity index 100%
rename from gcr/icons/32x32/gcr-smart-card.png
rename to ui/icons/32x32/gcr-smart-card.png
diff --git a/gcr/icons/48x48/Makefile.am b/ui/icons/48x48/Makefile.am
similarity index 100%
rename from gcr/icons/48x48/Makefile.am
rename to ui/icons/48x48/Makefile.am
diff --git a/gcr/icons/48x48/gcr-gnupg.png b/ui/icons/48x48/gcr-gnupg.png
similarity index 100%
rename from gcr/icons/48x48/gcr-gnupg.png
rename to ui/icons/48x48/gcr-gnupg.png
diff --git a/gcr/icons/48x48/gcr-key-pair.png b/ui/icons/48x48/gcr-key-pair.png
similarity index 100%
rename from gcr/icons/48x48/gcr-key-pair.png
rename to ui/icons/48x48/gcr-key-pair.png
diff --git a/gcr/icons/48x48/gcr-key.png b/ui/icons/48x48/gcr-key.png
similarity index 100%
rename from gcr/icons/48x48/gcr-key.png
rename to ui/icons/48x48/gcr-key.png
diff --git a/gcr/icons/48x48/gcr-password.png b/ui/icons/48x48/gcr-password.png
similarity index 100%
rename from gcr/icons/48x48/gcr-password.png
rename to ui/icons/48x48/gcr-password.png
diff --git a/gcr/icons/48x48/gcr-smart-card.png b/ui/icons/48x48/gcr-smart-card.png
similarity index 100%
rename from gcr/icons/48x48/gcr-smart-card.png
rename to ui/icons/48x48/gcr-smart-card.png
diff --git a/gcr/icons/Makefile.am b/ui/icons/Makefile.am
similarity index 100%
rename from gcr/icons/Makefile.am
rename to ui/icons/Makefile.am
diff --git a/gcr/icons/Makefile.decl b/ui/icons/Makefile.decl
similarity index 100%
rename from gcr/icons/Makefile.decl
rename to ui/icons/Makefile.decl
diff --git a/gcr/icons/render-icons.py b/ui/icons/render-icons.py
similarity index 100%
rename from gcr/icons/render-icons.py
rename to ui/icons/render-icons.py
diff --git a/gcr/icons/src/gcr-gnupg.svg b/ui/icons/src/gcr-gnupg.svg
similarity index 100%
rename from gcr/icons/src/gcr-gnupg.svg
rename to ui/icons/src/gcr-gnupg.svg
diff --git a/gcr/icons/src/gcr-key-and-keypair.svg b/ui/icons/src/gcr-key-and-keypair.svg
similarity index 100%
rename from gcr/icons/src/gcr-key-and-keypair.svg
rename to ui/icons/src/gcr-key-and-keypair.svg
diff --git a/gcr/icons/src/gcr-password.svg b/ui/icons/src/gcr-password.svg
similarity index 100%
rename from gcr/icons/src/gcr-password.svg
rename to ui/icons/src/gcr-password.svg
diff --git a/gcr/icons/src/gcr-smart-card.svg b/ui/icons/src/gcr-smart-card.svg
similarity index 100%
rename from gcr/icons/src/gcr-smart-card.svg
rename to ui/icons/src/gcr-smart-card.svg
diff --git a/ui/tests/Makefile.am b/ui/tests/Makefile.am
new file mode 100644
index 0000000..f749ea9
--- /dev/null
+++ b/ui/tests/Makefile.am
@@ -0,0 +1,41 @@
+include $(top_srcdir)/Makefile.decl
+
+INCLUDES = \
+	-I$(top_builddir) \
+	-I$(top_srcdir) \
+	-DSRCDIR="\"@abs_srcdir \"" \
+	-DGCR_API_SUBJECT_TO_CHANGE \
+	-DGCK_API_SUBJECT_TO_CHANGE \
+	-DGCR_COMPILATION \
+	$(GLIB_CFLAGS) \
+	$(LIBGCRYPT_CFLAGS) \
+	$(P11_KIT_CFLAGS) \
+	$(GTK_CFLAGS)
+
+LDADD = \
+	$(top_builddir)/ui/libgcr-ui- GCR_MAJOR@.la \
+	$(top_builddir)/gcr/libgcr-base- GCR_MAJOR@.la \
+	$(top_builddir)/egg/libegg.la \
+	$(top_builddir)/gck/libgck-testable.la \
+	$(GLIB_LIBS) \
+	$(LIBGCRYPT_LIBS) \
+	$(P11_KIT_LIBS) \
+	$(GTK_LIBS)
+
+# ------------------------------------------------------------------
+
+noinst_PROGRAMS = \
+	frob-certificate \
+	frob-combo-selector \
+	frob-gnupg-selector \
+	frob-key \
+	frob-tree-selector \
+	frob-prompt \
+	frob-request \
+	frob-system-prompt \
+	frob-unlock \
+	frob-unlock-options
+
+frob_unlock_SOURCES = \
+	frob-unlock.c \
+	../gcr-viewer-window.c
diff --git a/gcr/tests/frob-certificate.c b/ui/tests/frob-certificate.c
similarity index 100%
rename from gcr/tests/frob-certificate.c
rename to ui/tests/frob-certificate.c
diff --git a/gcr/tests/frob-combo-selector.c b/ui/tests/frob-combo-selector.c
similarity index 100%
rename from gcr/tests/frob-combo-selector.c
rename to ui/tests/frob-combo-selector.c
diff --git a/gcr/tests/frob-gnupg-selector.c b/ui/tests/frob-gnupg-selector.c
similarity index 97%
rename from gcr/tests/frob-gnupg-selector.c
rename to ui/tests/frob-gnupg-selector.c
index 444483e..8e5b9f9 100644
--- a/gcr/tests/frob-gnupg-selector.c
+++ b/ui/tests/frob-gnupg-selector.c
@@ -26,8 +26,9 @@
 #include "gcr/gcr.h"
 #include "gcr/gcr-gnupg-collection.h"
 #include "gcr/gcr-gnupg-key.h"
-#include "gcr/gcr-list-selector-private.h"
-#include "gcr/gcr-live-search.h"
+
+#include "ui/gcr-live-search.h"
+#include "ui/gcr-list-selector-private.h"
 
 #include <gtk/gtk.h>
 
diff --git a/gcr/tests/frob-key.c b/ui/tests/frob-key.c
similarity index 100%
rename from gcr/tests/frob-key.c
rename to ui/tests/frob-key.c
diff --git a/gcr/tests/frob-prompt.c b/ui/tests/frob-prompt.c
similarity index 100%
rename from gcr/tests/frob-prompt.c
rename to ui/tests/frob-prompt.c
diff --git a/gcr/tests/frob-request.c b/ui/tests/frob-request.c
similarity index 98%
rename from gcr/tests/frob-request.c
rename to ui/tests/frob-request.c
index 6447837..10f54a2 100644
--- a/gcr/tests/frob-request.c
+++ b/ui/tests/frob-request.c
@@ -24,7 +24,8 @@
 #include "config.h"
 
 #include "gcr/gcr.h"
-#include "gcr/gcr-certificate-request-renderer.h"
+
+#include "ui/gcr-certificate-request-renderer.h"
 
 #include <gtk/gtk.h>
 
diff --git a/gcr/tests/frob-system-prompt.c b/ui/tests/frob-system-prompt.c
similarity index 100%
rename from gcr/tests/frob-system-prompt.c
rename to ui/tests/frob-system-prompt.c
diff --git a/gcr/tests/frob-tree-selector.c b/ui/tests/frob-tree-selector.c
similarity index 100%
rename from gcr/tests/frob-tree-selector.c
rename to ui/tests/frob-tree-selector.c
diff --git a/gcr/tests/frob-unlock-options.c b/ui/tests/frob-unlock-options.c
similarity index 100%
rename from gcr/tests/frob-unlock-options.c
rename to ui/tests/frob-unlock-options.c
diff --git a/gcr/tests/frob-unlock.c b/ui/tests/frob-unlock.c
similarity index 97%
rename from gcr/tests/frob-unlock.c
rename to ui/tests/frob-unlock.c
index b39f218..5a0bf19 100644
--- a/gcr/tests/frob-unlock.c
+++ b/ui/tests/frob-unlock.c
@@ -24,8 +24,9 @@
 #include "config.h"
 
 #include "gcr/gcr.h"
-#include "gcr/gcr-unlock-renderer.h"
-#include "gcr/gcr-viewer-window.h"
+
+#include "ui/gcr-unlock-renderer.h"
+#include "ui/gcr-viewer-window.h"
 
 #include <gtk/gtk.h>
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]