mirror of
https://github.com/hawkeye-stan/msfs-popout-panel-manager.git
synced 2024-11-21 13:20:11 +00:00
Version 3.4.3 Release
This commit is contained in:
parent
43caff1ca9
commit
12495a3964
25 changed files with 212 additions and 220 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -9,9 +9,6 @@
|
|||
*.sln.docstates
|
||||
*.backup
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
|
@ -92,9 +89,6 @@ orleans.codegen.cs
|
|||
|
||||
/node_modules
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.ArduinoAgent</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
|
@ -33,154 +33,82 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TouchPanelAgent", "TouchPan
|
|||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
DebugTouchPanel|Any CPU = DebugTouchPanel|Any CPU
|
||||
DebugTouchPanel|x64 = DebugTouchPanel|x64
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
ReleaseTouchPanel|Any CPU = ReleaseTouchPanel|Any CPU
|
||||
ReleaseTouchPanel|x64 = ReleaseTouchPanel|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Debug|x64.Build.0 = Debug|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Release|Any CPU.Build.0 = Release|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Release|x64.ActiveCfg = Release|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Release|x64.Build.0 = Release|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Debug|x64.Build.0 = Debug|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Release|Any CPU.Build.0 = Release|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Release|x64.ActiveCfg = Release|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Release|x64.Build.0 = Release|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Debug|x64.Build.0 = Debug|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Release|Any CPU.Build.0 = Release|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Release|x64.ActiveCfg = Release|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Release|x64.Build.0 = Release|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Debug|x64.Build.0 = Debug|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Release|Any CPU.Build.0 = Release|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Release|x64.ActiveCfg = Release|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Release|x64.Build.0 = Release|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Debug|x64.Build.0 = Debug|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Release|Any CPU.Build.0 = Release|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Release|x64.ActiveCfg = Release|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Release|x64.Build.0 = Release|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Debug|x64.Build.0 = Debug|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Release|Any CPU.Build.0 = Release|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Release|x64.ActiveCfg = Release|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Release|x64.Build.0 = Release|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Debug|x64.Build.0 = Debug|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Release|Any CPU.Build.0 = Release|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Release|x64.ActiveCfg = Release|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Release|x64.Build.0 = Release|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Debug|x64.Build.0 = Debug|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Release|Any CPU.Build.0 = Release|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Release|x64.ActiveCfg = Release|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Release|x64.Build.0 = Release|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Debug|x64.Build.0 = Debug|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.DebugTouchPanel|x64.Build.0 = DebugTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Release|Any CPU.Build.0 = Release|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Release|x64.ActiveCfg = Release|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Release|x64.Build.0 = Release|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||
{2F36A227-C92C-4B42-B1E4-480015492357}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||
EndGlobalSection
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.Orchestration</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
|
@ -53,18 +53,27 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
ProfileData.WriteProfiles();
|
||||
}
|
||||
|
||||
public void PanelConfigPropertyUpdated(int panelIndex, PanelConfigPropertyName configPropertyName)
|
||||
public void PanelConfigPropertyUpdated(IntPtr panelHandle, PanelConfigPropertyName configPropertyName)
|
||||
{
|
||||
if (panelIndex == -1 || !AllowEdit || ActiveProfile.IsLocked)
|
||||
if (panelHandle == IntPtr.Zero || !AllowEdit || ActiveProfile.IsLocked)
|
||||
return;
|
||||
|
||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelIndex == panelIndex);
|
||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelHandle == panelHandle);
|
||||
|
||||
if (panelConfig != null)
|
||||
{
|
||||
if (configPropertyName == PanelConfigPropertyName.FullScreen)
|
||||
{
|
||||
InputEmulationManager.ToggleFullScreenPanel(panelConfig.PanelHandle);
|
||||
|
||||
// Set full screen mode panel coordinate
|
||||
var windowRectangle = WindowActionManager.GetWindowRect(panelConfig.PanelHandle);
|
||||
var clientRectangle = WindowActionManager.GetClientRect(panelConfig.PanelHandle);
|
||||
panelConfig.FullScreenLeft = panelConfig.FullScreen ? windowRectangle.Left : 0;
|
||||
panelConfig.FullScreenTop = panelConfig.FullScreen ? windowRectangle.Top : 0;
|
||||
panelConfig.FullScreenWidth = panelConfig.FullScreen ? clientRectangle.Width : 0;
|
||||
panelConfig.FullScreenHeight = panelConfig.FullScreen ? clientRectangle.Height : 0;
|
||||
|
||||
panelConfig.HideTitlebar = false;
|
||||
panelConfig.AlwaysOnTop = false;
|
||||
}
|
||||
|
@ -123,12 +132,12 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
}
|
||||
}
|
||||
|
||||
public void PanelConfigIncreaseDecrease(int panelIndex, PanelConfigPropertyName configPropertyName, int changeAmount)
|
||||
public void PanelConfigIncreaseDecrease(IntPtr panelHandle, PanelConfigPropertyName configPropertyName, int changeAmount)
|
||||
{
|
||||
if (panelIndex == -1 || !AllowEdit || ActiveProfile.IsLocked || ActiveProfile.PanelConfigs == null || ActiveProfile.PanelConfigs.Count == 0)
|
||||
if (panelHandle == IntPtr.Zero || !AllowEdit || ActiveProfile.IsLocked || ActiveProfile.PanelConfigs == null || ActiveProfile.PanelConfigs.Count == 0)
|
||||
return;
|
||||
|
||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelIndex == panelIndex);
|
||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelHandle == panelHandle);
|
||||
|
||||
if (panelConfig != null)
|
||||
{
|
||||
|
|
|
@ -3,7 +3,6 @@ using MSFSPopoutPanelManager.UserDataAgent;
|
|||
using MSFSPopoutPanelManager.WindowsAgent;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
@ -198,14 +197,14 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
// Allow delay to wait for in game built-in pop outs to appear
|
||||
Thread.Sleep(_builtInPanelConfigDelay);
|
||||
|
||||
var panelResults = AddBuiltInPanels(panelConfigs.Count + 200); // add a panelIndex gap
|
||||
var panelResults = AddBuiltInPanels();
|
||||
if (panelResults != null)
|
||||
panelConfigs.AddRange(panelResults);
|
||||
}
|
||||
|
||||
if (panelConfigs.Count == 0)
|
||||
{
|
||||
StatusMessageWriter.WriteMessage("No panels have been found. Please select at least one in-game panel.", StatusMessageType.Error, false);
|
||||
StatusMessageWriter.WriteMessage("No panels have been found. Please select at least one in-game panel.", StatusMessageType.Error, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -225,13 +224,12 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
if (ActiveProfile.PanelConfigs.Count > 0)
|
||||
{
|
||||
LoadAndApplyPanelConfigs(panelConfigs);
|
||||
ActiveProfile.PanelConfigs = new ObservableCollection<PanelConfig>(panelConfigs);
|
||||
StatusMessageWriter.WriteMessage("Panels have been popped out succesfully and saved panel settings have been applied.", StatusMessageType.Info, true);
|
||||
OnPopOutCompleted?.Invoke(this, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ActiveProfile.PanelConfigs = new ObservableCollection<PanelConfig>(panelConfigs);
|
||||
LoadAndApplyPanelConfigs(panelConfigs);
|
||||
StatusMessageWriter.WriteMessage("Panels have been popped out succesfully.", StatusMessageType.Info, true);
|
||||
OnPopOutCompleted?.Invoke(this, true);
|
||||
}
|
||||
|
@ -325,7 +323,7 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
InputEmulationManager.LeftClick(point.X, point.Y);
|
||||
}
|
||||
|
||||
private List<PanelConfig> AddBuiltInPanels(int panelIndex)
|
||||
private List<PanelConfig> AddBuiltInPanels()
|
||||
{
|
||||
List<PanelConfig> builtinPanels = new List<PanelConfig>();
|
||||
|
||||
|
@ -338,7 +336,7 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
|
||||
builtinPanels.Add(new PanelConfig()
|
||||
{
|
||||
PanelIndex = panelIndex,
|
||||
PanelIndex = -1,
|
||||
PanelHandle = panelHandle,
|
||||
PanelType = PanelType.BuiltInPopout,
|
||||
PanelName = WindowActionManager.GetWindowCaption(panelHandle),
|
||||
|
@ -347,8 +345,6 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
Width = clientRectangle.Width,
|
||||
Height = clientRectangle.Height
|
||||
});
|
||||
|
||||
panelIndex++;
|
||||
}
|
||||
|
||||
return builtinPanels.Count == 0 ? null : builtinPanels;
|
||||
|
@ -423,6 +419,8 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
|
||||
private void LoadAndApplyPanelConfigs(List<PanelConfig> panelResults)
|
||||
{
|
||||
ActiveProfile.PanelConfigs.ToList().ForEach(p => p.PanelHandle = IntPtr.Zero);
|
||||
|
||||
Parallel.ForEach(panelResults, panel =>
|
||||
{
|
||||
// Something is wrong here where panel has no window handle
|
||||
|
@ -436,82 +434,94 @@ namespace MSFSPopoutPanelManager.Orchestration
|
|||
else if (panel.PanelType == PanelType.BuiltInPopout)
|
||||
savedPanelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(s => s.PanelName == panel.PanelName);
|
||||
|
||||
if (savedPanelConfig == null)
|
||||
{
|
||||
panel.PanelHandle = IntPtr.Zero;
|
||||
return;
|
||||
}
|
||||
if (savedPanelConfig == null) return;
|
||||
|
||||
// Assign previous saved values
|
||||
if (savedPanelConfig != null)
|
||||
{
|
||||
panel.PanelName = savedPanelConfig.PanelName;
|
||||
panel.Top = savedPanelConfig.Top;
|
||||
panel.Left = savedPanelConfig.Left;
|
||||
panel.Width = savedPanelConfig.Width;
|
||||
panel.Height = savedPanelConfig.Height;
|
||||
panel.FullScreen = savedPanelConfig.FullScreen;
|
||||
panel.AlwaysOnTop = savedPanelConfig.AlwaysOnTop;
|
||||
panel.HideTitlebar = savedPanelConfig.HideTitlebar;
|
||||
panel.TouchEnabled = savedPanelConfig.TouchEnabled;
|
||||
}
|
||||
// Assign window handle to panel config
|
||||
savedPanelConfig.PanelHandle = panel.PanelHandle;
|
||||
|
||||
// Apply panel name
|
||||
if (panel.PanelType == PanelType.CustomPopout)
|
||||
if (savedPanelConfig.PanelType == PanelType.CustomPopout)
|
||||
{
|
||||
var caption = panel.PanelName + " (Custom)";
|
||||
PInvoke.SetWindowText(panel.PanelHandle, caption);
|
||||
var caption = savedPanelConfig.PanelName + " (Custom)";
|
||||
PInvoke.SetWindowText(savedPanelConfig.PanelHandle, caption);
|
||||
Thread.Sleep(500);
|
||||
}
|
||||
|
||||
// Apply locations
|
||||
if (panel.Width != 0 && panel.Height != 0)
|
||||
if (savedPanelConfig.Width != 0 && savedPanelConfig.Height != 0)
|
||||
{
|
||||
PInvoke.ShowWindow(panel.PanelHandle, PInvokeConstant.SW_RESTORE);
|
||||
PInvoke.ShowWindow(savedPanelConfig.PanelHandle, PInvokeConstant.SW_RESTORE);
|
||||
Thread.Sleep(250);
|
||||
WindowActionManager.MoveWindow(panel.PanelHandle, panel.Left, panel.Top, panel.Width, panel.Height);
|
||||
WindowActionManager.MoveWindow(savedPanelConfig.PanelHandle, savedPanelConfig.Left, savedPanelConfig.Top, savedPanelConfig.Width, savedPanelConfig.Height);
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
// Apply window size again to overcome a bug in MSFS that when moving panel between monitors, panel automatic resize for no reason
|
||||
if (panel.PanelType == PanelType.BuiltInPopout)
|
||||
if (savedPanelConfig.PanelType == PanelType.BuiltInPopout)
|
||||
{
|
||||
Thread.Sleep(2000); // Overcome GTN750 bug
|
||||
WindowActionManager.MoveWindow(panel.PanelHandle, panel.Left, panel.Top, panel.Width, panel.Height);
|
||||
WindowActionManager.MoveWindow(savedPanelConfig.PanelHandle, savedPanelConfig.Left, savedPanelConfig.Top, savedPanelConfig.Width, savedPanelConfig.Height);
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
if (!panel.FullScreen)
|
||||
if (!savedPanelConfig.FullScreen)
|
||||
{
|
||||
// Apply always on top
|
||||
if (panel.AlwaysOnTop)
|
||||
if (savedPanelConfig.AlwaysOnTop)
|
||||
{
|
||||
WindowActionManager.ApplyAlwaysOnTop(panel.PanelHandle, panel.PanelType, true, new Rectangle(panel.Left, panel.Top, panel.Width, panel.Height));
|
||||
WindowActionManager.ApplyAlwaysOnTop(savedPanelConfig.PanelHandle, savedPanelConfig.PanelType, true, new Rectangle(savedPanelConfig.Left, savedPanelConfig.Top, savedPanelConfig.Width, savedPanelConfig.Height));
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
// Apply hide title bar
|
||||
if (panel.HideTitlebar)
|
||||
WindowActionManager.ApplyHidePanelTitleBar(panel.PanelHandle, true);
|
||||
if (savedPanelConfig.HideTitlebar)
|
||||
WindowActionManager.ApplyHidePanelTitleBar(savedPanelConfig.PanelHandle, true);
|
||||
}
|
||||
|
||||
PInvoke.ShowWindow(panel.PanelHandle, PInvokeConstant.SW_RESTORE);
|
||||
PInvoke.ShowWindow(savedPanelConfig.PanelHandle, PInvokeConstant.SW_RESTORE);
|
||||
});
|
||||
|
||||
// If profile is unlocked, add any new panel into profile
|
||||
if (!ActiveProfile.IsLocked)
|
||||
{
|
||||
var isAdded = false;
|
||||
|
||||
panelResults.ForEach(panel =>
|
||||
{
|
||||
if (panel.PanelType == PanelType.BuiltInPopout && !ActiveProfile.PanelConfigs.Any(s => s.PanelName == panel.PanelName))
|
||||
{
|
||||
ActiveProfile.PanelConfigs.Add(panel);
|
||||
isAdded = true;
|
||||
}
|
||||
else if (panel.PanelType == PanelType.CustomPopout && !ActiveProfile.PanelConfigs.Any(s => s.PanelIndex == panel.PanelIndex))
|
||||
{
|
||||
ActiveProfile.PanelConfigs.Add(panel);
|
||||
isAdded = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (isAdded)
|
||||
ProfileData.WriteProfiles();
|
||||
}
|
||||
|
||||
// Apply full screen (cannot combine with always on top or hide title bar)
|
||||
// Cannot run in parallel process
|
||||
panelResults.ForEach(panel =>
|
||||
ActiveProfile.PanelConfigs.ToList().ForEach(panel =>
|
||||
{
|
||||
if (panel.FullScreen && (!panel.AlwaysOnTop && !panel.HideTitlebar))
|
||||
{
|
||||
InputEmulationManager.ToggleFullScreenPanel(panel.PanelHandle);
|
||||
Thread.Sleep(250);
|
||||
|
||||
// Set full screen mode panel coordinate
|
||||
var windowRectangle = WindowActionManager.GetWindowRect(panel.PanelHandle);
|
||||
var clientRectangle = WindowActionManager.GetClientRect(panel.PanelHandle);
|
||||
panel.FullScreenLeft = windowRectangle.Left;
|
||||
panel.FullScreenTop = windowRectangle.Top;
|
||||
panel.FullScreenWidth = clientRectangle.Width;
|
||||
panel.FullScreenHeight = clientRectangle.Height;
|
||||
}
|
||||
});
|
||||
|
||||
// If profile is locked, remove all panels without handle
|
||||
if (ActiveProfile.IsLocked)
|
||||
panelResults.RemoveAll(p => p.PanelHandle == IntPtr.Zero);
|
||||
}
|
||||
|
||||
private void ReturnToAfterPopOutCameraView()
|
||||
|
|
|
@ -14,8 +14,9 @@ Please follow [FlightSimulator.com](https://forums.flightsimulator.com/t/msfs-po
|
|||
|
||||
<hr>
|
||||
|
||||
|
||||
## Touch Panel Feature
|
||||
With SU10 Beta v1.27.11, Asobo seems to have fix a major [bug](#touch-enable-pop-out-feature) (in SU9 and before) that stops Pop Out Panel Manager's touch panel feature from working reliably. I'm happy to announce touch enabled feature works pretty well out of the box on either direct connected touch monitor or on pop out window that is displayed on tablet using software tool such as SpaceDesk. Until Asobo actually allow touch passthrough for panels, this tool can serve as a stopgap solution.
|
||||
With SU10 Beta v1.27.11+, Asobo seems to have fix a major [bug](#touch-enable-pop-out-feature) (in SU9 and before) that stops Pop Out Panel Manager's touch panel feature from working reliably. I'm happy to announce touch enabled feature works pretty well out of the box on either direct connected touch monitor or on pop out window that is displayed on tablet using software tool such as SpaceDesk. Until Asobo actually allow touch passthrough for panels, this tool can serve as a stopgap solution.
|
||||
|
||||
I've tested touch operation on GTN750, GTN530, KingAir PFD/MFD, TMB 930 FMS, Flybywire A32NX EFB and they are operational. Please report any issues that you encounter when using touch enable feature. There is still lots of room for improvement and I'll continue my effort to make touch work better and better.
|
||||
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
namespace MSFSPopoutPanelManager.Shared
|
||||
using System;
|
||||
|
||||
namespace MSFSPopoutPanelManager.Shared
|
||||
{
|
||||
public class PanelConfigItem
|
||||
{
|
||||
public int PanelIndex { get; set; }
|
||||
public PanelConfigItem()
|
||||
{
|
||||
PanelHandle = IntPtr.Zero;
|
||||
}
|
||||
|
||||
public IntPtr PanelHandle { get; set; }
|
||||
|
||||
public PanelConfigPropertyName PanelConfigProperty { get; set; }
|
||||
}
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.Shared</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.SimConnectAgent</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.TouchPanelAgent</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
|
@ -109,6 +109,9 @@ namespace MSFSPopoutPanelManager.UserDataAgent
|
|||
|
||||
public bool DisableGameRefocus { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool IsFound { get { return PanelHandle != IntPtr.Zero; } }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool IsCustomPopOut { get { return PanelType == PanelType.CustomPopout; } }
|
||||
|
||||
|
@ -150,6 +153,18 @@ namespace MSFSPopoutPanelManager.UserDataAgent
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
public int FullScreenTop { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public int FullScreenLeft { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public int FullScreenWidth { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public int FullScreenHeight { get; set; }
|
||||
}
|
||||
|
||||
public class TouchPanelBinding : ObservableObject
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace MSFSPopoutPanelManager.UserDataAgent
|
|||
|
||||
var copiedProfile = matchedProfile.Copy<Profile>(); // Using Shared/ObjectExtensions.cs extension method
|
||||
copiedProfile.BindingAircrafts = new ObservableCollection<string>();
|
||||
copiedProfile.IsLocked = false;
|
||||
|
||||
return AddProfile(copiedProfile, newProfileName, profiles);
|
||||
}
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.UserDataAgent</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
10
VERSION.md
10
VERSION.md
|
@ -2,9 +2,13 @@
|
|||
<hr/>
|
||||
|
||||
## Version 3.4.3
|
||||
* Added ability to remember MSFS game window size and location for aircraft profile when running the game in windows display mode. This new setting is used to resize game window to match original size and location of MSFS game window when panel profile was defined initially. For existing aircraft profile, when running the game in windows display mode, the profile will automatically save MSFS game window position after the first successful pop out.
|
||||
* Added ability to include in-game menu bar panels such as VFR Map, ATC, Checklist, etc to aircraft profile. During the pop out process, if any in-game menu bar panels are in popped out state, they will be included in panel configurations. This feature will only work if in-game menu bar panels are popped out initially and it also rely on MSFS re-opens these panels when flight starts (SU 10+).
|
||||
* Added UI cue to show number circles momentarily when popping out panel to facilitate troubleshooting.
|
||||
* Added ability to remember MSFS game window size and location for aircraft profile when running the game in windows display mode. This new preference setting is used to resize game window to match original size and location of MSFS game window when panel profile was defined initially. For existing aircraft profile, when running the game in windows display mode, the profile will automatically save MSFS game window position after the first successful pop out.
|
||||
|
||||
* Added ability to include in-game menu bar panels such as VFR Map, ATC, Checklist, etc to aircraft profile. During the pop out process, if any in-game menu bar panels are in popped out state, they will be included in panel configurations. This feature will only work if in-game menu bar panels are popped out if using in conjunction with auto pop out, it relies on MSFS re-opens these panels when flight starts (SU 10+). This also allows in-game menu bar panels to be touch enabled. Toggling the include in-game menu bar panels checkbox for a profile will reset these panels' inclusion and configurations. When using this feature with Auto Pop Out, there will be a delay in the pop out process to allow in-game menu bar panels to appear on screen before they're being configured to previously defined settings.
|
||||
|
||||
* Added UI cue to show number circle momentarily when popping out panel.
|
||||
|
||||
* Fixed an issue where touch does not work for panel when using full screen mode.
|
||||
|
||||
## Version 3.4.2
|
||||
* Major change in how profile is bound to an aircraft. Previously, a profile is bound to an aircraft livery which requires you to activate binding when switching livery for the same aircraft. With this update, a profile is now bound to an aircraft so you no longer need to perform the binding step when switching livery. As you change active aircraft to fly, all existing livery binding will be automatically converted to aircraft binding if one exists. Also, a profile can still be bound to multiple aircrafts if you so choose such as when flying multiple variations of Cessna 172. This change has been a long awaited request to simplify your profile bindings.
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.WebServer</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
|
@ -18,6 +18,7 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
|||
private static bool _isMouseMoveBlock = false;
|
||||
private static object _mouseTouchLock = new object();
|
||||
private static bool _isDragged = false;
|
||||
private static bool _refocused = true;
|
||||
|
||||
private const int PANEL_MENUBAR_HEIGHT = 31;
|
||||
private const uint TOUCH_FLAG = 0xFF515700;
|
||||
|
@ -77,13 +78,19 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
|||
return PInvoke.CallNextHookEx(_hHook, code, wParam, lParam);
|
||||
}
|
||||
|
||||
// Touch
|
||||
// If touch point is within pop out panel boundaries and have touch enabled
|
||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.TouchEnabled
|
||||
&& info.pt.X > p.Left
|
||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.TouchEnabled &&
|
||||
((!p.FullScreen &&
|
||||
info.pt.X > p.Left
|
||||
&& info.pt.X < p.Left + p.Width
|
||||
&& info.pt.Y > p.Top + (p.HideTitlebar || p.FullScreen ? 5 : PANEL_MENUBAR_HEIGHT)
|
||||
&& info.pt.Y < p.Top + p.Height);
|
||||
&& info.pt.Y > p.Top + (p.HideTitlebar ? 5 : PANEL_MENUBAR_HEIGHT)
|
||||
&& info.pt.Y < p.Top + p.Height) ||
|
||||
(p.FullScreen &&
|
||||
info.pt.X > p.FullScreenLeft
|
||||
&& info.pt.X < p.FullScreenLeft + p.FullScreenWidth
|
||||
&& info.pt.Y > p.FullScreenTop + 5
|
||||
&& info.pt.Y < p.FullScreenTop + p.FullScreenHeight
|
||||
)));
|
||||
|
||||
if (panelConfig == null)
|
||||
return PInvoke.CallNextHookEx(_hHook, code, wParam, lParam);
|
||||
|
@ -97,6 +104,7 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
|||
case WM_LBUTTONDOWN:
|
||||
if (!_isTouchDown)
|
||||
{
|
||||
_refocused = false;
|
||||
_isTouchDown = true;
|
||||
_isMouseMoveBlock = true;
|
||||
|
||||
|
@ -153,8 +161,9 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
|||
{
|
||||
Thread.Sleep(AppSetting.TouchScreenSettings.RefocusGameWindowDelay);
|
||||
|
||||
if (!_isTouchDown && AppSetting.TouchScreenSettings.RefocusGameWindow && !panelConfig.DisableGameRefocus)
|
||||
if (!_refocused && !_isTouchDown && AppSetting.TouchScreenSettings.RefocusGameWindow && !panelConfig.DisableGameRefocus)
|
||||
{
|
||||
_refocused = true;
|
||||
var rectangle = WindowActionManager.GetWindowRect(_simulatorProcess.Handle);
|
||||
var clientRectangle = WindowActionManager.GetClientRect(_simulatorProcess.Handle);
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
|||
{
|
||||
var systemAssemblyVersion = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
|
||||
var appVersion = $"{systemAssemblyVersion.Major}.{systemAssemblyVersion.Minor}.{systemAssemblyVersion.Build}";
|
||||
if (systemAssemblyVersion.Revision > 0)
|
||||
appVersion += "." + systemAssemblyVersion.Revision.ToString("D4"); ;
|
||||
//if (systemAssemblyVersion.Revision > 0)
|
||||
// appVersion += "." + systemAssemblyVersion.Revision.ToString("D4");
|
||||
|
||||
return appVersion;
|
||||
}
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||
<RootNamespace>MSFSPopoutPanelManager.WindowsAgent</RootNamespace>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>Embedded</DebugType>
|
||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="Foreground" Value="#FF4D4D4D" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
@ -48,7 +49,8 @@
|
|||
<DataGrid Name="PanelConfigGrid" HorizontalAlignment="Center" Width="882" Height="460" Margin="0 10 0 0" AutoGenerateColumns="False" CanUserResizeColumns="False" HorizontalScrollBarVisibility="Disabled"
|
||||
CanUserReorderColumns="False" CanUserResizeRows="False" HorizontalGridLinesBrush="#B9B9B9" VerticalGridLinesBrush="#B9B9B9" GridLinesVisibility="Horizontal" SelectionUnit="Cell"
|
||||
BorderThickness="1" CanUserAddRows="False" CanUserSortColumns="False" KeyboardNavigation.TabNavigation="None" KeyboardNavigation.IsTabStop="False"
|
||||
ItemsSource="{Binding ProfileData.ActiveProfile.PanelConfigs}" HeadersVisibility="Column" KeyboardNavigation.DirectionalNavigation="Local" MouseDown="PanelConfigGrid_MouseDown">
|
||||
ItemsSource="{Binding ProfileData.ActiveProfile.PanelConfigs}" HeadersVisibility="Column" KeyboardNavigation.DirectionalNavigation="Local" MouseDown="PanelConfigGrid_MouseDown"
|
||||
IsHitTestVisible="{c:Binding Path='!ProfileData.ActiveProfile.IsLocked'}">
|
||||
<DataGrid.RowStyle>
|
||||
<Style TargetType="DataGridRow">
|
||||
<Setter Property="Background" Value="{x:Null}" />
|
||||
|
@ -98,7 +100,7 @@
|
|||
<TextBox Name="PanelName" Width="30" Height="28" BorderThickness="0" TextAlignment="Left"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
IsReadOnly="True"
|
||||
IsHitTestVisible="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='!DataContext.ProfileData.ActiveProfile.IsLocked'}"
|
||||
IsHitTestVisible="{Binding IsFound}"
|
||||
Text="▶"
|
||||
VerticalAlignment="Center"
|
||||
Padding="5, 3, 0, 0">
|
||||
|
@ -127,8 +129,9 @@
|
|||
Text="{Binding PanelName, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
Style="{StaticResource TextBoxColumnFocus}"
|
||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
||||
IsEnabled="{Binding IsCustomPopOut}">
|
||||
IsHitTestVisible="{Binding IsCustomPopOut}"
|
||||
IsReadOnly="{c:Binding Path='!IsCustomPopOut'}"
|
||||
IsEnabled="{Binding IsFound}">
|
||||
</TextBox>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
|
@ -140,8 +143,8 @@
|
|||
Text="{Binding Left, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
Style="{StaticResource TextBoxColumnFocus}"
|
||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
||||
IsEnabled="{Binding IsFound}"
|
||||
GotFocus="NumericDataPoint_GotFocus"
|
||||
LostFocus="NumericDataPoint_LostFocus"
|
||||
FontSize="14"/>
|
||||
|
@ -155,8 +158,8 @@
|
|||
Text="{Binding Top, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
Style="{StaticResource TextBoxColumnFocus}"
|
||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
||||
IsEnabled="{Binding IsFound}"
|
||||
GotFocus="NumericDataPoint_GotFocus"
|
||||
LostFocus="NumericDataPoint_LostFocus"
|
||||
FontSize="14"/>
|
||||
|
@ -170,8 +173,8 @@
|
|||
Text="{Binding Width, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
Style="{StaticResource TextBoxColumnFocus}"
|
||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
||||
IsEnabled="{Binding IsFound}"
|
||||
GotFocus="NumericDataPoint_GotFocus"
|
||||
LostFocus="NumericDataPoint_LostFocus"
|
||||
FontSize="14"/>
|
||||
|
@ -185,11 +188,12 @@
|
|||
Text="{Binding Height, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
Style="{StaticResource TextBoxColumnFocus}"
|
||||
IsReadOnly="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='DataContext.ProfileData.ActiveProfile.IsLocked'}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
||||
IsEnabled="{Binding IsFound}"
|
||||
GotFocus="NumericDataPoint_GotFocus"
|
||||
LostFocus="NumericDataPoint_LostFocus"
|
||||
FontSize="14"/>
|
||||
FontSize="14">
|
||||
</TextBox>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
@ -199,8 +203,7 @@
|
|||
<CheckBox Name="AlwaysOnTop" Width="75" Margin="30 0 0 0"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
IsChecked="{Binding AlwaysOnTop, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
||||
IsEnabled="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='!DataContext.ProfileData.ActiveProfile.IsLocked'}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"/>
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen and IsFound'}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
@ -210,8 +213,7 @@
|
|||
<CheckBox Name="HideTitlebar" Width="75" Margin="30 0 0 0"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
IsChecked="{Binding HideTitlebar, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
||||
IsEnabled="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='!DataContext.ProfileData.ActiveProfile.IsLocked '}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen and (IsCustomPopOut or IsBuiltInPopOut)'}"/>
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen and (IsCustomPopOut or IsBuiltInPopOut) and IsFound'}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
@ -221,19 +223,17 @@
|
|||
<CheckBox Name="FullScreen" Width="80" Margin="32 0 0 0"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
IsChecked="{Binding FullScreen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
||||
IsEnabled="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='!DataContext.ProfileData.ActiveProfile.IsLocked'}"
|
||||
IsHitTestVisible="{c:Binding Path='IsCustomPopOut or IsBuiltInPopOut'}"/>
|
||||
IsHitTestVisible="{c:Binding Path='(IsCustomPopOut or IsBuiltInPopOut) and IsFound'}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="Touch Enabled" Width="70">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox Name="TouchEnabled" Width="70" Margin="25 0 0 0"
|
||||
<CheckBox Name="TouchEnabled" Width="70" Margin="25 0 0 0" Foreground="#FFFFFFFF"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
IsChecked="{Binding TouchEnabled, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
||||
IsEnabled="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='!DataContext.ProfileData.ActiveProfile.IsLocked'}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen and (IsCustomPopOut or IsBuiltInPopOut)'}"/>
|
||||
IsHitTestVisible="{c:Binding Path='(IsCustomPopOut or IsBuiltInPopOut) and IsFound'}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
@ -243,8 +243,7 @@
|
|||
<CheckBox Name="DisableGameRefocus" Width="70" Margin="25 0 0 0"
|
||||
SourceUpdated="GridData_SourceUpdated"
|
||||
IsChecked="{Binding DisableGameRefocus, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
||||
IsEnabled="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='!DataContext.ProfileData.ActiveProfile.IsLocked'}"
|
||||
IsHitTestVisible="{c:Binding Path='!FullScreen and (IsCustomPopOut or IsBuiltInPopOut) and TouchEnabled'}"/>
|
||||
IsHitTestVisible="{c:Binding Path='(IsCustomPopOut or IsBuiltInPopOut) and TouchEnabled and IsFound'}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace MSFSPopoutPanelManager.WpfApp
|
|||
var panelConfig = container.Content as PanelConfig;
|
||||
var propertyName = (PanelConfigPropertyName)Enum.Parse(typeof(PanelConfigPropertyName), ((Control)sender).Name);
|
||||
|
||||
var panelConfigItem = new PanelConfigItem() { PanelIndex = panelConfig.PanelIndex, PanelConfigProperty = propertyName };
|
||||
var panelConfigItem = new PanelConfigItem() { PanelHandle = panelConfig.PanelHandle, PanelConfigProperty = propertyName };
|
||||
_panelConfigurationViewModel.PanelConfigUpdatedCommand.Execute(panelConfigItem);
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,7 @@ namespace MSFSPopoutPanelManager.WpfApp
|
|||
break;
|
||||
}
|
||||
|
||||
_panelConfigurationViewModel.SelectedPanelConfigItem = new PanelConfigItem() { PanelIndex = panelConfig.PanelIndex, PanelConfigProperty = selectedProperty };
|
||||
_panelConfigurationViewModel.SelectedPanelConfigItem = new PanelConfigItem() { PanelHandle = panelConfig.PanelHandle, PanelConfigProperty = selectedProperty };
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,7 +96,7 @@ namespace MSFSPopoutPanelManager.WpfApp
|
|||
_panelConfigurationViewModel.NumericDataPointTextBox = textBox;
|
||||
|
||||
var panelConfig = textBox.DataContext as PanelConfig;
|
||||
_panelConfigurationViewModel.SelectedPanelConfigItem = new PanelConfigItem() { PanelIndex = panelConfig.PanelIndex, PanelConfigProperty = (PanelConfigPropertyName)Enum.Parse(typeof(PanelConfigPropertyName), textBox.Name) };
|
||||
_panelConfigurationViewModel.SelectedPanelConfigItem = new PanelConfigItem() { PanelHandle = panelConfig.PanelHandle, PanelConfigProperty = (PanelConfigPropertyName)Enum.Parse(typeof(PanelConfigPropertyName), textBox.Name) };
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -57,12 +57,12 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
|||
{
|
||||
var panelConfigItem = commandParameter as PanelConfigItem;
|
||||
if (panelConfigItem != null)
|
||||
_orchestrator.PanelConfiguration.PanelConfigPropertyUpdated(panelConfigItem.PanelIndex, panelConfigItem.PanelConfigProperty);
|
||||
_orchestrator.PanelConfiguration.PanelConfigPropertyUpdated(panelConfigItem.PanelHandle, panelConfigItem.PanelConfigProperty);
|
||||
}
|
||||
|
||||
private void OnDataItemIncDec(object commandParameter)
|
||||
{
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, SelectedPanelConfigItem.PanelConfigProperty, Convert.ToInt32(commandParameter));
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, SelectedPanelConfigItem.PanelConfigProperty, Convert.ToInt32(commandParameter));
|
||||
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
|
@ -73,7 +73,7 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
|||
|
||||
private void OnConfigurePanel(object commandParameter)
|
||||
{
|
||||
if (SelectedPanelConfigItem.PanelIndex == -1)
|
||||
if (SelectedPanelConfigItem.PanelHandle == IntPtr.Zero)
|
||||
return;
|
||||
|
||||
var keyAction = commandParameter as KeyAction;
|
||||
|
@ -81,28 +81,28 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
|||
switch (keyAction.Action)
|
||||
{
|
||||
case "Up":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Top, -1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Top, -1 * keyAction.Multiplier);
|
||||
break;
|
||||
case "Down":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Top, 1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Top, 1 * keyAction.Multiplier);
|
||||
break;
|
||||
case "Left":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Left, -1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Left, -1 * keyAction.Multiplier);
|
||||
break;
|
||||
case "Right":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Left, 1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Left, 1 * keyAction.Multiplier);
|
||||
break;
|
||||
case "Control-Up":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Height, -1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Height, -1 * keyAction.Multiplier);
|
||||
break;
|
||||
case "Control-Down":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Height, 1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Height, 1 * keyAction.Multiplier);
|
||||
break;
|
||||
case "Control-Left":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Width, -1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Width, -1 * keyAction.Multiplier);
|
||||
break;
|
||||
case "Control-Right":
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Width, 1 * keyAction.Multiplier);
|
||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Width, 1 * keyAction.Multiplier);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
|||
.ObservesProperty(() => ProfileData.ActiveProfile)
|
||||
.ObservesProperty(() => FlightSimData.IsSimulatorStarted);
|
||||
|
||||
SetIncludeInGamePanelsCommand = new DelegateCommand(() => ProfileData.WriteProfiles(), () => FlightSimData.HasCurrentMsfsAircraft && ProfileData.HasActiveProfile && FlightSimData.IsSimulatorStarted)
|
||||
SetIncludeInGamePanelsCommand = new DelegateCommand(OnSetIncludeInGamePanels, () => FlightSimData.HasCurrentMsfsAircraft && ProfileData.HasActiveProfile && FlightSimData.IsSimulatorStarted)
|
||||
.ObservesProperty(() => FlightSimData.HasCurrentMsfsAircraft)
|
||||
.ObservesProperty(() => ProfileData.ActiveProfile)
|
||||
.ObservesProperty(() => FlightSimData.IsSimulatorStarted);
|
||||
|
@ -193,5 +193,14 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
|||
{
|
||||
OpenTouchPanelBindingDialog?.Invoke(this, null);
|
||||
}
|
||||
|
||||
private void OnSetIncludeInGamePanels()
|
||||
{
|
||||
// Reset all in-game panels configuration
|
||||
if (!ProfileData.ActiveProfile.IncludeInGamePanels)
|
||||
ProfileData.ActiveProfile.PanelConfigs.RemoveAll(c => c.PanelType == PanelType.BuiltInPopout);
|
||||
|
||||
ProfileData.WriteProfiles();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,9 +14,9 @@
|
|||
<RootNamespace>MSFSPopoutPanelManager.WpfApp</RootNamespace>
|
||||
<ApplicationIcon>logo.ico</ApplicationIcon>
|
||||
<Platforms>x64</Platforms>
|
||||
<Version>3.4.3.0</Version>
|
||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0</FileVersion>
|
||||
<Version>3.4.3.0911</Version>
|
||||
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||
<FileVersion>3.4.3.0911</FileVersion>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<DebugType>embedded</DebugType>
|
||||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
|
||||
|
|
|
@ -1,21 +1,27 @@
|
|||
Version 3.4.3.0
|
||||
Version 3.4.3
|
||||
|
||||
This release is optional and please feel to skip this update.
|
||||
|
||||
Change Log:
|
||||
|
||||
* Added ability to remember MSFS game window size and location for aircraft profile when
|
||||
running the game in windows display mode. This new setting is used to resize game window to
|
||||
match original size and location of MSFS game window when panel profile was defined
|
||||
initially. For existing aircraft profile, when running the game in windows display mode,
|
||||
the profile will automatically save MSFS game window position after the first successful
|
||||
pop out.
|
||||
running the game in windows display mode. This new preference setting is used to resize
|
||||
game window to match original size and location of MSFS game window when panel profile was
|
||||
defined initially. For existing aircraft profile, when running the game in windows display
|
||||
mode, the profile will automatically save MSFS game window position after the first
|
||||
successful pop out.
|
||||
|
||||
* Added ability to include in-game menu bar panels such as VFR Map, ATC, Checklist, etc to
|
||||
aircraft profile. During the pop out process, if any in-game menu bar panels are in popped
|
||||
out state, they will be included in panel configurations. This feature will only work if
|
||||
in-game menu bar panels are popped out initially and it also rely on MSFS re-opens these
|
||||
panels when flight starts (SU 10+).
|
||||
in-game menu bar panels are popped out and if using in conjunction with auto pop out, it
|
||||
relies on MSFS re-opens these panels when flight starts (SU 10+). This also allows in-game
|
||||
menu bar panels to be touch enabled. Toggling the include in-game menu bar panels checkbox
|
||||
for a profile will reset these panels' inclusion and configurations. When using this
|
||||
feature with Auto Pop Out, there will be a delay in the pop out process to allow in-game
|
||||
menu bar panels to appear on screen before they're being configured to previously defined
|
||||
settings.
|
||||
|
||||
* Added UI cue to show number circles momentarily when popping out panel to facilitate
|
||||
troubleshooting.
|
||||
* Added UI cue to show number circles momentarily when popping out panel.
|
||||
|
||||
* Fixed an issue where touch does not work for panel when using full screen mode.
|
Loading…
Reference in a new issue