Saving the open/close state of subpatches?

I have a large patch with a deep hierarchy of subpatches. What I notice is, that even though I save the main patch with all subpatch windows hidden, a lot of times when I open the patch again, a lot of other windows get opened as well.

But if I “Save All” with all subpatch windows hidden (using Alt+3), except for the main patch, shouldn’t it save that state and next time I open it only open the main patch? Or do I have to open each subpatch and then each subpatch in that, close it and then move something in the parent patch so it actually saves? Since the level of subpatches can go down around 4-5 levels, this is a really tedious task.

So does “Save all” mean it saves only all patches that have the * after their name or does it mean it saves all subpatches? And if the later, why doesn’t it save the fact that they are hidden? Shouldn’t “Save All” mean, “save everything exactly how it is right now” which includes the state of componentmode?

See:

Thanks @bjoern for the posts. I will try the latest alpha and see if that behaves more as expected.

I tried using SetPatchMode just now, but when I place it, it resizes the window to the smallest possible size unable to ever get it back!? Seems like a bug to me…

EDIT: No, you can of course just resize it again. But Window Width and Window Height are both set to 0 px by default!? Shouldn’t it be set to the window size of the window I am placing it in? Or at least some sensible default? Also would be nice if SETpatchmode would have a Set pin and not always apply on changes. If you resize the window, then right-click scroll the window width from 0 you get this really weird thing, where the window is hidden again, but the pin is still visible over the desktop. With the set pin you could permanently set it to 1 if you want and get the same behaviour as now, but it wouldn’t move and resize the window as soon as you place it.

Hm, I thought I could use GetPatchMode and SetPatchMode to remotely set a window to hide. But they both have weird behavior. GetPatchMode only updates if you actually do something inside the patch, like select a node or a pin. So even if you connect WindowX, WindowY, WindowWidth and WindowHeight from GetPatchMode to Setpatchmode and then group them into a subpatch, if you try to open the subpatch it will be set to width and height of 0px the first time.

I tried the latest alpha and the Save All + Layout seems to do what I need. Any idea when it will make its way into the next beta? Can’t really use alpha vvvv unfortunately.

SetPatchMode.zip (3.5 KB)

ouu…with Set/GetPatchMode (VVVV) you’ve uncovered two of the first nodes ever written that we probably better remove as they have the issues you described.

instead please try the attached modules which allow you to set the componentmode of a given patch and its bounds. it seems to me those where the features you were looking for. internally the modules simply use the more general SetPatch (VVVV) node. please let me know if these work for you.

Thanks @joreg.

Okay, good to know, I will stay clear of SetPatchMode.

What you have sent me and are describing is something I am already using to show and hide the root patch (which is my main patch). The Window Handler looks something like this:

I am using SetPatch to open and close the root patch from the GUI in the renderer. Then I use Window and ShowWindow to actually place the renderer at a default location and switch between single-screen mode with just one renderer and the GUI overlaid or dual-screen mode, where the the GUI and 3D output are in separate renderers.

What would be interesting would be a method to set the componentmode of ALL patchwindows (except the main renderer) to hidden - handling it with care obviously.

For that to work all I would need is a way of getting the PatchAlias from the window handle. Or a way to just set the componentmode of all subpatches of root, because often I quite and save all with all windows hidden, but then a bunch of subpatches still open again when relaunching. I just want ALL windows except the renderer to be hidden when starting.

Any ideas?

What I dont understand is why sometimes a patch window will show during loading and then disappear again when it has finished loading everything (which takes around 20 seconds).

Okay, I think I have figured out why it happens. So the patch that contains the subpatch has the componentmode of the placed subpatch set to “inawindow”, while the subpatch itself has its componentmode set to hidden.

The parent patch:

The patch itself:

So in fact I need to set all instances of componentmode=“InAWindow” to componentmode=“Hidden”, except for the renderer, which is in the root patch. So SetPatch wouldn’t even work!? I guess it only sets the <PATCH> part, but not the <NODE> part in its parent patch, does it?

Reading this thread, I wonder if you know about the /shutup command line parameter that hide all non render windows.

I do know about it and have tried it. Unfortunately it doesn’t work as I need it to in combination with /r. I DO still need to get into the root patch and I have a button in the GUI in the renderer to open the root patch for some more settings, etc. This doesn’t seem to work any longer with /shutup, therefore is not really an option.

Thank you for the suggestion though.

I think that basically the new alpha with its layout-change-mark-as-dirty-behaviour like it used to be should pretty much solve it, but I have to wait for it to make it into beta (not feasable to alpha software for our tool as it needs to be stable). But still would be nice to be able to set all windows to be saved with componentmode set to hidden.

I would need something a little softer than /shutup. Maybe something like /shush :D which hides all windows except renderers but still has all functionality like being able to open windows, etc.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.