1
0
Fork 0
mirror of https://github.com/hawkeye-stan/msfs-popout-panel-manager.git synced 2024-11-22 05:40:11 +00:00

Version 3.3.1

This commit is contained in:
hawkeye 2022-05-04 11:11:04 -04:00
parent e20d512ef8
commit ba2f308b35
15 changed files with 112 additions and 23 deletions

View file

@ -11,7 +11,8 @@ namespace MSFSPopoutPanelManager.FsConnector
var def = new List<(string, string, string, SIMCONNECT_DATATYPE, Type)> var def = new List<(string, string, string, SIMCONNECT_DATATYPE, Type)>
{ {
("Title", "Title", null, SIMCONNECT_DATATYPE.STRING256, typeof(string)), ("Title", "Title", null, SIMCONNECT_DATATYPE.STRING256, typeof(string)),
("ElectricalMasterBattery", "ELECTRICAL MASTER BATTERY", "Bool", SIMCONNECT_DATATYPE.FLOAT64, typeof(bool)) ("ElectricalMasterBattery", "ELECTRICAL MASTER BATTERY", "Bool", SIMCONNECT_DATATYPE.FLOAT64, typeof(bool)),
("TrackIREnable", "TRACK IR ENABLE", "Bool", SIMCONNECT_DATATYPE.FLOAT64, typeof(bool))
}; };
return def; return def;

View file

@ -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.0.0</Version> <Version>3.3.1.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.0.0</AssemblyVersion> <AssemblyVersion>3.3.1.0</AssemblyVersion>
<FileVersion>3.3.0.0</FileVersion> <FileVersion>3.3.1.0</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View file

@ -11,14 +11,5 @@ namespace MSFSPopoutPanelManager.FsConnector
public double Prop02; public double Prop02;
public double Prop03; public double Prop03;
public double Prop04;
public double Prop05;
public double Prop06;
public double Prop07;
public double Prop08;
public double Prop09;
public double Prop10;
// Add more as DataDefinition grows
} }
} }

View file

