From d9027f27096c71cc3a7ab6266ac149435486efbb Mon Sep 17 00:00:00 2001 From: Shawn Laffan Date: Tue, 6 Sep 2016 21:19:54 +1000 Subject: [PATCH] Add capacity to reset branch colours under multi-select Uses a toggle button to do so. Updates #600 --- bin/ui/hboxClusteringPage.ui | 16 ++++++++++++- lib/Biodiverse/GUI/Dendrogram.pm | 34 +++++++++++++++++---------- lib/Biodiverse/GUI/Tabs/Clustering.pm | 2 +- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/bin/ui/hboxClusteringPage.ui b/bin/ui/hboxClusteringPage.ui index a304a0e7b..a215cdf11 100644 --- a/bin/ui/hboxClusteringPage.ui +++ b/bin/ui/hboxClusteringPage.ui @@ -1391,7 +1391,7 @@ for RegionGrower analyses. True False - both + icons True @@ -1526,6 +1526,20 @@ This setting has no effect on the slider bar. True + + + True + False + True + When selected, clicking on +a branch will reset it to uncoloured. + True + gtk-clear + + + False + + False diff --git a/lib/Biodiverse/GUI/Dendrogram.pm b/lib/Biodiverse/GUI/Dendrogram.pm index 35ac25a6a..a69db48c1 100644 --- a/lib/Biodiverse/GUI/Dendrogram.pm +++ b/lib/Biodiverse/GUI/Dendrogram.pm @@ -114,6 +114,13 @@ sub new { $self->{sp_index} = undef; bless $self, $class; + foreach my $widget_name (qw /selector_toggle selector_colorbutton/) { + eval { + $self->{$widget_name} + = $self->{parent_tab}->{xmlPage}->get_object($widget_name); + }; + } + # also initialises it $self->increment_sequential_selection_colour(1); @@ -886,7 +893,8 @@ sub recolour_cluster_elements { return if !$cluster_node; - return $colour_for_sequential || COLOUR_PALETTE_OVERFLOW; + return $colour_for_sequential || COLOUR_OUTSIDE_SELECTION; + #COLOUR_PALETTE_OVERFLOW; }; } elsif ($cluster_colour_mode eq 'list-values') { @@ -932,14 +940,14 @@ sub recolour_cluster_elements { sub get_current_sequential_colour { my $self = shift; - - my $widget_name = 'selector_colorbutton'; + my $colour; eval { - my $widget = $self->{parent_tab}->{xmlPage}->get_object($widget_name); - $colour = $widget->get_color; + $colour = !$self->{selector_toggle}->get_active + ? $self->{selector_colorbutton}->get_color + : undef; }; - #croak $@ if $@; + return $colour; } @@ -947,7 +955,12 @@ sub increment_sequential_selection_colour { my $self = shift; my $force_increment = shift; - return if !$force_increment && $self->{cluster_colour_mode} ne 'sequential'; + return if !$force_increment + && $self->{cluster_colour_mode} ne 'sequential'; + + return + if $self->{selector_toggle} + && $self->{selector_toggle}->get_active; my $colour = $self->get_current_sequential_colour; @@ -963,12 +976,9 @@ sub increment_sequential_selection_colour { $colour = $colours[0]; } - my $widget_name = 'selector_colorbutton'; eval { - my $widget = $self->{parent_tab}->{xmlPage}->get_object($widget_name); - $widget->set_color ($colour); + $self->{selector_colorbutton}->set_color ($colour); }; - #croak $@ if $@; $self->{last_sequential_colour} = $colour; @@ -1007,7 +1017,7 @@ sub recolour_cluster_lines { $colour_ref = $self->{node_palette_colours}{$node_name} || COLOUR_RED; } elsif ($colour_mode eq 'sequential') { - $colour_ref = $self->get_current_sequential_colour || COLOUR_RED; + $colour_ref = $self->get_current_sequential_colour || COLOUR_BLACK; } elsif ($colour_mode eq 'list-values') { diff --git a/lib/Biodiverse/GUI/Tabs/Clustering.pm b/lib/Biodiverse/GUI/Tabs/Clustering.pm index 026494bd6..ada1a6921 100644 --- a/lib/Biodiverse/GUI/Tabs/Clustering.pm +++ b/lib/Biodiverse/GUI/Tabs/Clustering.pm @@ -683,7 +683,7 @@ sub on_combo_map_list_changed { # show/hide some widgets my @cluster_widgets = qw /label_cluster_spin_button spinClusters/; - my @cloister_widgets = qw /label_selector_colour selector_colorbutton/; + my @cloister_widgets = qw /label_selector_colour selector_colorbutton selector_toggle/; my $m1 = $list eq 'Cloister' ? 'hide' : 'show'; my $m2 = $list eq 'Cloister' ? 'show' : 'hide'; foreach my $widget_name (@cluster_widgets) {