126 lines
6.7 KiB
XML
126 lines
6.7 KiB
XML
<Window x:Class="S7Explorer.Views.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:local="clr-namespace:S7Explorer"
|
|
xmlns:sys="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d" Title="S7 Project Explorer" Height="700"
|
|
Width="1000">
|
|
<Window.Resources>
|
|
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
|
|
</Window.Resources>
|
|
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="150" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Toolbar -->
|
|
<Grid Grid.Row="0" Margin="8">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Button Grid.Column="0" Content="Abrir Proyecto" Command="{Binding OpenProjectCommand}" Padding="8,4"
|
|
Margin="0,0,8,0" />
|
|
|
|
<Button Grid.Column="1" Content="Recargar" Command="{Binding RefreshProjectCommand}"
|
|
CommandParameter="{x:Static sys:Boolean.TrueString}" Padding="8,4" Margin="0,0,4,0"
|
|
ToolTip="Recargar desde caché" />
|
|
|
|
<Button Grid.Column="2" Content="Recargar Completo" Command="{Binding RefreshProjectCommand}"
|
|
CommandParameter="{x:Static sys:Boolean.FalseString}" Padding="8,4" Margin="0,0,8,0"
|
|
ToolTip="Reprocesar el proyecto" />
|
|
|
|
<TextBox Grid.Column="3" Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" Padding="4"
|
|
Margin="0,0,8,0" VerticalContentAlignment="Center" KeyDown="SearchBox_KeyDown" />
|
|
|
|
<Button Grid.Column="4" Content="Buscar" Command="{Binding SearchCommand}" Padding="8,4" Margin="0,0,8,0" />
|
|
|
|
<TextBlock Grid.Column="5" Text="{Binding ProjectInfo}" VerticalAlignment="Center" />
|
|
<Button Grid.Column="6" Content="Diagnosticar" Command="{Binding DiagnoseProjectCommand}" Padding="8,4"
|
|
Margin="0,0,8,0" ToolTip="Explorar estructura de archivos DBF" />
|
|
</Grid>
|
|
|
|
<!-- Main Content -->
|
|
<Grid Grid.Row="1">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="300" MinWidth="200" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Project Structure TreeView -->
|
|
<TreeView Grid.Column="0" Margin="8,0,0,8" ItemsSource="{Binding ProjectStructure}"
|
|
SelectedItemChanged="TreeView_SelectedItemChanged">
|
|
<TreeView.ItemTemplate>
|
|
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Image Source="{Binding IconSource}" Width="16" Height="16" Margin="0,0,4,0" />
|
|
<TextBlock Text="{Binding DisplayName}" />
|
|
</StackPanel>
|
|
</HierarchicalDataTemplate>
|
|
</TreeView.ItemTemplate>
|
|
<TreeView.ItemContainerStyle>
|
|
<Style TargetType="TreeViewItem">
|
|
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
|
|
</Style>
|
|
</TreeView.ItemContainerStyle>
|
|
</TreeView>
|
|
|
|
<!-- Splitter -->
|
|
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" VerticalAlignment="Stretch" />
|
|
|
|
<!-- Property Grid -->
|
|
<xctk:PropertyGrid Grid.Column="2" Margin="0,0,8,8" SelectedObject="{Binding SelectedObject}"
|
|
AutoGenerateProperties="True" ShowSearchBox="True" ShowSortOptions="True" ShowTitle="True" />
|
|
|
|
</Grid>
|
|
|
|
<!-- Log Section Splitter -->
|
|
<GridSplitter Grid.Row="2" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Center" />
|
|
|
|
<!-- Log Section -->
|
|
<DockPanel Grid.Row="3" LastChildFill="True" Margin="8">
|
|
<DockPanel DockPanel.Dock="Top" LastChildFill="True" Margin="0,0,0,4">
|
|
<TextBlock Text="Log" FontWeight="Bold" VerticalAlignment="Center" Margin="0,0,8,0" />
|
|
|
|
<!-- Botón para cancelar operaciones -->
|
|
<Button Content="Cancelar" Command="{Binding CancelLoadingCommand}" Width="80" Margin="0,0,8,0"
|
|
HorizontalAlignment="Right"
|
|
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisConverter}}" />
|
|
|
|
<!-- Indicador de carga -->
|
|
<TextBlock Text="Cargando..." VerticalAlignment="Center" Margin="0,0,8,0"
|
|
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisConverter}}" />
|
|
|
|
<Button Content="Limpiar" Command="{Binding ClearLogCommand}" Width="80" HorizontalAlignment="Right" />
|
|
</DockPanel>
|
|
<TextBox x:Name="LogTextBox" Text="{Binding LogText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
IsReadOnly="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
|
|
FontFamily="Consolas" Background="#F5F5F5" TextWrapping="NoWrap" />
|
|
</DockPanel>
|
|
|
|
<!-- Overlay para mostrar progreso durante la carga -->
|
|
<Grid Grid.RowSpan="4" Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisConverter}}"
|
|
Background="Transparent" Panel.ZIndex="100">
|
|
<Border Padding="20" HorizontalAlignment="Center" VerticalAlignment="Center" Background="#80000000"
|
|
CornerRadius="10" Opacity="0.7">
|
|
<StackPanel Orientation="Vertical" Margin="10">
|
|
<TextBlock Text="Cargando proyecto..." Foreground="White" FontWeight="Bold" Margin="0,0,0,10"
|
|
HorizontalAlignment="Center" />
|
|
<ProgressBar IsIndeterminate="True" Height="20" Width="200" />
|
|
<Button Content="Cancelar" HorizontalAlignment="Center" Margin="0,10,0,0"
|
|
Command="{Binding CancelLoadingCommand}" Padding="10,5" />
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</Grid>
|
|
</Window> |