port from perforce
This commit is contained in:
74
intromat/NodeNetwork/Themes/ConnectionView.xaml
Normal file
74
intromat/NodeNetwork/Themes/ConnectionView.xaml
Normal file
@@ -0,0 +1,74 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views"
|
||||
xmlns:controls="clr-namespace:NodeNetwork.Views.Controls">
|
||||
<Style TargetType="{x:Type views:ConnectionView}">
|
||||
<Setter Property="RegularBrush" Value="White"/>
|
||||
<Setter Property="ErrorBrush" Value="DarkRed"/>
|
||||
<Setter Property="HighlightBrush" Value="Yellow"/>
|
||||
<Setter Property="MarkedForDeleteBrush" Value="Red"/>
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="views:ConnectionView">
|
||||
<controls:FillPanel>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="{x:Static views:ConnectionView.HighlightVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:ConnectionView.HighlightedState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="HighlightPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:ConnectionView.NonHighlightedState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="HighlightPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup Name="{x:Static views:ConnectionView.ErrorVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:ConnectionView.ErrorState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ErrorPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:ConnectionView.NonErrorState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ErrorPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup Name="{x:Static views:ConnectionView.MarkedForDeleteVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:ConnectionView.MarkedForDeleteState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="DeleteMarkPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:ConnectionView.NotMarkedForDeleteState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="DeleteMarkPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Path x:Name="RegularPath" StrokeThickness="2" IsHitTestVisible="False" Stroke="{TemplateBinding RegularBrush}" Data="{TemplateBinding Geometry}"/>
|
||||
<Path x:Name="ErrorPath" StrokeThickness="2" IsHitTestVisible="False" Stroke="{TemplateBinding ErrorBrush}" Data="{TemplateBinding Geometry}"/>
|
||||
<Path x:Name="DeleteMarkPath" StrokeThickness="2" IsHitTestVisible="False" Stroke="{TemplateBinding MarkedForDeleteBrush}" Data="{TemplateBinding Geometry}"/>
|
||||
<Path x:Name="HighlightPath" StrokeThickness="2" IsHitTestVisible="False" Stroke="{TemplateBinding HighlightBrush}" Data="{TemplateBinding Geometry}"/>
|
||||
</controls:FillPanel>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
53
intromat/NodeNetwork/Themes/Endpoint.xaml
Normal file
53
intromat/NodeNetwork/Themes/Endpoint.xaml
Normal file
@@ -0,0 +1,53 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:reactiveUi="http://reactiveui.net"
|
||||
xmlns:wpf="clr-namespace:NodeNetwork.Utilities.WPF">
|
||||
<wpf:NullVisibilityConverter x:Key="NullConverter"/>
|
||||
<ControlTemplate x:Key="LeftAlignedEndpoint">
|
||||
<Grid Margin="-10, 0, 0, 5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="30"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center">
|
||||
<Image x:Name="Icon" MaxWidth="20" MaxHeight="20" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0,0,5,0" Visibility="{Binding Icon, Mode=OneWay, Converter={StaticResource NullConverter}}"/>
|
||||
<TextBlock x:Name="NameLabel" TextTrimming="CharacterEllipsis" FontSize="14" Width="auto" Foreground="White" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
|
||||
<reactiveUi:ViewModelViewHost x:Name="EndpointHost" Grid.Column="0" Grid.Row="0" Margin="0,4.9,10,4.9" Width="20" Height="20"
|
||||
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" IsTabStop="False"/>
|
||||
|
||||
<reactiveUi:ViewModelViewHost x:Name="EditorHost" Grid.Column="1" VerticalContentAlignment="Center" IsTabStop="False"/>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
|
||||
<ControlTemplate x:Key="RightAlignedEndpoint">
|
||||
<Grid Margin="0, 0, -10, 5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Right">
|
||||
<TextBlock x:Name="NameLabel" TextTrimming="CharacterEllipsis" FontSize="14" Width="auto" Foreground="White" VerticalAlignment="Center"/>
|
||||
<Image x:Name="Icon" MaxWidth="20" MaxHeight="20" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5,0,0,0" Visibility="{Binding Icon, Mode=OneWay, Converter={StaticResource NullConverter}}"/>
|
||||
</StackPanel>
|
||||
|
||||
<reactiveUi:ViewModelViewHost x:Name="EndpointHost" Grid.Column="2" Grid.Row="0" Margin="10,4.9,0,4.9" Width="20" Height="20"
|
||||
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" IsTabStop="False"/>
|
||||
|
||||
<reactiveUi:ViewModelViewHost x:Name="EditorHost" Grid.Column="1" VerticalContentAlignment="Center" HorizontalContentAlignment="Right" HorizontalAlignment="Right" IsTabStop="False"/>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</ResourceDictionary>
|
||||
102
intromat/NodeNetwork/Themes/EndpointGroupView.xaml
Normal file
102
intromat/NodeNetwork/Themes/EndpointGroupView.xaml
Normal file
@@ -0,0 +1,102 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:reactiveUi="http://reactiveui.net"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views"
|
||||
xmlns:viewModels="clr-namespace:NodeNetwork.ViewModels">
|
||||
<Style TargetType="{x:Type views:EndpointGroupView}">
|
||||
<Setter Property="Background" Value="#20000000"/>
|
||||
<Setter Property="Foreground" Value="#FFFFFF"/>
|
||||
<Setter Property="TitleFontFamily" Value="Segoe UI SemiLight"/>
|
||||
<Setter Property="TitleFontSize" Value="18"/>
|
||||
<Setter Property="IsTabStop" Value="False" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="views:EndpointGroupView">
|
||||
<Grid Margin="0,5,0,0">
|
||||
<Canvas Background="{TemplateBinding Background}" IsHitTestVisible="False"/>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<DockPanel Margin="0,5,0,0">
|
||||
<TextBlock x:Name="NameLabel" TextTrimming="CharacterEllipsis" FontSize="{TemplateBinding TitleFontSize}" FontFamily="{TemplateBinding TitleFontFamily}"
|
||||
Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center" Margin="20,0,10,0">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Style.Triggers>
|
||||
<Trigger Property="Text" Value="">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</Trigger>
|
||||
<Trigger Property="Text" Value="{x:Null}">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</DockPanel>
|
||||
<DockPanel>
|
||||
<ItemsControl x:Name="InputsList" IsTabStop="False">
|
||||
<ItemsControl.Style>
|
||||
<Style TargetType="ItemsControl">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}" Value="Vertical">
|
||||
<Setter Property="DockPanel.Dock" Value="Top" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}" Value="Horizontal">
|
||||
<Setter Property="DockPanel.Dock" Value="Left" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ItemsControl.Style>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="viewModels:NodeInputViewModel">
|
||||
<reactiveUi:ViewModelViewHost ViewModel="{Binding}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
VerticalContentAlignment="Stretch"
|
||||
IsTabStop="False" />
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<ItemsControl x:Name="OutputsList" IsTabStop="False">
|
||||
<ItemsControl.Style>
|
||||
<Style TargetType="ItemsControl">
|
||||
<Style.Triggers>
|
||||
<DataTrigger
|
||||
Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}"
|
||||
Value="Vertical">
|
||||
<Setter Property="DockPanel.Dock" Value="Bottom" />
|
||||
</DataTrigger>
|
||||
<DataTrigger
|
||||
Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}"
|
||||
Value="Horizontal">
|
||||
<Setter Property="DockPanel.Dock" Value="Right" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ItemsControl.Style>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="viewModels:NodeOutputViewModel">
|
||||
<reactiveUi:ViewModelViewHost ViewModel="{Binding}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
VerticalContentAlignment="Stretch"
|
||||
IsTabStop="False" />
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</DockPanel>
|
||||
<ItemsControl x:Name="EndpointGroupsList" IsTabStop="False">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="viewModels:EndpointGroupViewModel">
|
||||
<reactiveUi:ViewModelViewHost ViewModel="{Binding}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
VerticalContentAlignment="Stretch"
|
||||
IsTabStop="False" />
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
26
intromat/NodeNetwork/Themes/ErrorMessageView.xaml
Normal file
26
intromat/NodeNetwork/Themes/ErrorMessageView.xaml
Normal file
@@ -0,0 +1,26 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views">
|
||||
<Style TargetType="{x:Type views:ErrorMessageView}">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="views:ErrorMessageView">
|
||||
<Border Background="#EEE" CornerRadius="3">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Width="36" Height="36" Margin="5">
|
||||
<Ellipse Fill="#ef513a"/>
|
||||
<Line Stroke="White" StrokeThickness="3" X1="12" Y1="12" X2="24" Y2="24"/>
|
||||
<Line Stroke="White" StrokeThickness="3" X1="24" Y1="12" X2="12" Y2="24"/>
|
||||
</Grid>
|
||||
<TextBlock Grid.Column="1" x:Name="TextBlock" Margin="5" TextWrapping="Wrap" FontSize="18" FontWeight="Normal" Foreground="#ef513a" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
13
intromat/NodeNetwork/Themes/Generic.xaml
Normal file
13
intromat/NodeNetwork/Themes/Generic.xaml
Normal file
@@ -0,0 +1,13 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/ConnectionView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/PendingConnectionView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/ErrorMessageView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/NodeEndpointEditorView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/NodeView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/NodeInputView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/NodeOutputView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/PortView.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/NodeNetwork;component/Themes/EndpointGroupView.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
13
intromat/NodeNetwork/Themes/NodeEndpointEditorView.xaml
Normal file
13
intromat/NodeNetwork/Themes/NodeEndpointEditorView.xaml
Normal file
@@ -0,0 +1,13 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views">
|
||||
<Style TargetType="{x:Type views:NodeEndpointEditorView}">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="views:NodeEndpointEditorView">
|
||||
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
24
intromat/NodeNetwork/Themes/NodeInputView.xaml
Normal file
24
intromat/NodeNetwork/Themes/NodeInputView.xaml
Normal file
@@ -0,0 +1,24 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views"
|
||||
xmlns:viewModels="clr-namespace:NodeNetwork.ViewModels">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="Endpoint.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<Style TargetType="{x:Type views:NodeInputView}">
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=PortPosition}" Value="{x:Static viewModels:PortPosition.Left}">
|
||||
<DataTrigger.Setters>
|
||||
<Setter Property="Template" Value="{StaticResource LeftAlignedEndpoint}"/>
|
||||
</DataTrigger.Setters>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=PortPosition}" Value="{x:Static viewModels:PortPosition.Right}">
|
||||
<DataTrigger.Setters>
|
||||
<Setter Property="Template" Value="{StaticResource RightAlignedEndpoint}"/>
|
||||
</DataTrigger.Setters>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
24
intromat/NodeNetwork/Themes/NodeOutputView.xaml
Normal file
24
intromat/NodeNetwork/Themes/NodeOutputView.xaml
Normal file
@@ -0,0 +1,24 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views"
|
||||
xmlns:viewModels="clr-namespace:NodeNetwork.ViewModels">
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="Endpoint.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<Style TargetType="{x:Type views:NodeOutputView}">
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=PortPosition}" Value="{x:Static viewModels:PortPosition.Left}">
|
||||
<DataTrigger.Setters>
|
||||
<Setter Property="Template" Value="{StaticResource LeftAlignedEndpoint}"/>
|
||||
</DataTrigger.Setters>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=PortPosition}" Value="{x:Static viewModels:PortPosition.Right}">
|
||||
<DataTrigger.Setters>
|
||||
<Setter Property="Template" Value="{StaticResource RightAlignedEndpoint}"/>
|
||||
</DataTrigger.Setters>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
175
intromat/NodeNetwork/Themes/NodeView.xaml
Normal file
175
intromat/NodeNetwork/Themes/NodeView.xaml
Normal file
@@ -0,0 +1,175 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views"
|
||||
xmlns:controls="clr-namespace:NodeNetwork.Views.Controls"
|
||||
xmlns:viewModels="clr-namespace:NodeNetwork.ViewModels"
|
||||
xmlns:reactiveUi="http://reactiveui.net">
|
||||
<Style TargetType="{x:Type views:NodeView}">
|
||||
<Setter Property="Background" Value="#5D9CEC"/>
|
||||
<Setter Property="Foreground" Value="#FFFFFF"/>
|
||||
<Setter Property="TitleFontFamily" Value="Segoe UI Semibold"/>
|
||||
<Setter Property="TitleFontSize" Value="18"/>
|
||||
<Setter Property="BorderBrush" Value="Orange"/>
|
||||
<Setter Property="CornerRadius" Value="4"/>
|
||||
<Setter Property="ArrowSize" Value="20"/>
|
||||
<Setter Property="EndpointsStackingOrientation" Value="Vertical"/>
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="views:NodeView">
|
||||
<controls:FillPanel x:Name="Container">
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="{x:Static views:NodeView.SelectedVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:NodeView.SelectedState}">
|
||||
<Storyboard>
|
||||
<ThicknessAnimation Duration="0" To="-3"
|
||||
Storyboard.TargetName="Container" Storyboard.TargetProperty="Margin"/>
|
||||
<ThicknessAnimation Duration="0" To="3" Storyboard.TargetName="Border" Storyboard.TargetProperty="BorderThickness"/>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:NodeView.UnselectedState}">
|
||||
<Storyboard>
|
||||
<ThicknessAnimation Duration="0" To="0" Storyboard.TargetName="Container" Storyboard.TargetProperty="Margin"/>
|
||||
<ThicknessAnimation Duration="0" To="0" Storyboard.TargetName="Border" Storyboard.TargetProperty="BorderThickness"/>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
|
||||
<Border x:Name="Border" Margin="10,0,10,0" CornerRadius="{TemplateBinding CornerRadius}"
|
||||
MinWidth="100" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}">
|
||||
<Grid>
|
||||
<Thumb VerticalAlignment="Bottom" Height="10" x:Name="ResizeVerticalThumb" Cursor="SizeNS">
|
||||
<Thumb.Template>
|
||||
<ControlTemplate>
|
||||
<Canvas Background="White" Opacity="0"/>
|
||||
</ControlTemplate>
|
||||
</Thumb.Template>
|
||||
<Thumb.Style>
|
||||
<Style TargetType="Thumb">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Resizable}" Value="Horizontal">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Resizable}" Value="None">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Thumb.Style>
|
||||
</Thumb>
|
||||
<Thumb HorizontalAlignment="Right" Width="10" x:Name="ResizeHorizontalThumb" Cursor="SizeWE">
|
||||
<Thumb.Template>
|
||||
<ControlTemplate>
|
||||
<Canvas Background="White" Opacity="0"/>
|
||||
</ControlTemplate>
|
||||
</Thumb.Template>
|
||||
<Thumb.Style>
|
||||
<Style TargetType="Thumb">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Resizable}" Value="Vertical">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Resizable}" Value="None">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Thumb.Style>
|
||||
</Thumb>
|
||||
<Thumb HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="10" Height="10" x:Name="ResizeDiagonalThumb" Cursor="SizeNWSE">
|
||||
<Thumb.Template>
|
||||
<ControlTemplate>
|
||||
<Canvas Background="White" Opacity="0"/>
|
||||
</ControlTemplate>
|
||||
</Thumb.Template>
|
||||
<Thumb.Style>
|
||||
<Style TargetType="Thumb">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Resizable}" Value="Vertical">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Resizable}" Value="Horizontal">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Resizable}" Value="None">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Thumb.Style>
|
||||
</Thumb>
|
||||
<StackPanel>
|
||||
<Canvas x:Name="HeaderTopMargin" Width="auto" Height="10"/>
|
||||
<DockPanel>
|
||||
<Image x:Name="HeaderIcon" MaxWidth="{TemplateBinding ArrowSize}" MaxHeight="{TemplateBinding ArrowSize}" DockPanel.Dock="Left" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"/>
|
||||
<TextBlock x:Name="NameLabel" TextWrapping="Wrap" Background="Transparent" Foreground="{TemplateBinding Foreground}" DockPanel.Dock="Left" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center"
|
||||
FontFamily="{TemplateBinding TitleFontFamily}" FontSize="{TemplateBinding TitleFontSize}" Margin="10,0,0,0"/>
|
||||
<controls:ArrowToggleButton x:Name="CollapseButton" Width="{TemplateBinding ArrowSize}" Height="{TemplateBinding ArrowSize}" DockPanel.Dock="Right" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="20,0,10,0"/>
|
||||
</DockPanel>
|
||||
<Canvas x:Name="HeaderBottomMargin" Width="auto" Height="3"/>
|
||||
|
||||
<ContentPresenter x:Name="LeadingControlPresenter" Style="{TemplateBinding LeadingControlPresenterStyle}"/>
|
||||
|
||||
<DockPanel>
|
||||
<ItemsControl x:Name="InputsList" IsTabStop="False">
|
||||
<ItemsControl.Style>
|
||||
<Style TargetType="ItemsControl">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}" Value="Vertical">
|
||||
<Setter Property="DockPanel.Dock" Value="Top"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}" Value="Horizontal">
|
||||
<Setter Property="DockPanel.Dock" Value="Left"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ItemsControl.Style>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="viewModels:NodeInputViewModel">
|
||||
<reactiveUi:ViewModelViewHost ViewModel="{Binding}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" IsTabStop="False"/>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<ItemsControl x:Name="OutputsList" IsTabStop="False">
|
||||
<ItemsControl.Style>
|
||||
<Style TargetType="ItemsControl">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}" Value="Vertical">
|
||||
<Setter Property="DockPanel.Dock" Value="Bottom"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=EndpointsStackingOrientation, RelativeSource={RelativeSource AncestorType={x:Type views:NodeView}}}" Value="Horizontal">
|
||||
<Setter Property="DockPanel.Dock" Value="Right"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ItemsControl.Style>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="viewModels:NodeOutputViewModel">
|
||||
<reactiveUi:ViewModelViewHost ViewModel="{Binding}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" IsTabStop="False"/>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</DockPanel>
|
||||
<ItemsControl x:Name="EndpointGroupsList" IsTabStop="False">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="viewModels:EndpointGroupViewModel">
|
||||
<reactiveUi:ViewModelViewHost ViewModel="{Binding}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
VerticalContentAlignment="Stretch"
|
||||
IsTabStop="False" />
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<ContentPresenter x:Name="TrailingControlPresenter" Style="{TemplateBinding TrailingControlPresenterStyle}"/>
|
||||
|
||||
<Canvas x:Name="BottomMargin" Width="auto" Height="5"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</controls:FillPanel>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
44
intromat/NodeNetwork/Themes/PendingConnectionView.xaml
Normal file
44
intromat/NodeNetwork/Themes/PendingConnectionView.xaml
Normal file
@@ -0,0 +1,44 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views"
|
||||
xmlns:controls="clr-namespace:NodeNetwork.Views.Controls">
|
||||
<Style TargetType="{x:Type views:PendingConnectionView}">
|
||||
<Setter Property="RegularBrush" Value="#C8FFFFFF"/>
|
||||
<Setter Property="ErrorBrush" Value="#C8FF0000"/>
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="views:PendingConnectionView">
|
||||
<controls:FillPanel>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="{x:Static views:PendingConnectionView.ErrorVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:PendingConnectionView.ErrorState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="RegularPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ErrorPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:PendingConnectionView.NonErrorState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="RegularPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ErrorPath" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Path x:Name="RegularPath" StrokeThickness="2" IsHitTestVisible="False" Stroke="{TemplateBinding RegularBrush}" Data="{TemplateBinding Geometry}"/>
|
||||
<Path x:Name="ErrorPath" StrokeThickness="2" IsHitTestVisible="False" Stroke="{TemplateBinding ErrorBrush}" Data="{TemplateBinding Geometry}"/>
|
||||
</controls:FillPanel>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
78
intromat/NodeNetwork/Themes/PortView.xaml
Normal file
78
intromat/NodeNetwork/Themes/PortView.xaml
Normal file
@@ -0,0 +1,78 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:NodeNetwork.Views"
|
||||
xmlns:controls="clr-namespace:NodeNetwork.Views.Controls">
|
||||
<Style TargetType="{x:Type views:PortView}">
|
||||
<Setter Property="RegularStroke" Value="#9E9E9E"/>
|
||||
<Setter Property="RegularFill" Value="#E0E0E0"/>
|
||||
<Setter Property="ConnectedStroke" Value="#AEAEAE"/>
|
||||
<Setter Property="ConnectedFill" Value="#F0F0F0"/>
|
||||
<Setter Property="HighlightStroke" Value="#30FFFFFF"/>
|
||||
<Setter Property="HighlightFill" Value="#30FFFFFF"/>
|
||||
<Setter Property="ErrorStroke" Value="#F44336"/>
|
||||
<Setter Property="ErrorFill" Value="#FFCDD2"/>
|
||||
<Setter Property="IsTabStop" Value="False"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="views:PortView">
|
||||
<controls:FillPanel>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup Name="{x:Static views:PortView.ConnectedVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:PortView.ConnectedState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ConnectedEllipse" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:PortView.DisconnectedState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ConnectedEllipse" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup Name="{x:Static views:PortView.HighlightVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:PortView.HighlightedState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="HighlightEllipse" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:PortView.NonHighlightedState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="HighlightEllipse" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup Name="{x:Static views:PortView.ErrorVisualStatesGroup}">
|
||||
<VisualState Name="{x:Static views:PortView.ErrorState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ErrorEllipse" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState Name="{x:Static views:PortView.NonErrorState}">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="ErrorEllipse" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
<Ellipse Name="RegularEllipse" StrokeThickness="2" Stroke="{TemplateBinding RegularStroke}" Fill="{TemplateBinding RegularFill}"/>
|
||||
<Ellipse Name="ConnectedEllipse" StrokeThickness="2" Stroke="{TemplateBinding ConnectedStroke}" Fill="{TemplateBinding ConnectedFill}"/>
|
||||
<Ellipse Name="ErrorEllipse" StrokeThickness="2" Stroke="{TemplateBinding ErrorStroke}" Fill="{TemplateBinding ErrorFill}"/>
|
||||
<Ellipse Name="HighlightEllipse" StrokeThickness="2" Stroke="{TemplateBinding HighlightStroke}" Fill="{TemplateBinding HighlightFill}"/>
|
||||
</controls:FillPanel>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
Reference in New Issue
Block a user