#
#
# patch "AdvancedFind.pm"
# from [8bf4995aaee6880d46d7352170a299e43aa23053]
# to [4e025d82592fe98cdb9e1df31ac1dbe2278468ba]
#
# patch "Annotate.pm"
# from [7cee86fa814a8ec2d79ee9284ed150010ec560d2]
# to [abaefdb3414d1ed69ef1f8129263d2a03cc7ac40]
#
# patch "FindText.pm"
# from [97a85e65c2990934ed5a983f50bf3851da1cb0ce]
# to [4c2dc62b2849560aeb391b55b864c9b4c2da4fc7]
#
# patch "History.pm"
# from [7923dcc1bfcb958b514b5af9fec270960b99d2f3]
# to [b5af4e8073eac3e228920a6d2692a972e73e07f0]
#
# patch "Utilities.pm"
# from [ddd6c902f8cf6ef5010e29a94cebb3ec0c6f1490]
# to [450ecc0dbbd4e283c632819a4c7635c8f568d43c]
#
# patch "mtn-browse"
# from [afac3c8857a6b966adf2b4d3040d5348e21d418d]
# to [d636ebae821c37c437b7eb4e743e71650c3018d7]
#
# patch "mtn-browse.glade"
# from [3e8b88ffa5f961df8231705c8e1b25c4029ff920]
# to [ed03f710e7da03d40189c0a0aa689a620f81c5d5]
#
============================================================
--- AdvancedFind.pm 8bf4995aaee6880d46d7352170a299e43aa23053
+++ AdvancedFind.pm 4e025d82592fe98cdb9e1df31ac1dbe2278468ba
@@ -44,12 +44,6 @@ use strict;
use strict;
-# ***** GLOBAL DATA DECLARATIONS *****
-
-# The type of window that is going to be managed by this module.
-
-my $window_type = "advanced_find_window";
-
# ***** FUNCTIONAL PROTOTYPES FOR THIS FILE *****
# Public routines.
@@ -58,8 +52,8 @@ sub advanced_find($$$);
# Private routines.
-sub create_advanced_find_window();
sub execute_button_clicked_cb($$);
+sub get_advanced_find_window($);
sub populate_button_clicked_cb($$);
sub revisions_treeview_cursor_changed_cb($$);
sub revisions_treeview_row_activated_cb($$$$);
@@ -94,62 +88,18 @@ sub advanced_find($$$)
my($browser, $revision_id, $branches) = @_;
my($advanced_find,
- $new,
$ret_val);
- my $wm = WindowManager->instance();
- # Create a new advanced find window if an unused one wasn't found,
- # otherwise reuse the existing unused one.
+ $advanced_find = get_advanced_find_window($browser);
- if (defined($advanced_find = $wm->find_unused($window_type)))
- {
- $new = 0;
- }
- else
- {
- $advanced_find = create_advanced_find_window();
- $new = 1;
- }
-
- $advanced_find->{mtn} = $browser->{mtn};
-
# Update the window's internal state.
{
- my($height,
- $width);
-
local $advanced_find->{in_cb} = 1;
- $advanced_find->{selected} = 0;
+ # Update it with any preset values.
- # Reset the window contents, then show it.
-
- $advanced_find->{window}->set_transient_for($browser->{window});
- $advanced_find->{branch_combo_details}->{preset} = 0;
- $advanced_find->{revision_combo_details}->{preset} = 0;
- $advanced_find->{appbar}->set_progress_percentage(0);
- $advanced_find->{appbar}->clear_stack();
- &{$advanced_find->{update_handler}}($advanced_find, NEW_FIND);
- ($width, $height) = $advanced_find->{window}->get_default_size();
- $advanced_find->{window}->resize($width, $height);
- $advanced_find->{window}->show_all();
-
- # If necessary, register the window for management and setup the list
- # of additional windows that can be made busy for this application
- # window.
-
- if ($new)
- {
- $wm->manage($advanced_find, $window_type);
- $wm->add_busy_widgets($advanced_find,
- $advanced_find->{details_textview}->
- get_window("text"));
- }
-
- # Now actually update it with any preset values.
-
$advanced_find->{branch_combo_details}->{preset} = 1;
$advanced_find->{branch_combo_details}->{complete} =
$browser->{branch_combo_details}->{complete};
@@ -226,131 +176,201 @@ sub advanced_find($$$)
#
##############################################################################
#
-# Routine - create_advanced_find_window
+# Routine - get_advanced_find_window
#
-# Description - Creates the advanced find dialog window.
+# Description - Creates or prepares an existing advanced find dialog window
+# for use.
#
-# Data - Return Value : A reference to the newly created advanced
-# find instance record.
+# Data - $browser : The browser instance that started the
+# advanced find.
+# Return Value : A reference to the newly created or unused
+# advanced find instance record.
#
##############################################################################
-sub create_advanced_find_window()
+sub get_advanced_find_window($)
{
- my(@branch_list,
- $instance,
- $renderer,
- $tv_column);
+ my $browser = $_[0];
- $instance = {};
- $instance->{glade} = Gtk2::GladeXML->new($glade_file, $window_type);
+ my $instance;
+ my $window_type = "advanced_find_window";
+ my $wm = WindowManager->instance();
- # Flag to stop recursive calling of callbacks.
+ # Create a new advanced find dialog window if an unused one wasn't found,
+ # otherwise reuse an existing unused one.
- $instance->{in_cb} = 0;
+ if (! defined($instance = $wm->find_unused($window_type)))
+ {
- # Connect Glade registered signal handlers.
+ my($renderer,
+ $tv_column);
- glade_signal_autoconnect($instance->{glade}, $instance);
+ $instance = {};
+ $instance->{glade} = Gtk2::GladeXML->new($glade_file, $window_type);
+ $instance->{mtn} = $browser->{mtn};
- # Link in the update handler for the advanced find window.
+ # Flag to stop recursive calling of callbacks.
- $instance->{update_handler} = \&update_advanced_find_state;
+ $instance->{in_cb} = 0;
- # Get the widgets that we are interested in.
+ # Connect Glade registered signal handlers.
- $instance->{window} = $instance->{glade}->get_widget($window_type);
- $instance->{appbar} = $instance->{glade}->get_widget("appbar");
- $instance->{simple_query_radiobutton} =
- $instance->{glade}->get_widget("simple_query_radiobutton");
- $instance->{simple_frame} = $instance->{glade}->get_widget("simple_frame");
- $instance->{advanced_frame} =
- $instance->{glade}->get_widget("advanced_frame");
- $instance->{branch_combo} =
- $instance->{glade}->get_widget("branch_comboboxentry");
- $instance->{revision_combo} =
- $instance->{glade}->get_widget("revision_comboboxentry");
- $instance->{tagged_tick} =
- $instance->{glade}->get_widget("tagged_checkbutton");
- $instance->{search_term_combo} =
- $instance->{glade}->get_widget("search_term_comboboxentry");
- $instance->{term_combo} = $instance->{glade}->get_widget("term_combobox");
- $instance->{argument_entry} =
- $instance->{glade}->get_widget("argument_entry");
- $instance->{date_dateedit} =
- $instance->{glade}->get_widget("date_dateedit");
- $instance->{revisions_treeview} =
- $instance->{glade}->get_widget("revisions_treeview");
- $instance->{details_textview} =
- $instance->{glade}->get_widget("details_textview");
- $instance->{details_scrolledwindow} =
- $instance->{glade}->get_widget("details_scrolledwindow");
- $instance->{selected_branch_label} =
- $instance->{glade}->get_widget("selected_branch_value_label");
- $instance->{selected_revision_label} =
- $instance->{glade}->get_widget("selected_revision_value_label");
- $instance->{ok_button} = $instance->{glade}->get_widget("ok_button");
+ glade_signal_autoconnect($instance->{glade}, $instance);
- # Setup the advanced find window deletion handlers.
+ # Link in the update handler for the advanced find window.
- $instance->{window}->signal_connect
- ("delete_event",
- sub { $_[2]->{done} = 1 unless ($_[2]->{in_cb}); return TRUE; },
- $instance);
- $instance->{glade}->get_widget("cancel_button")->signal_connect
- ("clicked", sub { $_[1]->{done} = 1; }, $instance);
- $instance->{glade}->get_widget("ok_button")->signal_connect
- ("clicked", sub { $_[1]->{done} = $_[1]->{selected} = 1; }, $instance);
+ $instance->{update_handler} = \&update_advanced_find_state;
- # Setup the comboboxentry key release signal handlers.
+ # Get the widgets that we are interested in.
- $instance->{branch_combo}->child()->
- signal_connect("key_release_event",
- \&combo_key_release_event_cb,
- $instance);
- $instance->{revision_combo}->child()->
- signal_connect("key_release_event",
- \&combo_key_release_event_cb,
- $instance);
+ $instance->{window} = $instance->{glade}->get_widget($window_type);
+ $instance->{appbar} = $instance->{glade}->get_widget("appbar");
+ $instance->{simple_query_radiobutton} =
+ $instance->{glade}->get_widget("simple_query_radiobutton");
+ $instance->{simple_frame} =
+ $instance->{glade}->get_widget("simple_frame");
+ $instance->{advanced_frame} =
+ $instance->{glade}->get_widget("advanced_frame");
+ $instance->{branch_combo} =
+ $instance->{glade}->get_widget("branch_comboboxentry");
+ $instance->{revision_combo} =
+ $instance->{glade}->get_widget("revision_comboboxentry");
+ $instance->{tagged_tick} =
+ $instance->{glade}->get_widget("tagged_checkbutton");
+ $instance->{search_term_combo} =
+ $instance->{glade}->get_widget("search_term_comboboxentry");
+ $instance->{term_combo} =
+ $instance->{glade}->get_widget("term_combobox");
+ $instance->{argument_entry} =
+ $instance->{glade}->get_widget("argument_entry");
+ $instance->{date_dateedit} =
+ $instance->{glade}->get_widget("date_dateedit");
+ $instance->{revisions_treeview} =
+ $instance->{glade}->get_widget("revisions_treeview");
+ $instance->{details_textview} =
+ $instance->{glade}->get_widget("details_textview");
+ $instance->{details_scrolledwindow} =
+ $instance->{glade}->get_widget("details_scrolledwindow");
+ $instance->{selected_branch_label} =
+ $instance->{glade}->get_widget("selected_branch_value_label");
+ $instance->{selected_revision_label} =
+ $instance->{glade}->get_widget("selected_revision_value_label");
+ $instance->{ok_button} = $instance->{glade}->get_widget("ok_button");
- # Setup the comboboxes.
+ # Setup the advanced find window deletion handlers.
- $instance->{branch_combo}->set_model(Gtk2::ListStore->new("Glib::String"));
- $instance->{branch_combo}->set_text_column(0);
- $instance->{branch_combo}->set_wrap_width(2);
- $instance->{revision_combo}->
- set_model(Gtk2::ListStore->new("Glib::String"));
- $instance->{revision_combo}->set_text_column(0);
- $instance->{revision_combo}->set_wrap_width(2);
- $instance->{search_term_combo}->
- set_model(Gtk2::ListStore->new("Glib::String"));
- $instance->{search_term_combo}->set_text_column(0);
- $instance->{query_history} = [];
- $instance->{term_combo}->set_active(0);
+ $instance->{window}->signal_connect
+ ("delete_event",
+ sub { $_[2]->{done} = 1 unless ($_[2]->{in_cb}); return TRUE; },
+ $instance);
+ $instance->{glade}->get_widget("cancel_button")->signal_connect
+ ("clicked",
+ sub { $_[1]->{done} = 1 unless ($_[1]->{in_cb}); },
+ $instance);
+ $instance->{glade}->get_widget("ok_button")->signal_connect
+ ("clicked",
+ sub { $_[1]->{done} = $_[1]->{selected} = 1
+ unless ($_[1]->{in_cb}); },
+ $instance);
- # Setup the revisions list browser.
+ # Setup the comboboxentry key release signal handlers.
- $instance->{revisions_liststore} = Gtk2::ListStore->new("Glib::String");
- $instance->{revisions_treeview}->
- set_model($instance->{revisions_liststore});
- $tv_column = Gtk2::TreeViewColumn->new();
- $tv_column->set_title("Matching Revision Ids");
- $tv_column->set_sort_column_id(0);
- $renderer = Gtk2::CellRendererText->new();
- $tv_column->pack_start($renderer, FALSE);
- $tv_column->set_attributes($renderer, "text" => 0);
- $instance->{revisions_treeview}->append_column($tv_column);
- $instance->{revisions_treeview}->set_search_column(0);
+ $instance->{branch_combo}->child()->
+ signal_connect("key_release_event",
+ \&combo_key_release_event_cb,
+ $instance);
+ $instance->{revision_combo}->child()->
+ signal_connect("key_release_event",
+ \&combo_key_release_event_cb,
+ $instance);
- # Setup the revision details viewer.
+ # Setup the comboboxes.
- $instance->{details_buffer} = $instance->{details_textview}->get_buffer();
- create_format_tags($instance->{details_textview}->get_buffer());
- $instance->{details_textview}->modify_font($mono_font);
+ $instance->{branch_combo}->
+ set_model(Gtk2::ListStore->new("Glib::String"));
+ $instance->{branch_combo}->set_text_column(0);
+ $instance->{branch_combo}->set_wrap_width(2);
+ $instance->{revision_combo}->
+ set_model(Gtk2::ListStore->new("Glib::String"));
+ $instance->{revision_combo}->set_text_column(0);
+ $instance->{revision_combo}->set_wrap_width(2);
+ $instance->{search_term_combo}->
+ set_model(Gtk2::ListStore->new("Glib::String"));
+ $instance->{search_term_combo}->set_text_column(0);
+ $instance->{query_history} = [];
+ $instance->{term_combo}->set_active(0);
+ # Setup the revisions list browser.
+
+ $instance->{revisions_liststore} =
+ Gtk2::ListStore->new("Glib::String");
+ $instance->{revisions_treeview}->
+ set_model($instance->{revisions_liststore});
+ $tv_column = Gtk2::TreeViewColumn->new();
+ $tv_column->set_title("Matching Revision Ids");
+ $tv_column->set_sort_column_id(0);
+ $renderer = Gtk2::CellRendererText->new();
+ $tv_column->pack_start($renderer, FALSE);
+ $tv_column->set_attributes($renderer, "text" => 0);
+ $instance->{revisions_treeview}->append_column($tv_column);
+ $instance->{revisions_treeview}->set_search_column(0);
+
+ # Setup the revision details viewer.
+
+ $instance->{details_buffer} =
+ $instance->{details_textview}->get_buffer();
+ create_format_tags($instance->{details_textview}->get_buffer());
+ $instance->{details_textview}->modify_font($mono_font);
+
+ # Update the advanced find dialog's state.
+
+ $instance->{window}->set_transient_for($browser->{window});
+ $instance->{branch_combo_details}->{preset} = 0;
+ $instance->{revision_combo_details}->{preset} = 0;
+ &{$instance->{update_handler}}($instance, NEW_FIND);
+
+ local $instance->{in_cb} = 1;
+ $instance->{window}->show_all();
+
+ # Register the window for management.
+
+ $wm->manage($instance, $window_type);
+ $wm->add_busy_widgets($instance,
+ $instance->{details_textview}->
+ get_window("text"));
+
+ }
+ else
+ {
+
+ my($height,
+ $width);
+
+ $instance->{in_cb} = 0;
+ local $instance->{in_cb} = 1;
+
+ # Reset the advanced find dialog's state.
+
+ $instance->{mtn} = $browser->{mtn};
+ ($width, $height) = $instance->{window}->get_default_size();
+ $instance->{window}->resize($width, $height);
+ $instance->{glade}->get_widget("revisions_hpaned")->set_position(300);
+ $instance->{window}->set_transient_for($browser->{window});
+ $instance->{branch_combo_details}->{preset} = 0;
+ $instance->{revision_combo_details}->{preset} = 0;
+ $instance->{appbar}->set_progress_percentage(0);
+ $instance->{appbar}->clear_stack();
+ &{$instance->{update_handler}}($instance, NEW_FIND);
+ $instance->{window}->show_all();
+
+ }
+
+ $instance->{done} = 0;
+ $instance->{selected} = 0;
+
return $instance;
}
@@ -915,7 +935,7 @@ sub update_advanced_find_state($$)
["modal"],
"info",
"close",
- "No revisions matched your query");
+ "No revisions matched your query.");
$dialog->run();
$dialog->destroy();
}
============================================================
--- Annotate.pm 7cee86fa814a8ec2d79ee9284ed150010ec560d2
+++ Annotate.pm abaefdb3414d1ed69ef1f8129263d2a03cc7ac40
@@ -206,9 +206,7 @@ sub get_annotation_window()
sub get_annotation_window()
{
- my($height,
- $instance,
- $width);
+ my $instance;
my $window_type = "annotation_window";
my $wm = WindowManager->instance();
@@ -267,9 +265,14 @@ sub get_annotation_window()
}
else
{
+ my($height,
+ $width);
$instance->{in_cb} = 0;
+ local $instance->{in_cb} = 1;
($width, $height) = $instance->{window}->get_default_size();
$instance->{window}->resize($width, $height);
+ $instance->{appbar}->set_progress_percentage(0);
+ $instance->{appbar}->clear_stack();
}
# Empty out the contents.
============================================================
--- FindText.pm 97a85e65c2990934ed5a983f50bf3851da1cb0ce
+++ FindText.pm 4c2dc62b2849560aeb391b55b864c9b4c2da4fc7
@@ -210,7 +210,7 @@ sub find_button_clicked_cb($$)
["modal"],
"info",
"close",
- "Enter some text to\nsearch for first");
+ "Enter some text to\nsearch for first.");
$dialog->run();
$dialog->destroy();
return;
@@ -385,7 +385,7 @@ sub find_button_clicked_cb($$)
["modal"],
"info",
"close",
- sprintf("Could not find\n`%s'", $search_term));
+ sprintf("Could not find\n`%s'.", $search_term));
$dialog->run();
$dialog->destroy();
}
============================================================
--- History.pm 7923dcc1bfcb958b514b5af9fec270960b99d2f3
+++ History.pm b5af4e8073eac3e228920a6d2692a972e73e07f0
@@ -1005,9 +1005,7 @@ sub get_history_window()
sub get_history_window()
{
- my($height,
- $instance,
- $width);
+ my $instance;
my $window_type = "history_window";
my $wm = WindowManager->instance();
@@ -1063,7 +1061,9 @@ sub get_history_window()
},
$instance);
$instance->{stop_button}->signal_connect
- ("clicked", sub { $_[1]->{stop} = 1; }, $instance);
+ ("clicked",
+ sub { $_[1]->{stop} = 1 unless ($_[1]->{in_cb}); },
+ $instance);
# Setup the file history viewer.
@@ -1081,7 +1081,10 @@ sub get_history_window()
}
else
{
+ my($height,
+ $width);
$instance->{in_cb} = 0;
+ local $instance->{in_cb} = 1;
($width, $height) = $instance->{window}->get_default_size();
$instance->{window}->resize($width, $height);
$instance->{stop_button}->set_sensitive(FALSE);
@@ -1089,6 +1092,8 @@ sub get_history_window()
set_label_value($instance->{numbers_label}, "");
set_label_value($instance->{revision_id_1_label}, "");
set_label_value($instance->{revision_id_2_label}, "");
+ $instance->{appbar}->set_progress_percentage(0);
+ $instance->{appbar}->clear_stack();
}
$instance->{stop} = 0;
@@ -1227,16 +1232,7 @@ sub get_revision_comparison_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);
+ glade_signal_autoconnect($instance->{glade}, $instance);
# Get the widgets that we are interested in.
============================================================
--- Utilities.pm ddd6c902f8cf6ef5010e29a94cebb3ec0c6f1490
+++ Utilities.pm 450ecc0dbbd4e283c632819a4c7635c8f568d43c
@@ -442,7 +442,7 @@ sub run_command($@)
["modal"],
"warning",
"close",
- sprintf("The %s subprocess was terminated by signal %d",
+ sprintf("The %s subprocess was terminated by signal %d.",
Glib::Markup::escape_text($args[0]),
WTERMSIG($status)));
$dialog->run();
============================================================
--- mtn-browse afac3c8857a6b966adf2b4d3040d5348e21d418d
+++ mtn-browse d636ebae821c37c437b7eb4e743e71650c3018d7
@@ -93,7 +93,7 @@ use WindowManager;
# ***** GLOBAL DATA DECLARATIONS *****
-# Constants for the columns within the manifest ListStore widget.
+# Constants for the columns within the manifest liststore widget.
use constant MLS_ICON_COLUMN => 0;
use constant MLS_NAME_COLUMN => 1;
@@ -170,6 +170,14 @@ sub view_button_clicked_cb($$);
$mono_font = Gtk2::Pango::FontDescription->from_string("monospace 10");
$line_image = Gtk2::Gdk::Pixbuf->new_from_file(LIB_PATH . "/UI/line.png");
+# my $mtype = Gnome2::VFS::Mime::Type->new("image/jpeg");
+# print $mtype->get_default_application();
+
+# $mtype->get_default_application()->launch("file:///home/aecoope/me.jpg");
+
+# print Gnome2::VFS->get_mime_type("file:///home/aecoope/test");
+# print Gnome2::VFS->get_mime_type("file:///home/aecoope/perl/mtn-browse.svg");
+
# Create the temporary working directory.
eval
@@ -407,7 +415,7 @@ sub open_toolbutton_clicked_cb($$)
["modal"],
"warning",
"close",
- $!);
+ $! . ".");
$dialog->run();
$dialog->destroy();
}
@@ -435,7 +443,7 @@ sub open_toolbutton_clicked_cb($$)
["modal"],
"warning",
"close",
- "Not a valid Monotone database");
+ "Not a valid Monotone database.");
$dialog->run();
$dialog->destroy();
}
@@ -522,7 +530,7 @@ sub properties_toolbutton_clicked_cb($$)
["modal"],
"info",
"close",
- "Not implemented");
+ "Not implemented.");
$dialog->run();
$dialog->destroy();
@@ -555,7 +563,7 @@ sub preferences_toolbutton_clicked_cb($$
["modal"],
"info",
"close",
- "Not implemented");
+ "Not implemented.");
$dialog->run();
$dialog->destroy();
@@ -588,7 +596,7 @@ sub help_toolbutton_clicked_cb($$)
["modal"],
"info",
"close",
- "Not implemented");
+ "Not implemented.");
$dialog->run();
$dialog->destroy();
@@ -964,7 +972,7 @@ sub save_as_button_clicked_cb($$)
["modal"],
"warning",
"close",
- $!);
+ $! . ".");
$dialog->run();
$dialog->destroy();
}
@@ -1015,10 +1023,12 @@ sub view_button_clicked_cb($$)
return if ($browser->{in_cb});
local $browser->{in_cb} = 1;
- my($data,
- $editor,
+ my($app,
+ $data,
$fh,
- $file_name);
+ $file_name,
+ $mime,
+ $mime_type);
if (! defined($file_name =
generate_tmp_path($browser->{file_being_viewed}->
@@ -1028,8 +1038,8 @@ sub view_button_clicked_cb($$)
($browser->{window},
["modal"],
"warning",
- "Cannot generate temporary file name",
- $!);
+ "Cannot generate temporary file name: ",
+ $! . ".");
$dialog->run();
$dialog->destroy();
return;
@@ -1044,7 +1054,7 @@ sub view_button_clicked_cb($$)
["modal"],
"warning",
"close",
- $!);
+ $! . ".");
$dialog->run();
$dialog->destroy();
return;
@@ -1056,20 +1066,40 @@ sub view_button_clicked_cb($$)
$fh->close();
$fh = undef;
- # Load into an editor.
+ # Load into the appropriate application for this type of file, defaulting
+ # to Vi if necessary.
- if (exists($ENV{EDITOR})
- && ($ENV{EDITOR} eq "emacs"
- || $ENV{EDITOR} eq "xemacs"
- || $ENV{EDITOR} eq "gvim"))
+ if (! defined($mime_type =
+ Gnome2::VFS->get_mime_type("file://" . $file_name)))
{
- $editor = $ENV{EDITOR};
+ my $dialog = Gtk2::MessageDialog->new
+ ($browser->{window},
+ ["modal"],
+ "warning",
+ "close",
+ "Unknown file type, not viewing.");
+ $dialog->run();
+ $dialog->destroy();
+ return;
}
+ $app = $mime->get_default_application()
+ if (defined($mime = Gnome2::VFS::Mime::Type->new($mime_type)));
+ if (defined($app))
+ {
+ $app->launch("file://" . $file_name);
+ }
else
{
- $editor = "xterm -e vi";
+ my $dialog = Gtk2::MessageDialog->new
+ ($browser->{window},
+ ["modal"],
+ "info",
+ "close",
+ sprintf("No application is associated with\n"
+ . "Mime type `%s',\nusing Vi instead.",
+ $mime_type));
+ system("xterm -e vi " . $file_name . " &");
}
- system($editor . " " . $file_name . " &");
}
#
@@ -1528,6 +1558,7 @@ sub get_browser_window(;$$$$$)
add($browser->{file_view_sv});
$browser->{file_view_sv}->show_all();
+ local $browser->{in_cb} = 1;
$browser->{window}->show_all();
# Register the window for management.
@@ -1560,6 +1591,13 @@ sub get_browser_window(;$$$$$)
$browser->{window}->resize($width, $height);
$browser->{glade}->get_widget("browser_hpaned")->set_position(300);
$browser->{tagged_tick}->set_active(FALSE);
+ $browser->{appbar}->set_progress_percentage(0);
+ $browser->{appbar}->clear_stack();
+ $browser->{branch_combo_details}->{preset} = 0;
+ $browser->{revision_combo_details}->{preset} = 0;
+ $browser->{directory_combo_details}->{preset} = 0;
+ $browser->{file_being_viewed_preset_value} = "";
+ &{$browser->{update_handler}}($browser, DATABASE_CHANGED);
$browser->{window}->show_all();
# Now update with the details of the specified database.
@@ -2416,7 +2454,7 @@ sub sigchld_handler()
"close",
sprintf("The mtn subprocess just unexpectedly\n"
. "exited (%s).\n"
- . "This shouldn't happen.\n"
+ . "This should not be happening!\n"
. "It will be restarted when "
. "needed.",
WIFSIGNALED($status) ?
============================================================
--- mtn-browse.glade 3e8b88ffa5f961df8231705c8e1b25c4029ff920
+++ mtn-browse.glade ed03f710e7da03d40189c0a0aa689a620f81c5d5
@@ -806,7 +806,7 @@ in Monotone-Viz