#
#
# patch "mtn-browse"
# from [779942d7f6298eb79232ec8da1a9bea3e12cca3f]
# to [ae1efebc4b7566b18bbb4bda9030e571fe7bd693]
#
# patch "mtn-browse.glade"
# from [860543eeee16c501c6b23eb32f89c04c5128ca06]
# to [7473eb8e208f212a0d8ce2c779a33f11a05d6263]
#
============================================================
--- mtn-browse 779942d7f6298eb79232ec8da1a9bea3e12cca3f
+++ mtn-browse ae1efebc4b7566b18bbb4bda9030e571fe7bd693
@@ -189,10 +189,12 @@ sub create_advanced_find_window();
sub combo_changed_cb($$);
sub combo_key_release_event_cb($$$);
sub create_advanced_find_window();
+sub create_format_tags($);
sub delete_event_cb($$$);
sub destroy_event_cb($$;$);
sub directory_up_button_clicked_cb($$);
-sub generate_revision_report($$$);
+sub display_change_log($);
+sub generate_revision_report($$$$);
sub get_completion($$$$;$);
sub get_dir_contents($$$);
sub get_revision_ids($$);
@@ -209,6 +211,7 @@ sub simple_query_radiobutton_toggled_cb(
sub setup_sigchld_handler($);
sub sigchld_handler();
sub simple_query_radiobutton_toggled_cb($$);
+sub revision_information_button_clicked_cb($$);
sub term_combobox_changed_cb($$);
sub update_advanced_find_state($$);
sub update_browser_state($$);
@@ -281,13 +284,13 @@ sub new_browser_instance()
my($browser,
$font,
+ $image,
$renderer,
$tv_column,
$div);
$browser = {};
$browser->{mtn} = Monotone::AutomateStdio->new();
- # $browser->{glade} = Gtk2::GladeXML->new("../mtn-browse.glade");
$browser->{glade} =
Gtk2::GladeXML->new("../mtn-browse.glade", "main_window");
@@ -349,7 +352,7 @@ sub new_browser_instance()
$browser->{change_log_label} =
$browser->{glade}->get_widget("change_log_value_label");
- # Setup button sensitive groups.
+ # Setup button sensitivity groups.
$browser->{text_file_sensitive_group} = ();
foreach my $item ("search_text", "annotate", "file_compare")
@@ -408,6 +411,9 @@ sub new_browser_instance()
$browser->{manifest_treeview}->set_model($browser->{manifest_liststore});
$tv_column = Gtk2::TreeViewColumn->new();
+ $image = Gtk2::Image->new_from_stock("gtk-file", "menu");
+ $image->show_all();
+ $tv_column->set_widget($image);
$tv_column->set_resizable(FALSE);
$tv_column->set_sizing("fixed");
$tv_column->set_fixed_width(25);
@@ -719,8 +725,8 @@ sub tagged_checkbutton_toggled_cb($$)
#
# Routine - advanced_find_button_clicked_cb
#
-# Description - Callback routine called when the user clicks on the up
-# directory button.
+# Description - Callback routine called when the user clicks on the
+# advanced find button.
#
# Data - $widget : The widget object that received the signal.
# $browser : The browser instance that is associated with
@@ -789,6 +795,33 @@ sub advanced_find_button_clicked_cb($$)
#
##############################################################################
#
+# Routine - revision_information_button_clicked_cb
+#
+# Description - Callback routine called when the user clicks on the
+# revision information button.
+#
+# Data - $widget : The widget object that received the signal.
+# $browser : The browser instance that is associated with
+# this widget.
+#
+##############################################################################
+
+
+
+sub revision_information_button_clicked_cb($$)
+{
+
+ my($widget, $browser) = @_;
+
+ return if ($browser->{in_cb});
+ local $browser->{in_cb} = 1;
+
+ display_change_log($browser);
+
+}
+#
+##############################################################################
+#
# Routine - directory_up_button_clicked_cb
#
# Description - Callback routine called when the user clicks on the up
@@ -1597,12 +1630,7 @@ sub create_advanced_find_window()
# Setup the revision details viewer.
$instance->{details_buffer} = $instance->{details_textview}->get_buffer();
- $instance->{details_buffer}->create_tag("bold",
- weight => PANGO_WEIGHT_BOLD);
- $instance->{details_buffer}->create_tag("italics", style => "italic");
- $instance->{details_buffer}->create_tag("bold-italics",
- weight => PANGO_WEIGHT_BOLD,
- style => "italic");
+ create_format_tags($instance->{details_textview}->get_buffer());
$font = Gtk2::Pango::FontDescription->from_string("monospace 10");
$instance->{details_textview}->modify_font($font) if (defined($font));
@@ -1612,6 +1640,94 @@ sub create_advanced_find_window()
#
##############################################################################
#
+# Routine - display_change_log
+#
+# Description - Displays the change log dialog window for the specified
+# revision.
+#
+# Data - $browser : The browser instance that started the
+# advanced find.
+#
+##############################################################################
+
+
+
+sub display_change_log($)
+{
+
+ my($browser) = @_;
+
+ my (@certs_list,
+ $font,
+ $instance,
+ @revision_details,
+ @revision_ids);
+
+ $instance = {};
+ $instance->{glade} =
+ Gtk2::GladeXML->new("../mtn-browse.glade", "changelog_window");
+
+ # Connect Glade registered signal handlers.
+
+ $instance->{glade}->signal_autoconnect
+ (sub {
+ my($callback_name, $widget, $signal_name, $signal_data,
+ $connect_object, $after, $user_data) = @_;
+ my $func = $after ? "signal_connect_after" : "signal_connect";
+ $widget->$func($signal_name,
+ $callback_name,
+ $connect_object ? $connect_object : $user_data); },
+ $instance);
+
+ # Get the widgets that we are interested in.
+
+ $instance->{window} =
+ $instance->{glade}->get_widget("changelog_window");
+ $instance->{window}->set_icon($app_icon);
+ $instance->{window}->set_title
+ ("Revision " . $browser->{revision_combo_details}->{value});
+ $instance->{changelog_textview} =
+ $instance->{glade}->get_widget("changelog_textview");
+ $instance->{changelog_scrolledwindow} =
+ $instance->{glade}->get_widget("changelog_scrolledwindow");
+
+ # Setup the changelog window deletion handler.
+
+ $instance->{window}->signal_connect
+ ("delete_event", sub { $_[0]->destroy(); return TRUE; });
+
+ # Setup the revision changelog viewer.
+
+ $instance->{changelog_buffer} =
+ $instance->{changelog_textview}->get_buffer();
+ create_format_tags($instance->{changelog_buffer});
+ $font = Gtk2::Pango::FontDescription->from_string("monospace 10");
+ $instance->{changelog_textview}->modify_font($font) if (defined($font));
+
+ # Get the currently selected revision id.
+
+ get_revision_ids($browser, address@hidden);
+
+ # Put the details into the text view and display it.
+
+ $instance->{changelog_buffer}->set_text("");
+ $browser->{mtn}->certs(address@hidden, $revision_ids[0]);
+ $browser->{mtn}->get_revision(address@hidden, $revision_ids[0]);
+ generate_revision_report($instance->{changelog_buffer},
+ $revision_ids[0],
+ address@hidden,
+ address@hidden);
+ if ($instance->{changelog_scrolledwindow}->realized())
+ {
+ $instance->{changelog_scrolledwindow}->get_vadjustment()->set_value(0);
+ $instance->{changelog_scrolledwindow}->get_hadjustment()->set_value(0);
+ }
+ $instance->{window}->show_all();
+
+}
+#
+##############################################################################
+#
# Routine - update_browser_state
#
# Description - Update the display of the specified browser instance
@@ -2509,6 +2625,8 @@ sub update_advanced_find_state($$)
my ($branch,
@certs_list,
@revision_details);
+
+ $advanced_find->{details_buffer}->set_text("");
$advanced_find->{mtn}->certs
(address@hidden,
$advanced_find->{revisions_treeview_details}->{value});
@@ -2517,6 +2635,7 @@ sub update_advanced_find_state($$)
$advanced_find->{revisions_treeview_details}->{value});
generate_revision_report
($advanced_find->{details_buffer},
+ $advanced_find->{revisions_treeview_details}->{value},
address@hidden,
address@hidden);
@@ -2574,6 +2693,8 @@ sub update_advanced_find_state($$)
#
# Data - $text_buffer : The Gtk2::TextBuffer that is to be
# populated.
+# $revision_id : The id of the revision being reported
+# on.
# $certs_list : A reference to a certs list as returned
# by $mtn->certs().
# $revision_details : A reference to a revision details list
@@ -2583,10 +2704,10 @@ sub update_advanced_find_state($$)
-sub generate_revision_report($$$)
+sub generate_revision_report($$$$)
{
- my($text_buffer, $certs_list, $revision_details) = @_;
+ my($text_buffer, $revision_id, $certs_list, $revision_details) = @_;
my($change_log,
$manifest_id,
@@ -2597,9 +2718,16 @@ sub generate_revision_report($$$)
my @types =
("Added", "Removed", "Changed", "Renamed", "Attributes");
- # Pretty print it into the text buffer.
+ # Revision id.
- $text_buffer->set_text("");
+ $text_buffer->insert_with_tags_by_name($text_buffer->get_end_iter(),
+ "Revision id: ",
+ "bold");
+ $text_buffer->insert($text_buffer->get_end_iter(),
+ $revision_id . "\n\n");
+
+ # Certs.
+
foreach my $cert (@$certs_list)
{
if ($cert->{name} eq "changelog")
@@ -2618,10 +2746,16 @@ sub generate_revision_report($$$)
sprintf("%s\n", $cert->{value}));
}
}
+
+ # Change log.
+
$text_buffer->insert_with_tags_by_name
($text_buffer->get_end_iter(), "\nChange Log:\n", "bold");
$text_buffer->insert($text_buffer->get_end_iter(),
sprintf("%s\n", $change_log));
+
+ # Revision details.
+
$text_buffer->insert_with_tags_by_name($text_buffer->get_end_iter(),
"\nChanges Made:\n", "bold");
foreach my $type (@types)
@@ -2692,6 +2826,9 @@ sub generate_revision_report($$$)
}
}
}
+
+ # Parent revision and manifest ids.
+
$text_buffer->insert_with_tags_by_name($text_buffer->get_end_iter(),
"\nParent revision id(s):\t",
"bold");
@@ -3086,7 +3223,6 @@ sub make_busy($$)
if (! exists($instance->{busy_cursor}))
{
- $instance->{normal_cursor} = Gtk2::Gdk::Cursor->new("left-ptr");
$instance->{busy_cursor} = Gtk2::Gdk::Cursor->new("watch");
}
@@ -3101,8 +3237,7 @@ sub make_busy($$)
}
else
{
- $instance->{window}->window()->
- set_cursor($instance->{normal_cursor});
+ $instance->{window}->window()->set_cursor(undef);
Gtk2->grab_remove($instance->{appbar});
}
@@ -3135,6 +3270,33 @@ sub gtk2_update()
#
##############################################################################
#
+# Routine - create_format_tags
+#
+# Description - Creates the Gtk2::TextBuffer tags that are used to pretty
+# print stuff.
+#
+# Data - $text_view : The GTK2::TextBuffer widget that is to have
+# its tags created.
+#
+##############################################################################
+
+
+
+sub create_format_tags($)
+{
+
+ my ($text_buffer) = @_;
+
+ $text_buffer->create_tag("bold", weight => PANGO_WEIGHT_BOLD);
+ $text_buffer->create_tag("italics", style => "italic");
+ $text_buffer->create_tag("bold-italics",
+ weight => PANGO_WEIGHT_BOLD,
+ style => "italic");
+
+}
+#
+##############################################################################
+#
# Routine - set_label_value
#
# Description - Set the text for the given label and the tooltip for the
============================================================
--- mtn-browse.glade 860543eeee16c501c6b23eb32f89c04c5128ca06
+++ mtn-browse.glade 7473eb8e208f212a0d8ce2c779a33f11a05d6263
@@ -555,6 +555,7 @@ criteria for selecting a revisionTrue
GTK_RELIEF_NORMAL
True
+
@@ -2753,7 +2754,7 @@ Tag
True
GTK_JUSTIFY_LEFT
GTK_WRAP_NONE
- True
+ False
0
0
0
@@ -3181,4 +3182,96 @@ Tag
+
+ True
+
+ GTK_WINDOW_TOPLEVEL
+ GTK_WIN_POS_NONE
+ False
+ 550
+ 550
+ True
+ False
+ True
+ False
+ False
+ GDK_WINDOW_TYPE_HINT_NORMAL
+ GDK_GRAVITY_NORTH_WEST
+
+
+
+ 5
+ True
+ 0
+ 0.5
+ GTK_SHADOW_ETCHED_IN
+
+
+
+ True
+ 0.5
+ 0.5
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+
+
+
+ 5
+ True
+ True
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+ GTK_SHADOW_IN
+ GTK_CORNER_TOP_LEFT
+
+
+
+ True
+ True
+ False
+ False
+ True
+ GTK_JUSTIFY_LEFT
+ GTK_WRAP_NONE
+ False
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+ True
+ <b>Change Log</b>
+ False
+ True
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+
+
+ label_item
+
+
+
+
+
+