* finding or making bugger--dev--0.1--base-0
* build reference tree for chris@nullcode.org--2005--bugger/bugger--dev--0.1--base-0
* from import revision: chris@nullcode.org--2005--bugger/bugger--dev--0.1--base-0
* finding or making bugger--dev--0.1--patch-2
* build reference tree for chris@nullcode.org--2005--bugger/bugger--dev--0.1--patch-2
* from import revision: chris@nullcode.org--2005--bugger/bugger--dev--0.1--base-0
* patching for revision: chris@nullcode.org--2005--bugger/bugger--dev--0.1--patch-1
* patching for revision: chris@nullcode.org--2005--bugger/bugger--dev--0.1--patch-2
* computing changeset
A  {arch}/bugger/bugger--dev/bugger--dev--0.1/chris@nullcode.org--2005--bugger/patch-log/patch-1
A  {arch}/bugger/bugger--dev/bugger--dev--0.1/chris@nullcode.org--2005--bugger/patch-log/patch-2
M  bugger.pl
* changeset report
* added files

    {arch}/bugger/bugger--dev/bugger--dev--0.1/chris@nullcode.org--2005--bugger/patch-log/patch-1
    {arch}/bugger/bugger--dev/bugger--dev--0.1/chris@nullcode.org--2005--bugger/patch-log/patch-2

* modified files

--- orig/bugger.pl
+++ mod/bugger.pl
@@ -4,8 +4,10 @@
 use Glib ':constants';
 use Gtk2;
 use Gtk2::Helper;
+use Gtk2::Pango; # pango constants
 use HTTP::Request;
 use LWP::UserAgent;
+use Mail::MboxParser;
 # use Data::Dumper;
 
 use constant NUMBER => 100;
@@ -14,14 +16,15 @@
 use constant SEVERITY => 103;
 use constant MERGED => 104;
 use constant SUBMITTER => 105;
-
+use constant TAG => 106;
 my %field_map = (
 	debbugsID => NUMBER,
 	debbugsState => STATE,
 	debbugsTitle => TITLE,
 	debbugsSeverity => SEVERITY,
 	debbugsMergedWith => MERGED,
-	debbugsSubmitter => SUBMITTER
+	debbugsSubmitter => SUBMITTER,
+	debbugsTag => TAG
 );
 
 Gtk2->init;
@@ -33,23 +36,32 @@
 $window->set_default_size(640, 480);
 $window->set_title("Bugger!");
 
+my $menu = new Gtk2::Menu();
+my $menu_quit = new Gtk2::MenuItem('Quit');
+$menu_quit->show();
+$menu->append($menu_quit);
+
+my $bugger_menu = new Gtk2::MenuItem('Bugger!');
+$bugger_menu->set_submenu($menu);
+$bugger_menu->show();
+
+my $menubar = new Gtk2::MenuBar();
 # Layout tree of this program
 my $vbox = Gtk2::VBox->new;
 	my $paned = Gtk2::VPaned->new;
 		my $scwin = Gtk2::ScrolledWindow->new;
 			my $tv = Gtk2::TreeView->new;
 			my $model = Gtk2::TreeStore->new ('Glib::String', 'Glib::String', 'Glib::String', 'Glib::String', 'Glib::Boolean');
-
 		my $vbox_message = Gtk2::VBox->new;
 			my $message_submitter = Gtk2::Label->new;
 			my $scwin_message = Gtk2::ScrolledWindow->new;
 				my $textview = Gtk2::TextView->new;
 					my $tvbuf = $textview->get_buffer();
 					my $font_tag = $tvbuf->create_tag('font', 'font', 'monospace 9');
+					my $bold_tag = $tvbuf->create_tag("bold", 'font' => 'monospace 9', 'weight' => PANGO_WEIGHT_BOLD);
 	my $bottom_hbox = Gtk2::HBox->new;
 		my $pkglabel = Gtk2::Label->new('Source package:');
 		my $srcpkg = Gtk2::Entry->new;
-		my $button_quit = Gtk2::Button->new ('Quit');
 # end layout tree
 
 $scwin->add($tv);
@@ -58,6 +70,11 @@
 $scwin_message->set_policy('automatic', 'automatic');
 
 $paned->add1($scwin);
+
+$vbox->pack_start ($menubar, 0, 0, 0);
+# This menu stuff will be cleaned up
+$menubar->show();
+$menubar->append($bugger_menu);
 $vbox_message->pack_start($message_submitter, FALSE, TRUE, 0);
 $vbox_message->pack_start($scwin_message, TRUE, TRUE, 0);
 $paned->add2($vbox_message);
