瀏覽代碼

wip stuff not compiling

flabbet 1 年之前
父節點
當前提交
1c4addd018

+ 11 - 29
src/ChunkyImageLib/ChunkyImageLib.csproj

@@ -6,46 +6,28 @@
     <Nullable>enable</Nullable>
     <WarningsAsErrors>Nullable</WarningsAsErrors>
     <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
-    <Configurations>Debug;Release;Steam;DevRelease</Configurations>
-    <Platforms>AnyCPU</Platforms>
+    <Configurations>Debug;Release;</Configurations>
+    <Platforms>x64;arm64</Platforms>
   </PropertyGroup>
 
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|AnyCPU'">
+  <PropertyGroup Condition="'$(Configuration)'=='Steam'">
     <Optimize>True</Optimize>
   </PropertyGroup>
 
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|x64'">
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
     <Optimize>True</Optimize>
-    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
 
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|x86'">
-    <Optimize>True</Optimize>
-    <PlatformTarget>AnyCPU</PlatformTarget>
-  </PropertyGroup>
-
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-  </PropertyGroup>
-
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
+  <PropertyGroup Condition="'$(Configuration)'=='DevRelease'">
+    <Optimize>False</Optimize>
   </PropertyGroup>
 
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevRelease|x64' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
+  <PropertyGroup Condition="'$(Platform)'=='x64'">
+    <TargetPlatform>x64</TargetPlatform>
   </PropertyGroup>
-
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevRelease|x86' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-  </PropertyGroup>
-
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-  </PropertyGroup>
-
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
+  
+  <PropertyGroup Condition="'$(Platform)'=='arm64'">
+    <TargetPlatform>arm64</TargetPlatform>
   </PropertyGroup>
 
   <ItemGroup>

+ 8 - 1
src/PixiEditor.AvaloniaUI/Initialization/ClassicDesktopEntry.cs

@@ -18,7 +18,6 @@ using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.Runtime;
 using PixiEditor.OperatingSystem;
 using PixiEditor.Platform;
-using PixiEditor.Windows;
 using ViewModelMain = PixiEditor.AvaloniaUI.ViewModels.ViewModelMain;
 
 namespace PixiEditor.AvaloniaUI.Initialization;
@@ -134,7 +133,15 @@ internal class ClassicDesktopEntry
 
     private IOperatingSystem GetActiveOperatingSystem()
     {
+#if WINDOWS
         return new WindowsOperatingSystem();
+#elif LINUX
+        return new LinuxOperatingSystem();
+#elif MACOS
+        return new MacOSOperatingSystem();
+#else
+        throw new PlatformNotSupportedException("This platform is not supported");
+#endif
     }
 
     private bool HandleNewInstance(Dispatcher? dispatcher)

+ 172 - 95
src/PixiEditor.AvaloniaUI/PixiEditor.AvaloniaUI.csproj

@@ -1,108 +1,185 @@
 <Project Sdk="Microsoft.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net8.0</TargetFramework>
-        <Nullable>enable</Nullable>
-        <LangVersion>latest</LangVersion>
-        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <RootNamespace>PixiEditor.AvaloniaUI</RootNamespace>
-    </PropertyGroup>
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <LangVersion>latest</LangVersion>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <RootNamespace>PixiEditor.AvaloniaUI</RootNamespace>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
+    <RepositoryUrl>https://github.com/PixiEditor/PixiEditor</RepositoryUrl>
+    <PackageLicenseFile>LICENSE</PackageLicenseFile>
+    <PackageIcon>icon.ico</PackageIcon>
+    <ApplicationIcon>..\icon.ico</ApplicationIcon>
+    <Authors>Krzysztof Krysiński, Egor Mozgovoy, CPK, Contributors</Authors>
+    <Configurations>Debug;Release;MSIX;MSIX Debug;Steam;DevRelease;DevSteam</Configurations>
+    <Platforms>x64;arm64</Platforms>
+    <RuntimeIdentifiers>win-x64;win-arm64;linux-x64;linux-arm64;osx-x64;osx-arm64</RuntimeIdentifiers>
+    <ImplicitUsings>true</ImplicitUsings>
+    <LangVersion>latest</LangVersion>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DebugSymbols>false</DebugSymbols>
+    <DebugType>None</DebugType>
+  </PropertyGroup>
 
