View Issue Details

IDProjectCategoryView StatusLast Update
0005218NoesisGUIUnitypublic2026-09-22 13:18
ReporterNovacat Assigned Tojsantos  
PrioritynormalSeveritytweak 
Status assignedResolutionopen 
Product Version4.0 
Summary0005218: Expand Unity API Access to NoesisGUI Studio
Description

If Unity could trigger Studio functions programmatically, it would be useful for refreshing Studio content and automating repetitive workflows.
This would also provide greater flexibility for integrating NoesisGUI Studio into our Unity-based UI production pipeline.

For example, APIs for the following operations would be helpful:

Studio_ReloadFile()
Studio_ReloadAll()
Studio_ClearTypeCache()
Studio_PopulateTypeCache()
Studio_GetActiveFile()
Studio_HasUnsavedChanges()

These function names are only examples of the type of access we are looking for.

If similar functions already exist internally and can be exposed through a public Unity API,
editor command, or CLI interface with relatively little effort, we would greatly appreciate having access to them.

PlatformAny

Activities

jsantos

jsantos

2026-09-21 16:21

manager   ~0012612

Last edited: 2026-09-21 16:21

Our C++ API offers the following funtionality:

namespace Noesis::Studio
{

/// Load a Studio project from the given project file and create its visual tree
NS_GUI_STUDIO_API Ptr<FrameworkElement> Create(const char* projectPath, const Options& options);

/// Save all unsaved changes made in the given Studio project
NS_GUI_STUDIO_API void SaveAllChanges(FrameworkElement* studio);

/// Discard all unsaved changes made in the given Studio project
NS_GUI_STUDIO_API void DiscardAllChanges(FrameworkElement* studio);

/// Request Studio to open a file if it exists in the project
NS_GUI_STUDIO_API bool OpenProjectFile(FrameworkElement* studio, const char* path);

/// Updates Studio theme
NS_GUI_STUDIO_API void SetTheme(FrameworkElement* studio, bool darkTheme);

/// Clear Studio's type cache
NS_GUI_STUDIO_API void ClearTypeCache();

/// Populate Studio's type cache
NS_GUI_STUDIO_API void PopulateTypeCache();

}

The C# API (NoesisStudio.cs) offers:

public void SaveAll()
public override void SaveChanges()
public void DiscardAll()
public override void DiscardChanges()

For this task, we need a specific list of functions that you need.

Novacat

Novacat

2026-09-22 09:14

reporter   ~0012633

Last edited: 2026-09-22 12:26

As an initial example, we would like to request a few APIs that could help us handle refresh and reload cases:

bool Studio_ReloadFile(void* studio, const char* path);
bool Studio_IsFileDirty(void* studio, const char* path);
bool Studio_ReloadResources(void* studio);

We would also like to ask whether manually reloading resource dictionaries or global resources, such as GlobalResources.xaml, would be feasible or useful.
We are not sure whether this should be handled through a separate API or as part of a general resource reload operation.

The purpose of these APIs is to handle edge cases where changes made in the Unity Editor or an external text editor are not immediately reflected in Studio.
As a current workaround, we are using a custom Unity Editor extension to restart Studio when necessary.

These are only a few examples of the APIs that could be useful.
If there are other lightweight internal functions or hooks that could be exposed with relatively little effort, we would be happy to use them manually as needed.
We would also appreciate any guidance regarding which approaches are recommended based on the Studio architecture and engine policy.

editor extended.png (1,349,118 bytes)

Issue History

Date Modified Username Field Change
2026-09-21 10:29 Novacat New Issue
2026-09-21 16:21 jsantos Note Added: 0012612
2026-09-21 16:21 jsantos Assigned To => jsantos
2026-09-21 16:21 jsantos Status new => assigned
2026-09-21 16:21 jsantos Note Edited: 0012612
2026-09-21 16:21 jsantos Status assigned => feedback
2026-09-22 09:14 Novacat Note Added: 0012633
2026-09-22 09:14 Novacat File Added: editor extended.png
2026-09-22 09:14 Novacat Status feedback => assigned
2026-09-22 12:26 jsantos Note Edited: 0012633