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

Version 3.3

This commit is contained in:
hawkeye 2022-04-18 18:07:30 -04:00
parent d9ed07937e
commit f4fd8a7551
19 changed files with 132 additions and 97 deletions

View file

@ -53,10 +53,10 @@ namespace MSFSPopoutPanelManager.Provider
public void AddProfileBinding(string planeTitle, int activeProfileId) public void AddProfileBinding(string planeTitle, int activeProfileId)
{ {
var bindedProfile = UserProfiles.FirstOrDefault(p => p.BindingAircraftLiveries.ToList().Exists(p => p == planeTitle)); var boundProfile = UserProfiles.FirstOrDefault(p => p.BindingAircraftLiveries.ToList().Exists(p => p == planeTitle));
if (bindedProfile != null) if (boundProfile != null)
{ {
Logger.LogStatus($"Unable to add binding to the profile because '{planeTitle}' was already bound to profile '{bindedProfile.ProfileName}'.", StatusMessageType.Error); Logger.LogStatus($"Unable to add binding to the profile because '{planeTitle}' was already bound to profile '{boundProfile.ProfileName}'.", StatusMessageType.Error);
return; return;
} }

121
README.md
View file

@ -1,72 +1,39 @@
# MSFS Pop Out Panel Manager # MSFS Pop Out Panel Manager
MSFS Pop Out Panel Manager is an application for MSFS 2020 which helps pop out, save and re-position pop out panels to be used by applications such as Sim Innovations Air Manager or to place pop out panels onto another monitor automatically. MSFS Pop Out Panel Manager is an application for MSFS 2020 which helps pop out, save and re-position pop out panels to be used by applications such as Sim Innovations Air Manager or to place pop out panels onto your screen at predetermined locations or on another monitor automatically.
[FlightSimulator.com forum thread regarding this project](https://forums.flightsimulator.com/t/msfs-pop-out-panel-manager-automatically-pop-out-and-save-panel-position/460613) [FlightSimulator.com forum thread regarding this project](https://forums.flightsimulator.com/t/msfs-pop-out-panel-manager-automatically-pop-out-and-save-panel-position/460613)
## Version 3.2 NEW FEATURES! [Online Video - How to Use](https://vimeo.com/668430955)
* Added per monitor DPI-awareness support. The application should run and display correctly when using combination of mixed monitor (with high-DPI and low-DPI) resolutions and scaling.
* Added system tray icon access. Application can start minimize or minimize to system tray. System tray icon features a context menu to allow quick access to application functions.
* Added user requested feature to provide keyboard shortcut (Ctrl-Alt-P) to start panel pop out with either an active profile or a default profile selected.
* New copy profile feature. You can reuse your defined panel settings for another plane or plane/livery combination. This is a feature to solve the problem when the final panel placements are the same but the in-game panel locations are different. This also allows using a defined profile for different liveries for the same plane for Auto Pop Out. (See Auto Pop Out Panel experiment feature).
* Added quick panel location selection adjustment feature. You can now adjust panel locations without redoing the entire profile. Just click "Show/Edit Panel Location Overlay" checkbox, you can now drag and move the panel selection number circle. When you're done with the placement, the new location will automatically save for the profile.
* Added Save Auto Panning Camera Angle function if you need to adjust the in-game camera angle during panel selection.
* New logo icon for the app.
* New dark theme for the entire UI.
* Technical Note - Application is ported and rewritten with .NET WPF framework instead of WinForms and SimConnect is added to the app for Auto Pop Out feature and for future functionality expansions.
** Beta feature - Auto Pop Out Panels** [Online Video - Auto Pop Out Panels in Action](https://vimeo.com/674073559)
When a profile is defined, final panel placements are set, and bound to a plane type + livery combination. The application will automatically pop out all panels if a matched profile is detected when a flight starts. <hr>
[Online Video - feature in action](https://vimeo.com/674073559) - In the video, after clicking flight restart, the app did all the clicking by itself.
**How it works and how to use:**
The app will try to find a matching profile with the title of the plane (per livery). It will then automatically detect when a flight is starting and then click the "Ready to Fly" button. It will then power on instrumentation for cold start (if necessary), and pop out all panels. This feature allows panels to be popped out without the need of user interaction. If profiles are set and bound, you can auto-start the app minimized in system and as you start your flight, panels will automatically pop out for you.
* First make sure in File->Preferences, "Auto Pop Out Panels" option is turned on.
* For existing profile to use Auto Pop Out feature, just click "Add Binding" and bind the profile to the active plane in the game.
* Since Auto Pop Out need to match plane title to work, a profile must be bound to a plane to use the Auto Pop Out feature. You can continue to manually click start the pop out for unbound profile. Or better yet, use the new keyboard shortcut (Ctrl-Alt-P) to manually start the pop out process.
* 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.
* If you want to fly the same plane with different livery, the plane title will be different for each livery. You can see the current in-game active plane + livery title by hovering your mouse over the connection icon in the upper right corner of the app. In order to use Auto Pop Out feature in this scenario, first defined the initial profile for a plane + livery combination. After you're satisfy the profile is working, switch the plane livery and create a new profile by copying the initial profile and bound it to the plane again (with the new livery selected). You should notice the binding name will be different even though all the panel settings are the same. Repeat this for as many liveries for the plane as needed.
* If after binding the livery and Auto Pop Out did not work (which means the app cannot find a match), please hover your mouse over the connecting icon in the app to see the current plane title reported by the game is the same as what you've bound to the profile. Sometimes, SimConnect does not update the plane title until the flight actually starts. So if you've done the binding before the flight start, sometime it will not work. Just just "Replace binding" again and confirm the plane title.
* **TIPS:** One of the trick to force SimConnect to update the plane title after selecting a new livery is when you've selected a plane and livery in the World Map, click the "Go Back" button at the lower left of your screen.
* **TIPS:** For technical user, there are parts in this feature that uses a timer when waiting to execute certain steps in the Auto Pop Out process. An example is how long to wait for the "Ready to Fly" button to appear because auto-clicking it. Depending on the speed of your machine, you can adjust the wait timer to speed up or slow down the auto pop out process. Please see the section "User Profile Data Files" in the documentation for instruction to edit appSettings.json file.
<hr/>
## Application Features ## Application Features
* Display resolution independent. Supports 1080p/1440p/4k display. * Display resolution independent. Supports 1080p/1440p/4k display.
* Support multiple user defined profiles to save panel locations to be recalled later. * Support multiple user defined profiles to save panel locations to be recalled later.
* Intuitive user interface to defined location of panels to be popped out. * Intuitive user interface to defined location of panels to be popped out.
* Auto Pop Out feature. The application will detect current aircraft livery and activate the corresponding profile on flight session start.
* Cold Start feature. Panels can be popped out and recalled later even when they're not powered on. * Cold Start feature. Panels can be popped out and recalled later even when they're not powered on.
* 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 and Alt-0 keyboard binding to save custom camera view per plane configuration. If the keyboard binding is currently being used. The auto-panning feature will overwrite the saved camera view if enabled. * 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.
* Fine-grain control in positioning panels down to pixel level. * Fine-grain control in positioning panels down to pixel level.
* Panels can also be configured to be always on top, with title bar hidden, or stretch to full screen mode.
* User-friendly features such as application Always on Top and Auto Start as MSFS starts. * User-friendly features such as application Always on Top and Auto Start as MSFS starts.
* Auto save feature. All profile and panel changes get save automatically. * Auto save feature. All profile and panel changes are saved automatically.
* Please see [Version](VERSION.md) file for latest added application features.
<hr>
## History: Pop Out Panel Positioning Annoyance ## History: Pop Out Panel Positioning Annoyance
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 monitor. But this needs to be done every time you start a new flight, ALT-RIGHT clicking, 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 PFD and MFD do not have window title. This makes remembering their last used position more difficult and it seems very annoying to resize and re-adjust their positions to be used by Air Manager or other overlay tool on each new flight. 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 monitor. But this needs to be done every time you start a new flight, RIGHT-ALT clicking, 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 PFD and MFD do not have window title. This makes remembering their last used position more difficult and it seems very annoying to resize and re-adjust their positions to be used by Air Manager or other overlay tool on each new flight.
## Concepts of the Application
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. Then you just need to move these panels to their final positions. 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! 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. Then you just need to move these panels to their final positions. 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!
Before v3.0 of the application, heavy image recognition was used to figure out how to pop out and separate the panels, figure out which panel is which by plane type and configure them accordingly. Although, the image recognition is reasonably accurate, there is lot to be desired. Especially on Cold Start, image recognition will not work at all because all panels are black to start with. <hr>
With v3.0, redesign from the ground up about how to pop out and separate the panels and navigate around many of Asobo's bug, many of the image recognition code is now removed and replaced by pixel calculation algorithm to figure out how to separate panels accurately when they're being popped out in all display resolutions. Also, there is no longer the need to identify what panel is what since everything is done by pop out sequence. ## How to Use
## How to Use?
[Here](images/doc/userguide.mp4) or [Online](https://vimeo.com/668430955) is a video of how the app works.
1. Start the application **MSFSPopoutPanelManager.exe** and it will automatically connect when MSFS/SimConnect starts. You maybe prompt to download .NET framework 5.0. Please see the screenshot below to download and install x64 desktop version of the framework. 1. Start the application **MSFSPopoutPanelManager.exe** and it will automatically connect when MSFS/SimConnect starts. You maybe prompt to download .NET framework 5.0. Please see the screenshot below to download and install x64 desktop version of the framework.
@ -77,19 +44,19 @@ With v3.0, redesign from the ground up about how to pop out and separate the pan
2. First start the game and start a flight. Then, in the app, create a new profile (for example: Cessna 172 G1000) 2. First start the game and start a flight. Then, in the app, create a new profile (for example: Cessna 172 G1000)
<p align="center"> <p align="center">
<img src="images/doc/v3.2/screenshot_1.png" width="600" hspace="10"/> <img src="images/doc/screenshot_1.png" width="600" hspace="10"/>
</p> </p>
3. If you want to associate the profile to the current plane to use the Auto Pop Out feature, click "Add Binding". 3. If you want to associate the profile to the current aircraft livery to use in Auto Pop Out feature or automatic profile switching, click the "Plus" button next to the aircraft livery name. The aircraft livery title will become green once the profile is bound to the livery.
<p align="center"> <p align="center">
<img src="images/doc/v3.2/screenshot_2.png" width="600" hspace="10"/> <img src="images/doc/screenshot_2.png" width="600" hspace="10"/>
</p> </p>
3. Now 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 done to complete the selection. You can also move the number circles at this point to do final adjustment. 3. 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 done to complete the selection. You can also move the number circles at this point to do final adjustment.
<p align="center"> <p align="center">
<img src="images/doc/v3.2/screenshot_3.png" width="1000" hspace="10"/> <img src="images/doc/screenshot_3.png" width="1000" hspace="10"/>
</p> </p>
4. Now, 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. 4. Now, 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.
@ -97,13 +64,13 @@ With v3.0, redesign from the ground up about how to pop out and separate the pan
5. 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 if desire. 5. 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 if desire.
<p align="center"> <p align="center">
<img src="images/doc/v3.2/screenshot_4.png" width="1000" hspace="10"/> <img src="images/doc/screenshot_4.png" width="1000" hspace="10"/>
</p> </p>
6. Now, start the panel configuration by dragging the pop out panels into their final position (to your main monitor or other monitors). 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 datagrid cell (X-Pos, Y-Pos, Width, Height). You can also select "Always on Top" and "Hide Titlebar" if desire. Once all the panels are at their final position, just click "Lock Panel" to prevent further panel changes. 6. Now, start the panel configuration by dragging the pop out panels into their final position (to your main monitor or other monitors). 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 (X-Pos, Y-Pos, Width, Height). You can also select "Always on Top", "Hide Title Bar", or "Full Screen Mode" if desire. Once all the panels are at their final position, just click "Lock Panel" to prevent further panel changes.
<p align="center"> <p align="center">
<img src="images/doc/v3.2/screenshot_5.png" width="600" hspace="10"/> <img src="images/doc/screenshot_5.png" width="600" hspace="10"/>
</p> </p>
7. To test if everything is working. Once the profile is saved, please click "Restart" in the File menu. This will close all pop outs, except the built-in ones from the game main menu bar, and you're back to the start of the application. Now click "Start Pop Out" and see the magic happens! 7. To test if everything is working. Once the profile is saved, please click "Restart" in the File menu. This will close all pop outs, except the built-in ones from the game main menu bar, and you're back to the start of the application. Now click "Start Pop Out" and see the magic happens!
@ -111,13 +78,34 @@ With v3.0, redesign from the ground up about how to pop out and separate the pan
8. With auto panning feature enabled, 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. 8. With auto panning feature enabled, 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.
<p align="center"> <p align="center">
<img src="images/doc/screenshot3.png" width="1000" hspace="10"/> <img src="images/doc/screenshot_6.png" width="1000" hspace="10"/>
</p> </p>
<p align="center"> <p align="center">
<img src="images/doc/screenshot4.png" width="1000" hspace="10"/> <img src="images/doc/screenshot_7.png" width="1000" hspace="10"/>
</p> </p>
<hr>
## How Auto Pop Out Works
The app will try to find a matching profile with the current selected aircraft livery. It will then automatically detect when a flight is starting and then click the "Ready to Fly" button. It will also power on instrumentation for cold start (if necessary), and 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.
* First make sure in File->Preferences->Auto Pop Out Panel Settings, "Enable Auto Pop Out Panels" option is turned on.
* For existing profile to use Auto Pop Out feature, just click "Add Binding" (the plus sign) and bind the profile to the active aircraft livery currently being displayed. 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 only bound the livery to a single profile so the Auto Pop Out will work.
* 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.
* If you want to fly the same plane with different livery, just add the aircraft livery binding to your desire profile when you switch plane.
* 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.
* **TIPS:** One trick to force SimConnect to update the current selected aircraft livery so you can do the binding is after selecting a new livery in the World Map, 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 aircraft livery gets updated.
[Online Video - Auto Pop Out in action](https://vimeo.com/674073559) - In the video, after clicking flight restart, the app did all the clicking by itself.
<hr/>
## User Profile Data Files ## User Profile Data Files
@ -125,24 +113,19 @@ The user plane profile data and application settings data are stored as JSON fil
* userdata/userprofiledata.json * userdata/userprofiledata.json
* userdata/appsettingdata.json * userdata/appsettingdata.json
* userdata/autoupdate.json
**Note for technical user**. If you would like to shorten or extend the wait time for each step during Auto Pop Out, Panel, you can edit the following JSON element in appsettingdata.json file. The wait time is in seconds. If you don't see this JSON element, just update any File->Preferences setting and it will trigger this JSON element to be saved into the file. <hr/>
"AutoPopOutPanelsWaitDelay": {
"ReadyToFlyButton": 3,
"InitialCockpitView": 3,
"InstrumentationPowerOn": 2
}
## Current Known Issue ## Current Known Issue
* Automatic power on for Auto Pop Out Panel 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. * 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.
* Sometimes when using the auto-panning feature, the keyboard combination of Ctrl-Alt-0 and Alt-0 do not work to save and load panel panning coordinates. First try to restart the flightsim and it usually fixes the problem. Otherwise, the only way to fix this is to redo the profile if you want the auto-panning feature since the camera angle is only being saved during the initial creation of the profile. The is another MSFS bug.
* 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. * 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.
* Please see [Version](VERSION.md) file for latest known application issues.
<hr/>
## Common Problem Resolution ## Common Problem Resolution
@ -150,7 +133,7 @@ The user plane profile data and application settings data are stored as JSON fil
* 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. * 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.
* Unable to pop out ALL panels. This may indicate a potential miscount of selected 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. * 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.
* 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. * 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.
@ -172,8 +155,6 @@ I welcome feedback to help improve the usefulness of this application. You are w
Thank you for your super kind support of this app! Thank you for your super kind support of this app!
## Credits ## Credits
[AForge.NET](http://www.aforgenet.com/framework/) Image recognition library. For version 2.x of the application.
[MouseKeyHook](https://github.com/gmamaladze/globalmousekeyhook) by George Mamaladze [MouseKeyHook](https://github.com/gmamaladze/globalmousekeyhook) by George Mamaladze
[Fody](https://github.com/Fody/Fody) .NET assemblies weaver by Fody [Fody](https://github.com/Fody/Fody) .NET assemblies weaver by Fody

View file

@ -2,10 +2,26 @@
<hr/> <hr/>
## Version 3.2.0.1 (v3.2 Release) ## Version 3.3.0
* Added application auto update support. By installing this version of the app, auto update functionality will be available for all future versions of the application. * Pop out panel without a title bar can now be moved and resized.
* Disabled panel adjustments when Hide Title Bar is checked for a panel. This is to fix an issue where panel adjustments (X-Pos, Y-Pos, Width, and Height) will behave erratically when Hide Title Bar is checked. * Added full screen mode capability to panel. This emulates MSFS Alt-Enter keystroke activation. To configure, just move the pop out panel to your desire monitor and select "Full Screen Mode" in the configuration grid for the panel. [Issue #13](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/13)
* Increased default delay for auto-clicking "Ready to Fly" button from 2 seconds to 4 seconds in regard to Auto Pop Out Panels feature . [Fixed Issue #9](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/9) * Added automatic activation of profile when launching a flight session when a aircraft livery is bound to the profile.
* Multiple aircraft liveries can now be bound to a profile. An aircraft livery can only bind to a single profile. [Issue #16](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/16)
* Removed 'Set Default' profile function.
* Last used profile will be loaded when application starts.
* Added preference configuration to set Auto Panning custom view key binding. It is now possible to define key binding from Ctrl-Alt-0 through Ctrl-Alt-9 when saving cockpit custom camera view. [Issue #15](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/15)
* Added configuration to adjust delay for each of the auto pop out panel steps.
* Added separate preference settings screen.
* Added auto update feature for future version of the application.
Bug Fixes:
* Application will go back to home screen correctly when a flight session ends.
* Application should reconnect to MSFS correctly when MSFS gracefully quits and restarts.
Known Issues:
* If a panel is in Full Screen Mode, using manual keystroke to return the panel to non-full screen mode will make the panel configuration data becomes out of sync. Restart and re-execute the pop out profile will solve the problem.
* Activating full screen mode, either through panel configuration grid or using manual Alt-Enter keystroke can only be done once per panel. This is a limitation on MSFS side. Subsequent Alt-Enter will only maximize the panel to full screen without stretching the content. Restart and re-execute the pop out profile will solve the problem.
* Hide Title Bar and Always on Top may not work if Full Screen Mode has been previously activated for a panel. This is a limitation on MSFS side on how windows are being handled.
## Version 3.2.0 (Beta) ## Version 3.2.0 (Beta)
* Added new Auto Pop Out Panels when flight start feature. Now the app will match a profile to the plane you're flying and perform all the pop outs for you, even help you to click the "ready to fly" button when a flying session is about to start! * Added new Auto Pop Out Panels when flight start feature. Now the app will match a profile to the plane you're flying and perform all the pop outs for you, even help you to click the "ready to fly" button when a flying session is about to start!

View file

@ -76,8 +76,6 @@ namespace MSFSPopoutPanelManager.WpfApp
var messageBoxMessage = "Application has encountered a critical error and will be closed.\nPlease see the file 'error.log' for information."; var messageBoxMessage = "Application has encountered a critical error and will be closed.\nPlease see the file 'error.log' for information.";
var messageBoxButtons = MessageBoxButton.OK; var messageBoxButtons = MessageBoxButton.OK;
if (MessageBox.Show(messageBoxMessage, messageBoxTitle, messageBoxButtons) == MessageBoxResult.OK) if (MessageBox.Show(messageBoxMessage, messageBoxTitle, messageBoxButtons) == MessageBoxResult.OK)
{ {
Application.Current.Shutdown(); Application.Current.Shutdown();
@ -85,7 +83,6 @@ namespace MSFSPopoutPanelManager.WpfApp
} }
} }
public enum PROCESS_DPI_AWARENESS public enum PROCESS_DPI_AWARENESS
{ {
Process_DPI_Unaware = 0, Process_DPI_Unaware = 0,

View file

@ -101,7 +101,7 @@
<WrapPanel Orientation="Vertical" Width="Auto" Visibility="{Binding Path=AutoPopOutSettingsVisibility, Mode=TwoWay}"> <WrapPanel Orientation="Vertical" Width="Auto" Visibility="{Binding Path=AutoPopOutSettingsVisibility, Mode=TwoWay}">
<CheckBox IsChecked="{Binding Path=AppSetting.AutoPopOutPanels, Mode=TwoWay}" Content="Enable Auto Pop Out Panels"></CheckBox> <CheckBox IsChecked="{Binding Path=AppSetting.AutoPopOutPanels, Mode=TwoWay}" Content="Enable Auto Pop Out Panels"></CheckBox>
<TextBlock Style="{StaticResource TextBlockDescription}"> <TextBlock Style="{StaticResource TextBlockDescription}">
Automatic pop out panels when an aircraft livery is binded to a profile. The following steps will be performed. Automatic pop out panels when an aircraft livery is bound to a profile. The following steps will be performed.
</TextBlock> </TextBlock>
<TextBlock Style="{StaticResource TextBlockDescription}"> <TextBlock Style="{StaticResource TextBlockDescription}">
1. Detect flight start signal using SimConnect. 1. Detect flight start signal using SimConnect.

View file

@ -74,15 +74,15 @@
<Label.Style> <Label.Style>
<Style TargetType="{x:Type Label}"> <Style TargetType="{x:Type Label}">
<Style.Triggers> <Style.Triggers>
<DataTrigger Binding="{c:Binding Path='DataStore.IsAircraftBindedToProfile'}" Value="True"> <DataTrigger Binding="{c:Binding Path='DataStore.IsAircraftBoundToProfile'}" Value="True">
<Setter Property="Foreground" Value="LightGreen" ></Setter> <Setter Property="Foreground" Value="LightGreen" ></Setter>
</DataTrigger> </DataTrigger>
<DataTrigger Binding="{c:Binding Path='DataStore.IsAircraftBindedToProfile'}" Value="False"> <DataTrigger Binding="{c:Binding Path='DataStore.IsAircraftBoundToProfile'}" Value="False">
<Setter Property="Foreground" Value="AntiqueWhite" ></Setter> <Setter Property="Foreground" Value="AntiqueWhite" ></Setter>
</DataTrigger> </DataTrigger>
<DataTrigger Binding="{c:Binding Path='!DataStore.IsAllowedAddAircraftBinding and !DataStore.IsAllowedDeleteAircraftBinding'}" Value="True"> <DataTrigger Binding="{c:Binding Path='!DataStore.IsAllowedAddAircraftBinding and !DataStore.IsAllowedDeleteAircraftBinding'}" Value="True">
<Setter Property="Foreground" Value="Red" ></Setter> <Setter Property="Foreground" Value="Red" ></Setter>
<Setter Property="ToolTip" Value="Aircraft Livery is currently binded to another profile"></Setter> <Setter Property="ToolTip" Value="Aircraft Livery is currently bound to another profile"></Setter>
</DataTrigger> </DataTrigger>
</Style.Triggers> </Style.Triggers>
</Style> </Style>

View file

@ -292,7 +292,7 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
AutoUpdater.PersistenceProvider = new JsonFilePersistenceProvider(jsonPath); AutoUpdater.PersistenceProvider = new JsonFilePersistenceProvider(jsonPath);
AutoUpdater.Synchronous = true; AutoUpdater.Synchronous = true;
AutoUpdater.AppTitle = "MSFS Pop Out Panel Manager"; AutoUpdater.AppTitle = "MSFS Pop Out Panel Manager";
//AutoUpdater.RunUpdateAsAdmin = false; AutoUpdater.RunUpdateAsAdmin = false;
AutoUpdater.UpdateFormSize = new System.Drawing.Size(930, 675); AutoUpdater.UpdateFormSize = new System.Drawing.Size(930, 675);
AutoUpdater.Start("https://raw.githubusercontent.com/hawkeye-stan/msfs-popout-panel-manager/master/autoupdate.xml"); AutoUpdater.Start("https://raw.githubusercontent.com/hawkeye-stan/msfs-popout-panel-manager/master/autoupdate.xml");
//AutoUpdater.Start("https://raw.githubusercontent.com/hawkeye-stan/AutoUpdateTest/main/autoupdate.xml"); //AutoUpdater.Start("https://raw.githubusercontent.com/hawkeye-stan/AutoUpdateTest/main/autoupdate.xml");

View file

@ -117,7 +117,7 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
get { return !String.IsNullOrEmpty(CurrentMsfsPlaneTitle); } get { return !String.IsNullOrEmpty(CurrentMsfsPlaneTitle); }
} }
public bool IsAircraftBindedToProfile public bool IsAircraftBoundToProfile
{ {
get get
{ {

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<item> <item>
<version>3.2.0.0</version> <version>3.3.0.0</version>
<url>https://github.com/hawkeye-stan/msfs-popout-panel-manager/releases/download/v3.2b/msfs-popout-panel-manager.zip</url> <url>https://github.com/hawkeye-stan/msfs-popout-panel-manager/releases/download/v3.3/msfs-popout-panel-manager.zip</url>
<changelog>https://raw.githubusercontent.com/hawkeye-stan/msfs-popout-panel-manager/master/latestreleasenotes.txt</changelog> <changelog>https://raw.githubusercontent.com/hawkeye-stan/msfs-popout-panel-manager/master/latestreleasenotes.txt</changelog>
<mandatory>false</mandatory> <mandatory>false</mandatory>
</item> </item>

BIN
images/doc/screenshot_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
images/doc/screenshot_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View file

Before

Width:  |  Height:  |  Size: 4 MiB

After

Width:  |  Height:  |  Size: 4 MiB

View file

Before

Width:  |  Height:  |  Size: 5.7 MiB

After

Width:  |  Height:  |  Size: 5.7 MiB

View file

Before

Width:  |  Height:  |  Size: 4.1 MiB

After

Width:  |  Height:  |  Size: 4.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 2 MiB

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

View file

@ -1,12 +1,53 @@
Version 3.2.0.1 (v3.2 Release) Version 3.3.0
- Added application auto update support. By installing this version of the app, auto update New Features:
functionality will be available for all future versions of the application.
- Disabled panel adjustments when Hide Title Bar is checked for a panel. This is to fix an - Pop out panel without a title bar can now be moved and resized.
issue where panel adjustments (X-Pos, Y-Pos, Width, and Height) will behave erratically when
Hide Title Bar is checked.
- Increased default delay for auto-clicking "Ready to Fly" button from 2 seconds to 4 seconds - Added full screen mode capability to panel. This emulates MSFS Alt-Enter keystroke activation.
in regard to Auto Pop Out Panels feature. To configure, just move the pop out panel to your desire monitor and select "Full Screen Mode"
[Fixed Issue #9] (https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/9 in the configuration grid for the panel. [Issue #13](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/13)
- Added automatic activation of profile when launching a flight session when a aircraft livery
is bound to the profile.
- Multiple aircraft liveries can now be bound to a profile. An aircraft livery can only bind to
a single profile. [Issue #16](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/16)
- Removed 'Set Default' profile function.
- Last used profile will be loaded when application starts.
- Added preference configuration to set Auto Panning custom view key binding. It is now possible
to define key binding from Ctrl-Alt-0 through Ctrl-Alt-9 when saving cockpit custom camera view.
[Issue #15](https://github.com/hawkeye-stan/msfs-popout-panel-manager/issues/15)
- Added configuration to adjust delay for each of the auto pop out panel steps.
- Added separate preference settings screen.
- Added auto update feature for future version of the application.
Bug Fixes:
- Application will go back to home screen correctly when a flight session ends.
- Application should reconnect to MSFS correctly when MSFS gracefully quits and restarts.
Known Issues:
- If a panel is in Full Screen Mode, using manual keystroke to return the panel to non-full screen
mode will make the panel configuration data becomes out of sync. Restart and re-execute the pop out
profile will solve the problem.
- Activating full screen mode, either through panel configuration grid or using manual Alt-Enter
keystroke can only be done once per panel. This is a limitation on MSFS side. Subsequent Alt-Enter
will only maximize the panel to full screen without stretching the content. Restart and re-execute
the pop out profile will solve the problem.
- Hide Title Bar and Always on Top may not work if Full Screen Mode has been previously activated
for a panel. This is a limitation on MSFS side on how windows are being handled.