#
#
# patch "lib/perl/AdvancedFind.pm"
# from [55f479535ab7252fc8db2acae5398ce2ed82c147]
# to [48410d00023da121a42f6d6ef55b885b087ffc1b]
#
# patch "lib/perl/FindFiles.pm"
# from [8545f8bea2d6d5b76ff34a5d949a7e29a553315d]
# to [50442bdb5574186ddbdd9c57c2b9167d86eed66d]
#
# patch "lib/perl/ManageServerBookmarks.pm"
# from [ffd8ccb8c00934951b92dc89e3c6edcd34ddfc36]
# to [d5f02f11915c8ae331935b51bd41a18d5ac3297d]
#
# patch "lib/perl/Preferences.pm"
# from [7efe98b8d386c359f092b1abba558689a081a763]
# to [cdb591343c2e489bc75b43c693b1eb549850c850]
#
# patch "lib/ui/mtn-browse.glade"
# from [e41c19886ad565ade73e69402c1a878e2345d01a]
# to [fba49e593b91f655d1edcbe681f8bdfe406cff19]
#
# patch "mtn-browse"
# from [44ebbb64d1104c09425fcd6290a5a000a53ee294]
# to [639c401c334db456171039a883b861d01a229d7f]
#
============================================================
--- lib/perl/AdvancedFind.pm 55f479535ab7252fc8db2acae5398ce2ed82c147
+++ lib/perl/AdvancedFind.pm 48410d00023da121a42f6d6ef55b885b087ffc1b
@@ -66,7 +66,7 @@ sub populate_button_clicked_cb($$);
sub execute_button_clicked_cb($$);
sub get_advanced_find_window($);
sub populate_button_clicked_cb($$);
-sub revisions_treeview_cursor_changed_cb($$);
+sub revisions_treeselection_changed_cb($$);
sub revisions_treeview_row_activated_cb($$$$);
sub simple_query_radiobutton_toggled_cb($$);
sub term_combobox_changed_cb($$);
@@ -419,7 +419,7 @@ sub term_combobox_changed_cb($$)
#
##############################################################################
#
-# Routine - revisions_treeview_cursor_changed_cb
+# Routine - revisions_treeselection_changed_cb
#
# Description - Callback routine called when the user selects an entry in
# the revisions treeview in the advanced find window.
@@ -433,7 +433,7 @@ sub term_combobox_changed_cb($$)
-sub revisions_treeview_cursor_changed_cb($$)
+sub revisions_treeselection_changed_cb($$)
{
my($widget, $advanced_find) = @_;
@@ -441,22 +441,32 @@ sub revisions_treeview_cursor_changed_cb
return if ($advanced_find->{in_cb});
local $advanced_find->{in_cb} = 1;
- my $revision_id;
+ # Get the selected revision id and update the window accordingly.
- # Get the selected revision id.
-
- $widget->get_selection()->selected_foreach
- (sub {
- my($model, $path, $iter) = @_;
- $revision_id = $model->get($iter, AFLS_REVISION_ID_COLUMN); });
-
- if (defined($revision_id)
- && $revision_id
+ if ($widget->count_selected_rows() > 0)
+ {
+ my($iter,
+ $model,
+ $revision_id);
+ ($model, $iter) = $widget->get_selected();
+ $revision_id = $model->get($iter, AFLS_REVISION_ID_COLUMN);
+ if ($revision_id
ne $advanced_find->{revisions_treeview_details}->{value})
+ {
+ $advanced_find->{revisions_treeview_details}->{value} =
+ $revision_id;
+ &{$advanced_find->{update_handler}}($advanced_find,
+ SELECTED_REVISION_CHANGED);
+ }
+ }
+ else
{
- $advanced_find->{revisions_treeview_details}->{value} = $revision_id;
- &{$advanced_find->{update_handler}}($advanced_find,
- SELECTED_REVISION_CHANGED);
+ if ($advanced_find->{revisions_treeview_details}->{value} ne "")
+ {
+ $advanced_find->{revisions_treeview_details}->{value} = "";
+ &{$advanced_find->{update_handler}}($advanced_find,
+ SELECTED_REVISION_CHANGED);
+ }
}
}
@@ -702,6 +712,9 @@ sub get_advanced_find_window($)
$instance->{revisions_treeview}->
set_search_equal_func(\&treeview_column_searcher);
+ $instance->{revisions_treeview}->get_selection()->signal_connect
+ ("changed", \&revisions_treeselection_changed_cb, $instance);
+
# Setup the revision details viewer.
$instance->{details_buffer} =
============================================================
--- lib/perl/FindFiles.pm 8545f8bea2d6d5b76ff34a5d949a7e29a553315d
+++ lib/perl/FindFiles.pm 50442bdb5574186ddbdd9c57c2b9167d86eed66d
@@ -81,7 +81,7 @@ sub get_find_files_window();
sub between_range_radiobutton_toggled_cb($$);
sub date_range_checkbutton_toggled_cb($$);
sub get_find_files_window();
-sub results_treeview_cursor_changed_cb($$);
+sub results_treeselection_changed_cb($$);
sub results_treeview_row_activated_cb($$$$);
sub save_query_from_gui($);
sub search_files_button_clicked_cb($$);
@@ -665,7 +665,7 @@ sub search_files_button_clicked_cb($$)
#
##############################################################################
#
-# Routine - results_treeview_cursor_changed_cb
+# Routine - results_treeselection_changed_cb
#
# Description - Callback routine called when the user selects an entry in
# the results treeview in a find files window.
@@ -678,7 +678,7 @@ sub search_files_button_clicked_cb($$)
-sub results_treeview_cursor_changed_cb($$)
+sub results_treeselection_changed_cb($$)
{
my($widget, $instance) = @_;
@@ -686,22 +686,21 @@ sub results_treeview_cursor_changed_cb($
return if ($instance->{in_cb});
local $instance->{in_cb} = 1;
- my $manifest_entry;
+ my($author,
+ $file_id,
+ $last_changed_revision,
+ $last_update);
- # Get the manifest entry details for the item that was selected.
+ # Get the manifest entry details for the item that was selected and then
+ # display them if appropriate.
- $widget->get_selection()->selected_foreach
- (sub {
- my($model, $path, $iter) = @_;
- $manifest_entry = $model->get($iter, RLS_MANIFEST_ENTRY_COLUMN);
- });
-
- if (defined($manifest_entry))
+ if ($widget->count_selected_rows() > 0)
{
- my($author,
- $file_id,
- $last_changed_revision,
- $last_update);
+ my($iter,
+ $manifest_entry,
+ $model);
+ ($model, $iter) = $widget->get_selected();
+ $manifest_entry = $model->get($iter, RLS_MANIFEST_ENTRY_COLUMN);
if ($manifest_entry->{type} eq "file")
{
if (! exists($manifest_entry->{author}))
@@ -716,16 +715,16 @@ sub results_treeview_cursor_changed_cb($
$last_update = $manifest_entry->{last_update};
$last_update =~ s/T/ /;
}
- else
- {
- $author = $file_id = $last_changed_revision = $last_update = "";
- }
- set_label_value($instance->{author_value_label}, $author);
- set_label_value($instance->{file_id_value_label}, $file_id);
- set_label_value($instance->{last_update_value_label}, $last_update);
- set_label_value($instance->{file_revision_id_value_label},
- $last_changed_revision);
}
+ else
+ {
+ $author = $file_id = $last_changed_revision = $last_update = "";
+ }
+ set_label_value($instance->{author_value_label}, $author);
+ set_label_value($instance->{file_id_value_label}, $file_id);
+ set_label_value($instance->{last_update_value_label}, $last_update);
+ set_label_value($instance->{file_revision_id_value_label},
+ $last_changed_revision);
}
#
@@ -975,10 +974,16 @@ sub get_find_files_window()
$tv_column->pack_start($renderer, TRUE);
$tv_column->set_attributes($renderer, "text" => 0);
$instance->{results_treeview}->append_column($tv_column);
+
$instance->{results_treeview}->set_search_column(0);
$instance->{results_treeview}->
set_search_equal_func(\&treeview_column_searcher);
+ $instance->{results_treeview}->get_selection()->
+ signal_connect("changed",
+ \&results_treeselection_changed_cb,
+ $instance);
+
# Disable the appropriate widgets by default.
for my $widget (@{$instance->{date_sensitive_group}},
============================================================
--- lib/perl/ManageServerBookmarks.pm ffd8ccb8c00934951b92dc89e3c6edcd34ddfc36
+++ lib/perl/ManageServerBookmarks.pm d5f02f11915c8ae331935b51bd41a18d5ac3297d
@@ -65,7 +65,7 @@ sub server_entry_changed_cb($$);
sub load_servers_treeview($);
sub remove_server_button_clicked_cb($$);
sub server_entry_changed_cb($$);
-sub servers_treeview_cursor_changed_cb($$);
+sub servers_treeselection_changed_cb($$);
#
##############################################################################
#
@@ -115,7 +115,7 @@ sub manage_server_bookmarks($$)
#
##############################################################################
#
-# Routine - servers_treeview_cursor_changed_cb
+# Routine - servers_treeselection_changed_cb
#
# Description - Callback routine called when the user selects an entry in
# the servers treeview in the manage server bookmarks window.
@@ -128,7 +128,7 @@ sub manage_server_bookmarks($$)
-sub servers_treeview_cursor_changed_cb($$)
+sub servers_treeselection_changed_cb($$)
{
my($widget, $instance) = @_;
@@ -136,19 +136,23 @@ sub servers_treeview_cursor_changed_cb($
return if ($instance->{in_cb});
local $instance->{in_cb} = 1;
- # Store the details of the newly selected file name pattern.
+ # Store the details of the newly selected server if one was selected, also
+ # enabling the remove button if appropriate.
- $widget->get_selection()->selected_foreach
- (sub {
- my($model, $path, $iter) = @_;
- $instance->{selected_server} = $model->get($iter, 0);
- });
+ if ($widget->count_selected_rows() > 0)
+ {
+ my($iter,
+ $model);
+ ($model, $iter) = $widget->get_selected();
+ $instance->{selected_server} = $model->get($iter, 0);
+ $instance->{remove_server_button}->set_sensitive(TRUE);
+ }
+ else
+ {
+ $instance->{selected_server} = undef;
+ $instance->{remove_server_button}->set_sensitive(FALSE);
+ }
- # Enable the remove server button if something was selected.
-
- $instance->{remove_server_button}->set_sensitive(TRUE)
- if (defined($instance->{selected_server}));
-
}
#
##############################################################################
@@ -376,21 +380,11 @@ sub get_manage_server_bookmarks_window($
$instance->{servers_treeview}->
set_search_equal_func(\&treeview_column_searcher);
- }
- else
- {
+ $instance->{servers_treeview}->get_selection()->
+ signal_connect("changed",
+ \&servers_treeselection_changed_cb,
+ $instance);
- my($height,
- $width);
-
- $instance->{in_cb} = 0;
- local $instance->{in_cb} = 1;
-
- # Reset the manage server bookmarks window's state.
-
- ($width, $height) = $instance->{window}->get_default_size();
- $instance->{window}->resize($width, $height);
-
}
local $instance->{in_cb} = 1;
@@ -398,11 +392,6 @@ sub get_manage_server_bookmarks_window($
$instance->{selected_server} = undef;
$instance->{server_bookmarks} = [];
- # Load in the server bookmarks.
-
- @{$instance->{server_bookmarks}} = @$bookmarks;
- load_servers_treeview($instance);
-
# Disable the add and remove buttons and make sure the server entry field
# is empty.
@@ -416,6 +405,11 @@ sub get_manage_server_bookmarks_window($
$instance->{window}->show_all();
$instance->{window}->present();
+ # Load in the server bookmarks.
+
+ @{$instance->{server_bookmarks}} = @$bookmarks;
+ load_servers_treeview($instance);
+
# Make sure that the server entry field has the focus.
$instance->{server_entry}->grab_focus();
============================================================
--- lib/perl/Preferences.pm 7efe98b8d386c359f092b1abba558689a081a763
+++ lib/perl/Preferences.pm cdb591343c2e489bc75b43c693b1eb549850c850
@@ -151,16 +151,17 @@ sub file_name_pattern_entry_changed_cb($
sub database_browse_button_clicked_cb($$);
sub defaults_button_clicked_cb($$);
sub file_name_pattern_entry_changed_cb($$);
-sub file_name_patterns_treeview_cursor_changed_cb($$);
+sub file_name_patterns_treeselection_changed_cb($$);
sub get_preferences_window($$);
sub home_dir();
sub initialise_mime_info_table();
sub initialise_preferences();
+sub load_current_mime_types_settings($);
sub load_file_name_patterns_treeview($);
sub load_mime_types_page($);
sub load_preferences_into_gui($);
sub mime_type_entry_changed_cb($$);
-sub mime_types_treeview_cursor_changed_cb($$);
+sub mime_types_treeselection_changed_cb($$);
sub remove_file_name_pattern_button_clicked_cb($$);
sub remove_mime_type_button_clicked_cb($$);
sub save_current_mime_types_settings($);
@@ -519,7 +520,7 @@ sub database_browse_button_clicked_cb($$
#
##############################################################################
#
-# Routine - mime_types_treeview_cursor_changed_cb
+# Routine - mime_types_treeselection_changed_cb
#
# Description - Callback routine called when the user selects an entry in
# the MIME types treeview in the preferences window.
@@ -532,7 +533,7 @@ sub database_browse_button_clicked_cb($$
-sub mime_types_treeview_cursor_changed_cb($$)
+sub mime_types_treeselection_changed_cb($$)
{
my($widget, $instance) = @_;
@@ -541,66 +542,46 @@ sub mime_types_treeview_cursor_changed_c
local $instance->{in_cb} = 1;
my($entry,
- $entry_path);
+ $entry_path,
+ @paths);
# Get the MIME table entry details for the item that was selected.
- $widget->get_selection()->selected_foreach
- (sub {
- my($model, $path, $iter) = @_;
- $entry = $model->get($iter, MTLS_ENTRY_COLUMN);
- $entry_path = $path->to_string();
- });
+ @paths = $widget->get_selected_rows();
+ if (scalar(@paths) > 0)
+ {
+ my($iter,
+ $model);
+ ($model, $iter) = $widget->get_selected();
+ $entry = $model->get($iter, MTLS_ENTRY_COLUMN);
+ $entry_path = $paths[0]->to_string();
+ }
- # If something has been selected and it is different from before then deal
- # with it.
+ # If the selection has changed then, if necessary, save any changes made
+ # and update the liststore before loading in the new entry.
- if (defined($entry)
- && (! defined($instance->{selected_mime_types_entry})
+ if (defined($instance->{selected_mime_types_entry})
+ && (! defined($entry)
|| $entry != $instance->{selected_mime_types_entry}))
{
+ save_current_mime_types_settings($instance);
+ $instance->{mime_types_liststore}->
+ set($instance->{mime_types_liststore}->
+ get_iter_from_string($instance->{selected_mime_types_path}),
+ MTLS_PATTERNS_COLUMN,
+ join(" ",
+ @{$instance->{selected_mime_types_entry}->
+ {file_name_patterns}}),
+ MTLS_HELPER_COLUMN,
+ $instance->{selected_mime_types_entry}->{helper_application});
+ }
- # If an entry was selected before then save any changes and update the
- # liststore.
+ # Load in the newly selected entry.
- if (defined($instance->{selected_mime_types_entry}))
- {
- save_current_mime_types_settings($instance);
- $instance->{mime_types_liststore}->
- set($instance->{mime_types_liststore}->
- get_iter_from_string($instance->
- {selected_mime_types_path}),
- MTLS_PATTERNS_COLUMN,
- join(" ",
- @{$instance->{selected_mime_types_entry}->
- {file_name_patterns}}),
- MTLS_HELPER_COLUMN,
- $instance->{selected_mime_types_entry}->
- {helper_application});
- }
+ $instance->{selected_mime_types_entry} = $entry;
+ $instance->{selected_mime_types_path} = $entry_path;
+ load_current_mime_types_settings($instance);
- # Load in the newly selected entry.
-
- $instance->{selected_mime_types_entry} = $entry;
- $instance->{selected_mime_types_path} = $entry_path;
- $instance->{remove_mime_type_button}->set_sensitive(TRUE);
- foreach my $widget (@{$instance->{mime_type_sensitivity_list}})
- {
- $widget->set_sensitive(TRUE);
- }
- load_file_name_patterns_treeview($instance);
- $instance->{file_name_pattern_entry}->set_text("");
- $instance->{add_file_name_pattern_button}->set_sensitive(FALSE);
- $instance->{remove_file_name_pattern_button}->set_sensitive(FALSE);
- $instance->{display_internally_checkbutton}->
- set_active($entry->{display_internally} ? TRUE : FALSE);
- $instance->{syntax_highlight_checkbutton}->
- set_active($entry->{syntax_highlight} ? TRUE : FALSE);
- $instance->{helper_application_entry}->
- set_text($entry->{helper_application});
-
- }
-
}
#
##############################################################################
@@ -764,7 +745,7 @@ sub remove_mime_type_button_clicked_cb($
#
##############################################################################
#
-# Routine - file_name_patterns_treeview_cursor_changed_cb
+# Routine - file_name_patterns_treeselection_changed_cb
#
# Description - Callback routine called when the user selects an entry in
# the file name patterns treeview in the preferences window.
@@ -777,7 +758,7 @@ sub remove_mime_type_button_clicked_cb($
-sub file_name_patterns_treeview_cursor_changed_cb($$)
+sub file_name_patterns_treeselection_changed_cb($$)
{
my($widget, $instance) = @_;
@@ -787,17 +768,20 @@ sub file_name_patterns_treeview_cursor_c
# Store the details of the newly selected file name pattern.
- $widget->get_selection()->selected_foreach
- (sub {
- my($model, $path, $iter) = @_;
- $instance->{selected_file_name_pattern} = $model->get($iter, 0);
- });
+ if ($widget->count_selected_rows() > 0)
+ {
+ my($iter,
+ $model);
+ ($model, $iter) = $widget->get_selected();
+ $instance->{selected_file_name_pattern} = $model->get($iter, 0);
+ $instance->{remove_file_name_pattern_button}->set_sensitive(TRUE);
+ }
+ else
+ {
+ $instance->{selected_file_name_pattern} = undef;
+ $instance->{remove_file_name_pattern_button}->set_sensitive(FALSE);
+ }
- # Enable the remove file name patterns button if something was selected.
-
- $instance->{remove_file_name_pattern_button}->set_sensitive(TRUE)
- if (defined($instance->{selected_file_name_pattern}));
-
}
#
##############################################################################
@@ -1155,6 +1139,11 @@ sub get_preferences_window($$)
$instance->{mime_types_treeview}->
set_search_equal_func(\&treeview_column_searcher);
+ $instance->{mime_types_treeview}->get_selection()->
+ signal_connect("changed",
+ \&mime_types_treeselection_changed_cb,
+ $instance);
+
# Setup the file name patterns list.
$instance->{file_name_patterns_liststore} =
@@ -1173,6 +1162,11 @@ sub get_preferences_window($$)
$instance->{file_name_patterns_treeview}->
set_search_equal_func(\&treeview_column_searcher);
+ $instance->{file_name_patterns_treeview}->get_selection()->
+ signal_connect("changed",
+ \&file_name_patterns_treeselection_changed_cb,
+ $instance);
+
# Reparent the preferences window to the specified parent.
$instance->{window}->set_transient_for($parent);
@@ -1380,20 +1374,9 @@ sub load_mime_types_page($)
if ($instance->{mime_types_treeview}->realized());
$instance->{mime_type_entry}->set_text("");
$instance->{add_mime_type_button}->set_sensitive(FALSE);
- $instance->{remove_mime_type_button}->set_sensitive(FALSE);
- $instance->{file_name_patterns_liststore}->clear();
- $instance->{file_name_pattern_entry}->set_text("");
- foreach my $widget (@{$instance->{mime_type_sensitivity_list}})
- {
- $widget->set_sensitive(FALSE);
- }
- $instance->{add_file_name_pattern_button}->set_sensitive(FALSE);
- $instance->{remove_file_name_pattern_button}->set_sensitive(FALSE);
- $instance->{display_internally_checkbutton}->set_active(FALSE);
- $instance->{syntax_highlight_checkbutton}->set_active(FALSE);
- $instance->{helper_application_entry}->set_text("");
$instance->{selected_mime_types_entry} = undef;
$instance->{selected_mime_types_path} = undef;
+ load_current_mime_types_settings($instance);
}
#
@@ -1542,10 +1525,67 @@ sub save_preferences_from_gui($)
#
##############################################################################
#
+# Routine - load_current_mime_types_settings
+#
+# Description - load the settings for the currently selected MIME type
+# entry from the preferences record.
+#
+# Data - $instance : The associated window instance.
+#
+##############################################################################
+
+
+
+sub load_current_mime_types_settings($)
+{
+
+ my $instance = $_[0];
+
+ if (defined($instance->{selected_mime_types_entry}))
+ {
+ $instance->{remove_mime_type_button}->set_sensitive(TRUE);
+ load_file_name_patterns_treeview($instance);
+ $instance->{file_name_pattern_entry}->set_text("");
+ foreach my $widget (@{$instance->{mime_type_sensitivity_list}})
+ {
+ $widget->set_sensitive(TRUE);
+ }
+ $instance->{add_file_name_pattern_button}->set_sensitive(FALSE);
+ $instance->{remove_file_name_pattern_button}->set_sensitive(FALSE);
+ $instance->{display_internally_checkbutton}->
+ set_active($instance->{selected_mime_types_entry}->
+ {display_internally} ? TRUE : FALSE);
+ $instance->{syntax_highlight_checkbutton}->
+ set_active($instance->{selected_mime_types_entry}->
+ {syntax_highlight} ? TRUE : FALSE);
+ $instance->{helper_application_entry}->
+ set_text($instance->{selected_mime_types_entry}->
+ {helper_application});
+ }
+ else
+ {
+ $instance->{remove_mime_type_button}->set_sensitive(FALSE);
+ $instance->{file_name_patterns_liststore}->clear();
+ $instance->{file_name_pattern_entry}->set_text("");
+ foreach my $widget (@{$instance->{mime_type_sensitivity_list}})
+ {
+ $widget->set_sensitive(FALSE);
+ }
+ $instance->{add_file_name_pattern_button}->set_sensitive(FALSE);
+ $instance->{remove_file_name_pattern_button}->set_sensitive(FALSE);
+ $instance->{display_internally_checkbutton}->set_active(FALSE);
+ $instance->{syntax_highlight_checkbutton}->set_active(FALSE);
+ $instance->{helper_application_entry}->set_text("");
+ }
+
+}
+#
+##############################################################################
+#
# Routine - save_current_mime_types_settings
#
-# Description - Save the settings for the currently selected MIME typ entry
-# back to the preferences record.
+# Description - Save the settings for the currently selected MIME type
+# entry back to the preferences record.
#
# Data - $instance : The associated window instance.
#
============================================================
--- lib/ui/mtn-browse.glade e41c19886ad565ade73e69402c1a878e2345d01a
+++ lib/ui/mtn-browse.glade fba49e593b91f655d1edcbe681f8bdfe406cff19
@@ -997,7 +997,6 @@ or more search criteria
False
False
True
-
@@ -2929,7 +2928,6 @@ Tag
False
False
True
-
@@ -7290,7 +7288,6 @@ used in annotated listings
False
False
True
-
@@ -7483,7 +7480,6 @@ MIME type from the list
False
False
True
-
@@ -8899,7 +8895,6 @@ MB
False
False
True
-
@@ -9699,14 +9694,11 @@ that you want
- True
Manage Server Bookmarks
GTK_WINDOW_TOPLEVEL
GTK_WIN_POS_CENTER_ON_PARENT
True
- 420
- 200
- True
+ False
False
mtn-browse.png
True
@@ -9770,6 +9762,8 @@ that you want
+ 200
+ 150
True
True
GTK_POLICY_AUTOMATIC
@@ -9785,7 +9779,6 @@ that you want
False
False
True
-
============================================================
--- mtn-browse 44ebbb64d1104c09425fcd6290a5a000a53ee294
+++ mtn-browse 639c401c334db456171039a883b861d01a229d7f
@@ -81,7 +81,6 @@ use POSIX qw(:errno_h :locale_h :sys_wai
use Locale::TextDomain (APPLICATION_NAME,
File::Spec->catfile(PREFIX_DIR, "share", "locale"));
use POSIX qw(:errno_h :locale_h :sys_wait_h strftime);
-use Socket;
use Symbol qw(gensym);
use Text::Tabs;
use Time::Local;
@@ -166,7 +165,7 @@ sub manage_server_bookmarks_activate_cb(
sub home_page_activate_cb($$);
sub main_window_delete_event_cb($$$);
sub manage_server_bookmarks_activate_cb($$);
-sub manifest_browser_treeview_cursor_changed_cb($$);
+sub manifest_browser_treeselection_changed_cb($$);
sub manifest_browser_treeview_row_activated_cb($$$$);
sub monotone_viz_button_clicked_cb($$);
sub mtn_db_locked_handler($$);
@@ -400,6 +399,100 @@ sub view_button_clicked_cb($$);
#
##############################################################################
#
+# Routine - connect_to_server_activate_cb
+#
+# Description - Callback routine called when the user selects a server
+# bookmark menu option.
+#
+# Data - $widget : The widget object that received the signal.
+# $details : A record containing the browser instance that is
+# associated with this widget and the name of the
+# server that is to be connected to.
+#
+##############################################################################
+
+
+
+sub connect_to_server_activate_cb($$)
+{
+
+ my($widget, $details) = @_;
+
+ return if ($details->{browser}->{in_cb});
+ local $details->{browser}->{in_cb} = 1;
+
+ my($exception,
+ $host,
+ $mtn);
+ my $browser = $details->{browser};
+ my $wm = WindowManager->instance();
+
+ $wm->make_busy($browser, 1);
+ $browser->{appbar}->push($browser->{appbar}->get_status()->get_text());
+ $wm->update_gui();
+
+ # Try connecting to the specified server.
+
+ $host = $details->{server};
+ $host =~ s/:\d+$//g;
+ CachingAutomateStdio->register_error_handler
+ (MTN_SEVERITY_ALL,
+ sub {
+ my($severity, $message) = @_;
+ my $dialog;
+ $message =~ s/mtn: warning: //g;
+ $message =~ s/mtn: error: //g;
+ $message =~ s/mtn: //g;
+ $message =~ s/^Corrupt\/missing mtn [^\n]+\n//g;
+ $message =~ s/ at .+ line \d+$//g;
+ $message =~ s/\s+$//g;
+ $message =~ s/\n/ /g;
+ $message .= "." unless ($message =~ m/.+\.$/);
+ $dialog = Gtk2::MessageDialog->new_with_markup
+ ($browser->{window},
+ ["modal"],
+ "warning",
+ "close",
+ __x("There is a problem connecting to the server, the "
+ . "details are:\n{error_message}",
+ error_message =>
+ Glib::Markup::escape_text($message)));
+ $wm->allow_input(sub { $dialog->run(); });
+ $dialog->destroy();
+ die("Bad open");
+ });
+ $browser->{appbar}->set_status(__x("Connecting to server `{server}'",
+ server => $host));
+ eval
+ {
+ $mtn = CachingAutomateStdio->new_from_service($details->{server});
+ };
+ $exception = $@;
+ CachingAutomateStdio->register_error_handler
+ (MTN_SEVERITY_ALL, \&mtn_error_handler);
+ if (! $exception)
+ {
+
+ # Seems to be ok so set up the browser.
+
+ setup_mtn_object($mtn, $browser->{window});
+ $browser->{mtn} = $mtn;
+ $browser->{appbar}->pop();
+ $browser->{appbar}->clear_stack();
+ &{$browser->{update_handler}}($browser, DATABASE_CHANGED);
+
+ }
+ else
+ {
+ $browser->{appbar}->pop();
+ }
+
+ $wm->make_busy($browser, 0);
+
+}
+#
+##############################################################################
+#
# Routine - manage_server_bookmarks_activate_cb
#
# Description - Callback routine called when the user selects the manage
@@ -458,114 +551,6 @@ sub manage_server_bookmarks_activate_cb(
#
##############################################################################
#
-# Routine - connect_to_server_activate_cb
-#
-# Description - Callback routine called when the user selects a server
-# bookmark menu option.
-#
-# Data - $widget : The widget object that received the signal.
-# $details : A record containing the browser instance that is
-# associated with this widget and the name of the
-# server that is to be connected to.
-#
-##############################################################################
-
-
-
-sub connect_to_server_activate_cb($$)
-{
-
- my($widget, $details) = @_;
-
- return if ($details->{browser}->{in_cb});
- local $details->{browser}->{in_cb} = 1;
-
- my($exception,
- $host,
- $mtn);
- my $browser = $details->{browser};
- my $wm = WindowManager->instance();
-
- $wm->make_busy($browser, 1);
- $wm->update_gui();
-
- # See if we know about the server first.
-
- $host = $details->{server};
- $host =~ s/:\d+$//g;
- if (! defined(inet_aton($host)))
- {
- my $dialog;
- $dialog = Gtk2::MessageDialog->new
- ($browser->{window},
- ["modal"],
- "warning",
- "close",
- __x("Server `{server}' is not\nknown to the system.",
- server => $host));
- $wm->allow_input(sub { $dialog->run(); });
- $dialog->destroy();
- }
- else
- {
-
- # Try connecting to the specified server.
-
- CachingAutomateStdio->register_error_handler
- (MTN_SEVERITY_ALL,
- sub {
- my($severity, $message) = @_;
- my $dialog;
- $message =~ s/mtn: warning: //g;
- $message =~ s/mtn: error: //g;
- $message =~ s/mtn: //g;
- $message =~ s/^Corrupt\/missing mtn [^\n]+\n//g;
- $message =~ s/ at .+ line \d+$//g;
- $message =~ s/\s+$//g;
- $message =~ s/\n/ /g;
- $message .= "." unless ($message =~ m/.+\.$/);
- $dialog = Gtk2::MessageDialog->new_with_markup
- ($browser->{window},
- ["modal"],
- "warning",
- "close",
- __x("There is a problem connecting to the server, the "
- . "details are:\n{error_message}",
- error_message =>
- Glib::Markup::escape_text($message)));
- $wm->allow_input(sub { $dialog->run(); });
- $dialog->destroy();
- die("Bad open");
- });
- $browser->{appbar}->set_status(__x("Connecting to server `{server}'",
- server => $host));
- eval
- {
- $mtn = CachingAutomateStdio->new_from_service($details->{server});
- };
- $exception = $@;
- CachingAutomateStdio->register_error_handler
- (MTN_SEVERITY_ALL, \&mtn_error_handler);
- $browser->{appbar}->clear_stack();
- if (! $exception)
- {
-
- # Seems to be ok so set up the browser.
-
- setup_mtn_object($mtn, $browser->{window});
- $browser->{mtn} = $mtn;
- &{$browser->{update_handler}}($browser, DATABASE_CHANGED);
-
- }
-
- }
-
- $wm->make_busy($browser, 0);
-
-}
-#
-##############################################################################
-#
# Routine - quit_activate_cb
#
# Description - Callback routine called when the user selects the quit menu
@@ -1548,7 +1533,7 @@ sub file_change_history_button_clicked_c
#
##############################################################################
#
-# Routine - manifest_browser_treeview_cursor_changed_cb
+# Routine - manifest_browser_treeselection_changed_cb
#
# Description - Callback routine called when the user selects an entry in
# the manifest treeview in a main browser window.
@@ -1561,7 +1546,7 @@ sub file_change_history_button_clicked_c
-sub manifest_browser_treeview_cursor_changed_cb($$)
+sub manifest_browser_treeselection_changed_cb($$)
{
my($widget, $browser) = @_;
@@ -1574,12 +1559,14 @@ sub manifest_browser_treeview_cursor_cha
# Get the manifest entry details for the item that was selected.
- $widget->get_selection()->selected_foreach
- (sub {
- my($model, $path, $iter) = @_;
- $short_name = $model->get($iter, MLS_NAME_COLUMN);
- $manifest_entry = $model->get($iter, MLS_MANIFEST_ENTRY_COLUMN);
- });
+ if ($widget->count_selected_rows() > 0)
+ {
+ my($iter,
+ $model);
+ ($model, $iter) = $widget->get_selected();
+ $short_name = $model->get($iter, MLS_NAME_COLUMN);
+ $manifest_entry = $model->get($iter, MLS_MANIFEST_ENTRY_COLUMN);
+ }
# If the item is a file then display its contents, otherwise if it is a
# directory then just ignore it.
@@ -1588,9 +1575,13 @@ sub manifest_browser_treeview_cursor_cha
{
$browser->{file_being_viewed} = {short_name => $short_name,
manifest_entry => $manifest_entry};
- $browser->{appbar}->clear_stack();
- &{$browser->{update_handler}}($browser, FILE_CHANGED);
}
+ else
+ {
+ $browser->{file_being_viewed} = {};
+ }
+ $browser->{appbar}->clear_stack();
+ &{$browser->{update_handler}}($browser, FILE_CHANGED);
}
#
@@ -1794,6 +1785,7 @@ sub get_browser_window(;$$$$$)
"branch_comboboxentry",
"revision_comboboxentry",
"tagged_checkbutton",
+ "monotone_viz_button",
"directory_comboboxentry",
"directory_up_button",
"find_files_button",
@@ -1975,6 +1967,11 @@ sub get_browser_window(;$$$$$)
$browser->{manifest_browser_treeview}->
set_search_equal_func(\&treeview_column_searcher);
+ $browser->{manifest_browser_treeview}->get_selection()->
+ signal_connect("changed",
+ \&manifest_browser_treeselection_changed_cb,
+ $browser);
+
# Setup the file file viewer (with syntax highlighting).
$browser->{file_view_svbuffer} = Gtk2::SourceView::Buffer->new(undef);
@@ -2272,25 +2269,35 @@ sub update_server_bookmarks_menu($)
# Create a new connect to server submenu.
$submenu = Gtk2::Menu->new();
+ if (scalar(@{$user_preferences->{server_bookmarks}}) > 0)
+ {
+ for my $server (@{$user_preferences->{server_bookmarks}})
+ {
+ $menu_item = Gtk2::MenuItem->new(__($server));
+ $menu_item->signal_connect("activate",
+ \&connect_to_server_activate_cb,
+ {browser => $browser,
+ server => $server});
+ $menu_item->show();
+ $submenu->append($menu_item);
+ }
+ }
+ else
+ {
+ $menu_item = Gtk2::MenuItem->new(__("No Bookmarks"));
+ $menu_item->set_sensitive(FALSE);
+ $menu_item->show();
+ $submenu->append($menu_item);
+ }
+ $menu_item = Gtk2::SeparatorMenuItem->new();
+ $menu_item->show();
+ $submenu->append($menu_item);
$menu_item = Gtk2::MenuItem->new(__("Manage Server Bookmarks"));
$menu_item->signal_connect("activate",
\&manage_server_bookmarks_activate_cb,
$browser);
$menu_item->show();
$submenu->append($menu_item);
- $menu_item = Gtk2::SeparatorMenuItem->new();
- $menu_item->show();
- $submenu->append($menu_item);
- for my $server (@{$user_preferences->{server_bookmarks}})
- {
- $menu_item = Gtk2::MenuItem->new(__($server));
- $menu_item->signal_connect("activate",
- \&connect_to_server_activate_cb,
- {browser => $browser,
- server => $server});
- $menu_item->show();
- $submenu->append($menu_item);
- }
$submenu->show();
# Replace the existing menu with the new one.
@@ -2363,6 +2370,7 @@ sub update_browser_state($$)
($browser->{database_name_value_label},
__x(" ({service_name})",
service_name => $browser->{mtn}->get_service_name()));
+ $browser->{monotone_viz_button}->set_sensitive(FALSE);
}
else
{
@@ -2378,6 +2386,7 @@ sub update_browser_state($$)
__x(" ({database_name})",
database_name => $db_name));
}
+ $browser->{monotone_viz_button}->set_sensitive(TRUE);
}
# Make sure that the branch comboboxentry has the focus and not the