Is there a way to automatically trigger navigation to a resource within the Designer Context?
Ideally something similar to when you Find/Replace and you select a found item and it navigates directly to the view.
Specifically, I want to be able to trigger opening a Perspective resource from within a module. However if it was a generic resource opening function, that would be nice too.
If you're on a new enough SDK (8.1.34/whenever the tag reference tracker was introduced), you can use the Location/Locatable classes as your entrypoint.
Construct a com.inductiveautomation.ignition.designer.location.Location, then pass it to the module you want to locate (use Locatable.forward to allow passing any random module ID):
String perspectiveModuleId = "com.inductiveautomation.perspective";
DesignerModuleHook perspective = context.getModule(perspectiveModuleId);
ResourceType resourceType = new ResourceType(perspectiveModuleId, "views");
ProjectResourceId resourceId = new ProjectResourceId(context.getProjectName(), resourceType, "path/to/view");
Locatable.forward(perspective, new Location(resourceId, Map.of()));
This hasn't been implemented for project scripts in particular, because there's no way for TRT to drill into a project script - it only captures the call, not the library depth.
You want to get a ScriptWorkspace so you can call openScript: ScriptWorkspace
But I'm not sure if there's any good way to do that...
The library depth is noted in the jython frame code's co_filename and the current line number is in the jython frame itself. So the TRT should be able to capture that level of detail.
You're right - 'no way' was incorrect, and I argued the point at the time, but the decision was made to favor performance. May or may not get revisited at some point.