Make the marginal UI conditional on the presence of the Gtk2 perl module (closes...
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Tue, 12 Oct 2010 03:36:10 +0000 (23:36 -0400)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Tue, 12 Oct 2010 03:36:10 +0000 (23:36 -0400)
Changelog
Crypt/Monkeysphere/MSVA/MarginalUI.pm

index 478d8e5419446529ec1732bf8b0f0b40c00df997..d885931f5296ac34dc4e60bcf136373f3c03ff93 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -4,6 +4,9 @@ msva-perl (0.5~pre) unstable; urgency=low
     from ${GNUPGHOME}/gpg.conf if that file exists. (addresses MS #2080)
   * Under Linux, report details about the requesting process if we can
     learn them from /proc (closes MS #2005)
+  * Conditionally rely on Gtk2 perl module -- no marginal UI without it,
+    but you can also install the MSVA now without needing to pull in a
+    bunch of Gtk libs (closes MS #2514)
 
  -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Mon, 11 Oct 2010 16:02:22 -0400
 
index f49d58a93395e8627688a9d066bee9a8adf2cf87..f840c24fb0ceebbdfe07f4f6a97fefae7bb0d93a 100755 (executable)
@@ -26,9 +26,9 @@
   use strict;
   use warnings;
 
-  use Gtk2;
   use Crypt::Monkeysphere::MSVA qw( msvalog );
   use IO::File;
+  use Module::Load::Conditional;
 
   sub ask_the_user {
     my $self = shift;
     my @subvalid_key_fprs = @{$fprs};
 
     msvalog('debug', "%d subvalid_key_fprs\n", $#subvalid_key_fprs+1);
+
+    if (! Module::Load::Conditional::can_load('modules' => { 'Gtk2' => undef })) {
+      msvalog('info', "Gtk2 Perl module is unavailable, so no marginal UI presented\n");
+      return 0;
+    }
+
+
     foreach my $keyfpr (@subvalid_key_fprs) {
       my $fprx = sprintf('0x%.40s', $keyfpr->{fpr}->as_hex_string);
       msvalog('debug', "checking on %s\n", $fprx);
@@ -164,6 +171,7 @@ GnuPG calculated validity for the peer: %s",
     my $labeltxt = shift;
     my $tip = shift;
 
+    require Gtk2;
     Gtk2->init();
     # create a new dialog with some buttons - one stock, one not.
     my $dialog = Gtk2::Dialog->new(sprintf('Monkeysphere validation agent [%s]', $peer),