Skip to content

Commit 52b51ff

Browse files
committed
enhance: AI-based commit message generator (sourcegit-scm#2255)
- Make `AI Assistant` window resizable - Make `AI Assistant` window non-modal dialog - Clean up code Signed-off-by: leo <longshuang@msn.cn>
1 parent f726d9f commit 52b51ff

3 files changed

Lines changed: 35 additions & 13 deletions

File tree

src/Views/AIAssistant.axaml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:v="using:SourceGit.Views"
66
xmlns:vm="using:SourceGit.ViewModels"
7-
mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="120"
7+
mc:Ignorable="d" d:DesignWidth="520" d:DesignHeight="400"
88
x:Class="SourceGit.Views.AIAssistant"
99
x:DataType="vm:AIAssistant"
1010
x:Name="ThisControl"
1111
Icon="/App.ico"
1212
Title="{DynamicResource Text.AIAssistant}"
13-
Width="520" SizeToContent="Height"
14-
CanResize="False"
13+
Width="520" Height="400"
14+
CanResize="True"
1515
WindowStartupLocation="CenterOwner">
16-
<Grid RowDefinitions="Auto,Auto,Auto">
16+
<Grid RowDefinitions="Auto,*,Auto">
1717
<!-- TitleBar -->
1818
<Grid Grid.Row="0" Height="28" IsVisible="{Binding !#ThisControl.UseSystemWindowFrame}">
1919
<Border Background="{DynamicResource Brush.TitleBar}"
@@ -39,7 +39,6 @@
3939
<!-- AI response -->
4040
<v:AIResponseView Grid.Row="1"
4141
Margin="8"
42-
Height="320"
4342
BorderThickness="1"
4443
BorderBrush="{DynamicResource Brush.Border2}"
4544
Background="{DynamicResource Brush.Contents}"

src/Views/CommitMessageToolBox.axaml.cs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ private async void OnOpenCommitMessagePicker(object sender, RoutedEventArgs e)
565565
e.Handled = true;
566566
}
567567

568-
private async void OnOpenOpenAIHelper(object sender, RoutedEventArgs e)
568+
private void OnOpenOpenAIHelper(object sender, RoutedEventArgs e)
569569
{
570570
if (DataContext is ViewModels.WorkingCopy vm && sender is Button button && ShowAdvancedOptions)
571571
{
@@ -588,7 +588,7 @@ private async void OnOpenOpenAIHelper(object sender, RoutedEventArgs e)
588588

589589
if (services.Count == 1)
590590
{
591-
await App.ShowDialog(new ViewModels.AIAssistant(repo, services[0], vm.Staged));
591+
DoOpenAIAssistant(repo, services[0], vm.Staged);
592592
e.Handled = true;
593593
return;
594594
}
@@ -599,9 +599,9 @@ private async void OnOpenOpenAIHelper(object sender, RoutedEventArgs e)
599599
var dup = service;
600600
var item = new MenuItem();
601601
item.Header = service.Name;
602-
item.Click += async (_, ev) =>
602+
item.Click += (_, ev) =>
603603
{
604-
await App.ShowDialog(new ViewModels.AIAssistant(repo, dup, vm.Staged));
604+
DoOpenAIAssistant(repo, dup, vm.Staged);
605605
ev.Handled = true;
606606
};
607607

@@ -637,5 +637,16 @@ private void OnOpenConventionalCommitHelper(object _, RoutedEventArgs e)
637637

638638
e.Handled = true;
639639
}
640+
641+
private void DoOpenAIAssistant(ViewModels.Repository repo, AI.Service service, List<Models.Change> changes)
642+
{
643+
var owner = TopLevel.GetTopLevel(this) as Window;
644+
if (owner == null)
645+
return;
646+
647+
var assistant = new ViewModels.AIAssistant(repo, service, changes);
648+
var view = new AIAssistant() { DataContext = assistant };
649+
view.Show(owner);
650+
}
640651
}
641652
}

src/Views/WorkingCopy.axaml.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.IO;
34

45
using Avalonia.Controls;
@@ -927,9 +928,9 @@ public ContextMenu CreateContextMenuForStagedChanges(ViewModels.WorkingCopy vm,
927928

928929
if (services.Count == 1)
929930
{
930-
ai.Click += async (_, e) =>
931+
ai.Click += (_, e) =>
931932
{
932-
await App.ShowDialog(new ViewModels.AIAssistant(repo, services[0], selectedStaged));
933+
DoOpenAIAssistant(repo, services[0], selectedStaged);
933934
e.Handled = true;
934935
};
935936
}
@@ -941,9 +942,9 @@ public ContextMenu CreateContextMenuForStagedChanges(ViewModels.WorkingCopy vm,
941942

942943
var item = new MenuItem();
943944
item.Header = service.Name;
944-
item.Click += async (_, e) =>
945+
item.Click += (_, e) =>
945946
{
946-
await App.ShowDialog(new ViewModels.AIAssistant(repo, dup, selectedStaged));
947+
DoOpenAIAssistant(repo, dup, selectedStaged);
947948
e.Handled = true;
948949
};
949950

@@ -1369,5 +1370,16 @@ private void TryToAddCustomActionsToContextMenu(ViewModels.Repository repo, Cont
13691370
menu.Items.Add(custom);
13701371
menu.Items.Add(new MenuItem() { Header = "-" });
13711372
}
1373+
1374+
private void DoOpenAIAssistant(ViewModels.Repository repo, AI.Service serivce, List<Models.Change> changes)
1375+
{
1376+
var owner = TopLevel.GetTopLevel(this) as Window;
1377+
if (owner == null)
1378+
return;
1379+
1380+
var assistant = new ViewModels.AIAssistant(repo, serivce, changes);
1381+
var view = new AIAssistant() { DataContext = assistant };
1382+
view.Show(owner);
1383+
}
13721384
}
13731385
}

0 commit comments

Comments
 (0)