@@ -69,7 +86,6 @@
 
 $bottom_hbox->pack_start($pkglabel, TRUE, TRUE, 0);
 $bottom_hbox->pack_start($srcpkg, TRUE, TRUE, 0);
-$bottom_hbox->pack_start($button_quit, TRUE, TRUE, 0);
 
 $textview->set_editable(FALSE);
 
@@ -82,21 +98,26 @@
 		("Severity / Bug#", Gtk2::CellRendererText->new, text => 0));
 $tv->append_column
 	(Gtk2::TreeViewColumn->new_with_attributes
-		("Title", Gtk2::CellRendererText->new, text => 1));
+		("Tags", Gtk2::CellRendererText->new, text => 1));
 $tv->append_column
 	(Gtk2::TreeViewColumn->new_with_attributes
-		("Submitter", Gtk2::CellRendererText->new, text => 2));
+		("Title", Gtk2::CellRendererText->new, text => 2));
+$tv->append_column
+	(Gtk2::TreeViewColumn->new_with_attributes
+		("Submitter", Gtk2::CellRendererText->new, text => 3));
 
-$button_quit->signal_connect(clicked => \&go_away);
+$menu_quit->signal_connect(activate => \&go_away);
 $window->signal_connect(delete_event => \&go_away);
 
 my %sevs;
 my %parentbugs;
 my %display_as_merged;
 
-# Allow multiple selections
-$tv->get_selection->set_mode('extended');
+# Allow multiple selections TODO: This seems pretty broken. That and why do
+# we want to select multiple bugs? -chris
+#$tv->get_selection->set_mode('extended');
 
+# TODO: This sub needs moved to Bugger::UI when that change occurs
 $tv->signal_connect('row-activated' => sub {
 	my $iter = $tv->get_selection->get_selected;
 	my ($this_bug, $submitter) = $model->get($iter, 0, 2);
@@ -109,9 +130,20 @@
 	my $text;
 	if ($response->is_success) { $text = $response->content; }
 	else { $text = "Could not download mbox for $this_bug."; }
-	
 	$tvbuf->set_text("");
-	$tvbuf->insert_with_tags($tvbuf->get_start_iter, $text, $font_tag);
+	
+    
+	# This is pretty self-explanatory
+	my $mb = Mail::MboxParser->new(\$text, decode => 'ALL');
+
+    while (my $msg = $mb->next_message) {
+		my $from = "From: " . $msg->header->{from} . "\n";
+        my $subject = "Subject: " . $msg->header->{subject} . "\n\n";
+		my $body = $msg->body($msg->find_body,0);
+		$tvbuf->insert_with_tags($tvbuf->get_end_iter, $from, $bold_tag);
+		$tvbuf->insert_with_tags($tvbuf->get_end_iter, $subject, , $bold_tag);
+		$tvbuf->insert_with_tags($tvbuf->get_end_iter, $body . "\n\n", $font_tag);
+    }	
 });
 
 $srcpkg->signal_connect(activate => sub { 
@@ -126,7 +158,7 @@
 	my %this_bug = ();
 	my $first = 1;
 	
-	$pid = open LDAP, "ldapsearch -x -h bugs.debian.org -b dc=bugs,dc=debian,dc=org \\(debbugsSourcePackage=$package\\) debbugsID debbugsState debbugsTitle debbugsSeverity debbugsMergedWith debbugsSubmitter|";
+	$pid = open LDAP, "ldapsearch -x -h bugs.debian.org -b dc=bugs,dc=debian,dc=org \\(debbugsSourcePackage=$package\\) debbugsID debbugsState debbugsTitle debbugsSeverity debbugsMergedWith debbugsSubmitter debbugsTag|";
 	
 	my $tag;
 	$tag = Gtk2::Helper->add_watch (fileno(LDAP), 'in', sub {
@@ -188,8 +220,9 @@
 
 						$model->set($row,
 							0, $this_bug{'number'},
-							1, $this_bug{'title'},
-							2, $this_bug{'submitter'});
+							1, $this_bug{'tag'},
+							2, $this_bug{'title'},
+							3, $this_bug{'submitter'});
 					}
 					
 					%this_bug = ();
@@ -217,6 +250,8 @@
 					push @{$this_bug{'mergedwith'}}, $val;
 				} elsif ($field == SUBMITTER) {
 					$this_bug{'submitter'} = $val;
+				} elsif ($field == TAG) {
+					$this_bug{'tag'} = $val;
 				}
 			}
 		}



