mirror of
https://github.com/hawkeye-stan/msfs-popout-panel-manager.git
synced 2024-11-25 15:20:10 +00:00
Version 3.3.3
This commit is contained in:
parent
367a0bb9e2
commit
6dfb21b5d4
11 changed files with 47 additions and 26 deletions
|
@ -5,15 +5,15 @@
|
||||||
<AssemblyName>FsConnector</AssemblyName>
|
<AssemblyName>FsConnector</AssemblyName>
|
||||||
<PackageId>MSFS 2020 Popout Panel Manager FsConnector</PackageId>
|
<PackageId>MSFS 2020 Popout Panel Manager FsConnector</PackageId>
|
||||||
<Product>MSFS 2020 Popout Panel Manager FsConnector</Product>
|
<Product>MSFS 2020 Popout Panel Manager FsConnector</Product>
|
||||||
<Version>3.3.2.0</Version>
|
<Version>3.3.3.0</Version>
|
||||||
<Authors>Stanley Kwok</Authors>
|
<Authors>Stanley Kwok</Authors>
|
||||||
<Company>Stanley Kwok</Company>
|
<Company>Stanley Kwok</Company>
|
||||||
<Copyright>Stanley Kwok 2021</Copyright>
|
<Copyright>Stanley Kwok 2021</Copyright>
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<RootNamespace>MSFSPopoutPanelManager.FsConnector</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.FsConnector</RootNamespace>
|
||||||
<Platforms>x64;AnyCPU</Platforms>
|
<Platforms>x64;AnyCPU</Platforms>
|
||||||
<AssemblyVersion>3.3.2.0</AssemblyVersion>
|
<AssemblyVersion>3.3.3.0</AssemblyVersion>
|
||||||
<FileVersion>3.3.2.0</FileVersion>
|
<FileVersion>3.3.3.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -5,14 +5,15 @@
|
||||||
<RootNamespace>MSFSPopoutPanelManager.Model</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.Model</RootNamespace>
|
||||||
<AssemblyName>Model</AssemblyName>
|
<AssemblyName>Model</AssemblyName>
|
||||||
<PackageId>MSFS 2020 Popout Panel Manager Model</PackageId>
|
<PackageId>MSFS 2020 Popout Panel Manager Model</PackageId>
|
||||||
<Version>3.3.2.0</Version>
|
<Version>3.3.3.0</Version>
|
||||||
<Authors>Stanley Kwok</Authors>
|
<Authors>Stanley Kwok</Authors>
|
||||||
<Company>Stanley Kwok</Company>
|
<Company>Stanley Kwok</Company>
|
||||||
<Copyright>Stanley Kwok 2021</Copyright>
|
<Copyright>Stanley Kwok 2021</Copyright>
|
||||||
<Product>MSFS 2020 Popout Panel Manager Model</Product>
|
<Product>MSFS 2020 Popout Panel Manager Model</Product>
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<Platforms>x64;AnyCPU</Platforms>
|
<Platforms>x64;AnyCPU</Platforms>
|
||||||
<AssemblyVersion>3.3.2.0</AssemblyVersion>
|
<AssemblyVersion>3.3.3.0</AssemblyVersion>
|
||||||
|
<FileVersion>3.3.3.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -47,8 +47,17 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
PInvoke.keybd_event(Convert.ToByte(VK_RMENU), 0, KEYEVENTF_KEYUP, 0);
|
PInvoke.keybd_event(Convert.ToByte(VK_RMENU), 0, KEYEVENTF_KEYUP, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CenterView(IntPtr hwnd, int x, int y)
|
public static void CenterView(IntPtr hwnd)
|
||||||
{
|
{
|
||||||
|
Rectangle rectangle;
|
||||||
|
PInvoke.GetWindowRect(hwnd, out rectangle);
|
||||||
|
|
||||||
|
Rectangle clientRectangle;
|
||||||
|
PInvoke.GetClientRect(hwnd, out clientRectangle);
|
||||||
|
|
||||||
|
var x = Convert.ToInt32(rectangle.X + (clientRectangle.Width) * 0.5);
|
||||||
|
var y = Convert.ToInt32(rectangle.Y + (clientRectangle.Height) * 0.5);
|
||||||
|
|
||||||
PInvoke.SetForegroundWindow(hwnd);
|
PInvoke.SetForegroundWindow(hwnd);
|
||||||
LeftClick(x, y);
|
LeftClick(x, y);
|
||||||
|
|
||||||
|
@ -105,6 +114,7 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
Thread.Sleep(200);
|
Thread.Sleep(200);
|
||||||
PInvoke.keybd_event(Convert.ToByte(customViewKey), 0, KEYEVENTF_KEYUP, 0);
|
PInvoke.keybd_event(Convert.ToByte(customViewKey), 0, KEYEVENTF_KEYUP, 0);
|
||||||
PInvoke.keybd_event(Convert.ToByte(VK_LMENU), 0, KEYEVENTF_KEYUP, 0);
|
PInvoke.keybd_event(Convert.ToByte(VK_LMENU), 0, KEYEVENTF_KEYUP, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ToggleFullScreenPanel(IntPtr hwnd)
|
public static void ToggleFullScreenPanel(IntPtr hwnd)
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
|
|
||||||
public void PanelConfigPropertyUpdated(PanelConfigItem panelConfigItem)
|
public void PanelConfigPropertyUpdated(PanelConfigItem panelConfigItem)
|
||||||
{
|
{
|
||||||
if (!AllowEdit || UserProfile.IsLocked)
|
if (panelConfigItem == null || !AllowEdit || UserProfile.IsLocked)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var panelConfig = UserProfile.PanelConfigs.ToList().Find(p => p.PanelIndex == panelConfigItem.PanelIndex);
|
var panelConfig = UserProfile.PanelConfigs.ToList().Find(p => p.PanelIndex == panelConfigItem.PanelIndex);
|
||||||
|
@ -99,7 +99,7 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
|
|
||||||
public void PanelConfigIncreaseDecrease(PanelConfigItem panelConfigItem, int changeAmount)
|
public void PanelConfigIncreaseDecrease(PanelConfigItem panelConfigItem, int changeAmount)
|
||||||
{
|
{
|
||||||
if (!AllowEdit || UserProfile.IsLocked || UserProfile.PanelConfigs == null || UserProfile.PanelConfigs.Count == 0)
|
if (panelConfigItem == null || !AllowEdit || UserProfile.IsLocked || UserProfile.PanelConfigs == null || UserProfile.PanelConfigs.Count == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var index = UserProfile.PanelConfigs.ToList().FindIndex(p => p.PanelIndex == panelConfigItem.PanelIndex);
|
var index = UserProfile.PanelConfigs.ToList().FindIndex(p => p.PanelIndex == panelConfigItem.PanelIndex);
|
||||||
|
|
|
@ -51,6 +51,9 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
var simualatorProcess = DiagnosticManager.GetSimulatorProcess();
|
var simualatorProcess = DiagnosticManager.GetSimulatorProcess();
|
||||||
if (simualatorProcess != null)
|
if (simualatorProcess != null)
|
||||||
{
|
{
|
||||||
|
// First center view to make sure recalling custom camera works on the first press
|
||||||
|
InputEmulationManager.CenterView(simualatorProcess.Handle);
|
||||||
|
|
||||||
InputEmulationManager.LoadCustomView(simualatorProcess.Handle, AppSetting.AutoPanningKeyBinding);
|
InputEmulationManager.LoadCustomView(simualatorProcess.Handle, AppSetting.AutoPanningKeyBinding);
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
}
|
}
|
||||||
|
@ -81,7 +84,7 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
var simualatorProcess = DiagnosticManager.GetSimulatorProcess();
|
var simualatorProcess = DiagnosticManager.GetSimulatorProcess();
|
||||||
if (simualatorProcess != null && UserProfile.PanelSourceCoordinates.Count > 0)
|
if (simualatorProcess != null && UserProfile.PanelSourceCoordinates.Count > 0)
|
||||||
{
|
{
|
||||||
InputEmulationManager.CenterView(simualatorProcess.Handle, UserProfile.PanelSourceCoordinates[0].X, UserProfile.PanelSourceCoordinates[0].Y);
|
InputEmulationManager.CenterView(simualatorProcess.Handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
_userProfileManager.WriteUserProfiles();
|
_userProfileManager.WriteUserProfiles();
|
||||||
|
@ -416,7 +419,7 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
return Point.Empty;
|
return Point.Empty;
|
||||||
|
|
||||||
var panelMenubarBottom = GetPanelMenubarBottom(sourceImage, rectangle);
|
var panelMenubarBottom = GetPanelMenubarBottom(sourceImage, rectangle);
|
||||||
if (panelMenubarTop > sourceImage.Height)
|
if (panelMenubarBottom > sourceImage.Height)
|
||||||
return Point.Empty;
|
return Point.Empty;
|
||||||
|
|
||||||
var panelsStartingLeft = GetPanelMenubarStartingLeft(sourceImage, rectangle, panelMenubarTop + 5);
|
var panelsStartingLeft = GetPanelMenubarStartingLeft(sourceImage, rectangle, panelMenubarTop + 5);
|
||||||
|
@ -474,8 +477,8 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
|
|
||||||
private int GetPanelMenubarBottom(Bitmap sourceImage, Rectangle rectangle)
|
private int GetPanelMenubarBottom(Bitmap sourceImage, Rectangle rectangle)
|
||||||
{
|
{
|
||||||
// Get a snippet of 1 pixel wide vertical strip of windows. We will choose the strip about 25% from the left of the window
|
// Get a snippet of 1 pixel wide vertical strip of windows. We will choose the strip about 70% from the left of the window
|
||||||
var left = Convert.ToInt32((rectangle.Width) * 0.25); // look at around 25% from the left
|
var left = Convert.ToInt32((rectangle.Width) * 0.7); // look at around 70% from the left
|
||||||
var top = sourceImage.Height - rectangle.Height;
|
var top = sourceImage.Height - rectangle.Height;
|
||||||
|
|
||||||
if (top < 0 || left < 0)
|
if (top < 0 || left < 0)
|
||||||
|
@ -501,7 +504,7 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
int green = currentLine[x + 1];
|
int green = currentLine[x + 1];
|
||||||
int blue = currentLine[x];
|
int blue = currentLine[x];
|
||||||
|
|
||||||
if (red == 255 && green == 255 && blue == 255)
|
if (red > 250 && green > 250 && blue > 250) // allows the color to be a little off white (ie. Fenix A30 EFB)
|
||||||
{
|
{
|
||||||
// found the top of menu bar
|
// found the top of menu bar
|
||||||
menubarBottom = y + top;
|
menubarBottom = y + top;
|
||||||
|
@ -540,7 +543,7 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
int green = currentLine[y + 1];
|
int green = currentLine[y + 1];
|
||||||
int blue = currentLine[y];
|
int blue = currentLine[y];
|
||||||
|
|
||||||
if (red == 255 && green == 255 && blue == 255)
|
if (red > 250 && green > 250 && blue > 250) // allows the color to be a little off white (ie. Fenix A30 EFB)
|
||||||
{
|
{
|
||||||
sourceImage.UnlockBits(stripData);
|
sourceImage.UnlockBits(stripData);
|
||||||
return sourceImage.Width - x;
|
return sourceImage.Width - x;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<RootNamespace>MSFSPopoutPanelManager.Provider</RootNamespace>
|
<RootNamespace>MSFSPopoutPanelManager.Provider</RootNamespace>
|
||||||
<PackageId>MSFS 2020 Popout Panel Manager Provider</PackageId>
|
<PackageId>MSFS 2020 Popout Panel Manager Provider</PackageId>
|
||||||
<Product>MSFS 2020 Popout Panel Manager Provider</Product>
|
<Product>MSFS 2020 Popout Panel Manager Provider</Product>
|
||||||
<Version>3.3.2.0</Version>
|
<Version>3.3.3.0</Version>
|
||||||
<Authors>Stanley Kwok</Authors>
|
<Authors>Stanley Kwok</Authors>
|
||||||
<Copyright>Stanley Kwok 2021</Copyright>
|
<Copyright>Stanley Kwok 2021</Copyright>
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
|
|
|
@ -113,7 +113,9 @@ namespace MSFSPopoutPanelManager.Provider
|
||||||
{
|
{
|
||||||
// It is prop3 in SimConnectStruct (by DataDefinitions.cs)
|
// It is prop3 in SimConnectStruct (by DataDefinitions.cs)
|
||||||
SimConnectStruct simConnectStruct = new SimConnectStruct();
|
SimConnectStruct simConnectStruct = new SimConnectStruct();
|
||||||
simConnectStruct.Prop03 = enable ? Convert.ToDouble(1): Convert.ToDouble(0);
|
simConnectStruct.Prop01 = _simData.Title; // must set "Title" for TrackIR variable to write correctly
|
||||||
|
simConnectStruct.Prop02 = _simData.ElectricalMasterBattery ? Convert.ToDouble(1) : Convert.ToDouble(0); // must set "ElectricalMasterBattery" for TrackIR variable to write correctly
|
||||||
|
simConnectStruct.Prop03 = enable ? Convert.ToDouble(1): Convert.ToDouble(0); // this is the TrackIR variable
|
||||||
_simConnector.SetDataObject(simConnectStruct);
|
_simConnector.SetDataObject(simConnectStruct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,10 @@
|
||||||
<Company>Stanley Kwok</Company>
|
<Company>Stanley Kwok</Company>
|
||||||
<Copyright>Stanley Kwok 2021</Copyright>
|
<Copyright>Stanley Kwok 2021</Copyright>
|
||||||
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/hawkeye-stan/msfs-popout-panel-manager</PackageProjectUrl>
|
||||||
<Version>3.3.2.0</Version>
|
<Version>3.3.3.0</Version>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<UseWPF>true</UseWPF>
|
<UseWPF>true</UseWPF>
|
||||||
|
<AssemblyVersion>3.3.3.0</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
# Version History
|
# Version History
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
|
## Version 3.3.3
|
||||||
|
* Fixed issue when clicking on "Show/Edit Panel Location Overlay" or setting auto TrackIR disabling option will cause PFD/MFD panels to be turned off when performing auto pop out in cold start for G1000 equipped planes.
|
||||||
|
* Fixed issue where auto panning of cockpit view does not pan to previously saved camera view during pop out process.
|
||||||
|
|
||||||
## Version 3.3.2
|
## Version 3.3.2
|
||||||
* Hotfix: Fixed application crash when performing panel selections when MSFS is not running.
|
* Hotfix: Fixed application crash when performing panel selections when MSFS is not running.
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@
|
||||||
<Button Content="-" ToolTip="Delete Binding" Margin="10,0,0,0" Width="40" Click="DeleteBinding_Click" Style="{StaticResource ProfileDeletePlaneBindingDependency}"/>
|
<Button Content="-" ToolTip="Delete Binding" Margin="10,0,0,0" Width="40" Click="DeleteBinding_Click" Style="{StaticResource ProfileDeletePlaneBindingDependency}"/>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
<CheckBox Margin="10,5,0,0" IsChecked="{Binding Path=DataStore.ActiveUserProfile.PowerOnRequiredForColdStart}" IsEnabled="{Binding Path=DataStore.HasActiveUserProfileId}" Command="{Binding Path=SetPowerOnRequiredCommand}">
|
<CheckBox Margin="10,5,0,0" IsChecked="{Binding Path=DataStore.ActiveUserProfile.PowerOnRequiredForColdStart}" IsEnabled="{Binding Path=DataStore.HasActiveUserProfileId}" Command="{Binding Path=SetPowerOnRequiredCommand}">
|
||||||
<TextBlock Text="Power on required to pop out panels on cold start" TextWrapping="Wrap" Margin="5,0,0,3"/>
|
<TextBlock Text="Power on required to pop out panels on cold start (G1000 Only)" TextWrapping="Wrap" Margin="5,0,0,3"/>
|
||||||
</CheckBox>
|
</CheckBox>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
<Separator Margin="5,10,5,5"/>
|
<Separator Margin="5,10,5,5"/>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<TargetFramework>net5.0-windows</TargetFramework>
|
<TargetFramework>net5.0-windows</TargetFramework>
|
||||||
<UseWPF>true</UseWPF>
|
<UseWPF>true</UseWPF>
|
||||||
<Version>3.3.2.0</Version>
|
<Version>3.3.3.0</Version>
|
||||||
<PackageId>MSFS 2020 Popout Panel Manager</PackageId>
|
<PackageId>MSFS 2020 Popout Panel Manager</PackageId>
|
||||||
<Authors>Stanley Kwok</Authors>
|
<Authors>Stanley Kwok</Authors>
|
||||||
<Product>MSFS 2020 Popout Panel Manager</Product>
|
<Product>MSFS 2020 Popout Panel Manager</Product>
|
||||||
|
|
Loading…
Reference in a new issue