@ -134,6 +134,21 @@ namespace MSFSPopoutPanelManager.FsConnector
} }
} }
public void SetDataObject(SimConnectStruct simConnectStruct)
{
if (_simConnect != null)
{
try
{
_simConnect.SetDataOnSimObject(SimConnectDefinition.SimConnectDataStruct, SimConnect.SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_DATA_SET_FLAG.DEFAULT, simConnectStruct);
}
catch (Exception ex)
{
Debug.WriteLine($"Unable to set SimConnect variable: {ex.Message}");
}
}
}
private void HandleOnRecvQuit(SimConnect sender, SIMCONNECT_RECV data) private void HandleOnRecvQuit(SimConnect sender, SIMCONNECT_RECV data)
{ {
OnDisconnected?.Invoke(this, null); OnDisconnected?.Invoke(this, null);
@ -147,9 +162,15 @@ namespace MSFSPopoutPanelManager.FsConnector
{ {
var exception = (SIMCONNECT_EXCEPTION)data.dwException; var exception = (SIMCONNECT_EXCEPTION)data.dwException;
if (exception != SIMCONNECT_EXCEPTION.NAME_UNRECOGNIZED && exception != SIMCONNECT_EXCEPTION.EVENT_ID_DUPLICATE) switch(exception)
{ {
Debug.WriteLine($"MSFS Error - {exception}"); case SIMCONNECT_EXCEPTION.DATA_ERROR:
case SIMCONNECT_EXCEPTION.NAME_UNRECOGNIZED:
case SIMCONNECT_EXCEPTION.EVENT_ID_DUPLICATE:
return;
default:
Debug.WriteLine($"MSFS Error - {exception}");
break;
} }
} }

View file

@ -21,6 +21,8 @@ namespace MSFSPopoutPanelManager.Model
public AppSetting() public AppSetting()
{ {
// Set defaults // Set defaults
AutoUpdaterUrl = "https://raw.githubusercontent.com/hawkeye-stan/msfs-popout-panel-manager/master/autoupdate.xml";
//AutoUpdaterUrl = "https://raw.githubusercontent.com/hawkeye-stan/AutoUpdateTest/main/autoupdate.xml"; // Test URL against test repo
LastUsedProfileId = -1; LastUsedProfileId = -1;
MinimizeToTray = false; MinimizeToTray = false;
AlwaysOnTop = true; AlwaysOnTop = true;
@ -28,6 +30,7 @@ namespace MSFSPopoutPanelManager.Model
AutoPanningKeyBinding = "0"; AutoPanningKeyBinding = "0";
StartMinimized = false; StartMinimized = false;
IncludeBuiltInPanel = false; IncludeBuiltInPanel = false;
AutoDisableTrackIR = true;
AutoPopOutPanels = false; AutoPopOutPanels = false;
AutoPopOutPanelsWaitDelay = new AutoPopOutPanelsWaitDelay(); AutoPopOutPanelsWaitDelay = new AutoPopOutPanelsWaitDelay();
} }
@ -35,6 +38,7 @@ namespace MSFSPopoutPanelManager.Model
public void Load() public void Load()
{ {
var appSetting = ReadAppSetting(); var appSetting = ReadAppSetting();
this.AutoUpdaterUrl = appSetting.AutoUpdaterUrl;
this.LastUsedProfileId = appSetting.LastUsedProfileId; this.LastUsedProfileId = appSetting.LastUsedProfileId;
this.MinimizeToTray = appSetting.MinimizeToTray; this.MinimizeToTray = appSetting.MinimizeToTray;
this.AlwaysOnTop = appSetting.AlwaysOnTop; this.AlwaysOnTop = appSetting.AlwaysOnTop;
@ -42,6 +46,7 @@ namespace MSFSPopoutPanelManager.Model
this.AutoPanningKeyBinding = appSetting.AutoPanningKeyBinding; this.AutoPanningKeyBinding = appSetting.AutoPanningKeyBinding;
this.StartMinimized = appSetting.StartMinimized; this.StartMinimized = appSetting.StartMinimized;
this.IncludeBuiltInPanel = appSetting.IncludeBuiltInPanel; this.IncludeBuiltInPanel = appSetting.IncludeBuiltInPanel;
this.AutoDisableTrackIR = appSetting.AutoDisableTrackIR;
this.AutoPopOutPanels = appSetting.AutoPopOutPanels; this.AutoPopOutPanels = appSetting.AutoPopOutPanels;
this.AutoPopOutPanelsWaitDelay = appSetting.AutoPopOutPanelsWaitDelay; this.AutoPopOutPanelsWaitDelay = appSetting.AutoPopOutPanelsWaitDelay;
AutoPopOutPanelsWaitDelay.DataChanged += (e, source) => WriteAppSetting(this); AutoPopOutPanelsWaitDelay.DataChanged += (e, source) => WriteAppSetting(this);
@ -66,6 +71,8 @@ namespace MSFSPopoutPanelManager.Model
} }
} }
public string AutoUpdaterUrl { get; set; }
public int LastUsedProfileId { get; set; } public int LastUsedProfileId { get; set; }
public bool MinimizeToTray { get; set; } public bool MinimizeToTray { get; set; }
@ -82,6 +89,8 @@ namespace MSFSPopoutPanelManager.Model
public bool AutoPopOutPanels { get; set; } public bool AutoPopOutPanels { get; set; }
public bool AutoDisableTrackIR { get; set; }
public AutoPopOutPanelsWaitDelay AutoPopOutPanelsWaitDelay { get; set; } public AutoPopOutPanelsWaitDelay AutoPopOutPanelsWaitDelay { get; set; }
[JsonIgnore] [JsonIgnore]

View file

@ -5,7 +5,7 @@
<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.0.0</Version> <Version>3.3.1.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>

View file

@ -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.0.0</Version> <Version>3.3.1.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>

View file

