Disable plugins not configured
authorRicardo Mones <ricardo@mones.org>
Thu, 15 Sep 2016 23:35:59 +0000 (01:35 +0200)
committerRicardo Mones <ricardo@mones.org>
Thu, 15 Sep 2016 23:35:59 +0000 (01:35 +0200)
clawsker

index 84473fe..5df31fe 100755 (executable)
--- a/clawsker
+++ b/clawsker
@@ -245,6 +245,9 @@ my $ALTCONFIGDIR = FALSE;
 my $CONFIGDIR = $ENV{HOME} . '/.claws-mail/';
 my $CONFIGRC = 'clawsrc';
 my $ACCOUNTRC = 'accountrc';
+# supported and available plugins lists
+my @PLUGINS = qw(AttRemover Libravatar ManageSieve PerlPlugin);
+my @AVPLUGINS = ();
 
 # index constants for preference arrays
 use constant NAME  => 0; # the name on the rc file
@@ -1918,26 +1921,37 @@ sub new_accounts_page() {
 );
 
 sub new_plugins_page() {
-    return new_vbox_pack (
+    my %frame = ();
+    $frame{'AttRemover'} =
                 new_subpage_frame (
                      new_hbox_pack (
                           new_text_box_for_int (\%pr::plu, 'arm_winw', $PLHPVALUE{'AttRemover'}),
                           new_text_box_for_int (\%pr::plu, 'arm_winh', $PLHPVALUE{'AttRemover'})),
-                     _('Attachment remover'), 'not-packed'),
+                     _('Attachment remover'), 'not-packed');
+    $frame{'ManageSieve'} =
                 new_subpage_frame (
                      new_hbox_pack (
                           new_text_box_for_int (\%pr::plu, 'msv_winw', $PLHPVALUE{'ManageSieve'}),
                           new_text_box_for_int (\%pr::plu, 'msv_winh', $PLHPVALUE{'ManageSieve'})),
-                     _('Sieve manager'), 'not-packed'),
+                     _('Sieve manager'), 'not-packed');
+    $frame{'Libravatar'} =
                 new_subpage_frame (
                      new_hbox_pack (
                           new_text_box_for_nchar (\%pr::plu, 'lav_burl', $PLHPVALUE{'Libravatar'})),
-                     _('Libravatar'), 'not-packed'),
+                     _('Libravatar'), 'not-packed');
+    $frame{'PerlPlugin'} =
                 new_subpage_frame (
                      new_hbox_pack (
                           new_selection_box_for (\%pr::plu, 'prl_flvb', $PLHPVALUE{'PerlPlugin'})),
-                     _('Perl'), 'not-packed')
-           );
+                     _('Perl'), 'not-packed');
+    foreach (@PLUGINS) {
+        $frame{$_}->set_sensitive (defined $PLHPVALUE{$_});
+    }
+    return new_vbox_pack (
+                $frame{'AttRemover'},
+                $frame{'ManageSieve'},
+                $frame{'Libravatar'},
+                $frame{'PerlPlugin'});
 }
 
 # version info
@@ -2052,7 +2066,9 @@ sub init_plu_hidden_preferences {
     foreach my $key (keys %pr::plu) {
         my $plugin = $pr::plu{$key}[PLUGIN];
         my $pname = $pr::plu{$key}[NAME];
-        $PLHPVALUE{$plugin}{$pname} = $PLPREFS{$plugin}{$pname};
+        if (defined $PLPREFS{$plugin}) {
+            $PLHPVALUE{$plugin}{$pname} = $PLPREFS{$plugin}{$pname};
+        }
     }
     return TRUE;
 }
@@ -2132,9 +2148,12 @@ sub load_preferences {
     foreach (keys %{$CONFIGDATA->{'Common'}}) {
         $PREFS{$_} = $CONFIGDATA->{'Common'}{$_};
     }
-    foreach my $plugin (qw(AttRemover Libravatar ManageSieve PerlPlugin)) {
-        foreach (keys %{$CONFIGDATA->{$plugin}}) {
-            $PLPREFS{$plugin}{$_} = $CONFIGDATA->{$plugin}{$_};
+    foreach my $plugin (@PLUGINS) {
+        if (defined $CONFIGDATA->{$plugin}) {
+            push (@AVPLUGINS, $plugin);
+            foreach (keys %{$CONFIGDATA->{$plugin}}) {
+                $PLPREFS{$plugin}{$_} = $CONFIGDATA->{$plugin}{$_};
+            }
         }
     }
     return TRUE;
@@ -2169,7 +2188,7 @@ sub save_preferences {
             $CONFIGDATA->{'Common'}{$_} = $HPVALUE{$_};
         }
     }
-    foreach my $plugin (qw(AttRemover Libravatar ManageSieve PerlPlugin)) {
+    foreach my $plugin (@AVPLUGINS) {
         foreach (keys %{$CONFIGDATA->{$plugin}}) {
             if (defined $PLHPVALUE{$plugin}{$_}) {
                 $CONFIGDATA->{$plugin}{$_} = $PLHPVALUE{$plugin}{$_};