CtrEditor/PopUps/LibraryWindow.xaml

168 lines
8.2 KiB
XML

<Window x:Class="CtrEditor.PopUps.LibraryWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:CtrEditor.Controls"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:local="clr-namespace:CtrEditor.PopUps"
xmlns:ObjetosSim="clr-namespace:CtrEditor.ObjetosSim"
Title="Biblioteca de Objetos Simulables" Height="700" Width="1200"
WindowStartupLocation="CenterOwner" ResizeMode="CanResize"
Loaded="Window_Loaded">
<Window.InputBindings>
<KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding CopyObjectCommand}" />
<KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding PasteObjectCommand}" />
<KeyBinding Key="Delete" Command="{Binding DeleteObjectCommand}" />
</Window.InputBindings>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" MinWidth="200" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="300" MinWidth="250" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="350" MinWidth="250" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="*" MinWidth="300" />
</Grid.ColumnDefinitions>
<!-- Primera columna: Gestión de directorios de biblioteca -->
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Directorios de Biblioteca" FontWeight="Bold" />
<ListBox Grid.Row="1" Name="LibraryDirectoriesList"
ItemsSource="{Binding LibraryDirectories}"
SelectedItem="{Binding SelectedLibraryDirectory, Mode=TwoWay}"
DisplayMemberPath="DisplayName" />
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="5">
<Button Content="Agregar" Command="{Binding AddLibraryDirectoryCommand}" Margin="2" Padding="5,2" />
<Button Content="Eliminar" Command="{Binding RemoveLibraryDirectoryCommand}" Margin="2" Padding="5,2" />
</StackPanel>
</Grid>
<!-- GridSplitter 1 -->
<GridSplitter Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Stretch"
Background="LightGray" Width="5" />
<!-- Segunda columna: Bibliotecas -->
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Bibliotecas" FontWeight="Bold" />
<TreeView Grid.Row="1" Name="LibrariesTreeView"
ItemsSource="{Binding Libraries}"
SelectedItemChanged="LibrariesTreeView_SelectedItemChanged">
<TreeView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayName}" />
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="5">
<Button Content="Nueva Biblioteca" Command="{Binding CreateNewLibraryCommand}" Margin="2" Padding="5,2" />
</StackPanel>
</Grid>
<!-- GridSplitter 2 -->
<GridSplitter Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Stretch"
Background="LightGray" Width="5" />
<!-- Tercera columna: Objetos -->
<Grid Grid.Column="4">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Filtros -->
<Expander Grid.Row="0" Header="Filtros" IsExpanded="True">
<controls:osVisFilter x:Name="ObjectFilter" Margin="5"/>
</Expander>
<Label Grid.Row="1" Content="Objetos" FontWeight="Bold" />
<TreeView Grid.Row="2" Name="ObjectsTreeView"
ItemsSource="{Binding FilteredObjectsByType}"
SelectedItemChanged="ObjectsTreeView_SelectedItemChanged">
<TreeView.Resources>
<!-- Template for object type groups -->
<HierarchicalDataTemplate DataType="{x:Type local:ObjectTypeGroup}"
ItemsSource="{Binding Objects}">
<TextBlock Text="{Binding TypeName}" FontWeight="Bold" />
</HierarchicalDataTemplate>
<!-- Template for individual objects -->
<DataTemplate DataType="{x:Type ObjetosSim:osBase}">
<TextBlock Text="{Binding Nombre}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Enable_On_All_Pages}" Value="True">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
<DataTrigger Binding="{Binding Cloned}" Value="True">
<Setter Property="Foreground" Value="Orange" />
</DataTrigger>
<DataTrigger Binding="{Binding AutoCreated}" Value="True">
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</TreeView.Resources>
</TreeView>
<!-- Botones de acción -->
<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Center" Margin="5">
<Button Content="Copiar (Ctrl+C)" Command="{Binding CopyObjectCommand}" Margin="2" Padding="5,2" />
<Button Content="Pegar (Ctrl+V)" Command="{Binding PasteObjectCommand}" Margin="2" Padding="5,2" />
<Button Content="Eliminar" Command="{Binding DeleteObjectCommand}" Margin="2" Padding="5,2" />
</StackPanel>
</Grid>
<!-- GridSplitter 3 -->
<GridSplitter Grid.Column="5" HorizontalAlignment="Center" VerticalAlignment="Stretch"
Background="LightGray" Width="5" />
<!-- Cuarta columna: Propiedades del objeto seleccionado -->
<Grid Grid.Column="6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Propiedades del Objeto" FontWeight="Bold" />
<xctk:PropertyGrid Grid.Row="1"
Name="ObjectPropertyGrid"
SelectedObject="{Binding SelectedObject}"
IsReadOnly="True"
ShowSearchBox="True"
ShowSortOptions="True"
ShowTitle="False"
Margin="5" />
<!-- Botones de control -->
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="5">
<Button Content="Cerrar" IsCancel="True" Click="CloseButton_Click"
Margin="2" Padding="15,5" MinWidth="75" />
</StackPanel>
</Grid>
</Grid>
</Window>