@ -1,7 +1,6 @@
using MSFSPopoutPanelManager.FsConnector; using MSFSPopoutPanelManager.FsConnector;
using MSFSPopoutPanelManager.Shared; using MSFSPopoutPanelManager.Shared;
using System; using System;
using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.Threading; using System.Threading;
using System.Timers; using System.Timers;
@ -19,6 +18,7 @@ namespace MSFSPopoutPanelManager.Provider
private SimConnectSystemEvent _lastSystemEvent; private SimConnectSystemEvent _lastSystemEvent;
private bool _isSimActive; private bool _isSimActive;
private bool _isPowerOnForPopOut; private bool _isPowerOnForPopOut;
private bool _isTrackIRManaged;
public event EventHandler OnConnected; public event EventHandler OnConnected;
public event EventHandler OnDisconnected; public event EventHandler OnDisconnected;
@ -91,6 +91,32 @@ namespace MSFSPopoutPanelManager.Provider
} }
} }
public void TurnOffTrackIR()
{
if(_simData.TrackIREnable)
{
SetTrackIREnable(false);
_isTrackIRManaged = true;
}
}
public void TurnOnTrackIR()
{
if (_isTrackIRManaged && !_simData.TrackIREnable)
{
SetTrackIREnable(true);
_isTrackIRManaged = false;
}
}
private void SetTrackIREnable(bool enable)
{
// It is prop3 in SimConnectStruct (by DataDefinitions.cs)
SimConnectStruct simConnectStruct = new SimConnectStruct();
simConnectStruct.Prop03 = enable ? Convert.ToDouble(1): Convert.ToDouble(0);
_simConnector.SetDataObject(simConnectStruct);
}
private void HandleDataRequested(object sender, ElapsedEventArgs e) private void HandleDataRequested(object sender, ElapsedEventArgs e)
{ {
try try

View file

@ -9,7 +9,7 @@
<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.0.0</Version> <Version>3.3.1.0</Version>
<Platforms>AnyCPU;x64</Platforms> <Platforms>AnyCPU;x64</Platforms>
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
</PropertyGroup> </PropertyGroup>

View file

@ -1,6 +1,8 @@
# Version History # Version History
<hr/> <hr/>
## Version 3.3.1
* Added support to automatic disable Track IR during panel selection and panel pop out process.
## Version 3.3.0 ## Version 3.3.0
* Pop out panel without a title bar can now be moved and resized. * Pop out panel without a title bar can now be moved and resized.

View file

@ -45,6 +45,7 @@
<TreeViewItem Header="Application Settings" Selected="TreeViewItem_Selected" Margin="0,15,0,10" IsSelected="True"></TreeViewItem> <TreeViewItem Header="Application Settings" Selected="TreeViewItem_Selected" Margin="0,15,0,10" IsSelected="True"></TreeViewItem>
<TreeViewItem Header="Pop Out Settings" Selected="TreeViewItem_Selected" Margin="0,0,0,10"></TreeViewItem> <TreeViewItem Header="Pop Out Settings" Selected="TreeViewItem_Selected" Margin="0,0,0,10"></TreeViewItem>
<TreeViewItem Header="Auto Pop Out Panel Settings" Selected="TreeViewItem_Selected" Margin="0,0,0,10"></TreeViewItem> <TreeViewItem Header="Auto Pop Out Panel Settings" Selected="TreeViewItem_Selected" Margin="0,0,0,10"></TreeViewItem>
<TreeViewItem Header="Track IR Settings" Selected="TreeViewItem_Selected" Margin="0,0,0,10"></TreeViewItem>
</TreeView> </TreeView>
<WrapPanel DockPanel.Dock="Right" Margin="20,15,20,0" Width="Auto" > <WrapPanel DockPanel.Dock="Right" Margin="20,15,20,0" Width="Auto" >
<WrapPanel Orientation="Vertical" Width="Auto" Visibility="{Binding Path=ApplicationSettingsVisibility, Mode=TwoWay}"> <WrapPanel Orientation="Vertical" Width="Auto" Visibility="{Binding Path=ApplicationSettingsVisibility, Mode=TwoWay}">
@ -135,6 +136,12 @@
</WrapPanel> </WrapPanel>
<WrapPanel Orientation="Vertical" Visibility="Visible"> <WrapPanel Orientation="Vertical" Visibility="Visible">
</WrapPanel> </WrapPanel>
<WrapPanel Orientation="Vertical" Width="Auto" Visibility="{Binding Path=TrackIRSettingsVisibility, Mode=TwoWay}">
<CheckBox IsChecked="{Binding Path=AppSetting.AutoDisableTrackIR, Mode=TwoWay}" Content="Auto Disable Track IR"></CheckBox>
<TextBlock Style="{StaticResource TextBlockDescription}">
Automactically disable Track IR during panel selections and pop out process. Track IR will be re-enable once these processes are completed.
</TextBlock>
</WrapPanel>
</WrapPanel> </WrapPanel>
</DockPanel> </DockPanel>
</Grid> </Grid>

View file

@ -23,6 +23,7 @@ namespace MSFSPopoutPanelManager.WpfApp
ApplicationSettingsVisibility = Visibility.Visible; ApplicationSettingsVisibility = Visibility.Visible;
PopOutSettingsVisibility = Visibility.Collapsed; PopOutSettingsVisibility = Visibility.Collapsed;
AutoPopOutSettingsVisibility = Visibility.Collapsed; AutoPopOutSettingsVisibility = Visibility.Collapsed;
TrackIRSettingsVisibility = Visibility.Collapsed;
} }
public AppSetting AppSetting { get; set; } public AppSetting AppSetting { get; set; }
@ -33,6 +34,8 @@ namespace MSFSPopoutPanelManager.WpfApp
public Visibility AutoPopOutSettingsVisibility { get; set; } public Visibility AutoPopOutSettingsVisibility { get; set; }
public Visibility TrackIRSettingsVisibility { get; set; }
private void TreeViewItem_Selected(object sender, RoutedEventArgs e) private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
{ {
var treeViewItem = (TreeViewItem)e.Source; var treeViewItem = (TreeViewItem)e.Source;
@ -40,6 +43,7 @@ namespace MSFSPopoutPanelManager.WpfApp
ApplicationSettingsVisibility = Visibility.Collapsed; ApplicationSettingsVisibility = Visibility.Collapsed;
PopOutSettingsVisibility = Visibility.Collapsed; PopOutSettingsVisibility = Visibility.Collapsed;
AutoPopOutSettingsVisibility = Visibility.Collapsed; AutoPopOutSettingsVisibility = Visibility.Collapsed;
TrackIRSettingsVisibility = Visibility.Collapsed;
if (treeViewItem.Header.ToString() == "Application Settings") if (treeViewItem.Header.ToString() == "Application Settings")
{ {
@ -53,6 +57,10 @@ namespace MSFSPopoutPanelManager.WpfApp
{ {
AutoPopOutSettingsVisibility = Visibility.Visible; AutoPopOutSettingsVisibility = Visibility.Visible;
} }
else if (treeViewItem.Header.ToString() == "Track IR Settings")
{
TrackIRSettingsVisibility = Visibility.Visible;
}
} }
} }
} }

