changed source of enum type to xaml,

removed titleMenuItem Entry, since it is not necessary,
renamed NewlineSeparator Selector to "Default"
master
Jonas Arnold 3 years ago
parent 96ab06353d
commit 2daa9c2027
  1. 15
      MultiTerm.Core/ViewModel/ShellViewModel.cs
  2. 14
      MultiTerm.Wpf/Controls/SingleSelectSubMenu.cs
  3. 27
      MultiTerm.Wpf/View/ShellView.xaml

@ -20,18 +20,13 @@ public partial class ShellViewModel : ObservableObject
private ITerminalViewModel? selectedTerminalViewModel; private ITerminalViewModel? selectedTerminalViewModel;
#region Settings Menu Bar #region Settings Menu Bar
public IEnumerable<NewlineSeparatorType> NewlineSeparatorTypeValues
{
get { return Enum.GetValues(typeof(NewlineSeparatorType)).Cast<NewlineSeparatorType>(); }
}
// TODO Initialize from File // TODO Initialize from File
[ObservableProperty] [ObservableProperty]
private NewlineSeparatorType selectedReceiveNewlineSeparator = NewlineSeparatorType.None; private NewlineSeparatorType defaultReceiveNewlineSeparator = NewlineSeparatorType.None;
// TODO Initialize from File // TODO Initialize from File
[ObservableProperty] [ObservableProperty]
private NewlineSeparatorType selectedSendNewlineSeparator = NewlineSeparatorType.None; private NewlineSeparatorType defaultSendNewlineSeparator = NewlineSeparatorType.None;
#endregion #endregion
public ShellViewModel(IAbstractFactory<SendReceiveViewModel> sendReceiveViewModelFactory) public ShellViewModel(IAbstractFactory<SendReceiveViewModel> sendReceiveViewModelFactory)
@ -53,12 +48,12 @@ public partial class ShellViewModel : ObservableObject
this.SelectedTerminalViewModel = newTerminal; this.SelectedTerminalViewModel = newTerminal;
} }
partial void OnSelectedReceiveNewlineSeparatorChanged(NewlineSeparatorType value) partial void OnDefaultReceiveNewlineSeparatorChanged(NewlineSeparatorType value)
{ {
Console.WriteLine($"Changed to {value}"); Console.WriteLine($"Changed to {value}");
} }
partial void OnSelectedSendNewlineSeparatorChanging(NewlineSeparatorType value) partial void OnDefaultSendNewlineSeparatorChanged(NewlineSeparatorType value)
{ {
Console.WriteLine($"Changed Send to {value}"); Console.WriteLine($"Changed Send to {value}");
} }
@ -66,7 +61,7 @@ public partial class ShellViewModel : ObservableObject
[RelayCommand] [RelayCommand]
public void TestButtonClicked() public void TestButtonClicked()
{ {
this.SelectedReceiveNewlineSeparator = NewlineSeparatorType.CR_LF; this.DefaultReceiveNewlineSeparator = NewlineSeparatorType.CR_LF;
} }
} }

