#
#
# patch "mtn-browse"
# from [ba78e71877d105f0484eb1d505cad36eb161d451]
# to [4a511ca4c8b4a378638344f77104407a4b3a5f45]
#
# patch "mtn-browse.glade"
# from [311b38cbc93fdeaee476ea3cd17d0350da1c37a7]
# to [fb6802ab22bb5380029fa6b296cb3411d47ca826]
#
============================================================
--- mtn-browse ba78e71877d105f0484eb1d505cad36eb161d451
+++ mtn-browse 4a511ca4c8b4a378638344f77104407a4b3a5f45
@@ -277,7 +277,40 @@ sub new_browser_instance()
$browser->{glade}->get_widget("manifest_browser_treeview");
$browser->{file_view_scrolledwindow} =
$browser->{glade}->get_widget("file_view_scrolledwindow");
+ $browser->{file_name_label} =
+ $browser->{glade}->get_widget("file_name_value_label");
+ $browser->{file_id_label} =
+ $browser->{glade}->get_widget("file_id_value_label");
+ $browser->{last_update_label} =
+ $browser->{glade}->get_widget("last_update_value_label");
+ $browser->{file_revision_id_label} =
+ $browser->{glade}->get_widget("file_revision_id_value_label");
+ $browser->{file_button_vbox} =
+ $browser->{glade}->get_widget("file_button_vbox");
+ $browser->{database_name_label} =
+ $browser->{glade}->get_widget("database_name_value_label");
+ $browser->{revision_id_label} =
+ $browser->{glade}->get_widget("revision_id_value_label");
+ $browser->{author_label} =
+ $browser->{glade}->get_widget("author_value_label");
+ $browser->{change_log_label} =
+ $browser->{glade}->get_widget("change_log_value_label");
+ # Setup button sensitive groups.
+
+ $browser->{text_file_sensitive_group} = ();
+ foreach my $item ("search_text", "annotate", "file_compare")
+ {
+ push(@{$browser->{text_file_sensitive_group}},
+ $browser->{glade}->get_widget($item . "_button"));
+ }
+ $browser->{revision_sensitive_group} = ();
+ foreach my $item ("revision_information", "revision_compare")
+ {
+ push(@{$browser->{revision_sensitive_group}},
+ $browser->{glade}->get_widget($item . "_button"));
+ }
+
# Setup the comboboxentry key release signal handlers.
$browser->{branch_combo}->child()->
@@ -878,6 +911,7 @@ sub update_browser_state($$)
$browser->{branch_combo_details}->{completion_cache} = {};
$browser->{branch_combo_details}->{completed} = 0;
$browser->{branch_combo_details}->{value} = "";
+ $browser->{database_name_label}->set_text("");
# Get the new list of branches.
@@ -937,7 +971,7 @@ sub update_browser_state($$)
tags(address@hidden, $browser->{branch_combo_details}->{value});
$browser->{main_appbar}->set_progress_percentage(0.5);
gtk2_update();
- for my $item (@list)
+ foreach my $item (@list)
{
if (! exists($dup_list{$item->{tag}}))
{
@@ -999,6 +1033,9 @@ sub update_browser_state($$)
$browser->{directory_combo_details}->{completed} = 0;
$browser->{directory_combo_details}->{last_typed_len} = 0;
$browser->{directory_combo_details}->{value} = "";
+ $browser->{revision_id_label}->set_text("");
+ $browser->{author_label}->set_text("");
+ $browser->{change_log_label}->set_text("");
# Reset the name of the file being viewed.
@@ -1022,7 +1059,7 @@ sub update_browser_state($$)
. "or use the Advanced Find feature.\n"
. "The matching revision ids are:",
$browser->{revision_combo_details}->{value});
- for my $item (@revision_ids)
+ foreach my $item (@revision_ids)
{
$message .= "\n" . Glib::Markup::escape_text($item);
}
@@ -1040,8 +1077,23 @@ sub update_browser_state($$)
}
else
{
+ my($author,
+ @certs_list,
+ $change_log);
$browser->{mtn}->get_manifest_of(address@hidden,
$revision_ids[0]);
+ $browser->{mtn}->certs(address@hidden, $revision_ids[0]);
+ $author = $change_log = "";
+ foreach my $cert (@certs_list)
+ {
+ $author = $cert->{value}
+ if ($cert->{name} eq "author");
+ $change_log = $cert->{value}
+ if ($cert->{name} eq "changelog");
+ }
+ $browser->{revision_id_label}->set_text($revision_ids[0]);
+ $browser->{author_label}->set_text($author);
+ $browser->{change_log_label}->set_text($change_log);
}
}
$browser->{manifest} = address@hidden;
@@ -1076,6 +1128,11 @@ sub update_browser_state($$)
$browser->{directory_combo}->child()->set_text("");
$browser->{main_appbar}->set_progress_percentage(0);
$browser->{main_appbar}->set_status("");
+ foreach my $widget (@{$browser->{revision_sensitive_group}})
+ {
+ $widget->
+ set_sensitive($browser->{revision_combo_details}->{completed});
+ }
gtk2_update();
}
@@ -1124,9 +1181,9 @@ sub update_browser_state($$)
foreach my $item (@directory_entry_list)
{
- # Get the latest modification time if the entry is a file (caching
- # the result in the manifest for future reference if we have to
- # work it out).
+ # Get the latest modification time and the author if the entry is a
+ # file (caching the result in the manifest for future reference if
+ # we have to work it out).
if ($item->{manifest_entry}->{type} eq "file")
{
@@ -1137,6 +1194,8 @@ sub update_browser_state($$)
(address@hidden,
$revision_ids[0],
$item->{manifest_entry}->{name});
+ $item->{manifest_entry}->{last_changed_revision} =
+ $revision_list[0];
$browser->{mtn}->certs(address@hidden, $revision_list[0]);
$author = $last_update = "";
foreach my $cert (@certs_list)
@@ -1183,9 +1242,10 @@ sub update_browser_state($$)
if ($taking_our_time)
{
$browser->{main_appbar}->set_progress_percentage
- ($counter ++ / scalar(@directory_entry_list));
+ ($counter / scalar(@directory_entry_list));
gtk2_update();
}
+ ++ $counter;
}
@@ -1203,120 +1263,189 @@ sub update_browser_state($$)
if ($changed & DISPLAY_OF_FILE)
{
- my($contents,
- $lang,
- $mime_type,
- $scrolled_window);
+ # Load up the selected file's contents into the file viewer.
- # Reset the file view buffer.
+ if (exists($browser->{file_being_viewed}->{manifest_entry}))
+ {
+ my $manifest_entry;
+ $manifest_entry =
+ $browser->{file_being_viewed}->{manifest_entry};
+ if ($browser->{file_id_label}->get_text()
+ ne $manifest_entry->{file_id})
+ {
- $browser->{file_view_svbuffer}->set_text("");
- $browser->{file_view_svbuffer}->set("highlight", FALSE);
+ my($contents,
+ $lang,
+ $mime_type,
+ $scrolled_window);
- # Load up the selected file's contents into the file viewer.
+ # Reset the file view buffer.
- if (exists($browser->{file_being_viewed}->{short_name}))
- {
+ $browser->{file_button_vbox}->set_sensitive(TRUE);
+ foreach my $widget (@{$browser->{text_file_sensitive_group}})
+ {
+ $widget->set_sensitive(FALSE);
+ }
+ $browser->{file_view_svbuffer}->set_text("");
+ $browser->{file_view_svbuffer}->set("highlight", FALSE);
- # Get contents.
+ # Get contents.
- $browser->{mtn}->get_file
- (\$contents,
- $browser->{file_being_viewed}->{manifest_entry}->{file_id});
+ $manifest_entry =
+ $browser->{file_being_viewed}->{manifest_entry};
+ $browser->{mtn}->get_file(\$contents,
+ $manifest_entry->{file_id});
- # Try and work out the mime type, first based on contents and then
- # based on the file name extension.
+ # Try and work out the mime type, first based on contents and
+ # then based on the file name extension.
- if (! defined($mime_type =
- Gnome2::VFS->get_mime_type_for_data($contents))
- || $mime_type eq "text/plain")
- {
- my $name = $browser->{file_being_viewed}->{short_name};
- foreach my $item (@text_mime_types)
+ if (! defined($mime_type =
+ Gnome2::VFS->get_mime_type_for_data($contents))
+ || $mime_type eq "text/plain")
{
- if ($name =~ m/$item->{pattern}/)
+ my $name = $browser->{file_being_viewed}->{short_name};
+ foreach my $item (@text_mime_types)
{
- $mime_type = $item->{type};
- last;
+ if ($name =~ m/$item->{pattern}/)
+ {
+ $mime_type = $item->{type};
+ last;
+ }
}
}
- }
- # Override some mis-identified types.
+ # Override some mis-identified types.
- $mime_type = "image/svg+xml"
- if ($mime_type eq "text/xml"
- && $browser->{file_being_viewed}->{short_name}
- =~ m/.*\.svg$/o);
+ $mime_type = "image/svg+xml"
+ if ($mime_type eq "text/xml"
+ && $browser->{file_being_viewed}->{short_name}
+ =~ m/.*\.svg$/o);
- # If it's image data then attempt to render it.
+ # If it's image data then attempt to render it.
- if ($mime_type =~ m/^image\/.+$/o)
- {
- eval
+ if ($mime_type =~ m/^image\/.+$/o)
{
- my $loader = Gtk2::Gdk::PixbufLoader->new();
- $loader->write($contents);
- $loader->close();
- $browser->{file_view_svbuffer}->insert_pixbuf
- ($browser->{file_view_svbuffer}->get_start_iter(),
- $loader->get_pixbuf());
- };
- $browser->{file_view_svbuffer}->
- set_text("<" . $mime_type . ">\n") if ($@ ne "");
- }
- else
- {
+ eval
+ {
+ my $loader = Gtk2::Gdk::PixbufLoader->new();
+ $loader->write($contents);
+ $loader->close();
+ $browser->{file_view_svbuffer}->insert_pixbuf
+ ($browser->{file_view_svbuffer}->get_start_iter(),
+ $loader->get_pixbuf());
+ };
+ $browser->{file_view_svbuffer}->
+ set_text("<" . $mime_type . ">\n") if ($@ ne "");
+ }
+ else
+ {
- my $ok_to_render = 0;
+ my $ok_to_render = 0;
- # Attempt to syntax highlight the file if it looks safe.
+ # Attempt to syntax highlight the file if it looks safe.
- if ($mime_type =~ m/^application\/.+$/o)
- {
- my $part;
- ($part) = ($mime_type =~ m/^application\/(.+)$/o);
- foreach my $item (@text_viewable_app_mime_types)
+ if ($mime_type =~ m/^application\/.+$/o)
{
- if ($part eq $item)
+ my $part;
+ ($part) = ($mime_type =~ m/^application\/(.+)$/o);
+ foreach my $item (@text_viewable_app_mime_types)
{
- $ok_to_render = 1;
- last;
+ if ($part eq $item)
+ {
+ $ok_to_render = 1;
+ last;
+ }
}
}
- }
- if ($mime_type =~ m/^text\/.+$/o || $ok_to_render)
- {
- if (defined($lang = $browser->{file_view_svlangmgr}->
- get_language_from_mime_type($mime_type)))
+ if ($mime_type =~ m/^text\/.+$/o || $ok_to_render)
{
- $browser->{file_view_svbuffer}->set("highlight", TRUE);
- $browser->{file_view_svbuffer}->set_language($lang);
+ if (defined($lang = $browser->{file_view_svlangmgr}->
+ get_language_from_mime_type($mime_type)))
+ {
+ $browser->{file_view_svbuffer}->
+ set("highlight", TRUE);
+ $browser->{file_view_svbuffer}->
+ set_language($lang);
+ }
+
+ # Load in the contents.
+
+ $browser->{file_view_svbuffer}->set_text($contents);
+ foreach my $widget
+ (@{$browser->{text_file_sensitive_group}})
+ {
+ $widget->set_sensitive(TRUE);
+ }
}
+ else
+ {
+ $browser->{file_view_svbuffer}->
+ set("highlight", FALSE);
+ $browser->{file_view_svbuffer}->
+ set_text("<" . $mime_type . ">\n");
+ }
- # Load in the contents.
+ }
- $browser->{file_view_svbuffer}->set_text($contents);
+ # Scroll back up to the top left.
+
+ if ($browser->{file_view_scrolledwindow}->realized())
+ {
+ $browser->{file_view_scrolledwindow}->
+ get_vadjustment()->set_value(0);
+ $browser->{file_view_scrolledwindow}->
+ get_hadjustment()->set_value(0);
}
- else
+
+ # Update the file details labels.
+
+ if (! exists($manifest_entry->{last_changed_revision}))
{
- $browser->{file_view_svbuffer}->set("highlight", FALSE);
- $browser->{file_view_svbuffer}->
- set_text("<" . $mime_type . ">\n");
+ my(@certs_list,
+ @revision_ids,
+ @revision_list);
+ get_revision_ids($browser, address@hidden);
+ $browser->{mtn}->
+ get_content_changed(address@hidden,
+ $revision_ids[0],
+ $manifest_entry->{name});
+ $manifest_entry->{last_changed_revision} =
+ $revision_list[0];
+ $browser->{mtn}->certs(address@hidden, $revision_list[0]);
+ foreach my $cert (@certs_list)
+ {
+ if ($cert->{name} eq "date")
+ {
+ my $last_update;
+ $last_update = $cert->{value};
+ $last_update =~ s/T/ /o;
+ $manifest_entry->{last_update} = $last_update;
+ last;
+ }
+ }
}
-
+ $browser->{file_name_label}->set_text($manifest_entry->{name});
+ $browser->{file_id_label}->
+ set_text($manifest_entry->{file_id});
+ $browser->{last_update_label}->
+ set_text($manifest_entry->{last_update});
+ $browser->{file_revision_id_label}->
+ set_text($manifest_entry->{last_changed_revision});
}
+ }
+ else
+ {
- # Scroll back up to the top left.
+ # Reset the file view buffer.
- if ($browser->{file_view_scrolledwindow}->realized())
- {
- $browser->{file_view_scrolledwindow}->
- get_vadjustment()->set_value(0);
- $browser->{file_view_scrolledwindow}->
- get_hadjustment()->set_value(0);
- }
+ $browser->{file_button_vbox}->set_sensitive(FALSE);
+ $browser->{file_view_svbuffer}->set_text("");
+ $browser->{file_view_svbuffer}->set("highlight", FALSE);
+ $browser->{file_name_label}->set_text("");
+ $browser->{file_id_label}->set_text("");
+ $browser->{last_update_label}->set_text("");
+ $browser->{file_revision_id_label}->set_text("");
}
============================================================
--- mtn-browse.glade 311b38cbc93fdeaee476ea3cd17d0350da1c37a7
+++ mtn-browse.glade fb6802ab22bb5380029fa6b296cb3411d47ca826
@@ -393,7 +393,7 @@
False
False
0.5
- 0.5
+ 0.25
0
0
@@ -453,7 +453,7 @@
False
False
0.5
- 0.5
+ 0.25
0
0
@@ -687,7 +687,7 @@ with another revision
False
False
0.5
- 0.5
+ 0.25
0
0
@@ -882,7 +882,7 @@ with another revision
Name of the file being displayed
1
1
- 0 0 96 10 86.4 96
+ 0 0 79 10 71.1 79
0 0 17 10 15.3 17
@@ -934,7 +934,7 @@ with another revision
Date of when file was last changed
1
1
- 0 0 96 10 86.4 96
+ 0 0 79 10 71.1 79
0 0 17 10 15.3 17
@@ -1069,7 +1069,7 @@ updated with respect to this revision
File's unique id in database
1
1
- 0 0 101 10 90.9 101
+ 0 0 84 10 75.6 84
0 0 17 10 15.3 17
@@ -1122,7 +1122,7 @@ file was last changed
file was last changed
1
1
- 0 0 101 10 90.9 101
+ 0 0 84 10 75.6 84
0 0 17 10 15.3 17
@@ -1330,7 +1330,7 @@ last updated with respect to this revisi
True
Load file contents
-into an editor
+into a viewer
True
GTK_RELIEF_NORMAL
True
@@ -1544,12 +1544,13 @@ with another version
0
0
True
+ True
False
False
GTK_JUSTIFY_LEFT
False
- False
+ True
0
0.5
0
@@ -1594,12 +1595,13 @@ with another version
0
0
True
+ True
False
False
GTK_JUSTIFY_LEFT
False
- False
+ True
0
0.5
0
@@ -1726,12 +1728,13 @@ with another version
0
0
True
+ True
False
False
GTK_JUSTIFY_LEFT
False
- False
+ True
0
0.5
0
@@ -1776,12 +1779,13 @@ with another version
0
0
True
+ True
False
False
GTK_JUSTIFY_LEFT
False
- False
+ True
0
0.5
0