jcsteh / osara

OSARA: Open Source Accessibility for the REAPER Application
GNU General Public License v2.0
127 stars 46 forks source link

Would it be possible for OSARA to implement an action that closes all windows other than the TCP? #417

Open ScottChesworth opened 3 years ago

ScottChesworth commented 3 years ago

Reaper has a nasty habit of leaving empty windows scattered about. the FX window and Item Properties dialog seem to be the two most common offenders for me and my students. This behaviour can have negative impact on the functionality of widely adopted scripts and add-ons that screen scrape, such as the AutoHotkey offerings from Access4Music, the Golden Cursor and Sibiac NVDA add-ons etc.

What I'd ideally like is for OSARA to provide an action called something like "OSARA: Close all open windows other than the Track Control Panel", because as much as I'm a firm believer in people learning to troubleshoot, identify and rectify these situations, there have been plenty of times here where it's disrupted my creative flow. Being able to run a single action and retry whichever screen scrapey move just failed unexpectedly would've derailed things a lot less.

I've spoken to Cockos about this behaviour in the past, but haven't seen any movement toward a resolution, hence asking here.

Is there any mileage in it?

ranetto commented 3 years ago

Hi Scott, there is a reaper action that does this: I think something like "close all floating windows" I don't remember well but if you are interested I look for it because I use it and I mapped it: would it be enough to vocalize it?

ptorpey commented 3 years ago

There is some functionality in Jim Snowbarger’s scripts for JAWS to determine if some of these windows are open and close them if a user wishes. From his web page:

“Detecting Open Windows

It is common for people to have certain windows open, and then leave that window without actually closing it, such that the window remains open, undetected. Often, they can block other things that would normally be visible. for example, open the media explorer, and thenb alt tab away from it, rather than pressing escape to close it. It will remain open, but not reachable. It is nromally difficul to return focus to those windows. but, this feature lets you scan for those open windows, and return focus to them so you can close them, or continue operating in them as needed. Press control+jawskey+f4. A list of open windows is presented. You can escape out of the list without choosing one. Or, use the up and down arrows to select a window, and press enter to place focus there.”

I haven’t seen an Osara feature to close all unwanted windows but I’m very new at Reaper and Osara.

--Pete

From: ranetto notifications@github.com Sent: Tuesday, December 8, 2020 1:55 PM To: jcsteh/osara osara@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: Re: [jcsteh/osara] Would it be possible for OSARA to implement an action that closes all windows other than the TCP? (#417)

Hi Scott, there is a reaper action that does this: I think something like "close all floating windows" I don't remember well but if you are interested I look for it because I use it and I mapped it: would it be enough to vocalize it?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/jcsteh/osara/issues/417#issuecomment-741014505 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ADEPTJKYHRU3ZME2XZ5EDO3ST2HC5ANCNFSM4USP5FHQ .

ScottChesworth commented 3 years ago

Last time I tested it @ranetto, the Reaper action you're talking about didn't catch FX windows that weren't set to be floating here and didn't seem to catch any stray instances of Item Properties for me either. If you know different and the functionality I'm chasing already exists, tell me your secrets. :)

Yeah @ptorpey, I know Jim has some functionality for this in his scripts, as does Alexey in Sibiac. Neither of those solutions cater for Mac folk though, and from a community tutorials/teaching perspective, I'd rather a universal, consistently mapped OSARA solution existed if such a thing is relatively easy to implement.

jcsteh commented 3 years ago

This is another one of those cases where we have to interact with the GUI, so this probably wouldn't work on Mac anyway. Parts of it are possible - for example, item properties is a toggle action so we can check the state and trigger if it's on - but some cases, such as the FX window, will probably require OS specific stuff.

jcsteh commented 3 years ago

I looked into this a bit more. It seems we don't need to do OS specific stuff here:

  1. SWS has SWS/S&M: Close all FX chain windows.
  2. In reading the code for that, I discovered the API functions (it's easy to miss them because there are so many) TrackFX_Show and TakeFX_Show, which allow you to hide FX windows. So we could do this without depending on SWS.
  3. For item properties, there's the toggle action Item properties: Toggle show media item/take properties; Command ID: 41589.

So the remaining question is whether there are any other windows we want to deal with here and whether they have toggle actions, since we need specific code for each one.

ranetto commented 3 years ago

Hi Scott, try this is a t Toggle show all floating windows.zip oggle but it works! I am attaching it here!

ScottChesworth commented 3 years ago

So the remaining question is whether there are any other windows we want to deal with here and whether they have toggle actions, since we need specific code for each one.

I've just found this window hanging around that was breaking screen scraping on an older project: View: Show project bay window (ID 41157) May as well hide the mixer as part of this too I reckon, seeing as the only times I see it being mentioned is when it's preventing focus from landing properly in the Media Explorer: View: Toggle mixer visible (ID 40078)

Lo-lo78 commented 2 years ago

Hello, there is an action from SWS: SWS/S&M: Focus main window (close others)