+  <PropertyGroup Condition="'$(Platform)'=='x64'">
+    <TargetPlatform>x64</TargetPlatform>
+  </PropertyGroup>
 
-    <ItemGroup>
-      <AvaloniaResource Include="Assets\**" />
-      <AvaloniaResource Include="Data\**"/>
-      <AvaloniaResource Include="Data\Languages\**"/>
-      <AvaloniaResource Include="Data\ShortcutActionMaps\**"/>
-      <None Remove="Images\Create-mask.svg" />
-      <AvaloniaResource Include="Images\Create-mask.svg" />
-      <None Remove="Images\Lock-alpha.svg" />
-      <AvaloniaResource Include="Images\Lock-alpha.svg" />
-      <None Remove="Images\Merge-downwards.svg" />
-      <AvaloniaResource Include="Images\Merge-downwards.svg" />
-    </ItemGroup>
+  <PropertyGroup Condition="'$(Platform)'=='arm64'">
+    <TargetPlatform>arm64</TargetPlatform>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <PackageReference Include="AsyncImageLoader.Avalonia" Version="3.2.1" />
-        <PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
-        <PackageReference Include="Avalonia.Headless" Version="$(AvaloniaVersion)" />
-        <PackageReference Include="Avalonia.Labs.Lottie" Version="11.0.10.1" />
-        <PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
-      <PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
-      <PackageReference Include="Avalonia.Skia" Version="$(AvaloniaVersion)" />
-        <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
-        <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)" />
-        <PackageReference Include="ByteSize" Version="2.1.1" />
-        <PackageReference Include="CLSEncoderDecoder" Version="1.0.0" />
-        <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
-        <PackageReference Include="DiscordRichPresence" Version="1.2.1.24" />
-        <PackageReference Include="Hardware.Info" Version="11.0.0" />
-        <PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.9.2" />
-        <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" />
-        <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
-        <PackageReference Include="PixiEditor.ColorPicker.Models" Version="1.0.5" />
-        <PackageReference Include="PixiEditor.Parser" Version="3.3.0" />
-      <PackageReference Include="PixiEditor.Parser.Skia" Version="3.0.0" />
-      <PackageReference Include="PixiEditor.ColorPicker.AvaloniaUI" Version="1.0.5" />
-    </ItemGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='MSIX Debug'">
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+  </PropertyGroup>
 
-    <ItemGroup>
-      <ProjectReference Include="..\..\..\PixiDocks\src\PixiDocks.Avalonia\PixiDocks.Avalonia.csproj" />
-      <ProjectReference Include="..\ChunkyImageLib\ChunkyImageLib.csproj" />
-      <ProjectReference Include="..\PixiEditor.ChangeableDocument.Gen\PixiEditor.ChangeableDocument.Gen.csproj" />
-      <ProjectReference Include="..\PixiEditor.ChangeableDocument\PixiEditor.ChangeableDocument.csproj" />
-      <ProjectReference Include="..\PixiEditor.DrawingApi.Core\PixiEditor.DrawingApi.Core.csproj" />
-      <ProjectReference Include="..\PixiEditor.DrawingApi.Skia\PixiEditor.DrawingApi.Skia.csproj" />
-      <ProjectReference Include="..\PixiEditor.Extensions.Runtime\PixiEditor.Extensions.Runtime.csproj" />
-      <ProjectReference Include="..\PixiEditor.Extensions.WasmRuntime\PixiEditor.Extensions.WasmRuntime.csproj" />
-      <ProjectReference Include="..\PixiEditor.Extensions\PixiEditor.Extensions.csproj" />
-      <ProjectReference Include="..\PixiEditor.OperatingSystem\PixiEditor.OperatingSystem.csproj" />
-      <ProjectReference Include="..\PixiEditor.Platform.MSStore\PixiEditor.Platform.MSStore.csproj" />
-      <ProjectReference Include="..\PixiEditor.Platform.Standalone\PixiEditor.Platform.Standalone.csproj" />
-      <ProjectReference Include="..\PixiEditor.Platform.Steam\PixiEditor.Platform.Steam.csproj" />
-      <ProjectReference Include="..\PixiEditor.Platform\PixiEditor.Platform.csproj" />
-      <ProjectReference Include="..\PixiEditor.UI.Common\PixiEditor.UI.Common.csproj" />
-      <ProjectReference Include="..\PixiEditor.UpdateModule\PixiEditor.UpdateModule.csproj" />
-      <ProjectReference Include="..\PixiEditor.Windows\PixiEditor.Windows.csproj" />
-      <ProjectReference Include="..\PixiEditor.Zoombox\PixiEditor.Zoombox.csproj" />
-      <ProjectReference Include="..\PixiEditorGen\PixiEditorGen.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
-    </ItemGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='MSIX'">
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <Optimize>true</Optimize>
+  </PropertyGroup>
   
