|
8 | 8 | using Avalonia.Threading; |
9 | 9 |
|
10 | 10 | using CommunityToolkit.Mvvm.ComponentModel; |
| 11 | +using SourceGit.Models; |
11 | 12 |
|
12 | 13 | namespace SourceGit.ViewModels |
13 | 14 | { |
@@ -881,6 +882,44 @@ public ContextMenu CreateContextMenuForStagedChanges() |
881 | 882 | return null; |
882 | 883 |
|
883 | 884 | var menu = new ContextMenu(); |
| 885 | + |
| 886 | + var ai = null as MenuItem; |
| 887 | + var services = Preference.Instance.OpenAIServices; |
| 888 | + if (services.Count > 0) |
| 889 | + { |
| 890 | + ai = new MenuItem(); |
| 891 | + ai.Icon = App.CreateMenuIcon("Icons.AIAssist"); |
| 892 | + ai.Header = App.Text("ChangeCM.GenerateCommitMessage"); |
| 893 | + |
| 894 | + if (services.Count == 1) |
| 895 | + { |
| 896 | + ai.Click += (_, e) => |
| 897 | + { |
| 898 | + var dialog = new Views.AIAssistant(services[0], _repo.FullPath, _selectedStaged, generated => CommitMessage = generated); |
| 899 | + App.OpenDialog(dialog); |
| 900 | + e.Handled = true; |
| 901 | + }; |
| 902 | + } |
| 903 | + else |
| 904 | + { |
| 905 | + foreach (var service in services) |
| 906 | + { |
| 907 | + var dup = service; |
| 908 | + |
| 909 | + var item = new MenuItem(); |
| 910 | + item.Header = service.Name; |
| 911 | + item.Click += (_, e) => |
| 912 | + { |
| 913 | + var dialog = new Views.AIAssistant(dup, _repo.FullPath, _selectedStaged, generated => CommitMessage = generated); |
| 914 | + App.OpenDialog(dialog); |
| 915 | + e.Handled = true; |
| 916 | + }; |
| 917 | + |
| 918 | + ai.Items.Add(item); |
| 919 | + } |
| 920 | + } |
| 921 | + } |
| 922 | + |
884 | 923 | if (_selectedStaged.Count == 1) |
885 | 924 | { |
886 | 925 | var change = _selectedStaged[0]; |
@@ -961,24 +1000,6 @@ public ContextMenu CreateContextMenuForStagedChanges() |
961 | 1000 | e.Handled = true; |
962 | 1001 | }; |
963 | 1002 |
|
964 | | - var copyPath = new MenuItem(); |
965 | | - copyPath.Header = App.Text("CopyPath"); |
966 | | - copyPath.Icon = App.CreateMenuIcon("Icons.Copy"); |
967 | | - copyPath.Click += (_, e) => |
968 | | - { |
969 | | - App.CopyText(change.Path); |
970 | | - e.Handled = true; |
971 | | - }; |
972 | | - |
973 | | - var copyFileName = new MenuItem(); |
974 | | - copyFileName.Header = App.Text("CopyFileName"); |
975 | | - copyFileName.Icon = App.CreateMenuIcon("Icons.Copy"); |
976 | | - copyFileName.Click += (_, e) => |
977 | | - { |
978 | | - App.CopyText(Path.GetFileName(change.Path)); |
979 | | - e.Handled = true; |
980 | | - }; |
981 | | - |
982 | 1003 | menu.Items.Add(explore); |
983 | 1004 | menu.Items.Add(openWith); |
984 | 1005 | menu.Items.Add(new MenuItem() { Header = "-" }); |
@@ -1070,6 +1091,30 @@ public ContextMenu CreateContextMenuForStagedChanges() |
1070 | 1091 | menu.Items.Add(new MenuItem() { Header = "-" }); |
1071 | 1092 | } |
1072 | 1093 |
|
| 1094 | + if (ai != null) |
| 1095 | + { |
| 1096 | + menu.Items.Add(ai); |
| 1097 | + menu.Items.Add(new MenuItem() { Header = "-" }); |
| 1098 | + } |
| 1099 | + |
| 1100 | + var copyPath = new MenuItem(); |
| 1101 | + copyPath.Header = App.Text("CopyPath"); |
| 1102 | + copyPath.Icon = App.CreateMenuIcon("Icons.Copy"); |
| 1103 | + copyPath.Click += (_, e) => |
| 1104 | + { |
| 1105 | + App.CopyText(change.Path); |
| 1106 | + e.Handled = true; |
| 1107 | + }; |
| 1108 | + |
| 1109 | + var copyFileName = new MenuItem(); |
| 1110 | + copyFileName.Header = App.Text("CopyFileName"); |
| 1111 | + copyFileName.Icon = App.CreateMenuIcon("Icons.Copy"); |
| 1112 | + copyFileName.Click += (_, e) => |
| 1113 | + { |
| 1114 | + App.CopyText(Path.GetFileName(change.Path)); |
| 1115 | + e.Handled = true; |
| 1116 | + }; |
| 1117 | + |
1073 | 1118 | menu.Items.Add(copyPath); |
1074 | 1119 | menu.Items.Add(copyFileName); |
1075 | 1120 | } |
@@ -1123,6 +1168,12 @@ public ContextMenu CreateContextMenuForStagedChanges() |
1123 | 1168 | menu.Items.Add(unstage); |
1124 | 1169 | menu.Items.Add(stash); |
1125 | 1170 | menu.Items.Add(patch); |
| 1171 | + |
| 1172 | + if (ai != null) |
| 1173 | + { |
| 1174 | + menu.Items.Add(new MenuItem() { Header = "-" }); |
| 1175 | + menu.Items.Add(ai); |
| 1176 | + } |
1126 | 1177 | } |
1127 | 1178 |
|
1128 | 1179 | return menu; |
|
0 commit comments