RFE: embedded subwindows in networks

When I’m in a particular network, I have a decent number of supporting windows – SOP viewers, SopIn TOPs, textport, etc.


This RFE is to be able to embed those windows into the network display by anchoring them to a particular place on the network grid. Thus whenever I’d return to this network, all those windows would still be open. Bonus points for being able to drag a SOP onto a viewer and have it now display that SOP’s outputs. Same for SopTo DATs – and, I’d love to see a gray connector line to the SOP whose info/view is being displayed in a particular viewer.

The AnnotationCOMP has an OpViewer integrated which sounds exactly what you are after.

From a workflow perspective, the Annotation COMP feels like a pretty high friction substitute. None of the RMB options are there, the COMP has extra letterboxing, i.e. it scales its input uselessly


it doesn’t scroll like RMB->View, I can’t drag an op directly into it (I have to drag it into the OP parameter of the Op Viewer tab), and in general it doesn’t support the semi-ephemeral nature of viewers: I want to create them, use them for a while, and then close them. Even by its namesake, I’m not trying to annotate, I just want to dock some viewers so that they become part of the network fabric.

The Annotate is pretty open ended.
On the ‘OP Viewer’ page turn on ‘OP Viewer Interactive’ to get back RMB menus, etc.

However, if you want something more direct:
Place down an Annotate COMP, toggle off read-only on the ‘Operator Viewer’ parameter of the fist page (not the OP Viewer settings) and place your desired OP directly in there.

In fact, the title, text, OP viewer settings etc are all custom panels than can be eliminated altogether in this case. Here is a little script that embeds the currently selected node in the manner you’re looking for. Run it again to restore back to original looks.
All node paths are preserved.


n = me.parent().currentChild

print(n)

if n and n != me:

	if n.OPType == 'annotateCOMP':
	
		b = n.par.opviewer.eval()
		n.destroy()
		b.expose = True
		b.current = True

	else:

		m = n.parent()
		a = m.create(annotateCOMP, initialize=False)
		a.par.opviewer = n
		a.par.encloseops = False
		a.par.layerzone = 'abovenodes'

		a.nodeX = n.nodeX
		a.nodeY = n.nodeY
		a.nodeWidth = n.nodeWidth
		a.nodeHeight = n.nodeHeight
		a.current = True
		a.utility = False #dont show up by default
		
		n.expose = False #hide original

OK, I admit, the Annotate COMP is indeed pretty flexible. So here’s my updated RFE: a RMB option on a viewer to convert it to an Annotation COMP. It’s about quality-of-life and workflow – a viewer is a pretty fundamental element, it would be nice to just upgrade it to an Annotate COMP and off we go. It’s in the same vein as my cmd-f as a gateway to search/replace as opposed to just the simplistic find option. Thanks!

Yah, that’s a nice RFE.