kwsch / PKHeX

Pokémon Save File Editor
https://projectpokemon.org/pkhex/
Other
3.74k stars 702 forks source link

Feature: Cross-Platform Support via Photino #3233

Closed dmgolembiowski closed 3 years ago

dmgolembiowski commented 3 years ago

Is your feature request related to a problem? Please describe. Sort of -- since this is unable to build without Windows.

$ dotnet build

Welcome to .NET 5.0!
---------------------
SDK Version: 5.0.300

(... snip ...)

Determining projects to restore...
/usr/share/dotnet/sdk/5.0.300/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(63,5): error NETSDK1100: Windows is required to build Windows desktop applications. [/home/david/csharp/PKHeX/PKHeX.WinForms/PKHeX.WinForms.csproj]

Build FAILED.

/usr/share/dotnet/sdk/5.0.300/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(63,5): error NETSDK1100: Windows is required to build Windows desktop applications. [/home/david/csharp/PKHeX/PKHeX.WinForms/PKHeX.WinForms.csproj]
    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:02.17

Describe the solution you'd like I would like to see the windowing solution ported over to Photino (see https://www.tryphotino.io/).

kwsch commented 3 years ago

The PKHeX.Core project can be built standalone regardless of platform; no OS specific code. PKHeX.Core is available on nuget, so anyone can reference & make a GUI.

PKHeX.WinForms has ~88 different forms that would need to be ported. Some forms have egregious amounts of complexity, like the main window and custom controls. Interactions with some forms (besides get/set values from the SaveFile objects) are tightly coupled to the GUI. Plus there's considerations for plugin support, for things like AutoLegalityMod and other plugins that the community has made.

I'd rather not rewrite the GUI part of this repo myself to frameworks like Photino/Avalonia/Uno; I'm currently waiting for maturity on Microsoft's .NET MAUI, and will likely start creating something equivalent to the current GUI in the next few months. Then I can finally ditch .NET Framework support and have actual crossplatform support that doesn't hide behind a web app :)

Mono/Wine should still be able to run the .NET Framework 4.6 build; so try ditching the net5 build option.