@ -92,16 +92,15 @@ public class SingleSelectSubMenu : MenuItem
/// <summary> /// <summary>
/// Title Changed Handler. /// Title Changed Handler.
/// Hides SingleSelectSubMenu main entry in ItemsCollection (Visibility Collapsed). /// Disables SingleSelectSubMenu and sets header to title.
/// Sets the header of the SingleSelectSubMenu instance to the Title, which helps to identify sssm while debugging.
/// </summary> /// </summary>
private static void OnTitleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) private static void OnTitleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{ {
// extract instance and guard null // extract instance and guard null
if (d is not SingleSelectSubMenu sssm) { return; } if (d is not SingleSelectSubMenu sssm) { return; }
sssm.Visibility = Visibility.Collapsed;
sssm.Header = sssm.Title; sssm.Header = sssm.Title;
sssm.IsEnabled = false;
} }
/// <summary> /// <summary>
@ -117,15 +116,6 @@ public class SingleSelectSubMenu : MenuItem
// extract parent instance of SSSM and guard null // extract parent instance of SSSM and guard null
if (sssm.Parent is not MenuItem parent) { return; } if (sssm.Parent is not MenuItem parent) { return; }
// IMRPOVEMENT Delete currently associated values (using e.OldValue) from RegisteredSubItemsAndParent
// create and add title menu item
var titleMenuItem = new MenuItem
{
IsEnabled = false,
Header = sssm.Title
};
parent.Items.Add(titleMenuItem);
// iterate through new OptionsSource Values and build up list of menuItems // iterate through new OptionsSource Values and build up list of menuItems
foreach (var item in (IEnumerable)e.NewValue) foreach (var item in (IEnumerable)e.NewValue)
{ {

@ -3,7 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:sys="clr-namespace:System;assembly=System.Core" xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:conv="clr-namespace:MultiTerm.Wpf.ValueConverters" xmlns:conv="clr-namespace:MultiTerm.Wpf.ValueConverters"
xmlns:controls="clr-namespace:MultiTerm.Wpf.Controls" xmlns:controls="clr-namespace:MultiTerm.Wpf.Controls"
xmlns:vm="clr-namespace:MultiTerm.Core.ViewModel;assembly=MultiTerm.Core" xmlns:vm="clr-namespace:MultiTerm.Core.ViewModel;assembly=MultiTerm.Core"
@ -15,6 +15,15 @@
<!-- Value Converters --> <!-- Value Converters -->
<conv:EnumDescriptionToMenuItemConverter x:Key="EnumDescriptionConverter"/> <conv:EnumDescriptionToMenuItemConverter x:Key="EnumDescriptionConverter"/>
<!-- Data Sources -->
<ObjectDataProvider x:Key="NewlineSeparatorTypeValues"
ObjectType="{x:Type sys:Enum}"
MethodName="GetValues">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="core_common:NewlineSeparatorType" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</UserControl.Resources> </UserControl.Resources>
<DockPanel> <DockPanel>
@ -36,17 +45,13 @@
<MenuItem Header="Item1" Command="{Binding TestButtonClickedCommand}"/> <MenuItem Header="Item1" Command="{Binding TestButtonClickedCommand}"/>
</MenuItem> </MenuItem>
<MenuItem Header="_Settings"> <MenuItem Header="_Settings">
<controls:SingleSelectSubMenu Title="Newline Separator (Receive)" <controls:SingleSelectSubMenu Title="Default Newline Separator on Receive" HorizontalContentAlignment="Left" VerticalContentAlignment="Top"
OptionsSource="{Binding NewlineSeparatorTypeValues}" OptionsSource="{Binding Source={StaticResource NewlineSeparatorTypeValues}}"
SelectedMenuItem="{Binding SelectedReceiveNewlineSeparator, SelectedMenuItem="{Binding DefaultReceiveNewlineSeparator, Mode=TwoWay, Converter={StaticResource EnumDescriptionConverter}}">
Mode=TwoWay,
Converter={StaticResource EnumDescriptionConverter}}">
</controls:SingleSelectSubMenu> </controls:SingleSelectSubMenu>
<controls:SingleSelectSubMenu Title="Newline Separator On Send" <controls:SingleSelectSubMenu Title="Default Newline Separator on Send"
OptionsSource="{Binding NewlineSeparatorTypeValues}" OptionsSource="{Binding Source={StaticResource NewlineSeparatorTypeValues}}"
SelectedMenuItem="{Binding SelectedSendNewlineSeparator, SelectedMenuItem="{Binding DefaultSendNewlineSeparator,Mode=TwoWay, Converter={StaticResource EnumDescriptionConverter}}">
Mode=TwoWay,
Converter={StaticResource EnumDescriptionConverter}}">
</controls:SingleSelectSubMenu> </controls:SingleSelectSubMenu>
</MenuItem> </MenuItem>
<MenuItem Header="_View"/> <MenuItem Header="_View"/>

Loading…
Cancel
Save