-    <ItemGroup>
-      <AvaloniaResource Include="Images\**" />
-      <AvaloniaResource Include="Fonts\**" />
-    </ItemGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <DefineConstants>TRACE;UPDATE</DefineConstants>
+    <Optimize>true</Optimize>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <WarningLevel>0</WarningLevel>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)'=='Steam'">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)'=='DevSteam'">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)' == 'DevRelease' ">
+    <DefineConstants>TRACE;UPDATE;RELEASE</DefineConstants>
+    <Optimize>True</Optimize>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+  </PropertyGroup>
+  
+  <ItemGroup Condition="'$(RuntimeIdentifier)'=='win-x64'">
+    <ProjectReference Include="..\PixiEditor.Windows\PixiEditor.Windows.csproj"/>
+  </ItemGroup>
+  
+  <PropertyGroup Condition="'$(RuntimeIdentifier)'=='win-x64'">
+    <DefineConstants>WINDOWS</DefineConstants>
+  </PropertyGroup>
+  
+  <ItemGroup Condition="'$(RuntimeIdentifier)'=='win-arm64'">
+    <ProjectReference Include="..\PixiEditor.Windows\PixiEditor.Windows.csproj"/>
+  </ItemGroup>
+
+  <PropertyGroup Condition="'$(RuntimeIdentifier)'=='win-arm64'">
+    <DefineConstants>WINDOWS</DefineConstants>
+  </PropertyGroup>
+  
+  <ItemGroup Condition="'$(RuntimeIdentifier)'=='linux-x64'">
+    <ProjectReference Include="..\PixiEditor.Linux\PixiEditor.Linux.csproj"/>
+  </ItemGroup>
   
-    <ItemGroup>
-      <AvaloniaXaml Remove="Views\Buttons\**" />
-      <Compile Remove="Views\Buttons\**" />
-      <EmbeddedResource Remove="Views\Buttons\**" />
-      <None Remove="Views\Buttons\**" />
-    </ItemGroup>
+  <PropertyGroup Condition="'$(RuntimeIdentifier)'=='linux-x64'">
+    <DefineConstants>LINUX</DefineConstants>
+  </PropertyGroup>
   
-    <ItemGroup>
-      <UpToDateCheckInput Remove="Fonts\feather.ttf" />
-      <UpToDateCheckInput Remove="Views\Settings\SettingsWindow.axaml" />
-      <UpToDateCheckInput Remove="Views\Settings\ShortcutsBinder.axaml" />
-      <UpToDateCheckInput Remove="Styles\Buttons\DialogButton.Template.axaml" />
-    </ItemGroup>
+  <ItemGroup Condition="'$(RuntimeIdentifier)'=='linux-arm64'">
+    <ProjectReference Include="..\PixiEditor.Linux\PixiEditor.Linux.csproj"/>
+  </ItemGroup>
+  
+  <PropertyGroup Condition="'$(RuntimeIdentifier)'=='linux-arm64'">
+    <DefineConstants>LINUX</DefineConstants>
+  </PropertyGroup>
   
