|
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