LoadForType{T} intentionally does not specify TypeNameHandling which
seemingly is required for handling inheritance for nested properties.
Added a custom JsonConverter that will force TypeNameHandling=Objects
for types under Dalamud assembly, as a quick workaround for forcing font
related types to be correctly handled during deserialization.
* Add functions for plugins to open the Developer Menu and Dalamud Settings windows
* Do not break ABI by instead declaring a new method OpenPluginsInstallerTo
Replace OpenDalamudSettings with OpenDalamudSettingsTo
* wip
* hacky fix for overlapping event text in profiler
* move IsResumeGameAfterPluginLoad logic to PluginManager
* fix some warnings
* handle exceptions properly
* remove ability to cancel, rename button to "hide" instead
* undo Dalamud.Service refactor for now
* warnings
* add explainer, show which plugins are still loading
* add some text if loading takes more than 3 minutes
* undo wrong CS merge
When Reduced Motion configuration is on, the expiry progressbar is
removed, and instead a pie on top right is shown, and relative time
update interval increases to 15 seconds. Progress wave animation also is
suppressed.
* Add IInternal/PublicDisposableService
Plugins are exposed interfaces that are not inherited from
`IDisposable`, but services implementing plugin interfaces often
implement `IDisposable`. Some plugins may try to call
`IDisposable.Dispose` on everything provided, and it also is possible to
use `using` clause too eagerly while working on Dalamud itself, such as
writing `using var smth = await Service<SomeService>.GetAsync();`. Such
behaviors often lead to a difficult-to-debug errors, and making those
services either not an `IDisposable` or making `IDisposable.Dispose` do
nothing if the object has been loaded would prevent such errors. As
`ServiceManager` must be the only class dealing with construction and
disposal of services, `IInternalDisposableService` has been added to
limit who can dispose the object. `IPublicDisposableService` also has
been added to classes that can be constructed and accessed directly by
plugins; for those, `Dispose` will be ignored if the instance is a
service instance, and only `DisposeService` will respond.
In addition, `DalamudPluginInterface` and `UiBuilder` also have been
changed so that their `IDisposable.Dispose` no longer respond, and
instead, internal functions have been added to only allow disposal from
Dalamud.
* Cleanup
* Postmerge fixes
* More explanation on RunOnFrameworkThread(ClearHooks)
* Mark ReliableFileStorage public ctor obsolete
---------
Co-authored-by: goat <16760685+goaaats@users.noreply.github.com>
* Implement FontChooserDialog
* Minor fixes
* Fixes 2
* Add Reset default font button
* Add failsafe
* reduce uninteresting exception message
* Add remarks to use AttachExtraGlyphsForDalamudLanguage
* Support advanced font configuration options
* fixes
* Shift ui elements
* more fixes
* Add To(Localized)String for IFontSpec
* Untie GlobalFontScale from default font size
* Layout fixes
* Make UiBuilder.DefaultFontSize point to user configured value
* Update example for NewDelegateFontHandle
* Font interfaces: write notes on not intended for plugins to implement
* Update default gamma to 1.7 to match closer to prev behavior (1.4**2)
* Fix console window layout