-    <ItemGroup>
-      <AdditionalFiles Include="Views\Windows\Settings\SettingsWindow.axaml" />
-      <AdditionalFiles Include="Views\Windows\Settings\ShortcutsBinder.axaml" />
-    </ItemGroup>
+  <ItemGroup Condition="'$(RuntimeIdentifier)'=='osx-x64'">
+    <ProjectReference Include="..\PixiEditor.Mac\PixiEditor.MacOs.csproj"/>
+  </ItemGroup>
   
-    <ItemGroup>
-      <Resource Include="Images\ChevronDown.png" />
-    </ItemGroup>
+  <PropertyGroup Condition="'$(RuntimeIdentifier)'=='osx-x64'">
+    <DefineConstants>MACOS</DefineConstants>
+  </PropertyGroup>
   
-    <ItemGroup>
-      <Reference Include="PixiDocks.Avalonia">
-        <HintPath>..\..\..\PixiDocks\src\PixiDocks.Avalonia\bin\Debug\net8.0\PixiDocks.Avalonia.dll</HintPath>
-      </Reference>
-      <Reference Include="PixiDocks.Core">
-        <HintPath>..\..\..\PixiDocks\src\PixiDocks.Core\bin\Debug\net8.0\PixiDocks.Core.dll</HintPath>
-      </Reference>
-    </ItemGroup>
+  <ItemGroup Condition="'$(RuntimeIdentifier)'=='osx-arm64'">
+    <ProjectReference Include="..\PixiEditor.Mac\PixiEditor.MacOs.csproj"/>
+  </ItemGroup>
+  
+  <PropertyGroup Condition="'$(RuntimeIdentifier)'=='osx-arm64'">
+    <DefineConstants>MACOS</DefineConstants>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <AvaloniaResource Include="Images\**"/>
+    <AvaloniaResource Include="Fonts\**"/>
+    <AvaloniaResource Include="Data\**"/>
+    <AvaloniaResource Include="Data\Languages\**"/>
+    <AvaloniaResource Include="Data\ShortcutActionMaps\**"/>
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="AsyncImageLoader.Avalonia" Version="3.2.1"/>
+    <PackageReference Include="Avalonia" Version="$(AvaloniaVersion)"/>
+    <PackageReference Include="Avalonia.Headless" Version="$(AvaloniaVersion)"/>
+    <PackageReference Include="Avalonia.Labs.Lottie" Version="11.0.10.1"/>
+    <PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)"/>
+    <PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)"/>
+    <PackageReference Include="Avalonia.Skia" Version="$(AvaloniaVersion)"/>
+    <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
+    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)"/>
+    <PackageReference Include="ByteSize" Version="2.1.1"/>
+    <PackageReference Include="CLSEncoderDecoder" Version="1.0.0"/>
+    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2"/>
+    <PackageReference Include="DiscordRichPresence" Version="1.2.1.24"/>
+    <PackageReference Include="Hardware.Info" Version="11.0.0"/>
+    <PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.9.2"/>
+    <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2"/>
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
+    <PackageReference Include="PixiEditor.ColorPicker.Models" Version="1.0.5"/>
+    <PackageReference Include="PixiEditor.Parser" Version="3.3.0"/>
+    <PackageReference Include="PixiEditor.Parser.Skia" Version="3.0.0"/>
+    <PackageReference Include="PixiEditor.ColorPicker.AvaloniaUI" Version="1.0.5"/>
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\PixiDocks\src\PixiDocks.Avalonia\PixiDocks.Avalonia.csproj"/>
+    <ProjectReference Include="..\ChunkyImageLib\ChunkyImageLib.csproj"/>
+    <ProjectReference Include="..\PixiEditor.ChangeableDocument.Gen\PixiEditor.ChangeableDocument.Gen.csproj"/>
+    <ProjectReference Include="..\PixiEditor.ChangeableDocument\PixiEditor.ChangeableDocument.csproj"/>
+    <ProjectReference Include="..\PixiEditor.DrawingApi.Core\PixiEditor.DrawingApi.Core.csproj"/>
+    <ProjectReference Include="..\PixiEditor.DrawingApi.Skia\PixiEditor.DrawingApi.Skia.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Extensions.Runtime\PixiEditor.Extensions.Runtime.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Extensions.WasmRuntime\PixiEditor.Extensions.WasmRuntime.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Extensions\PixiEditor.Extensions.csproj"/>
+    <ProjectReference Include="..\PixiEditor.OperatingSystem\PixiEditor.OperatingSystem.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Platform.MSStore\PixiEditor.Platform.MSStore.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Platform.Standalone\PixiEditor.Platform.Standalone.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Platform.Steam\PixiEditor.Platform.Steam.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Platform\PixiEditor.Platform.csproj"/>
+    <ProjectReference Include="..\PixiEditor.UI.Common\PixiEditor.UI.Common.csproj"/>
+    <ProjectReference Include="..\PixiEditor.UpdateModule\PixiEditor.UpdateModule.csproj"/>
+    <ProjectReference Include="..\PixiEditor.Zoombox\PixiEditor.Zoombox.csproj"/>
+    <ProjectReference Include="..\PixiEditorGen\PixiEditorGen.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Reference Include="PixiDocks.Avalonia">
+      <HintPath>..\..\..\PixiDocks\src\PixiDocks.Avalonia\bin\Debug\net8.0\PixiDocks.Avalonia.dll</HintPath>
+    </Reference>
+    <Reference Include="PixiDocks.Core">
+      <HintPath>..\..\..\PixiDocks\src\PixiDocks.Core\bin\Debug\net8.0\PixiDocks.Core.dll</HintPath>
+    </Reference>
+  </ItemGroup>
 
   <ItemGroup>
     <Content Include="../../LICENSE">