View file

@ -294,8 +294,7 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
AutoUpdater.AppTitle = "MSFS Pop Out Panel Manager"; AutoUpdater.AppTitle = "MSFS Pop Out Panel Manager";
AutoUpdater.RunUpdateAsAdmin = false; AutoUpdater.RunUpdateAsAdmin = false;
AutoUpdater.UpdateFormSize = new System.Drawing.Size(930, 675); AutoUpdater.UpdateFormSize = new System.Drawing.Size(930, 675);
AutoUpdater.Start("https://raw.githubusercontent.com/hawkeye-stan/msfs-popout-panel-manager/master/autoupdate.xml"); AutoUpdater.Start(DataStore.AppSetting.AutoUpdaterUrl);
//AutoUpdater.Start("https://raw.githubusercontent.com/hawkeye-stan/AutoUpdateTest/main/autoupdate.xml");
} }
private void AutoSwitchProfile(string activeAircraftTitle) private void AutoSwitchProfile(string activeAircraftTitle)

View file

@ -121,6 +121,10 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
private void OnStartPanelSelection(object commandParameter) private void OnStartPanelSelection(object commandParameter)
{ {
// Turn off TrackIR if TrackIR is started
if (DataStore.AppSetting.AutoDisableTrackIR)
_simConnectManager.TurnOffTrackIR();
WindowManager.MinimizeWindow(DataStore.ApplicationHandle); // Window hide doesn't work when try to reshow window after selection completes. So need to use minimize. WindowManager.MinimizeWindow(DataStore.ApplicationHandle); // Window hide doesn't work when try to reshow window after selection completes. So need to use minimize.
_panelSelectionManager.UserProfile = DataStore.ActiveUserProfile; _panelSelectionManager.UserProfile = DataStore.ActiveUserProfile;
_panelSelectionManager.AppSetting = DataStore.AppSetting; _panelSelectionManager.AppSetting = DataStore.AppSetting;
@ -171,6 +175,15 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
private void OnEditPanelCoorOverlay(object commandParameter) private void OnEditPanelCoorOverlay(object commandParameter)
{ {
// Turn off TrackIR if TrackIR is started
if (commandParameter == null && DataStore.AppSetting.AutoDisableTrackIR)
{
if(IsEditingPanelCoorOverlay)
_simConnectManager.TurnOffTrackIR();
else
_simConnectManager.TurnOnTrackIR();
}
if (IsEditingPanelCoorOverlay) if (IsEditingPanelCoorOverlay)
{ {
RemoveAllPanelCoorOverlay(); RemoveAllPanelCoorOverlay();
@ -232,11 +245,15 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
{ {
// Hide panel coordinate overlays // Hide panel coordinate overlays
IsEditingPanelCoorOverlay = false; IsEditingPanelCoorOverlay = false;
OnEditPanelCoorOverlay(null); OnEditPanelCoorOverlay(false);
// Close all pop out panels // Close all pop out panels
WindowManager.CloseAllCustomPopoutPanels(); WindowManager.CloseAllCustomPopoutPanels();
// Turn off TrackIR if TrackIR is started
if (DataStore.AppSetting.AutoDisableTrackIR)
_simConnectManager.TurnOffTrackIR();
// Temporary minimize the app for pop out process // Temporary minimize the app for pop out process
_minimizeForPopOut = DataStore.ApplicationWindow.WindowState != WindowState.Minimized; _minimizeForPopOut = DataStore.ApplicationWindow.WindowState != WindowState.Minimized;
if (_minimizeForPopOut) if (_minimizeForPopOut)
@ -258,6 +275,10 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
{ {
OnPopOutCompleted?.Invoke(this, null); OnPopOutCompleted?.Invoke(this, null);
} }
// Turn off TrackIR if TrackIR is started
if (DataStore.AppSetting.AutoDisableTrackIR)
_simConnectManager.TurnOnTrackIR();
} }
private void HandlePanelSelectionCompleted(object sender, EventArgs e) private void HandlePanelSelectionCompleted(object sender, EventArgs e)
@ -272,6 +293,10 @@ namespace MSFSPopoutPanelManager.WpfApp.ViewModel
Logger.LogStatus("Panels selection is completed. Please click 'Start Pop Out' to start popping out these panels.", StatusMessageType.Info); Logger.LogStatus("Panels selection is completed. Please click 'Start Pop Out' to start popping out these panels.", StatusMessageType.Info);
else else
Logger.LogStatus("Panels selection is completed. No panel has been selected.", StatusMessageType.Info); Logger.LogStatus("Panels selection is completed. No panel has been selected.", StatusMessageType.Info);
// Turn off TrackIR if TrackIR is started
if (DataStore.AppSetting.AutoDisableTrackIR)
_simConnectManager.TurnOnTrackIR();
} }
private bool CanExecute(object commandParameter) private bool CanExecute(object commandParameter)

View file

@ -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.0.0</Version> <Version>3.3.1.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>