From f98747ecae5be274c3d31e02f3c1baa75a0fe371 Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@helsinki.at>
Date: Tue, 4 May 2010 11:03:33 +0000
Subject: proper handling of empty dropbox list


diff --git a/rhimport b/rhimport
index 8d70c9e..20a814f 100755
--- a/rhimport
+++ b/rhimport
@@ -136,6 +136,20 @@ sub set_mode_file_gui()
   $filechooser->set_filter($filter);
 }
 
+sub set_mode_disabled_gui()
+{
+  if(!$guixml) {
+    print STDERR "no GUI definition found!\n";
+    exit 2;
+  }
+
+  my @widgets = ('b_mode', 'cb_clear_carts', 'b_showcarts', 'b_apply', 'filechooser');
+  for my $w ( @widgets ) {
+    my $widget = $guixml->get_widget($w);
+    $widget->set_sensitive(0) if($widget);
+  }
+}
+
 sub toggle_mode_gui()
 {
   if(!$guixml) {
@@ -144,7 +158,7 @@ sub toggle_mode_gui()
   }
 
   my $co_dropbox = $guixml->get_widget('co_dropbox');
-  my $to_cart = $allowed_dbs[$co_dropbox->get_active]->{'TO_CART'};
+  my $to_cart = $allowed_dbs[$co_dropbox->get_active]->{'TO_CART'} if($allowed_dbs[$co_dropbox->get_active]);
 
   my $response = 'no';
   if(($to_cart == 0 && $POOL) ||
@@ -253,9 +267,9 @@ sub start_import_gui()
   $filechooser->unselect_all;
 
   my $co_dropbox = $guixml->get_widget('co_dropbox');
-  my $dropbox = $allowed_dbs[$co_dropbox->get_active]->{'PATH'};
-  my $group = $allowed_dbs[$co_dropbox->get_active]->{'GROUP'};
-  my $to_cart = $allowed_dbs[$co_dropbox->get_active]->{'TO_CART'};
+  my $dropbox = $allowed_dbs[$co_dropbox->get_active]->{'PATH'} if ($allowed_dbs[$co_dropbox->get_active]);
+  my $group = $allowed_dbs[$co_dropbox->get_active]->{'GROUP'} if ($allowed_dbs[$co_dropbox->get_active]);
+  my $to_cart = $allowed_dbs[$co_dropbox->get_active]->{'TO_CART'} if($allowed_dbs[$co_dropbox->get_active]);
 
   $l_status->set_label("importiere von $file");
 
@@ -312,7 +326,7 @@ sub show_used_carts_gui()
   }
 
   my $co_dropbox = $guixml->get_widget('co_dropbox');
-  my $group = $allowed_dbs[$co_dropbox->get_active]->{'GROUP'};
+  my $group = $allowed_dbs[$co_dropbox->get_active]->{'GROUP'} if($allowed_dbs[$co_dropbox->get_active]);
 
 
   my $l_status = $guixml->get_widget('l_status');
@@ -352,14 +366,18 @@ sub dropbox_updated_gui()
   }
 
   my $co_dropbox = $guixml->get_widget('co_dropbox');
-  my $to_cart = $allowed_dbs[$co_dropbox->get_active]->{'TO_CART'};
-  my $group = $allowed_dbs[$co_dropbox->get_active]->{'GROUP'};
-  my ($low_cart, $high_cart) = rhimport::get_cart_range($dbh, $group);
-
-  if($to_cart == 0) {
-    set_mode_playlist_gui();
+  if($allowed_dbs[$co_dropbox->get_active]) {
+    my $to_cart = $allowed_dbs[$co_dropbox->get_active]->{'TO_CART'};
+    my $group = $allowed_dbs[$co_dropbox->get_active]->{'GROUP'};
+    my ($low_cart, $high_cart) = rhimport::get_cart_range($dbh, $group);
+    
+    if($to_cart == 0) {
+      set_mode_playlist_gui();
+    } else {
+      set_mode_file_gui();
+    }
   } else {
-    set_mode_file_gui();
+    set_mode_disabled_gui();
   }
 }
 
-- 
cgit v0.10.2