This commit is contained in:
Wiesław Šoltés 2022-01-27 22:48:03 +01:00
Родитель 25dfe9a40f
Коммит 4b34cebb29
19 изменённых файлов: 117 добавлений и 46 удалений

Просмотреть файл

@ -9,7 +9,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TypefaceUtil.OpenType", "sr
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{FA0D294D-2942-4349-AC60-BB837AA95DAB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TypefaceUtil.Avalonia", "src\TypefaceUtil.Avalonia\TypefaceUtil.Avalonia.csproj", "{DDCA69DA-405C-4A3B-AF4F-A969FE107D23}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TypefaceUtilAvalonia.Base", "src\TypefaceUtilAvalonia.Base\TypefaceUtilAvalonia.Base.csproj", "{DDCA69DA-405C-4A3B-AF4F-A969FE107D23}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnicodeDataGenerator", "src\UnicodeDataGenerator\UnicodeDataGenerator.csproj", "{DF30A956-2615-4B4A-A129-981DE567629F}"
EndProject
@ -68,6 +68,8 @@ EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_build", "build\build\_build.csproj", "{A66A3423-81AE-43B9-AAA6-0FBC44BE5152}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TypefaceUtilAvalonia.Desktop", "src\TypefaceUtilAvalonia.Desktop\TypefaceUtilAvalonia.Desktop.csproj", "{0F1B7AE5-AE2D-4311-86E3-46910F7B3ABD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -98,6 +100,10 @@ Global
{A66A3423-81AE-43B9-AAA6-0FBC44BE5152}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A66A3423-81AE-43B9-AAA6-0FBC44BE5152}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A66A3423-81AE-43B9-AAA6-0FBC44BE5152}.Release|Any CPU.Build.0 = Release|Any CPU
{0F1B7AE5-AE2D-4311-86E3-46910F7B3ABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0F1B7AE5-AE2D-4311-86E3-46910F7B3ABD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0F1B7AE5-AE2D-4311-86E3-46910F7B3ABD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0F1B7AE5-AE2D-4311-86E3-46910F7B3ABD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -112,6 +118,7 @@ Global
{429210F9-1870-4169-B2E1-FD834DB8BE86} = {13D366ED-5898-462D-B5F6-BCCDBBCD2C5F}
{57F2A3FD-99C6-4E6A-9813-B9B5F0FBC11D} = {13D366ED-5898-462D-B5F6-BCCDBBCD2C5F}
{A66A3423-81AE-43B9-AAA6-0FBC44BE5152} = {13D366ED-5898-462D-B5F6-BCCDBBCD2C5F}
{0F1B7AE5-AE2D-4311-86E3-46910F7B3ABD} = {FA0D294D-2942-4349-AC60-BB837AA95DAB}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3D7D93DB-65A8-4680-ADDD-EE67EEC2C975}

Просмотреть файл

@ -12,7 +12,7 @@ variables:
BuildConfiguration: 'Release'
BuildPlatform: 'Any CPU'
PublishFramework: 'net6.0'
PublishProject: 'TypefaceUtil.Avalonia'
PublishProject: 'TypefaceUtilAvalonia.Desktop'
PublishRuntime: ''
jobs:

Просмотреть файл

@ -17,9 +17,13 @@ public class App : Application
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow { DataContext = new MainWindowViewModel(), };
desktop.MainWindow = new MainWindow { DataContext = new MainWindowViewModel() };
}
else if (ApplicationLifetime is ISingleViewApplicationLifetime single)
{
single.MainView = new MainView { DataContext = new MainWindowViewModel() };
}
base.OnFrameworkInitializationCompleted();
}
}
}

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 172 KiB

После

Ширина:  |  Высота:  |  Размер: 172 KiB

Просмотреть файл

@ -1,10 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>False</IsPackable>
<Nullable>enable</Nullable>
<ApplicationIcon>Assets\Icon.ico</ApplicationIcon>
<RootNamespace>TypefaceUtil.Avalonia</RootNamespace>
</PropertyGroup>
<ItemGroup>
@ -13,17 +13,11 @@
<PropertyGroup>
<Description>An OpenType typeface utilities.</Description>
<PackageId>TypefaceUtil.Avalonia</PackageId>
<PackageId>TypefaceUtilAvalonia.Base</PackageId>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageTags>opentype;ttf;fonts;cmap;unicode;skiasharp;text;converter;png;svg;xaml;avaloniaui;avalonia;typeface;codepoint</PackageTags>
</PropertyGroup>
<PropertyGroup>
<PublishTrimmed>False</PublishTrimmed>
<PublishSingleFile>False</PublishSingleFile>
<PublishReadyToRun>True</PublishReadyToRun>
</PropertyGroup>
<Import Project="..\..\build\Base.props" />
<Import Project="..\..\build\ReferenceAssemblies.props" />
<Import Project="..\..\build\Avalonia.props" />

Просмотреть файл

