@@ -703,12 +703,117 @@ public ContextMenu MakeContextMenu(ListBox list)
703
703
return menu ;
704
704
}
705
705
706
+ private Models . FilterMode GetFilterMode ( string pattern )
707
+ {
708
+ foreach ( var filter in _repo . Settings . HistoriesFilters )
709
+ {
710
+ if ( filter . Pattern . Equals ( pattern , StringComparison . Ordinal ) )
711
+ return filter . Mode ;
712
+ }
713
+
714
+ return Models . FilterMode . None ;
715
+ }
716
+
717
+ private void FillBranchVisibilityMenu ( MenuItem submenu , Models . Branch branch )
718
+ {
719
+ var visibility = new MenuItem ( ) ;
720
+ visibility . Icon = App . CreateMenuIcon ( "Icons.Eye" ) ;
721
+ visibility . Header = App . Text ( "Repository.FilterCommits" ) ;
722
+
723
+ var exclude = new MenuItem ( ) ;
724
+ exclude . Icon = App . CreateMenuIcon ( "Icons.EyeClose" ) ;
725
+ exclude . Header = App . Text ( "Repository.FilterCommits.Exclude" ) ;
726
+ exclude . Click += ( _ , e ) =>
727
+ {
728
+ _repo . SetBranchFilterMode ( branch , Models . FilterMode . Excluded ) ;
729
+ e . Handled = true ;
730
+ } ;
731
+
732
+ var filterMode = GetFilterMode ( branch . FullName ) ;
733
+ if ( filterMode == Models . FilterMode . None )
734
+ {
735
+ var include = new MenuItem ( ) ;
736
+ include . Icon = App . CreateMenuIcon ( "Icons.Filter" ) ;
737
+ include . Header = App . Text ( "Repository.FilterCommits.Include" ) ;
738
+ include . Click += ( _ , e ) =>
739
+ {
740
+ _repo . SetBranchFilterMode ( branch , Models . FilterMode . Included ) ;
741
+ e . Handled = true ;
742
+ } ;
743
+ visibility . Items . Add ( include ) ;
744
+ visibility . Items . Add ( exclude ) ;
745
+ }
746
+ else
747
+ {
748
+ var unset = new MenuItem ( ) ;
749
+ unset . Header = App . Text ( "Repository.FilterCommits.Default" ) ;
750
+ unset . Click += ( _ , e ) =>
751
+ {
752
+ _repo . SetBranchFilterMode ( branch , Models . FilterMode . None ) ;
753
+ e . Handled = true ;
754
+ } ;
755
+ visibility . Items . Add ( exclude ) ;
756
+ visibility . Items . Add ( unset ) ;
757
+ }
758
+
759
+ submenu . Items . Add ( visibility ) ;
760
+ submenu . Items . Add ( new MenuItem ( ) { Header = "-" } ) ;
761
+ }
762
+
763
+ private void FillTagVisibilityMenu ( MenuItem submenu , Models . Tag tag )
764
+ {
765
+ var visibility = new MenuItem ( ) ;
766
+ visibility . Icon = App . CreateMenuIcon ( "Icons.Eye" ) ;
767
+ visibility . Header = App . Text ( "Repository.FilterCommits" ) ;
768
+
769
+ var exclude = new MenuItem ( ) ;
770
+ exclude . Icon = App . CreateMenuIcon ( "Icons.EyeClose" ) ;
771
+ exclude . Header = App . Text ( "Repository.FilterCommits.Exclude" ) ;
772
+ exclude . Click += ( _ , e ) =>
773
+ {
774
+ _repo . SetTagFilterMode ( tag , Models . FilterMode . Excluded ) ;
775
+ e . Handled = true ;
776
+ } ;
777
+
778
+ var filterMode = GetFilterMode ( tag . Name ) ;
779
+ if ( filterMode == Models . FilterMode . None )
780
+ {
781
+ var include = new MenuItem ( ) ;
782
+ include . Icon = App . CreateMenuIcon ( "Icons.Filter" ) ;
783
+ include . Header = App . Text ( "Repository.FilterCommits.Include" ) ;
784
+ include . Click += ( _ , e ) =>
785
+ {
786
+ _repo . SetTagFilterMode ( tag , Models . FilterMode . Included ) ;
787
+ e . Handled = true ;
788
+ } ;
789
+ visibility . Items . Add ( include ) ;
790
+ visibility . Items . Add ( exclude ) ;
791
+ }
792
+ else
793
+ {
794
+ var unset = new MenuItem ( ) ;
795
+ unset . Header = App . Text ( "Repository.FilterCommits.Default" ) ;
796
+ unset . Click += ( _ , e ) =>
797
+ {
798
+ _repo . SetTagFilterMode ( tag , Models . FilterMode . None ) ;
799
+ e . Handled = true ;
800
+ } ;
801
+ visibility . Items . Add ( exclude ) ;
802
+ visibility . Items . Add ( unset ) ;
803
+ }
804
+
805
+ submenu . Items . Add ( visibility ) ;
806
+ submenu . Items . Add ( new MenuItem ( ) { Header = "-" } ) ;
807
+ }
808
+
706
809
private void FillCurrentBranchMenu ( ContextMenu menu , Models . Branch current )
707
810
{
708
811
var submenu = new MenuItem ( ) ;
709
812
submenu . Icon = App . CreateMenuIcon ( "Icons.Branch" ) ;
710
813
submenu . Header = current . Name ;
711
814
815
+ FillBranchVisibilityMenu ( submenu , current ) ;
816
+
712
817
if ( ! string . IsNullOrEmpty ( current . Upstream ) )
713
818
{
714
819
var upstream = current . Upstream . Substring ( 13 ) ;
@@ -786,6 +891,8 @@ private void FillOtherLocalBranchMenu(ContextMenu menu, Models.Branch branch, Mo
786
891
submenu . Icon = App . CreateMenuIcon ( "Icons.Branch" ) ;
787
892
submenu . Header = branch . Name ;
788
893
894
+ FillBranchVisibilityMenu ( submenu , branch ) ;
895
+
789
896
var checkout = new MenuItem ( ) ;
790
897
checkout . Header = new Views . NameHighlightedTextBlock ( "BranchCM.Checkout" , branch . Name ) ;
791
898
checkout . Icon = App . CreateMenuIcon ( "Icons.Check" ) ;
@@ -858,6 +965,8 @@ private void FillRemoteBranchMenu(ContextMenu menu, Models.Branch branch, Models
858
965
submenu . Icon = App . CreateMenuIcon ( "Icons.Branch" ) ;
859
966
submenu . Header = name ;
860
967
968
+ FillBranchVisibilityMenu ( submenu , branch ) ;
969
+
861
970
var checkout = new MenuItem ( ) ;
862
971
checkout . Header = new Views . NameHighlightedTextBlock ( "BranchCM.Checkout" , name ) ;
863
972
checkout . Icon = App . CreateMenuIcon ( "Icons.Check" ) ;
@@ -903,6 +1012,8 @@ private void FillTagMenu(ContextMenu menu, Models.Tag tag, Models.Branch current
903
1012
submenu . Icon = App . CreateMenuIcon ( "Icons.Tag" ) ;
904
1013
submenu . MinWidth = 200 ;
905
1014
1015
+ FillTagVisibilityMenu ( submenu , tag ) ;
1016
+
906
1017
var push = new MenuItem ( ) ;
907
1018
push . Header = new Views . NameHighlightedTextBlock ( "TagCM.Push" , tag . Name ) ;
908
1019
push . Icon = App . CreateMenuIcon ( "Icons.Push" ) ;
0 commit comments