Skip to content

Commit 5bdf802

Browse files
committed
clean up; latest C#; add avaloniaedit
1 parent e1ac76b commit 5bdf802

10 files changed

Lines changed: 175 additions & 138 deletions

File tree

.vscode/settings.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,16 @@
1818
"titleBar.inactiveBackground": "#dd053199",
1919
"titleBar.inactiveForeground": "#e7e7e799"
2020
},
21-
"peacock.color": "#dd0531"
21+
"peacock.color": "#dd0531",
22+
"cSpell.words": [
23+
"Avalonia",
24+
"filemaker",
25+
"fmxmlsnippet",
26+
"Mvvm",
27+
"xdoc",
28+
"XMFD",
29+
"XMSC",
30+
"XMSS",
31+
"XMTB"
32+
]
2233
}

SharpFM.App/App.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66

77
<Application.Styles>
88
<FluentTheme />
9+
<StyleInclude Source="avares://AvaloniaEdit/Themes/Fluent/AvaloniaEdit.xaml" />
910
</Application.Styles>
1011
</Application>

SharpFM.App/MainWindow.axaml

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,25 @@
33
xmlns:vm="using:SharpFM.App.ViewModels"
44
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6-
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
6+
xmlns:AvaloniaEdit="clr-namespace:AvaloniaEdit;assembly=AvaloniaEdit"
7+
mc:Ignorable="d" d:DesignWidth="700" d:DesignHeight="500"
78
x:DataType="vm:MainWindowViewModel"
89
x:Class="SharpFM.App.MainWindow"
910
Title="SharpFM">
1011
<Grid>
1112
<Grid.ColumnDefinitions>
1213
<ColumnDefinition Width="100" />
1314
<ColumnDefinition Width="200" />
14-
<ColumnDefinition Width="*" />
15+
<ColumnDefinition Width="300" />
16+
<ColumnDefinition Width="300" />
1517
</Grid.ColumnDefinitions>
1618

17-
<Button Grid.Column="0" Command="{Binding PasteTextCommand}">Click me</Button>
19+
<Button
20+
Grid.Column="0"
21+
Command="{Binding PasteTextCommand}">
22+
Paste
23+
</Button>
24+
1825
<ListBox
1926
Grid.Column="1"
2027
ItemsSource="{Binding Keys}"
@@ -34,8 +41,18 @@
3441
</ListBox.ItemTemplate>
3542
</ListBox>
3643

37-
<TextBox
38-
Grid.Column="2"
39-
Text="{Binding SelectedClip.XmlData}" />
44+
<StackPanel Grid.Column="2"
45+
Grid.ColumnSpan="2">
46+
47+
<TextBox
48+
Height="250"
49+
Text="{Binding SelectedClip.XmlData}" />
50+
51+
<AvaloniaEdit:TextEditor
52+
Height="250"
53+
x:Name="avaloniaEditor"
54+
ShowLineNumbers="True"
55+
FontFamily="Cascadia Code,Consolas,Menlo,Monospace"/>
56+
</StackPanel>
4057
</Grid>
4158
</Window>

SharpFM.App/MainWindow.axaml.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
using System;
12
using System.Collections.ObjectModel;
23
using Avalonia.Controls;
4+
using AvaloniaEdit;
35
using SharpFM.Core;
46

57
namespace SharpFM.App;
@@ -9,5 +11,8 @@ public partial class MainWindow : Window
911
public MainWindow()
1012
{
1113
InitializeComponent();
14+
15+
var editor = this.FindControl<TextEditor>("avaloniaEditor") ?? throw new Exception("no control");
16+
editor.Document = new AvaloniaEdit.Document.TextDocument("Hello world");
1217
}
1318
}

SharpFM.App/SharpFM.App.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@
33
<OutputType>WinExe</OutputType>
44
<TargetFramework>net6.0</TargetFramework>
55
<Nullable>enable</Nullable>
6+
<LangVersion>latest</LangVersion>
67
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
78
<ApplicationManifest>app.manifest</ApplicationManifest>
89
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
910
</PropertyGroup>
1011

11-
1212
<ItemGroup>
1313
<PackageReference Include="Avalonia" Version="11.0.2" />
1414
<PackageReference Include="Avalonia.Desktop" Version="11.0.2" />
1515
<PackageReference Include="Avalonia.Xaml.Interactions" Version="11.0.2" />
1616
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.2" />
1717
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.2" />
18+
<PackageReference Include="Avalonia.AvaloniaEdit" Version="11.0.1" />
1819

1920
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
2021
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.2" />

SharpFM.App/ViewModels/MainWindowViewModel.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Threading;
55
using System.Threading.Tasks;
66
using Avalonia;
7-
using Avalonia.Controls;
87
using Avalonia.Controls.ApplicationLifetimes;
98
using CommunityToolkit.Mvvm.ComponentModel;
109
using CommunityToolkit.Mvvm.Input;
@@ -53,7 +52,7 @@ private async Task DoGetClipboardDataAsync()
5352
{
5453
if (string.IsNullOrEmpty(format)) { continue; }
5554

56-
object clipData = await provider.GetDataAsync(format);
55+
object? clipData = await provider.GetDataAsync(format);
5756

5857
if (!(clipData is byte[] dataObj))
5958
{
@@ -63,6 +62,8 @@ private async Task DoGetClipboardDataAsync()
6362

6463
var clip = new FileMakerClip("new-clip", format, dataObj);
6564

65+
if(clip is null) { continue; }
66+
6667
// don't bother adding a duplicate. For some reason entries were getting entered twice per clip
6768
// this is not the most efficient method to detect it, but it works well enough for now
6869
if (Keys.Any(k => k.XmlData == clip.XmlData))
@@ -75,7 +76,7 @@ private async Task DoGetClipboardDataAsync()
7576
}
7677

7778
[ObservableProperty]
78-
private ObservableCollection<FileMakerClip>? _keys;
79+
private ObservableCollection<FileMakerClip> _keys;
7980

8081
//public ObservableCollection<FileMakerClip> Layouts { get; }
8182

0 commit comments

Comments
 (0)