You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
8.7 KiB
160 lines
8.7 KiB
<UserControl x:Class="MultiTerm.Wpf.View.ShellView"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
|
xmlns:conv="clr-namespace:MultiTerm.Wpf.ValueConverters"
|
|
xmlns:controls="clr-namespace:MultiTerm.Wpf.Controls"
|
|
xmlns:custom_controls="clr-namespace:MultiTerm.Wpf.CustomControl;assembly=MultiTerm.Wpf.CustomControl"
|
|
xmlns:vm="clr-namespace:MultiTerm.Core.ViewModel;assembly=MultiTerm.Core"
|
|
xmlns:v="clr-namespace:MultiTerm.Wpf.View"
|
|
xmlns:core_common="clr-namespace:MultiTerm.Core.Common;assembly=MultiTerm.Core"
|
|
xmlns:helpers="clr-namespace:MultiTerm.Wpf.Helpers"
|
|
mc:Ignorable="d"
|
|
d:DesignHeight="600" d:DesignWidth="1200">
|
|
<UserControl.Resources>
|
|
<!-- Value Converters -->
|
|
<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>
|
|
<ObjectDataProvider x:Key="TerminalViewTypeValues"
|
|
ObjectType="{x:Type sys:Enum}"
|
|
MethodName="GetValues">
|
|
<ObjectDataProvider.MethodParameters>
|
|
<x:Type TypeName="core_common:TerminalViewType" />
|
|
</ObjectDataProvider.MethodParameters>
|
|
</ObjectDataProvider>
|
|
<ObjectDataProvider x:Key="ProtocolTypeValues"
|
|
ObjectType="{x:Type sys:Enum}"
|
|
MethodName="GetValues">
|
|
<ObjectDataProvider.MethodParameters>
|
|
<x:Type TypeName="core_common:ProtocolType" />
|
|
</ObjectDataProvider.MethodParameters>
|
|
</ObjectDataProvider>
|
|
|
|
</UserControl.Resources>
|
|
|
|
<DockPanel>
|
|
<Menu DockPanel.Dock="Top">
|
|
<MenuItem Header="_File"/>
|
|
<MenuItem Header="_Edit">
|
|
<MenuItem Header="_Copy" InputGestureText="Ctrl + C">
|
|
<!-- <MenuItem.Icon> // TODO
|
|
<Image Width="16" Height="16" Source="copy.png"/>
|
|
</MenuItem.Icon>-->
|
|
</MenuItem>
|
|
<MenuItem Header="_Paste" InputGestureText="Ctrl + P">
|
|
<!-- <MenuItem.Icon> // TODO
|
|
<Image Width="16" Height="16" Source="paste.png"/>
|
|
</MenuItem.Icon>-->
|
|
</MenuItem>
|
|
</MenuItem>
|
|
<MenuItem Header="Test">
|
|
<MenuItem Header="Item1" Command="{Binding TestButtonClickedCommand}"/>
|
|
</MenuItem>
|
|
<MenuItem Header="_Settings">
|
|
<controls:SingleSelectSubMenu Title="Default Newline Separator on Receive" HorizontalContentAlignment="Left" VerticalContentAlignment="Top"
|
|
OptionsSource="{Binding Source={StaticResource NewlineSeparatorTypeValues}}"
|
|
SelectedMenuItem="{Binding DefaultReceiveNewlineSeparator, Mode=TwoWay, Converter={StaticResource EnumDescriptionConverter}}">
|
|
</controls:SingleSelectSubMenu>
|
|
<controls:SingleSelectSubMenu Title="Default Newline Separator on Send"
|
|
OptionsSource="{Binding Source={StaticResource NewlineSeparatorTypeValues}}"
|
|
SelectedMenuItem="{Binding DefaultSendNewlineSeparator, Mode=TwoWay, Converter={StaticResource EnumDescriptionConverter}}">
|
|
</controls:SingleSelectSubMenu>
|
|
</MenuItem>
|
|
<MenuItem Header="_View"/>
|
|
<MenuItem Header="_About"/>
|
|
</Menu>
|
|
<StackPanel Orientation="Vertical" DockPanel.Dock="Left" Width="150">
|
|
<Button Name="AddNewTabButton" Content="Add new Tab">
|
|
<Button.Resources>
|
|
<!-- Binding Proxy to provide DataContext to elements within ContextMenu -->
|
|
<helpers:BindingProxy x:Key="proxy" Data="{Binding}"/>
|
|
</Button.Resources>
|
|
<Button.ContextMenu>
|
|
<ContextMenu x:Name="MainContextMenu" PlacementRectangle="{Binding RelativeSource={RelativeSource Self}}">
|
|
<!-- View types -->
|
|
<controls:SingleSelectSubMenu Title="View type"
|
|
OptionsSource="{Binding Source={StaticResource TerminalViewTypeValues}}"
|
|
SelectedMenuItem="{Binding Data.SelectedTerminalViewType, Mode=TwoWay, Source={StaticResource proxy},
|
|
Converter={StaticResource EnumDescriptionConverter}}">
|
|
</controls:SingleSelectSubMenu>
|
|
|
|
<Separator/>
|
|
|
|
<!-- Protocol types -->
|
|
<controls:CommandableSubMenu Title="Protocol"
|
|
OptionsSource="{Binding Source={StaticResource ProtocolTypeValues}}"
|
|
Command="{Binding Data.AppendTerminalWithSelectedViewTypeCommand, Source={StaticResource proxy}}"
|
|
CommandParameterType="{x:Type core_common:ProtocolType}">
|
|
</controls:CommandableSubMenu>
|
|
</ContextMenu>
|
|
</Button.ContextMenu>
|
|
|
|
<Button.Triggers>
|
|
<EventTrigger SourceName="AddNewTabButton" RoutedEvent="Button.Click">
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="MainContextMenu" Storyboard.TargetProperty="(ContextMenu.IsOpen)">
|
|
<DiscreteObjectKeyFrame KeyTime="0:0:0">
|
|
<DiscreteObjectKeyFrame.Value>
|
|
<sys:Boolean>True</sys:Boolean>
|
|
</DiscreteObjectKeyFrame.Value>
|
|
</DiscreteObjectKeyFrame>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
</Button.Triggers>
|
|
</Button>
|
|
|
|
<!--<RibbonMenuButton x:Name="newTerminalMenu" Label="Add new Tab" Background="Gray">
|
|
<RibbonRadioButton Label="SendReceive">
|
|
|
|
</RibbonRadioButton>
|
|
<RibbonRadioButton Label="Console">
|
|
|
|
</RibbonRadioButton>
|
|
<RibbonSeparator/>
|
|
</RibbonMenuButton>-->
|
|
</StackPanel>
|
|
<custom_controls:ExtendedTabControl DockPanel.Dock="Right"
|
|
x:Name="terminalTabControl"
|
|
ItemsSource="{Binding TerminalViewModels}"
|
|
SelectedItem="{Binding SelectedTerminalViewModel}">
|
|
|
|
<!-- Tab Template -->
|
|
<custom_controls:ExtendedTabControl.ItemTemplate>
|
|
<DataTemplate>
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="{Binding Title, Mode=OneWay}" />
|
|
<Button Command="{Binding CloseRequestCommand}" Width="20" Padding="0" Margin="8 0 0 0" Content="X">
|
|
<Button.Style>
|
|
<Style TargetType="Button" x:Name="CloseButtonStyle">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</custom_controls:ExtendedTabControl.ItemTemplate>
|
|
|
|
<!-- Register additional Tab ViewModels here -->
|
|
<custom_controls:ExtendedTabControl.Resources>
|
|
<DataTemplate DataType="{x:Type vm:SendReceiveViewModel}">
|
|
<v:SendReceiveView/>
|
|
</DataTemplate>
|
|
</custom_controls:ExtendedTabControl.Resources>
|
|
</custom_controls:ExtendedTabControl>
|
|
</DockPanel>
|
|
</UserControl>
|
|
|