@@ -112,5 +189,5 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
   </ItemGroup>
-  
+
 </Project>

+ 1 - 1
src/PixiEditor.DrawingApi.Skia/PixiEditor.DrawingApi.Skia.csproj

@@ -5,7 +5,7 @@
         <Nullable>enable</Nullable>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
         <Configurations>Debug;Release;Steam;DevRelease;DevSteam</Configurations>
-        <Platforms>AnyCPU;x86;x64</Platforms>
+        <Platforms>x64;</Platforms>
     </PropertyGroup>
 
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|AnyCPU'">

+ 5 - 0
src/PixiEditor.Linux/Class1.cs

@@ -0,0 +1,5 @@
+namespace PixiEditor.Linux;
+
+public class Class1
+{
+}

+ 13 - 0
src/PixiEditor.Linux/PixiEditor.Linux.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net8.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\PixiEditor.OperatingSystem\PixiEditor.OperatingSystem.csproj" />
+    </ItemGroup>
+
+</Project>

+ 5 - 0
src/PixiEditor.MacOs/Class1.cs

@@ -0,0 +1,5 @@
+namespace PixiEditor.MacOs;
+
+public class Class1
+{
+}

+ 13 - 0
src/PixiEditor.MacOs/PixiEditor.MacOs.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net8.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\PixiEditor.OperatingSystem\PixiEditor.OperatingSystem.csproj" />
+    </ItemGroup>
+
+</Project>

+ 3 - 21
src/PixiEditor.Platform.Steam/PixiEditor.Platform.Steam.csproj

@@ -12,27 +12,9 @@
 
     <ItemGroup>
       <PackageReference Include="Steamworks.NET" Version="20.1.0" />
+      <None Update="steam_api64.dll">
+        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      </None>
     </ItemGroup>
 