@ -105,7 +105,7 @@ public class GlyphViewModel : ViewModelBase
{
try
{
if (Application.Current?.Clipboard is { } clipboard)
if (Application.Current?.Clipboard is { } clipboard && text is { })
{
await clipboard.SetTextAsync(text);
}

Просмотреть файл

@ -207,7 +207,7 @@ public class MainWindowViewModel : ViewModelBase
var inputFile = InputFile;
var fontSize = FontSize;
var color = Color ?? "#000000";
if (string.IsNullOrEmpty(inputFile))
if (string.IsNullOrEmpty(inputFile) || inputFile is null)
{
return;
}
@ -234,7 +234,7 @@ public class MainWindowViewModel : ViewModelBase
var familyName = FamilyName;
var fontSize = FontSize;
var color = Color ?? "#000000";
if (string.IsNullOrEmpty(familyName))
if (string.IsNullOrEmpty(familyName) || familyName is null)
{
return;
}

Просмотреть файл

@ -1,26 +1,15 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:TypefaceUtil.Avalonia.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:Avalonia.Controls.Skia;assembly=Avalonia.Controls.Skia"
mc:Ignorable="d" d:DesignWidth="735" d:DesignHeight="438"
x:Class="TypefaceUtil.Avalonia.Views.MainWindow"
x:Name="MainWindow"
MinWidth="735"
MinHeight="438"
WindowStartupLocation="CenterScreen"
Background="{x:Null}"
TransparencyLevelHint="AcrylicBlur"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="PreferSystemChrome"
UseLayoutRounding="True"
Icon="/Assets/Icon.ico"
Title="TypefaceUtil">
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="using:TypefaceUtil.Avalonia.ViewModels"
xmlns:controls="clr-namespace:Avalonia.Controls.Skia;assembly=Avalonia.Controls.Skia"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="TypefaceUtil.Avalonia.Views.MainView">
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
<Panel Margin="{Binding #MainWindow.OffScreenMargin}">
<Panel>
<!-- Styles -->
<Panel.Styles>
<!-- transition -->
@ -317,4 +306,5 @@
</Panel>
</Panel>
</Panel>
</Window>
</UserControl>

Просмотреть файл

@ -1,4 +1,4 @@
using Avalonia;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Markup.Xaml;
@ -6,19 +6,16 @@ using Avalonia.Media;
namespace TypefaceUtil.Avalonia.Views;
public partial class MainWindow : Window
public class MainView : UserControl
{
private bool _isDragging = false;
private bool _isDragging;
private Control? _dragControl;
private Point _startPoint;
private TranslateTransform? _dragTransform;
public MainWindow()
public MainView()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
@ -60,4 +57,5 @@ public partial class MainWindow : Window
_dragTransform.Y = delta.Y;
}
}
}
}

Просмотреть файл

@ -0,0 +1,19 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="clr-namespace:TypefaceUtil.Avalonia.Views"
mc:Ignorable="d" d:DesignWidth="735" d:DesignHeight="438"
x:Class="TypefaceUtil.Avalonia.Views.MainWindow"
x:Name="MainWindow"
MinWidth="735" MinHeight="438"
WindowStartupLocation="CenterScreen"
Background="{x:Null}"
TransparencyLevelHint="AcrylicBlur"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="PreferSystemChrome"
UseLayoutRounding="True"
Icon="/Assets/Icon.ico"
Title="TypefaceUtil">
<views:MainView Margin="{Binding #MainWindow.OffScreenMargin}"/>
</Window>

Просмотреть файл

@ -0,0 +1,21 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace TypefaceUtil.Avalonia.Views;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}

Просмотреть файл

@ -0,0 +1,38 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>False</IsPackable>
<Nullable>enable</Nullable>
<ApplicationIcon>..\TypefaceUtilAvalonia.Base\Assets\Icon.ico</ApplicationIcon>
<RootNamespace>TypefaceUtil.Avalonia</RootNamespace>
</PropertyGroup>
<ItemGroup>
<AvaloniaResource Include="Assets\**" />
</ItemGroup>
<PropertyGroup>
<PublishTrimmed>False</PublishTrimmed>
<PublishSingleFile>False</PublishSingleFile>
<PublishReadyToRun>True</PublishReadyToRun>
</PropertyGroup>
<Import Project="..\..\build\Base.props" />
<Import Project="..\..\build\ReferenceAssemblies.props" />
<Import Project="..\..\build\Avalonia.props" />
<Import Project="..\..\build\Avalonia.Desktop.props" />
<Import Project="..\..\build\Avalonia.Diagnostics.props" />
<Import Project="..\..\build\Avalonia.ReactiveUI.props" />
<Import Project="..\..\build\Avalonia.Xaml.Behaviors.props" />
<Import Project="..\..\build\Avalonia.Controls.Skia.props" />
<Import Project="..\..\build\SkiaSharp.props" />
<Import Project="..\..\build\SkiaSharp.Linux.props" />
<Import Project="..\..\build\Svg.Skia.props" />
<ItemGroup>
<ProjectReference Include="..\TypefaceUtil.OpenType\TypefaceUtil.OpenType.csproj" />
<ProjectReference Include="..\TypefaceUtilAvalonia.Base\TypefaceUtilAvalonia.Base.csproj" />
</ItemGroup>
</Project>