mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-21 04:04:59 +00:00
110 lines
3.3 KiB
C#
110 lines
3.3 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Input;
|
|
using Avalonia.Interactivity;
|
|
|
|
namespace SourceGit.Views
|
|
{
|
|
public partial class WorkingCopy : UserControl
|
|
{
|
|
public WorkingCopy()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void OnOpenCommitMessagePicker(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is Button button && DataContext is ViewModels.WorkingCopy vm)
|
|
{
|
|
var menu = vm.CreateContextMenuForCommitMessages();
|
|
menu.Placement = PlacementMode.TopEdgeAlignedLeft;
|
|
button.OpenContextMenu(menu);
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnUnstagedContextRequested(object sender, ContextRequestedEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.WorkingCopy vm)
|
|
{
|
|
var menu = vm.CreateContextMenuForUnstagedChanges();
|
|
(sender as Control)?.OpenContextMenu(menu);
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnStagedContextRequested(object sender, ContextRequestedEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.WorkingCopy vm)
|
|
{
|
|
var menu = vm.CreateContextMenuForStagedChanges();
|
|
(sender as Control)?.OpenContextMenu(menu);
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnUnstagedChangeDoubleTapped(object _, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.WorkingCopy vm)
|
|
{
|
|
vm.StageSelected();
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnStagedChangeDoubleTapped(object _, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.WorkingCopy vm)
|
|
{
|
|
vm.UnstageSelected();
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnUnstagedKeyDown(object _, KeyEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.WorkingCopy vm)
|
|
{
|
|
if (e.Key is Key.Space or Key.Enter)
|
|
{
|
|
vm.StageSelected();
|
|
e.Handled = true;
|
|
return;
|
|
}
|
|
|
|
if (e.Key is Key.Delete or Key.Back && vm.SelectedUnstaged is { Count: > 0 } selected)
|
|
{
|
|
vm.Discard(selected);
|
|
e.Handled = true;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnStagedKeyDown(object _, KeyEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.WorkingCopy vm && e.Key is Key.Space or Key.Enter)
|
|
{
|
|
vm.UnstageSelected();
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnOpenAIAssist(object _, RoutedEventArgs e)
|
|
{
|
|
if (!Models.OpenAI.IsValid)
|
|
{
|
|
App.RaiseException(null, $"Bad configuration for OpenAI");
|
|
return;
|
|
}
|
|
|
|
if (DataContext is ViewModels.WorkingCopy vm && vm.Staged is { Count: > 0 })
|
|
{
|
|
var dialog = new AIAssistant() { DataContext = vm };
|
|
dialog.GenerateCommitMessage();
|
|
App.OpenDialog(dialog);
|
|
}
|
|
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|