Feature: VFP Headless Runtime and UI Provider Architecture#1841
Merged
RobertvanderHulst merged 2 commits intodevfrom Mar 7, 2026
Merged
Feature: VFP Headless Runtime and UI Provider Architecture#1841RobertvanderHulst merged 2 commits intodevfrom
RobertvanderHulst merged 2 commits intodevfrom
Conversation
Member
|
Nice work. Maybe you can also detect if the app is running in console mode, before even trying to load XSharp.VFP.UI.DLL? Maybe check if System.Windows.Forms .dll is loaded? |
Contributor
Author
Oh good that one. I'll do it. Thanks Robert. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
In this PR I did an important refactor in the
XSharp.VFP. The main idea is to make the core runtime headless so I removed the direct dependencies toSystem.Windows.FormsandSystem.Drawingand moved anything UI-related behind a provider.With this, the VFP dialect can run safer in server/non-desktop scenarios (ASP.NET Core, services, Linux/Docker) without hanging threads or crashing because UI stuff is not available.
What changed
1) Core runtime is now UI-free (XSharp.VFP.dll)
XSharp.VFP.UI.dlland create the provider automatically at runtime.MESSAGEBOX/ASSERTtoSystem.Console(so it works in headless/server apps and doesn't block waiting for a dialog).MESSAGEBOX(),SYSMETRIC(),ASSERT,GETCOLOR(),GETFONT(),APRINTERS()2) UI implementation moved to
XSharp.VFP.UIAutoCloseMessageBox,AssertDialog)IVfpUIProviderusing desktop APIs.User32) inside this UI assembly (VfpWin32UI) to keep the core runtime clean.3) How I tested this
Testes with a FoxPro-dialect Console app in XIDE:
XSharp.VFP.UI.dllpresent, dialogs/metrics work normally.