1
0
Fork 0
mirror of https://github.com/hawkeye-stan/msfs-popout-panel-manager.git synced 2024-11-25 15:20:10 +00:00
msfs-popout-panel-manager/README.md

252 lines
22 KiB
Markdown
Raw Normal View History

2021-09-21 00:19:46 +00:00
# MSFS Pop Out Panel Manager
2021-09-17 03:18:02 +00:00
2022-06-22 16:31:41 +00:00
<p align="center">
<img src="images/doc/panel_selection.png" width="600" hspace="10"/>
</p>
2021-12-14 05:40:07 +00:00
2022-06-30 23:53:08 +00:00
MSFS Pop Out Panel Manager is an application for MSFS 2020 which helps pop out, save and position pop out panels to be used by utilities such as Sim Innovations Air Manager or to place pop out panels onto your screen or another monitor at predetermined locations automatically.
2021-12-14 05:40:07 +00:00
2022-06-22 16:31:41 +00:00
Please follow [FlightSimulator.com](https://forums.flightsimulator.com/t/msfs-pop-out-panel-manager-automatically-pop-out-and-save-panel-position/460613) forum thread regarding this project
2021-12-14 05:40:07 +00:00
2022-06-22 16:31:41 +00:00
[Online video - How to use](https://vimeo.com/723158934)
2022-01-27 13:40:04 +00:00
2022-06-22 16:31:41 +00:00
[Online video - How to enable auto pop out panels](https://vimeo.com/723165248)
2022-01-27 13:40:04 +00:00
2022-06-22 16:31:41 +00:00
<hr>
2022-01-27 13:40:04 +00:00
## Application Features
2022-06-30 23:53:08 +00:00
* Display resolution independent. Supports 1080p/1440p/4k display and ultrawide displays.
2022-06-22 16:31:41 +00:00
* Support multiple user defined aircraft profiles to save panel locations to be recalled later.
2022-01-27 13:40:04 +00:00
* Intuitive user interface to defined location of panels to be popped out.
2022-06-22 16:31:41 +00:00
* [Auto Pop Out](#auto-pop-out-feature) feature. The application will detect active aircraft by livery and activate the corresponding profile on start of new flight session.
2022-06-30 23:53:08 +00:00
* [Cold Start feature](#auto-pop-out-feature). Instrumentation panels can be popped out even when they're not powered on (for G1000 / / G1000 NXi planes only).
2022-04-18 22:07:30 +00:00
* Auto Panning feature remembers the cockpit camera angle when you first define the pop out panels. You can now pan, zoom in, and zoom out to identify offscreen panels and the camera angle will be saved and reused. This feature requires the use of Ctrl-Alt-0 keyboard binding to save custom camera view per plane configuration. (Can be configured to use 0 through 9). If the keyboard binding is currently being used. The auto-panning feature will overwrite the saved camera view if enabled.
2022-06-22 16:31:41 +00:00
* Fine-grain control in positioning of panels down to pixel level.
2022-06-30 23:53:08 +00:00
* Panels can be configured to appear always on top, with title bar hidden, or stretch to full screen mode.
2022-06-22 16:31:41 +00:00
* Auto disable Track IR when pop out starts.
* User-friendly features such as application always on top, auto start, minimized to tray with keyboard shortcuts.
2022-04-18 22:07:30 +00:00
* Auto save feature. All profile and panel changes are saved automatically.
2022-06-30 23:53:08 +00:00
* Auto update feature. Application can auto-update itself when new version becomes available.
* **Experimental Feature**: Enable touch support for pop outs on touch capable display. Please see [Touch Enable Pop Out Feature](#touch-enable-pop-out-feature) for more information.
2021-12-14 05:40:07 +00:00
2022-04-18 22:07:30 +00:00
<hr>
2021-12-14 05:40:07 +00:00
2022-06-22 16:31:41 +00:00
## History: Pop Out Panel Positioning in MSFS
In MSFS, by holding **RIGHT ALT** + **LEFT CLICKING** some instrumentation panels, these panels will pop out as floating windows that can be moved to a different screen location or different monitor. But this needs to be done every time you start a new flight. You've to perform RIGHT-ALT click, split out child windows, move these windows to final location, rinse and repeat. For predefined toolbar menu windows such as ATC, Checklist, VFR Map, their positions can be saved easily and reposition at the start of each new flight using 3rd party windows positioning tool because these windows have a **TITLE** in the title bar when they are popped out. But any custom pop outs such as plane instrumentation panel do not have window title. This makes remembering their last used position more difficult and it is very annoying to resize and re-adjust their positions to be used by Air Manager or other overlay tool on each new flight.
2021-09-30 02:17:20 +00:00
2022-06-22 16:31:41 +00:00
What if you can do the setup once by defining on screen where the pop out panels will be, click a button, and the application will pop these panels out and separate them for you. You just need to move these panels to their final positions only once. Next time when you start a flight, with a single button click, your panels will automatically pop out for you and move to their preconfigured positions. Easy peasy lemon squeezy!
2021-09-30 02:17:20 +00:00
2022-04-18 22:07:30 +00:00
<hr>
2021-09-30 02:17:20 +00:00
2022-07-06 18:09:10 +00:00
## How to Install
2021-10-07 17:00:10 +00:00
2022-07-06 18:09:10 +00:00
1. After downloading the latest zip package from github repository or from Flightsim.to website, extract the zip package to a folder of your choice on your computer. You must have write access to this folder since your preference settings and profiles will be save in the folder **userdata** within the installation folder. Please do not install in **C:\Program Files** or **C:\Program Files (x86)** since most users do not have write access to these folders.
2022-06-22 16:31:41 +00:00
2022-07-06 18:09:10 +00:00
2. Start the application **MSFSPopoutPanelManager.exe** and it will automatically connect when MSFS/SimConnect starts. You maybe prompt to download .NET framework 5.0 x64 desktop runtime. Please see the screenshot below to download and install x64 desktop version of the framework.
2021-10-08 15:18:38 +00:00
<p align="center">
2022-06-22 16:31:41 +00:00
<img src="images/doc/framework_download.png" width="1000" hspace="10"/>
2021-10-08 15:18:38 +00:00
</p>
2022-07-06 18:09:10 +00:00
## How to Update
1. To update the application, you can download the latest zip package and directly extract the package into your Pop Out Manager installation folder and overwrite all files within. Your **userdata** folder will be safe.
2. You can also use the built-in auto update feature and let the application handles the update. If the update is optional, you can skip the update if you so choose. When you start the application and if an update is available, a dialog will appear and it will show the latest version's release notes and an option to update the application.
3. If you're not being prompt for update when a new update is available, please try the following fixes:
- Restart you computer and most of the time this will do the trick.
- Clear your default web browser cache on your computer since auto update will try to download latest version of update configuration file from github repository and the file may have been cached on your machine.
2022-07-08 04:24:05 +00:00
- Clear Internet Browser History. First search for "Internet Properties" in Windows control panel. In "General" tab, select "Delete" in Browsing History section.
2022-07-06 18:09:10 +00:00
## How to Use
[Online video - How to use](https://vimeo.com/723158934)
1. First start the application and the game. Once you're in the main menu of the game, you can create a new profile by clicking the "plus" button in step 1 of the app.
2021-09-30 02:17:20 +00:00
2021-09-17 03:18:02 +00:00
<p align="center">
2022-06-22 16:31:41 +00:00
<img src="images/doc/add_profile.png" width="900" hspace="10"/>
2021-09-17 03:18:02 +00:00
</p>
2022-07-06 18:09:10 +00:00
2. For step 2, if you want to associate the profile to the current aircraft livery to use in [Auto Pop Out](#auto-pop-out-feature) feature or for automatic profile switching when selecting a different aircraft, click the "plus" button next to the aircraft livery name. The aircraft livery title will become green once the livery is bound to the profile. Your chosen livery may not be available to select in the application for your newly selected plane until a flight is started.
2022-01-27 13:40:04 +00:00
<p align="center">
2022-06-22 16:31:41 +00:00
<img src="images/doc/bind_profile_to_livery.png" width="900" hspace="10"/>
2022-01-27 13:40:04 +00:00
</p>
2022-07-06 18:09:10 +00:00
3. Now start a flight with your chosen aircraft. Once your flight is started, you're ready to select the panels you want to pop out. Please click "Start Panel Selection" to define where the pop out panels will be using **LEFT CLICK**. Use **CTRL-LEFT CLICK** when selection is completed. You can also move the number circles at this point to do final adjustment.
2021-09-30 02:17:20 +00:00
<p align="center">
2022-06-22 16:31:41 +00:00
<img src="images/doc/after_panel_selection.png" width="900" hspace="10"/>
2021-09-30 02:17:20 +00:00
</p>
2021-09-17 03:18:02 +00:00
2022-07-06 18:09:10 +00:00
4. Next, click "Start Pop Out". At this point, please be patient. The application will start popping out and separating panels one by one and you will see a lot of movements on screen. If something goes wrong, just follow the instruction in the status message and try again. Once the process is done, you will see a list of panels line up in the upper left corner of the screen. All the panels are given a default name. You can name them anything you want as needed.
2021-09-30 02:17:20 +00:00
2022-07-06 18:09:10 +00:00
5. You can now start panel configuration by dragging the pop out panels into their final position (to your main monitor or another monitor). You can also type value directly into the data grid to move and resize a panel. The +/- pixel buttons by the lower left corner of the grid allow you to change panel position at the chosen increment/decrement by selecting the data grid cell first (X-Pos, Y-Pos, Width, Height). You can also check "Always on Top", "Hide Title Bar", or "Full Screen Mode" if desire. If the panel is touch capable, you can check "Touch Enabled". Please see [Touch Enable Pop Out Feature](#touch-enable-pop-out-feature) regarding this experimental feature. Once all the panels are at their final position, just click "Lock Panel" to prevent further panel changes.
2021-12-14 05:40:07 +00:00
2021-09-30 02:17:20 +00:00
<p align="center">
2022-06-22 16:31:41 +00:00
<img src="images/doc/panel_configuration.png" width="900" hspace="10"/>
2021-09-30 02:17:20 +00:00
</p>
2022-06-22 16:31:41 +00:00
6. To test if everything is working, please click "Restart" in the File menu. This will close all pop outs. Now click "Start Pop Out" and see the magic happens!
2021-09-30 02:17:20 +00:00
2022-06-22 16:31:41 +00:00
7. With auto panning feature enabled in preferences setting, you do not have to line up the circles that identified the panels in order for the panels to be popped out. But if you would like to do it manually without auto-panning, on next start of the flight, just line up the panels before clicking "Start Pop Out" if needed.
2021-09-30 02:17:20 +00:00
2021-10-17 16:18:45 +00:00
<p align="center">
2022-06-22 16:31:41 +00:00
<img src="images/doc/autopanning_1.png" width="900" hspace="10"/>
2021-10-17 16:18:45 +00:00
</p>
<p align="center">
2022-06-22 16:31:41 +00:00
<img src="images/doc/autopanning_2.png" width="900" hspace="10"/>
2021-10-17 16:18:45 +00:00
</p>
2022-04-18 22:07:30 +00:00
<hr>
2022-06-22 16:31:41 +00:00
## Auto Pop Out Feature
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
[Online Video - How to enable auto pop out panels](https://vimeo.com/723165248)
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
The app will try to find a matching profile with the current selected aircraft livery. It will then detect when a flight is starting and automatically click the "Ready to Fly" button. It will also power on instrumentation for cold start (for G1000/NXi equipped plane only), and then pop out all panels. This feature allows panels to be popped out without the need of user interaction. If profiles are set and bound to your frequently used aircraft livery, you can auto-start the app minimized in system tray and as you start your flight, panels will automatically pop out for you for the selected aircraft.
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
* In File->Preferences->Auto Pop Out Panel Settings, "Enable Auto Pop Out Panels" option is turned on. You can also adjust wait delay settings if you've a fast computer.
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
* For existing profile to use Auto Pop Out feature, just click the plus sign in the bind active aircraft livery to profile section. This will bind the active aircraft livery being displayed to the profile. Any bound aircraft livery will appear in GREEN color. Unbound ones will be in WHITE, and bound livery in another profile will be in RED. You can bind as many liveries to a profile as you desire but a livery can only bind to a single profile so Auto Pop Out knows which profile to start when a flight session starts.
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
* During my testing, instrumentations only need to be powered on for Auto Pop Out to work for G1000/G1000 NXi plane during cold start. (There seems to be a bug in the game that you can't do Alt-Right click to pop out cold start panel for this particular plane variant). For other plane instrumentations I've tested (G3000, CJ4, Aerosoft CRJ 550/700, FBW A32NX), panels can be popped out without powering on. So please make sure the checkbox "Power on required to pop out panels on cold start" is checked for G1000 related profiles.
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
* **TIPS:** If you want to fly an aircraft with different livery, just add the aircraft livery binding to your desire profile when you switch livery.
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
* **TIPS:** You can go to the preference settings to configure the time delay for each steps for the Auto Pop Out process based on the speed of your computer if things do not work correctly or if you want to speed up the Auto Pop Out process.
2022-04-18 22:07:30 +00:00
2022-06-22 16:31:41 +00:00
* **TIPS:** One trick to force SimConnect to update the current selected aircraft livery so you can do the binding immediately after selecting a new livery in the World Map is to click the "Go Back" button at the lower left of your screen. You should see aircraft title changes to the active ones. Or you can wait until the flight is almost fully loaded and you will see the current aircraft livery name gets updated.
2022-04-18 22:07:30 +00:00
<hr/>
2021-10-17 16:18:45 +00:00
2022-06-22 16:31:41 +00:00
## Touch Enable Pop Out Feature
[Online video - Touch enable panel in action](https://vimeo.com/manage/videos/719651650)
This feature will make pop out panel touch enabled on touch screen monitor or tablet (through remote display tool such as [Spacedesk](https://www.spacedesk.net/). Currently there is limitation in MSFS regarding the support of touch capability for pop out panels on touch enabled display. Pop out instrumentation panels that have touch capabilities are and not limited to:
- King Air 350
- PMS GTN750
- Lower touch panel in TBM 930
- Built-in panels such as Checklist, ATC, etc.
In MSFS, when operating the above panels with pop outs, there are currently 2 limitations and one major bug that Asobo has to solve to make touch panels viable. This touch enable pop out experimental feature will try to solve the 2 limitations but is currently not able to overcome the bug.
- Limitation #1 - For pop out panel, touch events do not get pass through to panels such as King Air PFD or GTN750 and they can only be operated with a mouse. There is a work around if youre using Spacedesk with tablet by disabling USB HID within Spacedesk drivers in Windows device manager. But if youre using touch monitors directly connected to your gaming PC, then Spacedesk workaround is not an option.
**Limitation solved by**: detect the coordinate where touch event has occurred and sent an extra left mouse click to MSFS.
- Limitation #2 - When you click or hover your mouse over any pop out panels on your main monitor or on another monitor, the game main window will lose focus and you cant operate flight control without clicking the game window again.
**Limitation solved by**: detect when the user has stopped any touch events (after 1 second) and refocus main screen to allow flight control to work again.
- Bug - If the pop out panel is also display on the main screen, a click through at incorrect coordinate will occur at the relative position where the pop out panel is located. If you click at this particular location in the pop out panel, the click event will register at the wrong coordinate. I havent been able to figure out how to work around this issue yet since the bug is deep in the closed source CoherentGT code in how MSFS implements the internal browser control to display to pop out panel. So touch will not work in the relative position of the pop out panel where panel appears on the main screen. This only affects instrumentation pop outs. The built-in ones such as ATC and checklist are fine since once theyre popped out, they no longer appear on the main screen. Below is the screenshot where click through at incorrect coordinate occurs. See the relative position (red box) in the pop out where the same instrumentation appears on the main screen.
<p align="center">
<img src="images/doc/touch_support_bug.png" width="900" hspace="10"/>
</p>
If you're a home cockpit builder and your main screen has a view that looks like something below, than touch enable feature will work almost 100% of the time since there is no click through target on your main screen.
<p align="center">
<img src="images/doc/touch_support_bug_2.png" width="900" hspace="10"/>
</p>
#### How to enable touch support
Perform your regular panel selection and once your touch capable panel has been popped out, in the configuration screen grid, just check "Touch Enabled" to enable touch support for the selected panel. Once you enable touch support for a panel, using a mouse to operate the panel will no longer work correctly because double submit of Left-Click to MSFS will occur.
#### Know Issues
- If you enable touch support for a pop out panel, please do not you use a mouse to click the panel. It will register extra click since the app's code simulate a left mouse click when touch.
- A MSFS click through bug where pop out panel also appears on the main game screen. Touch will not register correctly in the section of the pop out panel where the relative position of the panel corresponds to where the panel is located on the main game screen.
- When a click through occurs on non-instrumentation panel items such as throttle or switches, even though the switches will not accidentally get clicked, touch response in pop out panel may not work. Just touching a little bit to the left/right in the pop out panel may register your touch event correctly and trigger your intend target.
- To do a drag such a scrollbar, hold down your finger a little longer then usual and drag your finger. Some scrollbars also has a very narrow touch target and they will be hard to drag. The bigger your touch display and pop out panel size, the easier for touch the register the correct target.
- If touch suddenly becomes unresponsive, please try to change the main view of the game such as looking left/right using keyboard shortcut. This will sometime reset the mouse coordinate where you touch the pop out panel.
2021-12-14 05:40:07 +00:00
## User Profile Data Files
2021-10-17 16:18:45 +00:00
2021-12-14 05:40:07 +00:00
The user plane profile data and application settings data are stored as JSON files under the following folder path.
2021-10-17 16:18:45 +00:00
2021-12-14 05:40:07 +00:00
* userdata/userprofiledata.json
2022-06-22 16:31:41 +00:00
Stored your various plane profiles.
2021-12-14 05:40:07 +00:00
* userdata/appsettingdata.json
2022-06-22 16:31:41 +00:00
Stored your application preference settings.
2022-04-18 22:07:30 +00:00
* userdata/autoupdate.json
2021-10-17 16:18:45 +00:00
2022-06-22 16:31:41 +00:00
Stored the application auto update information. This file can be deleted if you want to reset your update status.
You can backup this folder and restore this folder if you want to uninstall and reinstall MSFS Pop Out Manager or to download prelease version of application to try out.
2022-04-18 22:07:30 +00:00
<hr/>
2021-10-17 16:18:45 +00:00
2021-12-14 05:40:07 +00:00
## Current Known Issue
2021-10-17 16:18:45 +00:00
2022-04-18 22:07:30 +00:00
* Automatic power on for Auto Pop Out Panels feature will not work if you're using any flight control hardware (such as Honeycomb Alpha or Bravo) that permanently binds the master battery switch or master avionics switch. If the hardware control switch is in the off position, pop out manager won't be able to temporary turn on the instrumentation panels to pop them out. This seems to be a bug on Asobo side and only affects the G1000 instrumentation at the moment.
2022-01-27 13:40:04 +00:00
2022-01-18 14:58:11 +00:00
* Current application package size is bigger than previous version of the application because it is not a single EXE file package. With added feature of exception logging and stack trace to support user feedback and troubleshooting, a Single EXE package in .NET 5.0 as well as .NET 6.0 has a bug that stack trace information is not complete. Hopefully, Microsoft will be fixing this problem.
2021-10-17 16:18:45 +00:00
2022-04-18 22:07:30 +00:00
* Please see [Version](VERSION.md) file for latest known application issues.
<hr/>
2021-09-30 02:17:20 +00:00
2021-09-17 03:18:02 +00:00
## Common Problem Resolution
2022-01-27 13:40:04 +00:00
* Unable to pop out panels when creating a profile for the first time with error such as "Unable to pop out panel #X". If the panel is not being obstructed by another window, by changing the sequence of the pop out when defining the profile may help solve the issue. Currently there are some panels in certain plane configuration that does not follow predefined MSFS pop out rule.
2021-12-14 05:40:07 +00:00
2022-01-27 13:40:04 +00:00
* Unable to pop out panels on subsequent flight. Please follow status message instruction. Also, if using auto-panning, Ctrl-Alt-0 may not have been saved correctly during profile creation. You can trigger a force camera angle save by clicking the "Save Auto Panning Camera" button for the profile.
2021-12-14 05:40:07 +00:00
2022-04-18 22:07:30 +00:00
* Unable to pop out ALL panels. This may indicate a potential miscount of panels (circles) and the number of actual panels that got popped out. You may have duplicate panels in your selection or panels that cannot be popped out.
2021-12-14 05:40:07 +00:00
2022-01-27 13:40:04 +00:00
* If you encounter application crashes or unknown error, please help my continuing development effort by attaching the file **error.log** in the application folder and open an issue ticket in github repo for this project. This is going to help me troubleshoot the issue and provide hotfixes.
2022-04-18 03:38:33 +00:00
* If you encounter an issue with panels that are not restored back to your saved profile locations, please check if you have other apps such as Sizer or Windows PowerToys that may have conflict with Pop Out Manager.
2021-11-24 15:57:29 +00:00
2022-06-22 16:31:41 +00:00
* If you encounter a critical error with error message like this:
ERROR MSFSPopoutPanelManager.WpfApp.App - Could not load file or assembly 'Microsoft.FlightSimulator.SimConnect, Version=11.0.62651.3, Culture=neutral, PublicKeyToken=baf445ffb3a06b5c'. An attempt was made to load a program with an incorrect format. System.BadImageFormatException:
This usually happens on clean Windows installation. Pop Out Panel Manager uses x64 version of SimConnect.dll to perform its function and a Visaul C++ redistributable is required for SimConnect to run correctly. Please download and install the following [VC++ redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) on your PC to resolve this issue. Further information can be obtained in this [support ticket](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/21).
2021-09-17 03:18:02 +00:00
## Author
Stanley Kwok
[hawkeyesk@outlook.com](mailto:hawkeyesk@outlook.com)
2022-02-06 20:10:46 +00:00
I welcome feedback to help improve the usefulness of this application. You are welcome to take a copy of this code to further enhance it and use within your own project. But please abide by licensing terms and keep it open source:)
## Donation
[<img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif"
alt="Markdown Monster icon"
style="float: left; margin-right: 10px;" />](https://www.paypal.com/donate/?business=NBJ7SZR7MUDE6&no_recurring=0&item_name=Thank+you+for+your+kind+support+of+MSFS+Pop+Out+Panel+Manager%21&currency_code=USD)
Thank you for your super kind support of this app!
2021-12-14 05:40:07 +00:00
2021-09-17 03:18:02 +00:00
## Credits
2021-12-14 05:40:07 +00:00
[MouseKeyHook](https://github.com/gmamaladze/globalmousekeyhook) by George Mamaladze
[Fody](https://github.com/Fody/Fody) .NET assemblies weaver by Fody
2021-09-17 03:18:02 +00:00
2022-01-27 13:40:04 +00:00
[MahApps.Metro Dark Theme](https://github.com/MahApps/MahApps.Metro) by Jan Karger, Dennis Daume, Brendan Forster, Paul Jenkins, Jake Ginnivan, Alex Mitchell
[Hardcodet NotifyIcon](https://github.com/hardcodet/wpf-notifyicon) by Philipp Sumi, Robin Krom, Jan Karger
[WPF CalcBinding](https://github.com/Alex141/CalcBinding) by Alexander Zinchenko
2022-02-07 03:05:05 +00:00
[AutoUpdater.NET](https://github.com/ravibpatel/AutoUpdater.NET) by Ravi Patel