# # # patch "lib/perl/AdvancedFind.pm" # from [2e6a8f72c9e2c69f85924b229a62ba71a974a9bf] # to [09e91dd3b0bdf7d3cd924de52572eb08018b287f] # # patch "lib/perl/Common.pm" # from [f2ee7741d79bf65a42e70c61c19122e45e9402e4] # to [450a3318ac84e9b66911ac91ad42065267493e79] # # patch "lib/perl/FindFiles.pm" # from [65cd5974cc8192ab2f72bf75467f6fdd77cc5068] # to [85ba835b5b5b1b5b5266973af5711fd6660652ee] # # patch "lib/perl/Preferences.pm" # from [1aff77d84e25bc356263724647e787e12cb88f24] # to [ca998b905ed0288f6ae382d3297e89c64c38779e] # # patch "lib/ui/mtn-browse.glade" # from [8601c9c63f24e449ff2af42b19f5e722aa755583] # to [960512beb54230deef97e1e6fe61a826df8d06c3] # # patch "mtn-browse" # from [5e8e62c785b3bcd0573e7c355ca3bc567e32a1d8] # to [441164fbe6ab758e910f2cbf08ad0411ddb4422f] # ============================================================ --- lib/perl/AdvancedFind.pm 2e6a8f72c9e2c69f85924b229a62ba71a974a9bf +++ lib/perl/AdvancedFind.pm 09e91dd3b0bdf7d3cd924de52572eb08018b287f @@ -665,8 +665,12 @@ sub get_advanced_find_window($) $tv_column->set_attributes($renderer, "text" => AFLS_AUTHOR_COLUMN); $instance->{revisions_treeview}->append_column($tv_column); + treeview_setup_search_column_selection + ($instance->{revisions_treeview}, 0 .. 3); $instance->{revisions_treeview}-> set_search_column(AFLS_REVISION_ID_COLUMN); + $instance->{revisions_treeview}-> + set_search_equal_func(\&treeview_column_searcher); # Setup the revision details viewer. @@ -715,6 +719,8 @@ sub get_advanced_find_window($) $instance->{revision_combo_details}->{preset} = 0; $instance->{appbar}->set_progress_percentage(0); $instance->{appbar}->clear_stack(); + $instance->{revisions_treeview}-> + set_search_column(AFLS_REVISION_ID_COLUMN); &{$instance->{update_handler}}($instance, NEW_FIND); $instance->{window}->show_all(); ============================================================ --- lib/perl/Common.pm f2ee7741d79bf65a42e70c61c19122e45e9402e4 +++ lib/perl/Common.pm 450a3318ac84e9b66911ac91ad42065267493e79 @@ -73,6 +73,8 @@ sub set_label_value($$); sub run_command($@); sub save_as_file($$$); sub set_label_value($$); +sub treeview_column_searcher($$$$); +sub treeview_setup_search_column_selection($@); # ############################################################################## # @@ -546,6 +548,163 @@ sub save_as_file($$$) # ############################################################################## # +# Routine - treeview_setup_search_column_selection +# +# Description - Setup the specified treeview column headers so that the +# user can select which column to search in. +# +# Data - $treeview : The treeview widget that is to have this +# feature enabled on it. +# @columns : A list of column numbers that are to be setup. +# +############################################################################## + + + +sub treeview_setup_search_column_selection($@) +{ + + my($treeview, @columns) = @_; + + foreach my $col_nr (@columns) + { + + my($button, + $col, + $label); + + next unless (defined($col = $treeview->get_column($col_nr))); + + # We need to add a widget if we are going to get back a button widget + # from $treeview->get_parent() (this is just how Gtk2 works, I guess + # the header widgets are by default some sort of cut down affair). + + $label = Gtk2::Label->new($col->get_title()); + $col->set_widget($label); + $label->show(); + + # Find the header button widget. + + for ($button = $col->get_widget(); + defined($button) && ! $button->isa("Gtk2::Button"); + $button = $button->get_parent()) + { + } + next unless (defined($button)); + + # Attach a mouse button press event callback to the column header + # button. + + $button->signal_connect + ("button_press_event", + sub { + + my($widget, $event, $data) = @_; + + # We are only interested in right button mouse clicks. + + return FALSE unless ($event->button() == 3); + + my($menu, + $menu_item); + + # Create a popup menu with the search option in it. + + $menu = Gtk2::Menu->new(); + $menu_item = Gtk2::MenuItem->new("Select As Search Column"); + $menu->append($menu_item); + $menu_item->show(); + + # Setup a callback that will set up that column for searchin + # if the user should select the option. + + $menu_item->signal_connect + ("activate", + sub { + + my($widget, $data) = @_; + + $data->{treeview}-> + set_search_column($data->{col_nr}); + + }, + $data); + + # Display the popup menu. + + $menu->popup(undef, + undef, + undef, + undef, + $event->button(), + $event->time()); + + return TRUE; + + }, + {treeview => $treeview, + col_nr => $col_nr}); + + } + +} +# +############################################################################## +# +# Routine - treeview_column_searcher +# +# Description - Callback routine used for comparing search terms with data +# inside a particular treeview's cell. +# +# Data - $model : The underlying data model used by the +# treeview. +# $column : The number of the search column. +# $key : The data that is to be searched for. +# $iter : The treeview iterator for the row that is to +# be compared. +# Return Value : TRUE if there is no match, otherwise FALSE +# if there is. +# +############################################################################## + + + +sub treeview_column_searcher($$$$) +{ + + my($model, $column, $key, $iter) = @_; + + my($re, + $value); + + # Get the value in the treeview's cell. + + $value = $model->get($iter, $column); + + # Compile the user's regular expression and return a no-match if it doesn't + # compile. + + eval + { + $re = qr/$key/; + }; + return TRUE if ($@ ne ""); + + # Actually do the match. + + if ($value =~ m/$re/) + { + return FALSE; + } + else + { + return TRUE; + } + +} +# +############################################################################## +# # Routine - get_branch_revisions # # Description - Get a list of revision ids or tags for the specified branch ============================================================ --- lib/perl/FindFiles.pm 65cd5974cc8192ab2f72bf75467f6fdd77cc5068 +++ lib/perl/FindFiles.pm 85ba835b5b5b1b5b5266973af5711fd6660652ee @@ -971,8 +971,10 @@ sub get_find_files_window() $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); - # Disable the approprate widgets by default. + # Disable the appropriate widgets by default. for my $widget (@{$instance->{date_sensitive_group}}, @{$instance->{size_sensitive_group}}) ============================================================ --- lib/perl/Preferences.pm 1aff77d84e25bc356263724647e787e12cb88f24 +++ lib/perl/Preferences.pm ca998b905ed0288f6ae382d3297e89c64c38779e @@ -1111,7 +1111,11 @@ sub get_preferences_window($$) $tv_column->set_attributes($renderer, "text" => MTLS_HELPER_COLUMN); $instance->{mime_types_treeview}->append_column($tv_column); + treeview_setup_search_column_selection + ($instance->{mime_types_treeview}, 0 .. 2); $instance->{mime_types_treeview}->set_search_column(MTLS_NAME_COLUMN); + $instance->{mime_types_treeview}-> + set_search_equal_func(\&treeview_column_searcher); # Setup the file name patterns list. @@ -1128,6 +1132,8 @@ sub get_preferences_window($$) $instance->{file_name_patterns_treeview}->append_column($tv_column); $instance->{file_name_patterns_treeview}->set_search_column(0); + $instance->{file_name_patterns_treeview}-> + set_search_equal_func(\&treeview_column_searcher); # Reparent the preferences window to the specified parent. @@ -1162,6 +1168,7 @@ sub get_preferences_window($$) $instance->{mime_types_hpaned}->set_position(700); $instance->{window}->set_transient_for($parent); $instance->{preferences} = $preferences; + $instance->{mime_types_treeview}->set_search_column(MTLS_NAME_COLUMN); load_preferences_into_gui($instance); $instance->{window}->show_all(); ============================================================ --- lib/ui/mtn-browse.glade 8601c9c63f24e449ff2af42b19f5e722aa755583 +++ lib/ui/mtn-browse.glade 960512beb54230deef97e1e6fe61a826df8d06c3 @@ -901,7 +901,7 @@ or more search criteria False - True + False @@ -2835,7 +2835,7 @@ Tag False - True + False @@ -7291,7 +7291,7 @@ of the command False - True + False ============================================================ --- mtn-browse 5e8e62c785b3bcd0573e7c355ca3bc567e32a1d8 +++ mtn-browse 441164fbe6ab758e910f2cbf08ad0411ddb4422f @@ -1589,11 +1589,15 @@ sub get_browser_window(;$$$$$) $tv_column->set_attributes($renderer, "text" => MLS_AUTHOR_COLUMN); $browser->{manifest_browser_treeview}->append_column($tv_column); + treeview_setup_search_column_selection + ($browser->{manifest_browser_treeview}, 1 .. 3); } $browser->{show_file_details} = $user_preferences->{show_file_details}; $browser->{manifest_browser_treeview}-> set_search_column(MLS_NAME_COLUMN); + $browser->{manifest_browser_treeview}-> + set_search_equal_func(\&treeview_column_searcher); # Setup the file file viewer (with syntax highlighting). @@ -1661,6 +1665,8 @@ sub get_browser_window(;$$$$$) $browser->{revision_combo_details}->{preset} = 0; $browser->{directory_combo_details}->{preset} = 0; $browser->{file_being_viewed_preset_value} = ""; + $browser->{manifest_browser_treeview}-> + set_search_column(MLS_NAME_COLUMN); $browser->{show_line_numbers_togglebutton}->set_active(FALSE); $browser->{file_view_sv}->set_show_line_numbers(FALSE); &{$browser->{update_handler}}($browser, ALL_CHANGED);