style: add .editorconfig for code formatting. see issu #25

This commit is contained in:
leo 2024-03-18 09:37:06 +08:00
parent a8eeea4f78
commit 18aaa0a143
225 changed files with 7781 additions and 3911 deletions

View file

@ -1,44 +1,56 @@
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Media;
using Avalonia.VisualTree;
using System;
namespace SourceGit.Views {
public class LayoutableGrid : Grid {
namespace SourceGit.Views
{
public class LayoutableGrid : Grid
{
public static readonly StyledProperty<bool> UseHorizontalProperty =
AvaloniaProperty.Register<LayoutableGrid, bool>(nameof(UseHorizontal), false);
public bool UseHorizontal {
public bool UseHorizontal
{
get => GetValue(UseHorizontalProperty);
set => SetValue(UseHorizontalProperty, value);
}
protected override Type StyleKeyOverride => typeof(Grid);
static LayoutableGrid() {
static LayoutableGrid()
{
UseHorizontalProperty.Changed.AddClassHandler<LayoutableGrid>((o, _) => o.RefreshLayout());
}
public override void ApplyTemplate() {
public override void ApplyTemplate()
{
base.ApplyTemplate();
RefreshLayout();
}
private void RefreshLayout() {
if (UseHorizontal) {
private void RefreshLayout()
{
if (UseHorizontal)
{
var rowSpan = RowDefinitions.Count;
for (int i = 0; i < Children.Count; i++) {
for (int i = 0; i < Children.Count; i++)
{
var child = Children[i];
child.SetValue(RowProperty, 0);
child.SetValue(RowSpanProperty, rowSpan);
child.SetValue(ColumnProperty, i);
child.SetValue(ColumnSpanProperty, 1);
}
} else {
}
else
{
var colSpan = ColumnDefinitions.Count;
for (int i = 0; i < Children.Count; i++) {
for (int i = 0; i < Children.Count; i++)
{
var child = Children[i];
child.SetValue(RowProperty, i);
child.SetValue(RowSpanProperty, 1);
@ -49,7 +61,8 @@ namespace SourceGit.Views {
}
}
public class CommitGraph : Control {
public class CommitGraph : Control
{
public static readonly Pen[] Pens = [
new Pen(Brushes.Orange, 2),
new Pen(Brushes.ForestGreen, 2),
@ -64,7 +77,8 @@ namespace SourceGit.Views {
public static readonly StyledProperty<Models.CommitGraph> GraphProperty =
AvaloniaProperty.Register<CommitGraph, Models.CommitGraph>(nameof(Graph));
public Models.CommitGraph Graph {
public Models.CommitGraph Graph
{
get => GetValue(GraphProperty);
set => SetValue(GraphProperty, value);
}
@ -72,24 +86,29 @@ namespace SourceGit.Views {
public static readonly StyledProperty<DataGrid> BindingDataGridProperty =
AvaloniaProperty.Register<CommitGraph, DataGrid>(nameof(BindingDataGrid));
public DataGrid BindingDataGrid {
public DataGrid BindingDataGrid
{
get => GetValue(BindingDataGridProperty);
set => SetValue(BindingDataGridProperty, value);
}
static CommitGraph() {
static CommitGraph()
{
AffectsRender<CommitGraph>(BindingDataGridProperty, GraphProperty);
}
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) {
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
base.OnPropertyChanged(change);
if (change.Property.Name == "ActualThemeVariant") {
if (change.Property.Name == "ActualThemeVariant")
{
InvalidateVisual();
}
}
public override void Render(DrawingContext context) {
public override void Render(DrawingContext context)
{
base.Render(context);
var graph = Graph;
@ -102,9 +121,11 @@ namespace SourceGit.Views {
// Find the content display offset Y of binding DataGrid.
double rowHeight = grid.RowHeight;
double startY = 0;
foreach (var child in rowsPresenter.Children) {
foreach (var child in rowsPresenter.Children)
{
var row = child as DataGridRow;
if (row.IsVisible && row.Bounds.Top <= 0 && row.Bounds.Top > -rowHeight) {
if (row.IsVisible && row.Bounds.Top <= 0 && row.Bounds.Top > -rowHeight)
{
var test = rowHeight * row.GetIndex() - row.Bounds.Top;
if (startY < test) startY = test;
}
@ -123,10 +144,12 @@ namespace SourceGit.Views {
// Draw connect dots
Brush dotFill = null;
if (App.Current.TryGetResource("Brush.Contents", App.Current.ActualThemeVariant, out object res) && res is SolidColorBrush) {
if (App.Current.TryGetResource("Brush.Contents", App.Current.ActualThemeVariant, out object res) && res is SolidColorBrush)
{
dotFill = res as SolidColorBrush;
}
foreach (var dot in graph.Dots) {
foreach (var dot in graph.Dots)
{
if (dot.Center.Y < top) continue;
if (dot.Center.Y > bottom) break;
@ -134,8 +157,10 @@ namespace SourceGit.Views {
}
}
private void DrawCurves(DrawingContext context, double top, double bottom) {
foreach (var line in Graph.Paths) {
private void DrawCurves(DrawingContext context, double top, double bottom)
{
foreach (var line in Graph.Paths)
{
var last = line.Points[0];
var size = line.Points.Count;
@ -144,38 +169,51 @@ namespace SourceGit.Views {
var geo = new StreamGeometry();
var pen = Pens[line.Color];
using (var ctx = geo.Open()) {
using (var ctx = geo.Open())
{
var started = false;
var ended = false;
for (int i = 1; i < size; i++) {
for (int i = 1; i < size; i++)
{
var cur = line.Points[i];
if (cur.Y < top) {
if (cur.Y < top)
{
last = cur;
continue;
}
if (!started) {
if (!started)
{
ctx.BeginFigure(last, false);
started = true;
}
if (cur.Y > bottom) {
if (cur.Y > bottom)
{
cur = new Point(cur.X, bottom);
ended = true;
}
if (cur.X > last.X) {
if (cur.X > last.X)
{
ctx.QuadraticBezierTo(new Point(cur.X, last.Y), cur);
} else if (cur.X < last.X) {
if (i < size - 1) {
}
else if (cur.X < last.X)
{
if (i < size - 1)
{
var midY = (last.Y + cur.Y) / 2;
var midX = (last.X + cur.X) / 2;
ctx.QuadraticBezierTo(new Point(last.X, midY), new Point(midX, midY));
ctx.QuadraticBezierTo(new Point(cur.X, midY), cur);
} else {
}
else
{
ctx.QuadraticBezierTo(new Point(last.X, cur.Y), cur);
}
} else {
}
else
{
ctx.LineTo(cur);
}
@ -187,12 +225,14 @@ namespace SourceGit.Views {
context.DrawGeometry(null, pen, geo);
}
foreach (var link in Graph.Links) {
foreach (var link in Graph.Links)
{
if (link.End.Y < top) continue;
if (link.Start.Y > bottom) break;
var geo = new StreamGeometry();
using (var ctx = geo.Open()) {
using (var ctx = geo.Open())
{
ctx.BeginFigure(link.Start, false);
ctx.QuadraticBezierTo(link.Control, link.End);
}
@ -202,32 +242,40 @@ namespace SourceGit.Views {
}
}
public partial class Histories : UserControl {
public Histories() {
public partial class Histories : UserControl
{
public Histories()
{
InitializeComponent();
}
private void OnCommitDataGridLayoutUpdated(object sender, EventArgs e) {
private void OnCommitDataGridLayoutUpdated(object sender, EventArgs e)
{
commitGraph.InvalidateVisual();
}
private void OnCommitDataGridSelectionChanged(object sender, SelectionChangedEventArgs e) {
if (DataContext is ViewModels.Histories histories) {
private void OnCommitDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (DataContext is ViewModels.Histories histories)
{
histories.Select(commitDataGrid.SelectedItems);
if (histories.DetailContext is ViewModels.CommitDetail detail) {
if (histories.DetailContext is ViewModels.CommitDetail detail)
{
commitDataGrid.ScrollIntoView(detail.Commit, null);
}
}
e.Handled = true;
}
private void OnCommitDataGridContextRequested(object sender, ContextRequestedEventArgs e) {
if (DataContext is ViewModels.Histories histories) {
private void OnCommitDataGridContextRequested(object sender, ContextRequestedEventArgs e)
{
if (DataContext is ViewModels.Histories histories)
{
var menu = histories.MakeContextMenu();
menu?.Open(sender as Control);
}
e.Handled = true;
}
}
}
}