#
#
# patch "mtn-browse"
# from [96ddbb57a8aecd5db92c1635b9627410b6402ae7]
# to [a02e9ee76d42e5a1c9f50a582631be1b5173b993]
#
# patch "mtn-browse.glade"
# from [32a19a669843c4ba9f45293d822899dd11c5b1fc]
# to [bb6f5450ac874158428dbe8ca25c33b7adf083ee]
#
============================================================
--- mtn-browse 96ddbb57a8aecd5db92c1635b9627410b6402ae7
+++ mtn-browse a02e9ee76d42e5a1c9f50a582631be1b5173b993
@@ -88,9 +88,10 @@ use constant REVISION_CHANGED =>
# Constants for the columns within the manifest ListStore widget.
-use constant RLS_ICON_COLUMN => 0;
-use constant RLS_NAME_COLUMN => 1;
-use constant RLS_DATE_COLUMN => 2;
+use constant RLS_ICON_COLUMN => 0;
+use constant RLS_NAME_COLUMN => 1;
+use constant RLS_DATE_COLUMN => 2;
+use constant RLS_MANIFEST_ENTRY_COLUMN => 3;
# The Glade generated widgets object.
@@ -239,8 +240,10 @@ sub new_browser_instance()
# Setup the tree view file browser.
- $browser->{manifest_liststore} =
- Gtk2::ListStore->new("Glib::String", "Glib::String", "Glib::String");
+ $browser->{manifest_liststore} = Gtk2::ListStore->new("Glib::String",
+ "Glib::String",
+ "Glib::String",
+ "Glib::Scalar");
$browser->{manifest_treeview}->set_model($browser->{manifest_liststore});
$tv_column = Gtk2::TreeViewColumn->new();
@@ -274,10 +277,7 @@ sub new_browser_instance()
$tv_column->set_attributes($renderer, "markup" => RLS_DATE_COLUMN);
$browser->{manifest_treeview}->append_column($tv_column);
- # TODO $browser->{manifest_treeview}->set_enable_search(TRUE);
- $browser->{manifest_treeview}->set_enable_search(FALSE);
- $browser->{manifest_treeview}->set_search_equal_func
- (sub { print "EQUAL\n"; });
+ $browser->{manifest_treeview}->set_search_column(RLS_NAME_COLUMN);
# Update the browser'a internal state.
@@ -469,6 +469,7 @@ sub combo_key_release_event_cb($$$)
}
$combo_details->{value} = $value;
+ $combo_details->{last_typed_len} = length($value);
$combo_details->{completed} = $completed;
# Update the pulldown choices.
@@ -513,7 +514,8 @@ sub directory_up_button_clicked_cb
my($widget, $browser) = @_;
- my $value;
+ my($len,
+ $value);
return if ($browser->{in_cb});
local $browser->{in_cb} = 1;
@@ -526,7 +528,14 @@ sub directory_up_button_clicked_cb
{
if ($value =~ m/^.+\/.+/o)
{
- ($value) = ($value =~ m/^(.+)\/[^\/]+$/o);
+ if ($value =~ m/^(.+)\/[^\/]+$/o)
+ {
+ ($value) = ($value =~ m/^(.+)\/[^\/]+$/o);
+ }
+ else
+ {
+ ($value) = ($value =~ m/^(.+)\/$/o)
+ }
}
else
{
@@ -534,6 +543,17 @@ sub directory_up_button_clicked_cb
}
$browser->{directory_combo_details}->{value} = $value;
$browser->{directory_combo_details}->{completed} = 1;
+ $len = length($value);
+ if ($len < $browser->{directory_combo_details}->{last_typed_len})
+ {
+ $browser->{directory_combo}->get_model()->clear();
+ foreach my $item (@{$browser->{directory_combo_details}->{list}})
+ {
+ $browser->{directory_combo}->append_text($item)
+ if ($value eq substr($item, 0, $len));
+ }
+ $browser->{directory_combo_details}->{last_typed_len} = $len;
+ }
$browser->{directory_combo}->child()->set_text($value);
$browser->{main_appbar}->set_status("");
update_browser_state($browser, DIRECTORY_CHANGED);
@@ -566,6 +586,8 @@ sub manifest_treeview_cursor_changed_cb(
sub manifest_treeview_cursor_changed_cb($$)
{
+ return;
+
my($widget, $browser) = @_;
my $iter;
@@ -615,10 +637,6 @@ sub manifest_treeview_cursor_changed_cb(
# event that has occurred.
# $browser : The browser instance that is associated with
# this widget.
-# Return Value : TRUE if the event has been handled and needs
-# no further handling, otherwise false if the
-# event should carry on through the remaining
-# event handling.
#
##############################################################################
@@ -629,25 +647,34 @@ sub manifest_treeview_row_activated_cb($
my($widget, $tree_path, $tree_view_column, $browser) = @_;
- my $iter;
+ my(@list,
+ $manifest_entry);
return if ($browser->{in_cb});
local $browser->{in_cb} = 1;
- $browser->{manifest_liststore}->clear();
+ # Get the manifest entry details for the item that was double-clicked.
- $iter = $browser->{manifest_liststore}->append();
- $browser->{manifest_liststore}->set($iter,
- RLS_ICON_COLUMN, "gtk-open",
- RLS_NAME_COLUMN, "the-main-dir",
- RLS_DATE_COLUMN, "2005-01-01");
- $iter = $browser->{manifest_liststore}->append();
+ $widget->get_selection()->selected_foreach
+ (sub
+ {
+ my($model, $path, $iter) = @_;
+ $manifest_entry = $model->get($iter, RLS_MANIFEST_ENTRY_COLUMN);
+ });
- print "RA " . scalar(@_) . "\n";
- return FALSE;
- print "RA : " . Dumper address@hidden;
- return FALSE;
+ # If the item is a directory then change to it, if it is a file then
+ # display its contents.
+ if ($manifest_entry->{type} eq "directory")
+ {
+ $browser->{directory_combo_details}->{value} = $manifest_entry->{name};
+ $browser->{directory_combo_details}->{completed} = 1;
+ $browser->{directory_combo}->child()->
+ set_text($manifest_entry->{name});
+ $browser->{main_appbar}->set_status("");
+ update_browser_state($browser, DIRECTORY_CHANGED);
+ }
+
}
#
##############################################################################
@@ -816,6 +843,7 @@ sub update_browser_state($$)
$browser->{directory_combo_details}->{completion_cache} = {};
$browser->{directory_combo_details}->{completed} = 0;
+ $browser->{directory_combo_details}->{last_typed_len} = 0;
$browser->{directory_combo_details}->{value} = "";
# Get the new manifest.
@@ -888,9 +916,13 @@ sub update_browser_state($$)
($item->{manifest_entry}->{type} eq "directory")
? "gtk-open" : "gtk-file",
RLS_NAME_COLUMN, $item->{name},
- RLS_DATE_COLUMN, "2005-01-01");
+ RLS_DATE_COLUMN, "2005-01-01",
+ RLS_MANIFEST_ENTRY_COLUMN, $item->{manifest_entry});
}
+ $browser->{manifest_treeview}->scroll_to_point(0, 0)
+ if ($browser->{manifest_treeview}->realized());
+
}
if ($changed & FILE)
============================================================
--- mtn-browse.glade 32a19a669843c4ba9f45293d822899dd11c5b1fc
+++ mtn-browse.glade bb6f5450ac874158428dbe8ca25c33b7adf083ee
@@ -752,7 +752,7 @@ criteria for selecting a revisionName of the file being displayed
1
1
- 0 0 106 10 95.4 106
+ 0 0 118 10 106.2 118
0 0 17 10 15.3 17
@@ -804,7 +804,7 @@ criteria for selecting a revisionDate of when file was last changed
1
1
- 0 0 106 10 95.4 106
+ 0 0 118 10 106.2 118
0 0 17 10 15.3 17
@@ -920,7 +920,7 @@ criteria for selecting a revisionFile's unique id in database
1
1
- 0 0 112 10 100.8 112
+ 0 0 124 10 111.6 124
0 0 17 10 15.3 17
@@ -973,7 +973,7 @@ file was last changed
file was last changed
1
1
- 0 0 112 10 100.8 112
+ 0 0 124 10 111.6 124
0 0 17 10 15.3 17