mirror of
https://github.com/hawkeye-stan/msfs-popout-panel-manager.git
synced 2024-11-23 22:30:09 +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
|
*.sln.docstates
|
||||||
*.backup
|
*.backup
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
|
||||||
*.userprefs
|
|
||||||
|
|
||||||
# Build results
|
# Build results
|
||||||
[Dd]ebug/
|
[Dd]ebug/
|
||||||
[Dd]ebugPublic/
|
[Dd]ebugPublic/
|
||||||
|
@ -92,9 +89,6 @@ orleans.codegen.cs
|
||||||
|
|
||||||
/node_modules
|
/node_modules
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
|
||||||
Generated_Code/
|
|
||||||
|
|
||||||
# Backup & report files from converting an old project file
|
# Backup & report files from converting an old project file
|
||||||
# to a newer Visual Studio version. Backup files are not needed,
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
# because we have git ;-)
|
# because we have git ;-)
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.ArduinoAgent</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.ArduinoAgent</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
|
@ -33,154 +33,82 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TouchPanelAgent", "TouchPan
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
DebugTouchPanel|Any CPU = DebugTouchPanel|Any CPU
|
|
||||||
DebugTouchPanel|x64 = DebugTouchPanel|x64
|
DebugTouchPanel|x64 = DebugTouchPanel|x64
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
ReleaseTouchPanel|Any CPU = ReleaseTouchPanel|Any CPU
|
|
||||||
ReleaseTouchPanel|x64 = ReleaseTouchPanel|x64
|
ReleaseTouchPanel|x64 = ReleaseTouchPanel|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
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.ActiveCfg = Debug|x64
|
||||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Debug|x64.Build.0 = 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.ActiveCfg = DebugTouchPanel|x64
|
||||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.DebugTouchPanel|x64.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.Release|x64.Build.0 = 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.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{54712A0A-B344-45E4-85C4-0A913305A0E6}.ReleaseTouchPanel|x64.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Debug|x64.Build.0 = 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.ActiveCfg = DebugTouchPanel|x64
|
||||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.DebugTouchPanel|x64.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.Release|x64.Build.0 = 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.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{4BDDE1F9-FBDD-479A-B88E-B27D0513C046}.ReleaseTouchPanel|x64.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Debug|x64.Build.0 = 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.ActiveCfg = DebugTouchPanel|x64
|
||||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.DebugTouchPanel|x64.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.Release|x64.Build.0 = 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.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{BDD878A3-EF5B-43C7-94B7-CEFA04C67A9E}.ReleaseTouchPanel|x64.Build.0 = 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}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Debug|x64.Build.0 = Debug|x64
|
||||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
|
||||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|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}.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}.Release|x64.ActiveCfg = Release|x64
|
||||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.Release|x64.Build.0 = Release|x64
|
||||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
|
||||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{E72F813F-EE30-4384-B02F-EB5D4BCFEC49}.ReleaseTouchPanel|x64.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Debug|x64.Build.0 = 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.ActiveCfg = DebugTouchPanel|x64
|
||||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.DebugTouchPanel|x64.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.Release|x64.Build.0 = 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.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{1BBF7803-BA8D-4AEF-8319-061E93AE5F3D}.ReleaseTouchPanel|x64.Build.0 = 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}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.DebugTouchPanel|Any CPU.ActiveCfg = DebugTouchPanel|x64
|
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Debug|x64.Build.0 = Debug|x64
|
||||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.DebugTouchPanel|Any CPU.Build.0 = DebugTouchPanel|x64
|
|
||||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.DebugTouchPanel|x64.ActiveCfg = DebugTouchPanel|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}.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}.Release|x64.ActiveCfg = Release|x64
|
||||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|Any CPU.ActiveCfg = ReleaseTouchPanel|x64
|
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.Release|x64.Build.0 = Release|x64
|
||||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|Any CPU.Build.0 = ReleaseTouchPanel|x64
|
|
||||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|x64.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{D20EA590-22C2-4F93-AC25-AF6960F97E03}.ReleaseTouchPanel|x64.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Debug|x64.Build.0 = 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.ActiveCfg = DebugTouchPanel|x64
|
||||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.DebugTouchPanel|x64.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.Release|x64.Build.0 = 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.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{677B6DF0-8E19-4B08-8480-F7C365B6BB89}.ReleaseTouchPanel|x64.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Debug|x64.Build.0 = 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.ActiveCfg = DebugTouchPanel|x64
|
||||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.DebugTouchPanel|x64.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.Release|x64.Build.0 = 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.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{9CD4014F-B3EA-4E67-9329-9679931E2688}.ReleaseTouchPanel|x64.Build.0 = 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.ActiveCfg = Debug|x64
|
||||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Debug|x64.Build.0 = 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.ActiveCfg = DebugTouchPanel|x64
|
||||||
{2F36A227-C92C-4B42-B1E4-480015492357}.DebugTouchPanel|x64.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{2F36A227-C92C-4B42-B1E4-480015492357}.Release|x64.Build.0 = 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.ActiveCfg = ReleaseTouchPanel|x64
|
||||||
{2F36A227-C92C-4B42-B1E4-480015492357}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
{2F36A227-C92C-4B42-B1E4-480015492357}.ReleaseTouchPanel|x64.Build.0 = ReleaseTouchPanel|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.Orchestration</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.Orchestration</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
|
@ -53,18 +53,27 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
ProfileData.WriteProfiles();
|
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;
|
return;
|
||||||
|
|
||||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelIndex == panelIndex);
|
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelHandle == panelHandle);
|
||||||
|
|
||||||
if (panelConfig != null)
|
if (panelConfig != null)
|
||||||
{
|
{
|
||||||
if (configPropertyName == PanelConfigPropertyName.FullScreen)
|
if (configPropertyName == PanelConfigPropertyName.FullScreen)
|
||||||
{
|
{
|
||||||
InputEmulationManager.ToggleFullScreenPanel(panelConfig.PanelHandle);
|
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.HideTitlebar = false;
|
||||||
panelConfig.AlwaysOnTop = 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;
|
return;
|
||||||
|
|
||||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelIndex == panelIndex);
|
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.PanelHandle == panelHandle);
|
||||||
|
|
||||||
if (panelConfig != null)
|
if (panelConfig != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,6 @@ using MSFSPopoutPanelManager.UserDataAgent;
|
||||||
using MSFSPopoutPanelManager.WindowsAgent;
|
using MSFSPopoutPanelManager.WindowsAgent;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
@ -198,14 +197,14 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
// Allow delay to wait for in game built-in pop outs to appear
|
// Allow delay to wait for in game built-in pop outs to appear
|
||||||
Thread.Sleep(_builtInPanelConfigDelay);
|
Thread.Sleep(_builtInPanelConfigDelay);
|
||||||
|
|
||||||
var panelResults = AddBuiltInPanels(panelConfigs.Count + 200); // add a panelIndex gap
|
var panelResults = AddBuiltInPanels();
|
||||||
if (panelResults != null)
|
if (panelResults != null)
|
||||||
panelConfigs.AddRange(panelResults);
|
panelConfigs.AddRange(panelResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (panelConfigs.Count == 0)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,13 +224,12 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
if (ActiveProfile.PanelConfigs.Count > 0)
|
if (ActiveProfile.PanelConfigs.Count > 0)
|
||||||
{
|
{
|
||||||
LoadAndApplyPanelConfigs(panelConfigs);
|
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);
|
StatusMessageWriter.WriteMessage("Panels have been popped out succesfully and saved panel settings have been applied.", StatusMessageType.Info, true);
|
||||||
OnPopOutCompleted?.Invoke(this, false);
|
OnPopOutCompleted?.Invoke(this, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ActiveProfile.PanelConfigs = new ObservableCollection<PanelConfig>(panelConfigs);
|
LoadAndApplyPanelConfigs(panelConfigs);
|
||||||
StatusMessageWriter.WriteMessage("Panels have been popped out succesfully.", StatusMessageType.Info, true);
|
StatusMessageWriter.WriteMessage("Panels have been popped out succesfully.", StatusMessageType.Info, true);
|
||||||
OnPopOutCompleted?.Invoke(this, true);
|
OnPopOutCompleted?.Invoke(this, true);
|
||||||
}
|
}
|
||||||
|
@ -325,7 +323,7 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
InputEmulationManager.LeftClick(point.X, point.Y);
|
InputEmulationManager.LeftClick(point.X, point.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<PanelConfig> AddBuiltInPanels(int panelIndex)
|
private List<PanelConfig> AddBuiltInPanels()
|
||||||
{
|
{
|
||||||
List<PanelConfig> builtinPanels = new List<PanelConfig>();
|
List<PanelConfig> builtinPanels = new List<PanelConfig>();
|
||||||
|
|
||||||
|
@ -338,7 +336,7 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
|
|
||||||
builtinPanels.Add(new PanelConfig()
|
builtinPanels.Add(new PanelConfig()
|
||||||
{
|
{
|
||||||
PanelIndex = panelIndex,
|
PanelIndex = -1,
|
||||||
PanelHandle = panelHandle,
|
PanelHandle = panelHandle,
|
||||||
PanelType = PanelType.BuiltInPopout,
|
PanelType = PanelType.BuiltInPopout,
|
||||||
PanelName = WindowActionManager.GetWindowCaption(panelHandle),
|
PanelName = WindowActionManager.GetWindowCaption(panelHandle),
|
||||||
|
@ -347,8 +345,6 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
Width = clientRectangle.Width,
|
Width = clientRectangle.Width,
|
||||||
Height = clientRectangle.Height
|
Height = clientRectangle.Height
|
||||||
});
|
});
|
||||||
|
|
||||||
panelIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return builtinPanels.Count == 0 ? null : builtinPanels;
|
return builtinPanels.Count == 0 ? null : builtinPanels;
|
||||||
|
@ -423,6 +419,8 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
|
|
||||||
private void LoadAndApplyPanelConfigs(List<PanelConfig> panelResults)
|
private void LoadAndApplyPanelConfigs(List<PanelConfig> panelResults)
|
||||||
{
|
{
|
||||||
|
ActiveProfile.PanelConfigs.ToList().ForEach(p => p.PanelHandle = IntPtr.Zero);
|
||||||
|
|
||||||
Parallel.ForEach(panelResults, panel =>
|
Parallel.ForEach(panelResults, panel =>
|
||||||
{
|
{
|
||||||
// Something is wrong here where panel has no window handle
|
// Something is wrong here where panel has no window handle
|
||||||
|
@ -436,82 +434,94 @@ namespace MSFSPopoutPanelManager.Orchestration
|
||||||
else if (panel.PanelType == PanelType.BuiltInPopout)
|
else if (panel.PanelType == PanelType.BuiltInPopout)
|
||||||
savedPanelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(s => s.PanelName == panel.PanelName);
|
savedPanelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(s => s.PanelName == panel.PanelName);
|
||||||
|
|
||||||
if (savedPanelConfig == null)
|
if (savedPanelConfig == null) return;
|
||||||
{
|
|
||||||
panel.PanelHandle = IntPtr.Zero;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assign previous saved values
|
// Assign window handle to panel config
|
||||||
if (savedPanelConfig != null)
|
savedPanelConfig.PanelHandle = panel.PanelHandle;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply panel name
|
// Apply panel name
|
||||||
if (panel.PanelType == PanelType.CustomPopout)
|
if (savedPanelConfig.PanelType == PanelType.CustomPopout)
|
||||||
{
|
{
|
||||||
var caption = panel.PanelName + " (Custom)";
|
var caption = savedPanelConfig.PanelName + " (Custom)";
|
||||||
PInvoke.SetWindowText(panel.PanelHandle, caption);
|
PInvoke.SetWindowText(savedPanelConfig.PanelHandle, caption);
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply locations
|
// 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);
|
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);
|
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
|
// 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
|
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);
|
Thread.Sleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!panel.FullScreen)
|
if (!savedPanelConfig.FullScreen)
|
||||||
{
|
{
|
||||||
// Apply always on top
|
// 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);
|
Thread.Sleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply hide title bar
|
// Apply hide title bar
|
||||||
if (panel.HideTitlebar)
|
if (savedPanelConfig.HideTitlebar)
|
||||||
WindowActionManager.ApplyHidePanelTitleBar(panel.PanelHandle, true);
|
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)
|
// Apply full screen (cannot combine with always on top or hide title bar)
|
||||||
// Cannot run in parallel process
|
// Cannot run in parallel process
|
||||||
panelResults.ForEach(panel =>
|
ActiveProfile.PanelConfigs.ToList().ForEach(panel =>
|
||||||
{
|
{
|
||||||
if (panel.FullScreen && (!panel.AlwaysOnTop && !panel.HideTitlebar))
|
if (panel.FullScreen && (!panel.AlwaysOnTop && !panel.HideTitlebar))
|
||||||
{
|
{
|
||||||
InputEmulationManager.ToggleFullScreenPanel(panel.PanelHandle);
|
InputEmulationManager.ToggleFullScreenPanel(panel.PanelHandle);
|
||||||
Thread.Sleep(250);
|
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()
|
private void ReturnToAfterPopOutCameraView()
|
||||||
|
|
|
@ -14,8 +14,9 @@ Please follow [FlightSimulator.com](https://forums.flightsimulator.com/t/msfs-po
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
## Touch Panel Feature
|
## 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.
|
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 class PanelConfigItem
|
||||||
{
|
{
|
||||||
public int PanelIndex { get; set; }
|
public PanelConfigItem()
|
||||||
|
{
|
||||||
|
PanelHandle = IntPtr.Zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntPtr PanelHandle { get; set; }
|
||||||
|
|
||||||
public PanelConfigPropertyName PanelConfigProperty { get; set; }
|
public PanelConfigPropertyName PanelConfigProperty { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.Shared</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.Shared</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.SimConnectAgent</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.SimConnectAgent</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.TouchPanelAgent</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.TouchPanelAgent</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
|
@ -109,6 +109,9 @@ namespace MSFSPopoutPanelManager.UserDataAgent
|
||||||
|
|
||||||
public bool DisableGameRefocus { get; set; }
|
public bool DisableGameRefocus { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public bool IsFound { get { return PanelHandle != IntPtr.Zero; } }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool IsCustomPopOut { get { return PanelType == PanelType.CustomPopout; } }
|
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
|
public class TouchPanelBinding : ObservableObject
|
||||||
|
|
|
@ -29,6 +29,7 @@ namespace MSFSPopoutPanelManager.UserDataAgent
|
||||||
|
|
||||||
var copiedProfile = matchedProfile.Copy<Profile>(); // Using Shared/ObjectExtensions.cs extension method
|
var copiedProfile = matchedProfile.Copy<Profile>(); // Using Shared/ObjectExtensions.cs extension method
|
||||||
copiedProfile.BindingAircrafts = new ObservableCollection<string>();
|
copiedProfile.BindingAircrafts = new ObservableCollection<string>();
|
||||||
|
copiedProfile.IsLocked = false;
|
||||||
|
|
||||||
return AddProfile(copiedProfile, newProfileName, profiles);
|
return AddProfile(copiedProfile, newProfileName, profiles);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.UserDataAgent</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.UserDataAgent</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
10
VERSION.md
10
VERSION.md
|
@ -2,9 +2,13 @@
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
## Version 3.4.3
|
## 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 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 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 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
|
## 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.
|
* 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>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.WebServer</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.WebServer</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
|
@ -18,6 +18,7 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
||||||
private static bool _isMouseMoveBlock = false;
|
private static bool _isMouseMoveBlock = false;
|
||||||
private static object _mouseTouchLock = new object();
|
private static object _mouseTouchLock = new object();
|
||||||
private static bool _isDragged = false;
|
private static bool _isDragged = false;
|
||||||
|
private static bool _refocused = true;
|
||||||
|
|
||||||
private const int PANEL_MENUBAR_HEIGHT = 31;
|
private const int PANEL_MENUBAR_HEIGHT = 31;
|
||||||
private const uint TOUCH_FLAG = 0xFF515700;
|
private const uint TOUCH_FLAG = 0xFF515700;
|
||||||
|
@ -77,13 +78,19 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
||||||
return PInvoke.CallNextHookEx(_hHook, code, wParam, lParam);
|
return PInvoke.CallNextHookEx(_hHook, code, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Touch
|
|
||||||
// If touch point is within pop out panel boundaries and have touch enabled
|
// If touch point is within pop out panel boundaries and have touch enabled
|
||||||
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.TouchEnabled
|
var panelConfig = ActiveProfile.PanelConfigs.FirstOrDefault(p => p.TouchEnabled &&
|
||||||
&& info.pt.X > p.Left
|
((!p.FullScreen &&
|
||||||
|
info.pt.X > p.Left
|
||||||
&& info.pt.X < p.Left + p.Width
|
&& 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.HideTitlebar ? 5 : PANEL_MENUBAR_HEIGHT)
|
||||||
&& info.pt.Y < p.Top + p.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)
|
if (panelConfig == null)
|
||||||
return PInvoke.CallNextHookEx(_hHook, code, wParam, lParam);
|
return PInvoke.CallNextHookEx(_hHook, code, wParam, lParam);
|
||||||
|
@ -97,6 +104,7 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
if (!_isTouchDown)
|
if (!_isTouchDown)
|
||||||
{
|
{
|
||||||
|
_refocused = false;
|
||||||
_isTouchDown = true;
|
_isTouchDown = true;
|
||||||
_isMouseMoveBlock = true;
|
_isMouseMoveBlock = true;
|
||||||
|
|
||||||
|
@ -153,8 +161,9 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
||||||
{
|
{
|
||||||
Thread.Sleep(AppSetting.TouchScreenSettings.RefocusGameWindowDelay);
|
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 rectangle = WindowActionManager.GetWindowRect(_simulatorProcess.Handle);
|
||||||
var clientRectangle = WindowActionManager.GetClientRect(_simulatorProcess.Handle);
|
var clientRectangle = WindowActionManager.GetClientRect(_simulatorProcess.Handle);
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,8 @@ namespace MSFSPopoutPanelManager.WindowsAgent
|
||||||
{
|
{
|
||||||
var systemAssemblyVersion = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
|
var systemAssemblyVersion = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
|
||||||
var appVersion = $"{systemAssemblyVersion.Major}.{systemAssemblyVersion.Minor}.{systemAssemblyVersion.Build}";
|
var appVersion = $"{systemAssemblyVersion.Major}.{systemAssemblyVersion.Minor}.{systemAssemblyVersion.Build}";
|
||||||
if (systemAssemblyVersion.Revision > 0)
|
//if (systemAssemblyVersion.Revision > 0)
|
||||||
appVersion += "." + systemAssemblyVersion.Revision.ToString("D4"); ;
|
// appVersion += "." + systemAssemblyVersion.Revision.ToString("D4");
|
||||||
|
|
||||||
return appVersion;
|
return appVersion;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.WindowsAgent</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.WindowsAgent</RootNamespace>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>Embedded</DebugType>
|
<DebugType>Embedded</DebugType>
|
||||||
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
<Configurations>Debug;Release;DebugTouchPanel;ReleaseTouchPanel</Configurations>
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter.Value>
|
</Setter.Value>
|
||||||
</Setter>
|
</Setter>
|
||||||
|
<Setter Property="Foreground" Value="#FF4D4D4D" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
</Style>
|
</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"
|
<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"
|
CanUserReorderColumns="False" CanUserResizeRows="False" HorizontalGridLinesBrush="#B9B9B9" VerticalGridLinesBrush="#B9B9B9" GridLinesVisibility="Horizontal" SelectionUnit="Cell"
|
||||||
BorderThickness="1" CanUserAddRows="False" CanUserSortColumns="False" KeyboardNavigation.TabNavigation="None" KeyboardNavigation.IsTabStop="False"
|
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>
|
<DataGrid.RowStyle>
|
||||||
<Style TargetType="DataGridRow">
|
<Style TargetType="DataGridRow">
|
||||||
<Setter Property="Background" Value="{x:Null}" />
|
<Setter Property="Background" Value="{x:Null}" />
|
||||||
|
@ -98,7 +100,7 @@
|
||||||
<TextBox Name="PanelName" Width="30" Height="28" BorderThickness="0" TextAlignment="Left"
|
<TextBox Name="PanelName" Width="30" Height="28" BorderThickness="0" TextAlignment="Left"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
IsHitTestVisible="{c:Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path='!DataContext.ProfileData.ActiveProfile.IsLocked'}"
|
IsHitTestVisible="{Binding IsFound}"
|
||||||
Text="▶"
|
Text="▶"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Padding="5, 3, 0, 0">
|
Padding="5, 3, 0, 0">
|
||||||
|
@ -127,8 +129,9 @@
|
||||||
Text="{Binding PanelName, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
Text="{Binding PanelName, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
Style="{StaticResource TextBoxColumnFocus}"
|
Style="{StaticResource TextBoxColumnFocus}"
|
||||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
IsHitTestVisible="{Binding IsCustomPopOut}"
|
||||||
IsEnabled="{Binding IsCustomPopOut}">
|
IsReadOnly="{c:Binding Path='!IsCustomPopOut'}"
|
||||||
|
IsEnabled="{Binding IsFound}">
|
||||||
</TextBox>
|
</TextBox>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
@ -140,8 +143,8 @@
|
||||||
Text="{Binding Left, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
Text="{Binding Left, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
Style="{StaticResource TextBoxColumnFocus}"
|
Style="{StaticResource TextBoxColumnFocus}"
|
||||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
|
||||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
||||||
|
IsEnabled="{Binding IsFound}"
|
||||||
GotFocus="NumericDataPoint_GotFocus"
|
GotFocus="NumericDataPoint_GotFocus"
|
||||||
LostFocus="NumericDataPoint_LostFocus"
|
LostFocus="NumericDataPoint_LostFocus"
|
||||||
FontSize="14"/>
|
FontSize="14"/>
|
||||||
|
@ -155,8 +158,8 @@
|
||||||
Text="{Binding Top, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
Text="{Binding Top, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
Style="{StaticResource TextBoxColumnFocus}"
|
Style="{StaticResource TextBoxColumnFocus}"
|
||||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
|
||||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
||||||
|
IsEnabled="{Binding IsFound}"
|
||||||
GotFocus="NumericDataPoint_GotFocus"
|
GotFocus="NumericDataPoint_GotFocus"
|
||||||
LostFocus="NumericDataPoint_LostFocus"
|
LostFocus="NumericDataPoint_LostFocus"
|
||||||
FontSize="14"/>
|
FontSize="14"/>
|
||||||
|
@ -170,8 +173,8 @@
|
||||||
Text="{Binding Width, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
Text="{Binding Width, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
Style="{StaticResource TextBoxColumnFocus}"
|
Style="{StaticResource TextBoxColumnFocus}"
|
||||||
IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid, AncestorLevel=1}, Path=DataContext.ProfileData.ActiveProfile.IsLocked}"
|
|
||||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
IsHitTestVisible="{c:Binding Path='!FullScreen'}"
|
||||||
|
IsEnabled="{Binding IsFound}"
|
||||||
GotFocus="NumericDataPoint_GotFocus"
|
GotFocus="NumericDataPoint_GotFocus"
|
||||||
LostFocus="NumericDataPoint_LostFocus"
|
LostFocus="NumericDataPoint_LostFocus"
|
||||||
FontSize="14"/>
|
FontSize="14"/>
|
||||||
|
@ -185,11 +188,12 @@
|
||||||
Text="{Binding Height, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
Text="{Binding Height, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus}"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
Style="{StaticResource TextBoxColumnFocus}"
|
Style="{StaticResource TextBoxColumnFocus}"
|
||||||
IsReadOnly="{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'}"
|
||||||
|
IsEnabled="{Binding IsFound}"
|
||||||
GotFocus="NumericDataPoint_GotFocus"
|
GotFocus="NumericDataPoint_GotFocus"
|
||||||
LostFocus="NumericDataPoint_LostFocus"
|
LostFocus="NumericDataPoint_LostFocus"
|
||||||
FontSize="14"/>
|
FontSize="14">
|
||||||
|
</TextBox>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
@ -199,8 +203,7 @@
|
||||||
<CheckBox Name="AlwaysOnTop" Width="75" Margin="30 0 0 0"
|
<CheckBox Name="AlwaysOnTop" Width="75" Margin="30 0 0 0"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
IsChecked="{Binding AlwaysOnTop, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
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 and IsFound'}"/>
|
||||||
IsHitTestVisible="{c:Binding Path='!FullScreen'}"/>
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
@ -210,8 +213,7 @@
|
||||||
<CheckBox Name="HideTitlebar" Width="75" Margin="30 0 0 0"
|
<CheckBox Name="HideTitlebar" Width="75" Margin="30 0 0 0"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
IsChecked="{Binding HideTitlebar, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
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) and IsFound'}"/>
|
||||||
IsHitTestVisible="{c:Binding Path='!FullScreen and (IsCustomPopOut or IsBuiltInPopOut)'}"/>
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
@ -221,19 +223,17 @@
|
||||||
<CheckBox Name="FullScreen" Width="80" Margin="32 0 0 0"
|
<CheckBox Name="FullScreen" Width="80" Margin="32 0 0 0"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
IsChecked="{Binding FullScreen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
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) and IsFound'}"/>
|
||||||
IsHitTestVisible="{c:Binding Path='IsCustomPopOut or IsBuiltInPopOut'}"/>
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
<DataGridTemplateColumn Header="Touch Enabled" Width="70">
|
<DataGridTemplateColumn Header="Touch Enabled" Width="70">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<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"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
IsChecked="{Binding TouchEnabled, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
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='(IsCustomPopOut or IsBuiltInPopOut) and IsFound'}"/>
|
||||||
IsHitTestVisible="{c:Binding Path='!FullScreen and (IsCustomPopOut or IsBuiltInPopOut)'}"/>
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
@ -243,8 +243,7 @@
|
||||||
<CheckBox Name="DisableGameRefocus" Width="70" Margin="25 0 0 0"
|
<CheckBox Name="DisableGameRefocus" Width="70" Margin="25 0 0 0"
|
||||||
SourceUpdated="GridData_SourceUpdated"
|
SourceUpdated="GridData_SourceUpdated"
|
||||||
IsChecked="{Binding DisableGameRefocus, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
|
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='(IsCustomPopOut or IsBuiltInPopOut) and TouchEnabled and IsFound'}"/>
|
||||||
IsHitTestVisible="{c:Binding Path='!FullScreen and (IsCustomPopOut or IsBuiltInPopOut) and TouchEnabled'}"/>
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace MSFSPopoutPanelManager.WpfApp
|
||||||
var panelConfig = container.Content as PanelConfig;
|
var panelConfig = container.Content as PanelConfig;
|
||||||
var propertyName = (PanelConfigPropertyName)Enum.Parse(typeof(PanelConfigPropertyName), ((Control)sender).Name);
|
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);
|
_panelConfigurationViewModel.PanelConfigUpdatedCommand.Execute(panelConfigItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ namespace MSFSPopoutPanelManager.WpfApp
|
||||||
break;
|
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;
|
_panelConfigurationViewModel.NumericDataPointTextBox = textBox;
|
||||||
|
|
||||||
var panelConfig = textBox.DataContext as PanelConfig;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,12 +57,12 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
||||||
{
|
{
|
||||||
var panelConfigItem = commandParameter as PanelConfigItem;
|
var panelConfigItem = commandParameter as PanelConfigItem;
|
||||||
if (panelConfigItem != null)
|
if (panelConfigItem != null)
|
||||||
_orchestrator.PanelConfiguration.PanelConfigPropertyUpdated(panelConfigItem.PanelIndex, panelConfigItem.PanelConfigProperty);
|
_orchestrator.PanelConfiguration.PanelConfigPropertyUpdated(panelConfigItem.PanelHandle, panelConfigItem.PanelConfigProperty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDataItemIncDec(object commandParameter)
|
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(() =>
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
{
|
{
|
||||||
|
@ -73,7 +73,7 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
||||||
|
|
||||||
private void OnConfigurePanel(object commandParameter)
|
private void OnConfigurePanel(object commandParameter)
|
||||||
{
|
{
|
||||||
if (SelectedPanelConfigItem.PanelIndex == -1)
|
if (SelectedPanelConfigItem.PanelHandle == IntPtr.Zero)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var keyAction = commandParameter as KeyAction;
|
var keyAction = commandParameter as KeyAction;
|
||||||
|
@ -81,28 +81,28 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
||||||
switch (keyAction.Action)
|
switch (keyAction.Action)
|
||||||
{
|
{
|
||||||
case "Up":
|
case "Up":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Top, -1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Top, -1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
case "Down":
|
case "Down":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Top, 1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Top, 1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
case "Left":
|
case "Left":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Left, -1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Left, -1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
case "Right":
|
case "Right":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Left, 1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Left, 1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
case "Control-Up":
|
case "Control-Up":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Height, -1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Height, -1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
case "Control-Down":
|
case "Control-Down":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Height, 1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Height, 1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
case "Control-Left":
|
case "Control-Left":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Width, -1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Width, -1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
case "Control-Right":
|
case "Control-Right":
|
||||||
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelIndex, PanelConfigPropertyName.Width, 1 * keyAction.Multiplier);
|
_orchestrator.PanelConfiguration.PanelConfigIncreaseDecrease(SelectedPanelConfigItem.PanelHandle, PanelConfigPropertyName.Width, 1 * keyAction.Multiplier);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
||||||
.ObservesProperty(() => ProfileData.ActiveProfile)
|
.ObservesProperty(() => ProfileData.ActiveProfile)
|
||||||
.ObservesProperty(() => FlightSimData.IsSimulatorStarted);
|
.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(() => FlightSimData.HasCurrentMsfsAircraft)
|
||||||
.ObservesProperty(() => ProfileData.ActiveProfile)
|
.ObservesProperty(() => ProfileData.ActiveProfile)
|
||||||
.ObservesProperty(() => FlightSimData.IsSimulatorStarted);
|
.ObservesProperty(() => FlightSimData.IsSimulatorStarted);
|
||||||
|
@ -193,5 +193,14 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
|
||||||
{
|
{
|
||||||
OpenTouchPanelBindingDialog?.Invoke(this, null);
|
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>
|
<RootNamespace>MSFSPopoutPanelManager.WpfApp</RootNamespace>
|
||||||
<ApplicationIcon>logo.ico</ApplicationIcon>
|
<ApplicationIcon>logo.ico</ApplicationIcon>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<Version>3.4.3.0</Version>
|
<Version>3.4.3.0911</Version>
|
||||||
<AssemblyVersion>3.4.3.0</AssemblyVersion>
|
<AssemblyVersion>3.4.3.0911</AssemblyVersion>
|
||||||
<FileVersion>3.4.3.0</FileVersion>
|
<FileVersion>3.4.3.0911</FileVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<DebugType>embedded</DebugType>
|
<DebugType>embedded</DebugType>
|
||||||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
|
<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.
|
This release is optional and please feel to skip this update.
|
||||||
|
|
||||||
Change Log:
|
Change Log:
|
||||||
|
|
||||||
* Added ability to remember MSFS game window size and location for aircraft profile when
|
* 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
|
running the game in windows display mode. This new preference setting is used to resize
|
||||||
match original size and location of MSFS game window when panel profile was defined
|
game window to match original size and location of MSFS game window when panel profile was
|
||||||
initially. For existing aircraft profile, when running the game in windows display mode,
|
defined initially. For existing aircraft profile, when running the game in windows display
|
||||||
the profile will automatically save MSFS game window position after the first successful
|
mode, the profile will automatically save MSFS game window position after the first
|
||||||
pop out.
|
successful pop out.
|
||||||
|
|
||||||
* Added ability to include in-game menu bar panels such as VFR Map, ATC, Checklist, etc to
|
* 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
|
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
|
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
|
in-game menu bar panels are popped out and if using in conjunction with auto pop out, it
|
||||||
panels when flight starts (SU 10+).
|
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
|
* Added UI cue to show number circles momentarily when popping out panel.
|
||||||
troubleshooting.
|
|
||||||
|
* Fixed an issue where touch does not work for panel when using full screen mode.
|
Loading…
Reference in a new issue