-  <ItemGroup Condition="'$(Platform)' == 'x86'">
-    <None Update="steam_api.dll">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-
-  <ItemGroup Condition="'$(Platform)' == 'AnyCPU'">
-    <None Update="steam_api.dll">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Update="steam_api64.dll">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-
-  <ItemGroup Condition="'$(Platform)' == 'x64'">
-    <None Update="steam_api64.dll">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-
 </Project>

+ 90 - 0
src/PixiEditor.sln

@@ -118,6 +118,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.Api.CGlueMSBuild
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CGlueTestLib", "CGlueTestLib\CGlueTestLib.csproj", "{317B661B-23E8-43FE-A0D6-D3234DF155B1}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.Linux", "PixiEditor.Linux\PixiEditor.Linux.csproj", "{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.MacOs", "PixiEditor.MacOs\PixiEditor.MacOs.csproj", "{E46F2824-3CDA-40CB-AA57-8A4387E6B188}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -2051,6 +2055,90 @@ Global
 		{317B661B-23E8-43FE-A0D6-D3234DF155B1}.Steam|x64.Build.0 = Debug|Any CPU
 		{317B661B-23E8-43FE-A0D6-D3234DF155B1}.Steam|x86.ActiveCfg = Debug|Any CPU
 		{317B661B-23E8-43FE-A0D6-D3234DF155B1}.Steam|x86.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Debug|x64.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Debug|x86.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevRelease|Any CPU.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevRelease|Any CPU.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevRelease|x64.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevRelease|x64.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevRelease|x86.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevRelease|x86.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevSteam|Any CPU.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevSteam|Any CPU.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevSteam|x64.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevSteam|x64.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevSteam|x86.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.DevSteam|x86.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX Debug|x64.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX Debug|x64.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX Debug|x86.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX Debug|x86.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX|Any CPU.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX|Any CPU.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX|x64.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX|x64.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX|x86.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.MSIX|x86.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Release|x64.ActiveCfg = Release|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Release|x64.Build.0 = Release|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Release|x86.ActiveCfg = Release|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Release|x86.Build.0 = Release|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Steam|Any CPU.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Steam|Any CPU.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Steam|x64.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Steam|x64.Build.0 = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Steam|x86.ActiveCfg = Debug|Any CPU
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269}.Steam|x86.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Debug|x64.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Debug|x86.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevRelease|Any CPU.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevRelease|Any CPU.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevRelease|x64.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevRelease|x64.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevRelease|x86.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevRelease|x86.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevSteam|Any CPU.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevSteam|Any CPU.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevSteam|x64.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevSteam|x64.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevSteam|x86.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.DevSteam|x86.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX Debug|x64.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX Debug|x64.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX Debug|x86.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX Debug|x86.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX|Any CPU.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX|Any CPU.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX|x64.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX|x64.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX|x86.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.MSIX|x86.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Release|x64.ActiveCfg = Release|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Release|x64.Build.0 = Release|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Release|x86.ActiveCfg = Release|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Release|x86.Build.0 = Release|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Steam|Any CPU.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Steam|Any CPU.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Steam|x64.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Steam|x64.Build.0 = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Steam|x86.ActiveCfg = Debug|Any CPU
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188}.Steam|x86.Build.0 = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -2101,6 +2189,8 @@ Global
 		{9FCCD0CF-FF76-4638-A712-803EFBBC641F} = {13DD041C-EE2D-4AF8-B43E-D7BFC7415E4D}
 		{3476109D-9E5C-48FC-99C6-59407F59EEE4} = {F1FDFA82-0C74-446A-AD7D-DE17EC2CF1E8}
 		{317B661B-23E8-43FE-A0D6-D3234DF155B1} = {F1FDFA82-0C74-446A-AD7D-DE17EC2CF1E8}
+		{DA3AF3CC-43B2-4871-BDEC-CBE9222A8269} = {2CC7ED59-C25E-4EED-8FED-D48E13EB9CC0}
+		{E46F2824-3CDA-40CB-AA57-8A4387E6B188} = {2CC7ED59-C25E-4EED-8FED-D48E13EB9CC0}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {D04B4AB0-CA33-42FD-A909-79966F9255C5}